diff options
author | wm4 <wm4@nowhere> | 2018-09-07 15:12:24 +0200 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2019-09-19 20:37:04 +0200 |
commit | b9be20b529de8f47e795d9a869299548d8788528 (patch) | |
tree | 039e425a0a945a703b0ac8aee94b37308c7e74cc /demux/demux_mf.c | |
parent | 8a83430ae77602feb0db4f9cacc8d6d9f63534ce (diff) | |
download | mpv-b9be20b529de8f47e795d9a869299548d8788528.tar.bz2 mpv-b9be20b529de8f47e795d9a869299548d8788528.tar.xz |
demux: return packets directly from demuxer instead of using sh_stream
Preparation for other potential changes to separate demuxer cache/thread
and actual demuxers.
Most things are untested, but it seems to work somewhat.
Diffstat (limited to 'demux/demux_mf.c')
-rw-r--r-- | demux/demux_mf.c | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/demux/demux_mf.c b/demux/demux_mf.c index c4995a66c5..7da07c793a 100644 --- a/demux/demux_mf.c +++ b/demux/demux_mf.c @@ -173,14 +173,12 @@ static void demux_seek_mf(demuxer_t *demuxer, double seek_pts, int flags) mf->curr_frame = newpos; } -// return value: -// 0 = EOF or no stream found -// 1 = successfully read a packet -static int demux_mf_fill_buffer(demuxer_t *demuxer) +static bool demux_mf_read_packet(struct demuxer *demuxer, + struct demux_packet **pkt) { mf_t *mf = demuxer->priv; if (mf->curr_frame >= mf->nr_of_files) - return 0; + return false; struct stream *entry_stream = NULL; if (mf->streams) @@ -201,7 +199,8 @@ static int demux_mf_fill_buffer(demuxer_t *demuxer) memcpy(dp->buffer, data.start, data.len); dp->pts = mf->curr_frame / mf->sh->codec->fps; dp->keyframe = true; - demux_add_packet(mf->sh, dp); + dp->stream = mf->sh->index; + *pkt = dp; } } talloc_free(data.start); @@ -211,7 +210,7 @@ static int demux_mf_fill_buffer(demuxer_t *demuxer) free_stream(stream); mf->curr_frame++; - return 1; + return true; } // map file extension/type to a codec name @@ -350,7 +349,7 @@ static void demux_close_mf(demuxer_t *demuxer) const demuxer_desc_t demuxer_desc_mf = { .name = "mf", .desc = "image files (mf)", - .fill_buffer = demux_mf_fill_buffer, + .read_packet = demux_mf_read_packet, .open = demux_open_mf, .close = demux_close_mf, .seek = demux_seek_mf, |