Quoting Mark Thompson (2016-06-01 21:13:27)
> Send buffering_period and pic_timing messages when in modes
> targetting bitrate.  Also adds NAL HRD parameters to VUI.
> ---
> Fixed dpb_output_delay.
> 
>  libavcodec/vaapi_encode_h264.c | 207 
> ++++++++++++++++++++++++++++++++++++++++-
>  1 file changed, 206 insertions(+), 1 deletion(-)
> 
> diff --git a/libavcodec/vaapi_encode_h264.c b/libavcodec/vaapi_encode_h264.c
> index 139e6e9..573883f 100644
> --- a/libavcodec/vaapi_encode_h264.c
> +++ b/libavcodec/vaapi_encode_h264.c
> @@ -26,6 +26,7 @@
> 
>  #include "avcodec.h"
>  #include "h264.h"
> +#include "h264_sei.h"
>  #include "internal.h"
>  #include "vaapi_encode.h"
>  #include "vaapi_encode_h26x.h"
> @@ -84,6 +85,22 @@ typedef struct VAAPIEncodeH264MiscSequenceParams {
>      char low_delay_hrd_flag;
>      char pic_struct_present_flag;
>      char bitstream_restriction_flag;
> +
> +    unsigned int cpb_cnt_minus1;
> +    unsigned int bit_rate_scale;
> +    unsigned int cpb_size_scale;
> +    unsigned int bit_rate_value_minus1[32];
> +    unsigned int cpb_size_value_minus1[32];
> +    char cbr_flag[32];
> +    unsigned int initial_cpb_removal_delay_length_minus1;
> +    unsigned int cpb_removal_delay_length_minus1;
> +    unsigned int dpb_output_delay_length_minus1;
> +    unsigned int time_offset_length;
> +
> +    unsigned int initial_cpb_removal_delay;
> +    unsigned int initial_cpb_removal_delay_offset;
> +
> +    unsigned int pic_struct;
>  } VAAPIEncodeH264MiscSequenceParams;
> 
>  // This structure contains all possibly-useful per-slice syntax elements
> @@ -126,7 +143,11 @@ typedef struct VAAPIEncodeH264Context {
>      int next_frame_num;
>      int64_t idr_pic_count;
> 
> +    int cpb_delay;
> +    int dpb_delay;
> +
>      // Rate control configuration.
> +    int send_timing_sei;
>      struct {
>          VAEncMiscParameterBuffer misc;
>          VAEncMiscParameterRateControl rc;
> @@ -183,6 +204,7 @@ static void vaapi_encode_h264_write_vui(PutBitContext 
> *pbc,
>      VAEncSequenceParameterBufferH264  *vseq = ctx->codec_sequence_params;
>      VAAPIEncodeH264Context            *priv = ctx->priv_data;
>      VAAPIEncodeH264MiscSequenceParams *mseq = &priv->misc_sequence_params;
> +    int i;
> 
>      u(1, vvui_field(aspect_ratio_info_present_flag));
>      if (vseq->vui_fields.bits.aspect_ratio_info_present_flag) {
> @@ -224,7 +246,18 @@ static void vaapi_encode_h264_write_vui(PutBitContext 
> *pbc,
> 
>      u(1, mseq_var(nal_hrd_parameters_present_flag));
>      if (mseq->nal_hrd_parameters_present_flag) {
> -        av_assert0(0 && "nal hrd parameters not supported");
> +        ue(mseq_var(cpb_cnt_minus1));
> +        u(4, mseq_var(bit_rate_scale));
> +        u(4, mseq_var(cpb_size_scale));
> +        for (i = 0; i < 1; i++) {

<= cpb_cnt_minus1?
Not that it makes any difference.

Generally looks fine.

-- 
Anton Khirnov
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to