[FFmpeg-devel] [PATCH v2 32/36] cbs_h264: Infer default VUI values if VUI parameters are not present
Xiang, Haihao
haihao.xiang at intel.com
Fri Jun 15 06:46:08 EEST 2018
On Fri, 2018-06-08 at 00:43 +0100, Mark Thompson wrote:
> ---
> libavcodec/cbs_h264_syntax_template.c | 42
> +++++++++++++++++++++++++++++++++++
> 1 file changed, 42 insertions(+)
>
> diff --git a/libavcodec/cbs_h264_syntax_template.c
> b/libavcodec/cbs_h264_syntax_template.c
> index f53c02467e..03f2a15b0b 100644
> --- a/libavcodec/cbs_h264_syntax_template.c
> +++ b/libavcodec/cbs_h264_syntax_template.c
> @@ -211,6 +211,46 @@ static int FUNC(vui_parameters)(CodedBitstreamContext
> *ctx, RWContext *rw,
> return 0;
> }
>
> +static int FUNC(vui_parameters_default)(CodedBitstreamContext *ctx,
> + RWContext *rw, H264RawVUI *current,
> + H264RawSPS *sps)
> +{
> + infer(aspect_ratio_idc, 0);
> +
> + infer(video_format, 5);
> + infer(video_full_range_flag, 0);
> + infer(colour_primaries, 2);
> + infer(transfer_characteristics, 2);
> + infer(matrix_coefficients, 2);
> +
> + infer(chroma_sample_loc_type_top_field, 0);
> + infer(chroma_sample_loc_type_bottom_field, 0);
> +
> + infer(fixed_frame_rate_flag, 0);
> + infer(low_delay_hrd_flag, 1);
> +
> + infer(pic_struct_present_flag, 0);
> +
> + infer(motion_vectors_over_pic_boundaries_flag, 1);
> + infer(max_bytes_per_pic_denom, 2);
> + infer(max_bits_per_mb_denom, 1);
> + infer(log2_max_mv_length_horizontal, 15);
> + infer(log2_max_mv_length_vertical, 15);
Both log2_max_mv_length_horizontal and log2_max_mv_length_vertical should be 16
> +
> + if ((sps->profile_idc == 44 || sps->profile_idc == 86 ||
> + sps->profile_idc == 100 || sps->profile_idc == 110 ||
> + sps->profile_idc == 122 || sps->profile_idc == 244) &&
> + sps->constraint_set3_flag) {
> + infer(max_num_reorder_frames, 0);
> + infer(max_dec_frame_buffering, 0);
> + } else {
> + infer(max_num_reorder_frames, H264_MAX_DPB_FRAMES);
> + infer(max_dec_frame_buffering, H264_MAX_DPB_FRAMES);
> + }
> +
> + return 0;
> +}
> +
> static int FUNC(sps)(CodedBitstreamContext *ctx, RWContext *rw,
> H264RawSPS *current)
> {
> @@ -315,6 +355,8 @@ static int FUNC(sps)(CodedBitstreamContext *ctx, RWContext
> *rw,
> flag(vui_parameters_present_flag);
> if (current->vui_parameters_present_flag)
> CHECK(FUNC(vui_parameters)(ctx, rw, ¤t->vui, current));
> + else
> + CHECK(FUNC(vui_parameters_default)(ctx, rw, ¤t->vui, current));
>
> CHECK(FUNC(rbsp_trailing_bits)(ctx, rw));
>
More information about the ffmpeg-devel
mailing list