[vlc-devel] [PATCH] vaapi: use ffmpeg context to read the codec profile

Mathieu Velten matmaul at gmail.com
Wed Dec 27 12:49:31 CET 2017


Hi Jean-Baptiste,

Le mer. 27 déc. 2017 à 12:04, Jean-Baptiste Kempf <jb at videolan.org> a
écrit :

> Hello Mathieu,
>
> On Tue, 26 Dec 2017, at 15:21, Mathieu Velten wrote:
> > Sometimes the profile is not available in the container metadatas (WebM).
>
> Shouldn't the packetizer find those info?
>

avparser is used to packetize VP9.
I just tried to fetch the profile after the call to av_parser_parse2 but it
doesn't seem to update the avcodec context with the profile.

I am a bit reluctant to write the whole logic to parse the profile manually
there since we have the correct info directly in the decoder context at
this stage.

However I will revert the change for HEVC since we have a full packetizer
in this case, updated patch incoming.

Thanks for the review.


>
> > ---
> >  modules/codec/avcodec/vaapi.c | 11 +++++++----
> >  1 file changed, 7 insertions(+), 4 deletions(-)
> >
> > diff --git a/modules/codec/avcodec/vaapi.c b/modules/codec/avcodec/
> > vaapi.c
> > index ee7fdf8..ffe537e 100644
> > --- a/modules/codec/avcodec/vaapi.c
> > +++ b/modules/codec/avcodec/vaapi.c
> > @@ -87,9 +87,9 @@ static int GetVaProfile(AVCodecContext *ctx, const
> > es_format_t *fmt,
> >          count = 18;
> >          break;
> >      case AV_CODEC_ID_HEVC:
> > -        if (fmt->i_profile == FF_PROFILE_HEVC_MAIN)
> > +        if (ctx->profile == FF_PROFILE_HEVC_MAIN)
> >              i_profile = VAProfileHEVCMain;
> > -        else if (fmt->i_profile == FF_PROFILE_HEVC_MAIN_10)
> > +        else if (ctx->profile == FF_PROFILE_HEVC_MAIN_10)
> >          {
> >              i_profile = VAProfileHEVCMain10;
> >              i_vlc_chroma = VLC_CODEC_VAAPI_420_10BPP;
> > @@ -103,11 +103,14 @@ static int GetVaProfile(AVCodecContext *ctx, const
> > es_format_t *fmt,
> >          count = 5;
> >          break;
> >      case AV_CODEC_ID_VP9:
> > -        if (fmt->i_profile == FF_PROFILE_VP9_0)
> > +        if (ctx->profile == FF_PROFILE_VP9_0)
> >              i_profile = VAProfileVP9Profile0;
> >  #if VA_CHECK_VERSION( 0, 39, 0 )
> > -        else if (fmt->i_profile == FF_PROFILE_VP9_2)
> > +        else if (ctx->profile == FF_PROFILE_VP9_2)
> > +        {
> >              i_profile = VAProfileVP9Profile2;
> > +            i_vlc_chroma = VLC_CODEC_VAAPI_420_10BPP;
> > +        }
> >  #endif
> >          else
> >              return VLC_EGENERIC;
> > --
> > 2.14.3
> >
> > _______________________________________________
> > vlc-devel mailing list
> > To unsubscribe or modify your subscription options:
> > https://mailman.videolan.org/listinfo/vlc-devel
>
>
> --
> Jean-Baptiste Kempf -  President
> +33 672 704 734
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.videolan.org/pipermail/vlc-devel/attachments/20171227/c0a8976b/attachment.html>


More information about the vlc-devel mailing list