Skip to content

Commit

Permalink
* Fixing #370 Audio Match not working correctly after 4.10.0 (thanks …
Browse files Browse the repository at this point in the history
…to Hexenhammer)

* Fixing #378 Deprecated features used for SVT-AV1 (thanks to DesertCookie)
* Fixing #380 Not all subtitles have "codec_name" (thanks to No Name)
* Fixing configuration lookup for hdr10+ tool
  • Loading branch information
cdgriffith committed Nov 26, 2022
1 parent ec54941 commit 44056a4
Show file tree
Hide file tree
Showing 7 changed files with 38 additions and 30 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/build.yaml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
name: Build executables
on:
push:
branches: [ master, build ]
branches: [ master, build, 4.x ]
pull_request:
branches: [ master, develop ]

Expand Down
7 changes: 7 additions & 0 deletions CHANGES
Original file line number Diff line number Diff line change
@@ -1,5 +1,12 @@
# Changelog

## Version 4.10.1

* Fixing #370 Audio Match not working correctly after 4.10.0 (thanks to Hexenhammer)
* Fixing #378 Deprecated features used for SVT-AV1 (thanks to DesertCookie)
* Fixing #380 Not all subtitles have "codec_name" (thanks to No Name)
* Fixing configuration lookup for hdr10+ tool

## Version 4.10.0

* Adding AVIF support using libsvtav1
Expand Down
18 changes: 8 additions & 10 deletions fastflix/encoders/svt_av1/command_builder.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
# -*- coding: utf-8 -*-

import logging
import re
import secrets

import reusables
Expand All @@ -19,17 +18,16 @@ def build(fastflix: FastFlix):
settings: SVTAV1Settings = fastflix.current_video.video_settings.video_encoder_settings
beginning, ending = generate_all(fastflix, "libsvtav1")

beginning += (
f"-strict experimental "
f"-preset {settings.speed} "
f"-tile_columns {settings.tile_columns} "
f"-tile_rows {settings.tile_rows} "
f"-tier {settings.tier} "
f"-sc_detection {'true' if settings.scene_detection else 'false'} "
f"{generate_color_details(fastflix)} "
)
beginning += f"-strict experimental " f"-preset {settings.speed} " f"{generate_color_details(fastflix)} "

svtav1_params = settings.svtav1_params.copy()
svtav1_params.extend(
[
f"tile-columns={settings.tile_columns}",
f"tile-rows={settings.tile_rows}",
f"scd={1 if settings.scene_detection else 0}",
]
)

if not fastflix.current_video.video_settings.remove_hdr:

Expand Down
9 changes: 2 additions & 7 deletions fastflix/encoders/svt_av1/settings_panel.py
Original file line number Diff line number Diff line change
Expand Up @@ -76,10 +76,9 @@ def __init__(self, parent, main, app: FastFlixApp):
grid.addLayout(self.init_pix_fmt(), 1, 0, 1, 2)
grid.addLayout(self.init_tile_rows(), 2, 0, 1, 2)
grid.addLayout(self.init_tile_columns(), 3, 0, 1, 2)
grid.addLayout(self.init_tier(), 4, 0, 1, 2)
grid.addLayout(self.init_qp_or_crf(), 5, 0, 1, 2)
grid.addLayout(self.init_sc_detection(), 6, 0, 1, 2)
grid.addLayout(self.init_max_mux(), 7, 0, 1, 2)
grid.addLayout(self.init_sc_detection(), 4, 0, 1, 2)
grid.addLayout(self.init_max_mux(), 5, 0, 1, 2)
grid.addLayout(self.init_modes(), 0, 2, 5, 4)
grid.addLayout(self.init_single_pass(), 6, 2, 1, 1)
grid.addLayout(self.init_svtav1_params(), 5, 2, 1, 4)
Expand Down Expand Up @@ -126,9 +125,6 @@ def init_pix_fmt(self):
opt="pix_fmt",
)

def init_tier(self):
return self._add_combo_box(label="Tier", options=["main", "high"], widget_name="tier", opt="tier")

