diff options
author | wm4 <wm4@nowhere> | 2013-07-11 21:10:42 +0200 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2013-07-12 21:56:40 +0200 |
commit | 52c3eb69765a0d1070bf240353095c8ff546765b (patch) | |
tree | db654a9798f4941dbc3b57c8569fcdeb0b21d24a /demux | |
parent | d17d2fdc7c536821b3fea8c4a37c0ad09fc487db (diff) | |
download | mpv-52c3eb69765a0d1070bf240353095c8ff546765b.tar.bz2 mpv-52c3eb69765a0d1070bf240353095c8ff546765b.tar.xz |
core: change open_stream and demux_open signature
This removes the dependency on DEMUXER_TYPE_* and the file_format
parameter from the stream open functions.
Remove some of the playlist handling code. It looks like this was
needed only for loading linked mov files with demux_mov (which was
removed long ago).
Delete a minor bit of dead network-related code from stream.c as well.
Diffstat (limited to 'demux')
-rw-r--r-- | demux/demux.c | 40 | ||||
-rw-r--r-- | demux/demux.h | 9 | ||||
-rw-r--r-- | demux/demux_mf.c | 2 |
3 files changed, 19 insertions, 32 deletions
diff --git a/demux/demux.c b/demux/demux.c index 64fee955ed..5a0e05d48f 100644 --- a/demux/demux.c +++ b/demux/demux.c @@ -242,8 +242,7 @@ static const demuxer_desc_t *get_demuxer_desc_from_type(int file_format) } -static demuxer_t *new_demuxer(struct MPOpts *opts, stream_t *stream, int type, - char *filename) +static demuxer_t *new_demuxer(struct MPOpts *opts, stream_t *stream, int type) { struct demuxer *d = talloc_zero(NULL, struct demuxer); d->stream = stream; @@ -259,8 +258,8 @@ static demuxer_t *new_demuxer(struct MPOpts *opts, stream_t *stream, int type, mp_msg(MSGT_DEMUXER, MSGL_ERR, "BUG! Invalid demuxer type in new_demuxer(), " "big troubles ahead.\n"); - if (filename) // Filename hack for avs_check_file - d->filename = strdup(filename); + if (stream->url) + d->filename = strdup(stream->url); stream_seek(stream, stream->start_pos); return d; } @@ -590,13 +589,12 @@ static int get_demuxer_type_from_name(char *demuxer_name, int *force) static struct demuxer *open_given_type(struct MPOpts *opts, const struct demuxer_desc *desc, struct stream *stream, bool force, - char *filename, struct demuxer_params *params) { struct demuxer *demuxer; int fformat = desc->type; mp_msg(MSGT_DEMUXER, MSGL_V, "Trying demuxer: %s\n", desc->name); - demuxer = new_demuxer(opts, stream, desc->type, filename); + demuxer = new_demuxer(opts, stream, desc->type); demuxer->params = params; if (!force) { if (desc->check_file) @@ -644,20 +642,20 @@ static struct demuxer *open_given_type(struct MPOpts *opts, "BUG: recursion to nonexistent file format\n"); return NULL; } - return open_given_type(opts, desc, stream, false, filename, params); + return open_given_type(opts, desc, stream, false, params); } fail: free_demuxer(demuxer); return NULL; } -struct demuxer *demux_open_withparams(struct MPOpts *opts, - struct stream *stream, int file_format, - char *force_format, char *filename, - struct demuxer_params *params) +struct demuxer *demux_open(struct stream *stream, char *force_format, + struct demuxer_params *params, struct MPOpts *opts) { struct demuxer *demuxer = NULL; const struct demuxer_desc *desc; + if (!force_format) + force_format = opts->demuxer_name; int force = 0; int demuxer_type; @@ -666,6 +664,7 @@ struct demuxer *demux_open_withparams(struct MPOpts *opts, force_format); return NULL; } + int file_format = 0; if (demuxer_type) file_format = demuxer_type; @@ -675,13 +674,13 @@ struct demuxer *demux_open_withparams(struct MPOpts *opts, if (!desc) // should only happen with obsolete -demuxer 99 numeric format return NULL; - return open_given_type(opts, desc, stream, force, filename, params); + return open_given_type(opts, desc, stream, force, params); } // Test demuxers with safe file checks for (int i = 0; (desc = demuxer_list[i]); i++) { if (desc->safe_check) { - demuxer = open_given_type(opts, desc, stream, false, filename, params); + demuxer = open_given_type(opts, desc, stream, false, params); if (demuxer) return demuxer; } @@ -690,10 +689,10 @@ struct demuxer *demux_open_withparams(struct MPOpts *opts, // Ok. We're over the stable detectable fileformats, the next ones are // a bit fuzzy. So by default (extension_parsing==1) try extension-based // detection first: - if (filename && opts->extension_parsing == 1) { - desc = get_demuxer_desc_from_type(demuxer_type_by_filename(filename)); + if (stream->url && opts->extension_parsing == 1) { + desc = get_demuxer_desc_from_type(demuxer_type_by_filename(stream->url)); if (desc) - demuxer = open_given_type(opts, desc, stream, false, filename, params); + demuxer = open_given_type(opts, desc, stream, false, params); if (demuxer) return demuxer; } @@ -701,7 +700,7 @@ struct demuxer *demux_open_withparams(struct MPOpts *opts, // Finally try detection for demuxers with unsafe checks for (int i = 0; (desc = demuxer_list[i]); i++) { if (!desc->safe_check && desc->check_file) { - demuxer = open_given_type(opts, desc, stream, false, filename, params); + demuxer = open_given_type(opts, desc, stream, false, params); if (demuxer) return demuxer; } @@ -710,13 +709,6 @@ struct demuxer *demux_open_withparams(struct MPOpts *opts, return NULL; } -struct demuxer *demux_open(struct MPOpts *opts, stream_t *vs, int file_format, - char *filename) -{ - return demux_open_withparams(opts, vs, file_format, opts->demuxer_name, - filename, NULL); -} - void demux_flush(demuxer_t *demuxer) { for (int n = 0; n < demuxer->num_streams; n++) diff --git a/demux/demux.h b/demux/demux.h index c43f0282fb..f64a02dce1 100644 --- a/demux/demux.h +++ b/demux/demux.h @@ -230,13 +230,8 @@ bool demux_stream_eof(struct sh_stream *sh); struct sh_stream *new_sh_stream(struct demuxer *demuxer, enum stream_type type); -struct demuxer *demux_open(struct MPOpts *opts, struct stream *stream, - int file_format, char *filename); - -struct demuxer *demux_open_withparams(struct MPOpts *opts, - struct stream *stream, int file_format, - char *force_format, char *filename, - struct demuxer_params *params); +struct demuxer *demux_open(struct stream *stream, char *force_format, + struct demuxer_params *params, struct MPOpts *opts); void demux_flush(struct demuxer *demuxer); int demux_seek(struct demuxer *demuxer, float rel_seek_secs, float audio_delay, diff --git a/demux/demux_mf.c b/demux/demux_mf.c index 3a72558208..5e3469a0f1 100644 --- a/demux/demux_mf.c +++ b/demux/demux_mf.c @@ -74,7 +74,7 @@ static int demux_mf_fill_buffer(demuxer_t *demuxer) if (!stream) { char *filename = mf->names[mf->curr_frame]; if (filename) - stream = open_stream(filename, demuxer->opts, NULL); + stream = stream_open(filename, demuxer->opts); } if (stream) { |