From 7747726667c86877feed30c9e18460cb8e63f551 Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Sat, 17 Jan 2015 22:28:46 +0100 Subject: [PATCH] h264: move map_col_to_list0[_field] into the per-slice context --- libavcodec/h264.h | 5 ++--- libavcodec/h264_direct.c | 12 ++++++------ 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/libavcodec/h264.h b/libavcodec/h264.h index 71f531ec84..5221e2d64c 100644 --- a/libavcodec/h264.h +++ b/libavcodec/h264.h @@ -361,6 +361,8 @@ typedef struct H264SliceContext { int dist_scale_factor[32]; int dist_scale_factor_field[2][32]; + int map_col_to_list0[2][16 + 32]; + int map_col_to_list0_field[2][2][16 + 32]; /** * non zero coeff count cache. @@ -447,9 +449,6 @@ typedef struct H264Context { int picture_structure; int first_field; - int map_col_to_list0[2][16 + 32]; - int map_col_to_list0_field[2][2][16 + 32]; - /** * num_ref_idx_l0/1_active_minus1 + 1 */ diff --git a/libavcodec/h264_direct.c b/libavcodec/h264_direct.c index 13f710b74c..08aacd3bb9 100644 --- a/libavcodec/h264_direct.c +++ b/libavcodec/h264_direct.c @@ -145,10 +145,10 @@ void ff_h264_direct_ref_list_init(H264Context *const h, H264SliceContext *sl) return; for (list = 0; list < 2; list++) { - fill_colmap(h, h->map_col_to_list0, list, sidx, ref1sidx, 0); + fill_colmap(h, sl->map_col_to_list0, list, sidx, ref1sidx, 0); if (FRAME_MBAFF(h)) for (field = 0; field < 2; field++) - fill_colmap(h, h->map_col_to_list0_field[field], list, field, + fill_colmap(h, sl->map_col_to_list0_field[field], list, field, field, 1); } } @@ -554,14 +554,14 @@ single_col: } { - const int *map_col_to_list0[2] = { h->map_col_to_list0[0], - h->map_col_to_list0[1] }; + const int *map_col_to_list0[2] = { sl->map_col_to_list0[0], + sl->map_col_to_list0[1] }; const int *dist_scale_factor = sl->dist_scale_factor; int ref_offset; if (FRAME_MBAFF(h) && IS_INTERLACED(*mb_type)) { - map_col_to_list0[0] = h->map_col_to_list0_field[h->mb_y & 1][0]; - map_col_to_list0[1] = h->map_col_to_list0_field[h->mb_y & 1][1]; + map_col_to_list0[0] = sl->map_col_to_list0_field[h->mb_y & 1][0]; + map_col_to_list0[1] = sl->map_col_to_list0_field[h->mb_y & 1][1]; dist_scale_factor = sl->dist_scale_factor_field[h->mb_y & 1]; } ref_offset = (h->ref_list[1][0].mbaff << 4) & (mb_type_col[0] >> 3);