From 8ba68cc891c1ab1a81f5e16a62587eba5a0b5a72 Mon Sep 17 00:00:00 2001 From: yajrendrag Date: Fri, 3 Apr 2026 10:45:02 -0600 Subject: [PATCH] [video_transcoder] 0.0.19 --- changelog.md | 4 ++++ info.json | 2 +- lib/encoders/qsv.py | 5 ++--- lib/encoders/vaapi.py | 5 ++--- 4 files changed, 9 insertions(+), 7 deletions(-) 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):