Beispiel #1
0
    def init_modes(self):
        layout = QtWidgets.QGridLayout()
        crf_group_box = QtWidgets.QGroupBox()
        crf_group_box.setStyleSheet("QGroupBox{padding-top:5px; margin-top:-18px}")
        crf_box_layout = QtWidgets.QHBoxLayout()
        bitrate_group_box = QtWidgets.QGroupBox()
        bitrate_group_box.setStyleSheet("QGroupBox{padding-top:5px; margin-top:-18px}")
        bitrate_box_layout = QtWidgets.QHBoxLayout()
        # rotation_dir = Path(base_path, 'data', 'rotations')
        # group_box.setStyleSheet("QGroupBox{padding-top:15px; margin-top:-15px; padding-bottom:-5px}")
        self.widgets.mode = QtWidgets.QButtonGroup()
        self.widgets.mode.buttonClicked.connect(self.set_mode)

        bitrate_radio = QtWidgets.QRadioButton("Bitrate")
        bitrate_radio.setFixedWidth(80)
        self.widgets.mode.addButton(bitrate_radio)
        self.widgets.bitrate = QtWidgets.QComboBox()
        self.widgets.bitrate.setFixedWidth(250)
        self.widgets.bitrate.addItems(recommended_bitrates)
        self.widgets.bitrate.currentIndexChanged.connect(lambda: self.main.build_commands())
        self.widgets.bitrate.setCurrentIndex(6)
        self.widgets.custom_bitrate = QtWidgets.QLineEdit("3000")
        self.widgets.custom_bitrate.setFixedWidth(100)
        bitrate_box_layout.addWidget(bitrate_radio)
        bitrate_box_layout.addWidget(self.widgets.bitrate)
        bitrate_box_layout.addStretch()
        bitrate_box_layout.addWidget(QtWidgets.QLabel("Custom:"))
        bitrate_box_layout.addWidget(self.widgets.custom_bitrate)

        crf_radio = QtWidgets.QRadioButton("CRF")
        crf_radio.setChecked(True)
        crf_radio.setFixedWidth(80)
        self.widgets.mode.addButton(crf_radio)

        self.widgets.crf = QtWidgets.QComboBox()
        self.widgets.crf.setFixedWidth(250)
        self.widgets.crf.addItems(recommended_crfs)
        self.widgets.crf.setCurrentIndex(4)
        self.widgets.crf.currentIndexChanged.connect(lambda: self.main.build_commands())
        self.widgets.custom_crf = QtWidgets.QLineEdit("30")
        self.widgets.custom_crf.setFixedWidth(100)
        crf_box_layout.addWidget(crf_radio)
        crf_box_layout.addWidget(self.widgets.crf)
        crf_box_layout.addStretch()
        crf_box_layout.addWidget(QtWidgets.QLabel("Custom:"))
        crf_box_layout.addWidget(self.widgets.custom_crf)

        bitrate_group_box.setLayout(bitrate_box_layout)
        crf_group_box.setLayout(crf_box_layout)

        layout.addWidget(crf_group_box, 0, 0)
        layout.addWidget(bitrate_group_box, 1, 0)
        return layout
Beispiel #2
0
    def init_conversion(self):
        layout = QtWidgets.QHBoxLayout()
        self.widgets.convert_to = QtWidgets.QComboBox()

        self.update_codecs(self.codecs)

        self.widgets.convert_bitrate = QtWidgets.QComboBox()

        self.widgets.convert_bitrate.addItems([
            f'{x}k' for x in range(32 * self.channels, (256 * self.channels) +
                                   1, 32 * int(self.channels))
        ])
        self.widgets.convert_bitrate.setCurrentIndex(3)

        self.widgets.convert_bitrate.currentIndexChanged.connect(
            lambda: self.page_update())
        self.widgets.convert_to.currentIndexChanged.connect(
            lambda: self.page_update())
        layout.addWidget(QtWidgets.QLabel("Conversion: "))
        layout.addWidget(self.widgets.convert_to)

        layout.addWidget(QtWidgets.QLabel("Bitrate: "))
        layout.addWidget(self.widgets.convert_bitrate)

        return layout
Beispiel #3
0
 def init_row_mt(self):
     layout = QtWidgets.QHBoxLayout()
     layout.addWidget(QtWidgets.QLabel('Row multithreading'))
     self.widgets.row_mt = QtWidgets.QCheckBox()
     self.widgets.row_mt.setChecked(False)
     self.widgets.row_mt.toggled.connect(lambda: self.main.page_update())
     layout.addWidget(self.widgets.row_mt)
     return layout
Beispiel #4
0
 def init_single_pass(self):
     layout = QtWidgets.QHBoxLayout()
     layout.addWidget(QtWidgets.QLabel('Single Pass (CRF)'))
     self.widgets.single_pass = QtWidgets.QCheckBox()
     self.widgets.single_pass.setChecked(False)
     self.widgets.single_pass.toggled.connect(lambda: self.main.page_update())
     layout.addWidget(self.widgets.single_pass)
     return layout
