From be69f0a800903b7573b18d9287d18b2f368b8b11 Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Sat, 17 Jan 2015 22:28:46 +0100 Subject: h264: move col_{parity,fieldoff} into the per-slice context --- libavcodec/h264_direct.c | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) (limited to 'libavcodec/h264_direct.c') diff --git a/libavcodec/h264_direct.c b/libavcodec/h264_direct.c index cd30dd33f2..989c64a6b7 100644 --- a/libavcodec/h264_direct.c +++ b/libavcodec/h264_direct.c @@ -126,18 +126,18 @@ void ff_h264_direct_ref_list_init(H264Context *const h, H264SliceContext *sl) cur->mbaff = FRAME_MBAFF(h); - h->col_fieldoff = 0; + sl->col_fieldoff = 0; if (h->picture_structure == PICT_FRAME) { int cur_poc = h->cur_pic_ptr->poc; int *col_poc = h->ref_list[1]->field_poc; - h->col_parity = (FFABS(col_poc[0] - cur_poc) >= - FFABS(col_poc[1] - cur_poc)); + sl->col_parity = (FFABS(col_poc[0] - cur_poc) >= + FFABS(col_poc[1] - cur_poc)); ref1sidx = - sidx = h->col_parity; + sidx = sl->col_parity; // FL -> FL & differ parity } else if (!(h->picture_structure & h->ref_list[1][0].reference) && !h->ref_list[1][0].mbaff) { - h->col_fieldoff = 2 * h->ref_list[1][0].reference - 3; + sl->col_fieldoff = 2 * h->ref_list[1][0].reference - 3; } if (sl->slice_type_nos != AV_PICTURE_TYPE_B || sl->direct_spatial_mv_pred) @@ -259,13 +259,13 @@ static void pred_spatial_direct_motion(H264Context *const h, H264SliceContext *s if (IS_INTERLACED(h->ref_list[1][0].mb_type[mb_xy])) { // AFL/AFR/FR/FL -> AFL/FL if (!IS_INTERLACED(*mb_type)) { // AFR/FR -> AFL/FL - mb_y = (h->mb_y & ~1) + h->col_parity; + mb_y = (h->mb_y & ~1) + sl->col_parity; mb_xy = h->mb_x + - ((h->mb_y & ~1) + h->col_parity) * h->mb_stride; + ((h->mb_y & ~1) + sl->col_parity) * h->mb_stride; b8_stride = 0; } else { - mb_y += h->col_fieldoff; - mb_xy += h->mb_stride * h->col_fieldoff; // non-zero for FL -> FL & differ parity + mb_y += sl->col_fieldoff; + mb_xy += h->mb_stride * sl->col_fieldoff; // non-zero for FL -> FL & differ parity } goto single_col; } else { // AFL/AFR/FR/FL -> AFR/FR @@ -477,13 +477,13 @@ static void pred_temp_direct_motion(H264Context *const h, H264SliceContext *sl, if (IS_INTERLACED(h->ref_list[1][0].mb_type[mb_xy])) { // AFL/AFR/FR/FL -> AFL/FL if (!IS_INTERLACED(*mb_type)) { // AFR/FR -> AFL/FL - mb_y = (h->mb_y & ~1) + h->col_parity; + mb_y = (h->mb_y & ~1) + sl->col_parity; mb_xy = h->mb_x + - ((h->mb_y & ~1) + h->col_parity) * h->mb_stride; + ((h->mb_y & ~1) + sl->col_parity) * h->mb_stride; b8_stride = 0; } else { - mb_y += h->col_fieldoff; - mb_xy += h->mb_stride * h->col_fieldoff; // non-zero for FL -> FL & differ parity + mb_y += sl->col_fieldoff; + mb_xy += h->mb_stride * sl->col_fieldoff; // non-zero for FL -> FL & differ parity } goto single_col; } else { // AFL/AFR/FR/FL -> AFR/FR -- cgit v1.2.3