new funcs for getting underlying decoder layer states
This commit is contained in:
parent
a5c12467d9
commit
cad97be8de
@ -20,7 +20,7 @@
|
|||||||
#ifndef FLAC__FILE_DECODER_H
|
#ifndef FLAC__FILE_DECODER_H
|
||||||
#define FLAC__FILE_DECODER_H
|
#define FLAC__FILE_DECODER_H
|
||||||
|
|
||||||
#include "stream_decoder.h"
|
#include "seekable_stream_decoder.h"
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
@ -389,6 +389,31 @@ FLAC__bool FLAC__file_decoder_set_metadata_ignore_all(FLAC__FileDecoder *decoder
|
|||||||
*/
|
*/
|
||||||
FLAC__FileDecoderState FLAC__file_decoder_get_state(const FLAC__FileDecoder *decoder);
|
FLAC__FileDecoderState FLAC__file_decoder_get_state(const FLAC__FileDecoder *decoder);
|
||||||
|
|
||||||
|
/** Get the state of the underlying seekable stream decoder.
|
||||||
|
* Useful when the file decoder state is
|
||||||
|
* \c FLAC__FILE_DECODER_SEEKABLE_STREAM_DECODER_ERROR.
|
||||||
|
*
|
||||||
|
* \param decoder An decoder instance to query.
|
||||||
|
* \assert
|
||||||
|
* \code decoder != NULL \endcode
|
||||||
|
* \retval FLAC__SeekableStreamDecoderState
|
||||||
|
* The seekable stream decoder state.
|
||||||
|
*/
|
||||||
|
FLAC__SeekableStreamDecoderState FLAC__file_decoder_get_seekable_stream_decoder_state(const FLAC__FileDecoder *decoder);
|
||||||
|
|
||||||
|
/** Get the state of the underlying stream decoder.
|
||||||
|
* Useful when the file decoder state is
|
||||||
|
* \c FLAC__FILE_DECODER_SEEKABLE_STREAM_DECODER_ERROR and the seekable stream
|
||||||
|
* decoder state is \c FLAC__SEEKABLE_STREAM_DECODER_STREAM_DECODER_ERROR.
|
||||||
|
*
|
||||||
|
* \param decoder An decoder instance to query.
|
||||||
|
* \assert
|
||||||
|
* \code decoder != NULL \endcode
|
||||||
|
* \retval FLAC__SeekableStreamDecoderState
|
||||||
|
* The seekable stream decoder state.
|
||||||
|
*/
|
||||||
|
FLAC__StreamDecoderState FLAC__file_decoder_get_stream_decoder_state(const FLAC__FileDecoder *decoder);
|
||||||
|
|
||||||
/** Get the "MD5 signature checking" flag.
|
/** Get the "MD5 signature checking" flag.
|
||||||
* This is inherited from FLAC__SeekableStreamDecoder; see
|
* This is inherited from FLAC__SeekableStreamDecoder; see
|
||||||
* FLAC__seekable_stream_decoder_get_md5_checking().
|
* FLAC__seekable_stream_decoder_get_md5_checking().
|
||||||
|
@ -570,6 +570,18 @@ FLAC__bool FLAC__seekable_stream_decoder_set_metadata_ignore_all(FLAC__SeekableS
|
|||||||
*/
|
*/
|
||||||
FLAC__SeekableStreamDecoderState FLAC__seekable_stream_decoder_get_state(const FLAC__SeekableStreamDecoder *decoder);
|
FLAC__SeekableStreamDecoderState FLAC__seekable_stream_decoder_get_state(const FLAC__SeekableStreamDecoder *decoder);
|
||||||
|
|
||||||
|
/** Get the state of the underlying stream decoder.
|
||||||
|
* Useful when the seekable stream decoder state is
|
||||||
|
* \c FLAC__SEEKABLE_STREAM_DECODER_STREAM_DECODER_ERROR.
|
||||||
|
*
|
||||||
|
* \param decoder An decoder instance to query.
|
||||||
|
* \assert
|
||||||
|
* \code decoder != NULL \endcode
|
||||||
|
* \retval FLAC__StreamDecoderState
|
||||||
|
* The stream decoder state.
|
||||||
|
*/
|
||||||
|
FLAC__StreamDecoderState FLAC__seekable_stream_decoder_get_stream_decoder_state(const FLAC__SeekableStreamDecoder *decoder);
|
||||||
|
|
||||||
/** Get the "MD5 signature checking" flag.
|
/** Get the "MD5 signature checking" flag.
|
||||||
* This is the value of the setting, not whether or not the decoder is
|
* This is the value of the setting, not whether or not the decoder is
|
||||||
* currently checking the MD5 (remember, it can be turned off automatically
|
* currently checking the MD5 (remember, it can be turned off automatically
|
||||||
|
@ -362,6 +362,20 @@ FLAC__FileDecoderState FLAC__file_decoder_get_state(const FLAC__FileDecoder *dec
|
|||||||
return decoder->protected_->state;
|
return decoder->protected_->state;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FLAC__SeekableStreamDecoderState FLAC__file_decoder_get_seekable_stream_decoder_state(const FLAC__FileDecoder *decoder)
|
||||||
|
{
|
||||||
|
FLAC__ASSERT(0 != decoder);
|
||||||
|
FLAC__ASSERT(0 != decoder->private_);
|
||||||
|
return FLAC__seekable_stream_decoder_get_state(decoder->private_->seekable_stream_decoder);
|
||||||
|
}
|
||||||
|
|
||||||
|
FLAC__StreamDecoderState FLAC__file_decoder_get_stream_decoder_state(const FLAC__FileDecoder *decoder)
|
||||||
|
{
|
||||||
|
FLAC__ASSERT(0 != decoder);
|
||||||
|
FLAC__ASSERT(0 != decoder->private_);
|
||||||
|
return FLAC__seekable_stream_decoder_get_stream_decoder_state(decoder->private_->seekable_stream_decoder);
|
||||||
|
}
|
||||||
|
|
||||||
FLAC__bool FLAC__file_decoder_get_md5_checking(const FLAC__FileDecoder *decoder)
|
FLAC__bool FLAC__file_decoder_get_md5_checking(const FLAC__FileDecoder *decoder)
|
||||||
{
|
{
|
||||||
FLAC__ASSERT(0 != decoder);
|
FLAC__ASSERT(0 != decoder);
|
||||||
@ -371,37 +385,37 @@ FLAC__bool FLAC__file_decoder_get_md5_checking(const FLAC__FileDecoder *decoder)
|
|||||||
|
|
||||||
unsigned FLAC__file_decoder_get_channels(const FLAC__FileDecoder *decoder)
|
unsigned FLAC__file_decoder_get_channels(const FLAC__FileDecoder *decoder)
|
||||||
{
|
{
|
||||||
FLAC__ASSERT(0 != decoder);
|
FLAC__ASSERT(0 != decoder);
|
||||||
FLAC__ASSERT(0 != decoder->private_);
|
FLAC__ASSERT(0 != decoder->private_);
|
||||||
return FLAC__seekable_stream_decoder_get_channels(decoder->private_->seekable_stream_decoder);
|
return FLAC__seekable_stream_decoder_get_channels(decoder->private_->seekable_stream_decoder);
|
||||||
}
|
}
|
||||||
|
|
||||||
FLAC__ChannelAssignment FLAC__file_decoder_get_channel_assignment(const FLAC__FileDecoder *decoder)
|
FLAC__ChannelAssignment FLAC__file_decoder_get_channel_assignment(const FLAC__FileDecoder *decoder)
|
||||||
{
|
{
|
||||||
FLAC__ASSERT(0 != decoder);
|
FLAC__ASSERT(0 != decoder);
|
||||||
FLAC__ASSERT(0 != decoder->private_);
|
FLAC__ASSERT(0 != decoder->private_);
|
||||||
return FLAC__seekable_stream_decoder_get_channel_assignment(decoder->private_->seekable_stream_decoder);
|
return FLAC__seekable_stream_decoder_get_channel_assignment(decoder->private_->seekable_stream_decoder);
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned FLAC__file_decoder_get_bits_per_sample(const FLAC__FileDecoder *decoder)
|
unsigned FLAC__file_decoder_get_bits_per_sample(const FLAC__FileDecoder *decoder)
|
||||||
{
|
{
|
||||||
FLAC__ASSERT(0 != decoder);
|
FLAC__ASSERT(0 != decoder);
|
||||||
FLAC__ASSERT(0 != decoder->private_);
|
FLAC__ASSERT(0 != decoder->private_);
|
||||||
return FLAC__seekable_stream_decoder_get_bits_per_sample(decoder->private_->seekable_stream_decoder);
|
return FLAC__seekable_stream_decoder_get_bits_per_sample(decoder->private_->seekable_stream_decoder);
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned FLAC__file_decoder_get_sample_rate(const FLAC__FileDecoder *decoder)
|
unsigned FLAC__file_decoder_get_sample_rate(const FLAC__FileDecoder *decoder)
|
||||||
{
|
{
|
||||||
FLAC__ASSERT(0 != decoder);
|
FLAC__ASSERT(0 != decoder);
|
||||||
FLAC__ASSERT(0 != decoder->private_);
|
FLAC__ASSERT(0 != decoder->private_);
|
||||||
return FLAC__seekable_stream_decoder_get_sample_rate(decoder->private_->seekable_stream_decoder);
|
return FLAC__seekable_stream_decoder_get_sample_rate(decoder->private_->seekable_stream_decoder);
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned FLAC__file_decoder_get_blocksize(const FLAC__FileDecoder *decoder)
|
unsigned FLAC__file_decoder_get_blocksize(const FLAC__FileDecoder *decoder)
|
||||||
{
|
{
|
||||||
FLAC__ASSERT(0 != decoder);
|
FLAC__ASSERT(0 != decoder);
|
||||||
FLAC__ASSERT(0 != decoder->private_);
|
FLAC__ASSERT(0 != decoder->private_);
|
||||||
return FLAC__seekable_stream_decoder_get_blocksize(decoder->private_->seekable_stream_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_whole_file(FLAC__FileDecoder *decoder)
|
||||||
@ -504,6 +518,7 @@ FLAC__bool FLAC__file_decoder_seek_absolute(FLAC__FileDecoder *decoder, FLAC__ui
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
*
|
*
|
||||||
* Private class methods
|
* Private class methods
|
||||||
@ -512,6 +527,9 @@ FLAC__bool FLAC__file_decoder_seek_absolute(FLAC__FileDecoder *decoder, FLAC__ui
|
|||||||
|
|
||||||
void set_defaults_(FLAC__FileDecoder *decoder)
|
void set_defaults_(FLAC__FileDecoder *decoder)
|
||||||
{
|
{
|
||||||
|
FLAC__ASSERT(0 != decoder);
|
||||||
|
FLAC__ASSERT(0 != decoder->private_);
|
||||||
|
|
||||||
decoder->private_->filename = 0;
|
decoder->private_->filename = 0;
|
||||||
decoder->private_->write_callback = 0;
|
decoder->private_->write_callback = 0;
|
||||||
decoder->private_->metadata_callback = 0;
|
decoder->private_->metadata_callback = 0;
|
||||||
|
@ -83,9 +83,9 @@ const char * const FLAC__SeekableStreamDecoderStateString[] = {
|
|||||||
"FLAC__SEEKABLE_STREAM_DECODER_STREAM_DECODER_ERROR",
|
"FLAC__SEEKABLE_STREAM_DECODER_STREAM_DECODER_ERROR",
|
||||||
"FLAC__SEEKABLE_STREAM_DECODER_READ_ERROR",
|
"FLAC__SEEKABLE_STREAM_DECODER_READ_ERROR",
|
||||||
"FLAC__SEEKABLE_STREAM_DECODER_SEEK_ERROR",
|
"FLAC__SEEKABLE_STREAM_DECODER_SEEK_ERROR",
|
||||||
"FLAC__SEEKABLE_STREAM_DECODER_ALREADY_INITIALIZED",
|
"FLAC__SEEKABLE_STREAM_DECODER_ALREADY_INITIALIZED",
|
||||||
"FLAC__SEEKABLE_STREAM_DECODER_INVALID_CALLBACK",
|
"FLAC__SEEKABLE_STREAM_DECODER_INVALID_CALLBACK",
|
||||||
"FLAC__SEEKABLE_STREAM_DECODER_UNINITIALIZED"
|
"FLAC__SEEKABLE_STREAM_DECODER_UNINITIALIZED"
|
||||||
};
|
};
|
||||||
|
|
||||||
const char * const FLAC__SeekableStreamDecoderReadStatusString[] = {
|
const char * const FLAC__SeekableStreamDecoderReadStatusString[] = {
|
||||||
@ -108,6 +108,7 @@ const char * const FLAC__SeekableStreamDecoderLengthStatusString[] = {
|
|||||||
"FLAC__SEEKABLE_STREAM_DECODER_LENGTH_STATUS_ERROR"
|
"FLAC__SEEKABLE_STREAM_DECODER_LENGTH_STATUS_ERROR"
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
*
|
*
|
||||||
* Class constructor/destructor
|
* Class constructor/destructor
|
||||||
@ -444,6 +445,13 @@ FLAC__SeekableStreamDecoderState FLAC__seekable_stream_decoder_get_state(const F
|
|||||||
return decoder->protected_->state;
|
return decoder->protected_->state;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FLAC__SeekableStreamDecoderState FLAC__seekable_stream_decoder_get_stream_decoder_state(const FLAC__SeekableStreamDecoder *decoder)
|
||||||
|
{
|
||||||
|
FLAC__ASSERT(0 != decoder);
|
||||||
|
FLAC__ASSERT(0 != decoder->private_);
|
||||||
|
return FLAC__stream_decoder_get_state(decoder->private_->stream_decoder);
|
||||||
|
}
|
||||||
|
|
||||||
FLAC__bool FLAC__seekable_stream_decoder_get_md5_checking(const FLAC__SeekableStreamDecoder *decoder)
|
FLAC__bool FLAC__seekable_stream_decoder_get_md5_checking(const FLAC__SeekableStreamDecoder *decoder)
|
||||||
{
|
{
|
||||||
FLAC__ASSERT(0 != decoder);
|
FLAC__ASSERT(0 != decoder);
|
||||||
@ -453,37 +461,37 @@ FLAC__bool FLAC__seekable_stream_decoder_get_md5_checking(const FLAC__SeekableSt
|
|||||||
|
|
||||||
unsigned FLAC__seekable_stream_decoder_get_channels(const FLAC__SeekableStreamDecoder *decoder)
|
unsigned FLAC__seekable_stream_decoder_get_channels(const FLAC__SeekableStreamDecoder *decoder)
|
||||||
{
|
{
|
||||||
FLAC__ASSERT(0 != decoder);
|
FLAC__ASSERT(0 != decoder);
|
||||||
FLAC__ASSERT(0 != decoder->private_);
|
FLAC__ASSERT(0 != decoder->private_);
|
||||||
return FLAC__stream_decoder_get_channels(decoder->private_->stream_decoder);
|
return FLAC__stream_decoder_get_channels(decoder->private_->stream_decoder);
|
||||||
}
|
}
|
||||||
|
|
||||||
FLAC__ChannelAssignment FLAC__seekable_stream_decoder_get_channel_assignment(const FLAC__SeekableStreamDecoder *decoder)
|
FLAC__ChannelAssignment FLAC__seekable_stream_decoder_get_channel_assignment(const FLAC__SeekableStreamDecoder *decoder)
|
||||||
{
|
{
|
||||||
FLAC__ASSERT(0 != decoder);
|
FLAC__ASSERT(0 != decoder);
|
||||||
FLAC__ASSERT(0 != decoder->private_);
|
FLAC__ASSERT(0 != decoder->private_);
|
||||||
return FLAC__stream_decoder_get_channel_assignment(decoder->private_->stream_decoder);
|
return FLAC__stream_decoder_get_channel_assignment(decoder->private_->stream_decoder);
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned FLAC__seekable_stream_decoder_get_bits_per_sample(const FLAC__SeekableStreamDecoder *decoder)
|
unsigned FLAC__seekable_stream_decoder_get_bits_per_sample(const FLAC__SeekableStreamDecoder *decoder)
|
||||||
{
|
{
|
||||||
FLAC__ASSERT(0 != decoder);
|
FLAC__ASSERT(0 != decoder);
|
||||||
FLAC__ASSERT(0 != decoder->private_);
|
FLAC__ASSERT(0 != decoder->private_);
|
||||||
return FLAC__stream_decoder_get_bits_per_sample(decoder->private_->stream_decoder);
|
return FLAC__stream_decoder_get_bits_per_sample(decoder->private_->stream_decoder);
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned FLAC__seekable_stream_decoder_get_sample_rate(const FLAC__SeekableStreamDecoder *decoder)
|
unsigned FLAC__seekable_stream_decoder_get_sample_rate(const FLAC__SeekableStreamDecoder *decoder)
|
||||||
{
|
{
|
||||||
FLAC__ASSERT(0 != decoder);
|
FLAC__ASSERT(0 != decoder);
|
||||||
FLAC__ASSERT(0 != decoder->private_);
|
FLAC__ASSERT(0 != decoder->private_);
|
||||||
return FLAC__stream_decoder_get_sample_rate(decoder->private_->stream_decoder);
|
return FLAC__stream_decoder_get_sample_rate(decoder->private_->stream_decoder);
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned FLAC__seekable_stream_decoder_get_blocksize(const FLAC__SeekableStreamDecoder *decoder)
|
unsigned FLAC__seekable_stream_decoder_get_blocksize(const FLAC__SeekableStreamDecoder *decoder)
|
||||||
{
|
{
|
||||||
FLAC__ASSERT(0 != decoder);
|
FLAC__ASSERT(0 != decoder);
|
||||||
FLAC__ASSERT(0 != decoder->private_);
|
FLAC__ASSERT(0 != decoder->private_);
|
||||||
return FLAC__stream_decoder_get_blocksize(decoder->private_->stream_decoder);
|
return FLAC__stream_decoder_get_blocksize(decoder->private_->stream_decoder);
|
||||||
}
|
}
|
||||||
|
|
||||||
FLAC__bool FLAC__seekable_stream_decoder_flush(FLAC__SeekableStreamDecoder *decoder)
|
FLAC__bool FLAC__seekable_stream_decoder_flush(FLAC__SeekableStreamDecoder *decoder)
|
||||||
|
@ -996,6 +996,7 @@ static FLAC__bool test_seekable_stream_decoder()
|
|||||||
{
|
{
|
||||||
FLAC__SeekableStreamDecoder *decoder;
|
FLAC__SeekableStreamDecoder *decoder;
|
||||||
FLAC__SeekableStreamDecoderState state;
|
FLAC__SeekableStreamDecoderState state;
|
||||||
|
FLAC__StreamDecoderState sstate;
|
||||||
seekable_stream_decoder_client_data_struct decoder_client_data;
|
seekable_stream_decoder_client_data_struct decoder_client_data;
|
||||||
|
|
||||||
printf("\n+++ libFLAC unit test: FLAC__SeekableStreamDecoder\n\n");
|
printf("\n+++ libFLAC unit test: FLAC__SeekableStreamDecoder\n\n");
|
||||||
@ -1099,6 +1100,10 @@ static FLAC__bool test_seekable_stream_decoder()
|
|||||||
state = FLAC__seekable_stream_decoder_get_state(decoder);
|
state = FLAC__seekable_stream_decoder_get_state(decoder);
|
||||||
printf("returned state = %u (%s)... OK\n", state, FLAC__SeekableStreamDecoderStateString[state]);
|
printf("returned state = %u (%s)... OK\n", state, FLAC__SeekableStreamDecoderStateString[state]);
|
||||||
|
|
||||||
|
printf("testing FLAC__seekable_stream_decoder_get_stream_decoder_state()... ");
|
||||||
|
sstate = FLAC__seekable_stream_decoder_get_stream_decoder_state(decoder);
|
||||||
|
printf("returned state = %u (%s)... OK\n", sstate, FLAC__StreamDecoderStateString[sstate]);
|
||||||
|
|
||||||
decoder_client_data.current_metadata_number = 0;
|
decoder_client_data.current_metadata_number = 0;
|
||||||
decoder_client_data.ignore_errors = false;
|
decoder_client_data.ignore_errors = false;
|
||||||
decoder_client_data.error_occurred = false;
|
decoder_client_data.error_occurred = false;
|
||||||
@ -1571,6 +1576,8 @@ static FLAC__bool test_file_decoder()
|
|||||||
{
|
{
|
||||||
FLAC__FileDecoder *decoder;
|
FLAC__FileDecoder *decoder;
|
||||||
FLAC__FileDecoderState state;
|
FLAC__FileDecoderState state;
|
||||||
|
FLAC__SeekableStreamDecoderState ssstate;
|
||||||
|
FLAC__StreamDecoderState sstate;
|
||||||
seekable_stream_decoder_client_data_struct decoder_client_data;
|
seekable_stream_decoder_client_data_struct decoder_client_data;
|
||||||
|
|
||||||
printf("\n+++ libFLAC unit test: FLAC__FileDecoder\n\n");
|
printf("\n+++ libFLAC unit test: FLAC__FileDecoder\n\n");
|
||||||
@ -1654,6 +1661,14 @@ static FLAC__bool test_file_decoder()
|
|||||||
state = FLAC__file_decoder_get_state(decoder);
|
state = FLAC__file_decoder_get_state(decoder);
|
||||||
printf("returned state = %u (%s)... OK\n", state, FLAC__FileDecoderStateString[state]);
|
printf("returned state = %u (%s)... OK\n", state, FLAC__FileDecoderStateString[state]);
|
||||||
|
|
||||||
|
printf("testing FLAC__file_decoder_get_seekable_stream_decoder_state()... ");
|
||||||
|
ssstate = FLAC__file_decoder_get_seekable_stream_decoder_state(decoder);
|
||||||
|
printf("returned state = %u (%s)... OK\n", ssstate, FLAC__SeekableStreamDecoderStateString[ssstate]);
|
||||||
|
|
||||||
|
printf("testing FLAC__file_decoder_get_stream_decoder_state()... ");
|
||||||
|
sstate = FLAC__file_decoder_get_stream_decoder_state(decoder);
|
||||||
|
printf("returned state = %u (%s)... OK\n", sstate, FLAC__StreamDecoderStateString[sstate]);
|
||||||
|
|
||||||
decoder_client_data.current_metadata_number = 0;
|
decoder_client_data.current_metadata_number = 0;
|
||||||
decoder_client_data.ignore_errors = false;
|
decoder_client_data.ignore_errors = false;
|
||||||
decoder_client_data.error_occurred = false;
|
decoder_client_data.error_occurred = false;
|
||||||
|
Loading…
Reference in New Issue
Block a user