output/Shout: open the encoder first, then open connection

This order will be necessary for proper AudioFormat initialization,
because the encoder may change the format.
This commit is contained in:
Max Kellermann 2017-08-08 18:41:35 +02:00
parent f46d545307
commit 3ab905644d

View File

@ -348,21 +348,15 @@ ShoutOpen(shout_t *shout_conn)
void void
ShoutOutput::Open(AudioFormat &audio_format) ShoutOutput::Open(AudioFormat &audio_format)
{ {
ShoutOpen(shout_conn);
try {
encoder = prepared_encoder->Open(audio_format); encoder = prepared_encoder->Open(audio_format);
try { try {
ShoutOpen(shout_conn);
WritePage(); WritePage();
} catch (const std::runtime_error &) { } catch (...) {
delete encoder; delete encoder;
throw; throw;
} }
} catch (const std::runtime_error &) {
shout_close(shout_conn);
throw;
}
} }
std::chrono::steady_clock::duration std::chrono::steady_clock::duration