exchange if() and for() in the MT_FIELD case
authorMichael Niedermayer <michaelni@gmx.at>
Wed, 1 Aug 2007 21:17:26 +0000 (21:17 +0000)
committerMichael Niedermayer <michaelni@gmx.at>
Wed, 1 Aug 2007 21:17:26 +0000 (21:17 +0000)
18 cpu cycles faster for matrixbench

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

libavcodec/mpeg12.c

index 76af2c468d925f4c3bacca72238de6c8679fbc00..73f3a85b9d027dd85e0fb0032fa974cd18e9cf7c 100644 (file)
@@ -418,11 +418,11 @@ static int mpeg_decode_mb(MpegEncContext *s,
                 break;
             case MT_FIELD:
                 s->mv_type = MV_TYPE_FIELD;
-                for(i=0;i<2;i++) {
-                    if (USES_LIST(mb_type, i)) {
-                        s->mv_dir |= (MV_DIR_FORWARD >> i);
-                        if (s->picture_structure == PICT_FRAME) {
-                            mb_type |= MB_TYPE_16x8 | MB_TYPE_INTERLACED;
+                if (s->picture_structure == PICT_FRAME) {
+                    mb_type |= MB_TYPE_16x8 | MB_TYPE_INTERLACED;
+                    for(i=0;i<2;i++) {
+                        if (USES_LIST(mb_type, i)) {
+                            s->mv_dir |= (MV_DIR_FORWARD >> i);
                             for(j=0;j<2;j++) {
                                 s->field_select[i][j] = get_bits1(&s->gb);
                                 val = mpeg_decode_motion(s, s->mpeg_f_code[i][0],
@@ -436,8 +436,13 @@ static int mpeg_decode_mb(MpegEncContext *s,
                                 s->mv[i][j][1] = val;
                                 dprintf(s->avctx, "fmy=%d\n", val);
                             }
-                        } else {
-                            mb_type |= MB_TYPE_16x16 | MB_TYPE_INTERLACED;
+                        }
+                    }
+                } else {
+                    mb_type |= MB_TYPE_16x16 | MB_TYPE_INTERLACED;
+                    for(i=0;i<2;i++) {
+                        if (USES_LIST(mb_type, i)) {
+                            s->mv_dir |= (MV_DIR_FORWARD >> i);
                             s->field_select[i][0] = get_bits1(&s->gb);
                             for(k=0;k<2;k++) {
                                 val = mpeg_decode_motion(s, s->mpeg_f_code[i][k],