decoder/opus: change return types to void

This commit is contained in:
Max Kellermann
2016-05-13 13:24:32 +02:00
parent 0709878b4c
commit 5acc77a163

View File

@@ -127,8 +127,8 @@ public:
private: private:
DecoderCommand HandlePacket(const ogg_packet &packet); DecoderCommand HandlePacket(const ogg_packet &packet);
DecoderCommand HandleBOS(const ogg_packet &packet); void HandleBOS(const ogg_packet &packet);
DecoderCommand HandleEOS(); void HandleEOS();
DecoderCommand HandleTags(const ogg_packet &packet); DecoderCommand HandleTags(const ogg_packet &packet);
DecoderCommand HandleAudio(const ogg_packet &packet); DecoderCommand HandleAudio(const ogg_packet &packet);
}; };
@@ -172,12 +172,15 @@ MPDOpusDecoder::HandlePackets()
inline DecoderCommand inline DecoderCommand
MPDOpusDecoder::HandlePacket(const ogg_packet &packet) MPDOpusDecoder::HandlePacket(const ogg_packet &packet)
{ {
if (packet.e_o_s) if (packet.e_o_s) {
return HandleEOS(); HandleEOS();
return decoder_get_command(decoder);
}
if (packet.b_o_s) if (packet.b_o_s) {
return HandleBOS(packet); HandleBOS(packet);
else if (opus_decoder == nullptr) return decoder_get_command(decoder);
} else if (opus_decoder == nullptr)
throw std::runtime_error("BOS packet expected"); throw std::runtime_error("BOS packet expected");
if (IsOpusTags(packet)) if (IsOpusTags(packet))
@@ -237,7 +240,7 @@ LoadEOSGranulePos(InputStream &is, Decoder &decoder, int serialno)
return packet.granulepos; return packet.granulepos;
} }
inline DecoderCommand inline void
MPDOpusDecoder::HandleBOS(const ogg_packet &packet) MPDOpusDecoder::HandleBOS(const ogg_packet &packet)
{ {
assert(packet.b_o_s); assert(packet.b_o_s);
@@ -273,7 +276,7 @@ MPDOpusDecoder::HandleBOS(const ogg_packet &packet)
/* decoder was already initialized by the previous /* decoder was already initialized by the previous
stream; skip the rest of this method */ stream; skip the rest of this method */
LogDebug(opus_domain, "Found another stream"); LogDebug(opus_domain, "Found another stream");
return decoder_get_command(decoder); return;
} }
eos_granulepos = LoadEOSGranulePos(input_stream, decoder, eos_granulepos = LoadEOSGranulePos(input_stream, decoder,
@@ -292,11 +295,9 @@ MPDOpusDecoder::HandleBOS(const ogg_packet &packet)
output_buffer = new opus_int16[opus_output_buffer_frames output_buffer = new opus_int16[opus_output_buffer_frames
* audio_format.channels]; * audio_format.channels];
return decoder_get_command(decoder);
} }
inline DecoderCommand inline void
MPDOpusDecoder::HandleEOS() MPDOpusDecoder::HandleEOS()
{ {
if (eos_granulepos < 0 && IsInitialized()) { if (eos_granulepos < 0 && IsInitialized()) {
@@ -306,10 +307,7 @@ MPDOpusDecoder::HandleEOS()
opus_decoder_destroy(opus_decoder); opus_decoder_destroy(opus_decoder);
opus_decoder = nullptr; opus_decoder = nullptr;
} else
return decoder_get_command(decoder);
}
throw StopDecoder(); throw StopDecoder();
} }