mirror of
https://github.com/librempeg/librempeg
synced 2024-11-22 18:49:58 +00:00
ffmpeg_hw: make hardware selection for filters more user friendly
When a device is derived from a source device, there are at least 2 devices, and usually the derived device is the expected device, so let's pick the last device if user doesn't specify the filter device with filter_hw_device option After applying this patch, the command below can work: $> ffmpeg -init_hw_device vaapi=va:/dev/dri/renderD128 -init_hw_device qsv=hw@va -f lavfi -i yuvtestsrc -vf format=nv12,hwupload=extra_hw_frames=64 -c:v h264_qsv -y out.h264 Reviewed-by: Soft Works <softworkz@hotmail.com> Signed-off-by: James Almer <jamrial@gmail.com>
This commit is contained in:
parent
cd4e6e404b
commit
6803d8b440
@ -553,15 +553,21 @@ int hw_device_setup_for_filter(FilterGraph *fg)
|
|||||||
HWDevice *dev;
|
HWDevice *dev;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
// If the user has supplied exactly one hardware device then just
|
// Pick the last hardware device if the user doesn't pick the device for
|
||||||
// give it straight to every filter for convenience. If more than
|
// filters explicitly with the filter_hw_device option.
|
||||||
// one device is available then the user needs to pick one explcitly
|
|
||||||
// with the filter_hw_device option.
|
|
||||||
if (filter_hw_device)
|
if (filter_hw_device)
|
||||||
dev = filter_hw_device;
|
dev = filter_hw_device;
|
||||||
else if (nb_hw_devices == 1)
|
else if (nb_hw_devices > 0) {
|
||||||
dev = hw_devices[0];
|
dev = hw_devices[nb_hw_devices - 1];
|
||||||
else
|
|
||||||
|
if (nb_hw_devices > 1)
|
||||||
|
av_log(NULL, AV_LOG_WARNING, "There are %d hardware devices. device "
|
||||||
|
"%s of type %s is picked for filters by default. Set hardware "
|
||||||
|
"device explicitly with the filter_hw_device option if device "
|
||||||
|
"%s is not usable for filters.\n",
|
||||||
|
nb_hw_devices, dev->name,
|
||||||
|
av_hwdevice_get_type_name(dev->type), dev->name);
|
||||||
|
} else
|
||||||
dev = NULL;
|
dev = NULL;
|
||||||
|
|
||||||
if (dev) {
|
if (dev) {
|
||||||
|
Loading…
Reference in New Issue
Block a user