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,19 +348,13 @@ ShoutOpen(shout_t *shout_conn)
void
ShoutOutput::Open(AudioFormat &audio_format)
{
ShoutOpen(shout_conn);
encoder = prepared_encoder->Open(audio_format);
try {
encoder = prepared_encoder->Open(audio_format);
try {
WritePage();
} catch (const std::runtime_error &) {
delete encoder;
throw;
}
} catch (const std::runtime_error &) {
shout_close(shout_conn);
ShoutOpen(shout_conn);
WritePage();
} catch (...) {
delete encoder;
throw;
}
}