[FFmpeg-devel] [PATCH] lavc/vaapi_hevc: Add support for Main Intra & Main 10 Intra

Xiang, Haihao haihao.xiang at intel.com
Wed Apr 3 04:26:58 EEST 2024


On Di, 2024-04-02 at 22:01 +0100, Mark Thompson wrote:
> On 02/04/2024 07:55, Xiang, Haihao wrote:
> > On Ma, 2024-04-01 at 21:11 +0100, Mark Thompson wrote:
> > > On 28/03/2024 02:07, Xiang, Haihao wrote:
> > > > From: Haihao Xiang <haihao.xiang at intel.com>
> > > > 
> > > > Both Main Intra and Main 10 Intra are Rext, we may use Main and Main 10
> > > > instead for decoding. This patch fixes the error below:
> > > > 
> > > > [hevc @ 0x55a771b80a00] No support for codec hevc profile 4.
> > > > [hevc @ 0x55a771b80a00] Failed setup for format vaapi: hwaccel
> > > > initialisation returned error.
> > > > 
> > > > Signed-off-by: Haihao Xiang <haihao.xiang at intel.com>
> > > > ---
> > > >    libavcodec/vaapi_hevc.c | 7 +++++++
> > > >    1 file changed, 7 insertions(+)
> > > > 
> > > > diff --git a/libavcodec/vaapi_hevc.c b/libavcodec/vaapi_hevc.c
> > > > index 3bdd2dd1b8..83b94d1a55 100644
> > > > --- a/libavcodec/vaapi_hevc.c
> > > > +++ b/libavcodec/vaapi_hevc.c
> > > > @@ -612,6 +612,13 @@ VAProfile
> > > > ff_vaapi_parse_hevc_rext_scc_profile(AVCodecContext *avctx)
> > > >            av_log(avctx, AV_LOG_VERBOSE, "HEVC profile %s is found.\n",
> > > > profile->name);
> > > >        }
> > > >    
> > > > +#if VA_CHECK_VERSION(0, 37, 0)
> > > > +    if (!strcmp(profile->name, "Main Intra"))
> > > > +        return VAProfileHEVCMain;
> > > > +    else if (!strcmp(profile->name, "Main 10 Intra"))
> > > > +        return VAProfileHEVCMain10;
> > > > +#endif
> > > > +
> > > >    #if VA_CHECK_VERSION(1, 2, 0)
> > > >        if (!strcmp(profile->name, "Main 12") ||
> > > >            !strcmp(profile->name, "Main 12 Intra"))
> > > 
> > > What if high_precision_offsets_enabled_flag is set?
> > > 
> > > (That doesn't matter for the VAAPI encoder setting the profile because we
> > > always have it as zero.)
> > 
> > Here use VAProfileHEVCMain or VAProfileHEVCMain10 to create VAConfig for
> > decoding,  avctx->profile (4) is not changed.
> > high_precision_offsets_enabled_flag is set in
> > VAPictureParameterBufferHEVCRext
> > when avctx->profile is 4.
> 
> But Main and Main 10 profile have:
> 
> "Active SPSs for the base layer shall have ...
> high_precision_offsets_enabled_flag, ... when present, equal to 0 only."
> 
> so a decoder implementing those profiles need not support it.  (It may work as
> a compatible extension as the field is there, but if it doesn't also support
> general rext cases then this is unlikely to be implemented.)
> 

I get your point, the underlying driver mightn't support
VAPictureParameterBufferHEVCRext. Seems we should add new profiles in libva. 

Thanks
Haihao



More information about the ffmpeg-devel mailing list