all repos — mgba @ 0235b6da9b33f249c767c64ae9d72004f04acd54

mGBA Game Boy Advance Emulator

FFmpeg: Add CRF support for applicable codecs
Vicki Pfau vi@endrift.com
Thu, 11 Mar 2021 21:33:01 -0800
commit

0235b6da9b33f249c767c64ae9d72004f04acd54

parent

4999315510f4058170657524f38fae76c143b977

M CHANGESCHANGES

@@ -120,6 +120,7 @@ - GBA Video: New GL palette approach, no more batch splitting on palette edits

- GBA Video: Avoid integer division using reciprocal tricks - Debugger: Keep track of global cycle count - FFmpeg: Add looping option for GIF/APNG + - FFmpeg: Add CRF support for applicable codecs - mGUI: Show battery percentage - mGUI: Skip second scan loop when possible - mGUI: Improve loading speed (fixes mgba.io/i/1957)
M src/feature/ffmpeg/ffmpeg-encoder.csrc/feature/ffmpeg/ffmpeg-encoder.c

@@ -164,7 +164,7 @@ encoder->audioBitrate = abr;

return true; } -bool FFmpegEncoderSetVideo(struct FFmpegEncoder* encoder, const char* vcodec, unsigned vbr, int frameskip) { +bool FFmpegEncoderSetVideo(struct FFmpegEncoder* encoder, const char* vcodec, int vbr, int frameskip) { static const struct { enum AVPixelFormat format; int priority;

@@ -212,6 +212,9 @@ }

} } if (encoder->pixFormat == AV_PIX_FMT_NONE) { + return false; + } + if (vbr < 0 && !av_opt_find(&codec->priv_class, "crf", NULL, 0, 0)) { return false; } encoder->videoCodec = vcodec;

@@ -408,7 +411,7 @@ encoder->video->compression_level = 5;

encoder->video->pix_fmt = AV_PIX_FMT_BGR0; } #endif - if (strcmp(vcodec->name, "libx264") == 0) { + if (strcmp(vcodec->name, "libx264") == 0 || strcmp(vcodec->name, "libx264rgb") == 0) { // Try to adaptively figure out when you can use a slower encoder if (encoder->width * encoder->height > 1000000) { av_opt_set(encoder->video->priv_data, "preset", "superfast", 0);

@@ -417,10 +420,26 @@ av_opt_set(encoder->video->priv_data, "preset", "veryfast", 0);

} else { av_opt_set(encoder->video->priv_data, "preset", "faster", 0); } + av_opt_set(encoder->video->priv_data, "tune", "zerolatency", 0); if (encoder->videoBitrate == 0) { av_opt_set(encoder->video->priv_data, "qp", "0", 0); - encoder->video->pix_fmt = AV_PIX_FMT_YUV444P; + if (strcmp(vcodec->name, "libx264") == 0) { + encoder->video->pix_fmt = AV_PIX_FMT_YUV444P; + } + } else if (encoder->videoBitrate < 0) { + av_opt_set_int(encoder->video->priv_data, "crf", -encoder->videoBitrate, 0); } + } else if (encoder->videoBitrate < 0) { + if (strcmp(vcodec->name, "libvpx") == 0 || strcmp(vcodec->name, "libvpx-vp9") == 0 || strcmp(vcodec->name, "libx265") == 0) { + av_opt_set_int(encoder->video->priv_data, "crf", -encoder->videoBitrate, 0); + } else { + FFmpegEncoderClose(encoder); + return false; + } + } + if (strncmp(vcodec->name, "libvpx", 6) == 0) { + av_opt_set_int(encoder->video->priv_data, "cpu-used", 2, 0); + av_opt_set(encoder->video->priv_data, "deadline", "realtime", 0); } if (strcmp(vcodec->name, "libvpx-vp9") == 0 && encoder->videoBitrate == 0) { av_opt_set_int(encoder->video->priv_data, "lossless", 1, 0);

@@ -859,4 +878,4 @@ encoder->cycles = denominator;

if (encoder->video) { encoder->video->framerate = (AVRational) { denominator, numerator * encoder->frameskip }; } -}+}
M src/feature/ffmpeg/ffmpeg-encoder.hsrc/feature/ffmpeg/ffmpeg-encoder.h

@@ -23,7 +23,7 @@

unsigned audioBitrate; const char* audioCodec; - unsigned videoBitrate; + int videoBitrate; const char* videoCodec; const char* containerFormat;

@@ -76,7 +76,7 @@ };

void FFmpegEncoderInit(struct FFmpegEncoder*); bool FFmpegEncoderSetAudio(struct FFmpegEncoder*, const char* acodec, unsigned abr); -bool FFmpegEncoderSetVideo(struct FFmpegEncoder*, const char* vcodec, unsigned vbr, int frameskip); +bool FFmpegEncoderSetVideo(struct FFmpegEncoder*, const char* vcodec, int vbr, int frameskip); bool FFmpegEncoderSetContainer(struct FFmpegEncoder*, const char* container); void FFmpegEncoderSetDimensions(struct FFmpegEncoder*, int width, int height); void FFmpegEncoderSetInputFrameRate(struct FFmpegEncoder*, int numerator, int denominator);
M src/platform/qt/VideoView.cppsrc/platform/qt/VideoView.cpp

@@ -86,14 +86,25 @@ connect(m_ui.audio, SIGNAL(editTextChanged(const QString&)), this, SLOT(setAudioCodec(const QString&)));

connect(m_ui.video, SIGNAL(editTextChanged(const QString&)), this, SLOT(setVideoCodec(const QString&))); connect(m_ui.container, SIGNAL(editTextChanged(const QString&)), this, SLOT(setContainer(const QString&))); - connect(m_ui.abr, SIGNAL(valueChanged(int)), this, SLOT(setAudioBitrate(int))); - connect(m_ui.vbr, SIGNAL(valueChanged(int)), this, SLOT(setVideoBitrate(int))); + connect(m_ui.abr, static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged), this, &VideoView::setAudioBitrate); + connect(m_ui.crf, static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged), this, &VideoView::setVideoRateFactor); + connect(m_ui.vbr, static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged), this, &VideoView::setVideoBitrate); + connect(m_ui.doVbr, &QAbstractButton::toggled, this, [this](bool set) { + if (set) { + setVideoBitrate(m_ui.vbr->value()); + } + }); + connect(m_ui.doCrf, &QAbstractButton::toggled, this, [this](bool set) { + if (set) { + setVideoRateFactor(m_ui.crf->value()); + } + }); - connect(m_ui.width, SIGNAL(valueChanged(int)), this, SLOT(setWidth(int))); - connect(m_ui.height, SIGNAL(valueChanged(int)), this, SLOT(setHeight(int))); + connect(m_ui.width, static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged), this, &VideoView::setWidth); + connect(m_ui.height, static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged), this, &VideoView::setHeight); - connect(m_ui.wratio, SIGNAL(valueChanged(int)), this, SLOT(setAspectWidth(int))); - connect(m_ui.hratio, SIGNAL(valueChanged(int)), this, SLOT(setAspectHeight(int))); + connect(m_ui.wratio, static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged), this, &VideoView::setAspectWidth); + connect(m_ui.hratio, static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged), this, &VideoView::setAspectHeight); connect(m_ui.showAdvanced, &QAbstractButton::clicked, this, &VideoView::showAdvanced);

@@ -101,13 +112,7 @@ FFmpegEncoderInit(&m_encoder);

updatePresets(); - setPreset({ - "MKV", - "h.264", - "FLAC", - -1, - 0, - }); + m_ui.presetYoutube->setChecked(true); // Use the Youtube preset by default showAdvanced(false); }

@@ -126,18 +131,18 @@ }

addPreset(m_ui.presetHQ, { "MP4", - "h.264", + "H.264", "AAC", - 8000, + -18, 384, maintainAspect({ 1920, 1080 }) }); addPreset(m_ui.presetYoutube, { "MP4", - "h.264", + "H.264", "AAC", - 5000, + -20, 256, maintainAspect({ 1280, 720 }) });

@@ -152,16 +157,16 @@ });

