Main Page   Modules   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members  

FLAC/stream_decoder.h: stream decoder interface
[FLAC/_decoder.h: decoder interfaces]

This module contains the functions which implement the stream decoder. More...

Compounds

struct  FLAC__StreamDecoder

Typedefs

typedef FLAC__StreamDecoderReadStatus(* FLAC__StreamDecoderReadCallback )(const FLAC__StreamDecoder *decoder, FLAC__byte buffer[], unsigned *bytes, void *client_data)
typedef FLAC__StreamDecoderWriteStatus(* FLAC__StreamDecoderWriteCallback )(const FLAC__StreamDecoder *decoder, const FLAC__Frame *frame, const FLAC__int32 *const buffer[], void *client_data)
typedef void(* FLAC__StreamDecoderMetadataCallback )(const FLAC__StreamDecoder *decoder, const FLAC__StreamMetadata *metadata, void *client_data)
typedef void(* FLAC__StreamDecoderErrorCallback )(const FLAC__StreamDecoder *decoder, FLAC__StreamDecoderErrorStatus status, void *client_data)

Enumerations

enum  FLAC__StreamDecoderState {
  FLAC__STREAM_DECODER_SEARCH_FOR_METADATA = 0, FLAC__STREAM_DECODER_READ_METADATA, FLAC__STREAM_DECODER_SEARCH_FOR_FRAME_SYNC, FLAC__STREAM_DECODER_READ_FRAME,
  FLAC__STREAM_DECODER_END_OF_STREAM, FLAC__STREAM_DECODER_ABORTED, FLAC__STREAM_DECODER_UNPARSEABLE_STREAM, FLAC__STREAM_DECODER_MEMORY_ALLOCATION_ERROR,
  FLAC__STREAM_DECODER_ALREADY_INITIALIZED, FLAC__STREAM_DECODER_INVALID_CALLBACK, FLAC__STREAM_DECODER_UNINITIALIZED
}
enum  FLAC__StreamDecoderReadStatus { FLAC__STREAM_DECODER_READ_STATUS_CONTINUE, FLAC__STREAM_DECODER_READ_STATUS_END_OF_STREAM, FLAC__STREAM_DECODER_READ_STATUS_ABORT }
enum  FLAC__StreamDecoderWriteStatus { FLAC__STREAM_DECODER_WRITE_STATUS_CONTINUE, FLAC__STREAM_DECODER_WRITE_STATUS_ABORT }
enum  FLAC__StreamDecoderErrorStatus { FLAC__STREAM_DECODER_ERROR_STATUS_LOST_SYNC, FLAC__STREAM_DECODER_ERROR_STATUS_BAD_HEADER, FLAC__STREAM_DECODER_ERROR_STATUS_FRAME_CRC_MISMATCH }

Functions

FLAC__StreamDecoderFLAC__stream_decoder_new ()
void FLAC__stream_decoder_delete (FLAC__StreamDecoder *decoder)
FLAC__bool FLAC__stream_decoder_set_read_callback (FLAC__StreamDecoder *decoder, FLAC__StreamDecoderReadCallback value)
FLAC__bool FLAC__stream_decoder_set_write_callback (FLAC__StreamDecoder *decoder, FLAC__StreamDecoderWriteCallback value)
FLAC__bool FLAC__stream_decoder_set_metadata_callback (FLAC__StreamDecoder *decoder, FLAC__StreamDecoderMetadataCallback value)
FLAC__bool FLAC__stream_decoder_set_error_callback (FLAC__StreamDecoder *decoder, FLAC__StreamDecoderErrorCallback value)
FLAC__bool FLAC__stream_decoder_set_client_data (FLAC__StreamDecoder *decoder, void *value)
FLAC__bool FLAC__stream_decoder_set_metadata_respond (FLAC__StreamDecoder *decoder, FLAC__MetadataType type)
FLAC__bool FLAC__stream_decoder_set_metadata_respond_application (FLAC__StreamDecoder *decoder, const FLAC__byte id[4])
FLAC__bool FLAC__stream_decoder_set_metadata_respond_all (FLAC__StreamDecoder *decoder)
FLAC__bool FLAC__stream_decoder_set_metadata_ignore (FLAC__StreamDecoder *decoder, FLAC__MetadataType type)
FLAC__bool FLAC__stream_decoder_set_metadata_ignore_application (FLAC__StreamDecoder *decoder, const FLAC__byte id[4])
FLAC__bool FLAC__stream_decoder_set_metadata_ignore_all (FLAC__StreamDecoder *decoder)
FLAC__StreamDecoderState FLAC__stream_decoder_get_state (const FLAC__StreamDecoder *decoder)
const char * FLAC__stream_decoder_get_resolved_state_string (const FLAC__StreamDecoder *decoder)
unsigned FLAC__stream_decoder_get_channels (const FLAC__StreamDecoder *decoder)
FLAC__ChannelAssignment FLAC__stream_decoder_get_channel_assignment (const FLAC__StreamDecoder *decoder)
unsigned FLAC__stream_decoder_get_bits_per_sample (const FLAC__StreamDecoder *decoder)
unsigned FLAC__stream_decoder_get_sample_rate (const FLAC__StreamDecoder *decoder)
unsigned FLAC__stream_decoder_get_blocksize (const FLAC__StreamDecoder *decoder)
FLAC__StreamDecoderState FLAC__stream_decoder_init (FLAC__StreamDecoder *decoder)
void FLAC__stream_decoder_finish (FLAC__StreamDecoder *decoder)
FLAC__bool FLAC__stream_decoder_flush (FLAC__StreamDecoder *decoder)
FLAC__bool FLAC__stream_decoder_reset (FLAC__StreamDecoder *decoder)
FLAC__bool FLAC__stream_decoder_process_single (FLAC__StreamDecoder *decoder)
FLAC__bool FLAC__stream_decoder_process_until_end_of_metadata (FLAC__StreamDecoder *decoder)
FLAC__bool FLAC__stream_decoder_process_until_end_of_stream (FLAC__StreamDecoder *decoder)
FLAC__bool FLAC__stream_decoder_skip_single_frame (FLAC__StreamDecoder *decoder)

Variables

const char *const FLAC__StreamDecoderStateString []
const char *const FLAC__StreamDecoderReadStatusString []
const char *const FLAC__StreamDecoderWriteStatusString []
const char *const FLAC__StreamDecoderErrorStatusString []

Detailed Description

This module contains the functions which implement the stream decoder.

The basic usage of this decoder is as follows:

In more detail, the program will create a new instance by calling FLAC__stream_decoder_new(), then call FLAC__stream_decoder_set_*() functions to set the callbacks and client data, and call FLAC__stream_decoder_init(). The required callbacks are:

Once the decoder is initialized, your program will call one of several functions to start the decoding process:

When the decoder has finished decoding (normally or through an abort), the instance is finished by calling FLAC__stream_decoder_finish(), which ensures the decoder is in the correct state and frees memory. Then the instance may be deleted with FLAC__stream_decoder_delete() or initialized again to decode another stream.

Note that the stream decoder has no real concept of stream position, it just converts data. To seek within a stream the callbacks have only to flush the decoder using FLAC__stream_decoder_flush() and start feeding data from the new position through the read callback. The seekable stream decoder does just this.

The FLAC__stream_decoder_set_metadata_*() functions deserve special attention. By default, the decoder only calls the metadata_callback for the STREAMINFO block. These functions allow you to tell the decoder explicitly which blocks to parse and return via the metadata_callback and/or which to skip. Use a FLAC__stream_decoder_set_metadata_respond_all(), FLAC__stream_decoder_set_metadata_ignore() ... or FLAC__stream_decoder_set_metadata_ignore_all(), FLAC__stream_decoder_set_metadata_respond() ... sequence to exactly specify which blocks to return. Remember that some metadata blocks can be big so filtering out the ones you don't use can reduce the memory requirements of the decoder. Also note the special forms FLAC__stream_decoder_set_metadata_respond_application(id) and FLAC__stream_decoder_set_metadata_ignore_application(id) for filtering APPLICATION blocks based on the application ID.

STREAMINFO and SEEKTABLE blocks are always parsed and used internally, but they still can legally be filtered from the metadata_callback.

Note:
The "set" functions may only be called when the decoder is in the state FLAC__STREAM_DECODER_UNINITIALIZED, i.e. after FLAC__stream_decoder_new() or FLAC__stream_decoder_finish(), but ly calls the metadata_callback for the STREAMINFO block. These functions allow you to tell the decoder explicitly which blocks to parse and return via the metadata_callback and/or which to skip. Use a FLAC__stream_decoder_set_metadata_respond_all(), FLAC__stream_decoder_set_metadata_ignore() ... or FLAC__stream_decoder_set_metadata_ignore_all(), FLAC__stream_decoder_set_metadata_respond() ... sequence to exactly specify which blocks to return. Remember that some metadata blocks can be big so filtering out the ones you don't use can reduce the memory requirements of the decoder. Also note the special forms FLAC__stream_decoder_set_metadata_respond_application(id) and FLAC__stream_decoder_set_metadata_ignore_application(id) for filtering APPLICATION blocks based on the application ID.

STREAMINFO and SEEKTABLE blocks are always parsed and used internally, but they still can legally be filtered from the metadata_callback.

Note:
The "set" functions may only be called when the decoder is in the state FLAC__STREAM_DECODER_UNINITIALIZED, i.e. after FLAC__stream_decoder_new() or FLAC__stream_decoder_finish(), but ly calls the metadata_callback for the STREAMINFO block. These functions allow you to tell the decoder explicitly which blocks to parse and return via the metadata_callback and/or which to skip. Use a FLAC__stream_decoder_set_metadata_respond_all(), FLAC__stream_decoder_set_metadata_ignore() ... or FLAC__stream_decoder_set_metadata_ignore_all(), FLAC__stream_decoder_set_metadata_respond() ... sequence to exactly specify which blocks to return. Remember that some metadata blocks can be big so filtering out the ones you don't use can reduce the memory requirements of the decoder. Also note the special forms FLAC__stream_decoder_set_metadata_respond_application(id) and FLAC__stream_decoder_set_metadata_ignore_application(id) for filtering APPLICATION blocks based on the application ID.

STREAMINFO and SEEKTABLE blocks are always parsed and used internally, but they still can legally be filtered from the metadata_callback.

Note:
The "set" functions may only be called when the decoder is in the state FLAC__STREAM_DECODER_UNINITIALIZED, i.e. after FLAC__stream_decoder_new() or FLAC__stream_decoder_finish(), but ly calls the metadata_callback for the STREAMINFO block. These functions allow you to tell the decoder explicitly which blocks to parse and return via the metadata_callback and/or which to skip. Use a FLAC__stream_decoder_set_metadata_respond_all(), FLAC__stream_decoder_set_metadata_ignore() ... or FLAC__stream_decoder_set_metadata_ignore_all(), FLAC__stream_decoder_set_metadata_respond() ... sequence to exactly specify which blocks to return. Remember that some metadata blocks can be big so filtering out the ones you don't use can reduce the memory requirements of the decoder. Also note the special forms FLAC__stream_decoder_set_metadata_respond_application(id) and FLAC__stream_decoder_set_metadata_ignore_application(id) for filtering APPLICATION blocks based on the application ID.

STREAMINFO and SEEKTABLE blocks are always parsed and used internally, but they still can legally be filtered from the metadata_callback.

Note:
The "set" functions may only be called when the decoder is in the state FLAC__STREAM_DECODER_UNINITIALIZED, i.e. after FLAC__stream_decoder_new() or FLAC__stream_decoder_finish(), but ly calls the metadata_callback for the STREAMINFO block. These functions allow you to tell the decoder explicitly which blocks to parse and return via the metadata_callback and/or which to skip. Use a FLAC__stream_decoder_set_metadata_respond_all(), FLAC__stream_decoder_set_metadata_ignore() ... or FLAC__stream_decoder_set_metadata_ignore_all(), FLAC__stream_decoder_set_metadata_respond() ... sequence to exactly specify which blocks to return. Remember that some metadata blocks can be big so filtering out the ones you don't use can reduce the memory requirements of the decoder. Also note the special forms FLAC__stream_decoder_set_metadata_respond_application(id) and FLAC__stream_decoder_set_metadata_ignore_application(id) for filtering APPLICATION blocks based on the application ID.

STREAMINFO and SEEKTABLE blocks are always parsed and used internally, but they still can legally be filtered from the metadata_callback.

Note:
The "set" functions may only be called when the decoder is in the state FLAC__STREAM_DECODER_UNINITIALIZED, i.e. after FLAC__stream_decoder_new() or FLAC__stream_decoder_finish(), but ly calls the metadata_callback for the STREAMINFO block. These functions allow you to tell the decoder explicitly which blocks to parse and return via the metadata_callback and/or which to skip. Use a FLAC__stream_decoder_set_metadata_respond_all(), FLAC__stream_decoder_set_metadata_ignore() ... or FLAC__stream_decoder_set_metadata_ignore_all(), FLAC__stream_decoder_set_metadata_respond() ... sequence to exactly specify which blocks to return. Remember that some metadata blocks can be big so filtering out the ones you don't use can reduce the memory requirements of the decoder. Also note the special forms FLAC__stream_decoder_set_metadata_respond_application(id) and FLAC__stream_decoder_set_metadata_ignore_application(id) for filtering APPLICATION blocks based on the application ID.

STREAMINFO and SEEKTABLE blocks are always parsed and used internally, but they still can legally be filtered from the metadata_callback.

Note:
The "set" functions may only be called when the decoder is in the state FLAC__STREAM_DECODER_UNINITIALIZED, i.e. after FLAC__stream_decoder_new() or FLAC__stream_decoder_finish(), but ly calls the metadata_callback for the STREAMINFO block. These functions allow you to tell the decoder explicitly which blocks to parse and return via the metadata_callback and/or which to skip. Use a FLAC__stream_decoder_set_metadata_respond_all(), FLAC__stream_decoder_set_metadata_ignore() ... or FLAC__stream_decoder_set_metadata_ignore_all(), FLAC__stream_decoder_set_metadata_respond() ... sequence to exactly specify which blocks to return. Remember that some metadata blocks can be big so filtering out the ones you don't use can reduce the memory requirements of the decoder. Also note the special forms FLAC__stream_decoder_set_metadata_respond_application(id) and FLAC__stream_decoder_set_metadata_ignore_application(id) for filtering APPLICATION blocks based on the application ID.

STREAMINFO and SEEKTABLE blocks are always parsed and used internally, but they still can legally be filtered from the metadata_callback.

