On 03/05/18 04:07, Haihao Xiang wrote: > Signed-off-by: Haihao Xiang <haihao.xi...@intel.com> > --- > libavcodec/vaapi_encode_h265.c | 29 ++++++++++++++++++++++++++++- > 1 file changed, 28 insertions(+), 1 deletion(-) > > diff --git a/libavcodec/vaapi_encode_h265.c b/libavcodec/vaapi_encode_h265.c > index 326fe4fe66..5fe487dfc5 100644 > --- a/libavcodec/vaapi_encode_h265.c > +++ b/libavcodec/vaapi_encode_h265.c > @@ -37,6 +37,7 @@ > > enum { > SEI_MASTERING_DISPLAY = 0x08, > + SEI_CONTENT_LIGHT_LEVLE = 0x10, > }; > > typedef struct VAAPIEncodeH265Context { > @@ -55,6 +56,7 @@ typedef struct VAAPIEncodeH265Context { > H265RawSEI sei; > > H265RawSEIMasteringDiplayColourVolume mastering_display; > + H265RawSEIContentLightLevelInfo content_light_level; > > int64_t last_idr_frame; > int pic_order_cnt; > @@ -218,6 +220,12 @@ static int > vaapi_encode_h265_write_extra_header(AVCodecContext *avctx, > ++i; > } > > + if (priv->sei_needed & SEI_CONTENT_LIGHT_LEVLE) { > + priv->sei.payload[i].payload_type = > HEVC_SEI_TYPE_CONTENT_LIGHT_LEVEL_INFO; > + priv->sei.payload[i].payload.content_light_level = > priv->content_light_level; > + ++i; > + } > + > priv->sei.payload_count = i; > av_assert0(priv->sei.payload_count > 0); > > @@ -702,6 +710,22 @@ static int > vaapi_encode_h265_init_picture_params(AVCodecContext *avctx, > } > } > > + if (opt->sei & SEI_CONTENT_LIGHT_LEVLE) { > + AVFrameSideData *sd = > + av_frame_get_side_data(pic->input_image, > + AV_FRAME_DATA_CONTENT_LIGHT_LEVEL);
Same question about when this side data is set as for mastering display. > + > + if (sd) { > + AVContentLightMetadata *clm = > + (AVContentLightMetadata *)sd->data; > + > + priv->content_light_level.max_content_light_level = clm->MaxCLL; > + priv->content_light_level.max_pic_average_light_level = > clm->MaxFALL; Possibly needs to be clipped to 16 bits? > + > + priv->sei_needed |= SEI_CONTENT_LIGHT_LEVLE; > + } > + } > + > vpic->decoded_curr_pic = (VAPictureHEVC) { > .picture_id = pic->recon_surface, > .pic_order_cnt = priv->pic_order_cnt, > @@ -1123,11 +1147,14 @@ static const AVOption vaapi_encode_h265_options[] = { > > { "sei", "Set SEI to include", > OFFSET(sei), AV_OPT_TYPE_FLAGS, > - { .i64 = SEI_MASTERING_DISPLAY }, > + { .i64 = SEI_MASTERING_DISPLAY | SEI_CONTENT_LIGHT_LEVLE }, > 0, INT_MAX, FLAGS, "sei" }, > { "mastering_display", "Include mastering display colour volume", > 0, AV_OPT_TYPE_CONST, { .i64 = SEI_MASTERING_DISPLAY }, > INT_MIN, INT_MAX, FLAGS, "sei" }, > + { "content_light_level", "Include content light level information", > + 0, AV_OPT_TYPE_CONST, { .i64 = SEI_CONTENT_LIGHT_LEVLE }, > + INT_MIN, INT_MAX, FLAGS, "sei" }, If you still like the idea of an "hdr" option (so that '-sei hdr' works), you can make it have the value SEI_MASTERING_DISPLAY|SEI_CONTENT_LIGHT_LEVEL. > > { NULL }, > }; > _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel