FLAC  1.4.3
Free Lossless Audio Codec
stream_decoder.h
Go to the documentation of this file.
1 /* libFLAC - Free Lossless Audio Codec library
2  * Copyright (C) 2000-2009 Josh Coalson
3  * Copyright (C) 2011-2023 Xiph.Org Foundation
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  *
9  * - Redistributions of source code must retain the above copyright
10  * notice, this list of conditions and the following disclaimer.
11  *
12  * - Redistributions in binary form must reproduce the above copyright
13  * notice, this list of conditions and the following disclaimer in the
14  * documentation and/or other materials provided with the distribution.
15  *
16  * - Neither the name of the Xiph.org Foundation nor the names of its
17  * contributors may be used to endorse or promote products derived from
18  * this software without specific prior written permission.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
24  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
26  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
27  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
28  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
29  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
30  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31  */
32 
33 #ifndef FLAC__STREAM_DECODER_H
34 #define FLAC__STREAM_DECODER_H
35 
36 #include <stdio.h> /* for FILE */
37 #include "export.h"
38 #include "format.h"
39 
40 #ifdef __cplusplus
41 extern "C" {
42 #endif
43 
44 
202 typedef enum {
203 
245 
251 extern FLAC_API const char * const FLAC__StreamDecoderStateString[];
252 
253 
256 typedef enum {
257 
283 
289 extern FLAC_API const char * const FLAC__StreamDecoderInitStatusString[];
290 
291 
294 typedef enum {
295 
314 
320 extern FLAC_API const char * const FLAC__StreamDecoderReadStatusString[];
321 
322 
325 typedef enum {
326 
337 
343 extern FLAC_API const char * const FLAC__StreamDecoderSeekStatusString[];
344 
345 
348 typedef enum {
349 
360 
366 extern FLAC_API const char * const FLAC__StreamDecoderTellStatusString[];
367 
368 
371 typedef enum {
372 
383 
389 extern FLAC_API const char * const FLAC__StreamDecoderLengthStatusString[];
390 
391 
394 typedef enum {
395 
403 
409 extern FLAC_API const char * const FLAC__StreamDecoderWriteStatusString[];
410 
411 
431 typedef enum {
432 
449 
455 extern FLAC_API const char * const FLAC__StreamDecoderErrorStatusString[];
456 
457 
458 /***********************************************************************
459  *
460  * class FLAC__StreamDecoder
461  *
462  ***********************************************************************/
463 
464 struct FLAC__StreamDecoderProtected;
465 struct FLAC__StreamDecoderPrivate;
470 typedef struct {
471  struct FLAC__StreamDecoderProtected *protected_; /* avoid the C++ keyword 'protected' */
472  struct FLAC__StreamDecoderPrivate *private_; /* avoid the C++ keyword 'private' */
474 
524 typedef FLAC__StreamDecoderReadStatus (*FLAC__StreamDecoderReadCallback)(const FLAC__StreamDecoder *decoder, FLAC__byte buffer[], size_t *bytes, void *client_data);
525 
559 typedef FLAC__StreamDecoderSeekStatus (*FLAC__StreamDecoderSeekCallback)(const FLAC__StreamDecoder *decoder, FLAC__uint64 absolute_byte_offset, void *client_data);
560 
597 typedef FLAC__StreamDecoderTellStatus (*FLAC__StreamDecoderTellCallback)(const FLAC__StreamDecoder *decoder, FLAC__uint64 *absolute_byte_offset, void *client_data);
598 
635 typedef FLAC__StreamDecoderLengthStatus (*FLAC__StreamDecoderLengthCallback)(const FLAC__StreamDecoder *decoder, FLAC__uint64 *stream_length, void *client_data);
636 
662 typedef FLAC__bool (*FLAC__StreamDecoderEofCallback)(const FLAC__StreamDecoder *decoder, void *client_data);
663 
690 typedef FLAC__StreamDecoderWriteStatus (*FLAC__StreamDecoderWriteCallback)(const FLAC__StreamDecoder *decoder, const FLAC__Frame *frame, const FLAC__int32 * const buffer[], void *client_data);
691 
717 typedef void (*FLAC__StreamDecoderMetadataCallback)(const FLAC__StreamDecoder *decoder, const FLAC__StreamMetadata *metadata, void *client_data);
718 
734 typedef void (*FLAC__StreamDecoderErrorCallback)(const FLAC__StreamDecoder *decoder, FLAC__StreamDecoderErrorStatus status, void *client_data);
735 
736 
737 /***********************************************************************
738  *
739  * Class constructor/destructor
740  *
741  ***********************************************************************/
742 
751 
759 
760 
761 /***********************************************************************
762  *
763  * Public class method prototypes
764  *
765  ***********************************************************************/
766 
784 
806 
820 
835 
847 
861 
876 
888 
898 
908 
922 
934 
946 
958 
970 
982 
994 
1014 FLAC_API FLAC__bool FLAC__stream_decoder_get_decode_position(const FLAC__StreamDecoder *decoder, FLAC__uint64 *position);
1015 
1025 
1091  FLAC__StreamDecoder *decoder,
1092  FLAC__StreamDecoderReadCallback read_callback,
1093  FLAC__StreamDecoderSeekCallback seek_callback,
1094  FLAC__StreamDecoderTellCallback tell_callback,
1095  FLAC__StreamDecoderLengthCallback length_callback,
1096  FLAC__StreamDecoderEofCallback eof_callback,
1097  FLAC__StreamDecoderWriteCallback write_callback,
1098  FLAC__StreamDecoderMetadataCallback metadata_callback,
1099  FLAC__StreamDecoderErrorCallback error_callback,
1100  void *client_data
1101 );
1102 
1172  FLAC__StreamDecoder *decoder,
1173  FLAC__StreamDecoderReadCallback read_callback,
1174  FLAC__StreamDecoderSeekCallback seek_callback,
1175  FLAC__StreamDecoderTellCallback tell_callback,
1176  FLAC__StreamDecoderLengthCallback length_callback,
1177  FLAC__StreamDecoderEofCallback eof_callback,
1178  FLAC__StreamDecoderWriteCallback write_callback,
1179  FLAC__StreamDecoderMetadataCallback metadata_callback,
1180  FLAC__StreamDecoderErrorCallback error_callback,
1181  void *client_data
1182 );
1183 
1222  FLAC__StreamDecoder *decoder,
1223  FILE *file,
1224  FLAC__StreamDecoderWriteCallback write_callback,
1225  FLAC__StreamDecoderMetadataCallback metadata_callback,
1226  FLAC__StreamDecoderErrorCallback error_callback,
1227  void *client_data
1228 );
1229 
1272  FLAC__StreamDecoder *decoder,
1273  FILE *file,
1274  FLAC__StreamDecoderWriteCallback write_callback,
1275  FLAC__StreamDecoderMetadataCallback metadata_callback,
1276  FLAC__StreamDecoderErrorCallback error_callback,
1277  void *client_data
1278 );
1279 
1318  FLAC__StreamDecoder *decoder,
1319  const char *filename,
1320  FLAC__StreamDecoderWriteCallback write_callback,
1321  FLAC__StreamDecoderMetadataCallback metadata_callback,
1322  FLAC__StreamDecoderErrorCallback error_callback,
1323  void *client_data
1324 );
1325 
1368  FLAC__StreamDecoder *decoder,
1369  const char *filename,
1370  FLAC__StreamDecoderWriteCallback write_callback,
1371  FLAC__StreamDecoderMetadataCallback metadata_callback,
1372  FLAC__StreamDecoderErrorCallback error_callback,
1373  void *client_data
1374 );
1375 
1396 
1411 
1443 
1476 
1497 
1518 
1559 
1576 FLAC_API FLAC__bool FLAC__stream_decoder_seek_absolute(FLAC__StreamDecoder *decoder, FLAC__uint64 sample);
1577 
1578 /* \} */
1579 
1580 #ifdef __cplusplus
1581 }
1582 #endif
1583 
1584 #endif
This module contains #defines and symbols for exporting function calls, and providing version informa...
This module contains structure definitions for the representation of FLAC format components in memory...
#define FLAC_API
Definition: export.h:91
FLAC__ChannelAssignment
Definition: format.h:388
FLAC__MetadataType
Definition: format.h:496
FLAC__bool FLAC__stream_decoder_process_until_end_of_metadata(FLAC__StreamDecoder *decoder)
const char *const FLAC__StreamDecoderInitStatusString[]
FLAC__StreamDecoderErrorStatus
Definition: stream_decoder.h:431
FLAC__StreamDecoderInitStatus FLAC__stream_decoder_init_stream(FLAC__StreamDecoder *decoder, FLAC__StreamDecoderReadCallback read_callback, FLAC__StreamDecoderSeekCallback seek_callback, FLAC__StreamDecoderTellCallback tell_callback, FLAC__StreamDecoderLengthCallback length_callback, FLAC__StreamDecoderEofCallback eof_callback, FLAC__StreamDecoderWriteCallback write_callback, FLAC__StreamDecoderMetadataCallback metadata_callback, FLAC__StreamDecoderErrorCallback error_callback, void *client_data)
FLAC__StreamDecoderInitStatus FLAC__stream_decoder_init_ogg_stream(FLAC__StreamDecoder *decoder, FLAC__StreamDecoderReadCallback read_callback, FLAC__StreamDecoderSeekCallback seek_callback, FLAC__StreamDecoderTellCallback tell_callback, FLAC__StreamDecoderLengthCallback length_callback, FLAC__StreamDecoderEofCallback eof_callback, FLAC__StreamDecoderWriteCallback write_callback, FLAC__StreamDecoderMetadataCallback metadata_callback, FLAC__StreamDecoderErrorCallback error_callback, void *client_data)
FLAC__bool FLAC__stream_decoder_set_metadata_respond_all(FLAC__StreamDecoder *decoder)
FLAC__StreamDecoderReadStatus(* FLAC__StreamDecoderReadCallback)(const FLAC__StreamDecoder *decoder, FLAC__byte buffer[], size_t *bytes, void *client_data)
Definition: stream_decoder.h:524
FLAC__StreamDecoderState
Definition: stream_decoder.h:202
const char *const FLAC__StreamDecoderTellStatusString[]
FLAC__StreamDecoderInitStatus FLAC__stream_decoder_init_file(FLAC__StreamDecoder *decoder, const char *filename, FLAC__StreamDecoderWriteCallback write_callback, FLAC__StreamDecoderMetadataCallback metadata_callback, FLAC__StreamDecoderErrorCallback error_callback, void *client_data)
FLAC__StreamDecoderSeekStatus(* FLAC__StreamDecoderSeekCallback)(const FLAC__StreamDecoder *decoder, FLAC__uint64 absolute_byte_offset, void *client_data)
Definition: stream_decoder.h:559
FLAC__StreamDecoderInitStatus FLAC__stream_decoder_init_ogg_FILE(FLAC__StreamDecoder *decoder, FILE *file, FLAC__StreamDecoderWriteCallback write_callback, FLAC__StreamDecoderMetadataCallback metadata_callback, FLAC__StreamDecoderErrorCallback error_callback, void *client_data)
FLAC__bool(* FLAC__StreamDecoderEofCallback)(const FLAC__StreamDecoder *decoder, void *client_data)
Definition: stream_decoder.h:662
FLAC__StreamDecoder * FLAC__stream_decoder_new(void)
FLAC__StreamDecoderLengthStatus(* FLAC__StreamDecoderLengthCallback)(const FLAC__StreamDecoder *decoder, FLAC__uint64 *stream_length, void *client_data)
Definition: stream_decoder.h:635
FLAC__StreamDecoderInitStatus FLAC__stream_decoder_init_ogg_file(FLAC__StreamDecoder *decoder, const char *filename, FLAC__StreamDecoderWriteCallback write_callback, FLAC__StreamDecoderMetadataCallback metadata_callback, FLAC__StreamDecoderErrorCallback error_callback, void *client_data)
FLAC__StreamDecoderWriteStatus(* FLAC__StreamDecoderWriteCallback)(const FLAC__StreamDecoder *decoder, const FLAC__Frame *frame, const FLAC__int32 *const buffer[], void *client_data)
Definition: stream_decoder.h:690
uint32_t FLAC__stream_decoder_get_bits_per_sample(const FLAC__StreamDecoder *decoder)
FLAC__bool FLAC__stream_decoder_seek_absolute(FLAC__StreamDecoder *decoder, FLAC__uint64 sample)
void(* FLAC__StreamDecoderMetadataCallback)(const FLAC__StreamDecoder *decoder, const FLAC__StreamMetadata *metadata, void *client_data)
Definition: stream_decoder.h:717
FLAC__StreamDecoderWriteStatus
Definition: stream_decoder.h:394
const char *const FLAC__StreamDecoderLengthStatusString[]
FLAC__bool FLAC__stream_decoder_set_ogg_serial_number(FLAC__StreamDecoder *decoder, long serial_number)
uint32_t FLAC__stream_decoder_get_channels(const FLAC__StreamDecoder *decoder)
FLAC__StreamDecoderInitStatus FLAC__stream_decoder_init_FILE(FLAC__StreamDecoder *decoder, FILE *file, FLAC__StreamDecoderWriteCallback write_callback, FLAC__StreamDecoderMetadataCallback metadata_callback, FLAC__StreamDecoderErrorCallback error_callback, void *client_data)
FLAC__StreamDecoderTellStatus
Definition: stream_decoder.h:348
FLAC__bool FLAC__stream_decoder_skip_single_frame(FLAC__StreamDecoder *decoder)
FLAC__bool FLAC__stream_decoder_process_until_end_of_stream(FLAC__StreamDecoder *decoder)
FLAC__bool FLAC__stream_decoder_set_md5_checking(FLAC__StreamDecoder *decoder, FLAC__bool value)
FLAC__uint64 FLAC__stream_decoder_get_total_samples(const FLAC__StreamDecoder *decoder)
FLAC__bool FLAC__stream_decoder_flush(FLAC__StreamDecoder *decoder)
uint32_t FLAC__stream_decoder_get_sample_rate(const FLAC__StreamDecoder *decoder)
FLAC__bool FLAC__stream_decoder_finish(FLAC__StreamDecoder *decoder)
FLAC__bool FLAC__stream_decoder_process_single(FLAC__StreamDecoder *decoder)
const char *const FLAC__StreamDecoderWriteStatusString[]
FLAC__bool FLAC__stream_decoder_set_metadata_ignore_all(FLAC__StreamDecoder *decoder)
FLAC__bool FLAC__stream_decoder_reset(FLAC__StreamDecoder *decoder)
FLAC__bool FLAC__stream_decoder_set_metadata_ignore_application(FLAC__StreamDecoder *decoder, const FLAC__byte id[4])
FLAC__StreamDecoderInitStatus
Definition: stream_decoder.h:256
const void * FLAC__stream_decoder_get_client_data(FLAC__StreamDecoder *decoder)
const char *const FLAC__StreamDecoderReadStatusString[]
const char *const FLAC__StreamDecoderStateString[]
const char *const FLAC__StreamDecoderErrorStatusString[]
const char *const FLAC__StreamDecoderSeekStatusString[]
void(* FLAC__StreamDecoderErrorCallback)(const FLAC__StreamDecoder *decoder, FLAC__StreamDecoderErrorStatus status, void *client_data)
Definition: stream_decoder.h:734
FLAC__StreamDecoderSeekStatus
Definition: stream_decoder.h:325
const char * FLAC__stream_decoder_get_resolved_state_string(const FLAC__StreamDecoder *decoder)
FLAC__bool FLAC__stream_decoder_set_metadata_respond(FLAC__StreamDecoder *decoder, FLAC__MetadataType type)
FLAC__StreamDecoderLengthStatus
Definition: stream_decoder.h:371
FLAC__bool FLAC__stream_decoder_set_metadata_ignore(FLAC__StreamDecoder *decoder, FLAC__MetadataType type)
FLAC__StreamDecoderReadStatus
Definition: stream_decoder.h:294
void FLAC__stream_decoder_delete(FLAC__StreamDecoder *decoder)
FLAC__bool FLAC__stream_decoder_get_md5_checking(const FLAC__StreamDecoder *decoder)
FLAC__ChannelAssignment FLAC__stream_decoder_get_channel_assignment(const FLAC__StreamDecoder *decoder)
FLAC__bool FLAC__stream_decoder_set_metadata_respond_application(FLAC__StreamDecoder *decoder, const FLAC__byte id[4])
FLAC__StreamDecoderState FLAC__stream_decoder_get_state(const FLAC__StreamDecoder *decoder)
FLAC__StreamDecoderTellStatus(* FLAC__StreamDecoderTellCallback)(const FLAC__StreamDecoder *decoder, FLAC__uint64 *absolute_byte_offset, void *client_data)
Definition: stream_decoder.h:597
uint32_t FLAC__stream_decoder_get_blocksize(const FLAC__StreamDecoder *decoder)
FLAC__bool FLAC__stream_decoder_get_decode_position(const FLAC__StreamDecoder *decoder, FLAC__uint64 *position)
@ FLAC__STREAM_DECODER_ERROR_STATUS_FRAME_CRC_MISMATCH
Definition: stream_decoder.h:439
@ FLAC__STREAM_DECODER_ERROR_STATUS_LOST_SYNC
Definition: stream_decoder.h:433
@ FLAC__STREAM_DECODER_ERROR_STATUS_BAD_METADATA
Definition: stream_decoder.h:445
@ FLAC__STREAM_DECODER_ERROR_STATUS_UNPARSEABLE_STREAM
Definition: stream_decoder.h:442
@ FLAC__STREAM_DECODER_ERROR_STATUS_BAD_HEADER
Definition: stream_decoder.h:436
@ FLAC__STREAM_DECODER_READ_FRAME
Definition: stream_decoder.h:215
@ FLAC__STREAM_DECODER_MEMORY_ALLOCATION_ERROR
Definition: stream_decoder.h:233
@ FLAC__STREAM_DECODER_END_OF_STREAM
Definition: stream_decoder.h:218
@ FLAC__STREAM_DECODER_OGG_ERROR
Definition: stream_decoder.h:221
@ FLAC__STREAM_DECODER_READ_METADATA
Definition: stream_decoder.h:207
@ FLAC__STREAM_DECODER_UNINITIALIZED
Definition: stream_decoder.h:238
@ FLAC__STREAM_DECODER_SEARCH_FOR_FRAME_SYNC
Definition: stream_decoder.h:210
@ FLAC__STREAM_DECODER_SEARCH_FOR_METADATA
Definition: stream_decoder.h:204
@ FLAC__STREAM_DECODER_ABORTED
Definition: stream_decoder.h:230
@ FLAC__STREAM_DECODER_SEEK_ERROR
Definition: stream_decoder.h:224
@ FLAC__STREAM_DECODER_WRITE_STATUS_ABORT
Definition: stream_decoder.h:399
@ FLAC__STREAM_DECODER_WRITE_STATUS_CONTINUE
Definition: stream_decoder.h:396
@ FLAC__STREAM_DECODER_TELL_STATUS_OK
Definition: stream_decoder.h:350
@ FLAC__STREAM_DECODER_TELL_STATUS_ERROR
Definition: stream_decoder.h:353
@ FLAC__STREAM_DECODER_TELL_STATUS_UNSUPPORTED
Definition: stream_decoder.h:356
@ FLAC__STREAM_DECODER_INIT_STATUS_MEMORY_ALLOCATION_ERROR
Definition: stream_decoder.h:269
@ FLAC__STREAM_DECODER_INIT_STATUS_INVALID_CALLBACKS
Definition: stream_decoder.h:266
@ FLAC__STREAM_DECODER_INIT_STATUS_ERROR_OPENING_FILE
Definition: stream_decoder.h:272
@ FLAC__STREAM_DECODER_INIT_STATUS_UNSUPPORTED_CONTAINER
Definition: stream_decoder.h:261
@ FLAC__STREAM_DECODER_INIT_STATUS_ALREADY_INITIALIZED
Definition: stream_decoder.h:276
@ FLAC__STREAM_DECODER_INIT_STATUS_OK
Definition: stream_decoder.h:258
@ FLAC__STREAM_DECODER_SEEK_STATUS_UNSUPPORTED
Definition: stream_decoder.h:333
@ FLAC__STREAM_DECODER_SEEK_STATUS_ERROR
Definition: stream_decoder.h:330
@ FLAC__STREAM_DECODER_SEEK_STATUS_OK
Definition: stream_decoder.h:327
@ FLAC__STREAM_DECODER_LENGTH_STATUS_ERROR
Definition: stream_decoder.h:376
@ FLAC__STREAM_DECODER_LENGTH_STATUS_UNSUPPORTED
Definition: stream_decoder.h:379
@ FLAC__STREAM_DECODER_LENGTH_STATUS_OK
Definition: stream_decoder.h:373
@ FLAC__STREAM_DECODER_READ_STATUS_END_OF_STREAM
Definition: stream_decoder.h:299
@ FLAC__STREAM_DECODER_READ_STATUS_ABORT
Definition: stream_decoder.h:310
@ FLAC__STREAM_DECODER_READ_STATUS_CONTINUE
Definition: stream_decoder.h:296
Definition: format.h:480
Definition: stream_decoder.h:470
Definition: format.h:841

Copyright (c) 2000-2009 Josh Coalson Copyright (c) 2011-2023 Xiph.Org Foundation