From: Niklas Haas <[email protected]>
libx265 supports these natively, we just need to forward them to the
x265picture.
---
libavcodec/libx265.c | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/libavcodec/libx265.c b/libavcodec/libx265.c
index 92183b9ca26..92b25844ef6 100644
--- a/libavcodec/libx265.c
+++ b/libavcodec/libx265.c
@@ -560,6 +560,7 @@ static av_cold int libx265_encode_set_roi(libx265Context
*ctx, const AVFrame *fr
static void free_picture(libx265Context *ctx, x265_picture *pic)
{
x265_sei *sei = &pic->userSEI;
+ av_free(pic->rpu.payload);
for (int i = 0; i < sei->numPayloads; i++)
av_free(sei->payloads[i].payload);
@@ -594,6 +595,7 @@ static int libx265_encode_frame(AVCodecContext *avctx,
AVPacket *pkt,
sei->numPayloads = 0;
if (pic) {
+ AVFrameSideData *sd;
ReorderedData *rd;
int rd_idx;
@@ -694,6 +696,15 @@ static int libx265_encode_frame(AVCodecContext *avctx,
AVPacket *pkt,
sei->numPayloads++;
}
}
+
+ if ((sd = av_frame_get_side_data(pic, AV_FRAME_DATA_DOVI_RPU_BUFFER)))
{
+ x265pic.rpu.payload = av_memdup(sd->data, sd->size);
+ if (!x265pic.rpu.payload) {
+ free_picture(ctx, &x265pic);
+ return AVERROR(ENOMEM);
+ }
+ x265pic.rpu.payloadSize = sd->size;
+ }
}
ret = ctx->api->encoder_encode(ctx->encoder, &nal, &nnal,
--
2.44.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".