aboutsummaryrefslogtreecommitdiffstats
path: root/avtools/avconv_filter.c
diff options
context:
space:
mode:
authorMark Thompson <sw@jkqxz.net>2017-03-04 23:57:38 +0000
committerMark Thompson <sw@jkqxz.net>2017-04-30 16:13:50 +0100
commite669db76108de8d7a36c2274c99da82cc94d1dd1 (patch)
tree319e97635b7f98bd061332867110950d0a83b683 /avtools/avconv_filter.c
parent9203aac22874c7259e155b7d00f1f33bb1355129 (diff)
downloadffmpeg-e669db76108de8d7a36c2274c99da82cc94d1dd1.tar.gz
avconv: Support setting the hardware device to use when filtering
This only supports one device globally, but more can be used by passing them with input streams in hw_frames_ctx or by deriving new devices inside a filter graph with hwmap.
Diffstat (limited to 'avtools/avconv_filter.c')
-rw-r--r--avtools/avconv_filter.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/avtools/avconv_filter.c b/avtools/avconv_filter.c
index e53dcd271c..884478da27 100644
--- a/avtools/avconv_filter.c
+++ b/avtools/avconv_filter.c
@@ -711,9 +711,15 @@ int configure_filtergraph(FilterGraph *fg)
if ((ret = avfilter_graph_parse2(fg->graph, graph_desc, &inputs, &outputs)) < 0)
goto fail;
- if (hw_device_ctx) {
+ if (filter_hw_device || hw_device_ctx) {
+ AVBufferRef *device = filter_hw_device ? filter_hw_device->device_ref
+ : hw_device_ctx;
for (i = 0; i < fg->graph->nb_filters; i++) {
- fg->graph->filters[i]->hw_device_ctx = av_buffer_ref(hw_device_ctx);
+ fg->graph->filters[i]->hw_device_ctx = av_buffer_ref(device);
+ if (!fg->graph->filters[i]->hw_device_ctx) {
+ ret = AVERROR(ENOMEM);
+ goto fail;
+ }
}
}