Commit 91252b96 authored by michael's avatar michael

Use table to speedup access to non_zero_count in MBAFF with differing interlacing.

~4 cpu cycles speedup


git-svn-id: file:///var/local/repositories/ffmpeg/trunk@21474 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b
parent ba4f9290
...@@ -632,6 +632,16 @@ void ff_h264_filter_mb( H264Context *h, int mb_x, int mb_y, uint8_t *img_y, uint ...@@ -632,6 +632,16 @@ void ff_h264_filter_mb( H264Context *h, int mb_x, int mb_y, uint8_t *img_y, uint
*(uint64_t*)&bS[0]= *(uint64_t*)&bS[0]=
*(uint64_t*)&bS[4]= 0x0004000400040004ULL; *(uint64_t*)&bS[4]= 0x0004000400040004ULL;
else { else {
static const uint8_t offset[2][2][8]={
{
{7+8*0, 7+8*0, 7+8*0, 7+8*0, 7+8*1, 7+8*1, 7+8*1, 7+8*1},
{7+8*2, 7+8*2, 7+8*2, 7+8*2, 7+8*3, 7+8*3, 7+8*3, 7+8*3},
},{
{7+8*0, 7+8*1, 7+8*2, 7+8*3, 7+8*0, 7+8*1, 7+8*2, 7+8*3},
{7+8*0, 7+8*1, 7+8*2, 7+8*3, 7+8*0, 7+8*1, 7+8*2, 7+8*3},
}
};
const uint8_t *off= offset[MB_FIELD][mb_y&1];
for( i = 0; i < 8; i++ ) { for( i = 0; i < 8; i++ ) {
int j= MB_FIELD ? i>>2 : i&1; int j= MB_FIELD ? i>>2 : i&1;
int mbn_xy = h->left_mb_xy[j]; int mbn_xy = h->left_mb_xy[j];
...@@ -644,7 +654,7 @@ void ff_h264_filter_mb( H264Context *h, int mb_x, int mb_y, uint8_t *img_y, uint ...@@ -644,7 +654,7 @@ void ff_h264_filter_mb( H264Context *h, int mb_x, int mb_y, uint8_t *img_y, uint
((!h->pps.cabac && IS_8x8DCT(mbn_type)) ? ((!h->pps.cabac && IS_8x8DCT(mbn_type)) ?
(h->cbp_table[mbn_xy] & ((MB_FIELD ? (i&2) : (mb_y&1)) ? 8 : 2)) (h->cbp_table[mbn_xy] & ((MB_FIELD ? (i&2) : (mb_y&1)) ? 8 : 2))
: :
h->non_zero_count[mbn_xy][7+(MB_FIELD ? (i&3) : (i>>2)+(mb_y&1)*2)*8])); h->non_zero_count[mbn_xy][ off[i] ]));
} }
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment