[VDPAU] [PATCH] Add a progressive frame flag to VdpVideoSurfaces.

Jose Soltren jsoltren at nvidia.com
Tue Sep 15 17:55:30 PDT 2015


Hi,

On 2015/09/15, 15:22 , "Stephen Warren" <swarren at nvidia.com> wrote:

>Jose Soltren wrote at Tuesday, September 15, 2015 12:54 PM:
>> This change adds two top level functions to the VDPAU API:
>> 
>>     VdpVideoMixerSetProgressive
>>     VdpVideoMixerGetProgressive
>
>It seems to add VdpVideoSurface[GS]etProgressive.

Yes, that's right; simple typo.

>Does it make sense to introduce a VdpVideoSurfaceSetAttributeValues()
>instead to avoid a proliferation of APIs, and to be consistent with
>other object types?

That seems okay to me. I can work up a change with this interface instead.

>> Next generation codecs - such as H.265/HEVC - do not support
>> interlaced content natively. Rather, they leave it to imple-
>> mentations to decide the correct behavior for handling legacy
>> interlaced content.
>> 
>> Prior to the introduction of such codecs, this specification
>> left the designation of a particular VdpVideoSurface as a
>> _TOP_FIELD, _BOTTOM_FIELD, or _FRAME to the enumeration
>> VdpVideoMixerPictureStructure, passed to VdpVideoMixerRender.
>> It is possible, and permitted by this API specification, for
>> an implementation to set internal state on the backing store
>> of a VdpVideoSurface when handling a call to VdpVideoMixerRender.
>> 
>> Not all use cases of a VdpVideoSurface will involve a trip
>> through a call to VdpVideoMixerRender. It is a legal use of the
>> VDPAU API to access a VdpVideoSurface directly using
>> VdpVideoSurfaceGetBitsYCbCr and VdpVideoSurfacePutBitsYCbCr.
>> In such a situation, it is helpful to be able to specify,
>> explicitly, and from outside of the implementation, whether
>> a VdpVideoSurface contains either one full frame, or two
>> half frames.
>
>How does this interact with the surface layouts exposed via GL/CUDA video
>surface interop?

I don't know. I have not researched this yet.

>> diff --git a/include/vdpau/vdpau.h b/include/vdpau/vdpau.h
>
>> +typedef VdpStatus VdpVideoSurfaceSetProgressive(
>> +    VdpVideoSurface      surface,
>> +    VdpBool *            is_progressive
>
>I think that only needs to be a pointer for the Get API?

Yes, but if we move to an Attributes API this may be obsoleted. I'm not
sure how valuable a Get function is. Then again, the implementation can
change these attributes in addition to the client so perhaps it does make
sense after all.

I'll work on sending a revised version of this patch in the next few days.

Thanks,

--José

--

nvpublic



More information about the VDPAU mailing list