[Libav-user] av_hwdevice_ctx_create fails when using AV_HWDEVICE_TYPE_CUDA
Strahinja Radman
dr.strashni at gmail.com
Tue Jul 5 14:29:18 EEST 2022
> On 5. 7. 2022., at 11:10, Santosh Kamble <skamble at cemtrexlabs.com> wrote:
>
> Helo,
> I am trying to decode a video stream in C++ application using ffmpeg cuda hardware acceleration.
> My windows machine has GPU is GTX1060 Update driver version 512.59
>
>
> err = av_hwdevice_ctx_create(&hw_device_ctx, AV_HWDEVICE_TYPE_CUDA,
> NULL, NULL, 0)
>
> Function fails with errorcode -12
> but when I pass AV_HWDEVICE_TYPE_DXVA2, it succeeds.
>
> ----------------------------
> My observations about ffmpeg cuda compiled tool :
> I observed that cuda based image decoding and video decoding is working fine using ffmpeg tool as below example works and use GPU for decoding purpose.
> ex1. ffmpeg -hwaccel cuda -i "D:\myvideo.avi" output.mp4
> ex2. ffmpeg -hwaccel cuda -i D:\myvideo.mp4 -y ./tests/%04d.jpg
>
> also the tool shows it supports cuda hardware acceleration.
> command: ffmpeg.exe -hwaccels
> output: ffmpeg version 4.4.git Copyright (c) 2000-2022 the FFmpeg developers
> built with Microsoft (R) C/C++ Optimizing Compiler Version 19.29.30140 for x64
> configuration: --enable-nonfree --enable-shared --enable-ffnvcodec --enable-cuda-llvm --enable-gpl --disable-debug --enable-cuda-nvcc --enable-libnpp --toolchain=msvc --extra-cflags=-I../nv_sdk --extra-ldflags='-libpath:../nv_sdk' --nvccflags='-gencode arch=compute_60,code=sm_60 -O2'
> libavutil 57. 24.101 / 57. 24.101
> libavcodec 59. 28.100 / 59. 28.100
> libavformat 59. 23.100 / 59. 23.100
> libavdevice 59. 6.100 / 59. 6.100
> libavfilter 8. 38.100 / 8. 38.100
> libswscale 6. 6.100 / 6. 6.100
> libswresample 4. 6.100 / 4. 6.100
> libpostproc 56. 5.100 / 56. 5.100
> Hardware acceleration methods:
> cuda
> dxva2
> d3d11va
>
>
> -----------------------------------------
>
>
> So it looks like the compiled libraries are fine. I am missing some other thing.
> Can someone help on this cuda based decoding using ffmpeg.
>
>
> Thanks
> Santosh
> _______________________________________________
> Libav-user mailing list
> Libav-user at ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/libav-user
>
> To unsubscribe, visit link above, or email
> libav-user-request at ffmpeg.org with subject "unsubscribeā€¯.
Hello Santosh,
You can try this piece of code in order to get the type by name or search for available types for your GPU.
type = av_hwdevice_find_type_by_name("cuda");
if (type == AV_HWDEVICE_TYPE_NONE)
{
LOG(LOG_LEVEL_ERROR) << "Device type " << "cuda" << " is not supported.";
LOG(LOG_LEVEL_ERROR) << "Available device types:";
while ((type = av_hwdevice_iterate_types(type)) != AV_HWDEVICE_TYPE_NONE)
LOG(LOG_LEVEL_INFO) << av_hwdevice_get_type_name(type);
}
More information about the Libav-user
mailing list