stream: create memory streams in more straightforward way

Instead of having to rely on the protocol matching, make a function that
creates a stream from a stream_info_t directly. Instead of going through
a weird indirection with STREAM_CTRL, add a direct argument for non-text
arguments to the open callback. Instead of creating a weird dummy
mpv_global, just pass an existing one from all callers. (The latter one
is just an artifact from the past, where mpv_global wasn't available
everywhere.)

Actually I just wanted a function that creates a stream without any of
that bullshit. This goal was slightly missed, since you still need this
heavy "constructor" just to setup a shitty struct with some shitty
callbacks.
This commit is contained in:
wm4
2019-06-19 16:48:46 +02:00
parent de3ecc60cb
commit e40885d963
7 changed files with 62 additions and 44 deletions

View File

@@ -45,7 +45,8 @@ static int open_file(struct demuxer *demuxer, enum demux_check check)
bstr probe = stream_peek(demuxer->stream, probe_size);
if (probe.len == 0)
return -1;
struct stream *probe_stream = open_memory_stream(probe.start, probe.len);
struct stream *probe_stream =
stream_memory_open(demuxer->global, probe.start, probe.len);
struct mp_archive *mpa = mp_archive_new(mp_null_log, probe_stream, flags);
bool ok = !!mpa;
free_stream(probe_stream);