Note:
The "set" functions may only be called when the decoder is in the state FLAC__STREAM_DECODER_UNINITIALIZED, i.e. after FLAC__stream_decoder_new() or FLAC__stream_decoder_finish(), but ly calls the metadata_callback for the STREAMINFO block. These functions allow you to tell the decoder explicitly which blocks to parse and return via the metadata_callback and/or which to skip. Use a FLAC__stream_decoder_set_metadata_respond_all(), FLAC__stream_decoder_set_metadata_ignore() ... or FLAC__stream_decoder_set_metadata_ignore_all(), FLAC__stream_decoder_set_metadata_respond() ... sequence to exactly specify which blocks to return. Remember that some metadata blocks can be big so filtering out the ones you don't use can reduce the memory requirements of the decoder. Also note the special forms FLAC__stream_decoder_set_metadata_respond_application(id) and FLAC__stream_decoder_set_metadata_ignore_application(id) for filtering APPLICATION blocks based on the application ID.

STREAMINFO and SEEKTABLE blocks are always parsed and used internally, but they still can legally be filtered from the metadata_callback.

Note:
The "set" functions may only be called when the decoder is in the state FLAC__STREAM_DECODER_UNINITIALIZED, i.e. after FLAC__stream_decoder_new() or FLAC__stream_decoder_finish(), but ly calls the metadata_callback for the STREAMINFO block. These functions allow you to tell the decoder explicitly which blocks to parse and return via the metadata_callback and/or which to skip. Use a FLAC__stream_decoder_set_metadata_respond_all(), FLAC__stream_decoder_set_metadata_ignore() ... or FLAC__stream_decoder_set_metadata_ignore_all(), FLAC__stream_decoder_set_metadata_respond() ... sequence to exactly specify which blocks to return. Remember that some metadata blocks can be big so filtering out the ones you don't use can reduce the memory requirements of the decoder. Also note the special forms FLAC__stream_decoder_set_metadata_respond_application(id) and FLAC__stream_decoder_set_metadata_ignore_application(id) for filtering APPLICATION blocks based on the application ID.

STREAMINFO and SEEKTABLE blocks are always parsed and used internally, but they still can legally be filtered from the metadata_callback.

Note:
The "set" functions may only be called when the decoder is in the state FLAC__STREAM_DECODER_UNINITIALIZED, i.e. after FLAC__stream_decoder_new() or FLAC__stream_decoder_finish(), but ly calls the metadata_callback for the STREAMINFO block. These functions allow you to tell the decoder explicitly which blocks to parse and return via the metadata_callback and/or which to skip. Use a FLAC__stream_decoder_set_metadata_respond_all(), FLAC__stream_decoder_set_metadata_ignore() ... or FLAC__stream_decoder_set_metadata_ignore_all(), FLAC__stream_decoder_set_metadata_respond() ... sequence to exactly specify which blocks to return. Remember that some metadata blocks can be big so filtering out the ones you don't use can reduce the memory requirements of the decoder. Also note the special forms FLAC__stream_decoder_set_metadata_respond_application(id) and FLAC__stream_decoder_set_metadata_ignore_application(id) for filtering APPLICATION blocks based on the application ID.

STREAMINFO and SEEKTABLE blocks are always parsed and used internally, but they still can legally be filtered from the metadata_callback.

Note:
The "set" functions may only be called when the decoder is in the state FLAC__STREAM_DECODER_UNINITIALIZED, i.e. after FLAC__stream_decoder_new() or FLAC__stream_decoder_finish(), but ly calls the metadata_callback for the STREAMINFO block. These functions allow you to tell the decoder explicitly which blocks to parse and return via the metadata_callback and/or which to skip. Use a FLAC__stream_decoder_set_metadata_respond_all(), FLAC__stream_decoder_set_metadata_ignore() ... or FLAC__stream_decoder_set_metadata_ignore_all(), FLAC__stream_decoder_set_metadata_respond() ... sequence to exactly specify which blocks to return. Remember that some metadata blocks can be big so filtering out the ones you don't use can reduce the memory requirements of the decoder. Also note the special forms FLAC__stream_decoder_set_metadata_respond_application(id) and FLAC__stream_decoder_set_metadata_ignore_application(id) for filtering APPLICATION blocks based on the application ID.

STREAMINFO and SEEKTABLE blocks are always parsed and used internally, but they still can legally be filtered from the metadata_callback.

Note:
The "set" functions may only be called when the decoder is in the state FLAC__STREAM_DECODER_UNINITIALIZED, i.e. after FLAC__stream_decoder_new() or FLAC__stream_decoder_finish(), but ly calls the metadata_callback for the STREAMINFO block. These functions allow you to tell the decoder explicitly which blocks to parse and return via the metadata_callback and/or which to skip. Use a FLAC__stream_decoder_set_metadata_respond_all(), FLAC__stream_decoder_set_metadata_ignore() ... or FLAC__stream_decoder_set_metadata_ignore_all(), FLAC__stream_decoder_set_metadata_respond() ... sequence to exactly specify which blocks to return. Remember that some metadata blocks can be big so filtering out the ones you don't use can reduce the memory requirements of the decoder. Also note the special forms FLAC__stream_decoder_set_metadata_respond_application(id) and FLAC__stream_decoder_set_metadata_ignore_application(id) for filtering APPLICATION blocks based on the application ID.

STREAMINFO and SEEKTABLE blocks are always parsed and used internally, but they still can legally be filtered from the metadata_callback.

Note:
The "set" functions may only be called when the decoder is in the state FLAC__STREAM_DECODER_UNINITIALIZED, i.e. after FLAC__stream_decoder_new() or FLAC__stream_decoder_finish(), but ly calls the metadata_callback for the STREAMINFO block. These functions allow you to tell the decoder explicitly which blocks to parse and return via the metadata_callback and/or which to skip. Use a FLAC__stream_decoder_set_metadata_respond_all(), FLAC__stream_decoder_set_metadata_ignore() ... or FLAC__stream_decoder_set_metadata_ignore_all(), FLAC__stream_decoder_set_metadata_respond() ... sequence to exactly specify which blocks to return. Remember that some metadata blocks can be big so filtering out the ones you don't use can reduce the memory requirements of the decoder. Also note the special forms FLAC__stream_decoder_set_metadata_respond_application(id) and FLAC__stream_decoder_set_metadata_ignore_application(id) for filtering APPLICATION blocks based on the application ID.

STREAMINFO and SEEKTABLE blocks are always parsed and used internally, but they still can legally be filtered from the metadata_callback.

Note:
The "set" functions may only be called when the decoder is in the state FLAC__STREAM_DECODER_UNINITIALIZED, i.e. after FLAC__stream_decoder_new() or FLAC__stream_decoder_finish(), but ly calls the metadata_callback for the STREAMINFO block. These functions allow you to tell the decoder explicitly which blocks to parse and return via the metadata_callback and/or which to skip. Use a FLAC__stream_decoder_set_metadata_respond_all(), FLAC__stream_decoder_set_metadata_ignore() ... or FLAC__stream_decoder_set_metadata_ignore_all(), FLAC__stream_decoder_set_metadata_respond() ... sequence to exactly specify which blocks to return. Remember that some metadata blocks can be big so filtering out the ones you don't use can reduce the memory requirements of the decoder. Also note the special forms FLAC__stream_decoder_set_metadata_respond_application(id) and FLAC__stream_decoder_set_metadata_ignore_application(id) for filtering APPLICATION blocks based on the application ID.

STREAMINFO and SEEKTABLE blocks are always parsed and used internally, but they still can legally be filtered from the metadata_callback.

