aboutsummaryrefslogtreecommitdiffstats
path: root/libavcodec/h264_direct.c
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2015-03-21 14:39:28 +0100
committerMichael Niedermayer <michaelni@gmx.at>2015-03-21 14:39:32 +0100
commit20477a4ecbeeb4abe4fe896731312836955435f0 (patch)
tree031cd416941d42365ffa39c8ac1419873092bc11 /libavcodec/h264_direct.c
parenta8ac4c9b06b9f3ee73ef377a3e4392957c72c2b3 (diff)
parentbe69f0a800903b7573b18d9287d18b2f368b8b11 (diff)
downloadffmpeg-20477a4ecbeeb4abe4fe896731312836955435f0.tar.gz
Merge commit 'be69f0a800903b7573b18d9287d18b2f368b8b11'
* commit 'be69f0a800903b7573b18d9287d18b2f368b8b11': h264: move col_{parity,fieldoff} into the per-slice context Merged-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavcodec/h264_direct.c')
-rw-r--r--libavcodec/h264_direct.c26
1 files changed, 13 insertions, 13 deletions
diff --git a/libavcodec/h264_direct.c b/libavcodec/h264_direct.c
index 12df16d838..54d8ee046f 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)
@@ -260,13 +260,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
@@ -478,13 +478,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