def init_sc_detection(self):
return self._add_combo_box(
label="Scene Detection", options=["false", "true"], widget_name="sc_detection", opt="scene_detection"
Expand Down Expand Up @@ -194,7 +190,6 @@ def update_video_encoder_settings(self):
tile_columns=self.widgets.tile_columns.currentText(),
tile_rows=self.widgets.tile_rows.currentText(),
single_pass=self.widgets.single_pass.isChecked(),
tier=self.widgets.tier.currentText(),
scene_detection=bool(self.widgets.sc_detection.currentIndex()),
qp_mode=self.widgets.qp_mode.currentText(),
pix_fmt=self.widgets.pix_fmt.currentText().split(":")[1].strip(),
Expand Down
4 changes: 3 additions & 1 deletion fastflix/models/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -246,11 +246,13 @@ def load(self):
except MissingFF:
raise err from None
if not self.hdr10plus_parser:
self.hdr10plus_parser = where("hdr10plus_parser")
self.hdr10plus_parser = find_hdr10plus_tool()
if not self.nvencc:
self.nvencc = where("NVEncC64") or where("NVEncC")
if not self.vceencc:
self.vceencc = where("VCEEncC64") or where("VCEEncC")
if not self.qsvencc:
self.qsvencc = where("QSVEncC64") or where("QSVEncC")
self.profiles.update(get_preset_defaults())

if self.selected_profile not in self.profiles:
Expand Down
26 changes: 16 additions & 10 deletions fastflix/widgets/panels/audio_panel.py
Original file line number Diff line number Diff line change
Expand Up @@ -368,7 +368,11 @@ def disable_all(self):
def new_source(self, codecs):
self.tracks: List[Audio] = []
self._first_selected = False
disable_dup = "nvencc" in self.main.convert_to.lower()
disable_dup = (
"nvencc" in self.main.convert_to.lower()
or "vcenc" in self.main.convert_to.lower()
or "qsvenc" in self.main.convert_to.lower()
)
for i, x in enumerate(self.app.fastflix.current_video.streams.audio, start=1):
track_info, tags = self._get_track_info(x)
new_item = Audio(
Expand Down Expand Up @@ -537,10 +541,7 @@ def gen_track(
else:
tracks.extend(subset_tracks)

def find_track_num(idx):
for num, tt in enumerate(self.tracks):
if tt.index == idx:
return num
tracks.sort(key=lambda x: x[0].index)

if self.tracks and not tracks:
enable = yes_no_message(
Expand All @@ -550,15 +551,16 @@ def find_track_num(idx):
self.tracks[0].widgets.enable_check.setChecked(True)
return super()._new_source(self.tracks)

# Apply first set of conversions to the original audio tracks
current_id = -1
skip_tracks = []
for idx, track in enumerate(tracks):
# track[0] is the Box() track object, track[1] is the AudioMatch it matched against
if track[0].index > current_id:
current_id = track[0].index
track_num = find_track_num(track[0].index)
self.tracks[track_num].widgets.enable_check.setChecked(True)
self.tracks[track[0].index - 1].widgets.enable_check.setChecked(True)
update_track(
self.tracks[track_num],
self.tracks[track[0].index - 1],
downmix=track[1].downmix,
conversion=track[1].conversion,
bitrate=track[1].bitrate,
Expand All @@ -567,7 +569,7 @@ def find_track_num(idx):

if not og_only:
additional_tracks = []
for i, track in enumerate(tracks, start=len(self.tracks) + 1):
for i, track in enumerate(tracks):
if i not in skip_tracks:
additional_tracks.append(
gen_track(
Expand Down Expand Up @@ -611,7 +613,11 @@ def update_audio_settings(self):
self.app.fastflix.current_video.video_settings.audio_tracks = tracks

def reload(self, original_tracks: List[AudioTrack], audio_formats):
disable_dups = "nvencc" in self.main.convert_to.lower() or "vcenc" in self.main.convert_to.lower()
disable_dups = (
"nvencc" in self.main.convert_to.lower()
or "vcenc" in self.main.convert_to.lower()
or "qsvenc" in self.main.convert_to.lower()
)

repopulated_tracks = set()
for track in original_tracks:
Expand Down
2 changes: 1 addition & 1 deletion fastflix/widgets/panels/subtitle_panel.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ def __init__(self, parent, subtitle, index, enabled=True, first=False):
self.first = first
self.last = False
self.subtitle_lang = subtitle.get("tags", {}).get("language")
self.subtitle_type = subtitle_types.get(subtitle["codec_name"], "text")
self.subtitle_type = subtitle_types.get(subtitle.get("codec_name", "text"), "text")
self.setFixedHeight(60)

self.widgets = Box(
Expand Down

0 comments on commit 44056a4

Please sign in to comment.