Note:
The "set" functions may only be called when the decoder is in the state FLAC__STREAM_DECODER_UNINITIALIZED, i.e. after FLAC__stream_decoder_new() or FLAC__stream_decoder_finish(), but ly calls the metadata_callback for the STREAMINFO block. These functions allow you to tell the decoder explicitly which blocks to parse and return via the metadata_callback and/or which to skip. Use a FLAC__stream_decoder_set_metadata_respond_all(), FLAC__stream_decoder_set_metadata_ignore() ... or FLAC__stream_decoder_set_metadata_ignore_all(), FLAC__stream_decoder_set_metadata_respond() ... sequence to exactly specify which blocks to return. Remember that some metadata blocks can be big so filtering out the ones you don't use can reduce the memory requirements of the decoder. Also note the special forms FLAC__stream_decoder_set_metadata_respond_application(id) and FLAC__stream_decoder_set_metadata_ignore_application(id) for filtering APPLICATION blocks based on the application ID.

STREAMINFO and SEEKTABLE blocks are always parsed and used internally, but they still can legally be filtered from the metadata_callback.

Note:
The "set" functions may only be called when the decoder is in the state FLAC__STREAM_DECODER_UNINITIALIZED, i.e. after FLAC__stream_decoder_new() or FLAC__stream_decoder_finish(), but ly calls the metadata_callback for the STREAMINFO block. These functions allow you to tell the decoder explicitly which blocks to parse and return via the metadata_callback and/or which to skip. Use a FLAC__stream_decoder_set_metadata_respond_all(), FLAC__stream_decoder_set_metadata_ignore() ... or FLAC__stream_decoder_set_metadata_ignore_all(), FLAC__stream_decoder_set_metadata_respond() ... sequence to exactly specify which blocks to return. Remember that some metadata blocks can be big so filtering out the ones you don't use can reduce the memory requirements of the decoder. Also note the special forms FLAC__stream_decoder_set_metadata_respond_application(id) and FLAC__stream_decoder_set_metadata_ignore_application(id) for filtering APPLICATION blocks based on the application ID.

STREAMINFO and SEEKTABLE blocks are always parsed and used internally, but they still can legally be filtered from the metadata_callback.

Note:
The "set" functions may only be called when the decoder is in the state FLAC__STREAM_DECODER_UNINITIALIZED, i.e. after FLAC__stream_decoder_new() or FLAC__stream_decoder_finish(), but ly calls the metadata_callback for the STREAMINFO block. These functions allow you to tell the decoder explicitly which blocks to parse and return via the metadata_callback and/or which to skip. Use a FLAC__stream_decoder_set_metadata_respond_all(), FLAC__stream_decoder_set_metadata_ignore() ... or FLAC__stream_decoder_set_metadata_ignore_all(), FLAC__stream_decoder_set_metadata_respond() ... sequence to exactly specify which blocks to return. Remember that some metadata blocks can be big so filtering out the ones you don't use can reduce the memory requirements of the decoder. Also note the special forms FLAC__stream_decoder_set_metadata_respond_application(id) and FLAC__stream_decoder_set_metadata_ignore_application(id) for filtering APPLICATION blocks based on the application ID.

STREAMINFO and SEEKTABLE blocks are always parsed and used internally, but they still can legally be filtered from the metadata_callback.

Note:
The "set" functions may only be called when the decoder is in the state FLAC__STREAM_DECODER_UNINITIALIZED, i.e. after FLAC__stream_decoder_new() or FLAC__stream_decoder_finish(), but ly calls the metadata_callback for the STREAMINFO block. These functions allow you to tell the decoder explicitly which blocks to parse and return via the metadata_callback and/or which to skip. Use a FLAC__stream_decoder_set_metadata_respond_all(), FLAC__stream_decoder_set_metadata_ignore() ... or FLAC__stream_decoder_set_metadata_ignore_all(), FLAC__stream_decoder_set_metadata_respond() ... sequence to exactly specify which blocks to return. Remember that some metadata blocks can be big so filtering out the ones you don't use can reduce the memory requirements of the decoder. Also note the special forms FLAC__stream_decoder_set_metadata_respond_application(id) and FLAC__stream_decoder_set_metadata_ignore_application(id) for filtering APPLICATION blocks based on the application ID.

STREAMINFO and SEEKTABLE blocks are always parsed and used internally, but they still can legally be filtered from the metadata_callback.

Note:
The "set" functions may only be called when the decoder is in the state FLAC__STREAM_DECODER_UNINITIALIZED, i.e. after FLAC__stream_decoder_new() or FLAC__stream_decoder_finish(), but ly calls the metadata_callback for the STREAMINFO block. These functions allow you to tell the decoder explicitly which blocks to parse and return via the metadata_callback and/or which to skip. Use a FLAC__stream_decoder_set_metadata_respond_all(), FLAC__stream_decoder_set_metadata_ignore() ... or FLAC__stream_decoder_set_metadata_ignore_all(), FLAC__stream_decoder_set_metadata_respond() ... sequence to exactly specify which blocks to return. Remember that some metadata blocks can be big so filtering out the ones you don't use can reduce the memory requirements of the decoder. Also note the special forms FLAC__stream_decoder_set_metadata_respond_application(id) and FLAC__stream_decoder_set_metadata_ignore_application(id) for filtering APPLICATION blocks based on the application ID.

STREAMINFO and SEEKTABLE blocks are always parsed and used internally, but they still can legally be filtered from the metadata_callback.

Note:
The "set" functions may only be called when the decoder is in the state FLAC__STREAM_DECODER_UNINITIALIZED, i.e. after FLAC__stream_decoder_new() or FLAC__stream_decoder_finish(), but ly calls the metadata_callback for the STREAMINFO block. These functions allow you to tell the decoder explicitly which blocks to parse and return via the metadata_callback and/or which to skip. Use a FLAC__stream_decoder_set_metadata_respond_all(), FLAC__stream_decoder_set_metadata_ignore() ... or FLAC__stream_decoder_set_metadata_ignore_all(), FLAC__stream_decoder_set_metadata_respond() ... sequence to exactly specify which blocks to return. Remember that some metadata blocks can be big so filtering out the ones you don't use can reduce the memory requirements of the decoder. Also note the special forms FLAC__stream_decoder_set_metadata_respond_application(id) and FLAC__stream_decoder_set_metadata_ignore_application(id) for filtering APPLICATION blocks based on the application ID.

STREAMINFO and SEEKTABLE blocks are always parsed and used internally, but they still can legally be filtered from the metadata_callback.

Note:
The "set" functions may only be called when the decoder is in the state FLAC__STREAM_DECODER_UNINITIALIZED, i.e. after FLAC__stream_decoder_new() or FLAC__stream_decoder_finish(), but ly calls the metadata_callback for the STREAMINFO block. These functions allow you to tell the decoder explicitly which blocks to parse and return via the metadata_callback and/or which to skip. Use a FLAC__stream_decoder_set_metadata_respond_all(), FLAC__stream_decoder_set_metadata_ignore() ... or FLAC__stream_decoder_set_metadata_ignore_all(), FLAC__stream_decoder_set_metadata_respond() ... sequence to exactly specify which blocks to return. Remember that some metadata blocks can be big so filtering out the ones you don't use can reduce the memory requirements of the decoder. Also note the special forms FLAC__stream_decoder_set_metadata_respond_application(id) and FLAC__stream_decoder_set_metadata_ignore_application(id) for filtering APPLICATION blocks based on the application ID.

STREAMINFO and SEEKTABLE blocks are always parsed and used internally, but they still can legally be filtered from the metadata_callback.

