Signed-off-by: James Almer <[email protected]>
---
libavcodec/hevcdec.c | 15 ++++++++++++++-
1 file changed, 14 insertions(+), 1 deletion(-)
diff --git a/libavcodec/hevcdec.c b/libavcodec/hevcdec.c
index df40c91ba6..dabfe89d4a 100644
--- a/libavcodec/hevcdec.c
+++ b/libavcodec/hevcdec.c
@@ -3337,8 +3337,15 @@ static int hevc_decode_frame(AVCodecContext *avctx,
AVFrame *rframe,
}
sd = av_packet_get_side_data(avpkt, AV_PKT_DATA_DOVI_CONF, &sd_size);
- if (sd && sd_size > 0)
+ if (sd && sd_size > 0) {
+ int old = s->dovi_ctx.dv_profile;
+
ff_dovi_update_cfg(&s->dovi_ctx, (AVDOVIDecoderConfigurationRecord *)
sd);
+ if (old)
+ av_log(avctx, AV_LOG_DEBUG,
+ "New DOVI configuration record from input packet (profile
%d -> %u).\n",
+ old, s->dovi_ctx.dv_profile);
+ }
s->ref = NULL;
ret = decode_nal_units(s, avpkt->data, avpkt->size);
@@ -3641,12 +3648,18 @@ static av_cold int hevc_decode_init(AVCodecContext
*avctx)
atomic_init(&s->wpp_err, 0);
if (!avctx->internal->is_copy) {
+ AVPacketSideData *sd;
+
if (avctx->extradata_size > 0 && avctx->extradata) {
ret = hevc_decode_extradata(s, avctx->extradata,
avctx->extradata_size, 1);
if (ret < 0) {
return ret;
}
}
+
+ sd = av_packet_side_data_set_get(&avctx->packet_side_data,
AV_PKT_DATA_DOVI_CONF);
+ if (sd && sd->size > 0)
+ ff_dovi_update_cfg(&s->dovi_ctx, (AVDOVIDecoderConfigurationRecord
*) sd->data);
}
return 0;
--
2.42.0
_______________________________________________
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".