From 7ccc636f03189f1f1b68ee812fb8f965fd21bfb0 Mon Sep 17 00:00:00 2001
From: Michael Niedermayer <michaelni@gmx.at>
Date: Sat, 4 Oct 2008 22:26:43 +0000
Subject: [PATCH] Favor even chunk sizes in ambiguous cases. Fixes
 transcode_069_produces_uneven_chunk_size.avi.

Originally committed as revision 15557 to svn://svn.ffmpeg.org/ffmpeg/trunk
---
 libavformat/avidec.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/libavformat/avidec.c b/libavformat/avidec.c
index 1a9a11c4396..eaccd41fe50 100644
--- a/libavformat/avidec.c
+++ b/libavformat/avidec.c
@@ -52,6 +52,7 @@ typedef struct {
     int64_t  movi_end;
     int64_t  fsize;
     int64_t movi_list;
+    int64_t last_pkt_pos;
     int index_loaded;
     int is_odml;
     int non_interleaved;
@@ -701,6 +702,7 @@ resync:
 
         if(size > ast->remaining)
             size= ast->remaining;
+        avi->last_pkt_pos= url_ftell(pb);
         av_get_packet(pb, pkt, size);
 
         if(ast->has_pal && pkt->data && pkt->size<(unsigned)INT_MAX/2){
@@ -782,6 +784,9 @@ resync:
 
         n= get_stream_idx(d);
 
+        if(!((i-avi->last_pkt_pos)&1) && get_stream_idx(d+1) < s->nb_streams)
+            continue;
+
         //parse ##dc/##wb
         if(n < s->nb_streams){
             AVStream *st;
-- 
GitLab