Note:
The "set" functions may only be called when the decoder is in the state FLAC__STREAM_DECODER_UNINITIALIZED, i.e. after FLAC__stream_decoder_new() or FLAC__stream_decoder_finish(), but ly calls the metadata_callback for the STREAMINFO block. These functions allow you to tell the decoder explicitly which blocks to parse and return via the metadata_callback and/or which to skip. Use a FLAC__stream_decoder_set_metadata_respond_all(), FLAC__stream_decoder_set_metadata_ignore() ... or FLAC__stream_decoder_set_metadata_ignore_all(), FLAC__stream_decoder_set_metadata_respond() ... sequence to exactly specify which blocks to return. Remember that some metadata blocks can be big so filtering out the ones you don't use can reduce the memory requirements of the decoder. Also note the special forms FLAC__stream_decoder_set_metadata_respond_application(id) and FLAC__stream_decoder_set_metadata_ignore_application(id) for filtering APPLICATION blocks based on the application ID.

STREAMINFO and SEEKTABLE blocks are always parsed and used internally, but they still can legally be filtered from the metadata_callback.

Note:
The "set" functions may only be called when the decoder is in the state FLAC__STREAM_DECODER_UNINITIALIZED, i.e. after FLAC__stream_decoder_new() or FLAC__stream_decoder_finish(), but ly calls the metadata_callback for the STREAMINFO block. These functions allow you to tell the decoder explicitly which blocks to parse and return via the metadata_callback and/or which to skip. Use a FLAC__stream_decoder_set_metadata_respond_all(), FLAC__stream_decoder_set_metadata_ignore() ... or FLAC__stream_decoder_set_metadata_ignore_all(), FLAC__stream_decoder_set_metadata_respond() ... sequence to exactly specify which blocks to return. Remember that some metadata blocks can be big so filtering out the ones you don't use can reduce the memory requirements of the decoder. Also note the special forms FLAC__stream_decoder_set_metadata_respond_application(id) and FLAC__stream_decoder_set_metadata_ignore_application(id) for filtering APPLICATION blocks based on the application ID.

STREAMINFO and SEEKTABLE blocks are always parsed and used internally, but they still can legally be filtered from the metadata_callback.

Note:
The "set" functions may only be called when the decoder is in the state FLAC__STREAM_DECODER_UNINITIALIZED, i.e. after FLAC__stream_decoder_new() or FLAC__stream_decoder_finish(), but ly calls the metadata_callback for the STREAMINFO block. These functions allow you to tell the decoder explicitly which blocks to parse and return via the metadata_callback and/or which to skip. Use a FLAC__stream_decoder_set_metadata_respond_all(), FLAC__stream_decoder_set_metadata_ignore() ... or FLAC__stream_decoder_set_metadata_ignore_all(), FLAC__stream_decoder_set_metadata_respond() ... sequence to exactly specify which blocks to return. Remember that some metadata blocks can be big so filtering out the ones you don't use can reduce the memory requirements of the decoder. Also note the special forms FLAC__stream_decoder_set_metadata_respond_application(id) and FLAC__stream_decoder_set_metadata_ignore_application(id) for filtering APPLICATION blocks based on the application ID.

STREAMINFO and SEEKTABLE blocks are always parsed and used internally, but they still can legally be filtered from the metadata_callback.

Note:
The "set" functions may only be called when the decoder is in the state FLAC__STREAM_DECODER_UNINITIALIZED, i.e. after FLAC__stream_decoder_new() or FLAC__stream_decoder_finish(), but ly calls the metadata_callback for the STREAMINFO block. These functions allow you to tell the decoder explicitly which blocks to parse and return via the metadata_callback and/or which to skip. Use a FLAC__stream_decoder_set_metadata_respond_all(), FLAC__stream_decoder_set_metadata_ignore() ... or FLAC__stream_decoder_set_metadata_ignore_all(), FLAC__stream_decoder_set_metadata_respond() ... sequence to exactly specify which blocks to return. Remember that some metadata blocks can be big so filtering out the ones you don't use can reduce the memory requirements of the decoder. Also note the special forms FLAC__stream_decoder_set_metadata_respond_application(id) and FLAC__stream_decoder_set_metadata_ignore_application(id) for filtering APPLICATION blocks based on the application ID.

STREAMINFO and SEEKTABLE blocks are always parsed and used internally, but they still can legally be filtered from the metadata_callback.

Note:
The "set" functions may only be called when the decoder is in the state FLAC__STREAM_DECODER_UNINITIALIZED, i.e. after FLAC__stream_decoder_new() or FLAC__stream_decoder_finish(), but ly calls the metadata_callback for the STREAMINFO block. These functions allow you to tell the decoder explicitly which blocks to parse and return via the metadata_callback and/or which to skip. Use a FLAC__stream_decoder_set_metadata_respond_all(), FLAC__stream_decoder_set_metadata_ignore() ... or FLAC__stream_decoder_set_metadata_ignore_all(), FLAC__stream_decoder_set_metadata_respond() ... sequence to exactly specify which blocks to return. Remember that some metadata blocks can be big so filtering out the ones you don't use can reduce the memory requirements of the decoder. Also note the special forms FLAC__stream_decoder_set_metadata_respond_application(id) and FLAC__stream_decoder_set_metadata_ignore_application(id) for filtering APPLICATION blocks based on the application ID.

STREAMINFO and SEEKTABLE blocks are always parsed and used internally, but they still can legally be filtered from the metadata_callback.

Note:
The "set" functions may only be called when the decoder is in the state FLAC__STREAM_DECODER_UNINITIALIZED, i.e. after FLAC__stream_decoder_new() or FLAC__stream_decoder_finish(), but ly calls the metadata_callback for the STREAMINFO block. These functions allow you to tell the decoder explicitly which blocks to parse and return via the metadata_callback and/or which to skip. Use a FLAC__stream_decoder_set_metadata_respond_all(), FLAC__stream_decoder_set_metadata_ignore() ... or FLAC__stream_decoder_set_metadata_ignore_all(), FLAC__stream_decoder_set_metadata_respond() ... sequence to exactly specify which blocks to return. Remember that some metadata blocks can be big so filtering out the ones you don't use can reduce the memory requirements of the decoder. Also note the special forms FLAC__stream_decoder_set_metadata_respond_application(id) and FLAC__stream_decoder_set_metadata_ignore_application(id) for filtering APPLICATION blocks based on the application ID.

STREAMINFO and SEEKTABLE blocks are always parsed and used internally, but they still can legally be filtered from the metadata_callback.

Note:
The "set" functions may only be called when the decoder is in the state FLAC__STREAM_DECODER_UNINITIALIZED, i.e. after FLAC__stream_decoder_new() or FLAC__stream_decoder_finish(), but ly calls the metadata_callback for the STREAMINFO block. These functions allow you to tell the decoder explicitly which blocks to parse and return via the metadata_callback and/or which to skip. Use a FLAC__stream_decoder_set_metadata_respond_all(), FLAC__stream_decoder_set_metadata_ignore() ... or FLAC__stream_decoder_set_metadata_ignore_all(), FLAC__stream_decoder_set_metadata_respond() ... sequence to exactly specify which blocks to return. Remember that some metadata blocks can be big so filtering out the ones you don't use can reduce the memory requirements of the decoder. Also note the special forms FLAC__stream_decoder_set_metadata_respond_application(id) and FLAC__stream_decoder_set_metadata_ignore_application(id) for filtering APPLICATION blocks based on the application ID.

