summaryrefslogtreecommitdiffstats
path: root/demux/demux_raw.c
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2018-09-07 15:12:24 +0200
committerwm4 <wm4@nowhere>2019-09-19 20:37:04 +0200
commitb9be20b529de8f47e795d9a869299548d8788528 (patch)
tree039e425a0a945a703b0ac8aee94b37308c7e74cc /demux/demux_raw.c
parent8a83430ae77602feb0db4f9cacc8d6d9f63534ce (diff)
downloadmpv-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_raw.c')
-rw-r--r--demux/demux_raw.c16
1 files changed, 9 insertions, 7 deletions
diff --git a/demux/demux_raw.c b/demux/demux_raw.c
index 90b071dd3d..52d3ee268e 100644
--- a/demux/demux_raw.c
+++ b/demux/demux_raw.c
@@ -269,17 +269,17 @@ static int demux_rawvideo_open(demuxer_t *demuxer, enum demux_check check)
return generic_open(demuxer);
}
-static int raw_fill_buffer(demuxer_t *demuxer)
+static bool raw_read_packet(struct demuxer *demuxer, struct demux_packet **pkt)
{
struct priv *p = demuxer->priv;
if (demuxer->stream->eof)
- return 0;
+ return false;
struct demux_packet *dp = new_demux_packet(p->frame_size * p->read_frames);
if (!dp) {
MP_ERR(demuxer, "Can't read packet.\n");
- return 1;
+ return true;
}
dp->pos = stream_tell(demuxer->stream);
@@ -287,9 +287,11 @@ static int raw_fill_buffer(demuxer_t *demuxer)
int len = stream_read(demuxer->stream, dp->buffer, dp->len);
demux_packet_shorten(dp, len);
- demux_add_packet(p->sh, dp);
- return 1;
+ dp->stream = p->sh->index;
+ *pkt = dp;
+
+ return true;
}
static void raw_seek(demuxer_t *demuxer, double seek_pts, int flags)
@@ -312,7 +314,7 @@ const demuxer_desc_t demuxer_desc_rawaudio = {
.name = "rawaudio",
.desc = "Uncompressed audio",
.open = demux_rawaudio_open,
- .fill_buffer = raw_fill_buffer,
+ .read_packet = raw_read_packet,
.seek = raw_seek,
};
@@ -320,6 +322,6 @@ const demuxer_desc_t demuxer_desc_rawvideo = {
.name = "rawvideo",
.desc = "Uncompressed video",
.open = demux_rawvideo_open,
- .fill_buffer = raw_fill_buffer,
+ .read_packet = raw_read_packet,
.seek = raw_seek,
};