Beispiel #5
0
 def init_force_420(self):
     layout = QtWidgets.QHBoxLayout()
     layout.addWidget(QtWidgets.QLabel('Force 4:2:0 chroma subsampling'))
     self.widgets.force_420 = QtWidgets.QCheckBox()
     self.widgets.force_420.setChecked(True)
     self.widgets.force_420.toggled.connect(lambda: self.main.page_update())
     layout.addWidget(self.widgets.force_420)
     return layout
Beispiel #6
0
 def init_speed(self):
     layout = QtWidgets.QHBoxLayout()
     layout.addWidget(QtWidgets.QLabel('Speed'))
     self.widgets.speed = QtWidgets.QComboBox()
     self.widgets.speed.addItems([str(x) for x in range(6)])
     self.widgets.speed.setCurrentIndex(0)
     self.widgets.speed.currentIndexChanged.connect(lambda: self.main.page_update())
     layout.addWidget(self.widgets.speed)
     return layout
Beispiel #7
0
 def init_quality(self):
     layout = QtWidgets.QHBoxLayout()
     layout.addWidget(QtWidgets.QLabel('Quality'))
     self.widgets.quality = QtWidgets.QComboBox()
     self.widgets.quality.addItems(['realtime', 'good', 'best'])
     self.widgets.quality.setCurrentIndex(1)
     self.widgets.quality.currentIndexChanged.connect(lambda: self.main.page_update())
     layout.addWidget(self.widgets.quality)
     return layout
Beispiel #8
0
 def init_fps(self):
     layout = QtWidgets.QHBoxLayout()
     layout.addWidget(QtWidgets.QLabel("FPS"))
     self.widgets.fps = QtWidgets.QComboBox()
     self.widgets.fps.addItems([str(x) for x in range(1, 31)])
     self.widgets.fps.setCurrentIndex(14)
     self.widgets.fps.currentIndexChanged.connect(
         lambda: self.main.build_commands())
     layout.addWidget(self.widgets.fps)
     return layout
Beispiel #9
0
 def init_video_track_select(self):
     layout = QtWidgets.QHBoxLayout()
     self.widgets.video_track = QtWidgets.QComboBox()
     self.widgets.video_track.addItems([])
     self.widgets.video_track.currentIndexChanged.connect(
         lambda: self.page_update())
     layout.addWidget(QtWidgets.QLabel("Video Track "), stretch=0)
     layout.addWidget(self.widgets.video_track, stretch=1)
     layout.setSpacing(10)
     return layout
Beispiel #10
0
 def init_remove_hdr(self):
     layout = QtWidgets.QHBoxLayout()
     layout.addWidget(QtWidgets.QLabel('Remove HDR'))
     self.widgets.remove_hdr = QtWidgets.QComboBox()
     self.widgets.remove_hdr.addItems(['No', 'Yes'])
     self.widgets.remove_hdr.setCurrentIndex(0)
     self.widgets.remove_hdr.setDisabled(True)
     self.widgets.remove_hdr.currentIndexChanged.connect(lambda: self.main.page_update())
     layout.addWidget(self.widgets.remove_hdr)
     return layout
Beispiel #11
0
    def init_output_type(self):
        layout = QtWidgets.QHBoxLayout()
        self.widgets.convert_to = QtWidgets.QComboBox()
        self.widgets.convert_to.addItems(list(self.plugins.keys()))
        layout.addWidget(QtWidgets.QLabel("Output: "), stretch=0)
        layout.addWidget(self.widgets.convert_to, stretch=1)
        layout.setSpacing(10)
        self.widgets.convert_to.currentTextChanged.connect(
            self.video_options.change_conversion)

        return layout
Beispiel #12
0
 def init_segment_size(self):
     layout = QtWidgets.QHBoxLayout()
     layout.addWidget(QtWidgets.QLabel('Segment Size (seconds)'))
     self.widgets.segment_size = QtWidgets.QComboBox()
     self.widgets.segment_size.addItems(
         ["10", "30", "60", "90", "120", "240"])
     self.widgets.segment_size.setCurrentIndex(2)
     self.widgets.segment_size.currentIndexChanged.connect(
         lambda: self.main.page_update())
     layout.addWidget(self.widgets.segment_size)
     return layout
Beispiel #13
0
 def init_dither(self):
     layout = QtWidgets.QHBoxLayout()
     layout.addWidget(QtWidgets.QLabel('Dither'))
     self.widgets.dither = QtWidgets.QComboBox()
     self.widgets.dither.addItems([
         'sierra2_4a', 'floyd_steinberg', 'sierra2', 'bayer:bayer_scale=1',
         'bayer:bayer_scale=2', 'bayer:bayer_scale=3', 'none'
     ])
     self.widgets.dither.setCurrentIndex(0)
     self.widgets.dither.currentIndexChanged.connect(
         lambda: self.main.build_commands())
     layout.addWidget(self.widgets.dither)
     return layout
