[FFmpeg-cvslog] r22053 - in trunk/libavcodec: h264.c h264.h
michael
subversion
Thu Feb 25 15:26:12 CET 2010
Author: michael
Date: Thu Feb 25 15:26:12 2010
New Revision: 22053
Log:
Reorder intra4x4_pred_mode so that we can read/write 4 values at once.
Modified:
trunk/libavcodec/h264.c
trunk/libavcodec/h264.h
Modified: trunk/libavcodec/h264.c
==============================================================================
--- trunk/libavcodec/h264.c Thu Feb 25 15:02:39 2010 (r22052)
+++ trunk/libavcodec/h264.c Thu Feb 25 15:26:12 2010 (r22053)
@@ -54,13 +54,10 @@ static const uint8_t div6[52]={
void ff_h264_write_back_intra_pred_mode(H264Context *h){
int8_t *mode= h->intra4x4_pred_mode + h->mb2br_xy[h->mb_xy];
- mode[0]= h->intra4x4_pred_mode_cache[7+8*1];
- mode[1]= h->intra4x4_pred_mode_cache[7+8*2];
- mode[2]= h->intra4x4_pred_mode_cache[7+8*3];
- mode[3]= h->intra4x4_pred_mode_cache[7+8*4];
- 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];
+ AV_COPY32(mode, h->intra4x4_pred_mode_cache + 4 + 8*4);
+ mode[4]= h->intra4x4_pred_mode_cache[7+8*3];
+ mode[5]= h->intra4x4_pred_mode_cache[7+8*2];
+ mode[6]= h->intra4x4_pred_mode_cache[7+8*1];
}
/**
Modified: trunk/libavcodec/h264.h
==============================================================================
--- trunk/libavcodec/h264.h Thu Feb 25 15:02:39 2010 (r22052)
+++ trunk/libavcodec/h264.h Thu Feb 25 15:26:12 2010 (r22053)
@@ -886,11 +886,7 @@ static void fill_decode_caches(H264Conte
if(IS_INTRA4x4(mb_type)){
if(IS_INTRA4x4(top_type)){
- int8_t *mode= 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];
+ AV_COPY32(h->intra4x4_pred_mode_cache+4+8*0, h->intra4x4_pred_mode + h->mb2br_xy[top_xy]);
}else{
int pred;
if(!(top_type & type_mask))
@@ -906,8 +902,8 @@ static void fill_decode_caches(H264Conte
for(i=0; i<2; i++){
if(IS_INTRA4x4(left_type[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*2 + 2*8*i]= mode[left_block[1+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[6-left_block[1+2*i]];
}else{
int pred;
if(!(left_type[i] & type_mask))
More information about the ffmpeg-cvslog
mailing list