Hi Mark,

I did misread that bit of documentation, thanks!

I'm trying to understand the supported_formats array found in hwcontext_cuda.c <https://github.com/FFmpeg/FFmpeg/blob/master/libavutil/hwcontext_cuda.c#L35>. Can the hw context be initialized so that the decoder returns YUV420P instead of NV12?

Saludos / Best regards,

*Sergio Basurco*
Coherent Synchro

On 05/06/2018 22:23, Mark Thompson wrote:
On 05/06/18 11:15, Sergio Basurco wrote:
I'm decoding h264 with ffmpeg. I want to use the hwaccel decoders. I'm using the cuvid 
decoder via API. In the fftools code there's a function "hwaccel_retrieve_data" 
that is supposed to convert the decoded frame (NV12) into any other format, I'm trying 
YUV420P.

The conversion does not return any error, however the resulting data is not 
correct. Here's the original NV12 frame:

https://imgur.com/a/jAb8h12

And here's the conversion to YUV420P (only avframe->data[0] and 
avframe->data[1] have any data, data[2] is expected to have the V data but it is 
missing).

https://imgur.com/a/ihQeJ0M


I think I'm on the right track, based on the code in hwcontext_cuda.c aparently 
YUV420P is a supported format, I cannot get my head around how I can tell the 
decoder to convert from NV12 to YUV420P though.

Any tips will be appreciated, I'll update if I find anything.
See the documentation for av_hwframe_transfer_data() 
(<http://ffmpeg.org/doxygen/trunk/hwcontext_8h.html#abf1b1664b8239d953ae2cac8b643815a>),
 in particular:

"If src has an AVHWFramesContext attached, then the format of dst (if set) must use 
one of the formats returned by av_hwframe_transfer_get_formats(src, 
AV_HWFRAME_TRANSFER_DIRECTION_FROM). If dst has an AVHWFramesContext attached, then the 
format of src must use one of the formats returned by 
av_hwframe_transfer_get_formats(dst, AV_HWFRAME_TRANSFER_DIRECTION_TO)"

For CUDA, no conversion during transfer is supported so the only usable output format 
returned by av_hwframe_transfer_get_formats() is the same format as the GPU-side 
frame itself (NV12 in your case): 
<http://git.videolan.org/?p=ffmpeg.git;a=blob;f=libavutil/hwcontext_cuda.c#l176>.

- Mark
_______________________________________________
Libav-user mailing list
[email protected]
http://ffmpeg.org/mailman/listinfo/libav-user

_______________________________________________
Libav-user mailing list
[email protected]
http://ffmpeg.org/mailman/listinfo/libav-user

Reply via email to