summaryrefslogtreecommitdiffstats
path: root/libmpdemux
diff options
context:
space:
mode:
authorUoti Urpala <uau@mplayer2.org>2011-12-22 05:54:48 +0200
committerUoti Urpala <uau@mplayer2.org>2012-01-08 23:32:40 +0200
commit62e38774173972acab91e116f01050ef5cc0149f (patch)
tree0bef4e271c78ffb0b9e7b42a29d75e48fbf107f2 /libmpdemux
parentc32b3edfea3c4832f16a7cbcba4f8284170b3170 (diff)
downloadmpv-62e38774173972acab91e116f01050ef5cc0149f.tar.bz2
mpv-62e38774173972acab91e116f01050ef5cc0149f.tar.xz
ad_ffmpeg: pass packet side data from libavformat
Pass avpacket->side_data when using a libavcodec audio decoder together with libavformat demuxer (this was already done for video).
Diffstat (limited to 'libmpdemux')
-rw-r--r--libmpdemux/demuxer.c7
-rw-r--r--libmpdemux/demuxer.h2
2 files changed, 5 insertions, 4 deletions
diff --git a/libmpdemux/demuxer.c b/libmpdemux/demuxer.c
index 199558c2ae..b3a1998d0c 100644
--- a/libmpdemux/demuxer.c
+++ b/libmpdemux/demuxer.c
@@ -831,11 +831,12 @@ int ds_get_packet_sub(demux_stream_t *ds, unsigned char **start)
return len;
}
-struct demux_packet *ds_get_packet2(struct demux_stream *ds)
+struct demux_packet *ds_get_packet2(struct demux_stream *ds, bool repeat_last)
{
// This shouldn't get used together with partial reads
- assert(ds->buffer_pos >= ds->buffer_size);
- ds_fill_buffer(ds);
+ assert(ds->buffer_pos == 0 || ds->buffer_pos >= ds->buffer_size);
+ if (!repeat_last)
+ ds_fill_buffer(ds);
ds->buffer_pos = ds->buffer_size;
return ds->current;
}
diff --git a/libmpdemux/demuxer.h b/libmpdemux/demuxer.h
index 55fda059fe..cdea5baa61 100644
--- a/libmpdemux/demuxer.h
+++ b/libmpdemux/demuxer.h
@@ -346,7 +346,7 @@ int ds_get_packet(struct demux_stream *ds, unsigned char **start);
int ds_get_packet_pts(struct demux_stream *ds, unsigned char **start,
double *pts);
int ds_get_packet_sub(struct demux_stream *ds, unsigned char **start);
-struct demux_packet *ds_get_packet2(struct demux_stream *ds);
+struct demux_packet *ds_get_packet2(struct demux_stream *ds, bool repeat_last);
double ds_get_next_pts(struct demux_stream *ds);
int ds_parse(struct demux_stream *sh, uint8_t **buffer, int *len, double pts,
off_t pos);