[Libva] profile used in mplayer vaapi

Xiang, Haihao haihao.xiang at intel.com
Thu Nov 25 17:40:18 PST 2010


> Hi,
> 
> > On Tue, 2010-11-23 at 14:25 +0800, Yuan, Shengquan wrote:
> >> On Tue, Nov 23, 2010 at 2:21 PM, Xiang, Haihao <haihao.xiang at intel.com>
> >> wrote:
> >> > Hi,  Austin
> >> >
> >> >   VC1 has a profile flag in the sequence layer, however
> >> > VAPictureParameterBufferVC1 hasn't a member for this flag. The i965
> >> > video driver needs this flag, does the parameter 'profile' passed in
> >> > vaCreateConfig match the profile specified in the sequence layer?
> >> I don't think so, some players may always choose the highest profile
> >> for vaCreateConfig regardless of the indication in sequence layer.
> >> We may add something into VAPictureParameterBufferVC1 to resolve i965
> >> issue
> >
> > How about the following patch?
> 
> Please place the new "profile" field at the end of the bit-fields, i.e.
> after "max_b_frames" so that to maintain binary compatibility. Thanks.
Yeah, placing profile at the end of sequence_fields is more reasonable.

> Besides, I suggest this field to have the following values:
> 1: simple
> 2: main
> 3: advanced

The following values have been used for VC1 profile in va.h
VAProfileVC1Simple = 8,
VAProfileVC1Main   = 9,
VAProfileVC1Advanced = 10,

User will be confused if we use some new values for VC1 profile. Maybe
we can use a 4-bits "profile" field in sequence_fields which have values
8/9/10.


> 
> 3 is the default for VC-1 Advanced. Values for metada info were probably
> more like 0, 4, 12, isn't it? Thus, MSB being 0, 1, 3. Besides, keeping 0
> as no meaningful value will help implementations to maintain
> compatibility. i.e. if profile != 0 => profile information provided, thus
> being usable.
> 
> > diff --git a/va/va.h b/va/va.h
> > index 7f24a85..b1e4136 100644
> > --- a/va/va.h
> > +++ b/va/va.h
> > @@ -857,6 +857,7 @@ typedef struct _VAPictureParameterBufferVC1
> >      /* sequence layer for AP or meta data for SP and MP */
> >      union {
> >          struct {
> > +            unsigned int profile	: 2; /* SEQUENCE_LAYER::PROFILE or The
> > MSB of METADATA::PROFILE */
> >              unsigned int pulldown	: 1; /* SEQUENCE_LAYER::PULLDOWN */
> >              unsigned int interlace	: 1; /* SEQUENCE_LAYER::INTERLACE */
> >              unsigned int tfcntrflag	: 1; /* SEQUENCE_LAYER::TFCNTRFLAG */
> 
> Regards,
> Gwenole.
> 




More information about the Libva mailing list