From: Wu Jianhua <[email protected]>
Signed-off-by: Wu Jianhua <[email protected]>
---
libavcodec/h2645_sei.c | 9 +++++----
libavcodec/h2645_sei.h | 2 +-
libavcodec/vvc/dec.c | 12 ++++++++++++
3 files changed, 18 insertions(+), 5 deletions(-)
diff --git a/libavcodec/h2645_sei.c b/libavcodec/h2645_sei.c
index 2494daaf3c..78d9db20fd 100644
--- a/libavcodec/h2645_sei.c
+++ b/libavcodec/h2645_sei.c
@@ -44,8 +44,9 @@
#include "h2645_sei.h"
#include "itut35.h"
-#define IS_H264(codec_id) (CONFIG_H264_SEI && CONFIG_HEVC_SEI ? codec_id ==
AV_CODEC_ID_H264 : CONFIG_H264_SEI)
-#define IS_HEVC(codec_id) (CONFIG_H264_SEI && CONFIG_HEVC_SEI ? codec_id ==
AV_CODEC_ID_HEVC : CONFIG_HEVC_SEI)
+#define IS_H264(codec_id) (CONFIG_H264_SEI && (CONFIG_HEVC_SEI ||
CONFIG_VVC_SEI ) ? codec_id == AV_CODEC_ID_H264 : CONFIG_H264_SEI)
+#define IS_HEVC(codec_id) (CONFIG_HEVC_SEI && (CONFIG_H264_SEI ||
CONFIG_VVC_SEI ) ? codec_id == AV_CODEC_ID_HEVC : CONFIG_HEVC_SEI)
+#define IS_VVC(codec_id) (CONFIG_VVC_SEI && (CONFIG_H264_SEI ||
CONFIG_HEVC_SEI) ? codec_id == AV_CODEC_ID_VVC : CONFIG_VVC_SEI )
#if CONFIG_HEVC_SEI
static int decode_registered_user_data_dynamic_hdr_plus(HEVCSEIDynamicHDRPlus
*s,
@@ -427,7 +428,7 @@ static int
decode_film_grain_characteristics(H2645SEIFilmGrainCharacteristics *h
}
}
}
- if (IS_HEVC(codec_id))
+ if (!IS_H264(codec_id))
h->persistence_flag = get_bits1(gb);
else
h->repetition_period = get_ue_golomb_long(gb);
@@ -854,7 +855,7 @@ FF_ENABLE_DEPRECATION_WARNINGS
fgp->subsampling_x = fgp->subsampling_y = 0;
h274->model_id = fgc->model_id;
- if (fgc->separate_colour_description_present_flag) {
+ if (IS_VVC(codec_id) || fgc->separate_colour_description_present_flag)
{
fgp->bit_depth_luma = fgc->bit_depth_luma;
fgp->bit_depth_chroma = fgc->bit_depth_chroma;
fgp->color_range = fgc->full_range + 1;
diff --git a/libavcodec/h2645_sei.h b/libavcodec/h2645_sei.h
index abc49760d9..f2ad7147c6 100644
--- a/libavcodec/h2645_sei.h
+++ b/libavcodec/h2645_sei.h
@@ -108,7 +108,7 @@ typedef struct H2645SEIFilmGrainCharacteristics {
uint8_t intensity_interval_upper_bound[3][256];
int16_t comp_model_value[3][256][6];
int repetition_period; //< H.264 only
- int persistence_flag; //< HEVC only
+ int persistence_flag; //< HEVC/VVC
} H2645SEIFilmGrainCharacteristics;
typedef struct H2645SEIMasteringDisplay {
diff --git a/libavcodec/vvc/dec.c b/libavcodec/vvc/dec.c
index 206be3cc33..8b1c2c751b 100644
--- a/libavcodec/vvc/dec.c
+++ b/libavcodec/vvc/dec.c
@@ -718,6 +718,14 @@ static void decode_prefix_sei(VVCFrameContext *fc,
VVCContext *s)
}
}
+static int set_side_data(VVCContext *s, VVCFrameContext *fc)
+{
+ AVFrame *out = fc->ref->frame;
+
+ return ff_h2645_sei_to_frame(out, &fc->sei.common, AV_CODEC_ID_VVC,
s->avctx,
+ NULL, fc->ps.sps->bit_depth, fc->ps.sps->bit_depth, fc->ref->poc);
+}
+
static int frame_start(VVCContext *s, VVCFrameContext *fc, SliceContext *sc)
{
const VVCPH *ph = &fc->ps.ph;
@@ -733,6 +741,10 @@ static int frame_start(VVCContext *s, VVCFrameContext *fc,
SliceContext *sc)
decode_prefix_sei(fc, s);
+ ret = set_side_data(s, fc);
+ if (ret < 0)
+ goto fail;
+
if (!IS_IDR(s))
ff_vvc_bump_frame(s, fc);
--
2.44.0.windows.1
_______________________________________________
ffmpeg-devel mailing list
[email protected]
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
[email protected] with subject "unsubscribe".