100l, correct wrong H.264+adaptive MBAFF decoding
authorAlexander Strange <astrange@ithinksw.com>
Mon, 25 Jan 2010 01:56:13 +0000 (01:56 +0000)
committerAlexander Strange <astrange@ithinksw.com>
Mon, 25 Jan 2010 01:56:13 +0000 (01:56 +0000)
Fixes several FATE tests.

Originally committed as revision 21445 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavcodec/h264.c

index e07cd2e..2de6f6c 100644 (file)
@@ -987,8 +987,8 @@ static inline void xchg_mb_border(H264Context *h, uint8_t *src_y, uint8_t *src_c
     int deblock_top;
     int mb_xy;
     int top_idx = 1;
     int deblock_top;
     int mb_xy;
     int top_idx = 1;
-    uint8_t *top_border_m1 = h->top_borders[top_idx][s->mb_x-1];
-    uint8_t *top_border    = h->top_borders[top_idx][s->mb_x];
+    uint8_t *top_border_m1;
+    uint8_t *top_border;
 
     if(!simple && FRAME_MBAFF){
         if(s->mb_y&1){
 
     if(!simple && FRAME_MBAFF){
         if(s->mb_y&1){
@@ -1012,6 +1012,9 @@ static inline void xchg_mb_border(H264Context *h, uint8_t *src_y, uint8_t *src_c
     src_cb -= uvlinesize + 1;
     src_cr -= uvlinesize + 1;
 
     src_cb -= uvlinesize + 1;
     src_cr -= uvlinesize + 1;
 
+    top_border_m1 = h->top_borders[top_idx][s->mb_x-1];
+    top_border    = h->top_borders[top_idx][s->mb_x];
+
 #define XCHG(a,b,xchg)\
 if (xchg) AV_SWAP64(b,a);\
 else      AV_COPY64(b,a);
 #define XCHG(a,b,xchg)\
 if (xchg) AV_SWAP64(b,a);\
 else      AV_COPY64(b,a);