Mercurial > libavcodec.hg
comparison h264.c @ 7918:84b37de61d98 libavcodec
Field -> MBAFF direct mode can use data from fields that are not
in the reference list. Follow the spec and no comment on the sanity of this
design ...
Fixes HPCAMAPALQ_BRCM_B
author | michael |
---|---|
date | Wed, 24 Sep 2008 23:24:24 +0000 |
parents | 8eb69709a934 |
children | 17b22bf9fac6 |
comparison
equal
deleted
inserted
replaced
7917:518c86ed8008 | 7918:84b37de61d98 |
---|---|
1006 int cur_poc = s->current_picture_ptr->poc; | 1006 int cur_poc = s->current_picture_ptr->poc; |
1007 int *col_poc = h->ref_list[1]->field_poc; | 1007 int *col_poc = h->ref_list[1]->field_poc; |
1008 int col_parity = FFABS(col_poc[0] - cur_poc) >= FFABS(col_poc[1] - cur_poc); | 1008 int col_parity = FFABS(col_poc[0] - cur_poc) >= FFABS(col_poc[1] - cur_poc); |
1009 mb_xy= s->mb_x + ((s->mb_y&~1) + col_parity)*s->mb_stride; | 1009 mb_xy= s->mb_x + ((s->mb_y&~1) + col_parity)*s->mb_stride; |
1010 b8_stride = 0; | 1010 b8_stride = 0; |
1011 }else if(!(s->picture_structure & h->ref_list[1][0].reference)){// FL -> FL & differ parity | 1011 }else if(!(s->picture_structure & h->ref_list[1][0].reference) && !h->ref_list[1][0].mbaff){// FL -> FL & differ parity |
1012 int fieldoff= 2*(h->ref_list[1][0].reference)-3; | 1012 int fieldoff= 2*(h->ref_list[1][0].reference)-3; |
1013 mb_xy += s->mb_stride*fieldoff; | 1013 mb_xy += s->mb_stride*fieldoff; |
1014 } | 1014 } |
1015 goto single_col; | 1015 goto single_col; |
1016 }else{ // AFL/AFR/FR/FL -> AFR/FR | 1016 }else{ // AFL/AFR/FR/FL -> AFR/FR |