addPreset(m_ui.presetMP4, { "MP4", - "h.264", + "H.264", "AAC", - 800, + -22, 128 }); if (m_nativeWidth && m_nativeHeight) { addPreset(m_ui.presetLossless, { "MKV", - "h.264", + "libx264rgb", "FLAC", -1, 0,

@@ -241,7 +246,7 @@ m_filename = fname;

validateSettings(); } -void VideoView::setAudioCodec(const QString& codec, bool manual) { +void VideoView::setAudioCodec(const QString& codec) { free(m_audioCodecCstr); m_audioCodec = sanitizeCodec(codec, s_acodecMap); if (m_audioCodec == "none") {

@@ -249,18 +254,16 @@ m_audioCodecCstr = nullptr;

} else { m_audioCodecCstr = strdup(m_audioCodec.toUtf8().constData()); } - if (!FFmpegEncoderSetAudio(&m_encoder, m_audioCodecCstr, m_abr)) { + if (!FFmpegEncoderSetAudio(&m_encoder, m_audioCodecCstr, 128 * 1024)) { free(m_audioCodecCstr); m_audioCodecCstr = nullptr; m_audioCodec = QString(); } validateSettings(); - if (manual) { - uncheckIncompatible(); - } + uncheckIncompatible(); } -void VideoView::setVideoCodec(const QString& codec, bool manual) { +void VideoView::setVideoCodec(const QString& codec) { free(m_videoCodecCstr); m_videoCodec = sanitizeCodec(codec, s_vcodecMap); if (m_videoCodec == "none") {

@@ -268,18 +271,16 @@ m_videoCodecCstr = nullptr;

} else { m_videoCodecCstr = strdup(m_videoCodec.toUtf8().constData()); } - if (!FFmpegEncoderSetVideo(&m_encoder, m_videoCodecCstr, m_vbr, 0)) { + if (!FFmpegEncoderSetVideo(&m_encoder, m_videoCodecCstr, 1024 * 1024, 0)) { free(m_videoCodecCstr); m_videoCodecCstr = nullptr; m_videoCodec = QString(); } validateSettings(); - if (manual) { - uncheckIncompatible(); - } + uncheckIncompatible(); } -void VideoView::setContainer(const QString& container, bool manual) { +void VideoView::setContainer(const QString& container) { free(m_containerCstr); m_container = sanitizeCodec(container, s_containerMap); m_containerCstr = strdup(m_container.toUtf8().constData());

@@ -289,61 +290,51 @@ m_containerCstr = nullptr;

m_container = QString(); } validateSettings(); - if (manual) { - uncheckIncompatible(); - } + uncheckIncompatible(); } -void VideoView::setAudioBitrate(int br, bool manual) { +void VideoView::setAudioBitrate(int br) { m_abr = br * 1000; FFmpegEncoderSetAudio(&m_encoder, m_audioCodecCstr, m_abr); validateSettings(); - if (manual) { - uncheckIncompatible(); - } + uncheckIncompatible(); } -void VideoView::setVideoBitrate(int br, bool manual) { - m_vbr = br >= 0 ? br * 1000 : 0; +void VideoView::setVideoBitrate(int br) { + m_vbr = br > 0 ? br * 1000 : br; FFmpegEncoderSetVideo(&m_encoder, m_videoCodecCstr, m_vbr, 0); validateSettings(); - if (manual) { - uncheckIncompatible(); - } + uncheckIncompatible(); } -void VideoView::setWidth(int width, bool manual) { +void VideoView::setVideoRateFactor(int rf) { + setVideoBitrate(-rf); +} + +void VideoView::setWidth(int width) { m_width = width; updateAspectRatio(width, 0, false); FFmpegEncoderSetDimensions(&m_encoder, m_width, m_height); - if (manual) { - uncheckIncompatible(); - } + uncheckIncompatible(); } -void VideoView::setHeight(int height, bool manual) { +void VideoView::setHeight(int height) { m_height = height; updateAspectRatio(0, height, false); FFmpegEncoderSetDimensions(&m_encoder, m_width, m_height); - if (manual) { - uncheckIncompatible(); - } + uncheckIncompatible(); } -void VideoView::setAspectWidth(int, bool manual) { +void VideoView::setAspectWidth(int) { updateAspectRatio(0, m_height, true); FFmpegEncoderSetDimensions(&m_encoder, m_width, m_height); - if (manual) { - uncheckIncompatible(); - } + uncheckIncompatible(); } -void VideoView::setAspectHeight(int, bool manual) { +void VideoView::setAspectHeight(int) { updateAspectRatio(m_width, 0, true); FFmpegEncoderSetDimensions(&m_encoder, m_width, m_height); - if (manual) { - uncheckIncompatible(); - } + uncheckIncompatible(); } void VideoView::showAdvanced(bool show) {

@@ -357,6 +348,11 @@ valid = false;

m_ui.audio->setStyleSheet("QComboBox { color: red; }"); } else { m_ui.audio->setStyleSheet(""); + if (!FFmpegEncoderSetAudio(&m_encoder, m_audioCodecCstr, m_abr)) { + m_ui.abr->setStyleSheet("QSpinBox { color: red; }"); + } else { + m_ui.abr->setStyleSheet(""); + } } if (m_videoCodec.isNull()) {

@@ -364,6 +360,21 @@ valid = false;

m_ui.video->setStyleSheet("QComboBox { color: red; }"); } else { m_ui.video->setStyleSheet(""); + if (!FFmpegEncoderSetVideo(&m_encoder, m_videoCodecCstr, m_vbr, 0)) { + if (m_ui.doVbr->isChecked()) { + m_ui.vbr->setStyleSheet("QSpinBox { color: red; }"); + } else { + m_ui.vbr->setStyleSheet(""); + } + if (m_ui.doCrf->isChecked()) { + m_ui.crf->setStyleSheet("QSpinBox { color: red; }"); + } else { + m_ui.crf->setStyleSheet(""); + } + } else { + m_ui.vbr->setStyleSheet(""); + m_ui.crf->setStyleSheet(""); + } } if (m_container.isNull()) {

@@ -406,11 +417,15 @@ }

} void VideoView::uncheckIncompatible() { + if (m_updatesBlocked) { + return; + } + Preset current = { m_container, m_videoCodec, m_audioCodec, - m_vbr / 1000, + m_vbr > 0 ? m_vbr / 1000 : m_vbr, m_abr / 1000, { m_width, m_height } };

@@ -455,24 +470,21 @@ return sanitized;

} void VideoView::safelyCheck(QAbstractButton* button, bool set) { - bool signalsBlocked = button->blockSignals(true); + QSignalBlocker blocker(button); bool autoExclusive = button->autoExclusive(); button->setAutoExclusive(false); button->setChecked(set); button->setAutoExclusive(autoExclusive); - button->blockSignals(signalsBlocked); } void VideoView::safelySet(QSpinBox* box, int value) { - bool signalsBlocked = box->blockSignals(true); + QSignalBlocker blocker(box); box->setValue(value); - box->blockSignals(signalsBlocked); } void VideoView::safelySet(QComboBox* box, const QString& value) { - bool signalsBlocked = box->blockSignals(true); + QSignalBlocker blocker(box); box->lineEdit()->setText(value); - box->blockSignals(signalsBlocked); } void VideoView::addPreset(QAbstractButton* button, const Preset& preset) {

@@ -484,34 +496,46 @@ });

} void VideoView::setPreset(const Preset& preset) { + m_updatesBlocked = true; if (!preset.container.isNull()) { - setContainer(preset.container, false); + setContainer(preset.container); safelySet(m_ui.container, preset.container); } if (!preset.acodec.isNull()) { - setAudioCodec(preset.acodec, false); + setAudioCodec(preset.acodec); safelySet(m_ui.audio, preset.acodec); } if (!preset.vcodec.isNull()) { - setVideoCodec(preset.vcodec, false); + setVideoCodec(preset.vcodec); safelySet(m_ui.video, preset.vcodec); } if (preset.abr) { - setAudioBitrate(preset.abr, false); + setAudioBitrate(preset.abr); safelySet(m_ui.abr, preset.abr); } if (preset.vbr) { - setVideoBitrate(preset.vbr, false); - safelySet(m_ui.vbr, preset.vbr); + int vbr = preset.vbr; + if (vbr == -1) { + vbr = 0; + } + setVideoBitrate(vbr); + if (vbr > 0) { + safelySet(m_ui.vbr, vbr); + m_ui.doVbr->setChecked(true); + } else { + safelySet(m_ui.crf, -vbr); + m_ui.doCrf->setChecked(true); + } } if (preset.dims.width() > 0) { - setWidth(preset.dims.width(), false); + setWidth(preset.dims.width()); safelySet(m_ui.width, preset.dims.width()); } if (preset.dims.height() > 0) { - setHeight(preset.dims.height(), false); + setHeight(preset.dims.height()); safelySet(m_ui.height, preset.dims.height()); } + m_updatesBlocked = false; uncheckIncompatible(); validateSettings();
M src/platform/qt/VideoView.hsrc/platform/qt/VideoView.h

@@ -44,17 +44,18 @@

private slots: void selectFile(); void setFilename(const QString&); - void setAudioCodec(const QString&, bool manual = true); - void setVideoCodec(const QString&, bool manual = true); - void setContainer(const QString&, bool manual = true); + void setAudioCodec(const QString&); + void setVideoCodec(const QString&); + void setContainer(const QString&); - void setAudioBitrate(int, bool manual = true); - void setVideoBitrate(int, bool manual = true); + void setAudioBitrate(int); + void setVideoBitrate(int); + void setVideoRateFactor(int); - void setWidth(int, bool manual = true); - void setHeight(int, bool manual = true); - void setAspectWidth(int, bool manual = true); - void setAspectHeight(int, bool manual = true); + void setWidth(int); + void setHeight(int); + void setAspectWidth(int); + void setAspectHeight(int); void showAdvanced(bool);

@@ -66,8 +67,8 @@ struct Preset {

QString container; QString vcodec; QString acodec; - int vbr; - int abr; + int vbr = 0; + int abr = 0; QSize dims; Preset() {}

@@ -105,6 +106,8 @@ QString m_container;

char* m_audioCodecCstr = nullptr; char* m_videoCodecCstr = nullptr; char* m_containerCstr = nullptr; + + bool m_updatesBlocked = false; int m_abr; int m_vbr;
M src/platform/qt/VideoView.uisrc/platform/qt/VideoView.ui

@@ -6,8 +6,8 @@ <property name="geometry">

<rect> <x>0</x> <y>0</y> - <width>351</width> - <height>584</height> + <width>324</width> + <height>593</height> </rect> </property> <property name="sizePolicy">

@@ -145,9 +145,6 @@ <widget class="QRadioButton" name="presetLossless">

<property name="text"> <string>&amp;Lossless</string> </property> - <property name="checked"> - <bool>true</bool> - </property> <attribute name="buttonGroup"> <string notr="true">presets</string> </attribute>

@@ -156,6 +153,13 @@ </item>

</layout> </item> <item> + <widget class="Line" name="line"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + </widget> + </item> + <item> <layout class="QVBoxLayout" name="verticalLayout_3"> <item> <widget class="QRadioButton" name="preset4K">

@@ -270,12 +274,12 @@ <bool>true</bool>

</property> <item> <property name="text"> - <string>h.264</string> + <string>H.264</string> </property> </item> <item> <property name="text"> - <string>h.264 (NVENC)</string> + <string>H.264 (NVENC)</string> </property> </item> <item>

@@ -361,21 +365,63 @@ <property name="title">

<string> Bitrate (kbps)</string> </property> <layout class="QGridLayout" name="gridLayout_3"> + <item row="1" column="0"> + <widget class="QRadioButton" name="doVbr"> + <property name="text"> + <string notr="true"/> + </property> + <property name="checked"> + <bool>true</bool> + </property> + <attribute name="buttonGroup"> + <string notr="true">ratefactor</string> + </attribute> + </widget> + </item> + <item row="3" column="2"> + <widget class="QSpinBox" name="abr"> + <property name="alignment"> + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + </property> + <property name="minimum"> + <number>16</number> + </property> + <property name="maximum"> + <number>320</number> + </property> + <property name="value"> + <number>128</number> + </property> + </widget> + </item> <item row="0" column="0"> - <widget class="QLabel" name="label"> + <widget class="QRadioButton" name="doCrf"> <property name="text"> - <string>VBR </string> + <string notr="true"/> + </property> + <attribute name="buttonGroup"> + <string notr="true">ratefactor</string> + </attribute> + </widget> + </item> + <item row="3" column="1"> + <widget class="QLabel" name="label_2"> + <property name="text"> + <string>ABR</string> </property> <property name="alignment"> <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> </property> <property name="buddy"> - <cstring>vbr</cstring> + <cstring>abr</cstring> </property> </widget> </item> - <item row="0" column="1"> - <widget class="QSpinBox" name="vbr"> + <item row="0" column="2"> + <widget class="QSpinBox" name="crf"> + <property name="enabled"> + <bool>false</bool> + </property> <property name="alignment"> <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> </property>

@@ -383,39 +429,49 @@ <property name="suffix">

<string/> </property> <property name="maximum"> - <number>10000</number> + <number>50</number> </property> <property name="value"> - <number>400</number> + <number>18</number> </property> </widget> </item> - <item row="1" column="1"> - <widget class="QSpinBox" name="abr"> + <item row="1" column="2"> + <widget class="QSpinBox" name="vbr"> <property name="alignment"> <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> </property> - <property name="minimum"> - <number>16</number> + <property name="suffix"> + <string/> </property> <property name="maximum"> - <number>320</number> + <number>10000</number> </property> - <property name="value"> - <number>128</number> + </widget> + </item> + <item row="1" column="1"> + <widget class="QLabel" name="label"> + <property name="text"> + <string>VBR</string> + </property> + <property name="alignment"> + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + </property> + <property name="buddy"> + <cstring>vbr</cstring> </property> </widget> </item> - <item row="1" column="0"> - <widget class="QLabel" name="label_2"> + <item row="0" column="1"> + <widget class="QLabel" name="label_5"> <property name="text"> - <string>ABR</string> + <string>CRF</string> </property> <property name="alignment"> <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> </property> <property name="buddy"> - <cstring>abr</cstring> + <cstring>crf</cstring> </property> </widget> </item>

@@ -529,14 +585,20 @@ <tabstop>selectFile</tabstop>

<tabstop>presetHQ</tabstop> <tabstop>presetYoutube</tabstop> <tabstop>presetWebM</tabstop> + <tabstop>presetMP4</tabstop> <tabstop>presetLossless</tabstop> + <tabstop>preset4K</tabstop> <tabstop>preset1080</tabstop> <tabstop>preset720</tabstop> <tabstop>preset480</tabstop> <tabstop>presetNative</tabstop> + <tabstop>showAdvanced</tabstop> <tabstop>container</tabstop> <tabstop>video</tabstop> <tabstop>audio</tabstop> + <tabstop>doCrf</tabstop> + <tabstop>doVbr</tabstop> + <tabstop>crf</tabstop> <tabstop>vbr</tabstop> <tabstop>abr</tabstop> <tabstop>width</tabstop>

@@ -544,12 +606,45 @@ <tabstop>height</tabstop>

<tabstop>wratio</tabstop> <tabstop>hratio</tabstop> <tabstop>lockRatio</tabstop> - <tabstop>showAdvanced</tabstop> </tabstops> <resources/> - <connections/> + <connections> + <connection> + <sender>doCrf</sender> + <signal>toggled(bool)</signal> + <receiver>crf</receiver> + <slot>setEnabled(bool)</slot> + <hints> + <hint type="sourcelabel"> + <x>200</x> + <y>324</y> + </hint> + <hint type="destinationlabel"> + <x>301</x> + <y>314</y> + </hint> + </hints> + </connection> + <connection> + <sender>doVbr</sender> + <signal>toggled(bool)</signal> + <receiver>vbr</receiver> + <slot>setEnabled(bool)</slot> + <hints> + <hint type="sourcelabel"> + <x>200</x> + <y>364</y> + </hint> + <hint type="destinationlabel"> + <x>301</x> + <y>354</y> + </hint> + </hints> + </connection> + </connections> <buttongroups> + <buttongroup name="presets"/> <buttongroup name="resolutions"/> - <buttongroup name="presets"/> + <buttongroup name="ratefactor"/> </buttongroups> </ui>
M src/platform/qt/ts/mgba-de.tssrc/platform/qt/ts/mgba-de.ts

@@ -3255,7 +3255,7 @@ <context>

<name>QGBA::KeyEditor</name> <message> <location filename="../KeyEditor.cpp" line="34"/> - <location filename="../KeyEditor.cpp" line="236"/> + <location filename="../KeyEditor.cpp" line="240"/> <source>---</source> <translation>---</translation> </message>

@@ -3935,17 +3935,17 @@ </context>

<context> <name>QGBA::VideoView</name> <message> - <location filename="../VideoView.cpp" line="197"/> + <location filename="../VideoView.cpp" line="202"/> <source>Failed to open output video file: %1</source> <translation>Fehler beim Öffnen der Ausgabe-Videodatei: %1</translation> </message> <message> - <location filename="../VideoView.cpp" line="218"/> + <location filename="../VideoView.cpp" line="223"/> <source>Native (%0x%1)</source> <translation>Nativ (%0x%1)</translation> </message> <message> - <location filename="../VideoView.cpp" line="233"/> + <location filename="../VideoView.cpp" line="238"/> <source>Select output file</source> <translation>Ausgabedatei auswählen</translation> </message>

@@ -5745,28 +5745,28 @@ <translation>Vorgaben</translation>

</message> <message> <location filename="../VideoView.ui" line="129"/> - <location filename="../VideoView.ui" line="251"/> + <location filename="../VideoView.ui" line="255"/> <source>WebM</source> <translation>WebM</translation> </message> <message> - <location filename="../VideoView.ui" line="236"/> + <location filename="../VideoView.ui" line="240"/> <source>Format</source> <translation>Format</translation> </message> <message> - <location filename="../VideoView.ui" line="246"/> + <location filename="../VideoView.ui" line="250"/> <source>MKV</source> <translation>MKV</translation> </message> <message> - <location filename="../VideoView.ui" line="256"/> + <location filename="../VideoView.ui" line="260"/> <source>AVI</source> <translation>AVI</translation> </message> <message> <location filename="../VideoView.ui" line="139"/> - <location filename="../VideoView.ui" line="261"/> + <location filename="../VideoView.ui" line="265"/> <source>MP4</source> <translation>MP4</translation> </message>

@@ -5786,128 +5786,133 @@ <source>&amp;Lossless</source>

<translation>Ver&amp;lustfrei</translation> </message> <message> - <location filename="../VideoView.ui" line="163"/> + <location filename="../VideoView.ui" line="167"/> <source>4K</source> <translation>4K</translation> </message> <message> - <location filename="../VideoView.ui" line="170"/> + <location filename="../VideoView.ui" line="174"/> <source>&amp;1080p</source> <translation>&amp;1080p</translation> </message> <message> - <location filename="../VideoView.ui" line="180"/> + <location filename="../VideoView.ui" line="184"/> <source>&amp;720p</source> <translation>&amp;720p</translation> </message> <message> - <location filename="../VideoView.ui" line="190"/> + <location filename="../VideoView.ui" line="194"/> <source>&amp;480p</source> <translation>&amp;480p</translation> </message> <message> - <location filename="../VideoView.ui" line="203"/> + <location filename="../VideoView.ui" line="207"/> <source>&amp;Native</source> <translation>&amp;Nativ</translation> </message> <message> - <location filename="../VideoView.ui" line="273"/> - <source>h.264</source> - <translation>h.264</translation> - </message> - <message> - <location filename="../VideoView.ui" line="278"/> - <source>h.264 (NVENC)</source> - <translation>h.264 (NVENC)</translation> - </message> - <message> - <location filename="../VideoView.ui" line="283"/> + <location filename="../VideoView.ui" line="287"/> <source>HEVC</source> <translation>HEVC</translation> </message> <message> - <location filename="../VideoView.ui" line="288"/> + <location filename="../VideoView.ui" line="292"/> <source>HEVC (NVENC)</source> <translation>HEVC (NVENC)</translation> </message> <message> - <location filename="../VideoView.ui" line="293"/> + <location filename="../VideoView.ui" line="297"/> <source>VP8</source> <translation>VP8</translation> </message> <message> - <location filename="../VideoView.ui" line="298"/> + <location filename="../VideoView.ui" line="302"/> <source>VP9</source> <translation>VP9</translation> </message> <message> - <location filename="../VideoView.ui" line="303"/> + <location filename="../VideoView.ui" line="307"/> <source>FFV1</source> <translation>FFV1</translation> </message> <message> - <location filename="../VideoView.ui" line="308"/> - <location filename="../VideoView.ui" line="350"/> + <location filename="../VideoView.ui" line="312"/> + <location filename="../VideoView.ui" line="354"/> <source>None</source> <translation>Leer</translation> </message> <message> - <location filename="../VideoView.ui" line="320"/> + <location filename="../VideoView.ui" line="324"/> <source>FLAC</source> <translation>FLAC</translation> </message> <message> - <location filename="../VideoView.ui" line="325"/> + <location filename="../VideoView.ui" line="329"/> <source>Opus</source> <translation>Opus</translation> </message> <message> - <location filename="../VideoView.ui" line="330"/> + <location filename="../VideoView.ui" line="334"/> <source>Vorbis</source> <translation>Vorbis</translation> </message> <message> - <location filename="../VideoView.ui" line="335"/> + <location filename="../VideoView.ui" line="339"/> <source>MP3</source> <translation>MP3</translation> </message> <message> - <location filename="../VideoView.ui" line="340"/> + <location filename="../VideoView.ui" line="344"/> <source>AAC</source> <translation>AAC</translation> </message> <message> - <location filename="../VideoView.ui" line="345"/> + <location filename="../VideoView.ui" line="349"/> <source>Uncompressed</source> <translation>Unkomprimiert</translation> </message> <message> - <location filename="../VideoView.ui" line="361"/> + <location filename="../VideoView.ui" line="365"/> <source> Bitrate (kbps)</source> <translation> Bitrate (kbps)</translation> </message> <message> - <location filename="../VideoView.ui" line="367"/> - <source>VBR </source> - <translation>VBR </translation> + <location filename="../VideoView.ui" line="410"/> + <source>ABR</source> + <translation>ABR</translation> + </message> + <message> + <location filename="../VideoView.ui" line="277"/> + <source>H.264</source> + <translation type="unfinished">H.264</translation> + </message> + <message> + <location filename="../VideoView.ui" line="282"/> + <source>H.264 (NVENC)</source> + <translation type="unfinished">H.264 (NVENC)</translation> </message> <message> - <location filename="../VideoView.ui" line="412"/> - <source>ABR</source> - <translation>ABR</translation> + <location filename="../VideoView.ui" line="455"/> + <source>VBR</source> + <translation>VBR</translation> </message> <message> - <location filename="../VideoView.ui" line="428"/> + <location filename="../VideoView.ui" line="468"/> + <source>CRF</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../VideoView.ui" line="484"/> <source>Dimensions</source> <translation>Abmessungen</translation> </message> <message> - <location filename="../VideoView.ui" line="494"/> + <location filename="../VideoView.ui" line="550"/> <source>Lock aspect ratio</source> <translation>Seitenverhältnis sperren</translation> </message> <message> - <location filename="../VideoView.ui" line="509"/> + <location filename="../VideoView.ui" line="565"/> <source>Show advanced</source> <translation>Erweiterte Optionen anzeigen</translation> </message>
M src/platform/qt/ts/mgba-en.tssrc/platform/qt/ts/mgba-en.ts

@@ -3254,7 +3254,7 @@ <context>

<name>QGBA::KeyEditor</name> <message> <location filename="../KeyEditor.cpp" line="34"/> - <location filename="../KeyEditor.cpp" line="236"/> + <location filename="../KeyEditor.cpp" line="240"/> <source>---</source> <translation type="unfinished"></translation> </message>

@@ -3934,17 +3934,17 @@ </context>

<context> <name>QGBA::VideoView</name> <message> - <location filename="../VideoView.cpp" line="197"/> + <location filename="../VideoView.cpp" line="202"/> <source>Failed to open output video file: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.cpp" line="218"/> + <location filename="../VideoView.cpp" line="223"/> <source>Native (%0x%1)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.cpp" line="233"/> + <location filename="../VideoView.cpp" line="238"/> <source>Select output file</source> <translation type="unfinished"></translation> </message>

@@ -5747,13 +5747,13 @@ <translation type="unfinished"></translation>

</message> <message> <location filename="../VideoView.ui" line="129"/> - <location filename="../VideoView.ui" line="251"/> + <location filename="../VideoView.ui" line="255"/> <source>WebM</source> <translation type="unfinished"></translation> </message> <message> <location filename="../VideoView.ui" line="139"/> - <location filename="../VideoView.ui" line="261"/> + <location filename="../VideoView.ui" line="265"/> <source>MP4</source> <translation type="unfinished"></translation> </message>

@@ -5763,143 +5763,148 @@ <source>&amp;Lossless</source>

<translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="163"/> + <location filename="../VideoView.ui" line="167"/> <source>4K</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="170"/> + <location filename="../VideoView.ui" line="174"/> <source>&amp;1080p</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="180"/> + <location filename="../VideoView.ui" line="184"/> <source>&amp;720p</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="190"/> + <location filename="../VideoView.ui" line="194"/> <source>&amp;480p</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="203"/> + <location filename="../VideoView.ui" line="207"/> <source>&amp;Native</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="236"/> + <location filename="../VideoView.ui" line="240"/> <source>Format</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="246"/> + <location filename="../VideoView.ui" line="250"/> <source>MKV</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="256"/> + <location filename="../VideoView.ui" line="260"/> <source>AVI</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="273"/> - <source>h.264</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../VideoView.ui" line="278"/> - <source>h.264 (NVENC)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../VideoView.ui" line="283"/> + <location filename="../VideoView.ui" line="287"/> <source>HEVC</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="288"/> + <location filename="../VideoView.ui" line="292"/> <source>HEVC (NVENC)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="293"/> + <location filename="../VideoView.ui" line="297"/> <source>VP8</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="298"/> + <location filename="../VideoView.ui" line="302"/> <source>VP9</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="303"/> + <location filename="../VideoView.ui" line="307"/> <source>FFV1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="308"/> - <location filename="../VideoView.ui" line="350"/> + <location filename="../VideoView.ui" line="312"/> + <location filename="../VideoView.ui" line="354"/> <source>None</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="320"/> + <location filename="../VideoView.ui" line="324"/> <source>FLAC</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="325"/> + <location filename="../VideoView.ui" line="329"/> <source>Opus</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="330"/> + <location filename="../VideoView.ui" line="334"/> <source>Vorbis</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="335"/> + <location filename="../VideoView.ui" line="339"/> <source>MP3</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="340"/> + <location filename="../VideoView.ui" line="344"/> <source>AAC</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="345"/> + <location filename="../VideoView.ui" line="349"/> <source>Uncompressed</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="361"/> + <location filename="../VideoView.ui" line="365"/> <source> Bitrate (kbps)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="367"/> - <source>VBR </source> + <location filename="../VideoView.ui" line="410"/> + <source>ABR</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="412"/> - <source>ABR</source> + <location filename="../VideoView.ui" line="277"/> + <source>H.264</source> + <translation type="unfinished">H.264</translation> + </message> + <message> + <location filename="../VideoView.ui" line="282"/> + <source>H.264 (NVENC)</source> + <translation type="unfinished">H.264 (NVENC)</translation> + </message> + <message> + <location filename="../VideoView.ui" line="455"/> + <source>VBR</source> + <translation>VBR</translation> + </message> + <message> + <location filename="../VideoView.ui" line="468"/> + <source>CRF</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="428"/> + <location filename="../VideoView.ui" line="484"/> <source>Dimensions</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="494"/> + <location filename="../VideoView.ui" line="550"/> <source>Lock aspect ratio</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="509"/> + <location filename="../VideoView.ui" line="565"/> <source>Show advanced</source> <translation type="unfinished"></translation> </message>
M src/platform/qt/ts/mgba-es.tssrc/platform/qt/ts/mgba-es.ts

@@ -3255,7 +3255,7 @@ <context>

<name>QGBA::KeyEditor</name> <message> <location filename="../KeyEditor.cpp" line="34"/> - <location filename="../KeyEditor.cpp" line="236"/> + <location filename="../KeyEditor.cpp" line="240"/> <source>---</source> <translation>---</translation> </message>

@@ -3935,17 +3935,17 @@ </context>

<context> <name>QGBA::VideoView</name> <message> - <location filename="../VideoView.cpp" line="197"/> + <location filename="../VideoView.cpp" line="202"/> <source>Failed to open output video file: %1</source> <translation>Error al abrir el archivo de video de salida: %1</translation> </message> <message> - <location filename="../VideoView.cpp" line="218"/> + <location filename="../VideoView.cpp" line="223"/> <source>Native (%0x%1)</source> <translation>Native (%0x%1)</translation> </message> <message> - <location filename="../VideoView.cpp" line="233"/> + <location filename="../VideoView.cpp" line="238"/> <source>Select output file</source> <translation>Seleccionar archivo de salida</translation> </message>

@@ -5740,28 +5740,28 @@ <translation>Ajustes predefinidos</translation>

</message> <message> <location filename="../VideoView.ui" line="129"/> - <location filename="../VideoView.ui" line="251"/> + <location filename="../VideoView.ui" line="255"/> <source>WebM</source> <translation>WebM</translation> </message> <message> - <location filename="../VideoView.ui" line="236"/> + <location filename="../VideoView.ui" line="240"/> <source>Format</source> <translation>Formato</translation> </message> <message> - <location filename="../VideoView.ui" line="246"/> + <location filename="../VideoView.ui" line="250"/> <source>MKV</source> <translation>MKV</translation> </message> <message> - <location filename="../VideoView.ui" line="256"/> + <location filename="../VideoView.ui" line="260"/> <source>AVI</source> <translation>AVI</translation> </message> <message> <location filename="../VideoView.ui" line="139"/> - <location filename="../VideoView.ui" line="261"/> + <location filename="../VideoView.ui" line="265"/> <source>MP4</source> <translation>MP4</translation> </message>

@@ -5781,128 +5781,133 @@ <source>&amp;Lossless</source>

<translation>Sin pér&amp;didas</translation> </message> <message> - <location filename="../VideoView.ui" line="163"/> + <location filename="../VideoView.ui" line="167"/> <source>4K</source> <translation type="unfinished">480p {4K?}</translation> </message> <message> - <location filename="../VideoView.ui" line="170"/> + <location filename="../VideoView.ui" line="174"/> <source>&amp;1080p</source> <translation>&amp;1080p</translation> </message> <message> - <location filename="../VideoView.ui" line="180"/> + <location filename="../VideoView.ui" line="184"/> <source>&amp;720p</source> <translation>&amp;720p</translation> </message> <message> - <location filename="../VideoView.ui" line="190"/> + <location filename="../VideoView.ui" line="194"/> <source>&amp;480p</source> <translation>&amp;480p</translation> </message> <message> - <location filename="../VideoView.ui" line="203"/> + <location filename="../VideoView.ui" line="207"/> <source>&amp;Native</source> <translation>&amp;NAtivo</translation> </message> <message> - <location filename="../VideoView.ui" line="273"/> - <source>h.264</source> - <translation>h.264</translation> - </message> - <message> - <location filename="../VideoView.ui" line="278"/> - <source>h.264 (NVENC)</source> - <translation>h.264 (NVENC)</translation> - </message> - <message> - <location filename="../VideoView.ui" line="283"/> + <location filename="../VideoView.ui" line="287"/> <source>HEVC</source> <translation>HEVC</translation> </message> <message> - <location filename="../VideoView.ui" line="288"/> + <location filename="../VideoView.ui" line="292"/> <source>HEVC (NVENC)</source> <translation>HEVC (NVENC)</translation> </message> <message> - <location filename="../VideoView.ui" line="293"/> + <location filename="../VideoView.ui" line="297"/> <source>VP8</source> <translation>VP8</translation> </message> <message> - <location filename="../VideoView.ui" line="298"/> + <location filename="../VideoView.ui" line="302"/> <source>VP9</source> <translation>VP9</translation> </message> <message> - <location filename="../VideoView.ui" line="303"/> + <location filename="../VideoView.ui" line="307"/> <source>FFV1</source> <translation>FFV1</translation> </message> <message> - <location filename="../VideoView.ui" line="308"/> - <location filename="../VideoView.ui" line="350"/> + <location filename="../VideoView.ui" line="312"/> + <location filename="../VideoView.ui" line="354"/> <source>None</source> <translation type="unfinished">Ninguno</translation> </message> <message> - <location filename="../VideoView.ui" line="320"/> + <location filename="../VideoView.ui" line="324"/> <source>FLAC</source> <translation>FLAC</translation> </message> <message> - <location filename="../VideoView.ui" line="325"/> + <location filename="../VideoView.ui" line="329"/> <source>Opus</source> <translation>Opus</translation> </message> <message> - <location filename="../VideoView.ui" line="330"/> + <location filename="../VideoView.ui" line="334"/> <source>Vorbis</source> <translation>Vorbis</translation> </message> <message> - <location filename="../VideoView.ui" line="335"/> + <location filename="../VideoView.ui" line="339"/> <source>MP3</source> <translation>MP3</translation> </message> <message> - <location filename="../VideoView.ui" line="340"/> + <location filename="../VideoView.ui" line="344"/> <source>AAC</source> <translation>AAC</translation> </message> <message> - <location filename="../VideoView.ui" line="345"/> + <location filename="../VideoView.ui" line="349"/> <source>Uncompressed</source> <translation>Sin comprimir</translation> </message> <message> - <location filename="../VideoView.ui" line="361"/> + <location filename="../VideoView.ui" line="365"/> <source> Bitrate (kbps)</source> <translation> Tasa de bits (kbps)</translation> </message> <message> - <location filename="../VideoView.ui" line="367"/> - <source>VBR </source> - <translation>VBR </translation> + <location filename="../VideoView.ui" line="410"/> + <source>ABR</source> + <translation>ABR</translation> + </message> + <message> + <location filename="../VideoView.ui" line="277"/> + <source>H.264</source> + <translation type="unfinished">H.264</translation> + </message> + <message> + <location filename="../VideoView.ui" line="282"/> + <source>H.264 (NVENC)</source> + <translation type="unfinished">H.264 (NVENC)</translation> </message> <message> - <location filename="../VideoView.ui" line="412"/> - <source>ABR</source> - <translation>ABR</translation> + <location filename="../VideoView.ui" line="455"/> + <source>VBR</source> + <translation>VBR</translation> </message> <message> - <location filename="../VideoView.ui" line="428"/> + <location filename="../VideoView.ui" line="468"/> + <source>CRF</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../VideoView.ui" line="484"/> <source>Dimensions</source> <translation>Dimensiones</translation> </message> <message> - <location filename="../VideoView.ui" line="494"/> + <location filename="../VideoView.ui" line="550"/> <source>Lock aspect ratio</source> <translation>Bloquear proporción de aspecto</translation> </message> <message> - <location filename="../VideoView.ui" line="509"/> + <location filename="../VideoView.ui" line="565"/> <source>Show advanced</source> <translation>Mostrar ajustes avanzados</translation> </message>
M src/platform/qt/ts/mgba-fr.tssrc/platform/qt/ts/mgba-fr.ts

@@ -3267,7 +3267,7 @@ <context>

<name>QGBA::KeyEditor</name> <message> <location filename="../KeyEditor.cpp" line="34"/> - <location filename="../KeyEditor.cpp" line="236"/> + <location filename="../KeyEditor.cpp" line="240"/> <source>---</source> <translation>---</translation> </message>

@@ -3954,17 +3954,17 @@ </context>

<context> <name>QGBA::VideoView</name> <message> - <location filename="../VideoView.cpp" line="197"/> + <location filename="../VideoView.cpp" line="202"/> <source>Failed to open output video file: %1</source> <translation>Impossible d&apos;ouvrir le fichier vidéo de sortie : %1</translation> </message> <message> - <location filename="../VideoView.cpp" line="218"/> + <location filename="../VideoView.cpp" line="223"/> <source>Native (%0x%1)</source> <translation>Natif (%0x%1)</translation> </message> <message> - <location filename="../VideoView.cpp" line="233"/> + <location filename="../VideoView.cpp" line="238"/> <source>Select output file</source> <translation>Choisir le fichier de sortie</translation> </message>

@@ -5760,28 +5760,28 @@ <translation>Préréglages</translation>

</message> <message> <location filename="../VideoView.ui" line="129"/> - <location filename="../VideoView.ui" line="251"/> + <location filename="../VideoView.ui" line="255"/> <source>WebM</source> <translation>WebM</translation> </message> <message> - <location filename="../VideoView.ui" line="236"/> + <location filename="../VideoView.ui" line="240"/> <source>Format</source> <translation>Format</translation> </message> <message> - <location filename="../VideoView.ui" line="246"/> + <location filename="../VideoView.ui" line="250"/> <source>MKV</source> <translation>MKV</translation> </message> <message> - <location filename="../VideoView.ui" line="256"/> + <location filename="../VideoView.ui" line="260"/> <source>AVI</source> <translation>AVI</translation> </message> <message> <location filename="../VideoView.ui" line="139"/> - <location filename="../VideoView.ui" line="261"/> + <location filename="../VideoView.ui" line="265"/> <source>MP4</source> <translation>MP4</translation> </message>

@@ -5801,128 +5801,133 @@ <source>&amp;Lossless</source>

<translation>&amp;Lossless</translation> </message> <message> - <location filename="../VideoView.ui" line="163"/> + <location filename="../VideoView.ui" line="167"/> <source>4K</source> <translation>4K</translation> </message> <message> - <location filename="../VideoView.ui" line="170"/> + <location filename="../VideoView.ui" line="174"/> <source>&amp;1080p</source> <translation>&amp;1080p</translation> </message> <message> - <location filename="../VideoView.ui" line="180"/> + <location filename="../VideoView.ui" line="184"/> <source>&amp;720p</source> <translation>&amp;720p</translation> </message> <message> - <location filename="../VideoView.ui" line="190"/> + <location filename="../VideoView.ui" line="194"/> <source>&amp;480p</source> <translation>&amp;480p</translation> </message> <message> - <location filename="../VideoView.ui" line="203"/> + <location filename="../VideoView.ui" line="207"/> <source>&amp;Native</source> <translation>&amp;Natif</translation> </message> <message> - <location filename="../VideoView.ui" line="273"/> - <source>h.264</source> - <translation>H.264</translation> - </message> - <message> - <location filename="../VideoView.ui" line="278"/> - <source>h.264 (NVENC)</source> - <translation>H.264 (NVENC)</translation> - </message> - <message> - <location filename="../VideoView.ui" line="283"/> + <location filename="../VideoView.ui" line="287"/> <source>HEVC</source> <translation>HEVC</translation> </message> <message> - <location filename="../VideoView.ui" line="288"/> + <location filename="../VideoView.ui" line="292"/> <source>HEVC (NVENC)</source> <translation>HEVC (NVENC)</translation> </message> <message> - <location filename="../VideoView.ui" line="293"/> + <location filename="../VideoView.ui" line="297"/> <source>VP8</source> <translation>VP8</translation> </message> <message> - <location filename="../VideoView.ui" line="298"/> + <location filename="../VideoView.ui" line="302"/> <source>VP9</source> <translation>VP9</translation> </message> <message> - <location filename="../VideoView.ui" line="303"/> + <location filename="../VideoView.ui" line="307"/> <source>FFV1</source> <translation>FFV1</translation> </message> <message> - <location filename="../VideoView.ui" line="308"/> - <location filename="../VideoView.ui" line="350"/> + <location filename="../VideoView.ui" line="312"/> + <location filename="../VideoView.ui" line="354"/> <source>None</source> <translation>Aucun</translation> </message> <message> - <location filename="../VideoView.ui" line="320"/> + <location filename="../VideoView.ui" line="324"/> <source>FLAC</source> <translation>FLAC</translation> </message> <message> - <location filename="../VideoView.ui" line="325"/> + <location filename="../VideoView.ui" line="329"/> <source>Opus</source> <translation>Opus</translation> </message> <message> - <location filename="../VideoView.ui" line="330"/> + <location filename="../VideoView.ui" line="334"/> <source>Vorbis</source> <translation>Vorbis</translation> </message> <message> - <location filename="../VideoView.ui" line="335"/> + <location filename="../VideoView.ui" line="339"/> <source>MP3</source> <translation>MP3</translation> </message> <message> - <location filename="../VideoView.ui" line="340"/> + <location filename="../VideoView.ui" line="344"/> <source>AAC</source> <translation>AAC</translation> </message> <message> - <location filename="../VideoView.ui" line="345"/> + <location filename="../VideoView.ui" line="349"/> <source>Uncompressed</source> <translation>Non compressé</translation> </message> <message> - <location filename="../VideoView.ui" line="361"/> + <location filename="../VideoView.ui" line="365"/> <source> Bitrate (kbps)</source> <translation> Bitrate (kbps)</translation> </message> <message> - <location filename="../VideoView.ui" line="367"/> - <source>VBR </source> - <translation>VBR </translation> + <location filename="../VideoView.ui" line="410"/> + <source>ABR</source> + <translation>ABR</translation> + </message> + <message> + <location filename="../VideoView.ui" line="277"/> + <source>H.264</source> + <translation>H.264</translation> + </message> + <message> + <location filename="../VideoView.ui" line="282"/> + <source>H.264 (NVENC)</source> + <translation>H.264 (NVENC)</translation> </message> <message> - <location filename="../VideoView.ui" line="412"/> - <source>ABR</source> - <translation>ABR</translation> + <location filename="../VideoView.ui" line="455"/> + <source>VBR</source> + <translation>VBR</translation> </message> <message> - <location filename="../VideoView.ui" line="428"/> + <location filename="../VideoView.ui" line="468"/> + <source>CRF</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../VideoView.ui" line="484"/> <source>Dimensions</source> <translation>Dimensions</translation> </message> <message> - <location filename="../VideoView.ui" line="494"/> + <location filename="../VideoView.ui" line="550"/> <source>Lock aspect ratio</source> <translation>Bloquer les proportions</translation> </message> <message> - <location filename="../VideoView.ui" line="509"/> + <location filename="../VideoView.ui" line="565"/> <source>Show advanced</source> <translation>Paramètres avancés</translation> </message>
M src/platform/qt/ts/mgba-it.tssrc/platform/qt/ts/mgba-it.ts

@@ -3255,7 +3255,7 @@ <context>

<name>QGBA::KeyEditor</name> <message> <location filename="../KeyEditor.cpp" line="34"/> - <location filename="../KeyEditor.cpp" line="236"/> + <location filename="../KeyEditor.cpp" line="240"/> <source>---</source> <translation>---</translation> </message>

@@ -3935,17 +3935,17 @@ </context>

<context> <name>QGBA::VideoView</name> <message> - <location filename="../VideoView.cpp" line="197"/> + <location filename="../VideoView.cpp" line="202"/> <source>Failed to open output video file: %1</source> <translation>Errore durante l&apos;archiviazione del video: %1</translation> </message> <message> - <location filename="../VideoView.cpp" line="218"/> + <location filename="../VideoView.cpp" line="223"/> <source>Native (%0x%1)</source> <translation>Nativo (%0x%1)</translation> </message> <message> - <location filename="../VideoView.cpp" line="233"/> + <location filename="../VideoView.cpp" line="238"/> <source>Select output file</source> <translation>Seleziona file di uscita</translation> </message>

@@ -5740,48 +5740,38 @@ <translation>Profili</translation>

</message> <message> <location filename="../VideoView.ui" line="129"/> - <location filename="../VideoView.ui" line="251"/> + <location filename="../VideoView.ui" line="255"/> <source>WebM</source> <translation>WebM</translation> </message> <message> - <location filename="../VideoView.ui" line="236"/> + <location filename="../VideoView.ui" line="240"/> <source>Format</source> <translation>Formato</translation> </message> <message> - <location filename="../VideoView.ui" line="246"/> + <location filename="../VideoView.ui" line="250"/> <source>MKV</source> <translation>MKV</translation> </message> <message> - <location filename="../VideoView.ui" line="256"/> + <location filename="../VideoView.ui" line="260"/> <source>AVI</source> <translation>AVI</translation> </message> <message> <location filename="../VideoView.ui" line="139"/> - <location filename="../VideoView.ui" line="261"/> + <location filename="../VideoView.ui" line="265"/> <source>MP4</source> <translation>MP4</translation> </message> <message> - <location filename="../VideoView.ui" line="273"/> - <source>h.264</source> - <translation>h.264</translation> - </message> - <message> - <location filename="../VideoView.ui" line="278"/> - <source>h.264 (NVENC)</source> - <translation>h.264 (NVENC)</translation> - </message> - <message> - <location filename="../VideoView.ui" line="283"/> + <location filename="../VideoView.ui" line="287"/> <source>HEVC</source> <translation>HEVC</translation> </message> <message> - <location filename="../VideoView.ui" line="293"/> + <location filename="../VideoView.ui" line="297"/> <source>VP8</source> <translation>VP8</translation> </message>

@@ -5801,108 +5791,123 @@ <source>&amp;Lossless</source>

<translation>&amp;Lossless</translation> </message> <message> - <location filename="../VideoView.ui" line="163"/> + <location filename="../VideoView.ui" line="167"/> <source>4K</source> <translation>4K</translation> </message> <message> - <location filename="../VideoView.ui" line="170"/> + <location filename="../VideoView.ui" line="174"/> <source>&amp;1080p</source> <translation>&amp;1080p</translation> </message> <message> - <location filename="../VideoView.ui" line="180"/> + <location filename="../VideoView.ui" line="184"/> <source>&amp;720p</source> <translation>&amp;720p</translation> </message> <message> - <location filename="../VideoView.ui" line="190"/> + <location filename="../VideoView.ui" line="194"/> <source>&amp;480p</source> <translation>&amp;480p</translation> </message> <message> - <location filename="../VideoView.ui" line="203"/> + <location filename="../VideoView.ui" line="207"/> <source>&amp;Native</source> <translation>&amp;Nativa</translation> </message> <message> - <location filename="../VideoView.ui" line="288"/> + <location filename="../VideoView.ui" line="277"/> + <source>H.264</source> + <translation type="unfinished">H.264</translation> + </message> + <message> + <location filename="../VideoView.ui" line="282"/> + <source>H.264 (NVENC)</source> + <translation type="unfinished">H.264 (NVENC)</translation> + </message> + <message> + <location filename="../VideoView.ui" line="292"/> <source>HEVC (NVENC)</source> <translation>HEVC (NVENC)</translation> </message> <message> - <location filename="../VideoView.ui" line="298"/> + <location filename="../VideoView.ui" line="302"/> <source>VP9</source> <translation>VP9</translation> </message> <message> - <location filename="../VideoView.ui" line="303"/> + <location filename="../VideoView.ui" line="307"/> <source>FFV1</source> <translation>FFV1</translation> </message> <message> - <location filename="../VideoView.ui" line="308"/> - <location filename="../VideoView.ui" line="350"/> + <location filename="../VideoView.ui" line="312"/> + <location filename="../VideoView.ui" line="354"/> <source>None</source> <translation>Nessuno</translation> </message> <message> - <location filename="../VideoView.ui" line="320"/> + <location filename="../VideoView.ui" line="324"/> <source>FLAC</source> <translation>FLAC</translation> </message> <message> - <location filename="../VideoView.ui" line="325"/> + <location filename="../VideoView.ui" line="329"/> <source>Opus</source> <translation>Opus</translation> </message> <message> - <location filename="../VideoView.ui" line="330"/> + <location filename="../VideoView.ui" line="334"/> <source>Vorbis</source> <translation>Vorbis</translation> </message> <message> - <location filename="../VideoView.ui" line="335"/> + <location filename="../VideoView.ui" line="339"/> <source>MP3</source> <translation>MP3</translation> </message> <message> - <location filename="../VideoView.ui" line="340"/> + <location filename="../VideoView.ui" line="344"/> <source>AAC</source> <translation>AAC</translation> </message> <message> - <location filename="../VideoView.ui" line="345"/> + <location filename="../VideoView.ui" line="349"/> <source>Uncompressed</source> <translation>Senza compressione</translation> </message> <message> - <location filename="../VideoView.ui" line="361"/> + <location filename="../VideoView.ui" line="365"/> <source> Bitrate (kbps)</source> <translation> Bitrate (kbps)</translation> </message> <message> - <location filename="../VideoView.ui" line="367"/> - <source>VBR </source> - <translation>VBR </translation> - </message> - <message> - <location filename="../VideoView.ui" line="412"/> + <location filename="../VideoView.ui" line="410"/> <source>ABR</source> <translation>ABR</translation> </message> <message> - <location filename="../VideoView.ui" line="428"/> + <location filename="../VideoView.ui" line="455"/> + <source>VBR</source> + <translation>VBR</translation> + </message> + <message> + <location filename="../VideoView.ui" line="468"/> + <source>CRF</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../VideoView.ui" line="484"/> <source>Dimensions</source> <translation>Dimensioni</translation> </message> <message> - <location filename="../VideoView.ui" line="494"/> + <location filename="../VideoView.ui" line="550"/> <source>Lock aspect ratio</source> <translation>Blocca rapporti aspetto</translation> </message> <message> - <location filename="../VideoView.ui" line="509"/> + <location filename="../VideoView.ui" line="565"/> <source>Show advanced</source> <translation>Mostra avanzate</translation> </message>
M src/platform/qt/ts/mgba-ja.tssrc/platform/qt/ts/mgba-ja.ts

@@ -3255,7 +3255,7 @@ <context>

<name>QGBA::KeyEditor</name> <message> <location filename="../KeyEditor.cpp" line="34"/> - <location filename="../KeyEditor.cpp" line="236"/> + <location filename="../KeyEditor.cpp" line="240"/> <source>---</source> <translation>---</translation> </message>

@@ -3935,17 +3935,17 @@ </context>

<context> <name>QGBA::VideoView</name> <message> - <location filename="../VideoView.cpp" line="197"/> + <location filename="../VideoView.cpp" line="202"/> <source>Failed to open output video file: %1</source> <translation>出力ビデオファイルを開けませんでした: %1</translation> </message> <message> - <location filename="../VideoView.cpp" line="218"/> + <location filename="../VideoView.cpp" line="223"/> <source>Native (%0x%1)</source> <translation>ネイティブ(%0x%1)</translation> </message> <message> - <location filename="../VideoView.cpp" line="233"/> + <location filename="../VideoView.cpp" line="238"/> <source>Select output file</source> <translation>出力ファイルを選択</translation> </message>

@@ -5740,28 +5740,28 @@ <translation>プリセット</translation>

</message> <message> <location filename="../VideoView.ui" line="129"/> - <location filename="../VideoView.ui" line="251"/> + <location filename="../VideoView.ui" line="255"/> <source>WebM</source> <translation>WebM</translation> </message> <message> - <location filename="../VideoView.ui" line="236"/> + <location filename="../VideoView.ui" line="240"/> <source>Format</source> <translation>フォーマット</translation> </message> <message> - <location filename="../VideoView.ui" line="246"/> + <location filename="../VideoView.ui" line="250"/> <source>MKV</source> <translation>MKV</translation> </message> <message> - <location filename="../VideoView.ui" line="256"/> + <location filename="../VideoView.ui" line="260"/> <source>AVI</source> <translation>AVI</translation> </message> <message> <location filename="../VideoView.ui" line="139"/> - <location filename="../VideoView.ui" line="261"/> + <location filename="../VideoView.ui" line="265"/> <source>MP4</source> <translation>MP4</translation> </message>

@@ -5781,128 +5781,133 @@ <source>&amp;Lossless</source>

<translation>ロスレス (&amp;L)</translation> </message> <message> - <location filename="../VideoView.ui" line="163"/> + <location filename="../VideoView.ui" line="167"/> <source>4K</source> <translation>4K</translation> </message> <message> - <location filename="../VideoView.ui" line="170"/> + <location filename="../VideoView.ui" line="174"/> <source>&amp;1080p</source> <translation>1080p (&amp;1)</translation> </message> <message> - <location filename="../VideoView.ui" line="180"/> + <location filename="../VideoView.ui" line="184"/> <source>&amp;720p</source> <translation>720p (&amp;7)</translation> </message> <message> - <location filename="../VideoView.ui" line="190"/> + <location filename="../VideoView.ui" line="194"/> <source>&amp;480p</source> <translation>480p (&amp;4)</translation> </message> <message> - <location filename="../VideoView.ui" line="203"/> + <location filename="../VideoView.ui" line="207"/> <source>&amp;Native</source> <translation>ネイティブ (&amp;N)</translation> </message> <message> - <location filename="../VideoView.ui" line="273"/> - <source>h.264</source> - <translation>h.264</translation> - </message> - <message> - <location filename="../VideoView.ui" line="278"/> - <source>h.264 (NVENC)</source> - <translation>h.264 (NVENC)</translation> - </message> - <message> - <location filename="../VideoView.ui" line="283"/> + <location filename="../VideoView.ui" line="287"/> <source>HEVC</source> <translation>HEVC</translation> </message> <message> - <location filename="../VideoView.ui" line="288"/> + <location filename="../VideoView.ui" line="292"/> <source>HEVC (NVENC)</source> <translation>HEVC(NVENC)</translation> </message> <message> - <location filename="../VideoView.ui" line="293"/> + <location filename="../VideoView.ui" line="297"/> <source>VP8</source> <translation>VP8</translation> </message> <message> - <location filename="../VideoView.ui" line="298"/> + <location filename="../VideoView.ui" line="302"/> <source>VP9</source> <translation>VP9</translation> </message> <message> - <location filename="../VideoView.ui" line="303"/> + <location filename="../VideoView.ui" line="307"/> <source>FFV1</source> <translation>FFV1</translation> </message> <message> - <location filename="../VideoView.ui" line="308"/> - <location filename="../VideoView.ui" line="350"/> + <location filename="../VideoView.ui" line="312"/> + <location filename="../VideoView.ui" line="354"/> <source>None</source> <translation>なし</translation> </message> <message> - <location filename="../VideoView.ui" line="320"/> + <location filename="../VideoView.ui" line="324"/> <source>FLAC</source> <translation>FLAC</translation> </message> <message> - <location filename="../VideoView.ui" line="325"/> + <location filename="../VideoView.ui" line="329"/> <source>Opus</source> <translation>Opus</translation> </message> <message> - <location filename="../VideoView.ui" line="330"/> + <location filename="../VideoView.ui" line="334"/> <source>Vorbis</source> <translation>Vorbis</translation> </message> <message> - <location filename="../VideoView.ui" line="335"/> + <location filename="../VideoView.ui" line="339"/> <source>MP3</source> <translation>MP3</translation> </message> <message> - <location filename="../VideoView.ui" line="340"/> + <location filename="../VideoView.ui" line="344"/> <source>AAC</source> <translation>AAC</translation> </message> <message> - <location filename="../VideoView.ui" line="345"/> + <location filename="../VideoView.ui" line="349"/> <source>Uncompressed</source> <translation>圧縮なし</translation> </message> <message> - <location filename="../VideoView.ui" line="361"/> + <location filename="../VideoView.ui" line="365"/> <source> Bitrate (kbps)</source> <translation> ビットレート(kbps)</translation> </message> <message> - <location filename="../VideoView.ui" line="367"/> - <source>VBR </source> - <translation>VBR </translation> + <location filename="../VideoView.ui" line="410"/> + <source>ABR</source> + <translation>ABR</translation> + </message> + <message> + <location filename="../VideoView.ui" line="277"/> + <source>H.264</source> + <translation type="unfinished">H.264</translation> + </message> + <message> + <location filename="../VideoView.ui" line="282"/> + <source>H.264 (NVENC)</source> + <translation type="unfinished">H.264 (NVENC)</translation> </message> <message> - <location filename="../VideoView.ui" line="412"/> - <source>ABR</source> - <translation>ABR</translation> + <location filename="../VideoView.ui" line="455"/> + <source>VBR</source> + <translation>VBR</translation> </message> <message> - <location filename="../VideoView.ui" line="428"/> + <location filename="../VideoView.ui" line="468"/> + <source>CRF</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../VideoView.ui" line="484"/> <source>Dimensions</source> <translation>サイズ</translation> </message> <message> - <location filename="../VideoView.ui" line="494"/> + <location filename="../VideoView.ui" line="550"/> <source>Lock aspect ratio</source> <translation>縦横比を固定</translation> </message> <message> - <location filename="../VideoView.ui" line="509"/> + <location filename="../VideoView.ui" line="565"/> <source>Show advanced</source> <translation>詳細表示</translation> </message>
M src/platform/qt/ts/mgba-ko.tssrc/platform/qt/ts/mgba-ko.ts

@@ -3255,7 +3255,7 @@ <context>

<name>QGBA::KeyEditor</name> <message> <location filename="../KeyEditor.cpp" line="34"/> - <location filename="../KeyEditor.cpp" line="236"/> + <location filename="../KeyEditor.cpp" line="240"/> <source>---</source> <translation>---</translation> </message>

@@ -3935,17 +3935,17 @@ </context>

<context> <name>QGBA::VideoView</name> <message> - <location filename="../VideoView.cpp" line="197"/> + <location filename="../VideoView.cpp" line="202"/> <source>Failed to open output video file: %1</source> <translation>출력 비디오 파일을 열지 못했습니다: %1</translation> </message> <message> - <location filename="../VideoView.cpp" line="218"/> + <location filename="../VideoView.cpp" line="223"/> <source>Native (%0x%1)</source> <translation>기본 (%0x%1)</translation> </message> <message> - <location filename="../VideoView.cpp" line="233"/> + <location filename="../VideoView.cpp" line="238"/> <source>Select output file</source> <translation>출력 파일 선택</translation> </message>

@@ -5740,48 +5740,38 @@ <translation>프리셋</translation>

</message> <message> <location filename="../VideoView.ui" line="129"/> - <location filename="../VideoView.ui" line="251"/> + <location filename="../VideoView.ui" line="255"/> <source>WebM</source> <translation>WebM</translation> </message> <message> - <location filename="../VideoView.ui" line="236"/> + <location filename="../VideoView.ui" line="240"/> <source>Format</source> <translation>형식</translation> </message> <message> - <location filename="../VideoView.ui" line="246"/> + <location filename="../VideoView.ui" line="250"/> <source>MKV</source> <translation>MKV</translation> </message> <message> - <location filename="../VideoView.ui" line="256"/> + <location filename="../VideoView.ui" line="260"/> <source>AVI</source> <translation>AVI</translation> </message> <message> <location filename="../VideoView.ui" line="139"/> - <location filename="../VideoView.ui" line="261"/> + <location filename="../VideoView.ui" line="265"/> <source>MP4</source> <translation>MP4</translation> </message> <message> - <location filename="../VideoView.ui" line="273"/> - <source>h.264</source> - <translation>h.264</translation> - </message> - <message> - <location filename="../VideoView.ui" line="278"/> - <source>h.264 (NVENC)</source> - <translation>h.264 (NVENC)</translation> - </message> - <message> - <location filename="../VideoView.ui" line="283"/> + <location filename="../VideoView.ui" line="287"/> <source>HEVC</source> <translation>HEVC</translation> </message> <message> - <location filename="../VideoView.ui" line="293"/> + <location filename="../VideoView.ui" line="297"/> <source>VP8</source> <translation>VP8</translation> </message>

@@ -5801,108 +5791,123 @@ <source>&amp;Lossless</source>

<translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="163"/> + <location filename="../VideoView.ui" line="167"/> <source>4K</source> <translation type="unfinished">480p {4K?}</translation> </message> <message> - <location filename="../VideoView.ui" line="170"/> + <location filename="../VideoView.ui" line="174"/> <source>&amp;1080p</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="180"/> + <location filename="../VideoView.ui" line="184"/> <source>&amp;720p</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="190"/> + <location filename="../VideoView.ui" line="194"/> <source>&amp;480p</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="203"/> + <location filename="../VideoView.ui" line="207"/> <source>&amp;Native</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="288"/> + <location filename="../VideoView.ui" line="277"/> + <source>H.264</source> + <translation type="unfinished">H.264</translation> + </message> + <message> + <location filename="../VideoView.ui" line="282"/> + <source>H.264 (NVENC)</source> + <translation type="unfinished">H.264 (NVENC)</translation> + </message> + <message> + <location filename="../VideoView.ui" line="292"/> <source>HEVC (NVENC)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="298"/> + <location filename="../VideoView.ui" line="302"/> <source>VP9</source> <translation type="unfinished">VP9</translation> </message> <message> - <location filename="../VideoView.ui" line="303"/> + <location filename="../VideoView.ui" line="307"/> <source>FFV1</source> <translation>FFV1</translation> </message> <message> - <location filename="../VideoView.ui" line="308"/> - <location filename="../VideoView.ui" line="350"/> + <location filename="../VideoView.ui" line="312"/> + <location filename="../VideoView.ui" line="354"/> <source>None</source> <translation type="unfinished">없음</translation> </message> <message> - <location filename="../VideoView.ui" line="320"/> + <location filename="../VideoView.ui" line="324"/> <source>FLAC</source> <translation>FLAC</translation> </message> <message> - <location filename="../VideoView.ui" line="325"/> + <location filename="../VideoView.ui" line="329"/> <source>Opus</source> <translation>오푸스</translation> </message> <message> - <location filename="../VideoView.ui" line="330"/> + <location filename="../VideoView.ui" line="334"/> <source>Vorbis</source> <translation>보비스</translation> </message> <message> - <location filename="../VideoView.ui" line="335"/> + <location filename="../VideoView.ui" line="339"/> <source>MP3</source> <translation>MP3</translation> </message> <message> - <location filename="../VideoView.ui" line="340"/> + <location filename="../VideoView.ui" line="344"/> <source>AAC</source> <translation>AAC</translation> </message> <message> - <location filename="../VideoView.ui" line="345"/> + <location filename="../VideoView.ui" line="349"/> <source>Uncompressed</source> <translation>미압축</translation> </message> <message> - <location filename="../VideoView.ui" line="361"/> + <location filename="../VideoView.ui" line="365"/> <source> Bitrate (kbps)</source> <translation> 전송률 (kbps)</translation> </message> <message> - <location filename="../VideoView.ui" line="367"/> - <source>VBR </source> - <translation>VBR </translation> - </message> - <message> - <location filename="../VideoView.ui" line="412"/> + <location filename="../VideoView.ui" line="410"/> <source>ABR</source> <translation>ABR</translation> </message> <message> - <location filename="../VideoView.ui" line="428"/> + <location filename="../VideoView.ui" line="455"/> + <source>VBR</source> + <translation>VBR</translation> + </message> + <message> + <location filename="../VideoView.ui" line="468"/> + <source>CRF</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../VideoView.ui" line="484"/> <source>Dimensions</source> <translation>크기</translation> </message> <message> - <location filename="../VideoView.ui" line="494"/> + <location filename="../VideoView.ui" line="550"/> <source>Lock aspect ratio</source> <translation>화면비 잠금</translation> </message> <message> - <location filename="../VideoView.ui" line="509"/> + <location filename="../VideoView.ui" line="565"/> <source>Show advanced</source> <translation>고급 보기</translation> </message>
M src/platform/qt/ts/mgba-nl.tssrc/platform/qt/ts/mgba-nl.ts

@@ -3254,7 +3254,7 @@ <context>

<name>QGBA::KeyEditor</name> <message> <location filename="../KeyEditor.cpp" line="34"/> - <location filename="../KeyEditor.cpp" line="236"/> + <location filename="../KeyEditor.cpp" line="240"/> <source>---</source> <translation type="unfinished"></translation> </message>

@@ -3934,17 +3934,17 @@ </context>

<context> <name>QGBA::VideoView</name> <message> - <location filename="../VideoView.cpp" line="197"/> + <location filename="../VideoView.cpp" line="202"/> <source>Failed to open output video file: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.cpp" line="218"/> + <location filename="../VideoView.cpp" line="223"/> <source>Native (%0x%1)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.cpp" line="233"/> + <location filename="../VideoView.cpp" line="238"/> <source>Select output file</source> <translation type="unfinished"></translation> </message>

@@ -5747,7 +5747,7 @@ <translation type="unfinished"></translation>

</message> <message> <location filename="../VideoView.ui" line="129"/> - <location filename="../VideoView.ui" line="251"/> + <location filename="../VideoView.ui" line="255"/> <source>WebM</source> <translation type="unfinished"></translation> </message>

@@ -5757,149 +5757,154 @@ <source>&amp;Lossless</source>

<translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="170"/> + <location filename="../VideoView.ui" line="174"/> <source>&amp;1080p</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="180"/> + <location filename="../VideoView.ui" line="184"/> <source>&amp;720p</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="190"/> + <location filename="../VideoView.ui" line="194"/> <source>&amp;480p</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="203"/> + <location filename="../VideoView.ui" line="207"/> <source>&amp;Native</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="236"/> + <location filename="../VideoView.ui" line="240"/> <source>Format</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="246"/> + <location filename="../VideoView.ui" line="250"/> <source>MKV</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="256"/> + <location filename="../VideoView.ui" line="260"/> <source>AVI</source> <translation type="unfinished"></translation> </message> <message> <location filename="../VideoView.ui" line="139"/> - <location filename="../VideoView.ui" line="261"/> + <location filename="../VideoView.ui" line="265"/> <source>MP4</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="163"/> + <location filename="../VideoView.ui" line="167"/> <source>4K</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="273"/> - <source>h.264</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../VideoView.ui" line="278"/> - <source>h.264 (NVENC)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../VideoView.ui" line="283"/> + <location filename="../VideoView.ui" line="287"/> <source>HEVC</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="288"/> + <location filename="../VideoView.ui" line="292"/> <source>HEVC (NVENC)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="293"/> + <location filename="../VideoView.ui" line="297"/> <source>VP8</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="298"/> + <location filename="../VideoView.ui" line="302"/> <source>VP9</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="303"/> + <location filename="../VideoView.ui" line="307"/> <source>FFV1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="308"/> - <location filename="../VideoView.ui" line="350"/> + <location filename="../VideoView.ui" line="312"/> + <location filename="../VideoView.ui" line="354"/> <source>None</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="320"/> + <location filename="../VideoView.ui" line="324"/> <source>FLAC</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="325"/> + <location filename="../VideoView.ui" line="329"/> <source>Opus</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="330"/> + <location filename="../VideoView.ui" line="334"/> <source>Vorbis</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="335"/> + <location filename="../VideoView.ui" line="339"/> <source>MP3</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="340"/> + <location filename="../VideoView.ui" line="344"/> <source>AAC</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="345"/> + <location filename="../VideoView.ui" line="349"/> <source>Uncompressed</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="361"/> + <location filename="../VideoView.ui" line="365"/> <source> Bitrate (kbps)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="367"/> - <source>VBR </source> + <location filename="../VideoView.ui" line="410"/> + <source>ABR</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../VideoView.ui" line="277"/> + <source>H.264</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../VideoView.ui" line="282"/> + <source>H.264 (NVENC)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../VideoView.ui" line="455"/> + <source>VBR</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="412"/> - <source>ABR</source> + <location filename="../VideoView.ui" line="468"/> + <source>CRF</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="428"/> + <location filename="../VideoView.ui" line="484"/> <source>Dimensions</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="494"/> + <location filename="../VideoView.ui" line="550"/> <source>Lock aspect ratio</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="509"/> + <location filename="../VideoView.ui" line="565"/> <source>Show advanced</source> <translation type="unfinished"></translation> </message>
M src/platform/qt/ts/mgba-pt_BR.tssrc/platform/qt/ts/mgba-pt_BR.ts

@@ -3255,7 +3255,7 @@ <context>

<name>QGBA::KeyEditor</name> <message> <location filename="../KeyEditor.cpp" line="34"/> - <location filename="../KeyEditor.cpp" line="236"/> + <location filename="../KeyEditor.cpp" line="240"/> <source>---</source> <translation>---</translation> </message>

@@ -3935,17 +3935,17 @@ </context>

<context> <name>QGBA::VideoView</name> <message> - <location filename="../VideoView.cpp" line="197"/> + <location filename="../VideoView.cpp" line="202"/> <source>Failed to open output video file: %1</source> <translation>Falha ao abrir arquivo de vídeo de saída: %1</translation> </message> <message> - <location filename="../VideoView.cpp" line="218"/> + <location filename="../VideoView.cpp" line="223"/> <source>Native (%0x%1)</source> <translation>Nativo (%0x%1)</translation> </message> <message> - <location filename="../VideoView.cpp" line="233"/> + <location filename="../VideoView.cpp" line="238"/> <source>Select output file</source> <translation>Selecione o arquivo de saída</translation> </message>

@@ -5740,28 +5740,28 @@ <translation>Predefinições</translation>

</message> <message> <location filename="../VideoView.ui" line="129"/> - <location filename="../VideoView.ui" line="251"/> + <location filename="../VideoView.ui" line="255"/> <source>WebM</source> <translation>WebM</translation> </message> <message> - <location filename="../VideoView.ui" line="236"/> + <location filename="../VideoView.ui" line="240"/> <source>Format</source> <translation>Formato</translation> </message> <message> - <location filename="../VideoView.ui" line="246"/> + <location filename="../VideoView.ui" line="250"/> <source>MKV</source> <translation>MKV</translation> </message> <message> - <location filename="../VideoView.ui" line="256"/> + <location filename="../VideoView.ui" line="260"/> <source>AVI</source> <translation>AVI</translation> </message> <message> <location filename="../VideoView.ui" line="139"/> - <location filename="../VideoView.ui" line="261"/> + <location filename="../VideoView.ui" line="265"/> <source>MP4</source> <translation>MP4</translation> </message>

@@ -5781,128 +5781,133 @@ <source>&amp;Lossless</source>

<translation>&amp;Sem perdas</translation> </message> <message> - <location filename="../VideoView.ui" line="163"/> + <location filename="../VideoView.ui" line="167"/> <source>4K</source> <translation>4K</translation> </message> <message> - <location filename="../VideoView.ui" line="170"/> + <location filename="../VideoView.ui" line="174"/> <source>&amp;1080p</source> <translation>&amp;1080p</translation> </message> <message> - <location filename="../VideoView.ui" line="180"/> + <location filename="../VideoView.ui" line="184"/> <source>&amp;720p</source> <translation>&amp;720p</translation> </message> <message> - <location filename="../VideoView.ui" line="190"/> + <location filename="../VideoView.ui" line="194"/> <source>&amp;480p</source> <translation>&amp;480p</translation> </message> <message> - <location filename="../VideoView.ui" line="203"/> + <location filename="../VideoView.ui" line="207"/> <source>&amp;Native</source> <translation>&amp;Nativo</translation> </message> <message> - <location filename="../VideoView.ui" line="273"/> - <source>h.264</source> - <translation>h.264</translation> - </message> - <message> - <location filename="../VideoView.ui" line="278"/> - <source>h.264 (NVENC)</source> - <translation>h.264 (NVENC)</translation> - </message> - <message> - <location filename="../VideoView.ui" line="283"/> + <location filename="../VideoView.ui" line="287"/> <source>HEVC</source> <translation>HEVC</translation> </message> <message> - <location filename="../VideoView.ui" line="288"/> + <location filename="../VideoView.ui" line="292"/> <source>HEVC (NVENC)</source> <translation>HEVC (NVENC)</translation> </message> <message> - <location filename="../VideoView.ui" line="293"/> + <location filename="../VideoView.ui" line="297"/> <source>VP8</source> <translation>VP8</translation> </message> <message> - <location filename="../VideoView.ui" line="298"/> + <location filename="../VideoView.ui" line="302"/> <source>VP9</source> <translation>VP9</translation> </message> <message> - <location filename="../VideoView.ui" line="303"/> + <location filename="../VideoView.ui" line="307"/> <source>FFV1</source> <translation>FFV1</translation> </message> <message> - <location filename="../VideoView.ui" line="308"/> - <location filename="../VideoView.ui" line="350"/> + <location filename="../VideoView.ui" line="312"/> + <location filename="../VideoView.ui" line="354"/> <source>None</source> <translation>Nenhum</translation> </message> <message> - <location filename="../VideoView.ui" line="320"/> + <location filename="../VideoView.ui" line="324"/> <source>FLAC</source> <translation>FLAC</translation> </message> <message> - <location filename="../VideoView.ui" line="325"/> + <location filename="../VideoView.ui" line="329"/> <source>Opus</source> <translation>Opus</translation> </message> <message> - <location filename="../VideoView.ui" line="330"/> + <location filename="../VideoView.ui" line="334"/> <source>Vorbis</source> <translation>Vorbis</translation> </message> <message> - <location filename="../VideoView.ui" line="335"/> + <location filename="../VideoView.ui" line="339"/> <source>MP3</source> <translation>MP3</translation> </message> <message> - <location filename="../VideoView.ui" line="340"/> + <location filename="../VideoView.ui" line="344"/> <source>AAC</source> <translation>AAC</translation> </message> <message> - <location filename="../VideoView.ui" line="345"/> + <location filename="../VideoView.ui" line="349"/> <source>Uncompressed</source> <translation>Sem compressão</translation> </message> <message> - <location filename="../VideoView.ui" line="361"/> + <location filename="../VideoView.ui" line="365"/> <source> Bitrate (kbps)</source> <translation> Bitrate (kbps)</translation> </message> <message> - <location filename="../VideoView.ui" line="367"/> - <source>VBR </source> - <translation>VBR </translation> + <location filename="../VideoView.ui" line="410"/> + <source>ABR</source> + <translation>ABR</translation> + </message> + <message> + <location filename="../VideoView.ui" line="277"/> + <source>H.264</source> + <translation type="unfinished">H.264</translation> + </message> + <message> + <location filename="../VideoView.ui" line="282"/> + <source>H.264 (NVENC)</source> + <translation type="unfinished">H.264 (NVENC)</translation> </message> <message> - <location filename="../VideoView.ui" line="412"/> - <source>ABR</source> - <translation>ABR</translation> + <location filename="../VideoView.ui" line="455"/> + <source>VBR</source> + <translation>VBR</translation> </message> <message> - <location filename="../VideoView.ui" line="428"/> + <location filename="../VideoView.ui" line="468"/> + <source>CRF</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../VideoView.ui" line="484"/> <source>Dimensions</source> <translation>Dimensões</translation> </message> <message> - <location filename="../VideoView.ui" line="494"/> + <location filename="../VideoView.ui" line="550"/> <source>Lock aspect ratio</source> <translation>Fixar proporção</translation> </message> <message> - <location filename="../VideoView.ui" line="509"/> + <location filename="../VideoView.ui" line="565"/> <source>Show advanced</source> <translation>Mostrar opções avançadas</translation> </message>
M src/platform/qt/ts/mgba-ru.tssrc/platform/qt/ts/mgba-ru.ts

@@ -3254,7 +3254,7 @@ <context>

<name>QGBA::KeyEditor</name> <message> <location filename="../KeyEditor.cpp" line="34"/> - <location filename="../KeyEditor.cpp" line="236"/> + <location filename="../KeyEditor.cpp" line="240"/> <source>---</source> <translation type="unfinished"></translation> </message>

@@ -3934,17 +3934,17 @@ </context>

<context> <name>QGBA::VideoView</name> <message> - <location filename="../VideoView.cpp" line="197"/> + <location filename="../VideoView.cpp" line="202"/> <source>Failed to open output video file: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.cpp" line="218"/> + <location filename="../VideoView.cpp" line="223"/> <source>Native (%0x%1)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.cpp" line="233"/> + <location filename="../VideoView.cpp" line="238"/> <source>Select output file</source> <translation type="unfinished"></translation> </message>

@@ -5747,7 +5747,7 @@ <translation type="unfinished"></translation>

</message> <message> <location filename="../VideoView.ui" line="129"/> - <location filename="../VideoView.ui" line="251"/> + <location filename="../VideoView.ui" line="255"/> <source>WebM</source> <translation type="unfinished"></translation> </message>

@@ -5757,149 +5757,154 @@ <source>&amp;Lossless</source>

<translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="170"/> + <location filename="../VideoView.ui" line="174"/> <source>&amp;1080p</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="180"/> + <location filename="../VideoView.ui" line="184"/> <source>&amp;720p</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="190"/> + <location filename="../VideoView.ui" line="194"/> <source>&amp;480p</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="203"/> + <location filename="../VideoView.ui" line="207"/> <source>&amp;Native</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="236"/> + <location filename="../VideoView.ui" line="240"/> <source>Format</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="246"/> + <location filename="../VideoView.ui" line="250"/> <source>MKV</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="256"/> + <location filename="../VideoView.ui" line="260"/> <source>AVI</source> <translation type="unfinished"></translation> </message> <message> <location filename="../VideoView.ui" line="139"/> - <location filename="../VideoView.ui" line="261"/> + <location filename="../VideoView.ui" line="265"/> <source>MP4</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="163"/> + <location filename="../VideoView.ui" line="167"/> <source>4K</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="273"/> - <source>h.264</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../VideoView.ui" line="278"/> - <source>h.264 (NVENC)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../VideoView.ui" line="283"/> + <location filename="../VideoView.ui" line="287"/> <source>HEVC</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="288"/> + <location filename="../VideoView.ui" line="292"/> <source>HEVC (NVENC)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="293"/> + <location filename="../VideoView.ui" line="297"/> <source>VP8</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="298"/> + <location filename="../VideoView.ui" line="302"/> <source>VP9</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="303"/> + <location filename="../VideoView.ui" line="307"/> <source>FFV1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="308"/> - <location filename="../VideoView.ui" line="350"/> + <location filename="../VideoView.ui" line="312"/> + <location filename="../VideoView.ui" line="354"/> <source>None</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="320"/> + <location filename="../VideoView.ui" line="324"/> <source>FLAC</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="325"/> + <location filename="../VideoView.ui" line="329"/> <source>Opus</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="330"/> + <location filename="../VideoView.ui" line="334"/> <source>Vorbis</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="335"/> + <location filename="../VideoView.ui" line="339"/> <source>MP3</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="340"/> + <location filename="../VideoView.ui" line="344"/> <source>AAC</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="345"/> + <location filename="../VideoView.ui" line="349"/> <source>Uncompressed</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="361"/> + <location filename="../VideoView.ui" line="365"/> <source> Bitrate (kbps)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="367"/> - <source>VBR </source> + <location filename="../VideoView.ui" line="410"/> + <source>ABR</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../VideoView.ui" line="277"/> + <source>H.264</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../VideoView.ui" line="282"/> + <source>H.264 (NVENC)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../VideoView.ui" line="455"/> + <source>VBR</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="412"/> - <source>ABR</source> + <location filename="../VideoView.ui" line="468"/> + <source>CRF</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="428"/> + <location filename="../VideoView.ui" line="484"/> <source>Dimensions</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="494"/> + <location filename="../VideoView.ui" line="550"/> <source>Lock aspect ratio</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="509"/> + <location filename="../VideoView.ui" line="565"/> <source>Show advanced</source> <translation type="unfinished"></translation> </message>
M src/platform/qt/ts/mgba-template.tssrc/platform/qt/ts/mgba-template.ts

@@ -3254,7 +3254,7 @@ <context>

<name>QGBA::KeyEditor</name> <message> <location filename="../KeyEditor.cpp" line="34"/> - <location filename="../KeyEditor.cpp" line="236"/> + <location filename="../KeyEditor.cpp" line="240"/> <source>---</source> <translation type="unfinished"></translation> </message>

@@ -3934,17 +3934,17 @@ </context>

<context> <name>QGBA::VideoView</name> <message> - <location filename="../VideoView.cpp" line="197"/> + <location filename="../VideoView.cpp" line="202"/> <source>Failed to open output video file: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.cpp" line="218"/> + <location filename="../VideoView.cpp" line="223"/> <source>Native (%0x%1)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.cpp" line="233"/> + <location filename="../VideoView.cpp" line="238"/> <source>Select output file</source> <translation type="unfinished"></translation> </message>

@@ -5747,13 +5747,13 @@ <translation type="unfinished"></translation>

</message> <message> <location filename="../VideoView.ui" line="129"/> - <location filename="../VideoView.ui" line="251"/> + <location filename="../VideoView.ui" line="255"/> <source>WebM</source> <translation type="unfinished"></translation> </message> <message> <location filename="../VideoView.ui" line="139"/> - <location filename="../VideoView.ui" line="261"/> + <location filename="../VideoView.ui" line="265"/> <source>MP4</source> <translation type="unfinished"></translation> </message>

@@ -5763,143 +5763,148 @@ <source>&amp;Lossless</source>

<translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="163"/> + <location filename="../VideoView.ui" line="167"/> <source>4K</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="170"/> + <location filename="../VideoView.ui" line="174"/> <source>&amp;1080p</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="180"/> + <location filename="../VideoView.ui" line="184"/> <source>&amp;720p</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="190"/> + <location filename="../VideoView.ui" line="194"/> <source>&amp;480p</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="203"/> + <location filename="../VideoView.ui" line="207"/> <source>&amp;Native</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="236"/> + <location filename="../VideoView.ui" line="240"/> <source>Format</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="246"/> + <location filename="../VideoView.ui" line="250"/> <source>MKV</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="256"/> + <location filename="../VideoView.ui" line="260"/> <source>AVI</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="273"/> - <source>h.264</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../VideoView.ui" line="278"/> - <source>h.264 (NVENC)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../VideoView.ui" line="283"/> + <location filename="../VideoView.ui" line="287"/> <source>HEVC</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="288"/> + <location filename="../VideoView.ui" line="292"/> <source>HEVC (NVENC)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="293"/> + <location filename="../VideoView.ui" line="297"/> <source>VP8</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="298"/> + <location filename="../VideoView.ui" line="302"/> <source>VP9</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="303"/> + <location filename="../VideoView.ui" line="307"/> <source>FFV1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="308"/> - <location filename="../VideoView.ui" line="350"/> + <location filename="../VideoView.ui" line="312"/> + <location filename="../VideoView.ui" line="354"/> <source>None</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="320"/> + <location filename="../VideoView.ui" line="324"/> <source>FLAC</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="325"/> + <location filename="../VideoView.ui" line="329"/> <source>Opus</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="330"/> + <location filename="../VideoView.ui" line="334"/> <source>Vorbis</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="335"/> + <location filename="../VideoView.ui" line="339"/> <source>MP3</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="340"/> + <location filename="../VideoView.ui" line="344"/> <source>AAC</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="345"/> + <location filename="../VideoView.ui" line="349"/> <source>Uncompressed</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="361"/> + <location filename="../VideoView.ui" line="365"/> <source> Bitrate (kbps)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="367"/> - <source>VBR </source> + <location filename="../VideoView.ui" line="410"/> + <source>ABR</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../VideoView.ui" line="277"/> + <source>H.264</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../VideoView.ui" line="282"/> + <source>H.264 (NVENC)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../VideoView.ui" line="455"/> + <source>VBR</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="412"/> - <source>ABR</source> + <location filename="../VideoView.ui" line="468"/> + <source>CRF</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="428"/> + <location filename="../VideoView.ui" line="484"/> <source>Dimensions</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="494"/> + <location filename="../VideoView.ui" line="550"/> <source>Lock aspect ratio</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="509"/> + <location filename="../VideoView.ui" line="565"/> <source>Show advanced</source> <translation type="unfinished"></translation> </message>
M src/platform/qt/ts/mgba-tr.tssrc/platform/qt/ts/mgba-tr.ts

@@ -3255,7 +3255,7 @@ <context>

<name>QGBA::KeyEditor</name> <message> <location filename="../KeyEditor.cpp" line="34"/> - <location filename="../KeyEditor.cpp" line="236"/> + <location filename="../KeyEditor.cpp" line="240"/> <source>---</source> <translation></translation> </message>

@@ -3935,17 +3935,17 @@ </context>

<context> <name>QGBA::VideoView</name> <message> - <location filename="../VideoView.cpp" line="197"/> + <location filename="../VideoView.cpp" line="202"/> <source>Failed to open output video file: %1</source> <translation>Çıkış video dosyası açılamadı:%1</translation> </message> <message> - <location filename="../VideoView.cpp" line="218"/> + <location filename="../VideoView.cpp" line="223"/> <source>Native (%0x%1)</source> <translation></translation> </message> <message> - <location filename="../VideoView.cpp" line="233"/> + <location filename="../VideoView.cpp" line="238"/> <source>Select output file</source> <translation>Çıkış dosyasını seç</translation> </message>

@@ -5750,7 +5750,7 @@ <translation></translation>

</message> <message> <location filename="../VideoView.ui" line="129"/> - <location filename="../VideoView.ui" line="251"/> + <location filename="../VideoView.ui" line="255"/> <source>WebM</source> <translation></translation> </message>

@@ -5760,149 +5760,154 @@ <source>&amp;Lossless</source>

<translation></translation> </message> <message> - <location filename="../VideoView.ui" line="170"/> + <location filename="../VideoView.ui" line="174"/> <source>&amp;1080p</source> <translation></translation> </message> <message> - <location filename="../VideoView.ui" line="180"/> + <location filename="../VideoView.ui" line="184"/> <source>&amp;720p</source> <translation></translation> </message> <message> - <location filename="../VideoView.ui" line="190"/> + <location filename="../VideoView.ui" line="194"/> <source>&amp;480p</source> <translation></translation> </message> <message> - <location filename="../VideoView.ui" line="203"/> + <location filename="../VideoView.ui" line="207"/> <source>&amp;Native</source> <translation></translation> </message> <message> - <location filename="../VideoView.ui" line="236"/> + <location filename="../VideoView.ui" line="240"/> <source>Format</source> <translation>Format</translation> </message> <message> - <location filename="../VideoView.ui" line="246"/> + <location filename="../VideoView.ui" line="250"/> <source>MKV</source> <translation></translation> </message> <message> - <location filename="../VideoView.ui" line="256"/> + <location filename="../VideoView.ui" line="260"/> <source>AVI</source> <translation></translation> </message> <message> <location filename="../VideoView.ui" line="139"/> - <location filename="../VideoView.ui" line="261"/> + <location filename="../VideoView.ui" line="265"/> <source>MP4</source> <translation></translation> </message> <message> - <location filename="../VideoView.ui" line="163"/> + <location filename="../VideoView.ui" line="167"/> <source>4K</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="273"/> - <source>h.264</source> - <translation></translation> - </message> - <message> - <location filename="../VideoView.ui" line="278"/> - <source>h.264 (NVENC)</source> - <translation></translation> - </message> - <message> - <location filename="../VideoView.ui" line="283"/> + <location filename="../VideoView.ui" line="287"/> <source>HEVC</source> <translation></translation> </message> <message> - <location filename="../VideoView.ui" line="288"/> + <location filename="../VideoView.ui" line="292"/> <source>HEVC (NVENC)</source> <translation></translation> </message> <message> - <location filename="../VideoView.ui" line="293"/> + <location filename="../VideoView.ui" line="297"/> <source>VP8</source> <translation></translation> </message> <message> - <location filename="../VideoView.ui" line="298"/> + <location filename="../VideoView.ui" line="302"/> <source>VP9</source> <translation></translation> </message> <message> - <location filename="../VideoView.ui" line="303"/> + <location filename="../VideoView.ui" line="307"/> <source>FFV1</source> <translation></translation> </message> <message> - <location filename="../VideoView.ui" line="308"/> - <location filename="../VideoView.ui" line="350"/> + <location filename="../VideoView.ui" line="312"/> + <location filename="../VideoView.ui" line="354"/> <source>None</source> <translation type="unfinished">Hiçbiri</translation> </message> <message> - <location filename="../VideoView.ui" line="320"/> + <location filename="../VideoView.ui" line="324"/> <source>FLAC</source> <translation></translation> </message> <message> - <location filename="../VideoView.ui" line="325"/> + <location filename="../VideoView.ui" line="329"/> <source>Opus</source> <translation></translation> </message> <message> - <location filename="../VideoView.ui" line="330"/> + <location filename="../VideoView.ui" line="334"/> <source>Vorbis</source> <translation></translation> </message> <message> - <location filename="../VideoView.ui" line="335"/> + <location filename="../VideoView.ui" line="339"/> <source>MP3</source> <translation></translation> </message> <message> - <location filename="../VideoView.ui" line="340"/> + <location filename="../VideoView.ui" line="344"/> <source>AAC</source> <translation></translation> </message> <message> - <location filename="../VideoView.ui" line="345"/> + <location filename="../VideoView.ui" line="349"/> <source>Uncompressed</source> <translation>Sıkıştırılmamış</translation> </message> <message> - <location filename="../VideoView.ui" line="361"/> + <location filename="../VideoView.ui" line="365"/> <source> Bitrate (kbps)</source> <translation></translation> </message> <message> - <location filename="../VideoView.ui" line="367"/> - <source>VBR </source> + <location filename="../VideoView.ui" line="410"/> + <source>ABR</source> <translation></translation> </message> <message> - <location filename="../VideoView.ui" line="412"/> - <source>ABR</source> - <translation></translation> + <location filename="../VideoView.ui" line="277"/> + <source>H.264</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../VideoView.ui" line="282"/> + <source>H.264 (NVENC)</source> + <translation type="unfinished"></translation> </message> <message> - <location filename="../VideoView.ui" line="428"/> + <location filename="../VideoView.ui" line="455"/> + <source>VBR</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../VideoView.ui" line="468"/> + <source>CRF</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../VideoView.ui" line="484"/> <source>Dimensions</source> <translation>Boyutlar</translation> </message> <message> - <location filename="../VideoView.ui" line="494"/> + <location filename="../VideoView.ui" line="550"/> <source>Lock aspect ratio</source> <translation>En boy oranını kilitle</translation> </message> <message> - <location filename="../VideoView.ui" line="509"/> + <location filename="../VideoView.ui" line="565"/> <source>Show advanced</source> <translation>Gelişmişi göster</translation> </message>
M src/platform/qt/ts/mgba-zh_CN.tssrc/platform/qt/ts/mgba-zh_CN.ts

@@ -3255,7 +3255,7 @@ <context>

<name>QGBA::KeyEditor</name> <message> <location filename="../KeyEditor.cpp" line="34"/> - <location filename="../KeyEditor.cpp" line="236"/> + <location filename="../KeyEditor.cpp" line="240"/> <source>---</source> <translation>---</translation> </message>

@@ -3935,17 +3935,17 @@ </context>

<context> <name>QGBA::VideoView</name> <message> - <location filename="../VideoView.cpp" line="197"/> + <location filename="../VideoView.cpp" line="202"/> <source>Failed to open output video file: %1</source> <translation>打开输出视频文件失败: %1</translation> </message> <message> - <location filename="../VideoView.cpp" line="218"/> + <location filename="../VideoView.cpp" line="223"/> <source>Native (%0x%1)</source> <translation>原生 (%0x%1)</translation> </message> <message> - <location filename="../VideoView.cpp" line="233"/> + <location filename="../VideoView.cpp" line="238"/> <source>Select output file</source> <translation>选择输出文件</translation> </message>

@@ -5750,13 +5750,13 @@ <translation>YouTube(&amp;Y)</translation>

</message> <message> <location filename="../VideoView.ui" line="129"/> - <location filename="../VideoView.ui" line="251"/> + <location filename="../VideoView.ui" line="255"/> <source>WebM</source> <translation>WebM</translation> </message> <message> <location filename="../VideoView.ui" line="139"/> - <location filename="../VideoView.ui" line="261"/> + <location filename="../VideoView.ui" line="265"/> <source>MP4</source> <translation>MP4</translation> </message>

@@ -5766,143 +5766,148 @@ <source>&amp;Lossless</source>

<translation>无损(&amp;L)</translation> </message> <message> - <location filename="../VideoView.ui" line="163"/> + <location filename="../VideoView.ui" line="167"/> <source>4K</source> <translation>4K</translation> </message> <message> - <location filename="../VideoView.ui" line="170"/> + <location filename="../VideoView.ui" line="174"/> <source>&amp;1080p</source> <translation>1080p(&amp;1)</translation> </message> <message> - <location filename="../VideoView.ui" line="180"/> + <location filename="../VideoView.ui" line="184"/> <source>&amp;720p</source> <translation>720p(&amp;7)</translation> </message> <message> - <location filename="../VideoView.ui" line="190"/> + <location filename="../VideoView.ui" line="194"/> <source>&amp;480p</source> <translation>480p(&amp;4)</translation> </message> <message> - <location filename="../VideoView.ui" line="203"/> + <location filename="../VideoView.ui" line="207"/> <source>&amp;Native</source> <translation>原生(&amp;N)</translation> </message> <message> - <location filename="../VideoView.ui" line="236"/> + <location filename="../VideoView.ui" line="240"/> <source>Format</source> <translation>格式</translation> </message> <message> - <location filename="../VideoView.ui" line="246"/> + <location filename="../VideoView.ui" line="250"/> <source>MKV</source> <translation>MKV</translation> </message> <message> - <location filename="../VideoView.ui" line="256"/> + <location filename="../VideoView.ui" line="260"/> <source>AVI</source> <translation>AVI</translation> </message> <message> - <location filename="../VideoView.ui" line="273"/> - <source>h.264</source> - <translation>h.264</translation> - </message> - <message> - <location filename="../VideoView.ui" line="278"/> - <source>h.264 (NVENC)</source> - <translation>h.264 (NVENC)</translation> - </message> - <message> - <location filename="../VideoView.ui" line="283"/> + <location filename="../VideoView.ui" line="287"/> <source>HEVC</source> <translation>HEVC</translation> </message> <message> - <location filename="../VideoView.ui" line="288"/> + <location filename="../VideoView.ui" line="292"/> <source>HEVC (NVENC)</source> <translation>HEVC (NVENC)</translation> </message> <message> - <location filename="../VideoView.ui" line="293"/> + <location filename="../VideoView.ui" line="297"/> <source>VP8</source> <translation>VP8</translation> </message> <message> - <location filename="../VideoView.ui" line="298"/> + <location filename="../VideoView.ui" line="302"/> <source>VP9</source> <translation>VP9</translation> </message> <message> - <location filename="../VideoView.ui" line="303"/> + <location filename="../VideoView.ui" line="307"/> <source>FFV1</source> <translation>FFV1</translation> </message> <message> - <location filename="../VideoView.ui" line="308"/> - <location filename="../VideoView.ui" line="350"/> + <location filename="../VideoView.ui" line="312"/> + <location filename="../VideoView.ui" line="354"/> <source>None</source> <translation>无</translation> </message> <message> - <location filename="../VideoView.ui" line="320"/> + <location filename="../VideoView.ui" line="324"/> <source>FLAC</source> <translation>FLAC</translation> </message> <message> - <location filename="../VideoView.ui" line="325"/> + <location filename="../VideoView.ui" line="329"/> <source>Opus</source> <translation>Opus</translation> </message> <message> - <location filename="../VideoView.ui" line="330"/> + <location filename="../VideoView.ui" line="334"/> <source>Vorbis</source> <translation>Vorbis</translation> </message> <message> - <location filename="../VideoView.ui" line="335"/> + <location filename="../VideoView.ui" line="339"/> <source>MP3</source> <translation>MP3</translation> </message> <message> - <location filename="../VideoView.ui" line="340"/> + <location filename="../VideoView.ui" line="344"/> <source>AAC</source> <translation>AAC</translation> </message> <message> - <location filename="../VideoView.ui" line="345"/> + <location filename="../VideoView.ui" line="349"/> <source>Uncompressed</source> <translation>未压缩</translation> </message> <message> - <location filename="../VideoView.ui" line="361"/> + <location filename="../VideoView.ui" line="365"/> <source> Bitrate (kbps)</source> <translation> 比特率 (kbps)</translation> </message> <message> - <location filename="../VideoView.ui" line="367"/> - <source>VBR </source> - <translation>VBR </translation> + <location filename="../VideoView.ui" line="410"/> + <source>ABR</source> + <translation>ABR</translation> + </message> + <message> + <location filename="../VideoView.ui" line="277"/> + <source>H.264</source> + <translation type="unfinished">H.264</translation> + </message> + <message> + <location filename="../VideoView.ui" line="282"/> + <source>H.264 (NVENC)</source> + <translation type="unfinished">H.264 (NVENC)</translation> </message> <message> - <location filename="../VideoView.ui" line="412"/> - <source>ABR</source> - <translation>ABR</translation> + <location filename="../VideoView.ui" line="455"/> + <source>VBR</source> + <translation>VBR</translation> </message> <message> - <location filename="../VideoView.ui" line="428"/> + <location filename="../VideoView.ui" line="468"/> + <source>CRF</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../VideoView.ui" line="484"/> <source>Dimensions</source> <translation>维度</translation> </message> <message> - <location filename="../VideoView.ui" line="494"/> + <location filename="../VideoView.ui" line="550"/> <source>Lock aspect ratio</source> <translation>锁定纵横比</translation> </message> <message> - <location filename="../VideoView.ui" line="509"/> + <location filename="../VideoView.ui" line="565"/> <source>Show advanced</source> <translation>显示高级选项</translation> </message>