Revision 2dc380ca libavcodec/h264.h

View differences:

libavcodec/h264.h
1060 1060
                *(uint32_t*)h->mvd_cache [list][scan8[12]]= 0;
1061 1061

  
1062 1062
                if(h->slice_type_nos == FF_B_TYPE){
1063
                    fill_rectangle(&h->direct_cache[scan8[0]], 4, 4, 8, 0, 1);
1063
                    fill_rectangle(&h->direct_cache[scan8[0]], 4, 4, 8, MB_TYPE_16x16>>1, 1);
1064 1064

  
1065 1065
                    if(IS_DIRECT(top_type)){
1066
                        *(uint32_t*)&h->direct_cache[scan8[0] - 1*8]= 0x01010101;
1066
                        *(uint32_t*)&h->direct_cache[scan8[0] - 1*8]= 0x01010101*(MB_TYPE_DIRECT2>>1);
1067 1067
                    }else if(IS_8X8(top_type)){
1068 1068
                        int b8_xy = h->mb2b8_xy[top_xy] + h->b8_stride;
1069 1069
                        h->direct_cache[scan8[0] + 0 - 1*8]= h->direct_table[b8_xy];
1070 1070
                        h->direct_cache[scan8[0] + 2 - 1*8]= h->direct_table[b8_xy + 1];
1071 1071
                    }else{
1072
                        *(uint32_t*)&h->direct_cache[scan8[0] - 1*8]= 0;
1072
                        *(uint32_t*)&h->direct_cache[scan8[0] - 1*8]= 0x01010101*(MB_TYPE_16x16>>1);
1073 1073
                    }
1074 1074

  
1075 1075
                    if(IS_DIRECT(left_type[0]))
1076
                        h->direct_cache[scan8[0] - 1 + 0*8]= 1;
1076
                        h->direct_cache[scan8[0] - 1 + 0*8]= MB_TYPE_DIRECT2>>1;
1077 1077
                    else if(IS_8X8(left_type[0]))
1078 1078
                        h->direct_cache[scan8[0] - 1 + 0*8]= h->direct_table[h->mb2b8_xy[left_xy[0]] + 1 + h->b8_stride*(left_block[0]>>1)];
1079 1079
                    else
1080
                        h->direct_cache[scan8[0] - 1 + 0*8]= 0;
1080
                        h->direct_cache[scan8[0] - 1 + 0*8]= MB_TYPE_16x16>>1;
1081 1081

  
1082 1082
                    if(IS_DIRECT(left_type[1]))
1083
                        h->direct_cache[scan8[0] - 1 + 2*8]= 1;
1083
                        h->direct_cache[scan8[0] - 1 + 2*8]= MB_TYPE_DIRECT2>>1;
1084 1084
                    else if(IS_8X8(left_type[1]))
1085 1085
                        h->direct_cache[scan8[0] - 1 + 2*8]= h->direct_table[h->mb2b8_xy[left_xy[1]] + 1 + h->b8_stride*(left_block[2]>>1)];
1086 1086
                    else
1087
                        h->direct_cache[scan8[0] - 1 + 2*8]= 0;
1087
                        h->direct_cache[scan8[0] - 1 + 2*8]= MB_TYPE_16x16>>1;
1088 1088
                }
1089 1089
            }
1090 1090
            }
......
1409 1409
    if(h->slice_type_nos == FF_B_TYPE && CABAC){
1410 1410
        if(IS_8X8(mb_type)){
1411 1411
            uint8_t *direct_table = &h->direct_table[b8_xy];
1412
            direct_table[1+0*h->b8_stride] = IS_DIRECT(h->sub_mb_type[1]) ? 1 : 0;
1413
            direct_table[0+1*h->b8_stride] = IS_DIRECT(h->sub_mb_type[2]) ? 1 : 0;
1414
            direct_table[1+1*h->b8_stride] = IS_DIRECT(h->sub_mb_type[3]) ? 1 : 0;
1412
            direct_table[1+0*h->b8_stride] = h->sub_mb_type[1]>>1;
1413
            direct_table[0+1*h->b8_stride] = h->sub_mb_type[2]>>1;
1414
            direct_table[1+1*h->b8_stride] = h->sub_mb_type[3]>>1;
1415 1415
        }
1416 1416
    }
1417 1417
}

Also available in: Unified diff