FLAC
1.3.0
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-2013 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
955
FLAC_API FLAC__bool
FLAC__stream_encoder_set_apodization
(
FLAC__StreamEncoder
*encoder,
const
char
*specification);
956
967
FLAC_API FLAC__bool
FLAC__stream_encoder_set_max_lpc_order
(
FLAC__StreamEncoder
*encoder,
unsigned
value);
968
985
FLAC_API FLAC__bool
FLAC__stream_encoder_set_qlp_coeff_precision
(
FLAC__StreamEncoder
*encoder,
unsigned
value);
986
999
FLAC_API FLAC__bool
FLAC__stream_encoder_set_do_qlp_coeff_prec_search
(
FLAC__StreamEncoder
*encoder, FLAC__bool value);
1000
1011
FLAC_API FLAC__bool
FLAC__stream_encoder_set_do_escape_coding
(
FLAC__StreamEncoder
*encoder, FLAC__bool value);
1012
1025
FLAC_API FLAC__bool
FLAC__stream_encoder_set_do_exhaustive_model_search
(
FLAC__StreamEncoder
*encoder, FLAC__bool value);
1026
1048
FLAC_API FLAC__bool
FLAC__stream_encoder_set_min_residual_partition_order
(
FLAC__StreamEncoder
*encoder,
unsigned
value);
1049
1071
FLAC_API FLAC__bool
FLAC__stream_encoder_set_max_residual_partition_order
(
FLAC__StreamEncoder
*encoder,
unsigned
value);
1072
1083
FLAC_API FLAC__bool
FLAC__stream_encoder_set_rice_parameter_search_dist
(
FLAC__StreamEncoder
*encoder,
unsigned
value);
1084
1099
FLAC_API FLAC__bool
FLAC__stream_encoder_set_total_samples_estimate
(
FLAC__StreamEncoder
*encoder, FLAC__uint64 value);
1100
1182
FLAC_API FLAC__bool
FLAC__stream_encoder_set_metadata
(
FLAC__StreamEncoder
*encoder,
FLAC__StreamMetadata
**metadata,
unsigned
num_blocks);
1183
1192
FLAC_API
FLAC__StreamEncoderState
FLAC__stream_encoder_get_state
(
const
FLAC__StreamEncoder
*encoder);
1193
1204
FLAC_API
FLAC__StreamDecoderState
FLAC__stream_encoder_get_verify_decoder_state
(
const
FLAC__StreamEncoder
*encoder);
1205
1217
FLAC_API
const
char
*
FLAC__stream_encoder_get_resolved_state_string
(
const
FLAC__StreamEncoder
*encoder);
1218
1236
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);
1237
1246
FLAC_API FLAC__bool
FLAC__stream_encoder_get_verify
(
const
FLAC__StreamEncoder
*encoder);
1247
1256
FLAC_API FLAC__bool
FLAC__stream_encoder_get_streamable_subset
(
const
FLAC__StreamEncoder
*encoder);
1257
1266
FLAC_API
unsigned
FLAC__stream_encoder_get_channels
(
const
FLAC__StreamEncoder
*encoder);
1267
1276
FLAC_API
unsigned
FLAC__stream_encoder_get_bits_per_sample
(
const
FLAC__StreamEncoder
*encoder);
1277
1286
FLAC_API
unsigned
FLAC__stream_encoder_get_sample_rate
(
const
FLAC__StreamEncoder
*encoder);
1287
1296
FLAC_API
unsigned
FLAC__stream_encoder_get_blocksize
(
const
FLAC__StreamEncoder
*encoder);
1297
1306
FLAC_API FLAC__bool
FLAC__stream_encoder_get_do_mid_side_stereo
(
const
FLAC__StreamEncoder
*encoder);
1307
1316
FLAC_API FLAC__bool
FLAC__stream_encoder_get_loose_mid_side_stereo
(
const
FLAC__StreamEncoder
*encoder);
1317
1326
FLAC_API
unsigned
FLAC__stream_encoder_get_max_lpc_order
(
const
FLAC__StreamEncoder
*encoder);
1327
1336
FLAC_API
unsigned
FLAC__stream_encoder_get_qlp_coeff_precision
(
const
FLAC__StreamEncoder
*encoder);
1337
1346
FLAC_API FLAC__bool
FLAC__stream_encoder_get_do_qlp_coeff_prec_search
(
const
FLAC__StreamEncoder
*encoder);
1347
1356
FLAC_API FLAC__bool
FLAC__stream_encoder_get_do_escape_coding
(
const
FLAC__StreamEncoder
*encoder);
1357
1366
FLAC_API FLAC__bool
FLAC__stream_encoder_get_do_exhaustive_model_search
(
const
FLAC__StreamEncoder
*encoder);
1367
1376
FLAC_API
unsigned
FLAC__stream_encoder_get_min_residual_partition_order
(
const
FLAC__StreamEncoder
*encoder);
1377
1386
FLAC_API
unsigned
FLAC__stream_encoder_get_max_residual_partition_order
(
const
FLAC__StreamEncoder
*encoder);
1387
1396
FLAC_API
unsigned
FLAC__stream_encoder_get_rice_parameter_search_dist
(
const
FLAC__StreamEncoder
*encoder);
1397
1409
FLAC_API FLAC__uint64
FLAC__stream_encoder_get_total_samples_estimate
(
const
FLAC__StreamEncoder
*encoder);
1410
1472
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);
1473
1540
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);
1541
1575
FLAC_API
FLAC__StreamEncoderInitStatus
FLAC__stream_encoder_init_FILE
(
FLAC__StreamEncoder
*encoder, FILE *file,
FLAC__StreamEncoderProgressCallback
progress_callback,
void
*client_data);
1576
1610
FLAC_API
FLAC__StreamEncoderInitStatus
FLAC__stream_encoder_init_ogg_FILE
(
FLAC__StreamEncoder
*encoder, FILE *file,
FLAC__StreamEncoderProgressCallback
progress_callback,
void
*client_data);
1611
1642
FLAC_API
FLAC__StreamEncoderInitStatus
FLAC__stream_encoder_init_file
(
FLAC__StreamEncoder
*encoder,
const
char
*filename,
FLAC__StreamEncoderProgressCallback
progress_callback,
void
*client_data);
1643
1674
FLAC_API
FLAC__StreamEncoderInitStatus
FLAC__stream_encoder_init_ogg_file
(
FLAC__StreamEncoder
*encoder,
const
char
*filename,
FLAC__StreamEncoderProgressCallback
progress_callback,
void
*client_data);
1675
1702
FLAC_API FLAC__bool
FLAC__stream_encoder_finish
(
FLAC__StreamEncoder
*encoder);
1703
1729
FLAC_API FLAC__bool
FLAC__stream_encoder_process
(
FLAC__StreamEncoder
*encoder,
const
FLAC__int32 *
const
buffer[],
unsigned
samples);
1730
1761
FLAC_API FLAC__bool
FLAC__stream_encoder_process_interleaved
(
FLAC__StreamEncoder
*encoder,
const
FLAC__int32 buffer[],
unsigned
samples);
1762
1763
/* \} */
1764
1765
#ifdef __cplusplus
1766
}
1767
#endif
1768
1769
#endif
Copyright (c) 2000-2009 Josh Coalson Copyright (c) 2011-2013 Xiph.Org Foundation