Skip to content

Commit 31fb4dd

Browse files
committed
Fix the libsvtav1 encoder integration so the stream mapper uses the correct encoder args contract
1 parent 00ce2b0 commit 31fb4dd

3 files changed

Lines changed: 23 additions & 11 deletions

File tree

changelog.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
**<span style="color:#56adda">0.1.20</span>**
22
- Corrected encoder options setting in plugin stream mapper for libsvtav1
3+
- Fix the libsvtav1 encoder integration so the stream mapper uses the correct encoder args contract
34

45
**<span style="color:#56adda">0.1.19</span>**
56
- adds the -reinit_filter:0 option for all decode modes of vaapi and qsv when h/w encode is used.

info.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,5 @@
1212
"on_worker_process": 1
1313
},
1414
"tags": "video,ffmpeg",
15-
"version": "0.1.19"
15+
"version": "0.1.20"
1616
}

lib/encoders/libsvtav1.py

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -99,21 +99,27 @@ def encoder_details(self, encoder):
9999
provides = self.provides()
100100
return provides.get(encoder, {})
101101

102-
def stream_args(self, stream_id, filter_state=None):
103-
stream_encoding = []
102+
def stream_args(self, stream_info, stream_id, encoder_name, filter_state=None):
103+
encoder_args = []
104+
stream_args = []
104105

105106
# Use defaults for basic mode
106107
if self.settings.get_setting('mode') in ['basic']:
107108
defaults = self.options()
108-
stream_encoding += [
109+
stream_args += [
109110
'-preset', str(defaults.get('preset')),
110111
]
111112
# TODO: Calculate best crf based on source bitrate
112113
default_crf = defaults.get('constant_quality_scale')
113114
if self.settings.get_setting('video_encoder') in ['libsvtav1']:
114115
default_crf = 23
115-
stream_encoding += ['-crf', str(default_crf)]
116-
return stream_encoding
116+
stream_args += ['-crf', str(default_crf)]
117+
return {
118+
"generic_kwargs": {},
119+
"advanced_kwargs": {},
120+
"encoder_args": encoder_args,
121+
"stream_args": stream_args,
122+
}
117123

118124
stav1_params = ["enable-stat-report=1"]
119125
stav1_params += ['tune=' + str(self.settings.get_setting('tune_stvav1'))]
@@ -136,23 +142,28 @@ def stream_args(self, stream_id, filter_state=None):
136142
# Add additional parameters for SVT-AV1
137143
stav1_params += self.settings.get_setting('encoder_svtav1_additional_params')
138144

139-
stream_encoding += ['-svtav1-params', ":".join(stav1_params)]
145+
stream_args += ['-svtav1-params', ":".join(stav1_params)]
140146

141147
# Add the preset
142148
if self.settings.get_setting('preset'):
143-
stream_encoding += ['-preset', str(self.settings.get_setting('preset'))]
149+
stream_args += ['-preset', str(self.settings.get_setting('preset'))]
144150

145151
if self.settings.get_setting('encoder_ratecontrol_method') in ['CRF']:
146152
# Set values for constant quantizer scale
147-
stream_encoding += [
153+
stream_args += [
148154
'-crf', str(self.settings.get_setting('constant_quality_scale')),
149155
]
150156

151157
if self.settings.get_setting('video_pix_fmt') not in ['auto']:
152158
# Set the pixel format
153-
stream_encoding += ['-pix_fmt', str(self.settings.get_setting('video_pix_fmt'))]
159+
stream_args += ['-pix_fmt', str(self.settings.get_setting('video_pix_fmt'))]
154160

155-
return stream_encoding
161+
return {
162+
"generic_kwargs": {},
163+
"advanced_kwargs": {},
164+
"encoder_args": encoder_args,
165+
"stream_args": stream_args,
166+
}
156167

157168
def __set_default_option(self, select_options, key, default_option=None):
158169
"""

0 commit comments

Comments
 (0)