From faa3f263ae4082bbd17d9e4347634c1450486edf Mon Sep 17 00:00:00 2001 From: Palana Date: Sat, 6 Jun 2015 01:52:22 +0200 Subject: [PATCH] UI: Move AAC encoder creation --- obs/window-basic-main-outputs.cpp | 37 +++++++++++++++++++++---------- 1 file changed, 25 insertions(+), 12 deletions(-) diff --git a/obs/window-basic-main-outputs.cpp b/obs/window-basic-main-outputs.cpp index 24ad024c9..b52890c87 100644 --- a/obs/window-basic-main-outputs.cpp +++ b/obs/window-basic-main-outputs.cpp @@ -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),