Skip to content

Commit 8f1ab6b

Browse files
committed
ffmpeg: add hantro patch
1 parent 401cb7a commit 8f1ab6b

1 file changed

Lines changed: 75 additions & 0 deletions

File tree

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
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

Comments
 (0)