|
| 1 | +diff --git a/libavcodec/cbs_av1_syntax_template.c b/libavcodec/cbs_av1_syntax_template.c |
| 2 | +index 5518544a4d..1b0f96e37f 100644 |
| 3 | +--- a/libavcodec/cbs_av1_syntax_template.c |
| 4 | ++++ b/libavcodec/cbs_av1_syntax_template.c |
| 5 | +@@ -936,10 +936,20 @@ static int FUNC(loop_filter_params)(CodedBitstreamContext *ctx, RWContext *rw, |
| 6 | + infer(loop_filter_mode_deltas[i], ref_loop_filter_mode_deltas[i]); |
| 7 | + } |
| 8 | + } else { |
| 9 | ++ const int8_t *ref_loop_filter_ref_deltas, *ref_loop_filter_mode_deltas; |
| 10 | ++ if (current->primary_ref_frame == AV1_PRIMARY_REF_NONE) { |
| 11 | ++ ref_loop_filter_ref_deltas = default_loop_filter_ref_deltas; |
| 12 | ++ ref_loop_filter_mode_deltas = default_loop_filter_mode_deltas; |
| 13 | ++ } else { |
| 14 | ++ ref_loop_filter_ref_deltas = |
| 15 | ++ priv->ref[current->ref_frame_idx[current->primary_ref_frame]].loop_filter_ref_deltas; |
| 16 | ++ ref_loop_filter_mode_deltas = |
| 17 | ++ priv->ref[current->ref_frame_idx[current->primary_ref_frame]].loop_filter_mode_deltas; |
| 18 | ++ } |
| 19 | + for (i = 0; i < AV1_TOTAL_REFS_PER_FRAME; i++) |
| 20 | +- infer(loop_filter_ref_deltas[i], default_loop_filter_ref_deltas[i]); |
| 21 | ++ infer(loop_filter_ref_deltas[i], ref_loop_filter_ref_deltas[i]); |
| 22 | + for (i = 0; i < 2; i++) |
| 23 | +- infer(loop_filter_mode_deltas[i], default_loop_filter_mode_deltas[i]); |
| 24 | ++ infer(loop_filter_mode_deltas[i], ref_loop_filter_mode_deltas[i]); |
| 25 | + } |
| 26 | + |
| 27 | + return 0; |
| 28 | +diff --git a/libavcodec/vaapi_av1.c b/libavcodec/vaapi_av1.c |
| 29 | +index b8f5472c14..d5245edfbe 100644 |
| 30 | +--- a/libavcodec/vaapi_av1.c |
| 31 | ++++ b/libavcodec/vaapi_av1.c |
| 32 | +@@ -236,6 +236,7 @@ static int vaapi_av1_start_frame(AVCodecContext *avctx, |
| 33 | + .disable_frame_end_update_cdf = frame_header->disable_frame_end_update_cdf, |
| 34 | + .uniform_tile_spacing_flag = frame_header->uniform_tile_spacing_flag, |
| 35 | + .allow_warped_motion = frame_header->allow_warped_motion, |
| 36 | ++ .reserved = frame_header->refresh_frame_flags, |
| 37 | + }, |
| 38 | + .loop_filter_info_fields.bits = { |
| 39 | + .sharpness_level = frame_header->loop_filter_sharpness, |
| 40 | +diff --git a/libavcodec/vaapi_encode_h264.c b/libavcodec/vaapi_encode_h264.c |
| 41 | +index 27f6551719..73ada8cdc6 100644 |
| 42 | +--- a/libavcodec/vaapi_encode_h264.c |
| 43 | ++++ b/libavcodec/vaapi_encode_h264.c |
| 44 | +@@ -951,6 +951,7 @@ static const VAAPIEncodeProfile vaapi_encode_h264_profiles[] = { |
| 45 | + #endif |
| 46 | + { AV_PROFILE_H264_HIGH, 8, 3, 1, 1, VAProfileH264High }, |
| 47 | + { AV_PROFILE_H264_MAIN, 8, 3, 1, 1, VAProfileH264Main }, |
| 48 | ++ { AV_PROFILE_H264_MAIN, 8, 3, 1, 0, VAProfileH264Main }, |
| 49 | + { AV_PROFILE_H264_CONSTRAINED_BASELINE, |
| 50 | + 8, 3, 1, 1, VAProfileH264ConstrainedBaseline }, |
| 51 | + { AV_PROFILE_UNKNOWN } |
| 52 | +diff --git a/libavcodec/vaapi_h264.c b/libavcodec/vaapi_h264.c |
| 53 | +index 7f00da09fc..d2a7225d50 100644 |
| 54 | +--- a/libavcodec/vaapi_h264.c |
| 55 | ++++ b/libavcodec/vaapi_h264.c |
| 56 | +@@ -144,7 +144,7 @@ static int fill_vaapi_ReferenceFrames(VAPictureParameterBufferH264 *pic_param, |
| 57 | + |
| 58 | + for (i = 0; i < h->short_ref_count; i++) { |
| 59 | + const H264Picture *pic = h->short_ref[i]; |
| 60 | +- if (pic && pic->reference && dpb_add(&dpb, pic) < 0) |
| 61 | ++ if (pic && pic->reference && pic->field_poc[0] != INT_MAX && pic->field_poc[1] != INT_MAX && dpb_add(&dpb, pic) < 0) |
| 62 | + return -1; |
| 63 | + } |
| 64 | + |
| 65 | +@@ -265,8 +265,8 @@ static int vaapi_h264_start_frame(AVCodecContext *avctx, |
| 66 | + .log2_max_pic_order_cnt_lsb_minus4 = sps->log2_max_poc_lsb - 4, |
| 67 | + .delta_pic_order_always_zero_flag = sps->delta_pic_order_always_zero_flag, |
| 68 | + }, |
| 69 | +- .pic_init_qp_minus26 = pps->init_qp - 26, |
| 70 | +- .pic_init_qs_minus26 = pps->init_qs - 26, |
| 71 | ++ .pic_init_qp_minus26 = pps->init_qp - 26 - 6 *(sps->bit_depth_luma - 8), |
| 72 | ++ .pic_init_qs_minus26 = pps->init_qs - 26 - 6 *(sps->bit_depth_luma - 8), |
| 73 | + .chroma_qp_index_offset = pps->chroma_qp_index_offset[0], |
| 74 | + .second_chroma_qp_index_offset = pps->chroma_qp_index_offset[1], |
| 75 | + .pic_fields.bits = { |
0 commit comments