[FFmpeg-trac] #7968(avcodec:new): av_hwdevice_ctx_init fails for AV_HWDEVICE_TYPE_VAAPI with some drivers
FFmpeg
trac at avcodec.org
Fri Jun 21 17:49:05 EEST 2019
#7968: av_hwdevice_ctx_init fails for AV_HWDEVICE_TYPE_VAAPI with some drivers
----------------------------------+--------------------------------------
Reporter: swbrowne | Type: defect
Status: new | Priority: normal
Component: avcodec | Version: git-master
Keywords: | Blocked By:
Blocking: | Reproduced by developer: 0
Analyzed by developer: 0 |
----------------------------------+--------------------------------------
The problem occurs in `vaapi_decode_find_best_format` because it uses
`vaQuerySurfaceAttributes` to find the software format. The problem is the
versions of both `nvidia_drv_video.so` and `vdpau_drv_video.so` on Ubuntu
18.04 both fail with invalid parameter when specifying a null attribute
list to get the size required. This causes the following output:
{{{
Failed to query surface attributes: 18 (invalid parameter).
Failed setup for format vaapi_vld: hwaccel initialisation returned error.
}}}
In the latest release of libva-vdpau-driver (0.74b) they no longer return
with invalid parameter, but they only return 2 surface attributes and
neither of them are a pixel format so it will still fail. Note that this
hasn't changed in head as of this ticket either. See:
https://github.com/arekinath/libva-vdpau-
driver/blob/14b32901a96e5bf135d06e8dcf3d60a3c841fc14/src/vdpau_video.c#L314
I can work up a patch when I get some time, but my proposed solution would
be to ignore `vaQuerySurfaceAttribute` failures and if no pixel format is
found from surface attributes fall back to using `vaMaxNumImageFormats`
and `vaQueryImageFormats`.
--
Ticket URL: <https://trac.ffmpeg.org/ticket/7968>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list