FLAC
1.3.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-2009 Josh Coalson
3
* Copyright (C) 2011-2014 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_ENCODER_H
34
#define FLAC__STREAM_ENCODER_H
35
36
#include <stdio.h>
/* for FILE */
37
#include "
export.h
"
38
#include "
format.h
"
39
#include "
stream_decoder.h
"
40
41
#ifdef __cplusplus
42
extern
"C"
{
43
#endif
44
45
241
typedef
enum
{
242
243
FLAC__STREAM_ENCODER_OK
= 0,
246
FLAC__STREAM_ENCODER_UNINITIALIZED
,
252
FLAC__STREAM_ENCODER_OGG_ERROR
,
255
FLAC__STREAM_ENCODER_VERIFY_DECODER_ERROR
,
260
FLAC__STREAM_ENCODER_VERIFY_MISMATCH_IN_AUDIO_DATA
,
265
FLAC__STREAM_ENCODER_CLIENT_ERROR
,
268
FLAC__STREAM_ENCODER_IO_ERROR
,
273
FLAC__STREAM_ENCODER_FRAMING_ERROR
,
278
FLAC__STREAM_ENCODER_MEMORY_ALLOCATION_ERROR
281
}
FLAC__StreamEncoderState
;
282
288
extern
FLAC_API
const
char
*
const
FLAC__StreamEncoderStateString
[];
289
290
293
typedef
enum
{
294
295
FLAC__STREAM_ENCODER_INIT_STATUS_OK
= 0,
298
FLAC__STREAM_ENCODER_INIT_STATUS_ENCODER_ERROR
,
301
FLAC__STREAM_ENCODER_INIT_STATUS_UNSUPPORTED_CONTAINER
,
306
FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_CALLBACKS
,
309
FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_NUMBER_OF_CHANNELS
,
312
FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_BITS_PER_SAMPLE
,
318
FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_SAMPLE_RATE
,
321
FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_BLOCK_SIZE
,
324
FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_MAX_LPC_ORDER
,
327
FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_QLP_COEFF_PRECISION
,
330
FLAC__STREAM_ENCODER_INIT_STATUS_BLOCK_SIZE_TOO_SMALL_FOR_LPC_ORDER
,
333
FLAC__STREAM_ENCODER_INIT_STATUS_NOT_STREAMABLE
,
336
FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_METADATA
,
345
FLAC__STREAM_ENCODER_INIT_STATUS_ALREADY_INITIALIZED
351
}
FLAC__StreamEncoderInitStatus
;
352
358
extern
FLAC_API
const
char
*
const
FLAC__StreamEncoderInitStatusString
[];
359
360
363
typedef
enum
{
364
365
FLAC__STREAM_ENCODER_READ_STATUS_CONTINUE
,
368
FLAC__STREAM_ENCODER_READ_STATUS_END_OF_STREAM
,
371
FLAC__STREAM_ENCODER_READ_STATUS_ABORT
,
374
FLAC__STREAM_ENCODER_READ_STATUS_UNSUPPORTED
377
}
FLAC__StreamEncoderReadStatus
;
378
384
extern
FLAC_API
const
char
*
const
FLAC__StreamEncoderReadStatusString
[];
385
386
389
typedef
enum
{
390
391
FLAC__STREAM_ENCODER_WRITE_STATUS_OK
= 0,
394
FLAC__STREAM_ENCODER_WRITE_STATUS_FATAL_ERROR
397
}
FLAC__StreamEncoderWriteStatus
;
398
404
extern
FLAC_API
const
char
*
const
FLAC__StreamEncoderWriteStatusString
[];
405
406
409
typedef
enum
{
410
411
FLAC__STREAM_ENCODER_SEEK_STATUS_OK
,
414
FLAC__STREAM_ENCODER_SEEK_STATUS_ERROR
,
417
FLAC__STREAM_ENCODER_SEEK_STATUS_UNSUPPORTED
420
}
FLAC__StreamEncoderSeekStatus
;
421
427
extern
FLAC_API
const
char
*
const
FLAC__StreamEncoderSeekStatusString
[];
428
429
432
typedef
enum
{
433
434
FLAC__STREAM_ENCODER_TELL_STATUS_OK
,
437
FLAC__STREAM_ENCODER_TELL_STATUS_ERROR
,
440
FLAC__STREAM_ENCODER_TELL_STATUS_UNSUPPORTED
443
}
FLAC__StreamEncoderTellStatus
;
444
450
extern
FLAC_API
const
char
*
const
FLAC__StreamEncoderTellStatusString
[];
451
452
453
/***********************************************************************
454
*
455
* class FLAC__StreamEncoder
456
*
457
***********************************************************************/
458
459
struct
FLAC__StreamEncoderProtected;
460
struct
FLAC__StreamEncoderPrivate;
465
typedef
struct
{
466
struct
FLAC__StreamEncoderProtected *protected_;
/* avoid the C++ keyword 'protected' */
467
struct
FLAC__StreamEncoderPrivate *private_;
/* avoid the C++ keyword 'private' */
468
}
FLAC__StreamEncoder
;
469
519
typedef
FLAC__StreamEncoderReadStatus
(*
FLAC__StreamEncoderReadCallback
)(
const
FLAC__StreamEncoder
*encoder, FLAC__byte buffer[],
size_t
*bytes,
void
*client_data);
520
557
typedef
FLAC__StreamEncoderWriteStatus
(*
FLAC__StreamEncoderWriteCallback
)(
const
FLAC__StreamEncoder
*encoder,
const
FLAC__byte buffer[],
size_t
bytes,
unsigned
samples,
unsigned
current_frame,
void
*client_data);
558
591
typedef
FLAC__StreamEncoderSeekStatus
(*
FLAC__StreamEncoderSeekCallback
)(
const
FLAC__StreamEncoder
*encoder, FLAC__uint64 absolute_byte_offset,
void
*client_data);
592
636
typedef
FLAC__StreamEncoderTellStatus
(*
FLAC__StreamEncoderTellCallback
)(
const
FLAC__StreamEncoder
*encoder, FLAC__uint64 *absolute_byte_offset,
void
*client_data);
637
655
typedef
void (*
FLAC__StreamEncoderMetadataCallback
)(
const
FLAC__StreamEncoder
*encoder,
const
FLAC__StreamMetadata
*metadata,
void
*client_data);
656
678
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);
679
680
681
/***********************************************************************
682
*
683
* Class constructor/destructor
684
*
685
***********************************************************************/
686
694
FLAC_API
FLAC__StreamEncoder
*
FLAC__stream_encoder_new
(
void
);
695
702
FLAC_API
void
FLAC__stream_encoder_delete
(
FLAC__StreamEncoder
*encoder);
703
704
705
/***********************************************************************
706
*
707
* Public class method prototypes
708
*
709
***********************************************************************/
710
728
FLAC_API FLAC__bool
FLAC__stream_encoder_set_ogg_serial_number
(
FLAC__StreamEncoder
*encoder,
long
serial_number);
729
744
FLAC_API FLAC__bool
FLAC__stream_encoder_set_verify
(
FLAC__StreamEncoder
*encoder, FLAC__bool value);
745
762
FLAC_API FLAC__bool
FLAC__stream_encoder_set_streamable_subset
(
FLAC__StreamEncoder
*encoder, FLAC__bool value);
763
774
FLAC_API FLAC__bool
FLAC__stream_encoder_set_channels
(
FLAC__StreamEncoder
*encoder,
unsigned
value);
775
790
FLAC_API FLAC__bool
FLAC__stream_encoder_set_bits_per_sample
(
FLAC__StreamEncoder
*encoder,
unsigned
value);
791
802
FLAC_API FLAC__bool
FLAC__stream_encoder_set_sample_rate
(
FLAC__StreamEncoder
*encoder,
unsigned
value);
803
865
FLAC_API FLAC__bool
FLAC__stream_encoder_set_compression_level
(
FLAC__StreamEncoder
*encoder,
unsigned
value);
866
880
FLAC_API FLAC__bool
FLAC__stream_encoder_set_blocksize
(
FLAC__StreamEncoder
*encoder,
unsigned
value);
881
894
FLAC_API FLAC__bool
FLAC__stream_encoder_set_do_mid_side_stereo
(
FLAC__StreamEncoder
*encoder, FLAC__bool value);
895
910
FLAC_API FLAC__bool
FLAC__stream_encoder_set_loose_mid_side_stereo
(
FLAC__StreamEncoder
*encoder, FLAC__bool value);
911
976
FLAC_API FLAC__bool
FLAC__stream_encoder_set_apodization
(
FLAC__StreamEncoder
*encoder,
const
char
*specification);
977
988
FLAC_API FLAC__bool
FLAC__stream_encoder_set_max_lpc_order
(
FLAC__StreamEncoder
*encoder,
unsigned
value);
989
1006
FLAC_API FLAC__bool
FLAC__stream_encoder_set_qlp_coeff_precision
(
FLAC__StreamEncoder
*encoder,
unsigned
value);
1007
1020
FLAC_API FLAC__bool
FLAC__stream_encoder_set_do_qlp_coeff_prec_search
(
FLAC__StreamEncoder
*encoder, FLAC__bool value);
1021
1032
FLAC_API FLAC__bool
FLAC__stream_encoder_set_do_escape_coding
(
FLAC__StreamEncoder
*encoder, FLAC__bool value);
1033
1046
FLAC_API FLAC__bool
FLAC__stream_encoder_set_do_exhaustive_model_search
(
FLAC__StreamEncoder
*encoder, FLAC__bool value);
1047
1069
FLAC_API FLAC__bool
FLAC__stream_encoder_set_min_residual_partition_order
(
FLAC__StreamEncoder
*encoder,
unsigned
value);
1070
1092
FLAC_API FLAC__bool
FLAC__stream_encoder_set_max_residual_partition_order
(
FLAC__StreamEncoder
*encoder,
unsigned
value);
1093
1104
FLAC_API FLAC__bool
FLAC__stream_encoder_set_rice_parameter_search_dist
(
FLAC__StreamEncoder
*encoder,
unsigned
value);
1105
1120
FLAC_API FLAC__bool
FLAC__stream_encoder_set_total_samples_estimate
(
FLAC__StreamEncoder
*encoder, FLAC__uint64 value);
1121
1203
FLAC_API FLAC__bool
FLAC__stream_encoder_set_metadata
(
FLAC__StreamEncoder
*encoder,
FLAC__StreamMetadata
**metadata,
unsigned
num_blocks);
1204
1213
FLAC_API
FLAC__StreamEncoderState
FLAC__stream_encoder_get_state
(
const
FLAC__StreamEncoder
*encoder);
1214
1225
FLAC_API
FLAC__StreamDecoderState
FLAC__stream_encoder_get_verify_decoder_state
(
const
FLAC__StreamEncoder
*encoder);
1226
1238
FLAC_API
const
char
*
FLAC__stream_encoder_get_resolved_state_string
(
const
FLAC__StreamEncoder
*encoder);
1239
1257
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);
1258
1267
FLAC_API FLAC__bool
FLAC__stream_encoder_get_verify
(
const
FLAC__StreamEncoder
*encoder);
1268
1277
FLAC_API FLAC__bool
FLAC__stream_encoder_get_streamable_subset
(
const
FLAC__StreamEncoder
*encoder);
1278
1287
FLAC_API
unsigned
FLAC__stream_encoder_get_channels
(
const
FLAC__StreamEncoder
*encoder);
1288
1297
FLAC_API
unsigned
FLAC__stream_encoder_get_bits_per_sample
(
const
FLAC__StreamEncoder
*encoder);
1298
1307
FLAC_API
unsigned
FLAC__stream_encoder_get_sample_rate
(
const
FLAC__StreamEncoder
*encoder);
1308
1317
FLAC_API
unsigned
FLAC__stream_encoder_get_blocksize
(
const
FLAC__StreamEncoder
*encoder);
1318
1327
FLAC_API FLAC__bool
FLAC__stream_encoder_get_do_mid_side_stereo
(
const
FLAC__StreamEncoder
*encoder);
1328
1337
FLAC_API FLAC__bool
FLAC__stream_encoder_get_loose_mid_side_stereo
(
const
FLAC__StreamEncoder
*encoder);
1338
1347
FLAC_API
unsigned
FLAC__stream_encoder_get_max_lpc_order
(
const
FLAC__StreamEncoder
*encoder);
1348
1357
FLAC_API
unsigned
FLAC__stream_encoder_get_qlp_coeff_precision
(
const
FLAC__StreamEncoder
*encoder);
1358
1367
FLAC_API FLAC__bool
FLAC__stream_encoder_get_do_qlp_coeff_prec_search
(
const
FLAC__StreamEncoder
*encoder);
1368
1377
FLAC_API FLAC__bool
FLAC__stream_encoder_get_do_escape_coding
(
const
FLAC__StreamEncoder
*encoder);
1378
1387
FLAC_API FLAC__bool
FLAC__stream_encoder_get_do_exhaustive_model_search
(
const
FLAC__StreamEncoder
*encoder);
1388
1397
FLAC_API
unsigned
FLAC__stream_encoder_get_min_residual_partition_order
(
const
FLAC__StreamEncoder
*encoder);
1398
1407
FLAC_API
unsigned
FLAC__stream_encoder_get_max_residual_partition_order
(
const
FLAC__StreamEncoder
*encoder);
1408
1417
FLAC_API
unsigned
FLAC__stream_encoder_get_rice_parameter_search_dist
(
const
FLAC__StreamEncoder
*encoder);
1418
1430
FLAC_API FLAC__uint64
FLAC__stream_encoder_get_total_samples_estimate
(
const
FLAC__StreamEncoder
*encoder);
1431
1493
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);
1494
1561
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);
1562
1596
FLAC_API
FLAC__StreamEncoderInitStatus
FLAC__stream_encoder_init_FILE
(
FLAC__StreamEncoder
*encoder, FILE *file,
FLAC__StreamEncoderProgressCallback
progress_callback,
void
*client_data);
1597
1631
FLAC_API
FLAC__StreamEncoderInitStatus
FLAC__stream_encoder_init_ogg_FILE
(
FLAC__StreamEncoder
*encoder, FILE *file,
FLAC__StreamEncoderProgressCallback
progress_callback,
void
*client_data);
1632
1663
FLAC_API
FLAC__StreamEncoderInitStatus
FLAC__stream_encoder_init_file
(
FLAC__StreamEncoder
*encoder,
const
char
*filename,
FLAC__StreamEncoderProgressCallback
progress_callback,
void
*client_data);
1664
1695
FLAC_API
FLAC__StreamEncoderInitStatus
FLAC__stream_encoder_init_ogg_file
(
FLAC__StreamEncoder
*encoder,
const
char
*filename,
FLAC__StreamEncoderProgressCallback
progress_callback,
void
*client_data);
1696
1723
FLAC_API FLAC__bool
FLAC__stream_encoder_finish
(
FLAC__StreamEncoder
*encoder);
1724
1750
FLAC_API FLAC__bool
FLAC__stream_encoder_process
(
FLAC__StreamEncoder
*encoder,
const
FLAC__int32 *
const
buffer[],
unsigned
samples);
1751
1782
FLAC_API FLAC__bool
FLAC__stream_encoder_process_interleaved
(
FLAC__StreamEncoder
*encoder,
const
FLAC__int32 buffer[],
unsigned
samples);
1783
1784
/* \} */
1785
1786
#ifdef __cplusplus
1787
}
1788
#endif
1789
1790
#endif
Copyright (c) 2000-2009 Josh Coalson Copyright (c) 2011-2014 Xiph.Org Foundation