From 3df4e6e5eb7e823b99b110dc222b111696b45038 Mon Sep 17 00:00:00 2001 From: jmarshallnz Date: Sun, 9 Mar 2014 10:27:55 +1300 Subject: Merge pull request #4375 from FernetMenta/wma fix assert when playing certain wma files --- lib/ffmpeg/libavformat/asfdec.c | 1 + ...ort-avformat-asfdec-call-read-frame-flush.patch | 30 ++++++++++++++++++++++ 2 files changed, 31 insertions(+) create mode 100644 lib/ffmpeg/patches/0071-ffmpeg-backport-avformat-asfdec-call-read-frame-flush.patch diff --git a/lib/ffmpeg/libavformat/asfdec.c b/lib/ffmpeg/libavformat/asfdec.c index c7e16f5f23..7f141775fe 100644 --- a/lib/ffmpeg/libavformat/asfdec.c +++ b/lib/ffmpeg/libavformat/asfdec.c @@ -1401,6 +1401,7 @@ static int64_t asf_read_pts(AVFormatContext *s, int stream_index, if (avio_seek(s->pb, pos, SEEK_SET) < 0) return AV_NOPTS_VALUE; + ff_read_frame_flush(s); asf_reset_header(s); for (;;) { if (av_read_frame(s, pkt) < 0) { diff --git a/lib/ffmpeg/patches/0071-ffmpeg-backport-avformat-asfdec-call-read-frame-flush.patch b/lib/ffmpeg/patches/0071-ffmpeg-backport-avformat-asfdec-call-read-frame-flush.patch new file mode 100644 index 0000000000..5198548a4e --- /dev/null +++ b/lib/ffmpeg/patches/0071-ffmpeg-backport-avformat-asfdec-call-read-frame-flush.patch @@ -0,0 +1,30 @@ +From 4b101ab02ea762f70903e894a4b002b229526a4a Mon Sep 17 00:00:00 2001 +From: Michael Niedermayer +Date: Mon, 12 Aug 2013 22:52:23 +0200 +Subject: [PATCH] avformat/asfdec: call ff_read_frame_flush() in asf_read_pts() + +flushing just the asf demuxer but not the cores buffers leads to inconsistencies +and a "random" packet position which later causes an assertion failure + +Fixes Ticket2853 + +Signed-off-by: Michael Niedermayer +--- + libavformat/asfdec.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/libavformat/asfdec.c b/libavformat/asfdec.c +index cffbcc4..0d6370d 100644 +--- a/libavformat/asfdec.c ++++ b/libavformat/asfdec.c +@@ -1414,6 +1414,7 @@ static int64_t asf_read_pts(AVFormatContext *s, int stream_index, + if (avio_seek(s->pb, pos, SEEK_SET) < 0) + return AV_NOPTS_VALUE; + ++ ff_read_frame_flush(s); + asf_reset_header(s); + for (;;) { + if (av_read_frame(s, pkt) < 0) { +-- +1.8.5.5 + -- cgit v1.2.3