mirror of
https://github.com/claunia/flac.git
synced 2025-12-16 18:54:26 +00:00
revamp decoder process calls
This commit is contained in:
@@ -418,7 +418,7 @@ unsigned FLAC__file_decoder_get_blocksize(const FLAC__FileDecoder *decoder)
|
||||
return FLAC__seekable_stream_decoder_get_blocksize(decoder->private_->seekable_stream_decoder);
|
||||
}
|
||||
|
||||
FLAC__bool FLAC__file_decoder_process_whole_file(FLAC__FileDecoder *decoder)
|
||||
FLAC__bool FLAC__file_decoder_process_single(FLAC__FileDecoder *decoder)
|
||||
{
|
||||
FLAC__bool ret;
|
||||
FLAC__ASSERT(0 != decoder);
|
||||
@@ -431,14 +431,14 @@ FLAC__bool FLAC__file_decoder_process_whole_file(FLAC__FileDecoder *decoder)
|
||||
|
||||
FLAC__ASSERT(decoder->protected_->state == FLAC__FILE_DECODER_OK);
|
||||
|
||||
ret = FLAC__seekable_stream_decoder_process_whole_stream(decoder->private_->seekable_stream_decoder);
|
||||
ret = FLAC__seekable_stream_decoder_process_single(decoder->private_->seekable_stream_decoder);
|
||||
if(!ret)
|
||||
decoder->protected_->state = FLAC__FILE_DECODER_SEEKABLE_STREAM_DECODER_ERROR;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
FLAC__bool FLAC__file_decoder_process_metadata(FLAC__FileDecoder *decoder)
|
||||
FLAC__bool FLAC__file_decoder_process_until_end_of_metadata(FLAC__FileDecoder *decoder)
|
||||
{
|
||||
FLAC__bool ret;
|
||||
FLAC__ASSERT(0 != decoder);
|
||||
@@ -451,14 +451,14 @@ FLAC__bool FLAC__file_decoder_process_metadata(FLAC__FileDecoder *decoder)
|
||||
|
||||
FLAC__ASSERT(decoder->protected_->state == FLAC__FILE_DECODER_OK);
|
||||
|
||||
ret = FLAC__seekable_stream_decoder_process_metadata(decoder->private_->seekable_stream_decoder);
|
||||
ret = FLAC__seekable_stream_decoder_process_until_end_of_metadata(decoder->private_->seekable_stream_decoder);
|
||||
if(!ret)
|
||||
decoder->protected_->state = FLAC__FILE_DECODER_SEEKABLE_STREAM_DECODER_ERROR;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
FLAC__bool FLAC__file_decoder_process_one_frame(FLAC__FileDecoder *decoder)
|
||||
FLAC__bool FLAC__file_decoder_process_until_end_of_file(FLAC__FileDecoder *decoder)
|
||||
{
|
||||
FLAC__bool ret;
|
||||
FLAC__ASSERT(0 != decoder);
|
||||
@@ -471,27 +471,7 @@ FLAC__bool FLAC__file_decoder_process_one_frame(FLAC__FileDecoder *decoder)
|
||||
|
||||
FLAC__ASSERT(decoder->protected_->state == FLAC__FILE_DECODER_OK);
|
||||
|
||||
ret = FLAC__seekable_stream_decoder_process_one_frame(decoder->private_->seekable_stream_decoder);
|
||||
if(!ret)
|
||||
decoder->protected_->state = FLAC__FILE_DECODER_SEEKABLE_STREAM_DECODER_ERROR;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
FLAC__bool FLAC__file_decoder_process_remaining_frames(FLAC__FileDecoder *decoder)
|
||||
{
|
||||
FLAC__bool ret;
|
||||
FLAC__ASSERT(0 != decoder);
|
||||
|
||||
if(decoder->private_->seekable_stream_decoder->protected_->state == FLAC__SEEKABLE_STREAM_DECODER_END_OF_STREAM)
|
||||
decoder->protected_->state = FLAC__FILE_DECODER_END_OF_FILE;
|
||||
|
||||
if(decoder->protected_->state == FLAC__FILE_DECODER_END_OF_FILE)
|
||||
return true;
|
||||
|
||||
FLAC__ASSERT(decoder->protected_->state == FLAC__FILE_DECODER_OK);
|
||||
|
||||
ret = FLAC__seekable_stream_decoder_process_remaining_frames(decoder->private_->seekable_stream_decoder);
|
||||
ret = FLAC__seekable_stream_decoder_process_until_end_of_stream(decoder->private_->seekable_stream_decoder);
|
||||
if(!ret)
|
||||
decoder->protected_->state = FLAC__FILE_DECODER_SEEKABLE_STREAM_DECODER_ERROR;
|
||||
|
||||
|
||||
@@ -545,7 +545,7 @@ FLAC__bool FLAC__seekable_stream_decoder_reset(FLAC__SeekableStreamDecoder *deco
|
||||
return true;
|
||||
}
|
||||
|
||||
FLAC__bool FLAC__seekable_stream_decoder_process_whole_stream(FLAC__SeekableStreamDecoder *decoder)
|
||||
FLAC__bool FLAC__seekable_stream_decoder_process_single(FLAC__SeekableStreamDecoder *decoder)
|
||||
{
|
||||
FLAC__bool ret;
|
||||
FLAC__ASSERT(0 != decoder);
|
||||
@@ -558,14 +558,14 @@ FLAC__bool FLAC__seekable_stream_decoder_process_whole_stream(FLAC__SeekableStre
|
||||
|
||||
FLAC__ASSERT(decoder->protected_->state == FLAC__SEEKABLE_STREAM_DECODER_OK);
|
||||
|
||||
ret = FLAC__stream_decoder_process_whole_stream(decoder->private_->stream_decoder);
|
||||
ret = FLAC__stream_decoder_process_single(decoder->private_->stream_decoder);
|
||||
if(!ret)
|
||||
decoder->protected_->state = FLAC__SEEKABLE_STREAM_DECODER_STREAM_DECODER_ERROR;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
FLAC__bool FLAC__seekable_stream_decoder_process_metadata(FLAC__SeekableStreamDecoder *decoder)
|
||||
FLAC__bool FLAC__seekable_stream_decoder_process_until_end_of_metadata(FLAC__SeekableStreamDecoder *decoder)
|
||||
{
|
||||
FLAC__bool ret;
|
||||
FLAC__ASSERT(0 != decoder);
|
||||
@@ -578,14 +578,14 @@ FLAC__bool FLAC__seekable_stream_decoder_process_metadata(FLAC__SeekableStreamDe
|
||||
|
||||
FLAC__ASSERT(decoder->protected_->state == FLAC__SEEKABLE_STREAM_DECODER_OK);
|
||||
|
||||
ret = FLAC__stream_decoder_process_metadata(decoder->private_->stream_decoder);
|
||||
ret = FLAC__stream_decoder_process_until_end_of_metadata(decoder->private_->stream_decoder);
|
||||
if(!ret)
|
||||
decoder->protected_->state = FLAC__SEEKABLE_STREAM_DECODER_STREAM_DECODER_ERROR;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
FLAC__bool FLAC__seekable_stream_decoder_process_one_frame(FLAC__SeekableStreamDecoder *decoder)
|
||||
FLAC__bool FLAC__seekable_stream_decoder_process_until_end_of_stream(FLAC__SeekableStreamDecoder *decoder)
|
||||
{
|
||||
FLAC__bool ret;
|
||||
FLAC__ASSERT(0 != decoder);
|
||||
@@ -598,27 +598,7 @@ FLAC__bool FLAC__seekable_stream_decoder_process_one_frame(FLAC__SeekableStreamD
|
||||
|
||||
FLAC__ASSERT(decoder->protected_->state == FLAC__SEEKABLE_STREAM_DECODER_OK);
|
||||
|
||||
ret = FLAC__stream_decoder_process_one_frame(decoder->private_->stream_decoder);
|
||||
if(!ret)
|
||||
decoder->protected_->state = FLAC__SEEKABLE_STREAM_DECODER_STREAM_DECODER_ERROR;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
FLAC__bool FLAC__seekable_stream_decoder_process_remaining_frames(FLAC__SeekableStreamDecoder *decoder)
|
||||
{
|
||||
FLAC__bool ret;
|
||||
FLAC__ASSERT(0 != decoder);
|
||||
|
||||
if(decoder->private_->stream_decoder->protected_->state == FLAC__STREAM_DECODER_END_OF_STREAM)
|
||||
decoder->protected_->state = FLAC__SEEKABLE_STREAM_DECODER_END_OF_STREAM;
|
||||
|
||||
if(decoder->protected_->state == FLAC__SEEKABLE_STREAM_DECODER_END_OF_STREAM)
|
||||
return true;
|
||||
|
||||
FLAC__ASSERT(decoder->protected_->state == FLAC__SEEKABLE_STREAM_DECODER_OK);
|
||||
|
||||
ret = FLAC__stream_decoder_process_remaining_frames(decoder->private_->stream_decoder);
|
||||
ret = FLAC__stream_decoder_process_until_end_of_stream(decoder->private_->stream_decoder);
|
||||
if(!ret)
|
||||
decoder->protected_->state = FLAC__SEEKABLE_STREAM_DECODER_STREAM_DECODER_ERROR;
|
||||
|
||||
@@ -651,7 +631,7 @@ FLAC__bool FLAC__seekable_stream_decoder_seek_absolute(FLAC__SeekableStreamDecod
|
||||
decoder->protected_->state = FLAC__SEEKABLE_STREAM_DECODER_SEEK_ERROR;
|
||||
return false;
|
||||
}
|
||||
if(!FLAC__stream_decoder_process_metadata(decoder->private_->stream_decoder)) {
|
||||
if(!FLAC__stream_decoder_process_until_end_of_metadata(decoder->private_->stream_decoder)) {
|
||||
decoder->protected_->state = FLAC__SEEKABLE_STREAM_DECODER_STREAM_DECODER_ERROR;
|
||||
return false;
|
||||
}
|
||||
@@ -961,7 +941,7 @@ FLAC__bool seek_to_absolute_sample_(FLAC__SeekableStreamDecoder *decoder, FLAC__
|
||||
return false;
|
||||
}
|
||||
}
|
||||
if(!FLAC__stream_decoder_process_one_frame(decoder->private_->stream_decoder)) {
|
||||
if(!FLAC__stream_decoder_process_single(decoder->private_->stream_decoder)) {
|
||||
decoder->protected_->state = FLAC__SEEKABLE_STREAM_DECODER_SEEK_ERROR;
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -258,7 +258,10 @@ FLAC__StreamDecoderState FLAC__stream_decoder_init(FLAC__StreamDecoder *decoder)
|
||||
}
|
||||
#endif
|
||||
|
||||
return decoder->protected_->state = FLAC__STREAM_DECODER_SEARCH_FOR_METADATA;
|
||||
if(!FLAC__stream_decoder_reset(decoder))
|
||||
return decoder->protected_->state = FLAC__STREAM_DECODER_MEMORY_ALLOCATION_ERROR;
|
||||
|
||||
return decoder->protected_->state;
|
||||
}
|
||||
|
||||
void FLAC__stream_decoder_finish(FLAC__StreamDecoder *decoder)
|
||||
@@ -528,95 +531,23 @@ FLAC__bool FLAC__stream_decoder_reset(FLAC__StreamDecoder *decoder)
|
||||
return true;
|
||||
}
|
||||
|
||||
FLAC__bool FLAC__stream_decoder_process_whole_stream(FLAC__StreamDecoder *decoder)
|
||||
{
|
||||
FLAC__bool dummy;
|
||||
FLAC__ASSERT(0 != decoder);
|
||||
|
||||
if(decoder->protected_->state == FLAC__STREAM_DECODER_END_OF_STREAM)
|
||||
return true;
|
||||
|
||||
FLAC__ASSERT(decoder->protected_->state == FLAC__STREAM_DECODER_SEARCH_FOR_METADATA);
|
||||
|
||||
if(!FLAC__stream_decoder_reset(decoder)) {
|
||||
decoder->protected_->state = FLAC__STREAM_DECODER_MEMORY_ALLOCATION_ERROR;
|
||||
return false;
|
||||
}
|
||||
|
||||
while(1) {
|
||||
switch(decoder->protected_->state) {
|
||||
case FLAC__STREAM_DECODER_SEARCH_FOR_METADATA:
|
||||
if(!find_metadata_(decoder))
|
||||
return false; /* above function sets the status for us */
|
||||
break;
|
||||
case FLAC__STREAM_DECODER_READ_METADATA:
|
||||
if(!read_metadata_(decoder))
|
||||
return false; /* above function sets the status for us */
|
||||
break;
|
||||
case FLAC__STREAM_DECODER_SEARCH_FOR_FRAME_SYNC:
|
||||
if(!frame_sync_(decoder))
|
||||
return true; /* above function sets the status for us */
|
||||
break;
|
||||
case FLAC__STREAM_DECODER_READ_FRAME:
|
||||
if(!read_frame_(decoder, &dummy))
|
||||
return false; /* above function sets the status for us */
|
||||
break;
|
||||
case FLAC__STREAM_DECODER_END_OF_STREAM:
|
||||
case FLAC__STREAM_DECODER_ABORTED:
|
||||
return true;
|
||||
default:
|
||||
FLAC__ASSERT(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
FLAC__bool FLAC__stream_decoder_process_metadata(FLAC__StreamDecoder *decoder)
|
||||
{
|
||||
FLAC__ASSERT(0 != decoder);
|
||||
|
||||
if(decoder->protected_->state == FLAC__STREAM_DECODER_END_OF_STREAM)
|
||||
return true;
|
||||
|
||||
FLAC__ASSERT(decoder->protected_->state == FLAC__STREAM_DECODER_SEARCH_FOR_METADATA);
|
||||
|
||||
if(!FLAC__stream_decoder_reset(decoder)) {
|
||||
decoder->protected_->state = FLAC__STREAM_DECODER_MEMORY_ALLOCATION_ERROR;
|
||||
return false;
|
||||
}
|
||||
|
||||
while(1) {
|
||||
switch(decoder->protected_->state) {
|
||||
case FLAC__STREAM_DECODER_SEARCH_FOR_METADATA:
|
||||
if(!find_metadata_(decoder))
|
||||
return false; /* above function sets the status for us */
|
||||
break;
|
||||
case FLAC__STREAM_DECODER_READ_METADATA:
|
||||
if(!read_metadata_(decoder))
|
||||
return false; /* above function sets the status for us */
|
||||
break;
|
||||
case FLAC__STREAM_DECODER_SEARCH_FOR_FRAME_SYNC:
|
||||
case FLAC__STREAM_DECODER_READ_FRAME:
|
||||
case FLAC__STREAM_DECODER_END_OF_STREAM:
|
||||
case FLAC__STREAM_DECODER_ABORTED:
|
||||
return true;
|
||||
default:
|
||||
FLAC__ASSERT(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
FLAC__bool FLAC__stream_decoder_process_one_frame(FLAC__StreamDecoder *decoder)
|
||||
FLAC__bool FLAC__stream_decoder_process_single(FLAC__StreamDecoder *decoder)
|
||||
{
|
||||
FLAC__bool got_a_frame;
|
||||
FLAC__ASSERT(0 != decoder);
|
||||
|
||||
if(decoder->protected_->state == FLAC__STREAM_DECODER_END_OF_STREAM)
|
||||
return true;
|
||||
|
||||
FLAC__ASSERT(decoder->protected_->state == FLAC__STREAM_DECODER_SEARCH_FOR_FRAME_SYNC);
|
||||
FLAC__ASSERT(0 != decoder->protected_);
|
||||
|
||||
while(1) {
|
||||
switch(decoder->protected_->state) {
|
||||
case FLAC__STREAM_DECODER_SEARCH_FOR_METADATA:
|
||||
if(!find_metadata_(decoder))
|
||||
return false; /* above function sets the status for us */
|
||||
break;
|
||||
case FLAC__STREAM_DECODER_READ_METADATA:
|
||||
if(!read_metadata_(decoder))
|
||||
return false; /* above function sets the status for us */
|
||||
else
|
||||
return true;
|
||||
case FLAC__STREAM_DECODER_SEARCH_FOR_FRAME_SYNC:
|
||||
if(!frame_sync_(decoder))
|
||||
return true; /* above function sets the status for us */
|
||||
@@ -632,22 +563,54 @@ FLAC__bool FLAC__stream_decoder_process_one_frame(FLAC__StreamDecoder *decoder)
|
||||
return true;
|
||||
default:
|
||||
FLAC__ASSERT(0);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
FLAC__bool FLAC__stream_decoder_process_remaining_frames(FLAC__StreamDecoder *decoder)
|
||||
FLAC__bool FLAC__stream_decoder_process_until_end_of_metadata(FLAC__StreamDecoder *decoder)
|
||||
{
|
||||
FLAC__bool dummy;
|
||||
FLAC__ASSERT(0 != decoder);
|
||||
|
||||
if(decoder->protected_->state == FLAC__STREAM_DECODER_END_OF_STREAM)
|
||||
return true;
|
||||
|
||||
FLAC__ASSERT(decoder->protected_->state == FLAC__STREAM_DECODER_SEARCH_FOR_FRAME_SYNC);
|
||||
FLAC__ASSERT(0 != decoder->protected_);
|
||||
|
||||
while(1) {
|
||||
switch(decoder->protected_->state) {
|
||||
case FLAC__STREAM_DECODER_SEARCH_FOR_METADATA:
|
||||
if(!find_metadata_(decoder))
|
||||
return false; /* above function sets the status for us */
|
||||
break;
|
||||
case FLAC__STREAM_DECODER_READ_METADATA:
|
||||
if(!read_metadata_(decoder))
|
||||
return false; /* above function sets the status for us */
|
||||
break;
|
||||
case FLAC__STREAM_DECODER_SEARCH_FOR_FRAME_SYNC:
|
||||
case FLAC__STREAM_DECODER_READ_FRAME:
|
||||
case FLAC__STREAM_DECODER_END_OF_STREAM:
|
||||
case FLAC__STREAM_DECODER_ABORTED:
|
||||
return true;
|
||||
default:
|
||||
FLAC__ASSERT(0);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
FLAC__bool FLAC__stream_decoder_process_until_end_of_stream(FLAC__StreamDecoder *decoder)
|
||||
{
|
||||
FLAC__bool dummy;
|
||||
FLAC__ASSERT(0 != decoder);
|
||||
FLAC__ASSERT(0 != decoder->protected_);
|
||||
|
||||
while(1) {
|
||||
switch(decoder->protected_->state) {
|
||||
case FLAC__STREAM_DECODER_SEARCH_FOR_METADATA:
|
||||
if(!find_metadata_(decoder))
|
||||
return false; /* above function sets the status for us */
|
||||
break;
|
||||
case FLAC__STREAM_DECODER_READ_METADATA:
|
||||
if(!read_metadata_(decoder))
|
||||
return false; /* above function sets the status for us */
|
||||
break;
|
||||
case FLAC__STREAM_DECODER_SEARCH_FOR_FRAME_SYNC:
|
||||
if(!frame_sync_(decoder))
|
||||
return true; /* above function sets the status for us */
|
||||
@@ -661,6 +624,7 @@ FLAC__bool FLAC__stream_decoder_process_remaining_frames(FLAC__StreamDecoder *de
|
||||
return true;
|
||||
default:
|
||||
FLAC__ASSERT(0);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user