Re: [libav-devel] [PATCH 13/22] vaapi_h264: Add support for AUD NAL units

2017-08-10 Thread Anton Khirnov
Quoting Mark Thompson (2017-07-29 23:16:36)
> Adds a new private option to enable them (off by default).
> ---
>  libavcodec/vaapi_encode_h264.c | 33 +
>  1 file changed, 33 insertions(+)

Looks ok

-- 
Anton Khirnov
___
libav-devel mailing list
libav-devel@libav.org
https://lists.libav.org/mailman/listinfo/libav-devel

[libav-devel] [PATCH 13/22] vaapi_h264: Add support for AUD NAL units

2017-07-29 Thread Mark Thompson
Adds a new private option to enable them (off by default).
---
 libavcodec/vaapi_encode_h264.c | 33 +
 1 file changed, 33 insertions(+)

diff --git a/libavcodec/vaapi_encode_h264.c b/libavcodec/vaapi_encode_h264.c
index 8d9b1c6f7..ff73922ab 100644
--- a/libavcodec/vaapi_encode_h264.c
+++ b/libavcodec/vaapi_encode_h264.c
@@ -53,6 +53,7 @@ typedef struct VAAPIEncodeH264Context {
 int fixed_qp_p;
 int fixed_qp_b;
 
+H264RawAUD aud;
 H264RawSPS sps;
 H264RawPPS pps;
 H264RawSEI sei;
@@ -77,6 +78,7 @@ typedef struct VAAPIEncodeH264Context {
 
 CodedBitstreamContext cbc;
 CodedBitstreamFragment current_access_unit;
+int aud_needed;
 int sei_needed;
 
 #if VA_CHECK_VERSION(0, 36, 0)
@@ -92,6 +94,7 @@ typedef struct VAAPIEncodeH264Options {
 int qp;
 int quality;
 int low_power;
+int aud;
 int sei;
 } VAAPIEncodeH264Options;
 
@@ -151,6 +154,13 @@ static int 
vaapi_encode_h264_write_sequence_header(AVCodecContext *avctx,
 CodedBitstreamFragment   *au = >current_access_unit;
 int err;
 
+if (priv->aud_needed) {
+err = vaapi_encode_h264_add_nal(avctx, au, >aud);
+if (err < 0)
+goto fail;
+priv->aud_needed = 0;
+}
+
 err = vaapi_encode_h264_add_nal(avctx, au, >sps);
 if (err < 0)
 goto fail;
@@ -175,6 +185,13 @@ static int 
vaapi_encode_h264_write_slice_header(AVCodecContext *avctx,
 CodedBitstreamFragment   *au = >current_access_unit;
 int err;
 
+if (priv->aud_needed) {
+err = vaapi_encode_h264_add_nal(avctx, au, >aud);
+if (err < 0)
+goto fail;
+priv->aud_needed = 0;
+}
+
 err = vaapi_encode_h264_add_nal(avctx, au, >slice);
 if (err < 0)
 goto fail;
@@ -197,6 +214,11 @@ static int 
vaapi_encode_h264_write_extra_header(AVCodecContext *avctx,
 int err, i;
 
 if (priv->sei_needed) {
+if (priv->aud_needed) {
+vaapi_encode_h264_add_nal(avctx, au, >aud);
+priv->aud_needed = 0;
+}
+
 memset(>sei, 0, sizeof(priv->sei));
 priv->sei.nal_unit_header.nal_unit_type = H264_NAL_SEI;
 
@@ -577,6 +599,14 @@ static int 
vaapi_encode_h264_init_picture_params(AVCodecContext *avctx,
 priv->pic_order_cnt = pic->display_order - priv->last_idr_frame;
 priv->dpb_delay = pic->display_order - pic->encode_order + 1;
 
+if (opt->aud) {
+priv->aud_needed = 1;
+priv->aud.nal_unit_header.nal_unit_type = H264_NAL_AUD;
+priv->aud.primary_pic_type = priv->primary_pic_type;
+} else {
+priv->aud_needed = 0;
+}
+
 if (opt->sei & SEI_IDENTIFIER && pic->encode_order == 0)
 priv->sei_needed = 1;
 
@@ -936,6 +966,9 @@ static const AVOption vaapi_encode_h264_options[] = {
   "on some platforms, does not support all features)",
   OFFSET(low_power), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, 1, FLAGS },
 
+{ "aud", "Include AUD",
+  OFFSET(aud), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, 1, FLAGS },
+
 { "sei", "Set SEI to include",
   OFFSET(sei), AV_OPT_TYPE_FLAGS,
   { .i64 = SEI_IDENTIFIER | SEI_TIMING },
-- 
2.11.0

___
libav-devel mailing list
libav-devel@libav.org
https://lists.libav.org/mailman/listinfo/libav-devel