def __init__(self, parent, main, app: FastFlixApp): super().__init__(parent, main, app) self.main = main self.app = app grid = QtWidgets.QGridLayout() self.widgets = Box(fps=None, mode=None) self.mode = "CRF" grid.addLayout(self.init_speed(), 0, 0, 1, 2) grid.addLayout(self.init_quality(), 1, 0, 1, 2) grid.addLayout(self.init_pix_fmt(), 2, 0, 1, 2) grid.addLayout(self.init_max_mux(), 3, 0, 1, 2) grid.addLayout(self.init_profile(), 4, 0, 1, 2) grid.addLayout(self.init_tile_columns(), 5, 0, 1, 2) grid.addLayout(self.init_tile_rows(), 6, 0, 1, 2) grid.addLayout(self.init_modes(), 0, 2, 5, 4) checkboxes = QtWidgets.QHBoxLayout() checkboxes.addLayout(self.init_single_pass()) checkboxes.addStretch(1) checkboxes.addLayout(self.init_row_mt()) checkboxes.addStretch(1) checkboxes.addLayout(self.init_fast_first_pass()) grid.addLayout(checkboxes, 5, 2, 1, 4) # grid.addWidget(QtWidgets.QWidget(), 8, 0) grid.setRowStretch(8, 1) grid.addLayout(self._add_custom(), 10, 0, 1, 6) link_1 = link("https://trac.ffmpeg.org/wiki/Encode/VP9", t("FFMPEG VP9 Encoding Guide"), app.fastflix.config.theme) link_2 = link( "https://developers.google.com/media/vp9/hdr-encoding/", t("Google's VP9 HDR Encoding Guide"), app.fastflix.config.theme, ) guide_label = QtWidgets.QLabel(f"{link_1} | {link_2}") guide_label.setAlignment(QtCore.Qt.AlignBottom) guide_label.setOpenExternalLinks(True) grid.addWidget(guide_label, 11, 0, 1, 6) self.setLayout(grid) self.hide()
def __init__(self, parent, main, app: FastFlixApp): super().__init__(parent, main, app) self.main = main self.app = app grid = QtWidgets.QGridLayout() self.widgets = Box(fps=None, mode=None, segment_size=None) self.mode = "QP" grid.addLayout(self.init_speed(), 0, 0, 1, 2) 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_sc_detection(), 6, 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(), 5, 2, 1, 1) grid.setRowStretch(8, 1) guide_label = QtWidgets.QLabel( link( "https://github.com/AOMediaCodec/SVT-AV1/blob/master/Docs/svt-av1_encoder_user_guide.md", t("SVT-AV1 Encoding Guide"), )) guide_label.setAlignment(QtCore.Qt.AlignBottom) guide_label.setOpenExternalLinks(True) grid.addLayout(self._add_custom(), 10, 0, 1, 6) grid.addWidget(guide_label, 11, 0, -1, 1) self.setLayout(grid) self.hide()
def __init__(self, parent, main, app: FastFlixApp): super().__init__(parent, main, app) self.main = main self.app = app grid = QtWidgets.QGridLayout() self.widgets = Box(mode=None) self.mode = "CRF" self.updating_settings = False grid.addLayout(self.init_modes(), 0, 2, 5, 4) grid.addLayout(self._add_custom(), 10, 0, 1, 6) grid.addLayout(self.init_preset(), 1, 0, 1, 2) grid.addLayout(self.init_max_mux(), 3, 0, 1, 2) grid.addLayout(self.init_tune(), 4, 0, 1, 2) grid.addLayout(self.init_profile(), 5, 0, 1, 2) grid.addLayout(self.init_pix_fmt(), 6, 0, 1, 2) # grid.addWidget(QtWidgets.QWidget(), 8, 0) grid.setRowStretch(9, 1) guide_label = QtWidgets.QLabel( link("https://trac.ffmpeg.org/wiki/Encode/H.264", t("FFMPEG AVC / H.264 Encoding Guide"))) guide_label.setAlignment(QtCore.Qt.AlignBottom) guide_label.setOpenExternalLinks(True) grid.addWidget(guide_label, 11, 0, -1, 1) self.setLayout(grid) self.hide()
def __init__(self, parent, main, app: FastFlixApp): super().__init__(parent, main, app) self.main = main self.app = app grid = QtWidgets.QGridLayout() self.mode = "QP" grid.addLayout(self.init_speed(), 0, 0, 1, 2) grid.addLayout(self.init_tiles(), 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_pix_fmt(), 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(), 5, 2, 1, 1) grid.addLayout(self._add_custom(), 10, 0, 1, 6) grid.setRowStretch(9, 1) guide_label = QtWidgets.QLabel( link("https://github.com/xiph/rav1e/blob/master/README.md", t("rav1e github"), app.fastflix.config.theme) ) guide_label.setAlignment(QtCore.Qt.AlignBottom) guide_label.setOpenExternalLinks(True) grid.addWidget(guide_label, 11, 0, 1, 6) self.setLayout(grid) self.hide()
def __init__(self, parent, main, app: FastFlixApp): super().__init__(parent, main, app) self.main = main self.app = app grid = QtWidgets.QGridLayout() # grid.addWidget(QtWidgets.QLabel("FFMPEG libaom-av1_aom"), 0, 0) self.widgets = Box(fps=None, mode=None) self.mode = "CRF" grid.addLayout(self.init_cpu_used(), 0, 0, 1, 2) grid.addLayout(self.init_row_mt(), 1, 0, 1, 2) grid.addLayout(self.init_tile_columns(), 2, 0, 1, 2) grid.addLayout(self.init_tile_rows(), 3, 0, 1, 2) grid.addLayout(self.init_usage(), 4, 0, 1, 2) grid.addLayout(self.init_max_mux(), 5, 0, 1, 2) grid.addLayout(self.init_pix_fmt(), 6, 0, 1, 2) grid.addLayout(self.init_modes(), 0, 2, 5, 4) grid.addLayout(self._add_custom(), 10, 0, 1, 6) grid.setRowStretch(8, 1) guide_label = QtWidgets.QLabel( link("https://trac.ffmpeg.org/wiki/Encode/AV1", t("FFMPEG AV1 Encoding Guide"))) guide_label.setAlignment(QtCore.Qt.AlignBottom) guide_label.setOpenExternalLinks(True) grid.addWidget(guide_label, 11, 0, -1, 1) self.setLayout(grid) self.hide()
def __init__(self, parent, app: FastFlixApp): super().__init__(parent) self.app = app self.main = parent.main self.attachments = Box() layout = QtWidgets.QGridLayout() sp = QtWidgets.QSizePolicy() sp.setVerticalPolicy(QtWidgets.QSizePolicy.Policy.Maximum) sp.setHorizontalPolicy(QtWidgets.QSizePolicy.Policy.Maximum) # row, column, row span, column span layout.addWidget(QtWidgets.QLabel(t("Poster Cover")), 0, 0, 1, 5) layout.addWidget(QtWidgets.QLabel(t("Landscape Cover")), 0, 6, 1, 4) info_label = QtWidgets.QLabel( link("https://codecalamity.com/guides/video-thumbnails/", t("Enabling cover thumbnails on your system")) ) info_label.setOpenExternalLinks(True) layout.addWidget(info_label, 10, 0, 1, 9, QtCore.Qt.AlignLeft) poster_options_layout = QtWidgets.QHBoxLayout() self.cover_passthrough_checkbox = QtWidgets.QCheckBox(t("Copy Cover")) self.small_cover_passthrough_checkbox = QtWidgets.QCheckBox(t("Copy Small Cover (no preview)")) poster_options_layout.addWidget(self.cover_passthrough_checkbox) poster_options_layout.addWidget(self.small_cover_passthrough_checkbox) land_options_layout = QtWidgets.QHBoxLayout() self.cover_land_passthrough_checkbox = QtWidgets.QCheckBox(t("Copy Landscape Cover")) self.small_cover_land_passthrough_checkbox = QtWidgets.QCheckBox(t("Copy Small Landscape Cover (no preview)")) land_options_layout.addWidget(self.cover_land_passthrough_checkbox) land_options_layout.addWidget(self.small_cover_land_passthrough_checkbox) self.cover_passthrough_checkbox.toggled.connect(lambda: self.cover_passthrough_check()) self.small_cover_passthrough_checkbox.toggled.connect(lambda: self.small_cover_passthrough_check()) self.cover_land_passthrough_checkbox.toggled.connect(lambda: self.cover_land_passthrough_check()) self.small_cover_land_passthrough_checkbox.toggled.connect(lambda: self.small_cover_land_passthrough_check()) self.poster = QtWidgets.QLabel() self.poster.setSizePolicy(sp) self.landscape = QtWidgets.QLabel() self.landscape.setSizePolicy(sp) layout.addLayout(poster_options_layout, 1, 0, 1, 4) layout.addLayout(land_options_layout, 1, 6, 1, 4) layout.addWidget(self.poster, 2, 0, 8, 4) layout.addWidget(self.landscape, 2, 6, 8, 4) layout.addLayout(self.init_cover(), 9, 0, 1, 4) layout.addLayout(self.init_landscape_cover(), 9, 6, 1, 4) layout.columnStretch(5) self.setLayout(layout)
def __init__(self, parent, main, app: FastFlixApp): super().__init__(parent, main, app) self.main = main self.app = app grid = QtWidgets.QGridLayout() self.mode = "CRF" self.updating_settings = False self.extract_thread = None grid.addLayout(self.init_preset(), 0, 0, 1, 2) grid.addLayout(self.init_tune(), 1, 0, 1, 2) grid.addLayout(self.init_profile(), 2, 0, 1, 2) grid.addLayout(self.init_pix_fmt(), 3, 0, 1, 2) grid.addLayout(self.init_modes(), 0, 2, 5, 4) breaker = QtWidgets.QHBoxLayout() breaker_label = QtWidgets.QLabel(t("Advanced")) breaker_label.setFont(QtGui.QFont("helvetica", 8, weight=55)) breaker.addWidget(get_breaker(), stretch=1) breaker.addWidget(breaker_label, alignment=QtCore.Qt.AlignHCenter) breaker.addWidget(get_breaker(), stretch=1) grid.addLayout(breaker, 5, 0, 1, 6) grid.addLayout(self.init_aq_mode(), 6, 0, 1, 2) grid.addLayout(self.init_frame_threads(), 7, 0, 1, 2) grid.addLayout(self.init_max_mux(), 8, 0, 1, 2) grid.addLayout(self.init_x265_row(), 6, 2, 1, 4) grid.addLayout(self.init_x265_row_two(), 7, 2, 1, 4) # grid.addLayout(self.init_hdr10_opt(), 5, 2, 1, 1) # grid.addLayout(self.init_repeat_headers(), 5, 3, 1, 1) # grid.addLayout(self.init_aq_mode(), 5, 4, 1, 2) grid.addLayout(self.init_x265_params(), 8, 2, 1, 4) grid.addLayout(self.init_dhdr10_info(), 9, 2, 1, 3) grid.addLayout(self.init_dhdr10_warning_and_opt(), 9, 5, 1, 1) self.ffmpeg_level = QtWidgets.QLabel() grid.addWidget(self.ffmpeg_level, 10, 2, 1, 4) grid.setRowStretch(11, True) grid.addLayout(self._add_custom(), 12, 0, 1, 6) link_1 = link( "https://trac.ffmpeg.org/wiki/Encode/H.265", t("FFMPEG HEVC / H.265 Encoding Guide"), ) link_2 = link( "https://codecalamity.com/encoding-uhd-4k-hdr10-videos-with-ffmpeg", t("CodeCalamity UHD HDR Encoding Guide"), ) link_3 = link( "https://github.com/cdgriffith/FastFlix/wiki/HDR10-Plus-Metadata-Extraction", t("HDR10+ Metadata Extraction"), ) guide_label = QtWidgets.QLabel(f"{link_1} | {link_2} | {link_3}") guide_label.setAlignment(QtCore.Qt.AlignBottom) guide_label.setOpenExternalLinks(True) grid.addWidget(guide_label, 13, 0, 1, 6) self.hdr10plus_signal.connect(self.done_hdr10plus_extract) self.hdr10plus_ffmpeg_signal.connect( lambda x: self.ffmpeg_level.setText(x)) self.setLayout(grid) self.hide()
def __init__(self, app): super(About, self).__init__() layout = QtWidgets.QGridLayout() self.app = app self.setMinimumSize(QtCore.QSize(400, 400)) build_file = Path(base_path, "build_version") build = t("Build") label = QtWidgets.QLabel( f"<b>FastFlix</b> v{__version__}<br>" f"{f'{build}: {build_file.read_text().strip()}<br>' if build_file.exists() else ''}" f"<br>{t('Author')}: {link('https://github.com/cdgriffith', 'Chris Griffith', app.fastflix.config.theme)}" f"<br>{t('License')}: MIT") label.setFont(QtGui.QFont("Arial", 14)) label.setAlignment(QtCore.Qt.AlignCenter) label.setOpenExternalLinks(True) label.setSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding) layout.addWidget(label) support_label = QtWidgets.QLabel( f'{link("https://github.com/cdgriffith/FastFlix/wiki/Support-FastFlix", t("Support FastFlix"), app.fastflix.config.theme)}<br><br>' ) support_label.setOpenExternalLinks(True) support_label.setFont(QtGui.QFont("Arial", 12)) support_label.setAlignment( (QtCore.Qt.AlignCenter | QtCore.Qt.AlignTop)) layout.addWidget(support_label) bundle_label = QtWidgets.QLabel( f"Conversion suites: {link('https://www.ffmpeg.org/download.html', 'FFmpeg', app.fastflix.config.theme)} ({t('Various')}), " f"{link('https://github.com/rigaya/NVEnc', 'NVEncC', app.fastflix.config.theme)} (MIT) " f"{link('https://github.com/rigaya/VCEEnc', 'VCEEnc', app.fastflix.config.theme)} (MIT)<br><br>" f"Encoders: <br> {link('https://github.com/rigaya/NVEnc', 'NVEncC', app.fastflix.config.theme)} (MIT), " f"{link('https://github.com/rigaya/VCEEnc', 'VCEEnc', app.fastflix.config.theme)} (MIT), " f"SVT AV1 (MIT), rav1e (MIT), aom (MIT), x265 (GPL), x264 (GPL), libvpx (BSD)" ) bundle_label.setAlignment(QtCore.Qt.AlignCenter) bundle_label.setOpenExternalLinks(True) layout.addWidget(bundle_label) supporting_libraries_label = QtWidgets.QLabel( "Supporting libraries<br>" f"{link('https://www.python.org/', t('Python'), app.fastflix.config.theme)}{reusables.version_string} (PSF LICENSE), " f"{link('https://github.com/cdgriffith/Box', t('python-box'), app.fastflix.config.theme)} {box_version} (MIT), " f"{link('https://github.com/cdgriffith/Reusables', t('Reusables'), app.fastflix.config.theme)} {reusables.__version__} (MIT)<br>" "mistune (BSD), colorama (BSD), coloredlogs (MIT), Requests (Apache 2.0)<br>" "appdirs (MIT), iso639-lang (MIT), psutil (BSD), pathvalidate (MIT) <br>" "BreezeStyleSheets (MIT), PySide2 (LGPL)") supporting_libraries_label.setAlignment(QtCore.Qt.AlignCenter) supporting_libraries_label.setOpenExternalLinks(True) layout.addWidget(supporting_libraries_label) if pyinstaller: pyinstaller_label = QtWidgets.QLabel( f"Packaged with: {link('https://www.pyinstaller.org/index.html', 'PyInstaller', app.fastflix.config.theme)}" ) pyinstaller_label.setAlignment(QtCore.Qt.AlignCenter) pyinstaller_label.setOpenExternalLinks(True) layout.addWidget(QtWidgets.QLabel()) layout.addWidget(pyinstaller_label) license_label = QtWidgets.QLabel( link( "https://github.com/cdgriffith/FastFlix/blob/master/docs/build-licenses.txt", t("LICENSES"), app.fastflix.config.theme, )) license_label.setAlignment(QtCore.Qt.AlignCenter) license_label.setOpenExternalLinks(True) layout.addWidget(QtWidgets.QLabel()) layout.addWidget(license_label) self.setLayout(layout)
def __init__(self, parent, main, app: FastFlixApp): super().__init__(parent, main, app) self.main = main self.app = app grid = QtWidgets.QGridLayout() self.widgets = Box(mode=None) self.mode = "Bitrate" self.updating_settings = False grid.addLayout(self.init_modes(), 0, 2, 4, 4) grid.addLayout( self._add_custom(title="Custom VCEEncC options", disable_both_passes=True), 10, 0, 1, 6) grid.addLayout(self.init_preset(), 0, 0, 1, 2) grid.addLayout(self.init_profile(), 1, 0, 1, 2) grid.addLayout(self.init_mv_precision(), 2, 0, 1, 2) grid.addLayout(self.init_pre(), 3, 0, 1, 2) breaker = QtWidgets.QHBoxLayout() breaker_label = QtWidgets.QLabel(t("Advanced")) breaker_label.setFont(QtGui.QFont("helvetica", 8, weight=55)) breaker.addWidget(get_breaker(), stretch=1) breaker.addWidget(breaker_label, alignment=QtCore.Qt.AlignHCenter) breaker.addWidget(get_breaker(), stretch=1) grid.addLayout(breaker, 4, 0, 1, 6) qp_line = QtWidgets.QHBoxLayout() qp_line.addLayout(self.init_min_q()) qp_line.addStretch(1) qp_line.addLayout(self.init_max_q()) qp_line.addStretch(1) qp_line.addLayout(self.init_ref()) qp_line.addStretch(1) qp_line.addLayout(self.init_b_frames()) qp_line.addStretch(1) qp_line.addLayout(self.init_level()) qp_line.addStretch(1) qp_line.addLayout(self.init_decoder()) qp_line.addStretch(1) qp_line.addLayout(self.init_metrics()) grid.addLayout(qp_line, 5, 0, 1, 6) self.ffmpeg_level = QtWidgets.QLabel() grid.addWidget(self.ffmpeg_level, 8, 2, 1, 4) grid.setRowStretch(9, 1) guide_label = QtWidgets.QLabel( link( "https://github.com/rigaya/VCEEnc/blob/master/VCEEncC_Options.en.md", t("VCEEncC Options"), app.fastflix.config.theme, )) warning_label = QtWidgets.QLabel() warning_label.setPixmap( QtGui.QIcon( get_icon("onyx-warning", self.app.fastflix.config.theme)).pixmap(22)) guide_label.setAlignment(QtCore.Qt.AlignBottom) guide_label.setOpenExternalLinks(True) grid.addWidget(guide_label, 11, 0, 1, 4) grid.addWidget(warning_label, 11, 4, 1, 1, alignment=QtCore.Qt.AlignRight) grid.addWidget( QtWidgets.QLabel( t("VCEEncC Encoder support is still experimental!")), 11, 5, 1, 1) self.setLayout(grid) self.hide() self.hdr10plus_signal.connect(self.done_hdr10plus_extract) self.hdr10plus_ffmpeg_signal.connect( lambda x: self.ffmpeg_level.setText(x))
def __init__(self, parent=None): super(About, self).__init__(parent) layout = QtWidgets.QGridLayout() self.setMinimumSize(400, 400) build_file = Path(base_path, "build_version") build = t("Build") label = QtWidgets.QLabel( f"<b>FastFlix</b> v{__version__}<br>" f"{f'{build}: {build_file.read_text().strip()}<br>' if build_file.exists() else ''}" f"<br>{t('Author')}: {link('https://github.com/cdgriffith', 'Chris Griffith')}" f"<br>{t('Dual License')}: MIT (Code) / {'L' if API == 'pyside2' else ''}GPL (Release)" ) label.setFont(QtGui.QFont("Arial", 14)) label.setAlignment(QtCore.Qt.AlignCenter) label.setOpenExternalLinks(True) label.setSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding) supporting_libraries_label = QtWidgets.QLabel( "Supporting libraries<br>" f"{link('https://www.python.org/', t('Python'))}{reusables.version_string} (PSF LICENSE), " f"{link('https://github.com/cdgriffith/Box', t('python-box'))} {box_version} (MIT), " f"{link('https://github.com/cdgriffith/Reusables', t('Reusables'))} {reusables.__version__} (MIT)<br>" "mistune (BSD), colorama (BSD), coloredlogs (MIT), Requests (Apache 2.0)" ) supporting_libraries_label.setAlignment(QtCore.Qt.AlignCenter) supporting_libraries_label.setOpenExternalLinks(True) layout.addWidget(label) layout.addWidget(supporting_libraries_label) bundle_label = QtWidgets.QLabel( f"Conversion suite: {link('https://www.ffmpeg.org/download.html', 'FFmpeg')} ({t('Various')})<br><br>" "Encoders: <br> SVT AV1 (MIT), rav1e (MIT), aom (MIT), x265 (GPL), x264 (GPL), libvpx (BSD)" ) bundle_label.setAlignment(QtCore.Qt.AlignCenter) bundle_label.setOpenExternalLinks(True) layout.addWidget(bundle_label) if pyinstaller: pyinstaller_label = QtWidgets.QLabel( f"Packaged with: {link('https://www.pyinstaller.org/index.html', 'PyInstaller')}" ) pyinstaller_label.setAlignment(QtCore.Qt.AlignCenter) pyinstaller_label.setOpenExternalLinks(True) layout.addWidget(QtWidgets.QLabel()) layout.addWidget(pyinstaller_label) license_label = QtWidgets.QLabel( link( "https://github.com/cdgriffith/FastFlix/blob/master/docs/build-licenses.txt", t("LICENSES"))) license_label.setAlignment(QtCore.Qt.AlignCenter) license_label.setOpenExternalLinks(True) layout.addWidget(QtWidgets.QLabel()) layout.addWidget(license_label) self.setLayout(layout)