[Mesa-dev] [PATCH 1/2] radeon/uvd, st/vdpau: fix video format reporting
Christian König
deathsimple at vodafone.de
Mon Oct 7 02:53:16 PDT 2013
> Yes, but this is a separate issue I think. We fail safely, and it
> doesn't matter for the common path when only PutBits is used.
>
> That said it shouldn't be too hard to convert between YV12 and NV12 or
> YUYV and UYVY. The chroma type is fixed for a given VdpVideoSurface so
> it doesn't make sense to request a 4:2:2 format for a 4:2:0 surface or
> vice versa.
Sounds like a plan to me.
Rico Schüller is already working on implementing conversions and from
his mail this morning it sounds like he has YUYV<->UYVY already working.
So don't worry to much about that we are going to fix that sooner or
later anyway.
Christian.
Am 07.10.2013 11:37, schrieb Grigori Goronzy:
> On 07.10.2013 11:25, Christian König wrote:
>> Am 01.10.2013 21:12, schrieb Ilia Mirkin:
>>> On Tue, Oct 1, 2013 at 3:06 PM, Grigori Goronzy <greg at chown.ath.cx>
>>> wrote:
>>>> UVD can only support NV12 in the case of hardware decoding, but we
>>>> can still use all other formats for software decoding. Use the UNKNOWN
>>>> entrypoint to signal that we're not interesting in hardware decoding.
>>> FYI, in nouveau, we use profile == UNKNOWN to determine this.
>>
>> Which is probably the better way of doing this.
>>
>
> Yup, I'll change this.
>
>> Apart from that you also need to fix the case where the application
>> wants to read the surface in a different format than the decoder decoded
>> it, e.g. format conversion while reading ti.
>>
>
> Yes, but this is a separate issue I think. We fail safely, and it
> doesn't matter for the common path when only PutBits is used.
>
> That said it shouldn't be too hard to convert between YV12 and NV12 or
> YUYV and UYVY. The chroma type is fixed for a given VdpVideoSurface so
> it doesn't make sense to request a 4:2:2 format for a 4:2:0 surface or
> vice versa.
>
> Best regards
> Grigori
>
>> Christian.
>>
>>>> ---
>>>> src/gallium/drivers/radeon/radeon_uvd.c | 7 +++++--
>>>> src/gallium/state_trackers/vdpau/query.c | 4 ++--
>>>> 2 files changed, 7 insertions(+), 4 deletions(-)
>>>>
>>>> diff --git a/src/gallium/drivers/radeon/radeon_uvd.c
>>>> b/src/gallium/drivers/radeon/radeon_uvd.c
>>>> index 382b410..161dee8 100644
>>>> --- a/src/gallium/drivers/radeon/radeon_uvd.c
>>>> +++ b/src/gallium/drivers/radeon/radeon_uvd.c
>>>> @@ -1154,6 +1154,9 @@ boolean ruvd_is_format_supported(struct
>>>> pipe_screen *screen,
>>>> enum pipe_video_profile profile,
>>>> enum pipe_video_entrypoint
>>>> entrypoint)
>>>> {
>>>> - /* we can only handle this one anyway */
>>>> - return format == PIPE_FORMAT_NV12;
>>>> + /* we can only handle this one with UVD */
>>>> + if (entrypoint != PIPE_VIDEO_ENTRYPOINT_UNKNOWN)
>>>> + return format == PIPE_FORMAT_NV12;
>>>> +
>>>> + return vl_video_buffer_is_format_supported(screen, format,
>>>> profile, entrypoint);
>>>> }
>>>> diff --git a/src/gallium/state_trackers/vdpau/query.c
>>>> b/src/gallium/state_trackers/vdpau/query.c
>>>> index 1d35252..e7486b3 100644
>>>> --- a/src/gallium/state_trackers/vdpau/query.c
>>>> +++ b/src/gallium/state_trackers/vdpau/query.c
>>>> @@ -147,7 +147,7 @@
>>>> vlVdpVideoSurfaceQueryGetPutBitsYCbCrCapabilities(VdpDevice device,
>>>> VdpChromaTyp
>>>> pscreen,
>>>> FormatYCBCRToPipe(bits_ycbcr_format),
>>>> PIPE_VIDEO_PROFILE_UNKNOWN,
>>>> - PIPE_VIDEO_ENTRYPOINT_BITSTREAM
>>>> + PIPE_VIDEO_ENTRYPOINT_UNKNOWN
>>>> );
>>>> pipe_mutex_unlock(dev->mutex);
>>>>
>>>> @@ -398,7 +398,7 @@
>>>> vlVdpOutputSurfaceQueryPutBitsYCbCrCapabilities(VdpDevice device,
>>>> VdpRGBAFormat
>>>> (
>>>> pscreen, ycbcr_format,
>>>> PIPE_VIDEO_PROFILE_UNKNOWN,
>>>> - PIPE_VIDEO_ENTRYPOINT_BITSTREAM
>>>> + PIPE_VIDEO_ENTRYPOINT_UNKNOWN
>>>> );
>>>> pipe_mutex_unlock(dev->mutex);
>>>>
>>>> --
>>>> 1.8.1.2
>>>>
>>>> _______________________________________________
>>>> mesa-dev mailing list
>>>> mesa-dev at lists.freedesktop.org
>>>> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
>>> _______________________________________________
>>> mesa-dev mailing list
>>> mesa-dev at lists.freedesktop.org
>>> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
>>
>
More information about the mesa-dev
mailing list