diff options
author | Oliver Freyermuth <o.freyermuth@googlemail.com> | 2016-01-07 23:30:46 +0100 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2016-01-14 00:36:53 +0100 |
commit | 4c3f95708f7176b52f979d860ce0b98d16e184d0 (patch) | |
tree | da47e34eddd02de836ccc44974c3008d8aae9386 /stream/dvb_tune.c | |
parent | 9a88b118b4ffe22f1747375b42bc57f3b5d33ed0 (diff) | |
download | mpv-4c3f95708f7176b52f979d860ce0b98d16e184d0.tar.bz2 mpv-4c3f95708f7176b52f979d860ce0b98d16e184d0.tar.xz |
dvb: rename dvb_config_t to dvb_state_t, keep config and state there.
The state-struct now contains everything which can be kept after initial initialization.
This includes the channel-lists, configuration, device-fds and also information like
current channel and current card.
The dvb_priv_t is kept containing the mp-options, a pointer to the state and to the logger.
After this restructuring, the state-struct contains all information which can be persisted
across channel switching.
Diffstat (limited to 'stream/dvb_tune.c')
-rw-r--r-- | stream/dvb_tune.c | 54 |
1 files changed, 30 insertions, 24 deletions
diff --git a/stream/dvb_tune.c b/stream/dvb_tune.c index 951c066032..7ec4bcd9e8 100644 --- a/stream/dvb_tune.c +++ b/stream/dvb_tune.c @@ -79,32 +79,34 @@ int dvb_open_devices(dvb_priv_t *priv, int n, int demux_cnt) int i; char frontend_dev[32], dvr_dev[32], demux_dev[32]; + dvb_state_t* state = priv->state; + sprintf(frontend_dev, "/dev/dvb/adapter%d/frontend0", n); sprintf(dvr_dev, "/dev/dvb/adapter%d/dvr0", n); sprintf(demux_dev, "/dev/dvb/adapter%d/demux0", n); - priv->fe_fd = open(frontend_dev, O_RDWR | O_NONBLOCK | O_CLOEXEC); - if (priv->fe_fd < 0) { + state->fe_fd = open(frontend_dev, O_RDWR | O_NONBLOCK | O_CLOEXEC); + if (state->fe_fd < 0) { MP_ERR(priv, "ERROR OPENING FRONTEND DEVICE %s: ERRNO %d\n", frontend_dev, errno); return 0; } - priv->demux_fds_cnt = 0; + state->demux_fds_cnt = 0; MP_VERBOSE(priv, "DVB_OPEN_DEVICES(%d)\n", demux_cnt); for (i = 0; i < demux_cnt; i++) { - priv->demux_fds[i] = open(demux_dev, O_RDWR | O_NONBLOCK | O_CLOEXEC); - if (priv->demux_fds[i] < 0) { + state->demux_fds[i] = open(demux_dev, O_RDWR | O_NONBLOCK | O_CLOEXEC); + if (state->demux_fds[i] < 0) { MP_ERR(priv, "ERROR OPENING DEMUX 0: %d\n", errno); return 0; } else { MP_VERBOSE(priv, "OPEN(%d), file %s: FD=%d, CNT=%d\n", i, demux_dev, - priv->demux_fds[i], priv->demux_fds_cnt); - priv->demux_fds_cnt++; + state->demux_fds[i], state->demux_fds_cnt); + state->demux_fds_cnt++; } } - priv->dvr_fd = open(dvr_dev, O_RDONLY | O_NONBLOCK | O_CLOEXEC); - if (priv->dvr_fd < 0) { + state->dvr_fd = open(dvr_dev, O_RDONLY | O_NONBLOCK | O_CLOEXEC); + if (state->dvr_fd < 0) { MP_ERR(priv, "ERROR OPENING DVR DEVICE %s: %d\n", dvr_dev, errno); return 0; } @@ -117,25 +119,27 @@ int dvb_fix_demuxes(dvb_priv_t *priv, int cnt) { int i; char demux_dev[32]; - - sprintf(demux_dev, "/dev/dvb/adapter%d/demux0", priv->card); - MP_VERBOSE(priv, "FIX %d -> %d\n", priv->demux_fds_cnt, cnt); - if (priv->demux_fds_cnt >= cnt) { - for (i = priv->demux_fds_cnt - 1; i >= cnt; i--) { - MP_VERBOSE(priv, "FIX, CLOSE fd(%d): %d\n", i, priv->demux_fds[i]); - close(priv->demux_fds[i]); + + dvb_state_t* state = priv->state; + + sprintf(demux_dev, "/dev/dvb/adapter%d/demux0", state->card); + MP_VERBOSE(priv, "FIX %d -> %d\n", state->demux_fds_cnt, cnt); + if (state->demux_fds_cnt >= cnt) { + for (i = state->demux_fds_cnt - 1; i >= cnt; i--) { + MP_VERBOSE(priv, "FIX, CLOSE fd(%d): %d\n", i, state->demux_fds[i]); + close(state->demux_fds[i]); } - priv->demux_fds_cnt = cnt; - } else if (priv->demux_fds_cnt < cnt) { - for (i = priv->demux_fds_cnt; i < cnt; i++) { - priv->demux_fds[i] = open(demux_dev, + state->demux_fds_cnt = cnt; + } else if (state->demux_fds_cnt < cnt) { + for (i = state->demux_fds_cnt; i < cnt; i++) { + state->demux_fds[i] = open(demux_dev, O_RDWR | O_NONBLOCK | O_CLOEXEC); - MP_VERBOSE(priv, "FIX, OPEN fd(%d): %d\n", i, priv->demux_fds[i]); - if (priv->demux_fds[i] < 0) { + MP_VERBOSE(priv, "FIX, OPEN fd(%d): %d\n", i, state->demux_fds[i]); + if (state->demux_fds[i] < 0) { MP_ERR(priv, "ERROR OPENING DEMUX 0: %d\n", errno); return 0; } else - priv->demux_fds_cnt++; + state->demux_fds_cnt++; } } @@ -548,7 +552,9 @@ int dvb_tune(dvb_priv_t *priv, int freq, char pol, int srate, int diseqc, { MP_INFO(priv, "dvb_tune Freq: %lu\n", (long unsigned int) freq); - int ris = tune_it(priv, priv->fe_fd, freq, srate, pol, tone, + dvb_state_t* state = priv->state; + + int ris = tune_it(priv, state->fe_fd, freq, srate, pol, tone, is_dvb_s2, stream_id, specInv, diseqc, modulation, HP_CodeRate, TransmissionMode, guardInterval, bandWidth, LP_CodeRate, hier, timeout); |