Beispiel #14
0
 def init_input_file(self):
     layout = QtWidgets.QHBoxLayout()
     self.widgets.input_file = QtWidgets.QLineEdit("")
     self.widgets.input_file.setReadOnly(True)
     open_input_file = QtWidgets.QPushButton("...")
     open_input_file.setFixedWidth(50)
     open_input_file.setMaximumHeight(22)
     open_input_file.setDefault(True)
     layout.addWidget(QtWidgets.QLabel("Source File:"))
     layout.addWidget(self.widgets.input_file)
     layout.addWidget(open_input_file)
     layout.setSpacing(10)
     open_input_file.clicked.connect(lambda: self.open_file())
     return layout
Beispiel #15
0
    def init_scale(self):
        scale_area = QtWidgets.QGroupBox()
        scale_area.setStyleSheet(
            "QGroupBox{padding-top:15px; margin-top:-18px}")
        scale_layout = QtWidgets.QVBoxLayout()

        self.widgets.scale.width, new_scale_layout = self.build_hoz_int_field(
            "Width  ", right_stretch=False)
        self.widgets.scale.height, new_scale_layout, lb, rb = self.build_hoz_int_field(
            "  Height  ",
            left_stretch=False,
            layout=new_scale_layout,
            return_buttons=True)
        self.widgets.scale.height.setDisabled(True)
        lb.setDisabled(True)
        rb.setDisabled(True)
        QtWidgets.QPushButton()

        # TODO scale 0 error

        self.widgets.scale.width.textChanged.connect(
            lambda: self.scale_update())
        self.widgets.scale.height.textChanged.connect(
            lambda: self.scale_update())

        bottom_row = QtWidgets.QHBoxLayout()
        self.widgets.scale.keep_aspect = QtWidgets.QCheckBox(
            "Keep aspect ratio")
        self.widgets.scale.keep_aspect.setMaximumHeight(40)
        self.widgets.scale.keep_aspect.setChecked(True)
        self.widgets.scale.keep_aspect.toggled.connect(
            lambda: self.toggle_disable((self.widgets.scale.height, lb, rb)))
        self.widgets.scale.keep_aspect.toggled.connect(
            lambda: self.scale_update())

        label = QtWidgets.QLabel('Scale',
                                 alignment=(Qt.AlignBottom | Qt.AlignRight))
        label.setStyleSheet("QLabel{color:#777}")
        label.setMaximumHeight(40)
        bottom_row.addWidget(self.widgets.scale.keep_aspect,
                             alignment=Qt.AlignCenter)

        scale_layout.addLayout(new_scale_layout)
        bottom_row.addWidget(label)
        scale_layout.addLayout(bottom_row)

        scale_area.setLayout(scale_layout)

        return scale_area
Beispiel #16
0
 def init_button_menu(self):
     layout = QtWidgets.QHBoxLayout()
     open_input_file = QtWidgets.QPushButton("🎞 Source")
     open_input_file.setFixedSize(100, 50)
     open_input_file.setDefault(True)
     open_input_file.clicked.connect(lambda: self.open_file())
     open_input_file.setStyleSheet('background: blue')
     convert = QtWidgets.QPushButton("Convert 🎥")
     convert.setFixedSize(100, 50)
     convert.setStyleSheet('background: green')
     convert.clicked.connect(lambda: self.create_video())
     self.widgets.convert_button = convert
     layout.addWidget(open_input_file)
     layout.addStretch()
     layout.addLayout(self.init_output_type(), alignment=Qt.AlignRight)
     layout.addStretch()
     layout.addWidget(convert)
     return layout
Beispiel #17
0
 def build_hoz_int_field(self,
                         name,
                         button_size=22,
                         left_stretch=True,
                         right_stretch=True,
                         layout=None,
                         return_buttons=False,
                         time_field=False):
     widget = QtWidgets.QLineEdit(
         self.number_to_time(0) if time_field else "0")
     widget.setFixedHeight(button_size)
     if not layout:
         layout = QtWidgets.QHBoxLayout()
         layout.setSpacing(0)
     if left_stretch:
         layout.addStretch()
     layout.addWidget(QtWidgets.QLabel(name))
     minus_button = QtWidgets.QPushButton("-")
     minus_button.setAutoRepeat(True)
     minus_button.setFixedSize(button_size, button_size)
     minus_button.clicked.connect(
         lambda: self.modify_int(widget, 'minus', time_field))
     plus_button = QtWidgets.QPushButton("+")
     plus_button.setAutoRepeat(True)
     plus_button.setFixedSize(button_size, button_size)
     plus_button.clicked.connect(
         lambda: self.modify_int(widget, 'add', time_field))
     if not time_field:
         widget.setFixedWidth(40)
     layout.addWidget(minus_button)
     layout.addWidget(widget)
     layout.addWidget(plus_button)
     if right_stretch:
         layout.addStretch()
     if return_buttons:
         return widget, layout, minus_button, plus_button
     return widget, layout