[FFmpeg-devel] [PATCH 2/5] lavc: add avpriv_h264_get_profile

James Almer jamrial at gmail.com
Thu Jun 11 15:53:30 EEST 2020


On 6/11/2020 1:43 AM, rcombs wrote:
> ---
>  libavcodec/h264_parse.c | 21 +++++++++++++++++----
>  libavcodec/h264_parse.h |  2 ++
>  libavcodec/version.h    |  2 +-
>  3 files changed, 20 insertions(+), 5 deletions(-)
> 
> diff --git a/libavcodec/h264_parse.c b/libavcodec/h264_parse.c
> index 352ffea948..3069579926 100644
> --- a/libavcodec/h264_parse.c
> +++ b/libavcodec/h264_parse.c
> @@ -528,18 +528,31 @@ int ff_h264_decode_extradata(const uint8_t *data, int size, H264ParamSets *ps,
>   */
>  int ff_h264_get_profile(const SPS *sps)
>  {
> -    int profile = sps->profile_idc;
> +    return avpriv_h264_get_profile(sps->profile_idc, sps->constraint_set_flags);
> +}
> +
> +/**
> + * Compute profile from profile_idc and constraint_set?_flags.
> + *
> + * @param profile_idc profile_idc field from SPS
> + * @param constraint_set_flags constraint_set_flags field from SPS
> + *
> + * @return profile as defined by FF_PROFILE_H264_*
> + */
> +int avpriv_h264_get_profile(int profile_idc, int constraint_set_flags)
> +{
> +    int profile = profile_idc;
>  
> -    switch (sps->profile_idc) {
> +    switch (profile_idc) {
>      case FF_PROFILE_H264_BASELINE:
>          // constraint_set1_flag set to 1
> -        profile |= (sps->constraint_set_flags & 1 << 1) ? FF_PROFILE_H264_CONSTRAINED : 0;
> +        profile |= (constraint_set_flags & 1 << 1) ? FF_PROFILE_H264_CONSTRAINED : 0;
>          break;
>      case FF_PROFILE_H264_HIGH_10:
>      case FF_PROFILE_H264_HIGH_422:
>      case FF_PROFILE_H264_HIGH_444_PREDICTIVE:
>          // constraint_set3_flag set to 1
> -        profile |= (sps->constraint_set_flags & 1 << 3) ? FF_PROFILE_H264_INTRA : 0;
> +        profile |= (constraint_set_flags & 1 << 3) ? FF_PROFILE_H264_INTRA : 0;
>          break;
>      }
>  
> diff --git a/libavcodec/h264_parse.h b/libavcodec/h264_parse.h
> index 4d01620125..a1462ad8fd 100644
> --- a/libavcodec/h264_parse.h
> +++ b/libavcodec/h264_parse.h
> @@ -90,4 +90,6 @@ int ff_h264_decode_extradata(const uint8_t *data, int size, H264ParamSets *ps,
>   */
>  int ff_h264_get_profile(const SPS *sps);
>  
> +int avpriv_h264_get_profile(int profile_idc, int constraint_set_flags);
> +
>  #endif /* AVCODEC_H264_PARSE_H */
> diff --git a/libavcodec/version.h b/libavcodec/version.h
> index 60c0f2460d..03593026b3 100644
> --- a/libavcodec/version.h
> +++ b/libavcodec/version.h
> @@ -28,7 +28,7 @@
>  #include "libavutil/version.h"
>  
>  #define LIBAVCODEC_VERSION_MAJOR  58
> -#define LIBAVCODEC_VERSION_MINOR  92
> +#define LIBAVCODEC_VERSION_MINOR  93

avpriv functions are not public, so this is not needed.

>  #define LIBAVCODEC_VERSION_MICRO 100
>  
>  #define LIBAVCODEC_VERSION_INT  AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \
> 



More information about the ffmpeg-devel mailing list