00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032 #ifndef FLAC__STREAM_ENCODER_H
00033 #define FLAC__STREAM_ENCODER_H
00034
00035 #include "export.h"
00036 #include "format.h"
00037 #include "stream_decoder.h"
00038
00039 #ifdef __cplusplus
00040 extern "C" {
00041 #endif
00042
00043
00187 typedef enum {
00188
00189 FLAC__STREAM_ENCODER_OK = 0,
00192 FLAC__STREAM_ENCODER_VERIFY_DECODER_ERROR,
00197 FLAC__STREAM_ENCODER_VERIFY_MISMATCH_IN_AUDIO_DATA,
00202 FLAC__STREAM_ENCODER_INVALID_CALLBACK,
00205 FLAC__STREAM_ENCODER_INVALID_NUMBER_OF_CHANNELS,
00208 FLAC__STREAM_ENCODER_INVALID_BITS_PER_SAMPLE,
00214 FLAC__STREAM_ENCODER_INVALID_SAMPLE_RATE,
00217 FLAC__STREAM_ENCODER_INVALID_BLOCK_SIZE,
00220 FLAC__STREAM_ENCODER_INVALID_MAX_LPC_ORDER,
00223 FLAC__STREAM_ENCODER_INVALID_QLP_COEFF_PRECISION,
00226 FLAC__STREAM_ENCODER_MID_SIDE_CHANNELS_MISMATCH,
00229 FLAC__STREAM_ENCODER_MID_SIDE_SAMPLE_SIZE_MISMATCH,
00232 FLAC__STREAM_ENCODER_ILLEGAL_MID_SIDE_FORCE,
00235 FLAC__STREAM_ENCODER_BLOCK_SIZE_TOO_SMALL_FOR_LPC_ORDER,
00238 FLAC__STREAM_ENCODER_NOT_STREAMABLE,
00241 FLAC__STREAM_ENCODER_FRAMING_ERROR,
00244 FLAC__STREAM_ENCODER_INVALID_METADATA,
00253 FLAC__STREAM_ENCODER_FATAL_ERROR_WHILE_ENCODING,
00256 FLAC__STREAM_ENCODER_FATAL_ERROR_WHILE_WRITING,
00259 FLAC__STREAM_ENCODER_MEMORY_ALLOCATION_ERROR,
00262 FLAC__STREAM_ENCODER_ALREADY_INITIALIZED,
00268 FLAC__STREAM_ENCODER_UNINITIALIZED
00271 } FLAC__StreamEncoderState;
00272
00278 extern FLAC_API const char * const FLAC__StreamEncoderStateString[];
00279
00282 typedef enum {
00283
00284 FLAC__STREAM_ENCODER_WRITE_STATUS_OK = 0,
00287 FLAC__STREAM_ENCODER_WRITE_STATUS_FATAL_ERROR
00290 } FLAC__StreamEncoderWriteStatus;
00291
00297 extern FLAC_API const char * const FLAC__StreamEncoderWriteStatusString[];
00298
00299
00300
00301
00302
00303
00304
00305
00306 struct FLAC__StreamEncoderProtected;
00307 struct FLAC__StreamEncoderPrivate;
00312 typedef struct {
00313 struct FLAC__StreamEncoderProtected *protected_;
00314 struct FLAC__StreamEncoderPrivate *private_;
00315 } FLAC__StreamEncoder;
00316
00332 typedef FLAC__StreamEncoderWriteStatus (*FLAC__StreamEncoderWriteCallback)(const FLAC__StreamEncoder *encoder, const FLAC__byte buffer[], unsigned bytes, unsigned samples, unsigned current_frame, void *client_data);
00333
00342 typedef void (*FLAC__StreamEncoderMetadataCallback)(const FLAC__StreamEncoder *encoder, const FLAC__StreamMetadata *metadata, void *client_data);
00343
00344
00345
00346
00347
00348
00349
00350
00358 FLAC_API FLAC__StreamEncoder *FLAC__stream_encoder_new();
00359
00366 FLAC_API void FLAC__stream_encoder_delete(FLAC__StreamEncoder *encoder);
00367
00368
00369
00370
00371
00372
00373
00388 FLAC_API FLAC__bool FLAC__stream_encoder_set_verify(FLAC__StreamEncoder *encoder, FLAC__bool value);
00389
00406 FLAC_API FLAC__bool FLAC__stream_encoder_set_streamable_subset(FLAC__StreamEncoder *encoder, FLAC__bool value);
00407
00420 FLAC_API FLAC__bool FLAC__stream_encoder_set_do_mid_side_stereo(FLAC__StreamEncoder *encoder, FLAC__bool value);
00421
00435 FLAC_API FLAC__bool FLAC__stream_encoder_set_loose_mid_side_stereo(FLAC__StreamEncoder *encoder, FLAC__bool value);
00436
00447 FLAC_API FLAC__bool FLAC__stream_encoder_set_channels(FLAC__StreamEncoder *encoder, unsigned value);
00448
00463 FLAC_API FLAC__bool FLAC__stream_encoder_set_bits_per_sample(FLAC__StreamEncoder *encoder, unsigned value);
00464
00475 FLAC_API FLAC__bool FLAC__stream_encoder_set_sample_rate(FLAC__StreamEncoder *encoder, unsigned value);
00476
00487 FLAC_API FLAC__bool FLAC__stream_encoder_set_blocksize(FLAC__StreamEncoder *encoder, unsigned value);
00488
00499 FLAC_API FLAC__bool FLAC__stream_encoder_set_max_lpc_order(FLAC__StreamEncoder *encoder, unsigned value);
00500
00517 FLAC_API FLAC__bool FLAC__stream_encoder_set_qlp_coeff_precision(FLAC__StreamEncoder *encoder, unsigned value);
00518
00531 FLAC_API FLAC__bool FLAC__stream_encoder_set_do_qlp_coeff_prec_search(FLAC__StreamEncoder *encoder, FLAC__bool value);
00532
00543 FLAC_API FLAC__bool FLAC__stream_encoder_set_do_escape_coding(FLAC__StreamEncoder *encoder, FLAC__bool value);
00544
00557 FLAC_API FLAC__bool FLAC__stream_encoder_set_do_exhaustive_model_search(FLAC__StreamEncoder *encoder, FLAC__bool value);
00558
00580 FLAC_API FLAC__bool FLAC__stream_encoder_set_min_residual_partition_order(FLAC__StreamEncoder *encoder, unsigned value);
00581
00603 FLAC_API FLAC__bool FLAC__stream_encoder_set_max_residual_partition_order(FLAC__StreamEncoder *encoder, unsigned value);
00604
00615 FLAC_API FLAC__bool FLAC__stream_encoder_set_rice_parameter_search_dist(FLAC__StreamEncoder *encoder, unsigned value);
00616
00631 FLAC_API FLAC__bool FLAC__stream_encoder_set_total_samples_estimate(FLAC__StreamEncoder *encoder, FLAC__uint64 value);
00632
00674 FLAC_API FLAC__bool FLAC__stream_encoder_set_metadata(FLAC__StreamEncoder *encoder, FLAC__StreamMetadata **metadata, unsigned num_blocks);
00675
00701 FLAC_API FLAC__bool FLAC__stream_encoder_set_write_callback(FLAC__StreamEncoder *encoder, FLAC__StreamEncoderWriteCallback value);
00702
00722 FLAC_API FLAC__bool FLAC__stream_encoder_set_metadata_callback(FLAC__StreamEncoder *encoder, FLAC__StreamEncoderMetadataCallback value);
00723
00736 FLAC_API FLAC__bool FLAC__stream_encoder_set_client_data(FLAC__StreamEncoder *encoder, void *value);
00737
00746 FLAC_API FLAC__StreamEncoderState FLAC__stream_encoder_get_state(const FLAC__StreamEncoder *encoder);
00747
00758 FLAC_API FLAC__StreamDecoderState FLAC__stream_encoder_get_verify_decoder_state(const FLAC__StreamEncoder *encoder);
00759
00771 FLAC_API const char *FLAC__stream_encoder_get_resolved_state_string(const FLAC__StreamEncoder *encoder);
00772
00790 FLAC_API void FLAC__stream_encoder_get_verify_decoder_error_stats(const FLAC__StreamEncoder *encoder, FLAC__uint64 *absolute_sample, unsigned *frame_number, unsigned *channel, unsigned *sample, FLAC__int32 *expected, FLAC__int32 *got);
00791
00800 FLAC_API FLAC__bool FLAC__stream_encoder_get_verify(const FLAC__StreamEncoder *encoder);
00801
00810 FLAC_API FLAC__bool FLAC__stream_encoder_get_streamable_subset(const FLAC__StreamEncoder *encoder);
00811
00820 FLAC_API FLAC__bool FLAC__stream_encoder_get_do_mid_side_stereo(const FLAC__StreamEncoder *encoder);
00821
00830 FLAC_API FLAC__bool FLAC__stream_encoder_get_loose_mid_side_stereo(const FLAC__StreamEncoder *encoder);
00831
00840 FLAC_API unsigned FLAC__stream_encoder_get_channels(const FLAC__StreamEncoder *encoder);
00841
00850 FLAC_API unsigned FLAC__stream_encoder_get_bits_per_sample(const FLAC__StreamEncoder *encoder);
00851
00860 FLAC_API unsigned FLAC__stream_encoder_get_sample_rate(const FLAC__StreamEncoder *encoder);
00861
00870 FLAC_API unsigned FLAC__stream_encoder_get_blocksize(const FLAC__StreamEncoder *encoder);
00871
00880 FLAC_API unsigned FLAC__stream_encoder_get_max_lpc_order(const FLAC__StreamEncoder *encoder);
00881
00890 FLAC_API unsigned FLAC__stream_encoder_get_qlp_coeff_precision(const FLAC__StreamEncoder *encoder);
00891
00900 FLAC_API FLAC__bool FLAC__stream_encoder_get_do_qlp_coeff_prec_search(const FLAC__StreamEncoder *encoder);
00901
00910 FLAC_API FLAC__bool FLAC__stream_encoder_get_do_escape_coding(const FLAC__StreamEncoder *encoder);
00911
00920 FLAC_API FLAC__bool FLAC__stream_encoder_get_do_exhaustive_model_search(const FLAC__StreamEncoder *encoder);
00921
00930 FLAC_API unsigned FLAC__stream_encoder_get_min_residual_partition_order(const FLAC__StreamEncoder *encoder);
00931
00940 FLAC_API unsigned FLAC__stream_encoder_get_max_residual_partition_order(const FLAC__StreamEncoder *encoder);
00941
00950 FLAC_API unsigned FLAC__stream_encoder_get_rice_parameter_search_dist(const FLAC__StreamEncoder *encoder);
00951
00963 FLAC_API FLAC__uint64 FLAC__stream_encoder_get_total_samples_estimate(const FLAC__StreamEncoder *encoder);
00964
00983 FLAC_API FLAC__StreamEncoderState FLAC__stream_encoder_init(FLAC__StreamEncoder *encoder);
00984
01001 FLAC_API void FLAC__stream_encoder_finish(FLAC__StreamEncoder *encoder);
01002
01020 FLAC_API FLAC__bool FLAC__stream_encoder_process(FLAC__StreamEncoder *encoder, const FLAC__int32 * const buffer[], unsigned samples);
01021
01044 FLAC_API FLAC__bool FLAC__stream_encoder_process_interleaved(FLAC__StreamEncoder *encoder, const FLAC__int32 buffer[], unsigned samples);
01045
01046
01047
01048 #ifdef __cplusplus
01049 }
01050 #endif
01051
01052 #endif