summaryrefslogtreecommitdiffstats
path: root/demux
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2018-09-07 22:40:12 +0200
committerwm4 <wm4@nowhere>2019-09-19 20:37:04 +0200
commitb1c202c12fdd2b53f49e7a9ca5c2f4b84733f511 (patch)
tree20d564f9f6e68bd628d236cc6fd2841dcc686e33 /demux
parent5c7ecad93a771d71a773cace996afd706bbef3d2 (diff)
downloadmpv-b1c202c12fdd2b53f49e7a9ca5c2f4b84733f511.tar.bz2
mpv-b1c202c12fdd2b53f49e7a9ca5c2f4b84733f511.tar.xz
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).
Diffstat (limited to 'demux')
-rw-r--r--demux/demux.c5
-rw-r--r--demux/demux.h3
-rw-r--r--demux/demux_edl.c8
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://", &params, tl->cancel,
+ tl->global);
if (!tl->track_layout) {
- free_stream(s);
MP_ERR(tl, "Could not demux init fragment.\n");
goto error;
}