mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2024-12-15 11:44:49 +00:00
Only load the topleft mv/ref when the topright is unavailable.
8 cpu cycles faster. Originally committed as revision 22079 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
cf7b67bc40
commit
cf41a02b1b
@ -1006,16 +1006,6 @@ static void fill_decode_caches(H264Context *h, int mb_type){
|
||||
}
|
||||
}
|
||||
|
||||
if(USES_LIST(topleft_type, list)){
|
||||
const int b_xy = h->mb2b_xy [topleft_xy] + 3 + h->b_stride + (h->topleft_partition & 2*h->b_stride);
|
||||
const int b8_xy= 4*topleft_xy + 1 + (h->topleft_partition & 2);
|
||||
AV_COPY32(h->mv_cache[list][scan8[0] - 1 - 1*8], s->current_picture.motion_val[list][b_xy]);
|
||||
h->ref_cache[list][scan8[0] - 1 - 1*8]= s->current_picture.ref_index[list][b8_xy];
|
||||
}else{
|
||||
AV_ZERO32(h->mv_cache[list][scan8[0] - 1 - 1*8]);
|
||||
h->ref_cache[list][scan8[0] - 1 - 1*8]= topleft_type ? LIST_NOT_USED : PART_NOT_AVAILABLE;
|
||||
}
|
||||
|
||||
if(USES_LIST(topright_type, list)){
|
||||
const int b_xy= h->mb2b_xy[topright_xy] + 3*h->b_stride;
|
||||
AV_COPY32(h->mv_cache[list][scan8[0] + 4 - 1*8], s->current_picture.motion_val[list][b_xy]);
|
||||
@ -1024,6 +1014,17 @@ static void fill_decode_caches(H264Context *h, int mb_type){
|
||||
AV_ZERO32(h->mv_cache [list][scan8[0] + 4 - 1*8]);
|
||||
h->ref_cache[list][scan8[0] + 4 - 1*8]= topright_type ? LIST_NOT_USED : PART_NOT_AVAILABLE;
|
||||
}
|
||||
if(h->ref_cache[list][scan8[0] + 4 - 1*8] < 0){
|
||||
if(USES_LIST(topleft_type, list)){
|
||||
const int b_xy = h->mb2b_xy [topleft_xy] + 3 + h->b_stride + (h->topleft_partition & 2*h->b_stride);
|
||||
const int b8_xy= 4*topleft_xy + 1 + (h->topleft_partition & 2);
|
||||
AV_COPY32(h->mv_cache[list][scan8[0] - 1 - 1*8], s->current_picture.motion_val[list][b_xy]);
|
||||
h->ref_cache[list][scan8[0] - 1 - 1*8]= s->current_picture.ref_index[list][b8_xy];
|
||||
}else{
|
||||
AV_ZERO32(h->mv_cache[list][scan8[0] - 1 - 1*8]);
|
||||
h->ref_cache[list][scan8[0] - 1 - 1*8]= topleft_type ? LIST_NOT_USED : PART_NOT_AVAILABLE;
|
||||
}
|
||||
}
|
||||
|
||||
if((mb_type&(MB_TYPE_SKIP|MB_TYPE_DIRECT2)) && !FRAME_MBAFF)
|
||||
continue;
|
||||
|
Loading…
Reference in New Issue
Block a user