UI: Allow multi-track recording in advanced output

This commit is contained in:
jp9000 2015-05-30 21:45:14 -07:00
parent d07664b129
commit a24af63527
4 changed files with 24 additions and 37 deletions

View file

@ -1175,31 +1175,28 @@
<number>0</number>
</property>
<item>
<widget class="QRadioButton" name="advOutRecTrack1">
<widget class="QCheckBox" name="advOutRecTrack1">
<property name="text">
<string notr="true">1</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="advOutRecTrack2">
<widget class="QCheckBox" name="advOutRecTrack2">
<property name="text">
<string notr="true">2</string>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="advOutRecTrack3">
<widget class="QCheckBox" name="advOutRecTrack3">
<property name="text">
<string notr="true">3</string>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="advOutRecTrack4">
<widget class="QCheckBox" name="advOutRecTrack4">
<property name="text">
<string notr="true">4</string>
</property>
@ -2487,8 +2484,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>734</width>
<height>553</height>
<width>325</width>
<height>229</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout_16">

View file

@ -490,15 +490,11 @@ inline void AdvancedOutput::SetupRecording()
"RecRescale");
const char *rescaleRes = config_get_string(main->Config(), "AdvOut",
"RecRescaleRes");
bool multitrack = config_get_bool(main->Config(), "AdvOut",
"RecMultitrack");
int trackIndex = config_get_int(main->Config(), "AdvOut",
"RecTrackIndex");
int trackCount = config_get_int(main->Config(), "AdvOut",
"RecTrackCount");
int tracks = config_get_int(main->Config(), "AdvOut", "RecTracks");
obs_data_t *settings = obs_data_create();
unsigned int cx = 0;
unsigned int cy = 0;
int idx = 0;
if (useStreamEncoder) {
obs_output_set_video_encoder(fileOutput, h264Streaming);
@ -515,16 +511,11 @@ inline void AdvancedOutput::SetupRecording()
obs_output_set_video_encoder(fileOutput, h264Recording);
}
if (multitrack) {
int i = 0;
for (; i < trackCount; i++)
for (int i = 0; i < MAX_AUDIO_MIXES; i++) {
if ((tracks & (1<<i)) != 0) {
obs_output_set_audio_encoder(fileOutput, aacTrack[i],
i);
for (; i < 4; i++)
obs_output_set_audio_encoder(fileOutput, nullptr, i);
} else {
obs_output_set_audio_encoder(fileOutput,
aacTrack[trackIndex - 1], 0);
idx++);
}
}
obs_data_set_string(settings, "path", path);

View file

@ -496,8 +496,7 @@ bool OBSBasic::InitBasicConfigDefaults()
false);
config_set_default_bool (basicConfig, "AdvOut", "RecMultitrack",
false);
config_set_default_uint (basicConfig, "AdvOut", "RecTrackIndex", 1);
config_set_default_uint (basicConfig, "AdvOut", "RecTrackCount", 1);
config_set_default_uint (basicConfig, "AdvOut", "RecTracks", (1<<0));
config_set_default_string(basicConfig, "AdvOut", "RecEncoder",
"none");

View file

@ -1042,8 +1042,7 @@ void OBSBasicSettings::LoadAdvOutputRecordingSettings()
"RecRescale");
const char *rescaleRes = config_get_string(main->Config(), "AdvOut",
"RecRescaleRes");
int trackIndex = config_get_int(main->Config(), "AdvOut",
"RecTrackIndex");
int tracks = config_get_int(main->Config(), "AdvOut", "RecTracks");
int typeIndex = (astrcmpi(type, "FFmpeg") == 0) ? 1 : 0;
ui->advOutRecType->setCurrentIndex(typeIndex);
@ -1054,12 +1053,10 @@ void OBSBasicSettings::LoadAdvOutputRecordingSettings()
int idx = ui->advOutRecFormat->findText(format);
ui->advOutRecFormat->setCurrentIndex(idx);
switch (trackIndex) {
case 1: ui->advOutRecTrack1->setChecked(true); break;
case 2: ui->advOutRecTrack2->setChecked(true); break;
case 3: ui->advOutRecTrack3->setChecked(true); break;
case 4: ui->advOutRecTrack4->setChecked(true); break;
}
ui->advOutRecTrack1->setChecked(tracks & (1<<0));
ui->advOutRecTrack2->setChecked(tracks & (1<<1));
ui->advOutRecTrack3->setChecked(tracks & (1<<2));
ui->advOutRecTrack4->setChecked(tracks & (1<<3));
}
void OBSBasicSettings::LoadAdvOutputRecordingEncoderProperties()
@ -2006,9 +2003,12 @@ void OBSBasicSettings::SaveOutputSettings()
SaveComboData(ui->advOutRecEncoder, "AdvOut", "RecEncoder");
SaveCheckBox(ui->advOutRecUseRescale, "AdvOut", "RecRescale");
SaveCombo(ui->advOutRecRescale, "AdvOut", "RecRescaleRes");
SaveTrackIndex(main->Config(), "AdvOut", "RecTrackIndex",
ui->advOutRecTrack1, ui->advOutRecTrack2,
ui->advOutRecTrack3, ui->advOutRecTrack4);
config_set_int(main->Config(), "AdvOut", "RecTracks",
(ui->advOutRecTrack1->isChecked() ? (1<<0) : 0) |
(ui->advOutRecTrack2->isChecked() ? (1<<1) : 0) |
(ui->advOutRecTrack3->isChecked() ? (1<<2) : 0) |
(ui->advOutRecTrack4->isChecked() ? (1<<3) : 0));
SaveEdit(ui->advOutFFURL, "AdvOut", "FFURL");
SaveFormat(ui->advOutFFFormat);