[FFmpeg-devel] [PATCH] avcodec/nvdec_hevc: add support for new extended sps/pps flags from SDK 8.1

Philip Langdale philipl at overt.org
Wed Apr 11 18:06:13 EEST 2018


On Wed, 11 Apr 2018 13:48:59 +0200
timo at rothenpieler.org wrote:

> From: Timo Rothenpieler <timo at rothenpieler.org>
> 
> ---
>  libavcodec/hevc_ps.c    | 5 ++---
>  libavcodec/hevc_ps.h    | 1 +
>  libavcodec/nvdec_hevc.c | 6 ++++++
>  3 files changed, 9 insertions(+), 3 deletions(-)
> 
> diff --git a/libavcodec/hevc_ps.c b/libavcodec/hevc_ps.c
> index 1f18d0335b..f877fa572c 100644
> --- a/libavcodec/hevc_ps.c
> +++ b/libavcodec/hevc_ps.c
> @@ -1100,7 +1100,6 @@ int ff_hevc_parse_sps(HEVCSPS *sps,
> GetBitContext *gb, unsigned int *sps_id, skip_bits(gb,
> 7); //sps_extension_7bits = get_bits(gb, 7); if
> (sps_extension_flag[0]) { int extended_precision_processing_flag;
> -            int high_precision_offsets_enabled_flag;
>              int cabac_bypass_alignment_enabled_flag;
>  
>              sps->transform_skip_rotation_enabled_flag =
> get_bits1(gb); @@ -1115,8 +1114,8 @@ int ff_hevc_parse_sps(HEVCSPS
> *sps, GetBitContext *gb, unsigned int *sps_id,
> "extended_precision_processing_flag not yet implemented\n"); 
>              sps->intra_smoothing_disabled_flag       = get_bits1(gb);
> -            high_precision_offsets_enabled_flag  = get_bits1(gb);
> -            if (high_precision_offsets_enabled_flag)
> +            sps->high_precision_offsets_enabled_flag = get_bits1(gb);
> +            if (sps->high_precision_offsets_enabled_flag)
>                  av_log(avctx, AV_LOG_WARNING,
>                     "high_precision_offsets_enabled_flag not yet
> implemented\n"); 
> diff --git a/libavcodec/hevc_ps.h b/libavcodec/hevc_ps.h
> index 9873754389..1fbda199e3 100644
> --- a/libavcodec/hevc_ps.h
> +++ b/libavcodec/hevc_ps.h
> @@ -289,6 +289,7 @@ typedef struct HEVCSPS {
>      int implicit_rdpcm_enabled_flag;
>      int explicit_rdpcm_enabled_flag;
>      int intra_smoothing_disabled_flag;
> +    int high_precision_offsets_enabled_flag;
>      int persistent_rice_adaptation_enabled_flag;
>  
>      ///< coded frame dimension in various units
> diff --git a/libavcodec/nvdec_hevc.c b/libavcodec/nvdec_hevc.c
> index 58f3fa9b45..ba54d210e8 100644
> --- a/libavcodec/nvdec_hevc.c
> +++ b/libavcodec/nvdec_hevc.c
> @@ -107,6 +107,12 @@ static int nvdec_hevc_start_frame(AVCodecContext
> *avctx, .log2_diff_max_min_pcm_luma_coding_block_size =
> sps->pcm.log2_max_pcm_cb_size -
> sps->pcm.log2_min_pcm_cb_size, .pcm_sample_bit_depth_luma_minus1
> = sps->pcm_enabled_flag ? sps->pcm.bit_depth - 1 :
> 0, .pcm_sample_bit_depth_chroma_minus1           =
> sps->pcm_enabled_flag ? sps->pcm.bit_depth_chroma - 1 : 0, +#if
> defined(NVDECAPI_VERSION) && NVDECAPI_VERSION >= 0x01000008
> +            .log2_max_transform_skip_block_size_minus2    =
> pps->log2_max_transform_skip_block_size - 2,
> +            .log2_sao_offset_scale_luma                   =
> pps->log2_sao_offset_scale_luma,
> +            .log2_sao_offset_scale_chroma                 =
> pps->log2_sao_offset_scale_chroma,
> +            .high_precision_offsets_enabled_flag          =
> sps->high_precision_offsets_enabled_flag, +#endif
>              .pcm_loop_filter_disabled_flag                =
> sps->pcm.loop_filter_disable_flag, .strong_intra_smoothing_enabled_flag
> =
> sps->sps_strong_intra_smoothing_enable_flag, .max_transform_hierarchy_depth_intra
> = sps->max_transform_hierarchy_depth_intra,

LGTM.


--phil


More information about the ffmpeg-devel mailing list