[FFmpeg-devel] [PATCH 2/6] vaapi: Remove H.264 baseline profile

wm4 nfxjfg at googlemail.com
Mon Oct 9 14:21:27 EEST 2017


On Sun, 8 Oct 2017 16:49:58 +0100
Mark Thompson <sw at jkqxz.net> wrote:

> This has been deprecated in libva2 because hardware does not and will not
> support it.  Therefore never consider it for decode, and for encode assume
> the user meant constrained baseline profile instead.
> ---
> On 08/10/17 16:44, Derek Buitenhuis wrote:
> > On 10/8/2017 4:11 PM, Mark Thompson wrote:  
> >> +    case FF_PROFILE_H264_BASELINE:
> >> +        // Baseline profile is not supported, assume the user meant
> >> +        // constrained baseline instead.
> >> +        avctx->profile = FF_PROFILE_H264_CONSTRAINED_BASELINE;  
> > 
> > Trying to automatically (and silently!) guess what the user wanted
> > is never a good idea, IMO. At the very least, print a warning.  
> 
> Yeah, ok, I agree.  Patch changed as enclosing.
> 
> 
>  libavcodec/vaapi_decode.c      |  1 -
>  libavcodec/vaapi_encode_h264.c | 12 ++++--------
>  2 files changed, 4 insertions(+), 9 deletions(-)
> 
> diff --git a/libavcodec/vaapi_decode.c b/libavcodec/vaapi_decode.c
> index cf58aae4c6..4f0ff84e01 100644
> --- a/libavcodec/vaapi_decode.c
> +++ b/libavcodec/vaapi_decode.c
> @@ -246,7 +246,6 @@ static const struct {
>      MAP(MPEG4,       MPEG4_MAIN,      MPEG4Main   ),
>      MAP(H264,        H264_CONSTRAINED_BASELINE,
>                             H264ConstrainedBaseline),
> -    MAP(H264,        H264_BASELINE,   H264Baseline),
>      MAP(H264,        H264_MAIN,       H264Main    ),
>      MAP(H264,        H264_HIGH,       H264High    ),
>  #if VA_CHECK_VERSION(0, 37, 0)
> diff --git a/libavcodec/vaapi_encode_h264.c b/libavcodec/vaapi_encode_h264.c
> index 549867ef3f..efde80b08e 100644
> --- a/libavcodec/vaapi_encode_h264.c
> +++ b/libavcodec/vaapi_encode_h264.c
> @@ -1175,6 +1175,10 @@ static av_cold int vaapi_encode_h264_init(AVCodecContext *avctx)
>      ctx->codec = &vaapi_encode_type_h264;
>  
>      switch (avctx->profile) {
> +    case FF_PROFILE_H264_BASELINE:
> +        av_log(avctx, AV_LOG_WARNING, "H.264 baseline profile is not "
> +               "supported, using constrained baseline profile instead.\n");
> +        avctx->profile = FF_PROFILE_H264_CONSTRAINED_BASELINE;
>      case FF_PROFILE_H264_CONSTRAINED_BASELINE:
>          ctx->va_profile = VAProfileH264ConstrainedBaseline;
>          if (avctx->max_b_frames != 0) {
> @@ -1183,14 +1187,6 @@ static av_cold int vaapi_encode_h264_init(AVCodecContext *avctx)
>                     "doesn't support encoding with B frames, disabling them.\n");
>          }
>          break;
> -    case FF_PROFILE_H264_BASELINE:
> -        ctx->va_profile = VAProfileH264Baseline;
> -        if (avctx->max_b_frames != 0) {
> -            avctx->max_b_frames = 0;
> -            av_log(avctx, AV_LOG_WARNING, "H.264 baseline profile "
> -                   "doesn't support encoding with B frames, disabling them.\n");
> -        }
> -        break;
>      case FF_PROFILE_H264_MAIN:
>          ctx->va_profile = VAProfileH264Main;
>          break;

Shouldn't trying to decode baseline video just fall back to sw decoding?


More information about the ffmpeg-devel mailing list