STREAMINFO and SEEKTABLE blocks are always parsed and used internally, but they still can legally be filtered from the metadata_callback.

Note:
The "set" functions may only be called when the decoder is in the state FLAC__STREAM_DECODER_UNINITIALIZED, i.e. after FLAC__stream_decoder_new() or FLAC__stream_decoder_finish(), but ly calls the metadata_callback for the STREAMINFO block. These functions allow you to tell the decoder explicitly which blocks to parse and return via the metadata_callback and/or which to skip. Use a FLAC__stream_decoder_set_metadata_respond_all(), FLAC__stream_decoder_set_metadata_ignore() ... or FLAC__stream_decoder_set_metadata_ignore_all(), FLAC__stream_decoder_set_metadata_respond() ... sequence to exactly specify which blocks to return. Remember that some metadata blocks can be big so filtering out the ones you don't use can reduce the memory requirements of the decoder. Also note the special forms FLAC__stream_decoder_set_metadata_respond_application(id) and FLAC__stream_decoder_set_metadata_ignore_application(id) for filtering APPLICATION blocks based on the application ID.

STREAMINFO and SEEKTABLE blocks are always parsed and used internally, but they still can legally be filtered from the metadata_callback.

Note:
The "set" functions may only be called when the decoder is in the state FLAC__STREAM_DECODER_UNINITIALIZED, i.e. after FLAC__stream_decoder_new() or FLAC__stream_decoder_finish(), but ly calls the metadata_callback for the STREAMINFO block. These functions allow you to tell the decoder explicitly which blocks to parse and return via the metadata_callback and/or which to skip. Use a FLAC__stream_decoder_set_metadata_respond_all(), FLAC__stream_decoder_set_metadata_ignore() ... or FLAC__stream_decoder_set_metadata_ignore_all(), FLAC__stream_decoder_set_metadata_respond() ... sequence to exactly specify which blocks to return. Remember that some metadata blocks can be big so filtering out the ones you don't use can reduce the memory requirements of the decoder. Also note the special forms FLAC__stream_decoder_set_metadata_respond_application(id) and FLAC__stream_decoder_set_metadata_ignore_application(id) for filtering APPLICATION blocks based on the application ID.

STREAMINFO and SEEKTABLE blocks are always parsed and used internally, but they still can legally be filtered from the metadata_callback.

Note:
The "set" functions may only be called when the decoder is in the state FLAC__STREAM_DECODER_UNINITIALIZED, i.e. after FLAC__stream_decoder_new() or FLAC__stream_decoder_finish(), but ly calls the metadata_callback for the STREAMINFO block. These functions allow you to tell the decoder explicitly which blocks to parse and return via the metadata_callback and/or which to skip. Use a FLAC__stream_decoder_set_metadata_respond_all(), FLAC__stream_decoder_set_metadata_ignore() ... or FLAC__stream_decoder_set_metadata_ignore_all(), FLAC__stream_decoder_set_metadata_respond() ... sequence to exactly specify which blocks to return. Remember that some metadata blocks can be big so filtering out the ones you don't use can reduce the memory requirements of the decoder. Also note the special forms FLAC__stream_decoder_set_metadata_respond_application(id) and FLAC__stream_decoder_set_metadata_ignore_application(id) for filtering APPLICATION blocks based on the application ID.

STREAMINFO and SEEKTABLE blocks are always parsed and used internally, but they still can legally be filtered from the metadata_callback.

Note:
The "set" functions may only be called when the decoder is in the state FLAC__STREAM_DECODER_UNINITIALIZED, i.e. after FLAC__stream_decoder_new() or FLAC__stream_decoder_finish(), but ly calls the metadata_callback for the STREAMINFO block. These functions allow you to tell the decoder explicitly which blocks to parse and return via the metadata_callback and/or which to skip. Use a FLAC__stream_decoder_set_metadata_respond_all(), FLAC__stream_decoder_set_metadata_ignore() ... or FLAC__stream_decoder_set_metadata_ignore_all(), FLAC__stream_decoder_set_metadata_respond() ... sequence to exactly specify which blocks to return. Remember that some metadata blocks can be big so filtering out the ones you don't use can reduce the memory requirements of the decoder. Also note the special forms FLAC__stream_decoder_set_metadata_respond_application(id) and FLAC__stream_decoder_set_metadata_ignore_application(id) for filtering APPLICATION blocks based on the application ID.

STREAMINFO and SEEKTABLE blocks are always parsed and used internally, but they still can legally be filtered from the metadata_callback.

Note:
The "set" functions may only be called when the decoder is in the state FLAC__STREAM_DECODER_UNINITIALIZED, i.e. after FLAC__stream_decoder_new() or FLAC__stream_decoder_finish(), but ly calls the metadata_callback for the STREAMINFO block. These functions allow you to tell the decoder explicitly which blocks to parse and return via the metadata_callback and/or which to skip. Use a FLAC__stream_decoder_set_metadata_respond_all(), FLAC__stream_decoder_set_metadata_ignore() ... or FLAC__stream_decoder_set_metadata_ignore_all(), FLAC__stream_decoder_set_metadata_respond() ... sequence to exactly specify which blocks to return. Remember that some metadata blocks can be big so filtering out the ones you don't use can reduce the memory requirements of the decoder. Also note the special forms FLAC__stream_decoder_set_metadata_respond_application(id) and FLAC__stream_decoder_set_metadata_ignore_application(id) for filtering APPLICATION blocks based on the application ID.

STREAMINFO and SEEKTABLE blocks are always parsed and used internally, but they still can legally be filtered from the metadata_callback.

Note:
The "set" functions may only be called when the decoder is in the state FLAC__STREAM_DECODER_UNINITIALIZED, i.e. after FLAC__stream_decoder_new() or FLAC__stream_decoder_finish(), but ly calls the metadata_callback for the STREAMINFO block. These functions allow you to tell the decoder explicitly which blocks to parse and return via the metadata_callback and/or which to skip. Use a FLAC__stream_decoder_set_metadata_respond_all(), FLAC__stream_decoder_set_metadata_ignore() ... or FLAC__stream_decoder_set_metadata_ignore_all(), FLAC__stream_decoder_set_metadata_respond() ... sequence to exactly specify which blocks to return. Remember that some metadata blocks can be big so filtering out the ones you don't use can reduce the memory requirements of the decoder. Also note the special forms FLAC__stream_decoder_set_metadata_respond_application(id) and FLAC__stream_decoder_set_metadata_ignore_application(id) for filtering APPLICATION blocks based on the application ID.

STREAMINFO and SEEKTABLE blocks are always parsed and used internally, but they still can legally be filtered from the metadata_callback.

Note:
The "set" functions may only be called when the decoder is in the state FLAC__STREAM_DECODER_UNINITIALIZED, i.e. after FLAC__stream_decoder_new() or FLAC__stream_decoder_finish(), but ly calls the metadata_callback for the STREAMINFO block. These functions allow you to tell the decoder explicitly which blocks to parse and return via the metadata_callback and/or which to skip. Use a FLAC__stream_decoder_set_metadata_respond_all(), FLAC__stream_decoder_set_metadata_ignore() ... or FLAC__stream_decoder_set_metadata_ignore_all(), FLAC__stream_decoder_set_metadata_respond() ... sequence to exactly specify which blocks to return. Remember that some metadata blocks can be big so filtering out the ones you don't use can reduce the memory requirements of the decoder. Also note the special forms FLAC__stream_decoder_set_metadata_respond_application(id) and FLAC__stream_decoder_set_metadata_ignore_application(id) for filtering APPLICATION blocks based on the application ID.

