This way it does not look like a constant.tags/n2.0
| @@ -632,7 +632,7 @@ static inline void get_lowest_part_y(H264Context *h, int refs[2][48], int n, | |||
| { | |||
| int my; | |||
| y_offset += 16 * (h->mb_y >> MB_FIELD); | |||
| y_offset += 16 * (h->mb_y >> MB_FIELD(h)); | |||
| if (list0) { | |||
| int ref_n = h->ref_cache[0][scan8[n]]; | |||
| @@ -799,7 +799,7 @@ static av_always_inline void mc_dir_part(H264Context *h, Picture *pic, | |||
| const int full_mx = mx >> 2; | |||
| const int full_my = my >> 2; | |||
| const int pic_width = 16 * h->mb_width; | |||
| const int pic_height = 16 * h->mb_height >> MB_FIELD; | |||
| const int pic_height = 16 * h->mb_height >> MB_FIELD(h); | |||
| int ysh; | |||
| if (mx & 7) | |||
| @@ -859,7 +859,7 @@ static av_always_inline void mc_dir_part(H264Context *h, Picture *pic, | |||
| } | |||
| ysh = 3 - (chroma_idc == 2 /* yuv422 */); | |||
| if (chroma_idc == 1 /* yuv420 */ && MB_FIELD) { | |||
| if (chroma_idc == 1 /* yuv420 */ && MB_FIELD(h)) { | |||
| // chroma offset when predicting from a field of opposite parity | |||
| my += 2 * ((h->mb_y & 1) - (pic->reference - 1)); | |||
| emu |= (my >> 3) < 0 || (my >> 3) + 8 >= (pic_height >> 1); | |||
| @@ -917,7 +917,7 @@ static av_always_inline void mc_part_std(H264Context *h, int n, int square, | |||
| dest_cr += (x_offset << pixel_shift) + y_offset * h->mb_uvlinesize; | |||
| } | |||
| x_offset += 8 * h->mb_x; | |||
| y_offset += 8 * (h->mb_y >> MB_FIELD); | |||
| y_offset += 8 * (h->mb_y >> MB_FIELD(h)); | |||
| if (list0) { | |||
| Picture *ref = &h->ref_list[0][h->ref_cache[0][scan8[n]]]; | |||
| @@ -970,7 +970,7 @@ static av_always_inline void mc_part_weighted(H264Context *h, int n, int square, | |||
| dest_cr += (x_offset << pixel_shift) + y_offset * h->mb_uvlinesize; | |||
| } | |||
| x_offset += 8 * h->mb_x; | |||
| y_offset += 8 * (h->mb_y >> MB_FIELD); | |||
| y_offset += 8 * (h->mb_y >> MB_FIELD(h)); | |||
| if (list0 && list1) { | |||
| /* don't optimize for luma-only case, since B-frames usually | |||
| @@ -2155,7 +2155,7 @@ static av_always_inline void xchg_mb_border(H264Context *h, uint8_t *src_y, | |||
| deblock_top = h->top_type; | |||
| } else { | |||
| deblock_topleft = (h->mb_x > 0); | |||
| deblock_top = (h->mb_y > !!MB_FIELD); | |||
| deblock_top = (h->mb_y > !!MB_FIELD(h)); | |||
| } | |||
| src_y -= linesize + 1 + pixel_shift; | |||
| @@ -3837,7 +3837,7 @@ static int fill_filter_caches(H264Context *h, int mb_type) | |||
| uint8_t *nnz; | |||
| uint8_t *nnz_cache; | |||
| top_xy = mb_xy - (h->mb_stride << MB_FIELD); | |||
| top_xy = mb_xy - (h->mb_stride << MB_FIELD(h)); | |||
| /* Wow, what a mess, why didn't they simplify the interlacing & intra | |||
| * stuff, I can't imagine that these complex rules are worth it. */ | |||
| @@ -4008,7 +4008,7 @@ static void loop_filter(H264Context *h, int start_x, int end_x) | |||
| mb_y * h->uvlinesize * block_h; | |||
| // FIXME simplify above | |||
| if (MB_FIELD) { | |||
| if (MB_FIELD(h)) { | |||
| linesize = h->mb_linesize = h->linesize * 2; | |||
| uvlinesize = h->mb_uvlinesize = h->uvlinesize * 2; | |||
| if (mb_y & 1) { // FIXME move out of this function? | |||
| @@ -60,7 +60,7 @@ | |||
| #ifdef ALLOW_INTERLACE | |||
| #define MB_MBAFF(h) h->mb_mbaff | |||
| #define MB_FIELD h->mb_field_decoding_flag | |||
| #define MB_FIELD(h) h->mb_field_decoding_flag | |||
| #define FRAME_MBAFF h->mb_aff_frame | |||
| #define FIELD_PICTURE (h->picture_structure != PICT_FRAME) | |||
| #define LEFT_MBS 2 | |||
| @@ -69,7 +69,7 @@ | |||
| #define LEFT(i) (i) | |||
| #else | |||
| #define MB_MBAFF(h) 0 | |||
| #define MB_FIELD 0 | |||
| #define MB_FIELD(h) 0 | |||
| #define FRAME_MBAFF 0 | |||
| #define FIELD_PICTURE 0 | |||
| #undef IS_INTERLACED | |||
| @@ -1328,9 +1328,9 @@ static int decode_cabac_mb_skip( H264Context *h, int mb_x, int mb_y ) { | |||
| mba_xy = mb_xy - 1; | |||
| if( (mb_y&1) | |||
| && h->slice_table[mba_xy] == h->slice_num | |||
| && MB_FIELD == !!IS_INTERLACED( h->cur_pic.mb_type[mba_xy] ) ) | |||
| && MB_FIELD(h) == !!IS_INTERLACED( h->cur_pic.mb_type[mba_xy] ) ) | |||
| mba_xy += h->mb_stride; | |||
| if( MB_FIELD ){ | |||
| if (MB_FIELD(h)) { | |||
| mbb_xy = mb_xy - h->mb_stride; | |||
| if( !(mb_y&1) | |||
| && h->slice_table[mbb_xy] == h->slice_num | |||
| @@ -1625,9 +1625,9 @@ decode_cabac_residual_internal(H264Context *h, int16_t *block, | |||
| #endif | |||
| significant_coeff_ctx_base = h->cabac_state | |||
| + significant_coeff_flag_offset[MB_FIELD][cat]; | |||
| + significant_coeff_flag_offset[MB_FIELD(h)][cat]; | |||
| last_coeff_ctx_base = h->cabac_state | |||
| + last_coeff_flag_offset[MB_FIELD][cat]; | |||
| + last_coeff_flag_offset[MB_FIELD(h)][cat]; | |||
| abs_level_m1_ctx_base = h->cabac_state | |||
| + coeff_abs_level_m1_offset[cat]; | |||
| @@ -1647,7 +1647,7 @@ decode_cabac_residual_internal(H264Context *h, int16_t *block, | |||
| if( last == max_coeff -1 ) {\ | |||
| index[coeff_count++] = last;\ | |||
| } | |||
| const uint8_t *sig_off = significant_coeff_flag_offset_8x8[MB_FIELD]; | |||
| const uint8_t *sig_off = significant_coeff_flag_offset_8x8[MB_FIELD(h)]; | |||
| #ifdef decode_significance | |||
| coeff_count = decode_significance_8x8(CC, significant_coeff_ctx_base, index, | |||
| last_coeff_ctx_base, sig_off); | |||
| @@ -1917,7 +1917,7 @@ int ff_h264_decode_mb_cabac(H264Context *h) { | |||
| h->prev_mb_skipped = 0; | |||
| fill_decode_neighbors(h, -(MB_FIELD)); | |||
| fill_decode_neighbors(h, -(MB_FIELD(h))); | |||
| if( h->slice_type_nos == AV_PICTURE_TYPE_B ) { | |||
| int ctx = 0; | |||
| @@ -1981,7 +1981,7 @@ decode_intra_mb: | |||
| h->intra16x16_pred_mode= i_mb_type_info[mb_type].pred_mode; | |||
| mb_type= i_mb_type_info[mb_type].type; | |||
| } | |||
| if(MB_FIELD) | |||
| if(MB_FIELD(h)) | |||
| mb_type |= MB_TYPE_INTERLACED; | |||
| h->slice_table[ mb_xy ]= h->slice_num; | |||
| @@ -755,7 +755,7 @@ decode_intra_mb: | |||
| mb_type= i_mb_type_info[mb_type].type; | |||
| } | |||
| if(MB_FIELD) | |||
| if(MB_FIELD(h)) | |||
| mb_type |= MB_TYPE_INTERLACED; | |||
| h->slice_table[ mb_xy ]= h->slice_num; | |||
| @@ -740,9 +740,9 @@ void ff_h264_filter_mb( H264Context *h, int mb_x, int mb_y, uint8_t *img_y, uint | |||
| {3+4*0, 3+4*1, 3+4*2, 3+4*3, 3+4*0, 3+4*1, 3+4*2, 3+4*3}, | |||
| } | |||
| }; | |||
| const uint8_t *off= offset[MB_FIELD][mb_y&1]; | |||
| const uint8_t *off= offset[MB_FIELD(h)][mb_y&1]; | |||
| for( i = 0; i < 8; i++ ) { | |||
| int j= MB_FIELD ? i>>2 : i&1; | |||
| int j= MB_FIELD(h) ? i>>2 : i&1; | |||
| int mbn_xy = h->left_mb_xy[LEFT(j)]; | |||
| int mbn_type= h->left_type[LEFT(j)]; | |||
| @@ -751,7 +751,7 @@ void ff_h264_filter_mb( H264Context *h, int mb_x, int mb_y, uint8_t *img_y, uint | |||
| else{ | |||
| bS[i] = 1 + !!(h->non_zero_count_cache[12+8*(i>>1)] | | |||
| ((!h->pps.cabac && IS_8x8DCT(mbn_type)) ? | |||
| (h->cbp_table[mbn_xy] & (((MB_FIELD ? (i&2) : (mb_y&1)) ? 8 : 2) << 12)) | |||
| (h->cbp_table[mbn_xy] & (((MB_FIELD(h) ? (i&2) : (mb_y&1)) ? 8 : 2) << 12)) | |||
| : | |||
| h->non_zero_count[mbn_xy][ off[i] ])); | |||
| } | |||
| @@ -775,7 +775,7 @@ void ff_h264_filter_mb( H264Context *h, int mb_x, int mb_y, uint8_t *img_y, uint | |||
| /* Filter edge */ | |||
| tprintf(h->avctx, "filter mb:%d/%d MBAFF, QPy:%d/%d, QPb:%d/%d QPr:%d/%d ls:%d uvls:%d", mb_x, mb_y, qp[0], qp[1], bqp[0], bqp[1], rqp[0], rqp[1], linesize, uvlinesize); | |||
| { int i; for (i = 0; i < 8; i++) tprintf(h->avctx, " bS[%d]:%d", i, bS[i]); tprintf(h->avctx, "\n"); } | |||
| if(MB_FIELD){ | |||
| if (MB_FIELD(h)) { | |||
| filter_mb_mbaff_edgev ( h, img_y , linesize, bS , 1, qp [0], a, b, 1 ); | |||
| filter_mb_mbaff_edgev ( h, img_y + 8* linesize, linesize, bS+4, 1, qp [1], a, b, 1 ); | |||
| if (chroma){ | |||
| @@ -64,7 +64,7 @@ static av_noinline void FUNC(hl_decode_mb)(H264Context *h) | |||
| h->list_counts[mb_xy] = h->list_count; | |||
| if (!SIMPLE && MB_FIELD) { | |||
| if (!SIMPLE && MB_FIELD(h)) { | |||
| linesize = h->mb_linesize = h->linesize * 2; | |||
| uvlinesize = h->mb_uvlinesize = h->uvlinesize * 2; | |||
| block_offset = &h->block_offset[48]; | |||
| @@ -296,7 +296,7 @@ static av_noinline void FUNC(hl_decode_mb_444)(H264Context *h) | |||
| h->list_counts[mb_xy] = h->list_count; | |||
| if (!SIMPLE && MB_FIELD) { | |||
| if (!SIMPLE && MB_FIELD(h)) { | |||
| linesize = h->mb_linesize = h->mb_uvlinesize = h->linesize * 2; | |||
| block_offset = &h->block_offset[48]; | |||
| if (mb_y & 1) // FIXME move out of this function? | |||
| @@ -61,11 +61,11 @@ static av_always_inline int fetch_diagonal_mv(H264Context *h, const int16_t **C, | |||
| AV_ZERO32(h->mv_cache[list][scan8[0] - 2]); | |||
| *C = h->mv_cache[list][scan8[0] - 2]; | |||
| if (!MB_FIELD && IS_INTERLACED(h->left_type[0])) { | |||
| if (!MB_FIELD(h) && IS_INTERLACED(h->left_type[0])) { | |||
| SET_DIAG_MV(* 2, >> 1, h->left_mb_xy[0] + h->mb_stride, | |||
| (h->mb_y & 1) * 2 + (i >> 5)); | |||
| } | |||
| if (MB_FIELD && !IS_INTERLACED(h->left_type[0])) { | |||
| if (MB_FIELD(h) && !IS_INTERLACED(h->left_type[0])) { | |||
| // left shift will turn LIST_NOT_USED into PART_NOT_AVAILABLE, but that's OK. | |||
| SET_DIAG_MV(/ 2, << 1, h->left_mb_xy[i >= 36], ((i >> 2)) & 3); | |||
| } | |||
| @@ -232,7 +232,7 @@ static av_always_inline void pred_8x16_motion(H264Context *const h, | |||
| #define FIX_MV_MBAFF(type, refn, mvn, idx) \ | |||
| if (FRAME_MBAFF) { \ | |||
| if (MB_FIELD) { \ | |||
| if (MB_FIELD(h)) { \ | |||
| if (!IS_INTERLACED(type)) { \ | |||
| refn <<= 1; \ | |||
| AV_COPY32(mvbuf[idx], mvn); \ | |||
| @@ -360,7 +360,7 @@ static void fill_decode_neighbors(H264Context *h, int mb_type) | |||
| h->topleft_partition = -1; | |||
| top_xy = mb_xy - (h->mb_stride << MB_FIELD); | |||
| top_xy = mb_xy - (h->mb_stride << MB_FIELD(h)); | |||
| /* Wow, what a mess, why didn't they simplify the interlacing & intra | |||
| * stuff, I can't imagine that these complex rules are worth it. */ | |||
| @@ -761,7 +761,7 @@ static void fill_decode_caches(H264Context *h, int mb_type) | |||
| MAP_F2F(scan8[0] - 1 + 3 * 8, left_type[LBOT]) | |||
| if (FRAME_MBAFF) { | |||
| if (MB_FIELD) { | |||
| if (MB_FIELD(h)) { | |||
| #define MAP_F2F(idx, mb_type) \ | |||
| if (!IS_INTERLACED(mb_type) && h->ref_cache[list][idx] >= 0) { \ | |||
| @@ -801,7 +801,7 @@ static void av_unused decode_mb_skip(H264Context *h) | |||
| memset(h->non_zero_count[mb_xy], 0, 48); | |||
| if (MB_FIELD) | |||
| if (MB_FIELD(h)) | |||
| mb_type |= MB_TYPE_INTERLACED; | |||
| if (h->slice_type_nos == AV_PICTURE_TYPE_B) { | |||