DecoderInternal: move functions into the class
This commit is contained in:
		@@ -312,12 +312,12 @@ do_send_tag(Decoder &decoder, const Tag &tag)
 | 
			
		||||
	if (decoder.chunk != nullptr) {
 | 
			
		||||
		/* there is a partial chunk - flush it, we want the
 | 
			
		||||
		   tag in a new chunk */
 | 
			
		||||
		decoder_flush_chunk(decoder);
 | 
			
		||||
		decoder.FlushChunk();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	assert(decoder.chunk == nullptr);
 | 
			
		||||
 | 
			
		||||
	chunk = decoder_get_chunk(decoder);
 | 
			
		||||
	chunk = decoder.GetChunk();
 | 
			
		||||
	if (chunk == nullptr) {
 | 
			
		||||
		assert(decoder.dc.command != DecoderCommand::NONE);
 | 
			
		||||
		return decoder.dc.command;
 | 
			
		||||
@@ -408,7 +408,7 @@ decoder_data(Decoder &decoder,
 | 
			
		||||
		struct music_chunk *chunk;
 | 
			
		||||
		bool full;
 | 
			
		||||
 | 
			
		||||
		chunk = decoder_get_chunk(decoder);
 | 
			
		||||
		chunk = decoder.GetChunk();
 | 
			
		||||
		if (chunk == nullptr) {
 | 
			
		||||
			assert(dc.command != DecoderCommand::NONE);
 | 
			
		||||
			return dc.command;
 | 
			
		||||
@@ -421,7 +421,7 @@ decoder_data(Decoder &decoder,
 | 
			
		||||
				     kbit_rate);
 | 
			
		||||
		if (dest.IsNull()) {
 | 
			
		||||
			/* the chunk is full, flush it */
 | 
			
		||||
			decoder_flush_chunk(decoder);
 | 
			
		||||
			decoder.FlushChunk();
 | 
			
		||||
			continue;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
@@ -440,7 +440,7 @@ decoder_data(Decoder &decoder,
 | 
			
		||||
		full = chunk->Expand(dc.out_audio_format, nbytes);
 | 
			
		||||
		if (full) {
 | 
			
		||||
			/* the chunk is full, flush it */
 | 
			
		||||
			decoder_flush_chunk(decoder);
 | 
			
		||||
			decoder.FlushChunk();
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		data = (const uint8_t *)data + nbytes;
 | 
			
		||||
@@ -532,7 +532,7 @@ decoder_replay_gain(Decoder &decoder,
 | 
			
		||||
			/* flush the current chunk because the new
 | 
			
		||||
			   replay gain values affect the following
 | 
			
		||||
			   samples */
 | 
			
		||||
			decoder_flush_chunk(decoder);
 | 
			
		||||
			decoder.FlushChunk();
 | 
			
		||||
		}
 | 
			
		||||
	} else
 | 
			
		||||
		decoder.replay_gain_serial = 0;
 | 
			
		||||
 
 | 
			
		||||
@@ -51,24 +51,21 @@ need_chunks(DecoderControl &dc)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
struct music_chunk *
 | 
			
		||||
decoder_get_chunk(Decoder &decoder)
 | 
			
		||||
Decoder::GetChunk()
 | 
			
		||||
{
 | 
			
		||||
	DecoderControl &dc = decoder.dc;
 | 
			
		||||
	DecoderCommand cmd;
 | 
			
		||||
 | 
			
		||||
	if (decoder.chunk != nullptr)
 | 
			
		||||
		return decoder.chunk;
 | 
			
		||||
	if (chunk != nullptr)
 | 
			
		||||
		return chunk;
 | 
			
		||||
 | 
			
		||||
	do {
 | 
			
		||||
		decoder.chunk = dc.buffer->Allocate();
 | 
			
		||||
		if (decoder.chunk != nullptr) {
 | 
			
		||||
			decoder.chunk->replay_gain_serial =
 | 
			
		||||
				decoder.replay_gain_serial;
 | 
			
		||||
			if (decoder.replay_gain_serial != 0)
 | 
			
		||||
				decoder.chunk->replay_gain_info =
 | 
			
		||||
					decoder.replay_gain_info;
 | 
			
		||||
		chunk = dc.buffer->Allocate();
 | 
			
		||||
		if (chunk != nullptr) {
 | 
			
		||||
			chunk->replay_gain_serial = replay_gain_serial;
 | 
			
		||||
			if (replay_gain_serial != 0)
 | 
			
		||||
				chunk->replay_gain_info = replay_gain_info;
 | 
			
		||||
 | 
			
		||||
			return decoder.chunk;
 | 
			
		||||
			return chunk;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		dc.Lock();
 | 
			
		||||
@@ -80,18 +77,16 @@ decoder_get_chunk(Decoder &decoder)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
decoder_flush_chunk(Decoder &decoder)
 | 
			
		||||
Decoder::FlushChunk()
 | 
			
		||||
{
 | 
			
		||||
	DecoderControl &dc = decoder.dc;
 | 
			
		||||
	assert(chunk != nullptr);
 | 
			
		||||
 | 
			
		||||
	assert(decoder.chunk != nullptr);
 | 
			
		||||
 | 
			
		||||
	if (decoder.chunk->IsEmpty())
 | 
			
		||||
		dc.buffer->Return(decoder.chunk);
 | 
			
		||||
	if (chunk->IsEmpty())
 | 
			
		||||
		dc.buffer->Return(chunk);
 | 
			
		||||
	else
 | 
			
		||||
		dc.pipe->Push(decoder.chunk);
 | 
			
		||||
		dc.pipe->Push(chunk);
 | 
			
		||||
 | 
			
		||||
	decoder.chunk = nullptr;
 | 
			
		||||
	chunk = nullptr;
 | 
			
		||||
 | 
			
		||||
	dc.Lock();
 | 
			
		||||
	if (dc.client_is_waiting)
 | 
			
		||||
 
 | 
			
		||||
@@ -95,23 +95,21 @@ struct Decoder {
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	~Decoder();
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Returns the current chunk the decoder writes to, or allocates a new
 | 
			
		||||
	 * chunk if there is none.
 | 
			
		||||
	 *
 | 
			
		||||
	 * @return the chunk, or NULL if we have received a decoder command
 | 
			
		||||
	 */
 | 
			
		||||
	music_chunk *GetChunk();
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Flushes the current chunk.
 | 
			
		||||
	 *
 | 
			
		||||
	 * Caller must not lock the #DecoderControl object.
 | 
			
		||||
	 */
 | 
			
		||||
	void FlushChunk();
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Returns the current chunk the decoder writes to, or allocates a new
 | 
			
		||||
 * chunk if there is none.
 | 
			
		||||
 *
 | 
			
		||||
 * @return the chunk, or NULL if we have received a decoder command
 | 
			
		||||
 */
 | 
			
		||||
struct music_chunk *
 | 
			
		||||
decoder_get_chunk(Decoder &decoder);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Flushes the current chunk.
 | 
			
		||||
 *
 | 
			
		||||
 * Caller must not lock the #DecoderControl object.
 | 
			
		||||
 */
 | 
			
		||||
void
 | 
			
		||||
decoder_flush_chunk(Decoder &decoder);
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 
 | 
			
		||||
@@ -356,7 +356,7 @@ decoder_run_song(DecoderControl &dc,
 | 
			
		||||
	/* flush the last chunk */
 | 
			
		||||
 | 
			
		||||
	if (decoder.chunk != nullptr)
 | 
			
		||||
		decoder_flush_chunk(decoder);
 | 
			
		||||
		decoder.FlushChunk();
 | 
			
		||||
 | 
			
		||||
	dc.Lock();
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user