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

Jean-Baptiste Kempf jb at videolan.org
Thu Dec 28 00:35:52 CET 2017


Hello Mathieu,

On Wed, 27 Dec 2017, at 12:49, Mathieu Velten wrote:
> 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.
OK. Also, that might fix #/19196, no?

> 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.
Sure.

> However I will revert the change for HEVC since we have a full
> packetizer in this case, updated patch incoming.
Yes, that would be preferable, especially if we want to backport to
3.0 (I do).
I'll let François and Thomas debate on that later, because I believe the
discussion is not over :)
Best,

 
>> 
>> > ---
>>  >  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

--
Jean-Baptiste Kempf -  President
+33 672 704 734
 


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.videolan.org/pipermail/vlc-devel/attachments/20171228/e4e4ca26/attachment.html>


More information about the vlc-devel mailing list