Commit 8095a8d7 authored by michael's avatar michael

Reorder intra4x4_pred_mode so that we can read/write 4 values at once.


git-svn-id: file:///var/local/repositories/ffmpeg/trunk@22053 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b
parent 7e735024
...@@ -54,13 +54,10 @@ static const uint8_t div6[52]={ ...@@ -54,13 +54,10 @@ static const uint8_t div6[52]={
void ff_h264_write_back_intra_pred_mode(H264Context *h){ void ff_h264_write_back_intra_pred_mode(H264Context *h){
int8_t *mode= h->intra4x4_pred_mode + h->mb2br_xy[h->mb_xy]; int8_t *mode= h->intra4x4_pred_mode + h->mb2br_xy[h->mb_xy];
mode[0]= h->intra4x4_pred_mode_cache[7+8*1]; AV_COPY32(mode, h->intra4x4_pred_mode_cache + 4 + 8*4);
mode[1]= h->intra4x4_pred_mode_cache[7+8*2]; mode[4]= h->intra4x4_pred_mode_cache[7+8*3];
mode[2]= h->intra4x4_pred_mode_cache[7+8*3]; mode[5]= h->intra4x4_pred_mode_cache[7+8*2];
mode[3]= h->intra4x4_pred_mode_cache[7+8*4]; mode[6]= h->intra4x4_pred_mode_cache[7+8*1];
mode[4]= h->intra4x4_pred_mode_cache[4+8*4];
mode[5]= h->intra4x4_pred_mode_cache[5+8*4];
mode[6]= h->intra4x4_pred_mode_cache[6+8*4];
} }
/** /**
......
...@@ -886,11 +886,7 @@ static void fill_decode_caches(H264Context *h, int mb_type){ ...@@ -886,11 +886,7 @@ static void fill_decode_caches(H264Context *h, int mb_type){
if(IS_INTRA4x4(mb_type)){ if(IS_INTRA4x4(mb_type)){
if(IS_INTRA4x4(top_type)){ if(IS_INTRA4x4(top_type)){
int8_t *mode= h->intra4x4_pred_mode + h->mb2br_xy[top_xy]; AV_COPY32(h->intra4x4_pred_mode_cache+4+8*0, h->intra4x4_pred_mode + h->mb2br_xy[top_xy]);
h->intra4x4_pred_mode_cache[4+8*0]= mode[4];
h->intra4x4_pred_mode_cache[5+8*0]= mode[5];
h->intra4x4_pred_mode_cache[6+8*0]= mode[6];
h->intra4x4_pred_mode_cache[7+8*0]= mode[3];
}else{ }else{
int pred; int pred;
if(!(top_type & type_mask)) if(!(top_type & type_mask))
...@@ -906,8 +902,8 @@ static void fill_decode_caches(H264Context *h, int mb_type){ ...@@ -906,8 +902,8 @@ static void fill_decode_caches(H264Context *h, int mb_type){
for(i=0; i<2; i++){ for(i=0; i<2; i++){
if(IS_INTRA4x4(left_type[i])){ if(IS_INTRA4x4(left_type[i])){
int8_t *mode= h->intra4x4_pred_mode + h->mb2br_xy[left_xy[i]]; int8_t *mode= h->intra4x4_pred_mode + h->mb2br_xy[left_xy[i]];
h->intra4x4_pred_mode_cache[3+8*1 + 2*8*i]= mode[left_block[0+2*i]]; h->intra4x4_pred_mode_cache[3+8*1 + 2*8*i]= mode[6-left_block[0+2*i]];
h->intra4x4_pred_mode_cache[3+8*2 + 2*8*i]= mode[left_block[1+2*i]]; h->intra4x4_pred_mode_cache[3+8*2 + 2*8*i]= mode[6-left_block[1+2*i]];
}else{ }else{
int pred; int pred;
if(!(left_type[i] & type_mask)) if(!(left_type[i] & type_mask))
......
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