Merge branch 'master' (early part) into medusa

This commit is contained in:
Vicki Pfau 2021-06-11 20:51:26 -07:00
commit c645924178
29 changed files with 1088 additions and 810 deletions

View File

@ -62,7 +62,9 @@ Emulation fixes:
- ARM: Fix long and accumulate multiply timing
- GB: Partially fix timing for skipped BIOS
- GB: Downgrade DMG-only ROMs from CGB mode even without boot ROM
- GB: Fix marking BIOS as unmapped when skipping BIOS (fixes mgba.io/i/2061)
- GB Audio: Fix serializing sweep time
- GB Audio: Fix some channel 4 timing edge cases
- GB MBC: Fix MBC1 mode changing behavior
- GB MBC: Fix some MBC3 bit masking
- GB Video: Fix state after skipping BIOS (fixes mgba.io/i/1715 and mgba.io/i/1716)
@ -128,6 +130,7 @@ Other fixes:
- Qt: Fix crashing when no OpenGL context can be obtained
- Qt: Fix issues with I/O viewer not properly synchronizing state
- Qt: Fix loading a new game crashing on Wayland (fixes mgba.io/i/1992)
- Qt: Fix inability to clear hat bindings
- SM83: Simplify register pair access on big endian
- SM83: Disassemble STOP as one byte
- Wii: Fix crash on unloading irregularly sized GBA ROMs
@ -153,6 +156,7 @@ Misc:
- 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)

View File

