|
|
|
@@ -47,7 +47,8 @@ static int get_scale_factor(H264Context *const h, int poc, int poc1, int i) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
void ff_h264_direct_dist_scale_factor(H264Context *const h) |
|
|
|
void ff_h264_direct_dist_scale_factor(H264Context *const h, |
|
|
|
H264SliceContext *sl) |
|
|
|
{ |
|
|
|
const int poc = FIELD_PICTURE(h) ? h->cur_pic_ptr->field_poc[h->picture_structure == PICT_BOTTOM_FIELD] |
|
|
|
: h->cur_pic_ptr->poc; |
|
|
|
@@ -59,12 +60,12 @@ void ff_h264_direct_dist_scale_factor(H264Context *const h) |
|
|
|
const int poc = h->cur_pic_ptr->field_poc[field]; |
|
|
|
const int poc1 = h->ref_list[1][0].field_poc[field]; |
|
|
|
for (i = 0; i < 2 * h->ref_count[0]; i++) |
|
|
|
h->dist_scale_factor_field[field][i ^ field] = |
|
|
|
sl->dist_scale_factor_field[field][i ^ field] = |
|
|
|
get_scale_factor(h, poc, poc1, i + 16); |
|
|
|
} |
|
|
|
|
|
|
|
for (i = 0; i < h->ref_count[0]; i++) |
|
|
|
h->dist_scale_factor[i] = get_scale_factor(h, poc, poc1, i); |
|
|
|
sl->dist_scale_factor[i] = get_scale_factor(h, poc, poc1, i); |
|
|
|
} |
|
|
|
|
|
|
|
static void fill_colmap(H264Context *h, int map[2][16 + 32], int list, |
|
|
|
@@ -555,13 +556,13 @@ single_col: |
|
|
|
{ |
|
|
|
const int *map_col_to_list0[2] = { h->map_col_to_list0[0], |
|
|
|
h->map_col_to_list0[1] }; |
|
|
|
const int *dist_scale_factor = h->dist_scale_factor; |
|
|
|
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]; |
|
|
|
dist_scale_factor = h->dist_scale_factor_field[h->mb_y & 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); |
|
|
|
|
|
|
|
|