STREAMINFO and SEEKTABLE blocks are always parsed and used internally, but they still can legally be filtered from the metadata_callback.

Note:
The "set" functions may only be called when the decoder is in the state FLAC__STREAM_DECODER_UNINITIALIZED, i.e. after FLAC__stream_decoder_new() or FLAC__stream_decoder_finish(), but ly calls the metadata_callback for the STREAMINFO block. These functions allow you to tell the decoder explicitly which blocks to parse and return via the metadata_callback and/or which to skip. Use a FLAC__stream_decoder_set_metadata_respond_all(), FLAC__stream_decoder_set_metadata_ignore() ... or FLAC__stream_decoder_set_metadata_ignore_all(), FLAC__stream_decoder_set_metadata_respond() ... sequence to exactly specify which blocks to return. Remember that some metadata blocks can be big so filtering out the ones you don't use can reduce the memory requirements of the decoder. Also note the special forms FLAC__stream_decoder_set_metadata_respond_application(id) and FLAC__stream_decoder_set_metadata_ignore_application(id) for filtering APPLICATION blocks based on the application ID.

STREAMINFO and SEEKTABLE blocks are always parsed and used internally, but they still can legally be filtered from the metadata_callback.

Note:
The "set" functions may only be called when the decoder is in the state FLAC__STREAM_DECODER_UNINITIALIZED, i.e. after FLAC__stream_decoder_new() or FLAC__stream_decoder_finish(), but ly calls the metadata_callback for the STREAMINFO block. These functions allow you to tell the decoder explicitly which blocks to parse and return via the metadata_callback and/or which to skip. Use a FLAC__stream_decoder_set_metadata_respond_all(), FLAC__stream_decoder_set_metadata_ignore() ... or FLAC__stream_decoder_set_metadata_ignore_all(), FLAC__stream_decoder_set_metadata_respond() ... sequence to exactly specify which blocks to return. Remember that some metadata blocks can be big so filtering out the ones you don't use can reduce the memory requirements of the decoder. Also note the special forms FLAC__stream_decoder_set_metadata_respond_application(id) and FLAC__stream_decoder_set_metadata_ignore_application(id) for filtering APPLICATION blocks based on the application ID.

STREAMINFO and SEEKTABLE blocks are always parsed and used internally, but they still can legally be filtered from the metadata_callback.

Note:
The "set" functions may only be called when the decoder is in the state FLAC__STREAM_DECODER_UNINITIALIZED, i.e. after FLAC__stream_decoder_new() or FLAC__stream_decoder_finish(), but ly calls the metadata_callback for the STREAMINFO block. These functions allow you to tell the decoder explicitly which blocks to parse and return via the metadata_callback and/or which to skip. Use a FLAC__stream_decoder_set_metadata_respond_all(), FLAC__stream_decoder_set_metadata_ignore() ... or FLAC__stream_decoder_set_metadata_ignore_all(), FLAC__stream_decoder_set_metadata_respond() ... sequence to exactly specify which blocks to return. Remember that some metadata blocks can be big so filtering out the ones you don't use can reduce the memory requirements of the decoder. Also note the special forms FLAC__stream_decoder_set_metadata_respond_application(id) and FLAC__stream_decoder_set_metadata_ignore_application(id) for filtering APPLICATION blocks based on the application ID.

STREAMINFO and SEEKTABLE blocks are always parsed and used internally, but they still can legally be filtered from the metadata_callback.

Note:
The "set" functions may only be called when the decoder is in the state FLAC__STREAM_DECODER_UNINITIALIZED, i.e. after FLAC__stream_decoder_new() or FLAC__stream_decoder_finish(), but ly calls the metadata_callback for the STREAMINFO block. These functions allow you to tell the decoder explicitly which blocks to parse and return via the metadata_callback and/or which to skip. Use a FLAC__stream_decoder_set_metadata_respond_all(), FLAC__stream_decoder_set_metadata_ignore() ... or FLAC__stream_decoder_set_metadata_ignore_all(), FLAC__stream_decoder_set_metadata_respond() ... sequence to exactly specify which blocks to return. Remember that some metadata blocks can be big so filtering out the ones you don't use can reduce the memory requirements of the decoder. Also note the special forms FLAC__stream_decoder_set_metadata_respond_application(id) and FLAC__stream_decoder_set_metadata_ignore_application(id) for filtering APPLICATION blocks based on the application ID.

STREAMINFO and SEEKTABLE blocks are always parsed and used internally, but they still can legally be filtered from the metadata_callback.

Note:
The "set" functions may only be called when the decoder is in the state FLAC__STREAM_DECODER_UNINITIALIZED, i.e. after FLAC__stream_decoder_new() or FLAC__stream_decoder_finish(), but ly calls the metadata_callback for the STREAMINFO block. These functions allow you to tell the decoder explicitly which blocks to parse and return via the metadata_callback and/or which to skip. Use a FLAC__stream_decoder_set_metadata_respond_all(), FLAC__stream_decoder_set_metadata_ignore() ... or FLAC__stream_decoder_set_metadata_ignore_all(), FLAC__stream_decoder_set_metadata_respond() ... sequence to exactly specify which blocks to return. Remember that some metadata blocks can be big so filtering out the ones you don't use can reduce the memory requirements of the decoder. Also note the special forms FLAC__stream_decoder_set_metadata_respond_application(id) and FLAC__stream_decoder_set_metadata_ignore_application(id) for filtering APPLICATION blocks based on the application ID.

STREAMINFO and SEEKTABLE blocks are always parsed and used internally, but they still can legally be filtered from the metadata_callback.

Note:
The "set" functions may only be called when the decoder is in the state FLAC__STREAM_DECODER_UNINITIALIZED, i.e. after FLAC__stream_decoder_new() or FLAC__stream_decoder_finish(), but ly calls the metadata_callback for the STREAMINFO block. These functions allow you to tell the decoder explicitly which blocks to parse and return via the metadata_callback and/or which to skip. Use a FLAC__stream_decoder_set_metadata_respond_all(), FLAC__stream_decoder_set_metadata_ignore() ... or FLAC__stream_decoder_set_metadata_ignore_all(), FLAC__stream_decoder_set_metadata_respond() ... sequence to exactly specify which blocks to return. Remember that some metadata blocks can be big so filtering out the ones you don't use can reduce the memory requirements of the decoder. Also note the special forms FLAC__stream_decoder_set_metadata_respond_application(id) and FLAC__stream_decoder_set_metadata_ignore_application(id) for filtering APPLICATION blocks based on the application ID.

STREAMINFO and SEEKTABLE blocks are always parsed and used internally, but they still can legally be filtered from the metadata_callback.

Note:
The "set" functions may only be called when the decoder is in the state FLAC__STREAM_DECODER_UNINITIALIZED, i.e. after FLAC__stream_decoder_new() or FLAC__stream_decoder_finish(), but ly calls the metadata_callback for the STREAMINFO block. These functions allow you to tell the decoder explicitly which blocks to parse and return via the metadata_callback and/or which to skip. Use a FLAC__stream_decoder_set_metadata_respond_all(), FLAC__stream_decoder_set_metadata_ignore() ... or FLAC__stream_decoder_set_metadata_ignore_all(), FLAC__stream_decoder_set_metadata_respond() ... sequence to exactly specify which blocks to return. Remember that some metadata blocks can be big so filtering out the ones you don't use can reduce the memory requirements of the decoder. Also note the special forms FLAC__stream_decoder_set_metadata_respond_application(id) and FLAC__stream_decoder_set_metadata_ignore_application(id) for filtering APPLICATION blocks based on the application ID.

