diff --git a/changelog.md b/changelog.md
index f5a3742..509e1e5 100644
--- a/changelog.md
+++ b/changelog.md
@@ -1,4 +1,8 @@
+**0.1.19**
+- adds the -reinit_filter:0 option for all decode modes of vaapi and qsv when h/w encode is used.
+- Needed since vaapi & qsv use hwupload to get the frame into GPU memory and will generate an error if reinit_filter is not set to 0
+
**0.1.18**
- adds similar logic for qsv and vaapi as was done for nvenc in 0.1.17
- adds new qsv_safe_decode and vaapi_safe_decode options to the respective encoders
diff --git a/info.json b/info.json
index 9c29d34..2566096 100644
--- a/info.json
+++ b/info.json
@@ -12,5 +12,5 @@
"on_worker_process": 1
},
"tags": "video,ffmpeg",
- "version": "0.1.18"
+ "version": "0.1.19"
}
diff --git a/lib/encoders/qsv.py b/lib/encoders/qsv.py
index 03043f5..adbcd72 100644
--- a/lib/encoders/qsv.py
+++ b/lib/encoders/qsv.py
@@ -166,9 +166,11 @@ def generate_default_args(self):
"""
# Encode only (no decoding)
# REF: https://trac.ffmpeg.org/wiki/Hardware/QuickSync#Transcode
+ # set reinit_filter here for both h/w & s/w decode paths as both use hwupload
generic_kwargs = {
"-init_hw_device": "qsv=qsv0",
"-filter_hw_device": "qsv0",
+ "-reinit_filter": "0",
}
advanced_kwargs = {}
# Check if we are using a HW accelerated decoder> Modify args as required
@@ -178,9 +180,6 @@ def generate_default_args(self):
"-hwaccel_output_format": "qsv",
})
- if self.settings.get_setting('qsv_safe_decode'):
- generic_kwargs["-reinit_filter"] = "0"
-
return generic_kwargs, advanced_kwargs
def generate_filtergraphs(self, current_filter_args, smart_filters, encoder_name):
diff --git a/lib/encoders/vaapi.py b/lib/encoders/vaapi.py
index 88c4fd2..928f169 100644
--- a/lib/encoders/vaapi.py
+++ b/lib/encoders/vaapi.py
@@ -127,12 +127,14 @@ def generate_default_args(self):
dev_id = 'vaapi0'
# Configure args such that when the input may or may not be able to be decoded with hardware we can do:
# REF: https://trac.ffmpeg.org/wiki/Hardware/VAAPI#Encoding
+ # set reinit_filter here for both h/w & s/w decode paths as both use hwupload
generic_kwargs = {
"-init_hw_device": "vaapi={}:{}".format(dev_id, hardware_device.get('hwaccel_device_path')),
"-hwaccel": "vaapi",
"-hwaccel_output_format": "vaapi",
"-hwaccel_device": dev_id,
"-filter_hw_device": dev_id,
+ "-reinit_filter": "0",
}
advanced_kwargs = {}
else:
@@ -143,9 +145,6 @@ def generate_default_args(self):
}
advanced_kwargs = {}
- if self.settings.get_setting('vaapi_safe_decode'):
- generic_kwargs["-reinit_filter"] = "0"
-
return generic_kwargs, advanced_kwargs
def generate_filtergraphs(self, current_filter_args, smart_filters, encoder_name):