|
|
@ -285,6 +285,9 @@ typedef struct H264Context{ |
|
|
|
int top_mb_xy; |
|
|
|
int top_mb_xy; |
|
|
|
int left_mb_xy[2]; |
|
|
|
int left_mb_xy[2]; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int top_type; |
|
|
|
|
|
|
|
int left_type[2]; |
|
|
|
|
|
|
|
|
|
|
|
int8_t intra4x4_pred_mode_cache[5*8]; |
|
|
|
int8_t intra4x4_pred_mode_cache[5*8]; |
|
|
|
int8_t (*intra4x4_pred_mode)[8]; |
|
|
|
int8_t (*intra4x4_pred_mode)[8]; |
|
|
|
H264PredContext hpc; |
|
|
|
H264PredContext hpc; |
|
|
@ -806,6 +809,16 @@ static av_always_inline int fill_caches(H264Context *h, int mb_type, int for_deb |
|
|
|
&& (top_xy < s->mb_stride || ((qp + s->current_picture.qscale_table[top_xy -s->mb_stride] + 1)>>1) <= qp_thresh)) |
|
|
|
&& (top_xy < s->mb_stride || ((qp + s->current_picture.qscale_table[top_xy -s->mb_stride] + 1)>>1) <= qp_thresh)) |
|
|
|
return 1; |
|
|
|
return 1; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if(h->deblocking_filter == 2){ |
|
|
|
|
|
|
|
h->top_type = top_type = h->slice_table[top_xy ] == h->slice_num ? s->current_picture.mb_type[top_xy] : 0; |
|
|
|
|
|
|
|
h->left_type[0]= left_type[0] = h->slice_table[left_xy[0] ] == h->slice_num ? s->current_picture.mb_type[left_xy[0]] : 0; |
|
|
|
|
|
|
|
h->left_type[1]= left_type[1] = h->slice_table[left_xy[1] ] == h->slice_num ? s->current_picture.mb_type[left_xy[1]] : 0; |
|
|
|
|
|
|
|
}else{ |
|
|
|
|
|
|
|
h->top_type = top_type = h->slice_table[top_xy ] < 0xFFFF ? s->current_picture.mb_type[top_xy] : 0; |
|
|
|
|
|
|
|
h->left_type[0]= left_type[0] = h->slice_table[left_xy[0] ] < 0xFFFF ? s->current_picture.mb_type[left_xy[0]] : 0; |
|
|
|
|
|
|
|
h->left_type[1]= left_type[1] = h->slice_table[left_xy[1] ] < 0xFFFF ? s->current_picture.mb_type[left_xy[1]] : 0; |
|
|
|
|
|
|
|
} |
|
|
|
if(IS_INTRA(mb_type)) |
|
|
|
if(IS_INTRA(mb_type)) |
|
|
|
return 0; |
|
|
|
return 0; |
|
|
|
|
|
|
|
|
|
|
@ -817,10 +830,6 @@ static av_always_inline int fill_caches(H264Context *h, int mb_type, int for_deb |
|
|
|
|
|
|
|
|
|
|
|
h->cbp= h->cbp_table[mb_xy]; |
|
|
|
h->cbp= h->cbp_table[mb_xy]; |
|
|
|
|
|
|
|
|
|
|
|
top_type = h->slice_table[top_xy ] < 0xFFFF ? s->current_picture.mb_type[top_xy] : 0; |
|
|
|
|
|
|
|
left_type[0] = h->slice_table[left_xy[0] ] < 0xFFFF ? s->current_picture.mb_type[left_xy[0]] : 0; |
|
|
|
|
|
|
|
left_type[1] = h->slice_table[left_xy[1] ] < 0xFFFF ? s->current_picture.mb_type[left_xy[1]] : 0; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
{ |
|
|
|
{ |
|
|
|
int list; |
|
|
|
int list; |
|
|
|
for(list=0; list<h->list_count; list++){ |
|
|
|
for(list=0; list<h->list_count; list++){ |
|
|
|