summaryrefslogtreecommitdiff
path: root/fftools
diff options
context:
space:
mode:
authorTimo Rothenpieler <timo@rothenpieler.org>2017-11-10 22:06:22 +0100
committerTimo Rothenpieler <timo@rothenpieler.org>2017-11-11 14:19:05 +0100
commit6a4d1c9063174234ca439244cf8f5f534afa1c28 (patch)
tree584498eedc7177d2e9940283aa4ab7bb79d59730 /fftools
parentbc509617310d60216e1f1433a13bebe16d4d9d40 (diff)
ffmpeg: use explicitly requested hwaccel only
With there being two hwaccels that use the CUDA pix_fmt now, just relying on the pix_fmt to identify the selected hwaccel is not enough anymore. So this checks if the user explicitly selected a hwaccel, and only accepts that one.
Diffstat (limited to 'fftools')
-rw-r--r--fftools/ffmpeg.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/fftools/ffmpeg.c b/fftools/ffmpeg.c
index 0aff1d369d..db391f7f7d 100644
--- a/fftools/ffmpeg.c
+++ b/fftools/ffmpeg.c
@@ -2782,11 +2782,12 @@ fail:
av_freep(&avc);
}
-static const HWAccel *get_hwaccel(enum AVPixelFormat pix_fmt)
+static const HWAccel *get_hwaccel(enum AVPixelFormat pix_fmt, enum HWAccelID selected_hwaccel_id)
{
int i;
for (i = 0; hwaccels[i].name; i++)
- if (hwaccels[i].pix_fmt == pix_fmt)
+ if (hwaccels[i].pix_fmt == pix_fmt &&
+ (!selected_hwaccel_id || selected_hwaccel_id == HWACCEL_AUTO || hwaccels[i].id == selected_hwaccel_id))
return &hwaccels[i];
return NULL;
}
@@ -2804,7 +2805,7 @@ static enum AVPixelFormat get_format(AVCodecContext *s, const enum AVPixelFormat
if (!(desc->flags & AV_PIX_FMT_FLAG_HWACCEL))
break;
- hwaccel = get_hwaccel(*p);
+ hwaccel = get_hwaccel(*p, ist->hwaccel_id);
if (!hwaccel ||
(ist->active_hwaccel_id && ist->active_hwaccel_id != hwaccel->id) ||
(ist->hwaccel_id != HWACCEL_AUTO && ist->hwaccel_id != hwaccel->id))