]> rtime.felk.cvut.cz Git - frescor/ffmpeg.git/commitdiff
exchange if() and for() in the MT_FIELD case
authormichael <michael@9553f0bf-9b14-0410-a0b8-cfaf0461ba5b>
Wed, 1 Aug 2007 21:17:26 +0000 (21:17 +0000)
committermichael <michael@9553f0bf-9b14-0410-a0b8-cfaf0461ba5b>
Wed, 1 Aug 2007 21:17:26 +0000 (21:17 +0000)
18 cpu cycles faster for matrixbench

git-svn-id: file:///var/local/repositories/ffmpeg/trunk@9863 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b

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],