# HG changeset patch # User michael # Date 1266113328 0 # Node ID 5bd834bd759bba72582cabfcca4158fbafed0f52 # Parent 0f74d7b5a49fe56e36ebb939463589def90c16ba Remove slice_table checks from decode_cabac_mb_cbp_luma() and set left/top_cbp so these checks arent needed. diff -r 0f74d7b5a49f -r 5bd834bd759b h264.h --- a/h264.h Sun Feb 14 02:04:41 2010 +0000 +++ b/h264.h Sun Feb 14 02:08:48 2010 +0000 @@ -927,17 +927,17 @@ if(top_type) { h->top_cbp = h->cbp_table[top_xy]; } else if(IS_INTRA(mb_type)) { - h->top_cbp = 0x1C0; + h->top_cbp = 0x1CF; } else { - h->top_cbp = 0; + h->top_cbp = 0x00F; } // left_cbp if (left_type[0]) { h->left_cbp = h->cbp_table[left_xy[0]] & 0x1f0; } else if(IS_INTRA(mb_type)) { - h->left_cbp = 0x1C0; + h->left_cbp = 0x1CF; } else { - h->left_cbp = 0; + h->left_cbp = 0x00F; } if (left_type[0]) { h->left_cbp |= ((h->cbp_table[left_xy[0]]>>((left_block[0]&(~1))+1))&0x1) << 1; diff -r 0f74d7b5a49f -r 5bd834bd759b h264_cabac.c --- a/h264_cabac.c Sun Feb 14 02:04:41 2010 +0000 +++ b/h264_cabac.c Sun Feb 14 02:08:48 2010 +0000 @@ -867,8 +867,8 @@ static int decode_cabac_mb_cbp_luma( H264Context *h) { int cbp_b, cbp_a, ctx, cbp = 0; - cbp_a = h->slice_table[h->left_mb_xy[0]] == h->slice_num ? h->left_cbp : -1; - cbp_b = h->slice_table[h->top_mb_xy] == h->slice_num ? h->top_cbp : -1; + cbp_a = h->left_cbp; + cbp_b = h->top_cbp; ctx = !(cbp_a & 0x02) + 2 * !(cbp_b & 0x04); cbp |= get_cabac_noinline(&h->cabac, &h->cabac_state[73 + ctx]);