[][src]Function flac_sys::FLAC__stream_decoder_process_single

pub unsafe extern "C" fn FLAC__stream_decoder_process_single(
    decoder: *mut FLAC__StreamDecoder
) -> FLAC__bool

Decode one metadata block or audio frame. This version instructs the decoder to decode a either a single metadata block or a single frame and stop, unless the callbacks return a fatal error or the read callback returns \c FLAC__STREAM_DECODER_READ_STATUS_END_OF_STREAM.

As the decoder needs more input it will call the read callback. Depending on what was decoded, the metadata or write callback will be called with the decoded metadata block or audio frame.

Unless there is a fatal read error or end of stream, this function will return once one whole frame is decoded. In other words, if the stream is not synchronized or points to a corrupt frame header, the decoder will continue to try and resync until it gets to a valid frame, then decode one frame, then return. If the decoder points to a frame whose frame CRC in the frame footer does not match the computed frame CRC, this function will issue a FLAC__STREAM_DECODER_ERROR_STATUS_FRAME_CRC_MISMATCH error to the error callback, and return, having decoded one complete, although corrupt, frame. (Such corrupted frames are sent as silence of the correct length to the write callback.)

\param decoder An initialized decoder instance. \assert \code decoder != NULL \endcode \retval FLAC__bool \c false if any fatal read, write, or memory allocation error occurred (meaning decoding must stop), else \c true; for more information about the decoder, check the decoder state with FLAC__stream_decoder_get_state().