summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2010-01-26 13:38:18 +0000
committerMichael Niedermayer <michaelni@gmx.at>2010-01-26 13:38:18 +0000
commit99344d43729090ac55c81f6dd589682767c9ff03 (patch)
tree98e9bbb7672fea7955bbc300fdba4c0dce8e2ae0
parentaaa995d7f29cba39b1fe05b6f0a807bfc7a09f43 (diff)
Set top & left types for deblock in fill_caches().
Originally committed as revision 21456 to svn://svn.ffmpeg.org/ffmpeg/trunk
-rw-r--r--libavcodec/h264.h17
1 files changed, 13 insertions, 4 deletions
diff --git a/libavcodec/h264.h b/libavcodec/h264.h
index b49f6cc6f5..49608fbcba 100644
--- a/libavcodec/h264.h
+++ b/libavcodec/h264.h
@@ -285,6 +285,9 @@ typedef struct H264Context{
int top_mb_xy;
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)[8];
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))
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))
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];
- 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;
for(list=0; list<h->list_count; list++){