Revision e1c88a21 libavcodec/h264.h

View differences:

libavcodec/h264.h
1070 1070
            if( CABAC ) {
1071 1071
                /* XXX beurk, Load mvd */
1072 1072
                if(USES_LIST(top_type, list)){
1073
                    const int b_xy= h->mb2br_xy[top_xy] + 3*h->b_stride;
1073
                    const int b_xy= h->mb2br_xy[top_xy];
1074 1074
                    AV_COPY64(h->mvd_cache[list][scan8[0] + 0 - 1*8], h->mvd_table[list][b_xy + 0]);
1075 1075
                }else{
1076 1076
                    AV_ZERO64(h->mvd_cache[list][scan8[0] + 0 - 1*8]);
1077 1077
                }
1078 1078
                if(USES_LIST(left_type[0], list)){
1079
                    const int b_xy= h->mb2br_xy[left_xy[0]] + 3;
1080
                    AV_COPY16(h->mvd_cache[list][scan8[0] - 1 + 0*8], h->mvd_table[list][b_xy + h->b_stride*left_block[0]]);
1081
                    AV_COPY16(h->mvd_cache[list][scan8[0] - 1 + 1*8], h->mvd_table[list][b_xy + h->b_stride*left_block[1]]);
1079
                    const int b_xy= h->mb2br_xy[left_xy[0]] + 6;
1080
                    AV_COPY16(h->mvd_cache[list][scan8[0] - 1 + 0*8], h->mvd_table[list][b_xy - left_block[0]]);
1081
                    AV_COPY16(h->mvd_cache[list][scan8[0] - 1 + 1*8], h->mvd_table[list][b_xy - left_block[1]]);
1082 1082
                }else{
1083 1083
                    AV_ZERO16(h->mvd_cache [list][scan8[0] - 1 + 0*8]);
1084 1084
                    AV_ZERO16(h->mvd_cache [list][scan8[0] - 1 + 1*8]);
1085 1085
                }
1086 1086
                if(USES_LIST(left_type[1], list)){
1087
                    const int b_xy= h->mb2br_xy[left_xy[1]] + 3;
1088
                    AV_COPY16(h->mvd_cache[list][scan8[0] - 1 + 2*8], h->mvd_table[list][b_xy + h->b_stride*left_block[2]]);
1089
                    AV_COPY16(h->mvd_cache[list][scan8[0] - 1 + 3*8], h->mvd_table[list][b_xy + h->b_stride*left_block[3]]);
1087
                    const int b_xy= h->mb2br_xy[left_xy[1]] + 6;
1088
                    AV_COPY16(h->mvd_cache[list][scan8[0] - 1 + 2*8], h->mvd_table[list][b_xy - left_block[2]]);
1089
                    AV_COPY16(h->mvd_cache[list][scan8[0] - 1 + 3*8], h->mvd_table[list][b_xy - left_block[3]]);
1090 1090
                }else{
1091 1091
                    AV_ZERO16(h->mvd_cache [list][scan8[0] - 1 + 2*8]);
1092 1092
                    AV_ZERO16(h->mvd_cache [list][scan8[0] - 1 + 3*8]);
......
1424 1424
            AV_COPY128(mv_dst + y*b_stride, mv_src + 8*y);
1425 1425
        }
1426 1426
        if( CABAC ) {
1427
            uint8_t (*mvd_dst)[2] = &h->mvd_table[list][FMO ? b_xy : h->mb2br_xy[h->mb_xy]];
1427
            uint8_t (*mvd_dst)[2] = &h->mvd_table[list][FMO ? 8*h->mb_xy : h->mb2br_xy[h->mb_xy]];
1428 1428
            uint8_t (*mvd_src)[2] = &h->mvd_cache[list][scan8[0]];
1429 1429
            if(IS_SKIP(mb_type))
1430
                fill_rectangle(mvd_dst, 4, 4, h->b_stride, 0, 2);
1431
            else
1432
            for(y=0; y<4; y++){
1433
                AV_COPY64(mvd_dst + y*b_stride, mvd_src + 8*y);
1430
                AV_ZERO128(mvd_dst);
1431
            else{
1432
            AV_COPY64(mvd_dst, mvd_src + 8*3);
1433
            for(y=0; y<3; y++){
1434
                AV_COPY16(mvd_dst + 3 + 3 - y, mvd_src + 3 + 8*y);
1435
            }
1434 1436
            }
1435 1437
        }
1436 1438

  

Also available in: Unified diff