STREAMINFO and SEEKTABLE blocks are always parsed and used internally, but they still can legally be filtered from the metadata_callback.

Note:
The "set" functions may only be called when the decoder is in the state FLAC__STREAM_DECODER_UNINITIALIZED, i.e. after FLAC__stream_decoder_new() or FLAC__stream_decoder_finish(), but ly calls the metadata_callback for the STREAMINFO block. These functions allow you to tell the decoder explicitly which blocks to parse and return via the metadata_callback and/or which to skip. Use a FLAC__stream_decoder_set_metadata_respond_all(), FLAC__stream_decoder_set_metadata_ignore() ... or FLAC__stream_decoder_set_metadata_ignore_all(), FLAC__stream_decoder_set_metadata_respond() ... sequence to exactly specify which blocks to return. Remember that some metadata blocks can be big so filtering out the ones you don't use can reduce the memory requirements of the decoder. Also note the special forms FLAC__stream_decoder_set_metadata_respond_application(id) and FLAC__stream_decoder_set_metadata_ignore_application(id) for filtering APPLICATION blocks based on the application ID.

STREAMINFO and SEEKTABLE blocks are always parsed and used internally, but they still can legally be filtered from the metadata_callback.

Note:
The "set" functions may only be called when the decoder is in the state FLAC__STREAM_DECODER_UNINITIALIZED, i.e. after FLAC__stream_decoder_new() or FLAC__stream_decoder_finish(), but ly calls the metadata_callback for the STREAMINFO block. These functions allow you to tell the decoder explicitly which blocks to parse and return via the metadata_callback and/or which to skip. Use a FLAC__stream_decoder_set_metadata_respond_all(), FLAC__stream_decoder_set_metadata_ignore() ... or FLAC__stream_decoder_set_metadata_ignore_all(), FLAC__stream_decoder_set_metadata_respond() ... sequence to exactly specify which blocks to return. Remember that some metadata blocks can be big so filtering out the ones you don't use can reduce the memory requirements of the decoder. Also note the special forms FLAC__stream_decoder_set_metadata_respond_application(id) and FLAC__stream_decoder_set_metadata_ignore_application(id) for filtering APPLICATION blocks based on the application ID.

STREAMINFO and SEEKTABLE blocks are always parsed and used internally, but they still can legally be filtered from the metadata_callback.

Note:
The "set" functions may only be called when the decoder is in the state FLAC__STREAM_DECODER_UNINITIALIZED, i.e. after FLAC__stream_decoder_new() or FLAC__stream_decoder_finish(), but ly calls the metadata_callback for the STREAMINFO block. These functions allow you to tell the decoder explicitly which blocks to parse and return via the metadata_callback and/or which to skip. Use a FLAC__stream_decoder_set_metadata_respond_all(), FLAC__stream_decoder_set_metadata_ignore() ... or FLAC__stream_decoder_set_metadata_ignore_all(), FLAC__stream_decoder_set_metadata_respond() ... sequence to exactly specify which blocks to return. Remember that some metadata blocks can be big so filtering out the ones you don't use can reduce the memory requirements of the decoder. Also note the special forms FLAC__stream_decoder_set_metadata_respond_application(id) and FLAC__stream_decoder_set_metadata_ignore_application(id) for filtering APPLICATION blocks based on the application ID.

STREAMINFO and SEEKTABLE blocks are always parsed and used internally, but they still can legally be filtered from the metadata_callback.

Note:
The "set" functions may only be called when the decoder is in the state FLAC__STREAM_DECODER_UNINITIALIZED, i.e. after FLAC__stream_decoder_new() or FLAC__stream_decoder_finish(), but ly calls the metadata_callback for the STREAMINFO block. These functions allow you to tell the decoder explicitly which blocks to parse and return via the metadata_callback and/or which to skip. Use a FLAC__stream_decoder_set_metadata_respond_all(), FLAC__stream_decoder_set_metadata_ignore() ... or FLAC__stream_decoder_set_metadata_ignore_all(), FLAC__stream_decoder_set_metadata_respond() ... sequence to exactly specify which blocks to return. Remember that some metadata blocks can be big so filtering out the ones you don't use can reduce the memory requirements of the decoder. Also note the special forms FLAC__stream_decoder_set_metadata_respond_application(id) and FLAC__stream_decoder_set_metadata_ignore_application(id) for filtering APPLICATION blocks based on the application ID.

STREAMINFO and SEEKTABLE blocks are always parsed and used internally, but they still can legally be filtered from the metadata_callback.

Note:
The "set" functions may only be called when the decoder is in the state FLAC__STREAM_DECODER_UNINITIALIZED, i.e. after FLAC__stream_decoder_new() or FLAC__stream_decoder_finish(), but ly calls the metadata_callback for the STREAMINFO block. These functions allow you to tell the decoder explicitly which blocks to parse and return via the metadata_callback and/or which to skip. Use a FLAC__stream_decoder_set_metadata_respond_all(), FLAC__stream_decoder_set_metadata_ignore() ... or FLAC__stream_decoder_set_metadata_ignore_all(), FLAC__stream_decoder_set_metadata_respond() ... sequence to exactly specify which blocks to return. Remember that some metadata blocks can be big so filtering out the ones you don't use can reduce the memory requirements of the decoder. Also note the special forms FLAC__stream_decoder_set_metadata_respond_application(id) and FLAC__stream_decoder_set_metadata_ignore_application(id) for filtering APPLICATION blocks based on the application ID.

STREAMINFO and SEEKTABLE blocks are always parsed and used internally, but they still can legally be filtered from the metadata_callback.

Note:
The "set" functions may only be called when the decoder is in the state FLAC__STREAM_DECODER_UNINITIALIZED, i.e. after FLAC__stream_decoder_new() or FLAC__stream_decoder_finish(), but ly calls the metadata_callback for the STREAMINFO block. These functions allow you to tell the decoder explicitly which blocks to parse and return via the metadata_callback and/or which to skip. Use a FLAC__stream_decoder_set_metadata_respond_all(), FLAC__stream_decoder_set_metadata_ignore() ... or FLAC__stream_decoder_set_metadata_ignore_all(), FLAC__stream_decoder_set_metadata_respond() ... sequence to exactly specify which blocks to return. Remember that some metadata blocks can be big so filtering out the ones you don't use can reduce the memory requirements of the decoder. Also note the special forms FLAC__stream_decoder_set_metadata_respond_application(id) and FLAC__stream_decoder_set_metadata_ignore_application(id) for filtering APPLICATION blocks based on the application ID.

STREAMINFO and SEEKTABLE blocks are always parsed and used internally, but they still can legally be filtered from the metadata_callback.

Note:
The "set" functions may only be called when the decoder is in the state FLAC__STREAM_DECODER_UNINITIALIZED, i.e. after FLAC__stream_decoder_new() or FLAC__stream_decoder_finish(), but ly calls the metadata_callback for the STREAMINFO block. These functions allow you to tell the decoder explicitly which blocks to parse and return via the metadata_callback and/or which to skip. Use a FLAC__stream_decoder_set_metadata_respond_all(), FLAC__stream_decoder_set_metadata_ignore() ... or FLAC__stream_decoder_set_metadata_ignore_all(), FLAC__stream_decoder_set_metadata_respond() ... sequence to exactly