Skip to content

Commit c284c3a

Browse files
cdgriffithnoelleleighluzpaz
authored
Version 5.11.0 (#650)
* Adding parallel encoding options for rigaya hardware encoders (thanks to Hexenhammer) * Adding builds for Ubuntu 22.04 and mac 13 again * Changing SVT-AV1 to single pass only due to ffmpeg not allowing passlog files properly * Changing SVT-AV1 to CRF quantization mode by default * Fixing #642 Possible to create a profile without bitrate specified for audio stream (thanks to Xoanon88) * Fixing #644 various typos (thanks to luzpaz) * Fixing #646 PydanticSerializationUnexpectedValue warning during startup (thanks to Noelle Leigh) * Fixing #647 another typo (thanks to Noelle Leigh) * Fixing #649 1-Pass Bitrate stored in x265 profile not honored (thanks to Xoanon88) * Fixing how program is centered on multiple monitors * Fixing do not pass infer_no_subs to encc encoders --------- Co-authored-by: Noelle Leigh <[email protected]> Co-authored-by: luzpaz <[email protected]>
1 parent 76bbe3c commit c284c3a

37 files changed

+168
-45
lines changed

.github/workflows/build.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ jobs:
99
build-nix:
1010
strategy:
1111
matrix:
12-
os: [ ubuntu-24.04, macos-14 ]
12+
os: [ ubuntu-22.04, ubuntu-24.04, macos-13, macos-14 ]
1313
runs-on: ${{ matrix.os }}
1414

1515
steps:

CHANGES

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,19 @@
11
# Changelog
22

3+
## Version 5.11.0
4+
5+
* Adding parallel encoding options for rigaya hardware encoders (thanks to Hexenhammer)
6+
* Adding builds for Ubuntu 22.04 and mac 13 again
7+
* Changing SVT-AV1 to single pass only due to ffmpeg not allowing passlog files properly
8+
* Changing SVT-AV1 to CRF quantization mode by default
9+
* Fixing #642 Possible to create a profile without bitrate specified for audio stream (thanks to Xoanon88)
10+
* Fixing #644 various typos (thanks to luzpaz)
11+
* Fixing #646 PydanticSerializationUnexpectedValue warning during startup (thanks to Noelle Leigh)
12+
* Fixing #647 another typo (thanks to Noelle Leigh)
13+
* Fixing #649 1-Pass Bitrate stored in x265 profile not honored (thanks to Xoanon88)
14+
* Fixing how program is centered on multiple monitors
15+
* Fixing do not pass infer_no_subs to encc encoders
16+
317
## Version 5.10.0
418

519
* Adding global disable interlace check (thanks to Hexenhammer)

fastflix/__main__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ def start_fastflix():
2323
traceback.print_exc()
2424
input(
2525
"Error while running FastFlix!\n"
26-
"Plese report this issue on https://github.com/cdgriffith/FastFlix/issues (press any key to exit)"
26+
"Please report this issue on https://github.com/cdgriffith/FastFlix/issues (press any key to exit)"
2727
)
2828
except KeyboardInterrupt:
2929
pass

fastflix/application.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -196,8 +196,7 @@ def app_setup(
196196
sys.exit(1)
197197

198198
if app.fastflix.config.theme != "system":
199-
QtCore.QDir.addSearchPath(app.fastflix.config.theme, str(breeze_styles_path / app.fastflix.config.theme))
200-
file = QtCore.QFile(f"{app.fastflix.config.theme}:stylesheet.qss")
199+
file = QtCore.QFile(str(breeze_styles_path / app.fastflix.config.theme / "stylesheet.qss"))
201200
file.open(QtCore.QFile.OpenModeFlag.ReadOnly | QtCore.QFile.OpenModeFlag.Text)
202201
stream = QtCore.QTextStream(file)
203202
data = stream.readAll()
@@ -233,7 +232,9 @@ def app_setup(
233232
container = Container(app)
234233
container.show()
235234

236-
container.move(QtGui.QGuiApplication.primaryScreen().availableGeometry().center() - container.rect().center())
235+
# container.move(QtGui.QGuiApplication.primaryScreen().availableGeometry().center() - container.rect().center())
236+
screen_geometry = QtGui.QGuiApplication.primaryScreen().availableGeometry()
237+
container.move(screen_geometry.center() - container.rect().center())
237238

238239
if not app.fastflix.config.disable_version_check:
239240
latest_fastflix(app=app, show_new_dialog=False)
@@ -257,7 +258,7 @@ def start_app(worker_queue, status_queue, log_queue, queue_list, queue_lock, por
257258
)
258259

259260
try:
260-
app.exec_()
261+
app.exec()
261262
except Exception:
262263
logger.exception("Error while running FastFlix")
263264
raise

fastflix/data/languages.yaml

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10757,3 +10757,33 @@ Automatically download FFmpeg?:
1075710757
ukr: Автоматично завантажити FFmpeg?
1075810758
kor: FFmpeg를 자동으로 다운로드하시겠습니까?
1075910759
ron: Descărcați automat FFmpeg?
10760+
Parallel Encoding:
10761+
eng: Parallel Encoding
10762+
deu: Parallele Kodierung
10763+
fra: Encodage parallèle
10764+
ita: Codifica parallela
10765+
spa: Codificación paralela
10766+
jpn: パラレル・エンコーディング
10767+
rus: Параллельное кодирование
10768+
por: Codificação paralela
10769+
swe: Parallell kodning
10770+
pol: Kodowanie równoległe
10771+
chs: 并行编码
10772+
ukr: Паралельне кодування
10773+
kor: 병렬 인코딩
10774+
ron: Codificare paralelă
10775+
Enable either auto split or parallel encoding mode.:
10776+
eng: Enable either auto split or parallel encoding mode.
10777+
deu: Aktivieren Sie entweder die automatische Aufteilung oder den parallelen Codierungsmodus.
10778+
fra: Activer le mode d'encodage auto split ou parallèle.
10779+
ita: Abilitare la modalità di codifica automatica o parallela.
10780+
spa: Habilita el modo de división automática o de codificación paralela.
10781+
jpn: 自動分割またはパラレルエンコーディングモードのいずれかを有効にする。
10782+
rus: Включите режим автоматического разделения или параллельного кодирования.
10783+
por: Ativar o modo de codificação automática ou paralela.
10784+
swe: Aktivera antingen auto split eller parallell kodning.
10785+
pol: Włącz tryb automatycznego podziału lub kodowania równoległego.
10786+
chs: 启用自动分割或并行编码模式。
10787+
ukr: Увімкніть режим автоматичного розділення або паралельного кодування.
10788+
kor: 자동 분할 또는 병렬 인코딩 모드를 활성화합니다.
10789+
ron: Activați divizarea automată sau modul de codare paralelă.

fastflix/encoders/common/encc_helpers.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -184,5 +184,5 @@ def build_subtitle(subtitle_tracks: list[SubtitleTrack], subtitle_streams, video
184184

185185
commands = f" --sub-copy {','.join(copies)} {' '.join(command_list)}" if copies else f" {' '.join(command_list)}"
186186
if commands:
187-
return f"{commands} -m default_mode:infer_no_subs"
187+
return commands
188188
return ""

fastflix/encoders/common/setting_panel.py

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -346,7 +346,10 @@ def _add_modes(
346346
disable_custom_qp=False,
347347
show_bitrate_passes=False,
348348
disable_bitrate=False,
349+
qp_display_name=None,
349350
):
351+
if not qp_display_name:
352+
qp_display_name = qp_name.upper()
350353
self.recommended_bitrates = recommended_bitrates
351354
self.recommended_qps = recommended_qps
352355
self.qp_name = qp_name
@@ -372,7 +375,6 @@ def _add_modes(
372375
self.widgets.bitrate.addItems(recommended_bitrates)
373376
self.widgets.bitrate_passes = QtWidgets.QComboBox()
374377
self.widgets.bitrate_passes.addItems(["1", "2"])
375-
self.widgets.bitrate_passes.setCurrentIndex(1)
376378
self.widgets.bitrate_passes.currentIndexChanged.connect(lambda: self.mode_update())
377379
config_opt = self.app.fastflix.config.encoder_opt(self.profile_name, "bitrate")
378380
custom_bitrate = False
@@ -396,14 +398,17 @@ def _add_modes(
396398
bitrate_box_layout.addWidget(self.widgets.bitrate, 1)
397399
bitrate_box_layout.addStretch(1)
398400
if show_bitrate_passes:
401+
self.widgets.bitrate_passes.setCurrentIndex(
402+
int(self.app.fastflix.config.encoder_opt(self.profile_name, "bitrate_passes")) - 1
403+
)
399404
bitrate_box_layout.addWidget(QtWidgets.QLabel(t("Passes") + ":"))
400405
bitrate_box_layout.addWidget(self.widgets.bitrate_passes)
401406
bitrate_box_layout.addStretch(1)
402407
bitrate_box_layout.addWidget(QtWidgets.QLabel(t("Custom") + ":"))
403408
bitrate_box_layout.addWidget(self.widgets.custom_bitrate)
404409
bitrate_box_layout.addWidget(QtWidgets.QLabel("k"))
405410

406-
self.qp_radio = QtWidgets.QRadioButton(qp_name.upper())
411+
self.qp_radio = QtWidgets.QRadioButton(qp_display_name)
407412
self.qp_radio.setChecked(True)
408413
self.qp_radio.setFixedWidth(80)
409414
self.qp_radio.setToolTip(qp_help)
@@ -653,6 +658,18 @@ def init_dhdr10_info(self):
653658
)
654659
return layout
655660

661+
def init_parallel_mode(self, add_split=False):
662+
options = ["none", "parallel"]
663+
if add_split:
664+
options.insert(1, "split")
665+
return self._add_combo_box(
666+
label="Parallel Encoding",
667+
widget_name="split_mode",
668+
options=options,
669+
opt="split_mode",
670+
tooltip="Enable either auto split or parallel encoding mode.",
671+
)
672+
656673

657674
class QSVEncPanel(RigayaPanel):
658675
def init_adapt_ref(self):

fastflix/encoders/hevc_x265/settings_panel.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -566,7 +566,8 @@ def init_modes(self):
566566
return self._add_modes(recommended_bitrates, recommended_crfs, qp_name="crf", show_bitrate_passes=True)
567567

568568
def mode_update(self):
569-
self.widgets.custom_crf.setDisabled(self.widgets.crf.currentText() != "Custom")
569+
if "custom_crf" in self.widgets:
570+
self.widgets.custom_crf.setDisabled(self.widgets.crf.currentText() != "Custom")
570571
self.widgets.custom_bitrate.setDisabled(self.widgets.bitrate.currentText() != "Custom")
571572
self.main.build_commands()
572573

fastflix/encoders/nvencc_av1/command_builder.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,12 @@ def build(fastflix: FastFlix):
105105

106106
source_fps = f"--fps {video.video_settings.source_fps}" if video.video_settings.source_fps else ""
107107

108+
split_mode = ""
109+
if settings.split_mode == "split":
110+
split_mode = f"--split-enc auto_forced"
111+
elif settings.split_mode == "parallel":
112+
split_mode = f"--parallel auto"
113+
108114
command = [
109115
f'"{clean_file_string(fastflix.config.nvencc)}"',
110116
rigaya_avformat_reader(fastflix),
@@ -160,6 +166,7 @@ def build(fastflix: FastFlix):
160166
(f"--interlace {video.interlaced}" if video.interlaced and video.interlaced != "False" else ""),
161167
("--vpp-yadif" if video.video_settings.deinterlace else ""),
162168
remove_hdr,
169+
split_mode,
163170
"--psnr --ssim" if settings.metrics else "",
164171
build_audio(video.audio_tracks, video.streams.audio),
165172
build_subtitle(video.subtitle_tracks, video.streams.subtitle, video_height=video.height),

fastflix/encoders/nvencc_av1/settings_panel.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,8 @@ def __init__(self, parent, main, app: FastFlixApp):
128128
even_more.addLayout(self.init_metrics())
129129
grid.addLayout(even_more, 7, 2, 1, 4)
130130

131-
grid.addLayout(self.init_dhdr10_info(), 8, 2, 1, 4)
131+
grid.addLayout(self.init_dhdr10_info(), 8, 2, 1, 2)
132+
grid.addLayout(self.init_parallel_mode(add_split=True), 8, 4, 1, 2)
132133

133134
grid.setRowStretch(9, 1)
134135

@@ -415,6 +416,7 @@ def update_video_encoder_settings(self):
415416
b_ref_mode=self.widgets.b_ref_mode.currentText(),
416417
device=int(self.widgets.device.currentText().split(":", 1)[0] or 0),
417418
decoder=self.widgets.decoder.currentText(),
419+
split_mode=self.widgets.split_mode.currentText(),
418420
)
419421

420422
encode_type, q_value = self.get_mode_settings()

0 commit comments

Comments
 (0)