diff options
author | wm4 <wm4@nowhere> | 2014-06-10 20:46:15 +0200 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2014-06-11 00:34:46 +0200 |
commit | 77a7aa2c41d4d4be2eb2ad099b201d3fdd8f3cc7 (patch) | |
tree | d72e8ec7a75a2e6c60060740629062f7bad895c7 /stream | |
parent | 7689f5f7cedcafe30d8ede3609cf4f2a3314a1d8 (diff) | |
download | mpv-77a7aa2c41d4d4be2eb2ad099b201d3fdd8f3cc7.tar.bz2 mpv-77a7aa2c41d4d4be2eb2ad099b201d3fdd8f3cc7.tar.xz |
stream_cdda: remove global option variables
Diffstat (limited to 'stream')
-rw-r--r-- | stream/stream.c | 1 | ||||
-rw-r--r-- | stream/stream.h | 2 | ||||
-rw-r--r-- | stream/stream_cdda.c | 67 |
3 files changed, 37 insertions, 33 deletions
diff --git a/stream/stream.c b/stream/stream.c index 617420b5ae..8542515567 100644 --- a/stream/stream.c +++ b/stream/stream.c @@ -53,7 +53,6 @@ #define TOTAL_BUFFER_SIZE (STREAM_MAX_BUFFER_SIZE + STREAM_MAX_SECTOR_SIZE) /// We keep these 2 for the gui atm, but they will be removed. -char *cdrom_device = NULL; char *dvd_device = NULL; int dvd_title = 0; diff --git a/stream/stream.h b/stream/stream.h index 4561ec3cdc..cb6c60c197 100644 --- a/stream/stream.h +++ b/stream/stream.h @@ -249,7 +249,7 @@ bool stream_manages_timeline(stream_t *s); extern int dvd_title; extern int dvd_angle; extern int dvd_speed; -extern char *dvd_device, *cdrom_device; +extern char *dvd_device; extern int bluray_angle; extern char *bluray_device; diff --git a/stream/stream_cdda.c b/stream/stream_cdda.c index 976b809299..b11671333a 100644 --- a/stream/stream_cdda.c +++ b/stream/stream_cdda.c @@ -43,11 +43,13 @@ #include "stream.h" #include "options/m_option.h" +#include "options/m_config.h" +#include "options/options.h" #include "compat/mpbswap.h" #include "common/msg.h" -typedef struct { +typedef struct cdda_params { cdrom_drive_t *cd; cdrom_paranoia_t *cdp; int sector; @@ -57,21 +59,17 @@ typedef struct { // options int speed; int paranoia_mode; - char *generic_dev; int sector_size; int search_overlap; int toc_bias; int toc_offset; - int no_skip; + int skip; char *device; int span[2]; } cdda_priv; -static cdda_priv cdda_dflts = { - .search_overlap = -1, -}; +#define OPT_BASE_STRUCT struct cdda_params -#define OPT_BASE_STRUCT cdda_priv static const m_option_t cdda_params_fields[] = { OPT_INTPAIR("span", span, 0), OPT_INTRANGE("speed", speed, 0, 1, 100), @@ -79,23 +77,24 @@ static const m_option_t cdda_params_fields[] = { {0} }; -/// We keep these options but now they set the defaults -const m_option_t cdda_opts[] = { - {"speed", &cdda_dflts.speed, CONF_TYPE_INT, M_OPT_RANGE, 1, 100, NULL}, - {"paranoia", &cdda_dflts.paranoia_mode, CONF_TYPE_INT, M_OPT_RANGE, 0, 2, - NULL}, - {"generic-dev", &cdda_dflts.generic_dev, CONF_TYPE_STRING, 0, 0, 0, NULL}, - {"sector-size", &cdda_dflts.sector_size, CONF_TYPE_INT, M_OPT_RANGE, 1, - 100, NULL}, - {"overlap", &cdda_dflts.search_overlap, CONF_TYPE_INT, M_OPT_RANGE, 0, 75, - NULL}, - {"toc-bias", &cdda_dflts.toc_bias, CONF_TYPE_INT, 0, 0, 0, NULL}, - {"toc-offset", &cdda_dflts.toc_offset, CONF_TYPE_INT, 0, 0, 0, NULL}, - {"noskip", &cdda_dflts.no_skip, CONF_TYPE_FLAG, 0, 0, 1, NULL}, - {"skip", &cdda_dflts.no_skip, CONF_TYPE_FLAG, 0, 1, 0, NULL}, - {"device", &cdda_dflts.device, CONF_TYPE_STRING, 0, 0, 0, NULL}, - {"span", &cdda_dflts.span, CONF_TYPE_INT_PAIR, 0, 0, 0, NULL}, - {NULL, NULL, 0, 0, 0, 0, NULL} +const struct m_sub_options stream_cdda_conf = { + .opts = (const m_option_t[]) { + OPT_INTRANGE("speed", speed, 0, 1, 100), + OPT_INTRANGE("paranoia", paranoia_mode, 0, 0, 2), + OPT_INTRANGE("sector-size", sector_size, 0, 1, 100), + OPT_INTRANGE("overlap", search_overlap, 0, 0, 75), + OPT_INT("toc-bias", toc_bias, 0), + OPT_INT("toc-offset", toc_offset, 0), + OPT_FLAG("skip", skip, 0), + OPT_STRING("device", device, 0), + OPT_INTPAIR("span", span, 0), + {0} + }, + .size = sizeof(struct cdda_params), + .defaults = &(const struct cdda_params){ + .search_overlap = -1, + .skip = 1, + }, }; static const char *cdtext_name[] = { @@ -292,9 +291,10 @@ static int open_cdda(stream_t *st) cdrom_drive_t *cdd = NULL; int last_track; - if (!p->device) { - if (cdrom_device) - p->device = talloc_strdup(NULL, cdrom_device); + if (!p->device || !p->device[0]) { + talloc_free(p->device); + if (st->opts->cdrom_device && st->opts->cdrom_device[0]) + p->device = talloc_strdup(NULL, st->opts->cdrom_device); else p->device = talloc_strdup(NULL, DEFAULT_CDROM_DEVICE); } @@ -367,10 +367,10 @@ static int open_cdda(stream_t *st) else mode = PARANOIA_MODE_FULL; - if (p->no_skip) - mode |= PARANOIA_MODE_NEVERSKIP; - else + if (p->skip) mode &= ~PARANOIA_MODE_NEVERSKIP; + else + mode |= PARANOIA_MODE_NEVERSKIP; if (p->search_overlap > 0) mode |= PARANOIA_MODE_OVERLAP; @@ -403,12 +403,17 @@ static int open_cdda(stream_t *st) return STREAM_OK; } +static void *get_defaults(stream_t *st) +{ + return m_sub_options_copy(st, &stream_cdda_conf, st->opts->stream_cdda_opts); +} + const stream_info_t stream_info_cdda = { .name = "cdda", .open = open_cdda, .protocols = (const char*[]){"cdda", NULL }, .priv_size = sizeof(cdda_priv), - .priv_defaults = &cdda_dflts, + .get_defaults = get_defaults, .options = cdda_params_fields, .url_options = (const char*[]){ "hostname=span", |