[Ffmpeg-devel] A Bug in libavcodec\h264.c ?
Chengji Zhao
czhao
Mon May 9 07:37:56 CEST 2005
Hi, Michael Niedermayer and all,
I think I found one typing mistake/ bug in function fill_caches(),
if(IS_INTER(left_type[0])){
const int b_xy= h->mb2b_xy[left_xy[0]] + 3;
const int b8_xy= h->mb2b8_xy[left_xy[0]] + 1;
*(uint32_t*)h->mv_cache[list][scan8[0] - 1 + 0*8]=
*(uint32_t*)s->current_picture.motion_val[list][b_xy +
h->b_stride*left_block[0]];
*(uint32_t*)h->mv_cache[list][scan8[0] - 1 + 1*8]=
*(uint32_t*)s->current_picture.motion_val[list][b_xy +
h->b_stride*left_block[1]];
h->ref_cache[list][scan8[0] - 1 + 0*8]=
h->ref_cache[list][scan8[0] - 1 + 1*8]=
s->current_picture.ref_index[list][b8_xy + h->b8_stride*(left_block[0]>>1)];
}else{
*(uint32_t*)h->mv_cache [list][scan8[0] - 1 + 0*8]=
*(uint32_t*)h->mv_cache [list][scan8[0] - 1 + 1*8]= 0;
h->ref_cache[list][scan8[0] - 1 + 0*8]=
h->ref_cache[list][scan8[0] - 1 + 1*8]= left_type[0] ?
LIST_NOT_USED : PART_NOT_AVAILABLE;
}
if(IS_INTER(left_type[1])){
const int b_xy= h->mb2b_xy[left_xy[1]] + 3;
const int b8_xy= h->mb2b8_xy[left_xy[1]] + 1;
*(uint32_t*)h->mv_cache[list][scan8[0] - 1 + 2*8]=
*(uint32_t*)s->current_picture.motion_val[list][b_xy +
h->b_stride*left_block[2]];
*(uint32_t*)h->mv_cache[list][scan8[0] - 1 + 3*8]=
*(uint32_t*)s->current_picture.motion_val[list][b_xy +
h->b_stride*left_block[3]];
h->ref_cache[list][scan8[0] - 1 + 2*8]=
h->ref_cache[list][scan8[0] - 1 + 3*8]=
s->current_picture.ref_index[list][b8_xy + h->b8_stride*(left_block[2]>>1)];
}else{
*(uint32_t*)h->mv_cache [list][scan8[0] - 1 + 2*8]=
*(uint32_t*)h->mv_cache [list][scan8[0] - 1 + 3*8]= 0;
h->ref_cache[list][scan8[0] - 1 + 2*8]=
h->ref_cache[list][scan8[0] - 1 + 3*8]= left_type[0] ?
LIST_NOT_USED : PART_NOT_AVAILABLE;
}
I think the last line should be changed to
h->ref_cache[list][scan8[0] - 1 + 3*8]= left_type[1] ? LIST_NOT_USED :
PART_NOT_AVAILABLE;
Am I correct?
Chengji
More information about the ffmpeg-devel
mailing list