[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