@ -541,7 +541,6 @@ void mInputBindHat(struct mInputMap* map, uint32_t type, int id, const struct mI
*mInputHatListGetPointer(&impl->hats, id) = *bindings;
}
bool mInputQueryHat(const struct mInputMap* map, uint32_t type, int id, struct mInputHatBindings* bindings) {
const struct mInputMapImpl* impl = _lookupMapConst(map, type);
if (!impl) {
@ -559,18 +558,23 @@ void mInputUnbindHat(struct mInputMap* map, uint32_t type, int id) {
if (!impl) {
return;
}
if (mInputHatListSize(&impl->hats) && id + 1 == (ssize_t) mInputHatListSize(&impl->hats)) {
mInputHatListResize(&impl->hats, -1);
} else {
struct mInputHatBindings* description = mInputHatListGetPointer(&impl->hats, id);
memset(description, -1, sizeof(*description));
if (id >= (ssize_t) mInputHatListSize(&impl->hats)) {
return;
}
struct mInputHatBindings* description = mInputHatListGetPointer(&impl->hats, id);
memset(description, -1, sizeof(*description));
}
void mInputUnbindAllHats(struct mInputMap* map, uint32_t type) {
struct mInputMapImpl* impl = _lookupMap(map, type);
if (impl) {
mInputHatListClear(&impl->hats);
if (!impl) {
return;
}
size_t id;
for (id = 0; id < mInputHatListSize(&impl->hats); ++id) {
struct mInputHatBindings* description = mInputHatListGetPointer(&impl->hats, id);
memset(description, -1, sizeof(*description));
}
}

View File

@ -168,7 +168,7 @@ bool FFmpegEncoderSetAudio(struct FFmpegEncoder* encoder, const char* acodec, un
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;
@ -218,6 +218,9 @@ bool FFmpegEncoderSetVideo(struct FFmpegEncoder* encoder, const char* vcodec, un
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;
encoder->videoBitrate = vbr;
encoder->frameskip = frameskip + 1;
@ -412,7 +415,7 @@ bool FFmpegEncoderOpen(struct FFmpegEncoder* encoder, const char* outfile) {
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);
@ -421,10 +424,26 @@ bool FFmpegEncoderOpen(struct FFmpegEncoder* encoder, const char* outfile) {
} 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);

View File

@ -23,7 +23,7 @@ struct FFmpegEncoder {
unsigned audioBitrate;
const char* audioCodec;
unsigned videoBitrate;
int videoBitrate;
const char* videoCodec;
const char* containerFormat;
@ -76,7 +76,7 @@ struct FFmpegEncoder {
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);

View File

@ -390,6 +390,7 @@ void GBAudioWriteNR44(struct GBAudio* audio, uint8_t value) {
}
}
if (audio->playingCh4 && audio->ch4.envelope.dead != 2) {
audio->ch4.lastEvent = mTimingCurrentTime(audio->timing);
mTimingDeschedule(audio->timing, &audio->ch4Event);
mTimingSchedule(audio->timing, &audio->ch4Event, 0);
}
@ -581,14 +582,16 @@ void GBAudioUpdateFrame(struct GBAudio* audio, struct mTiming* timing) {
if (audio->playingCh4 && !audio->ch4.envelope.dead) {
--audio->ch4.envelope.nextStep;
if (audio->ch4.envelope.nextStep == 0) {
int8_t sample = audio->ch4.sample > 0;
audio->ch4.samples -= audio->ch4.sample;
int8_t sample = audio->ch4.sample;
_updateEnvelope(&audio->ch4.envelope);
if (audio->ch4.envelope.dead == 2) {
mTimingDeschedule(timing, &audio->ch4Event);
}
audio->ch4.sample = sample * audio->ch4.envelope.currentVolume;
audio->ch4.samples += audio->ch4.sample;
audio->ch4.sample = (sample > 0) * audio->ch4.envelope.currentVolume;
if (audio->ch4.nSamples) {
audio->ch4.samples -= sample;
audio->ch4.samples += audio->ch4.sample;
}
}
}
break;

View File

@ -577,6 +577,7 @@ void GBSkipBIOS(struct GB* gb) {
mTimingSchedule(&gb->timing, &gb->timer.event, gb->timer.nextDiv);
GBIOWrite(gb, GB_REG_LCDC, 0x91);
gb->memory.io[GB_REG_BANK] = 0x1;
GBVideoSkipBIOS(&gb->video);
if (gb->biosVf) {

View File

@ -8,6 +8,7 @@
#include "CoreController.h"
#include <QMutexLocker>
#include <QThread>
#include <mgba/internal/debugger/cli-debugger.h>
@ -30,6 +31,7 @@ DebuggerConsoleController::DebuggerConsoleController(QObject* parent)
}
void DebuggerConsoleController::enterLine(const QString& line) {
CoreController::Interrupter interrupter(m_gameController);
QMutexLocker lock(&m_mutex);
m_lines.append(line);
if (m_cliDebugger.d.state == DEBUGGER_RUNNING) {
@ -39,14 +41,20 @@ void DebuggerConsoleController::enterLine(const QString& line) {
}
void DebuggerConsoleController::detach() {
if (m_cliDebugger.d.state != DEBUGGER_SHUTDOWN) {
m_lines.append(QString());
m_cond.wakeOne();
{
CoreController::Interrupter interrupter(m_gameController);
QMutexLocker lock(&m_mutex);
if (m_cliDebugger.d.state != DEBUGGER_SHUTDOWN) {
m_lines.append(QString());
m_cond.wakeOne();
}
}
DebuggerController::detach();
}
void DebuggerConsoleController::attachInternal() {
CoreController::Interrupter interrupter(m_gameController);
QMutexLocker lock(&m_mutex);
m_history.clear();
mCore* core = m_gameController->thread()->core;
CLIDebuggerAttachBackend(&m_cliDebugger, &m_backend.d);
@ -65,12 +73,13 @@ void DebuggerConsoleController::printf(struct CLIDebuggerBackend* be, const char
void DebuggerConsoleController::init(struct CLIDebuggerBackend* be) {
Backend* consoleBe = reinterpret_cast<Backend*>(be);
DebuggerConsoleController* self = consoleBe->self;
UNUSED(self);
}
void DebuggerConsoleController::deinit(struct CLIDebuggerBackend* be) {
Backend* consoleBe = reinterpret_cast<Backend*>(be);
DebuggerConsoleController* self = consoleBe->self;
if (be->p->d.state != DEBUGGER_SHUTDOWN) {
if (QThread::currentThread() == self->thread() && be->p->d.state != DEBUGGER_SHUTDOWN) {
self->m_lines.append(QString());
self->m_cond.wakeOne();
}
@ -109,6 +118,7 @@ const char* DebuggerConsoleController::historyLast(struct CLIDebuggerBackend* be
return "i";
}
self->m_last = self->m_history.last().toUtf8();
*len = self->m_last.size();
return self->m_last.constData();
}

View File

@ -215,6 +215,7 @@ void GBAKeyEditor::setNext() {
void GBAKeyEditor::save() {
#ifdef BUILD_SDL
m_controller->unbindAllAxes(m_type);
m_controller->unbindAllHats(m_type);
#endif
bindKey(m_keyDU, GBA_KEY_UP);

View File

@ -209,18 +209,22 @@ bool KeyEditor::event(QEvent* event) {
void KeyEditor::updateButtonText() {
QStringList text;
if (m_hat >= 0) {
QString hatId("%0");
if (m_hat) {
hatId += QString::number(m_hat);
}
switch (m_hatDirection) {
case GamepadHatEvent::UP:
text.append(QString("↑%0").arg(m_hat));
text.append(hatId.arg(""));
break;
case GamepadHatEvent::RIGHT:
text.append(QString("→%0").arg(m_hat));
text.append(hatId.arg(""));
break;
case GamepadHatEvent::DOWN:
text.append(QString("↓%0").arg(m_hat));
text.append(hatId.arg(""));
break;
case GamepadHatEvent::LEFT:
text.append(QString("←%0").arg(m_hat));
text.append(hatId.arg(""));
break;
default:
break;

View File

@ -86,14 +86,25 @@ VideoView::VideoView(QWidget* parent)
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 @@ VideoView::VideoView(QWidget* parent)
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 @@ void VideoView::updatePresets() {
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 @@ void VideoView::updatePresets() {
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,
@ -245,7 +250,7 @@ void VideoView::setFilename(const QString& 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") {
@ -253,18 +258,16 @@ void VideoView::setAudioCodec(const QString& codec, bool manual) {
} 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") {
@ -272,18 +275,16 @@ void VideoView::setVideoCodec(const QString& codec, bool manual) {
} 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());
@ -293,61 +294,51 @@ void VideoView::setContainer(const QString& container, bool manual) {
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) {
@ -361,6 +352,11 @@ bool VideoView::validateSettings() {
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()) {
@ -368,6 +364,21 @@ bool VideoView::validateSettings() {
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()) {
@ -410,11 +421,15 @@ void VideoView::updateAspectRatio(int width, int height, bool force) {
}
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 }
};
@ -459,24 +474,21 @@ QString VideoView::sanitizeCodec(const QString& codec, const QMap<QString, QStri
}
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) {
@ -488,34 +500,46 @@ void VideoView::addPreset(QAbstractButton* button, const Preset& preset) {
}
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();

View File

@ -45,17 +45,18 @@ signals:
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);
@ -67,8 +68,8 @@ private:
QString container;
QString vcodec;
QString acodec;
int vbr;
int abr;
int vbr = 0;
int abr = 0;
QSize dims;
Preset() {}
@ -107,6 +108,8 @@ private:
char* m_videoCodecCstr = nullptr;
char* m_containerCstr = nullptr;
bool m_updatesBlocked = false;
int m_abr;
int m_vbr;

View File

@ -6,8 +6,8 @@
<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 @@
<property name="text">
<string>&amp;Lossless</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
<attribute name="buttonGroup">
<string notr="true">presets</string>
</attribute>
@ -155,6 +152,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>
@ -270,12 +274,12 @@
</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,36 +365,20 @@
<string> Bitrate (kbps)</string>
</property>
<layout class="QGridLayout" name="gridLayout_3">
<item row="0" column="0">
<widget class="QLabel" name="label">
<item row="1" column="0">
<widget class="QRadioButton" name="doVbr">
<property name="text">
<string>VBR </string>
<string notr="true"/>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="buddy">
<cstring>vbr</cstring>
<property name="checked">
<bool>true</bool>
</property>
<attribute name="buttonGroup">
<string notr="true">ratefactor</string>
</attribute>
</widget>
</item>
<item row="0" column="1">
<widget class="QSpinBox" name="vbr">
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="suffix">
<string/>
</property>
<property name="maximum">
<number>10000</number>
</property>
<property name="value">
<number>400</number>
</property>
</widget>
</item>
<item row="1" column="1">
<item row="3" column="2">
<widget class="QSpinBox" name="abr">
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
@ -406,7 +394,17 @@
</property>
</widget>
</item>
<item row="1" column="0">
<item row="0" column="0">
<widget class="QRadioButton" name="doCrf">
<property name="text">
<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>
@ -419,6 +417,64 @@
</property>
</widget>
</item>
<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>
<property name="suffix">
<string/>
</property>
<property name="maximum">
<number>50</number>
</property>
<property name="value">
<number>18</number>
</property>
</widget>
</item>
<item row="1" column="2">
<widget class="QSpinBox" name="vbr">
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="suffix">
<string/>
</property>
<property name="maximum">
<number>10000</number>
</property>
</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="0" column="1">
<widget class="QLabel" name="label_5">
<property name="text">
<string>CRF</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="buddy">
<cstring>crf</cstring>
</property>
</widget>
</item>
</layout>
</widget>
</item>
@ -529,14 +585,20 @@
<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>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="resolutions"/>
<buttongroup name="presets"/>
<buttongroup name="resolutions"/>
<buttongroup name="ratefactor"/>
</buttongroups>
</ui>

View File

@ -704,6 +704,10 @@ void InputController::bindHat(uint32_t type, int hat, GamepadHatEvent::Direction
mInputBindHat(&m_inputMap, type, hat, &bindings);
}
void InputController::unbindAllHats(uint32_t type) {
mInputUnbindAllHats(&m_inputMap, type);
}
void InputController::testGamepad(int type) {
QWriteLocker l(&m_eventsLock);
auto activeAxes = activeGamepadAxes(type);

View File

@ -94,8 +94,12 @@ public:
void recalibrateAxes();
void bindKey(uint32_t type, int key, const QString&);
void bindAxis(uint32_t type, int axis, GamepadAxisEvent::Direction, const QString&);
void unbindAllAxes(uint32_t type);
void bindHat(uint32_t type, int hat, GamepadHatEvent::Direction, const QString&);
void unbindAllHats(uint32_t type);
QStringList connectedGamepads(uint32_t type) const;
int gamepad(uint32_t type) const;

View File

@ -3301,7 +3301,7 @@ Game Boy Advance ist eine eingetragene Marke von Nintendo Co., Ltd.</translation
<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>
@ -3981,17 +3981,17 @@ Game Boy Advance ist eine eingetragene Marke von Nintendo Co., Ltd.</translation
<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>
@ -5836,28 +5836,28 @@ wenn vorhanden</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>
@ -5877,128 +5877,133 @@ wenn vorhanden</translation>
<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>
</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="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="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>

View File

@ -3255,7 +3255,7 @@ Game Boy Advance es una marca registrada de Nintendo Co., Ltd.</translation>
<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 @@ Game Boy Advance es una marca registrada de Nintendo Co., Ltd.</translation>
<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 @@ Game Boy Advance es una marca registrada de Nintendo Co., Ltd.</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 @@ Game Boy Advance es una marca registrada de Nintendo Co., Ltd.</translation>
<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>
</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="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="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>

View File

@ -3255,7 +3255,7 @@ Game Boy Advance è un marchio registrato di Nintendo Co., Ltd.</translation>
<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 @@ Game Boy Advance è un marchio registrato di Nintendo Co., Ltd.</translation>
<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 @@ Game Boy Advance è un marchio registrato di Nintendo Co., Ltd.</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 @@ Game Boy Advance è un marchio registrato di Nintendo Co., Ltd.</translation>
<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>

View File

@ -3254,7 +3254,7 @@ Game Boy Advance is a registered trademark of Nintendo Co., Ltd.</source>
<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 @@ Game Boy Advance is a registered trademark of Nintendo Co., Ltd.</source>
<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 @@ Game Boy Advance is a registered trademark of Nintendo Co., Ltd.</source>
</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 @@ Game Boy Advance is a registered trademark of Nintendo Co., Ltd.</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>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../VideoView.ui" line="412"/>
<location filename="../VideoView.ui" line="410"/>
<source>ABR</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../VideoView.ui" line="428"/>
<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="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>

View File

@ -3267,7 +3267,7 @@ Game Boy Advance est une marque de fabrique enregistré par Nintendo Co., Ltd.</
<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 @@ Game Boy Advance est une marque de fabrique enregistré par Nintendo Co., Ltd.</
<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 @@ Game Boy Advance est une marque de fabrique enregistré par Nintendo Co., Ltd.</
</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 @@ Game Boy Advance est une marque de fabrique enregistré par Nintendo Co., Ltd.</
<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>
</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="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="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>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>

View File

@ -3255,7 +3255,7 @@ Game Boy Advance is a registered trademark of Nintendo Co., Ltd.</source>
<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 @@ Game Boy Advance is a registered trademark of Nintendo Co., Ltd.</source>
<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 @@ Game Boy Advance is a registered trademark of Nintendo Co., Ltd.</source>
</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 @@ Game Boy Advance is a registered trademark of Nintendo Co., Ltd.</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>
</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="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="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>

View File

@ -3255,7 +3255,7 @@ Game Boy Advance는 Nintendo Co., Ltd.의 등록 상표입니다.</translation>
<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 @@ Game Boy Advance는 Nintendo Co., Ltd.의 등록 상표입니다.</translation>
<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 @@ Game Boy Advance는 Nintendo Co., Ltd.의 등록 상표입니다.</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 @@ Game Boy Advance는 Nintendo Co., Ltd.의 등록 상표입니다.</translation>
<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>

View File

@ -3254,7 +3254,7 @@ Game Boy Advance is a registered trademark of Nintendo Co., Ltd.</source>
<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 @@ Game Boy Advance is a registered trademark of Nintendo Co., Ltd.</source>
<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 @@ Game Boy Advance is a registered trademark of Nintendo Co., Ltd.</source>
</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 @@ Game Boy Advance is a registered trademark of Nintendo Co., Ltd.</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>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../VideoView.ui" line="412"/>
<location filename="../VideoView.ui" line="410"/>
<source>ABR</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../VideoView.ui" line="428"/>
<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="468"/>
<source>CRF</source>
<translation type="unfinished"></translation>
</message>
<message>
<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>

View File

@ -3255,7 +3255,7 @@ Game Boy Advance é uma marca registrada da Nintendo Co., Ltd.</translation>
<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 @@ Game Boy Advance é uma marca registrada da Nintendo Co., Ltd.</translation>
<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 @@ Game Boy Advance é uma marca registrada da Nintendo Co., Ltd.</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 @@ Game Boy Advance é uma marca registrada da Nintendo Co., Ltd.</translation>
<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>
</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="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="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>

View File

@ -3254,7 +3254,7 @@ Game Boy Advance is a registered trademark of Nintendo Co., Ltd.</source>
<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 @@ Game Boy Advance is a registered trademark of Nintendo Co., Ltd.</source>
<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 @@ Game Boy Advance is a registered trademark of Nintendo Co., Ltd.</source>
</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 @@ Game Boy Advance is a registered trademark of Nintendo Co., Ltd.</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>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../VideoView.ui" line="412"/>
<location filename="../VideoView.ui" line="410"/>
<source>ABR</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../VideoView.ui" line="428"/>
<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="468"/>
<source>CRF</source>
<translation type="unfinished"></translation>
</message>
<message>
<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>

View File

@ -3254,7 +3254,7 @@ Game Boy Advance is a registered trademark of Nintendo Co., Ltd.</source>
<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 @@ Game Boy Advance is a registered trademark of Nintendo Co., Ltd.</source>
<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 @@ Game Boy Advance is a registered trademark of Nintendo Co., Ltd.</source>
</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 @@ Game Boy Advance is a registered trademark of Nintendo Co., Ltd.</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>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../VideoView.ui" line="412"/>
<location filename="../VideoView.ui" line="410"/>
<source>ABR</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../VideoView.ui" line="428"/>
<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="468"/>
<source>CRF</source>
<translation type="unfinished"></translation>
</message>
<message>
<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>

View File

@ -3255,7 +3255,7 @@ Game Boy Advance, Nintendo Co., Ltd.&apos;nin tescilli ticari markasıdır.</tra
<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 @@ Game Boy Advance, Nintendo Co., Ltd.&apos;nin tescilli ticari markasıdır.</tra
<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ı ı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 @@ Game Boy Advance, Nintendo Co., Ltd.&apos;nin tescilli ticari markasıdır.</tra
</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 @@ Game Boy Advance, Nintendo Co., Ltd.&apos;nin tescilli ticari markasıdır.</tra
<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>
<translation></translation>
</message>
<message>
<location filename="../VideoView.ui" line="412"/>
<location filename="../VideoView.ui" line="410"/>
<source>ABR</source>
<translation></translation>
</message>
<message>
<location filename="../VideoView.ui" line="428"/>
<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="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>

View File

@ -3255,7 +3255,7 @@ Game Boy Advance 是任天堂有限公司Nintendo Co., Ltd.)的注册商标
<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 @@ Game Boy Advance 是任天堂有限公司Nintendo Co., Ltd.)的注册商标
<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 @@ Game Boy Advance 是任天堂有限公司Nintendo Co., Ltd.)的注册商标
</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 @@ Game Boy Advance 是任天堂有限公司Nintendo Co., Ltd.)的注册商标
<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>
</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="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="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>

View File

@ -94,7 +94,9 @@ static int enqueuedBuffers;
static bool frameLimiter = true;
static unsigned framecount = 0;
static unsigned framecap = 10;
static u32 vibrationDeviceHandles[4];
static PadState pad;
static HidSixAxisSensorHandle sixaxisHandles[4];
static HidVibrationDeviceHandle vibrationDeviceHandles[4];
static HidVibrationValue vibrationStop = { .freq_low = 160.f, .freq_high = 320.f };
static bool usePbo = true;
static u8 vmode;
@ -104,6 +106,9 @@ static bool interframeBlending = false;
static bool sgbCrop = false;
static bool useLightSensor = true;
static struct mGUIRunnerLux lightSensor;
static float gyroZ = 0;
static float tiltX = 0;
static float tiltY = 0;
static enum ScreenMode {
SM_PA,
@ -192,12 +197,11 @@ static void _drawEnd(void) {
static uint32_t _pollInput(const struct mInputMap* map) {
int keys = 0;
hidScanInput();
u32 padkeys = hidKeysHeld(CONTROLLER_P1_AUTO);
padUpdate(&pad);
u32 padkeys = padGetButtons(&pad);
keys |= mInputMapKeyBits(map, AUTO_INPUT, padkeys, 0);
JoystickPosition jspos;
hidJoystickRead(&jspos, CONTROLLER_P1_AUTO, JOYSTICK_LEFT);
HidAnalogStickState jspos = padGetStickPos(&pad, 0);
int l = mInputMapKey(map, AUTO_INPUT, __builtin_ctz(KEY_LSTICK_LEFT));
int r = mInputMapKey(map, AUTO_INPUT, __builtin_ctz(KEY_LSTICK_RIGHT));
@ -217,45 +221,43 @@ static uint32_t _pollInput(const struct mInputMap* map) {
d = mInputMapKey(map, AUTO_INPUT, __builtin_ctz(KEY_DDOWN));
}
if (jspos.dx < -ANALOG_DEADZONE && l != -1) {
if (jspos.x < -ANALOG_DEADZONE && l != -1) {
keys |= 1 << l;
}
if (jspos.dx > ANALOG_DEADZONE && r != -1) {
if (jspos.x > ANALOG_DEADZONE && r != -1) {
keys |= 1 << r;
}
if (jspos.dy < -ANALOG_DEADZONE && d != -1) {
if (jspos.y < -ANALOG_DEADZONE && d != -1) {
keys |= 1 << d;
}
if (jspos.dy > ANALOG_DEADZONE && u != -1) {
if (jspos.y > ANALOG_DEADZONE && u != -1) {
keys |= 1 << u;
}
return keys;
}
static enum GUICursorState _pollCursor(unsigned* x, unsigned* y) {
hidScanInput();
if (hidTouchCount() < 1) {
HidTouchScreenState state = {0};
hidGetTouchScreenStates(&state, 1);
if (state.count < 1) {
return GUI_CURSOR_NOT_PRESENT;
}
touchPosition touch;
hidTouchRead(&touch, 0);
*x = touch.px;
*y = touch.py;
*x = state.touches[0].x;
*y = state.touches[0].y;
return GUI_CURSOR_DOWN;
}
static void _setup(struct mGUIRunner* runner) {
_mapKey(&runner->core->inputMap, AUTO_INPUT, KEY_A, GBA_KEY_A);
_mapKey(&runner->core->inputMap, AUTO_INPUT, KEY_B, GBA_KEY_B);
_mapKey(&runner->core->inputMap, AUTO_INPUT, KEY_PLUS, GBA_KEY_START);
_mapKey(&runner->core->inputMap, AUTO_INPUT, KEY_MINUS, GBA_KEY_SELECT);
_mapKey(&runner->core->inputMap, AUTO_INPUT, KEY_DUP, GBA_KEY_UP);
_mapKey(&runner->core->inputMap, AUTO_INPUT, KEY_DDOWN, GBA_KEY_DOWN);
_mapKey(&runner->core->inputMap, AUTO_INPUT, KEY_DLEFT, GBA_KEY_LEFT);
_mapKey(&runner->core->inputMap, AUTO_INPUT, KEY_DRIGHT, GBA_KEY_RIGHT);
_mapKey(&runner->core->inputMap, AUTO_INPUT, KEY_L, GBA_KEY_L);
_mapKey(&runner->core->inputMap, AUTO_INPUT, KEY_R, GBA_KEY_R);
_mapKey(&runner->core->inputMap, AUTO_INPUT, HidNpadButton_A, GBA_KEY_A);
_mapKey(&runner->core->inputMap, AUTO_INPUT, HidNpadButton_B, GBA_KEY_B);
_mapKey(&runner->core->inputMap, AUTO_INPUT, HidNpadButton_Plus, GBA_KEY_START);
_mapKey(&runner->core->inputMap, AUTO_INPUT, HidNpadButton_Minus, GBA_KEY_SELECT);
_mapKey(&runner->core->inputMap, AUTO_INPUT, HidNpadButton_Up, GBA_KEY_UP);
_mapKey(&runner->core->inputMap, AUTO_INPUT, HidNpadButton_Down, GBA_KEY_DOWN);
_mapKey(&runner->core->inputMap, AUTO_INPUT, HidNpadButton_Left, GBA_KEY_LEFT);
_mapKey(&runner->core->inputMap, AUTO_INPUT, HidNpadButton_Right, GBA_KEY_RIGHT);
_mapKey(&runner->core->inputMap, AUTO_INPUT, HidNpadButton_L, GBA_KEY_L);
_mapKey(&runner->core->inputMap, AUTO_INPUT, HidNpadButton_R, GBA_KEY_R);
int fakeBool;
if (mCoreConfigGetIntValue(&runner->config, "hwaccelVideo", &fakeBool) && fakeBool && runner->core->supportsFeature(runner->core, mCORE_FEATURE_OPENGL)) {
@ -518,7 +520,7 @@ static bool _running(struct mGUIRunner* runner) {
UNUSED(runner);
u8 newMode = appletGetOperationMode();
if (newMode != vmode) {
if (newMode == AppletOperationMode_Docked) {
if (newMode == AppletOperationMode_Console) {
vwidth = 1920;
vheight = 1080;
} else {
@ -570,25 +572,41 @@ void _setRumble(struct mRumble* rumble, int enable) {
}
}
void _sampleRotation(struct mRotationSource* source) {
HidSixAxisSensorState sixaxis = {0};
u64 styles = padGetStyleSet(&pad);
if (styles & HidNpadStyleTag_NpadHandheld) {
hidGetSixAxisSensorStates(sixaxisHandles[3], &sixaxis, 1);
} else if (styles & HidNpadStyleTag_NpadFullKey) {
hidGetSixAxisSensorStates(sixaxisHandles[2], &sixaxis, 1);
} else if (styles & HidNpadStyleTag_NpadJoyDual) {
u64 attrib = padGetAttributes(&pad);
if (attrib & HidNpadAttribute_IsLeftConnected) {
hidGetSixAxisSensorStates(sixaxisHandles[0], &sixaxis, 1);
} else if (attrib & HidNpadAttribute_IsRightConnected) {
hidGetSixAxisSensorStates(sixaxisHandles[1], &sixaxis, 1);
} else {
return;
}
}
tiltX = sixaxis.acceleration.x * 3e8f;
tiltY = sixaxis.acceleration.y * -3e8f;
gyroZ = sixaxis.angular_velocity.z * -1.1e9f;
}
int32_t _readTiltX(struct mRotationSource* source) {
UNUSED(source);
SixAxisSensorValues sixaxis;
hidSixAxisSensorValuesRead(&sixaxis, CONTROLLER_P1_AUTO, 1);
return sixaxis.accelerometer.x * 3e8f;
return tiltX;
}
int32_t _readTiltY(struct mRotationSource* source) {
UNUSED(source);
SixAxisSensorValues sixaxis;
hidSixAxisSensorValuesRead(&sixaxis, CONTROLLER_P1_AUTO, 1);
return sixaxis.accelerometer.y * -3e8f;
return tiltY;
}
int32_t _readGyroZ(struct mRotationSource* source) {
UNUSED(source);
SixAxisSensorValues sixaxis;
hidSixAxisSensorValuesRead(&sixaxis, CONTROLLER_P1_AUTO, 1);
return sixaxis.gyroscope.z * -1.1e9f;
return gyroZ;
}
static void _lightSensorSample(struct GBALuminanceSource* lux) {
@ -636,7 +654,7 @@ int main(int argc, char* argv[]) {
struct GUIFont* font = GUIFontCreate();
vmode = appletGetOperationMode();
if (vmode == AppletOperationMode_Docked) {
if (vmode == AppletOperationMode_Console) {
vwidth = 1920;
vheight = 1080;
} else {
@ -732,23 +750,27 @@ int main(int argc, char* argv[]) {
glEnableVertexAttribArray(offsetLocation);
glBindVertexArray(0);
hidInitializeTouchScreen();
padConfigureInput(1, HidNpadStyleSet_NpadStandard);
padInitializeDefault(&pad);
rumble.d.setRumble = _setRumble;
rumble.value.freq_low = 120.0;
rumble.value.freq_high = 180.0;
hidInitializeVibrationDevices(&vibrationDeviceHandles[0], 2, CONTROLLER_HANDHELD, TYPE_HANDHELD | TYPE_JOYCON_PAIR);
hidInitializeVibrationDevices(&vibrationDeviceHandles[2], 2, CONTROLLER_PLAYER_1, TYPE_HANDHELD | TYPE_JOYCON_PAIR);
hidInitializeVibrationDevices(&vibrationDeviceHandles[0], 2, HidNpadIdType_Handheld, HidNpadStyleTag_NpadHandheld);
hidInitializeVibrationDevices(&vibrationDeviceHandles[2], 2, HidNpadIdType_No1, HidNpadStyleTag_NpadJoyDual);
u32 handles[4];
hidGetSixAxisSensorHandles(&handles[0], 2, CONTROLLER_PLAYER_1, TYPE_JOYCON_PAIR);
hidGetSixAxisSensorHandles(&handles[2], 1, CONTROLLER_PLAYER_1, TYPE_PROCONTROLLER);
hidGetSixAxisSensorHandles(&handles[3], 1, CONTROLLER_HANDHELD, TYPE_HANDHELD);
hidStartSixAxisSensor(handles[0]);
hidStartSixAxisSensor(handles[1]);
hidStartSixAxisSensor(handles[2]);
hidStartSixAxisSensor(handles[3]);
hidGetSixAxisSensorHandles(&sixaxisHandles[0], 2, HidNpadIdType_No1, HidNpadStyleTag_NpadJoyDual);
hidGetSixAxisSensorHandles(&sixaxisHandles[2], 1, HidNpadIdType_No1, HidNpadStyleTag_NpadFullKey);
hidGetSixAxisSensorHandles(&sixaxisHandles[3], 1, HidNpadIdType_Handheld, HidNpadStyleTag_NpadHandheld);
hidStartSixAxisSensor(sixaxisHandles[0]);
hidStartSixAxisSensor(sixaxisHandles[1]);
hidStartSixAxisSensor(sixaxisHandles[2]);
hidStartSixAxisSensor(sixaxisHandles[3]);
rotation.readTiltX = _readTiltX;
rotation.readTiltY = _readTiltY;
rotation.readGyroZ = _readGyroZ;
rotation.sample = _sampleRotation;
lightSensor.d.readLuminance = _lightSensorRead;
lightSensor.d.sample = _lightSensorSample;
@ -984,10 +1006,10 @@ int main(int argc, char* argv[]) {
glDeleteProgram(program);
glDeleteVertexArrays(1, &vao);
hidStopSixAxisSensor(handles[0]);
hidStopSixAxisSensor(handles[1]);
hidStopSixAxisSensor(handles[2]);
hidStopSixAxisSensor(handles[3]);
hidStopSixAxisSensor(sixaxisHandles[0]);
hidStopSixAxisSensor(sixaxisHandles[1]);
hidStopSixAxisSensor(sixaxisHandles[2]);
hidStopSixAxisSensor(sixaxisHandles[3]);
psmExit();
audoutExit();

View File

@ -71,6 +71,7 @@ class GameClockTest(PerfTest):
class PerfServer(object):
ITERATIONS_PER_INSTANCE = 50
RETRIES = 5
def __init__(self, address, root='/', command=None):
s = address.rsplit(':', 1)
@ -100,8 +101,17 @@ class PerfServer(object):
elif test.renderer == 'threaded-software':
server_command.append('-T')
subprocess.check_call(server_command)
time.sleep(4)
self.socket = socket.create_connection(self.address, timeout=1000)
time.sleep(3)
for backoff in range(self.RETRIES):
try:
self.socket = socket.create_connection(self.address, timeout=1000)
break
except OSError as e:
print("Failed to connect:", e, file=sys.stderr)
if backoff < self.RETRIES - 1:
time.sleep(2 ** backoff)
else:
raise
kwargs = {}
if sys.version_info[0] >= 3:
kwargs["encoding"] = "utf-8"
@ -156,8 +166,10 @@ class Suite(object):
sock = None
for test in self.tests:
print('Running test {}'.format(test.name), file=sys.stderr)
last_result = None
if self.server:
self.server.run(test)
last_result = self.server.results[-1]
else:
try:
test.run(self.cwd)
@ -166,6 +178,9 @@ class Suite(object):
return results
if test.results:
results.append(test.results)
last_result = results[-1]
if last_result:
print('{:.2f} fps'.format(int(last_result['frames']) * 1000000 / float(last_result['duration'])), file=sys.stderr)
if self.server:
self.server.finish()
results.extend(self.server.results)