FLAC
1.2.1
Main Page
Modules
Classes
Files
File List
File Members
include
FLAC
stream_encoder.h
Go to the documentation of this file.
1
/* libFLAC - Free Lossless Audio Codec library
2
* Copyright (C) 2000,2001,2002,2003,2004,2005,2006,2007,2008,2009 Josh Coalson
3
*
4
* Redistribution and use in source and binary forms, with or without
5
* modification, are permitted provided that the following conditions
6
* are met:
7
*
8
* - Redistributions of source code must retain the above copyright
9
* notice, this list of conditions and the following disclaimer.
10
*
11
* - Redistributions in binary form must reproduce the above copyright
12
* notice, this list of conditions and the following disclaimer in the
13
* documentation and/or other materials provided with the distribution.
14
*
15
* - Neither the name of the Xiph.org Foundation nor the names of its
16
* contributors may be used to endorse or promote products derived from
17
* this software without specific prior written permission.
18
*
19
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
23
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
24
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
25
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
26
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
27
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
28
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
29
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30
*/
31
32
#ifndef FLAC__STREAM_ENCODER_H
33
#define FLAC__STREAM_ENCODER_H
34
35
#include <stdio.h>
/* for FILE */
36
#include "
export.h
"
37
#include "
format.h
"
38
#include "
stream_decoder.h
"
39
40
#ifdef __cplusplus
41
extern
"C"
{
42
#endif
43
44
240
typedef
enum
{
241
242
FLAC__STREAM_ENCODER_OK
= 0,
245
FLAC__STREAM_ENCODER_UNINITIALIZED
,
251
FLAC__STREAM_ENCODER_OGG_ERROR
,
254
FLAC__STREAM_ENCODER_VERIFY_DECODER_ERROR
,
259
FLAC__STREAM_ENCODER_VERIFY_MISMATCH_IN_AUDIO_DATA
,
264
FLAC__STREAM_ENCODER_CLIENT_ERROR
,
267
FLAC__STREAM_ENCODER_IO_ERROR
,
272
FLAC__STREAM_ENCODER_FRAMING_ERROR
,
277
FLAC__STREAM_ENCODER_MEMORY_ALLOCATION_ERROR
280
}
FLAC__StreamEncoderState
;
281
287
extern
FLAC_API
const
char
*
const
FLAC__StreamEncoderStateString
[];
288
289
292
typedef
enum
{
293
294
FLAC__STREAM_ENCODER_INIT_STATUS_OK
= 0,
297
FLAC__STREAM_ENCODER_INIT_STATUS_ENCODER_ERROR
,
300
FLAC__STREAM_ENCODER_INIT_STATUS_UNSUPPORTED_CONTAINER
,
305
FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_CALLBACKS
,
308
FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_NUMBER_OF_CHANNELS
,
311
FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_BITS_PER_SAMPLE
,
317
FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_SAMPLE_RATE
,
320
FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_BLOCK_SIZE
,
323
FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_MAX_LPC_ORDER
,
326
FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_QLP_COEFF_PRECISION
,
329
FLAC__STREAM_ENCODER_INIT_STATUS_BLOCK_SIZE_TOO_SMALL_FOR_LPC_ORDER
,
332
FLAC__STREAM_ENCODER_INIT_STATUS_NOT_STREAMABLE
,
335
FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_METADATA
,
344
FLAC__STREAM_ENCODER_INIT_STATUS_ALREADY_INITIALIZED
350
}
FLAC__StreamEncoderInitStatus
;
351
357
extern
FLAC_API
const
char
*
const
FLAC__StreamEncoderInitStatusString
[];
358
359
362
typedef
enum
{
363
364
FLAC__STREAM_ENCODER_READ_STATUS_CONTINUE
,
367
FLAC__STREAM_ENCODER_READ_STATUS_END_OF_STREAM
,
370
FLAC__STREAM_ENCODER_READ_STATUS_ABORT
,
373
FLAC__STREAM_ENCODER_READ_STATUS_UNSUPPORTED
376
}
FLAC__StreamEncoderReadStatus
;
377
383
extern
FLAC_API
const
char
*
const
FLAC__StreamEncoderReadStatusString
[];
384
385
388
typedef
enum
{
389
390
FLAC__STREAM_ENCODER_WRITE_STATUS_OK
= 0,
393
FLAC__STREAM_ENCODER_WRITE_STATUS_FATAL_ERROR
396
}
FLAC__StreamEncoderWriteStatus
;
397
403
extern
FLAC_API
const
char
*
const
FLAC__StreamEncoderWriteStatusString
[];
404
405
408
typedef
enum
{
409
410
FLAC__STREAM_ENCODER_SEEK_STATUS_OK
,
413
FLAC__STREAM_ENCODER_SEEK_STATUS_ERROR
,
416
FLAC__STREAM_ENCODER_SEEK_STATUS_UNSUPPORTED
419
}
FLAC__StreamEncoderSeekStatus
;
420
426
extern
FLAC_API
const
char
*
const
FLAC__StreamEncoderSeekStatusString
[];
427
428
431
typedef
enum
{
432
433
FLAC__STREAM_ENCODER_TELL_STATUS_OK
,
436
FLAC__STREAM_ENCODER_TELL_STATUS_ERROR
,
439
FLAC__STREAM_ENCODER_TELL_STATUS_UNSUPPORTED
442
}
FLAC__StreamEncoderTellStatus
;
443
449
extern
FLAC_API
const
char
*
const
FLAC__StreamEncoderTellStatusString
[];
450
451
452
/***********************************************************************
453
*
454
* class FLAC__StreamEncoder
455
*
456
***********************************************************************/
457
458
struct
FLAC__StreamEncoderProtected;
459
struct
FLAC__StreamEncoderPrivate;
464
typedef
struct
{
465
struct
FLAC__StreamEncoderProtected *protected_;
/* avoid the C++ keyword 'protected' */
466
struct
FLAC__StreamEncoderPrivate *private_;
/* avoid the C++ keyword 'private' */
467
}
FLAC__StreamEncoder
;
468
518
typedef
FLAC__StreamEncoderReadStatus
(*
FLAC__StreamEncoderReadCallback
)(
const
FLAC__StreamEncoder
*encoder, FLAC__byte buffer[],
size_t
*bytes,
void
*client_data);
519
556
typedef
FLAC__StreamEncoderWriteStatus
(*
FLAC__StreamEncoderWriteCallback
)(
const
FLAC__StreamEncoder
*encoder,
const
FLAC__byte buffer[],
size_t
bytes,
unsigned
samples,
unsigned
current_frame,
void
*client_data);
557
590
typedef
FLAC__StreamEncoderSeekStatus
(*
FLAC__StreamEncoderSeekCallback
)(
const
FLAC__StreamEncoder
*encoder, FLAC__uint64 absolute_byte_offset,
void
*client_data);
591
635
typedef
FLAC__StreamEncoderTellStatus
(*
FLAC__StreamEncoderTellCallback
)(
const
FLAC__StreamEncoder
*encoder, FLAC__uint64 *absolute_byte_offset,
void
*client_data);
636
654
typedef
void (*
FLAC__StreamEncoderMetadataCallback
)(
const
FLAC__StreamEncoder
*encoder,
const
FLAC__StreamMetadata
*metadata,
void
*client_data);
655
677
typedef
void (*
FLAC__StreamEncoderProgressCallback
)(
const
FLAC__StreamEncoder
*encoder, FLAC__uint64 bytes_written, FLAC__uint64 samples_written,
unsigned
frames_written,
unsigned
total_frames_estimate,
void
*client_data);
678
679
680
/***********************************************************************
681
*
682
* Class constructor/destructor
683
*
684
***********************************************************************/
685
693
FLAC_API
FLAC__StreamEncoder
*
FLAC__stream_encoder_new
(
void
);
694
701
FLAC_API
void
FLAC__stream_encoder_delete
(
FLAC__StreamEncoder
*encoder);
702
703
704
/***********************************************************************
705
*
706
* Public class method prototypes
707
*
708
***********************************************************************/
709
727
FLAC_API FLAC__bool
FLAC__stream_encoder_set_ogg_serial_number
(
FLAC__StreamEncoder
*encoder,
long
serial_number);
728
743
FLAC_API FLAC__bool
FLAC__stream_encoder_set_verify
(
FLAC__StreamEncoder
*encoder, FLAC__bool value);
744
761
FLAC_API FLAC__bool
FLAC__stream_encoder_set_streamable_subset
(
FLAC__StreamEncoder
*encoder, FLAC__bool value);
762
773
FLAC_API FLAC__bool
FLAC__stream_encoder_set_channels
(
FLAC__StreamEncoder
*encoder,
unsigned
value);
774
789
FLAC_API FLAC__bool
FLAC__stream_encoder_set_bits_per_sample
(
FLAC__StreamEncoder
*encoder,
unsigned
value);
790
801
FLAC_API FLAC__bool
FLAC__stream_encoder_set_sample_rate
(
FLAC__StreamEncoder
*encoder,
unsigned
value);
802
864
FLAC_API FLAC__bool
FLAC__stream_encoder_set_compression_level
(
FLAC__StreamEncoder
*encoder,
unsigned
value);
865
879
FLAC_API FLAC__bool
FLAC__stream_encoder_set_blocksize
(
FLAC__StreamEncoder
*encoder,
unsigned
value);
880
893
FLAC_API FLAC__bool
FLAC__stream_encoder_set_do_mid_side_stereo
(
FLAC__StreamEncoder
*encoder, FLAC__bool value);
894
909
FLAC_API FLAC__bool
FLAC__stream_encoder_set_loose_mid_side_stereo
(
FLAC__StreamEncoder
*encoder, FLAC__bool value);
910
954
FLAC_API FLAC__bool
FLAC__stream_encoder_set_apodization
(
FLAC__StreamEncoder
*encoder,
const
char
*specification);
955
966
FLAC_API FLAC__bool
FLAC__stream_encoder_set_max_lpc_order
(
FLAC__StreamEncoder
*encoder,
unsigned
value);
967
984
FLAC_API FLAC__bool
FLAC__stream_encoder_set_qlp_coeff_precision
(
FLAC__StreamEncoder
*encoder,
unsigned
value);
985
998
FLAC_API FLAC__bool
FLAC__stream_encoder_set_do_qlp_coeff_prec_search
(
FLAC__StreamEncoder
*encoder, FLAC__bool value);
999
1010
FLAC_API FLAC__bool
FLAC__stream_encoder_set_do_escape_coding
(
FLAC__StreamEncoder
*encoder, FLAC__bool value);
1011
1024
FLAC_API FLAC__bool
FLAC__stream_encoder_set_do_exhaustive_model_search
(
FLAC__StreamEncoder
*encoder, FLAC__bool value);
1025
1047
FLAC_API FLAC__bool
FLAC__stream_encoder_set_min_residual_partition_order
(
FLAC__StreamEncoder
*encoder,
unsigned
value);
1048
1070
FLAC_API FLAC__bool
FLAC__stream_encoder_set_max_residual_partition_order
(
FLAC__StreamEncoder
*encoder,
unsigned
value);
1071
1082
FLAC_API FLAC__bool
FLAC__stream_encoder_set_rice_parameter_search_dist
(
FLAC__StreamEncoder
*encoder,
unsigned
value);
1083
1098
FLAC_API FLAC__bool
FLAC__stream_encoder_set_total_samples_estimate
(
FLAC__StreamEncoder
*encoder, FLAC__uint64 value);
1099
1181
FLAC_API FLAC__bool
FLAC__stream_encoder_set_metadata
(
FLAC__StreamEncoder
*encoder,
FLAC__StreamMetadata
**metadata,
unsigned
num_blocks);
1182
1191
FLAC_API
FLAC__StreamEncoderState
FLAC__stream_encoder_get_state
(
const
FLAC__StreamEncoder
*encoder);
1192
1203
FLAC_API
FLAC__StreamDecoderState
FLAC__stream_encoder_get_verify_decoder_state
(
const
FLAC__StreamEncoder
*encoder);
1204
1216
FLAC_API
const
char
*
FLAC__stream_encoder_get_resolved_state_string
(
const
FLAC__StreamEncoder
*encoder);
1217
1235
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);
1236
1245
FLAC_API FLAC__bool
FLAC__stream_encoder_get_verify
(
const
FLAC__StreamEncoder
*encoder);
1246
1255
FLAC_API FLAC__bool
FLAC__stream_encoder_get_streamable_subset
(
const
FLAC__StreamEncoder
*encoder);
1256
1265
FLAC_API
unsigned
FLAC__stream_encoder_get_channels
(
const
FLAC__StreamEncoder
*encoder);
1266
1275
FLAC_API
unsigned
FLAC__stream_encoder_get_bits_per_sample
(
const
FLAC__StreamEncoder
*encoder);
1276
1285
FLAC_API
unsigned
FLAC__stream_encoder_get_sample_rate
(
const
FLAC__StreamEncoder
*encoder);
1286
1295
FLAC_API
unsigned
FLAC__stream_encoder_get_blocksize
(
const
FLAC__StreamEncoder
*encoder);
1296
1305
FLAC_API FLAC__bool
FLAC__stream_encoder_get_do_mid_side_stereo
(
const
FLAC__StreamEncoder
*encoder);
1306
1315
FLAC_API FLAC__bool
FLAC__stream_encoder_get_loose_mid_side_stereo
(
const
FLAC__StreamEncoder
*encoder);
1316
1325
FLAC_API
unsigned
FLAC__stream_encoder_get_max_lpc_order
(
const
FLAC__StreamEncoder
*encoder);
1326
1335
FLAC_API
unsigned
FLAC__stream_encoder_get_qlp_coeff_precision
(
const
FLAC__StreamEncoder
*encoder);
1336
1345
FLAC_API FLAC__bool
FLAC__stream_encoder_get_do_qlp_coeff_prec_search
(
const
FLAC__StreamEncoder
*encoder);
1346
1355
FLAC_API FLAC__bool
FLAC__stream_encoder_get_do_escape_coding
(
const
FLAC__StreamEncoder
*encoder);
1356
1365
FLAC_API FLAC__bool
FLAC__stream_encoder_get_do_exhaustive_model_search
(
const
FLAC__StreamEncoder
*encoder);
1366
1375
FLAC_API
unsigned
FLAC__stream_encoder_get_min_residual_partition_order
(
const
FLAC__StreamEncoder
*encoder);
1376
1385
FLAC_API
unsigned
FLAC__stream_encoder_get_max_residual_partition_order
(
const
FLAC__StreamEncoder
*encoder);
1386
1395
FLAC_API
unsigned
FLAC__stream_encoder_get_rice_parameter_search_dist
(
const
FLAC__StreamEncoder
*encoder);
1396
1408
FLAC_API FLAC__uint64
FLAC__stream_encoder_get_total_samples_estimate
(
const
FLAC__StreamEncoder
*encoder);
1409
1471
FLAC_API
FLAC__StreamEncoderInitStatus
FLAC__stream_encoder_init_stream
(
FLAC__StreamEncoder
*encoder,
FLAC__StreamEncoderWriteCallback
write_callback,
FLAC__StreamEncoderSeekCallback
seek_callback,
FLAC__StreamEncoderTellCallback
tell_callback,
FLAC__StreamEncoderMetadataCallback
metadata_callback,
void
*client_data);
1472
1539
FLAC_API
FLAC__StreamEncoderInitStatus
FLAC__stream_encoder_init_ogg_stream
(
FLAC__StreamEncoder
*encoder,
FLAC__StreamEncoderReadCallback
read_callback,
FLAC__StreamEncoderWriteCallback
write_callback,
FLAC__StreamEncoderSeekCallback
seek_callback,
FLAC__StreamEncoderTellCallback
tell_callback,
FLAC__StreamEncoderMetadataCallback
metadata_callback,
void
*client_data);
1540
1574
FLAC_API
FLAC__StreamEncoderInitStatus
FLAC__stream_encoder_init_FILE
(
FLAC__StreamEncoder
*encoder, FILE *file,
FLAC__StreamEncoderProgressCallback
progress_callback,
void
*client_data);
1575
1609
FLAC_API
FLAC__StreamEncoderInitStatus
FLAC__stream_encoder_init_ogg_FILE
(
FLAC__StreamEncoder
*encoder, FILE *file,
FLAC__StreamEncoderProgressCallback
progress_callback,
void
*client_data);
1610
1641
FLAC_API
FLAC__StreamEncoderInitStatus
FLAC__stream_encoder_init_file
(
FLAC__StreamEncoder
*encoder,
const
char
*filename,
FLAC__StreamEncoderProgressCallback
progress_callback,
void
*client_data);
1642
1673
FLAC_API
FLAC__StreamEncoderInitStatus
FLAC__stream_encoder_init_ogg_file
(
FLAC__StreamEncoder
*encoder,
const
char
*filename,
FLAC__StreamEncoderProgressCallback
progress_callback,
void
*client_data);
1674
1701
FLAC_API FLAC__bool
FLAC__stream_encoder_finish
(
FLAC__StreamEncoder
*encoder);
1702
1728
FLAC_API FLAC__bool
FLAC__stream_encoder_process
(
FLAC__StreamEncoder
*encoder,
const
FLAC__int32 *
const
buffer[],
unsigned
samples);
1729
1760
FLAC_API FLAC__bool
FLAC__stream_encoder_process_interleaved
(
FLAC__StreamEncoder
*encoder,
const
FLAC__int32 buffer[],
unsigned
samples);
1761
1762
/* \} */
1763
1764
#ifdef __cplusplus
1765
}
1766
#endif
1767
1768
#endif
Copyright (c) 2000,2001,2002,2003,2004,2005,2006,2007,2008,2009 Josh Coalson