mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
h264: add a parameter to the MB_MBAFF macro.
This way it does not look like a constant.
This commit is contained in:
parent
48d0fd2d62
commit
82313eaa34
@ -748,7 +748,7 @@ static void await_references(H264Context *h)
|
|||||||
int ref_field_picture = ref_pic->field_picture;
|
int ref_field_picture = ref_pic->field_picture;
|
||||||
int pic_height = 16 * h->mb_height >> ref_field_picture;
|
int pic_height = 16 * h->mb_height >> ref_field_picture;
|
||||||
|
|
||||||
row <<= MB_MBAFF;
|
row <<= MB_MBAFF(h);
|
||||||
nrefs[list]--;
|
nrefs[list]--;
|
||||||
|
|
||||||
if (!FIELD_PICTURE && ref_field_picture) { // frame referencing two fields
|
if (!FIELD_PICTURE && ref_field_picture) { // frame referencing two fields
|
||||||
@ -2050,7 +2050,7 @@ static av_always_inline void backup_mb_border(H264Context *h, uint8_t *src_y,
|
|||||||
|
|
||||||
if (!simple && FRAME_MBAFF) {
|
if (!simple && FRAME_MBAFF) {
|
||||||
if (h->mb_y & 1) {
|
if (h->mb_y & 1) {
|
||||||
if (!MB_MBAFF) {
|
if (!MB_MBAFF(h)) {
|
||||||
top_border = h->top_borders[0][h->mb_x];
|
top_border = h->top_borders[0][h->mb_x];
|
||||||
AV_COPY128(top_border, src_y + 15 * linesize);
|
AV_COPY128(top_border, src_y + 15 * linesize);
|
||||||
if (pixel_shift)
|
if (pixel_shift)
|
||||||
@ -2085,7 +2085,7 @@ static av_always_inline void backup_mb_border(H264Context *h, uint8_t *src_y,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (MB_MBAFF) {
|
} else if (MB_MBAFF(h)) {
|
||||||
top_idx = 0;
|
top_idx = 0;
|
||||||
} else
|
} else
|
||||||
return;
|
return;
|
||||||
@ -2143,10 +2143,10 @@ static av_always_inline void xchg_mb_border(H264Context *h, uint8_t *src_y,
|
|||||||
|
|
||||||
if (!simple && FRAME_MBAFF) {
|
if (!simple && FRAME_MBAFF) {
|
||||||
if (h->mb_y & 1) {
|
if (h->mb_y & 1) {
|
||||||
if (!MB_MBAFF)
|
if (!MB_MBAFF(h))
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
top_idx = MB_MBAFF ? 0 : 1;
|
top_idx = MB_MBAFF(h) ? 0 : 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3759,7 +3759,7 @@ static av_always_inline void fill_filter_caches_inter(H264Context *h,
|
|||||||
if (USES_LIST(top_type, list)) {
|
if (USES_LIST(top_type, list)) {
|
||||||
const int b_xy = h->mb2b_xy[top_xy] + 3 * b_stride;
|
const int b_xy = h->mb2b_xy[top_xy] + 3 * b_stride;
|
||||||
const int b8_xy = 4 * top_xy + 2;
|
const int b8_xy = 4 * top_xy + 2;
|
||||||
int (*ref2frm)[64] = h->ref2frm[h->slice_table[top_xy] & (MAX_SLICES - 1)][0] + (MB_MBAFF ? 20 : 2);
|
int (*ref2frm)[64] = h->ref2frm[h->slice_table[top_xy] & (MAX_SLICES - 1)][0] + (MB_MBAFF(h) ? 20 : 2);
|
||||||
AV_COPY128(mv_dst - 1 * 8, h->cur_pic.motion_val[list][b_xy + 0]);
|
AV_COPY128(mv_dst - 1 * 8, h->cur_pic.motion_val[list][b_xy + 0]);
|
||||||
ref_cache[0 - 1 * 8] =
|
ref_cache[0 - 1 * 8] =
|
||||||
ref_cache[1 - 1 * 8] = ref2frm[list][h->cur_pic.ref_index[list][b8_xy + 0]];
|
ref_cache[1 - 1 * 8] = ref2frm[list][h->cur_pic.ref_index[list][b8_xy + 0]];
|
||||||
@ -3774,7 +3774,7 @@ static av_always_inline void fill_filter_caches_inter(H264Context *h,
|
|||||||
if (USES_LIST(left_type[LTOP], list)) {
|
if (USES_LIST(left_type[LTOP], list)) {
|
||||||
const int b_xy = h->mb2b_xy[left_xy[LTOP]] + 3;
|
const int b_xy = h->mb2b_xy[left_xy[LTOP]] + 3;
|
||||||
const int b8_xy = 4 * left_xy[LTOP] + 1;
|
const int b8_xy = 4 * left_xy[LTOP] + 1;
|
||||||
int (*ref2frm)[64] = h->ref2frm[h->slice_table[left_xy[LTOP]] & (MAX_SLICES - 1)][0] + (MB_MBAFF ? 20 : 2);
|
int (*ref2frm)[64] = h->ref2frm[h->slice_table[left_xy[LTOP]] & (MAX_SLICES - 1)][0] + (MB_MBAFF(h) ? 20 : 2);
|
||||||
AV_COPY32(mv_dst - 1 + 0, h->cur_pic.motion_val[list][b_xy + b_stride * 0]);
|
AV_COPY32(mv_dst - 1 + 0, h->cur_pic.motion_val[list][b_xy + b_stride * 0]);
|
||||||
AV_COPY32(mv_dst - 1 + 8, h->cur_pic.motion_val[list][b_xy + b_stride * 1]);
|
AV_COPY32(mv_dst - 1 + 8, h->cur_pic.motion_val[list][b_xy + b_stride * 1]);
|
||||||
AV_COPY32(mv_dst - 1 + 16, h->cur_pic.motion_val[list][b_xy + b_stride * 2]);
|
AV_COPY32(mv_dst - 1 + 16, h->cur_pic.motion_val[list][b_xy + b_stride * 2]);
|
||||||
@ -3807,7 +3807,7 @@ static av_always_inline void fill_filter_caches_inter(H264Context *h,
|
|||||||
|
|
||||||
{
|
{
|
||||||
int8_t *ref = &h->cur_pic.ref_index[list][4 * mb_xy];
|
int8_t *ref = &h->cur_pic.ref_index[list][4 * mb_xy];
|
||||||
int (*ref2frm)[64] = h->ref2frm[h->slice_num & (MAX_SLICES - 1)][0] + (MB_MBAFF ? 20 : 2);
|
int (*ref2frm)[64] = h->ref2frm[h->slice_num & (MAX_SLICES - 1)][0] + (MB_MBAFF(h) ? 20 : 2);
|
||||||
uint32_t ref01 = (pack16to32(ref2frm[list][ref[0]], ref2frm[list][ref[1]]) & 0x00FF00FF) * 0x0101;
|
uint32_t ref01 = (pack16to32(ref2frm[list][ref[0]], ref2frm[list][ref[1]]) & 0x00FF00FF) * 0x0101;
|
||||||
uint32_t ref23 = (pack16to32(ref2frm[list][ref[2]], ref2frm[list][ref[3]]) & 0x00FF00FF) * 0x0101;
|
uint32_t ref23 = (pack16to32(ref2frm[list][ref[2]], ref2frm[list][ref[3]]) & 0x00FF00FF) * 0x0101;
|
||||||
AV_WN32A(&ref_cache[0 * 8], ref01);
|
AV_WN32A(&ref_cache[0 * 8], ref01);
|
||||||
|
@ -59,7 +59,7 @@
|
|||||||
#define MAX_SLICES 16
|
#define MAX_SLICES 16
|
||||||
|
|
||||||
#ifdef ALLOW_INTERLACE
|
#ifdef ALLOW_INTERLACE
|
||||||
#define MB_MBAFF h->mb_mbaff
|
#define MB_MBAFF(h) h->mb_mbaff
|
||||||
#define MB_FIELD h->mb_field_decoding_flag
|
#define MB_FIELD h->mb_field_decoding_flag
|
||||||
#define FRAME_MBAFF h->mb_aff_frame
|
#define FRAME_MBAFF h->mb_aff_frame
|
||||||
#define FIELD_PICTURE (h->picture_structure != PICT_FRAME)
|
#define FIELD_PICTURE (h->picture_structure != PICT_FRAME)
|
||||||
@ -68,7 +68,7 @@
|
|||||||
#define LBOT 1
|
#define LBOT 1
|
||||||
#define LEFT(i) (i)
|
#define LEFT(i) (i)
|
||||||
#else
|
#else
|
||||||
#define MB_MBAFF 0
|
#define MB_MBAFF(h) 0
|
||||||
#define MB_FIELD 0
|
#define MB_FIELD 0
|
||||||
#define FRAME_MBAFF 0
|
#define FRAME_MBAFF 0
|
||||||
#define FIELD_PICTURE 0
|
#define FIELD_PICTURE 0
|
||||||
|
@ -2088,7 +2088,7 @@ decode_intra_mb:
|
|||||||
for( i = 0; i < 4; i++ ) {
|
for( i = 0; i < 4; i++ ) {
|
||||||
if(IS_DIRECT(h->sub_mb_type[i])) continue;
|
if(IS_DIRECT(h->sub_mb_type[i])) continue;
|
||||||
if(IS_DIR(h->sub_mb_type[i], 0, list)){
|
if(IS_DIR(h->sub_mb_type[i], 0, list)){
|
||||||
int rc = h->ref_count[list] << MB_MBAFF;
|
int rc = h->ref_count[list] << MB_MBAFF(h);
|
||||||
if (rc > 1) {
|
if (rc > 1) {
|
||||||
ref[list][i] = decode_cabac_mb_ref( h, list, 4*i );
|
ref[list][i] = decode_cabac_mb_ref( h, list, 4*i );
|
||||||
if (ref[list][i] >= (unsigned) rc) {
|
if (ref[list][i] >= (unsigned) rc) {
|
||||||
@ -2174,7 +2174,7 @@ decode_intra_mb:
|
|||||||
if(IS_16X16(mb_type)){
|
if(IS_16X16(mb_type)){
|
||||||
for(list=0; list<h->list_count; list++){
|
for(list=0; list<h->list_count; list++){
|
||||||
if(IS_DIR(mb_type, 0, list)){
|
if(IS_DIR(mb_type, 0, list)){
|
||||||
int ref, rc = h->ref_count[list] << MB_MBAFF;
|
int ref, rc = h->ref_count[list] << MB_MBAFF(h);
|
||||||
if (rc > 1) {
|
if (rc > 1) {
|
||||||
ref= decode_cabac_mb_ref(h, list, 0);
|
ref= decode_cabac_mb_ref(h, list, 0);
|
||||||
if (ref >= (unsigned) rc) {
|
if (ref >= (unsigned) rc) {
|
||||||
@ -2202,7 +2202,7 @@ decode_intra_mb:
|
|||||||
for(list=0; list<h->list_count; list++){
|
for(list=0; list<h->list_count; list++){
|
||||||
for(i=0; i<2; i++){
|
for(i=0; i<2; i++){
|
||||||
if(IS_DIR(mb_type, i, list)){
|
if(IS_DIR(mb_type, i, list)){
|
||||||
int ref, rc = h->ref_count[list] << MB_MBAFF;
|
int ref, rc = h->ref_count[list] << MB_MBAFF(h);
|
||||||
if (rc > 1) {
|
if (rc > 1) {
|
||||||
ref= decode_cabac_mb_ref( h, list, 8*i );
|
ref= decode_cabac_mb_ref( h, list, 8*i );
|
||||||
if (ref >= (unsigned) rc) {
|
if (ref >= (unsigned) rc) {
|
||||||
@ -2237,7 +2237,7 @@ decode_intra_mb:
|
|||||||
for(list=0; list<h->list_count; list++){
|
for(list=0; list<h->list_count; list++){
|
||||||
for(i=0; i<2; i++){
|
for(i=0; i<2; i++){
|
||||||
if(IS_DIR(mb_type, i, list)){ //FIXME optimize
|
if(IS_DIR(mb_type, i, list)){ //FIXME optimize
|
||||||
int ref, rc = h->ref_count[list] << MB_MBAFF;
|
int ref, rc = h->ref_count[list] << MB_MBAFF(h);
|
||||||
if (rc > 1) {
|
if (rc > 1) {
|
||||||
ref= decode_cabac_mb_ref( h, list, 4*i );
|
ref= decode_cabac_mb_ref( h, list, 4*i );
|
||||||
if (ref >= (unsigned) rc) {
|
if (ref >= (unsigned) rc) {
|
||||||
|
@ -856,7 +856,7 @@ decode_intra_mb:
|
|||||||
}
|
}
|
||||||
|
|
||||||
for(list=0; list<h->list_count; list++){
|
for(list=0; list<h->list_count; list++){
|
||||||
int ref_count = IS_REF0(mb_type) ? 1 : h->ref_count[list] << MB_MBAFF;
|
int ref_count = IS_REF0(mb_type) ? 1 : h->ref_count[list] << MB_MBAFF(h);
|
||||||
for(i=0; i<4; i++){
|
for(i=0; i<4; i++){
|
||||||
if(IS_DIRECT(h->sub_mb_type[i])) continue;
|
if(IS_DIRECT(h->sub_mb_type[i])) continue;
|
||||||
if(IS_DIR(h->sub_mb_type[i], 0, list)){
|
if(IS_DIR(h->sub_mb_type[i], 0, list)){
|
||||||
@ -936,7 +936,7 @@ decode_intra_mb:
|
|||||||
for(list=0; list<h->list_count; list++){
|
for(list=0; list<h->list_count; list++){
|
||||||
unsigned int val;
|
unsigned int val;
|
||||||
if(IS_DIR(mb_type, 0, list)){
|
if(IS_DIR(mb_type, 0, list)){
|
||||||
int rc = h->ref_count[list] << MB_MBAFF;
|
int rc = h->ref_count[list] << MB_MBAFF(h);
|
||||||
if (rc == 1) {
|
if (rc == 1) {
|
||||||
val= 0;
|
val= 0;
|
||||||
} else if (rc == 2) {
|
} else if (rc == 2) {
|
||||||
@ -967,7 +967,7 @@ decode_intra_mb:
|
|||||||
for(i=0; i<2; i++){
|
for(i=0; i<2; i++){
|
||||||
unsigned int val;
|
unsigned int val;
|
||||||
if(IS_DIR(mb_type, i, list)){
|
if(IS_DIR(mb_type, i, list)){
|
||||||
int rc = h->ref_count[list] << MB_MBAFF;
|
int rc = h->ref_count[list] << MB_MBAFF(h);
|
||||||
if (rc == 1) {
|
if (rc == 1) {
|
||||||
val= 0;
|
val= 0;
|
||||||
} else if (rc == 2) {
|
} else if (rc == 2) {
|
||||||
@ -1005,7 +1005,7 @@ decode_intra_mb:
|
|||||||
for(i=0; i<2; i++){
|
for(i=0; i<2; i++){
|
||||||
unsigned int val;
|
unsigned int val;
|
||||||
if(IS_DIR(mb_type, i, list)){ //FIXME optimize
|
if(IS_DIR(mb_type, i, list)){ //FIXME optimize
|
||||||
int rc = h->ref_count[list] << MB_MBAFF;
|
int rc = h->ref_count[list] << MB_MBAFF(h);
|
||||||
if (rc == 1) {
|
if (rc == 1) {
|
||||||
val= 0;
|
val= 0;
|
||||||
} else if (rc == 2) {
|
} else if (rc == 2) {
|
||||||
|
Loading…
Reference in New Issue
Block a user