UI: Move AAC encoder creation

This commit is contained in:
Palana 2015-06-06 01:52:22 +02:00
parent 897fbcfe1c
commit faa3f263ae

View File

@ -44,6 +44,29 @@ static void OBSStopRecording(void *data, calldata_t *params)
/* ------------------------------------------------------------------------ */
static OBSEncoder CreateAACEncoder(const char *name, size_t idx)
{
static const char *encoders[] = {
"libfdk_aac",
"ffmpeg_aac"
};
OBSEncoder result;
for (const char *encoder : encoders) {
result = obs_audio_encoder_create(encoder, name, nullptr, idx,
nullptr);
if (result) {
obs_encoder_release(result);
break;
}
}
return result;
}
/* ------------------------------------------------------------------------ */
struct SimpleOutput : BasicOutputHandler {
OBSEncoder aac;
OBSEncoder h264;
@ -82,14 +105,9 @@ SimpleOutput::SimpleOutput(OBSBasic *main_) : BasicOutputHandler(main_)
throw "Failed to create h264 encoder (simple output)";
obs_encoder_release(h264);
aac = obs_audio_encoder_create("libfdk_aac", "simple_aac", nullptr, 0,
nullptr);
if (!aac)
aac = obs_audio_encoder_create("ffmpeg_aac", "simple_aac",
nullptr, 0, nullptr);
aac = CreateAACEncoder("simple_aac", 0);
if (!aac)
throw "Failed to create audio encoder (simple output)";
obs_encoder_release(aac);
signal_handler_connect(obs_output_get_signal_handler(streamOutput),
"start", OBSStartStreaming, this);
@ -366,15 +384,10 @@ AdvancedOutput::AdvancedOutput(OBSBasic *main_) : BasicOutputHandler(main_)
char name[9];
sprintf(name, "adv_aac%d", i);
aacTrack[i] = obs_audio_encoder_create("libfdk_aac",
name, nullptr, i, nullptr);
if (!aacTrack[i])
aacTrack[i] = obs_audio_encoder_create("ffmpeg_aac",
name, nullptr, i, nullptr);
aacTrack[i] = CreateAACEncoder(name, i);
if (!aacTrack[i])
throw "Failed to create audio encoder "
"(advanced output)";
obs_encoder_release(aacTrack[i]);
}
signal_handler_connect(obs_output_get_signal_handler(streamOutput),