提交 faa3f263 编写于 作者: P Palana

UI: Move AAC encoder creation

上级 897fbcfe
......@@ -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),
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册