From b1c202c12fdd2b53f49e7a9ca5c2f4b84733f511 Mon Sep 17 00:00:00 2001 From: wm4 Date: Fri, 7 Sep 2018 22:40:12 +0200 Subject: demux: make demux_open() private I always wanted to get rid of this, because it makes the ownership rules for the stream pointer really awkward. demux_edl.c was the only remaining user of this. Replace it with a semi-clever idea: the init segment shit can be used to pass the "file" contents as memory block, and "memory://" itself provides an empty stream. I have no idea if this actually works, because I didn't immediately find a test stream (would have to be some youtube DASH shit). --- demux/demux.c | 5 +++-- demux/demux.h | 3 --- demux/demux_edl.c | 8 +++++--- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/demux/demux.c b/demux/demux.c index 11b8c622e9..a7e30e8628 100644 --- a/demux/demux.c +++ b/demux/demux.c @@ -2438,8 +2438,9 @@ static const int d_force[] = {DEMUX_CHECK_FORCE, -1}; // If params->does_not_own_stream==false, this does _not_ free the stream if // opening fails. But if it succeeds, a later demux_free() call will free the // stream. -struct demuxer *demux_open(struct stream *stream, struct demuxer_params *params, - struct mpv_global *global) +static struct demuxer *demux_open(struct stream *stream, + struct demuxer_params *params, + struct mpv_global *global) { const int *check_levels = d_normal; const struct demuxer_desc *check_desc = NULL; diff --git a/demux/demux.h b/demux/demux.h index 495127f785..2c089be823 100644 --- a/demux/demux.h +++ b/demux/demux.h @@ -262,9 +262,6 @@ int demux_get_num_stream(struct demuxer *demuxer); struct sh_stream *demux_alloc_sh_stream(enum stream_type type); void demux_add_sh_stream(struct demuxer *demuxer, struct sh_stream *sh); -struct demuxer *demux_open(struct stream *stream, struct demuxer_params *params, - struct mpv_global *global); - struct mp_cancel; struct demuxer *demux_open_url(const char *url, struct demuxer_params *params, diff --git a/demux/demux_edl.c b/demux/demux_edl.c index 7f85568eae..9fbdbc9acf 100644 --- a/demux/demux_edl.c +++ b/demux/demux_edl.c @@ -237,10 +237,12 @@ static void build_timeline(struct timeline *tl, struct tl_parts *parts) MP_ERR(tl, "Could not read init fragment.\n"); goto error; } - s = open_memory_stream(tl->init_fragment.start, tl->init_fragment.len); - tl->track_layout = demux_open(s, NULL, tl->global); + struct demuxer_params params = { + .init_fragment = tl->init_fragment, + }; + tl->track_layout = demux_open_url("memory://", ¶ms, tl->cancel, + tl->global); if (!tl->track_layout) { - free_stream(s); MP_ERR(tl, "Could not demux init fragment.\n"); goto error; } -- cgit v1.2.3