FLAC
1.3.1
Main Page
Modules
Classes
Files
File List
File Members
include
FLAC
metadata.h
Go to the documentation of this file.
1
/* libFLAC - Free Lossless Audio Codec library
2
* Copyright (C) 2001-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__METADATA_H
34
#define FLAC__METADATA_H
35
36
#include <sys/types.h>
/* for off_t */
37
#include "
export.h
"
38
#include "
callback.h
"
39
#include "
format.h
"
40
41
/* --------------------------------------------------------------------
42
(For an example of how all these routines are used, see the source
43
code for the unit tests in src/test_libFLAC/metadata_*.c, or
44
metaflac in src/metaflac/)
45
------------------------------------------------------------------*/
46
124
#ifdef __cplusplus
125
extern
"C"
{
126
#endif
127
128
159
FLAC_API FLAC__bool
FLAC__metadata_get_streaminfo
(
const
char
*filename,
FLAC__StreamMetadata
*streaminfo);
160
178
FLAC_API FLAC__bool
FLAC__metadata_get_tags
(
const
char
*filename,
FLAC__StreamMetadata
**tags);
179
197
FLAC_API FLAC__bool
FLAC__metadata_get_cuesheet
(
const
char
*filename,
FLAC__StreamMetadata
**cuesheet);
198
237
FLAC_API FLAC__bool
FLAC__metadata_get_picture
(
const
char
*filename,
FLAC__StreamMetadata
**picture,
FLAC__StreamMetadata_Picture_Type
type,
const
char
*mime_type,
const
FLAC__byte *description,
unsigned
max_width,
unsigned
max_height,
unsigned
max_depth,
unsigned
max_colors);
238
239
/* \} */
240
241
297
struct
FLAC__Metadata_SimpleIterator
;
303
typedef
struct
FLAC__Metadata_SimpleIterator
FLAC__Metadata_SimpleIterator
;
304
309
typedef
enum
{
310
311
FLAC__METADATA_SIMPLE_ITERATOR_STATUS_OK
= 0,
314
FLAC__METADATA_SIMPLE_ITERATOR_STATUS_ILLEGAL_INPUT
,
317
FLAC__METADATA_SIMPLE_ITERATOR_STATUS_ERROR_OPENING_FILE
,
320
FLAC__METADATA_SIMPLE_ITERATOR_STATUS_NOT_A_FLAC_FILE
,
323
FLAC__METADATA_SIMPLE_ITERATOR_STATUS_NOT_WRITABLE
,
326
FLAC__METADATA_SIMPLE_ITERATOR_STATUS_BAD_METADATA
,
329
FLAC__METADATA_SIMPLE_ITERATOR_STATUS_READ_ERROR
,
332
FLAC__METADATA_SIMPLE_ITERATOR_STATUS_SEEK_ERROR
,
335
FLAC__METADATA_SIMPLE_ITERATOR_STATUS_WRITE_ERROR
,
338
FLAC__METADATA_SIMPLE_ITERATOR_STATUS_RENAME_ERROR
,
341
FLAC__METADATA_SIMPLE_ITERATOR_STATUS_UNLINK_ERROR
,
344
FLAC__METADATA_SIMPLE_ITERATOR_STATUS_MEMORY_ALLOCATION_ERROR
,
347
FLAC__METADATA_SIMPLE_ITERATOR_STATUS_INTERNAL_ERROR
350
}
FLAC__Metadata_SimpleIteratorStatus
;
351
357
extern
FLAC_API
const
char
*
const
FLAC__Metadata_SimpleIteratorStatusString
[];
358
359
365
FLAC_API
FLAC__Metadata_SimpleIterator
*
FLAC__metadata_simple_iterator_new
(
void
);
366
373
FLAC_API
void
FLAC__metadata_simple_iterator_delete
(
FLAC__Metadata_SimpleIterator
*iterator);
374
385
FLAC_API
FLAC__Metadata_SimpleIteratorStatus
FLAC__metadata_simple_iterator_status
(
FLAC__Metadata_SimpleIterator
*iterator);
386
406
FLAC_API FLAC__bool
FLAC__metadata_simple_iterator_init
(
FLAC__Metadata_SimpleIterator
*iterator,
const
char
*filename, FLAC__bool read_only, FLAC__bool preserve_file_stats);
407
418
FLAC_API FLAC__bool
FLAC__metadata_simple_iterator_is_writable
(
const
FLAC__Metadata_SimpleIterator
*iterator);
419
432
FLAC_API FLAC__bool
FLAC__metadata_simple_iterator_next
(
FLAC__Metadata_SimpleIterator
*iterator);
433
446
FLAC_API FLAC__bool
FLAC__metadata_simple_iterator_prev
(
FLAC__Metadata_SimpleIterator
*iterator);
447
459
FLAC_API FLAC__bool
FLAC__metadata_simple_iterator_is_last
(
const
FLAC__Metadata_SimpleIterator
*iterator);
460
475
FLAC_API off_t
FLAC__metadata_simple_iterator_get_block_offset
(
const
FLAC__Metadata_SimpleIterator
*iterator);
476
489
FLAC_API
FLAC__MetadataType
FLAC__metadata_simple_iterator_get_block_type
(
const
FLAC__Metadata_SimpleIterator
*iterator);
490
506
FLAC_API
unsigned
FLAC__metadata_simple_iterator_get_block_length
(
const
FLAC__Metadata_SimpleIterator
*iterator);
507
531
FLAC_API FLAC__bool
FLAC__metadata_simple_iterator_get_application_id
(
FLAC__Metadata_SimpleIterator
*iterator, FLAC__byte *
id
);
532
549
FLAC_API
FLAC__StreamMetadata
*
FLAC__metadata_simple_iterator_get_block
(
FLAC__Metadata_SimpleIterator
*iterator);
550
605
FLAC_API FLAC__bool
FLAC__metadata_simple_iterator_set_block
(
FLAC__Metadata_SimpleIterator
*iterator,
FLAC__StreamMetadata
*block, FLAC__bool use_padding);
606
630
FLAC_API FLAC__bool
FLAC__metadata_simple_iterator_insert_block_after
(
FLAC__Metadata_SimpleIterator
*iterator,
FLAC__StreamMetadata
*block, FLAC__bool use_padding);
631
649
FLAC_API FLAC__bool
FLAC__metadata_simple_iterator_delete_block
(
FLAC__Metadata_SimpleIterator
*iterator, FLAC__bool use_padding);
650
651
/* \} */
652
653
711
struct
FLAC__Metadata_Chain
;
714
typedef
struct
FLAC__Metadata_Chain
FLAC__Metadata_Chain
;
715
716
struct
FLAC__Metadata_Iterator
;
719
typedef
struct
FLAC__Metadata_Iterator
FLAC__Metadata_Iterator
;
720
721
typedef
enum
{
722
FLAC__METADATA_CHAIN_STATUS_OK
= 0,
725
FLAC__METADATA_CHAIN_STATUS_ILLEGAL_INPUT
,
728
FLAC__METADATA_CHAIN_STATUS_ERROR_OPENING_FILE
,
731
FLAC__METADATA_CHAIN_STATUS_NOT_A_FLAC_FILE
,
734
FLAC__METADATA_CHAIN_STATUS_NOT_WRITABLE
,
737
FLAC__METADATA_CHAIN_STATUS_BAD_METADATA
,
740
FLAC__METADATA_CHAIN_STATUS_READ_ERROR
,
743
FLAC__METADATA_CHAIN_STATUS_SEEK_ERROR
,
746
FLAC__METADATA_CHAIN_STATUS_WRITE_ERROR
,
749
FLAC__METADATA_CHAIN_STATUS_RENAME_ERROR
,
752
FLAC__METADATA_CHAIN_STATUS_UNLINK_ERROR
,
755
FLAC__METADATA_CHAIN_STATUS_MEMORY_ALLOCATION_ERROR
,
758
FLAC__METADATA_CHAIN_STATUS_INTERNAL_ERROR
,
761
FLAC__METADATA_CHAIN_STATUS_INVALID_CALLBACKS
,
764
FLAC__METADATA_CHAIN_STATUS_READ_WRITE_MISMATCH
,
773
FLAC__METADATA_CHAIN_STATUS_WRONG_WRITE_CALL
783
}
FLAC__Metadata_ChainStatus
;
784
790
extern
FLAC_API
const
char
*
const
FLAC__Metadata_ChainStatusString
[];
791
792
/*********** FLAC__Metadata_Chain ***********/
793
799
FLAC_API
FLAC__Metadata_Chain
*
FLAC__metadata_chain_new
(
void
);
800
807
FLAC_API
void
FLAC__metadata_chain_delete
(
FLAC__Metadata_Chain
*chain);
808
819
FLAC_API
FLAC__Metadata_ChainStatus
FLAC__metadata_chain_status
(
FLAC__Metadata_Chain
*chain);
820
833
FLAC_API FLAC__bool
FLAC__metadata_chain_read
(
FLAC__Metadata_Chain
*chain,
const
char
*filename);
834
850
FLAC_API FLAC__bool
FLAC__metadata_chain_read_ogg
(
FLAC__Metadata_Chain
*chain,
const
char
*filename);
851
872
FLAC_API FLAC__bool
FLAC__metadata_chain_read_with_callbacks
(
FLAC__Metadata_Chain
*chain,
FLAC__IOHandle
handle,
FLAC__IOCallbacks
callbacks);
873
897
FLAC_API FLAC__bool
FLAC__metadata_chain_read_ogg_with_callbacks
(
FLAC__Metadata_Chain
*chain,
FLAC__IOHandle
handle,
FLAC__IOCallbacks
callbacks);
898
925
FLAC_API FLAC__bool
FLAC__metadata_chain_check_if_tempfile_needed
(
FLAC__Metadata_Chain
*chain, FLAC__bool use_padding);
926
971
FLAC_API FLAC__bool
FLAC__metadata_chain_write
(
FLAC__Metadata_Chain
*chain, FLAC__bool use_padding, FLAC__bool preserve_file_stats);
972
1001
FLAC_API FLAC__bool
FLAC__metadata_chain_write_with_callbacks
(
FLAC__Metadata_Chain
*chain, FLAC__bool use_padding,
FLAC__IOHandle
handle,
FLAC__IOCallbacks
callbacks);
1002
1052
FLAC_API FLAC__bool
FLAC__metadata_chain_write_with_callbacks_and_tempfile
(
FLAC__Metadata_Chain
*chain, FLAC__bool use_padding,
FLAC__IOHandle
handle,
FLAC__IOCallbacks
callbacks,
FLAC__IOHandle
temp_handle,
FLAC__IOCallbacks
temp_callbacks);
1053
1066
FLAC_API
void
FLAC__metadata_chain_merge_padding
(
FLAC__Metadata_Chain
*chain);
1067
1081
FLAC_API
void
FLAC__metadata_chain_sort_padding
(
FLAC__Metadata_Chain
*chain);
1082
1083
1084
/*********** FLAC__Metadata_Iterator ***********/
1085
1091
FLAC_API
FLAC__Metadata_Iterator
*
FLAC__metadata_iterator_new
(
void
);
1092
1099
FLAC_API
void
FLAC__metadata_iterator_delete
(
FLAC__Metadata_Iterator
*iterator);
1100
1110
FLAC_API
void
FLAC__metadata_iterator_init
(
FLAC__Metadata_Iterator
*iterator,
FLAC__Metadata_Chain
*chain);
1111
1124
FLAC_API FLAC__bool
FLAC__metadata_iterator_next
(
FLAC__Metadata_Iterator
*iterator);
1125
1138
FLAC_API FLAC__bool
FLAC__metadata_iterator_prev
(
FLAC__Metadata_Iterator
*iterator);
1139
1150
FLAC_API
FLAC__MetadataType
FLAC__metadata_iterator_get_block_type
(
const
FLAC__Metadata_Iterator
*iterator);
1151
1171
FLAC_API
FLAC__StreamMetadata
*
FLAC__metadata_iterator_get_block
(
FLAC__Metadata_Iterator
*iterator);
1172
1188
FLAC_API FLAC__bool
FLAC__metadata_iterator_set_block
(
FLAC__Metadata_Iterator
*iterator,
FLAC__StreamMetadata
*block);
1189
1206
FLAC_API FLAC__bool
FLAC__metadata_iterator_delete_block
(
FLAC__Metadata_Iterator
*iterator, FLAC__bool replace_with_padding);
1207
1225
FLAC_API FLAC__bool
FLAC__metadata_iterator_insert_block_before
(
FLAC__Metadata_Iterator
*iterator,
FLAC__StreamMetadata
*block);
1226
1243
FLAC_API FLAC__bool
FLAC__metadata_iterator_insert_block_after
(
FLAC__Metadata_Iterator
*iterator,
FLAC__StreamMetadata
*block);
1244
1245
/* \} */
1246
1247
1313
FLAC_API
FLAC__StreamMetadata
*
FLAC__metadata_object_new
(
FLAC__MetadataType
type);
1314
1327
FLAC_API
FLAC__StreamMetadata
*
FLAC__metadata_object_clone
(
const
FLAC__StreamMetadata
*
object
);
1328
1338
FLAC_API
void
FLAC__metadata_object_delete
(
FLAC__StreamMetadata
*
object
);
1339
1353
FLAC_API FLAC__bool
FLAC__metadata_object_is_equal
(
const
FLAC__StreamMetadata
*block1,
const
FLAC__StreamMetadata
*block2);
1354
1376
FLAC_API FLAC__bool
FLAC__metadata_object_application_set_data
(
FLAC__StreamMetadata
*
object
, FLAC__byte *data,
unsigned
length, FLAC__bool copy);
1377
1393
FLAC_API FLAC__bool
FLAC__metadata_object_seektable_resize_points
(
FLAC__StreamMetadata
*
object
,
unsigned
new_num_points);
1394
1405
FLAC_API
void
FLAC__metadata_object_seektable_set_point
(
FLAC__StreamMetadata
*
object
,
unsigned
point_num,
FLAC__StreamMetadata_SeekPoint
point);
1406
1419
FLAC_API FLAC__bool
FLAC__metadata_object_seektable_insert_point
(
FLAC__StreamMetadata
*
object
,
unsigned
point_num,
FLAC__StreamMetadata_SeekPoint
point);
1420
1432
FLAC_API FLAC__bool
FLAC__metadata_object_seektable_delete_point
(
FLAC__StreamMetadata
*
object
,
unsigned
point_num);
1433
1445
FLAC_API FLAC__bool
FLAC__metadata_object_seektable_is_legal
(
const
FLAC__StreamMetadata
*
object
);
1446
1462
FLAC_API FLAC__bool
FLAC__metadata_object_seektable_template_append_placeholders
(
FLAC__StreamMetadata
*
object
,
unsigned
num);
1463
1479
FLAC_API FLAC__bool
FLAC__metadata_object_seektable_template_append_point
(
FLAC__StreamMetadata
*
object
, FLAC__uint64 sample_number);
1480
1497
FLAC_API FLAC__bool
FLAC__metadata_object_seektable_template_append_points
(
FLAC__StreamMetadata
*
object
, FLAC__uint64 sample_numbers[],
unsigned
num);
1498
1519
FLAC_API FLAC__bool
FLAC__metadata_object_seektable_template_append_spaced_points
(
FLAC__StreamMetadata
*
object
,
unsigned
num, FLAC__uint64 total_samples);
1520
1547
FLAC_API FLAC__bool
FLAC__metadata_object_seektable_template_append_spaced_points_by_samples
(
FLAC__StreamMetadata
*
object
,
unsigned
samples, FLAC__uint64 total_samples);
1548
1564
FLAC_API FLAC__bool
FLAC__metadata_object_seektable_template_sort
(
FLAC__StreamMetadata
*
object
, FLAC__bool compact);
1565
1589
FLAC_API FLAC__bool
FLAC__metadata_object_vorbiscomment_set_vendor_string
(
FLAC__StreamMetadata
*
object
,
FLAC__StreamMetadata_VorbisComment_Entry
entry, FLAC__bool copy);
1590
1606
FLAC_API FLAC__bool
FLAC__metadata_object_vorbiscomment_resize_comments
(
FLAC__StreamMetadata
*
object
,
unsigned
new_num_comments);
1607
1633
FLAC_API FLAC__bool
FLAC__metadata_object_vorbiscomment_set_comment
(
FLAC__StreamMetadata
*
object
,
unsigned
comment_num,
FLAC__StreamMetadata_VorbisComment_Entry
entry, FLAC__bool copy);
1634
1663
FLAC_API FLAC__bool
FLAC__metadata_object_vorbiscomment_insert_comment
(
FLAC__StreamMetadata
*
object
,
unsigned
comment_num,
FLAC__StreamMetadata_VorbisComment_Entry
entry, FLAC__bool copy);
1664
1688
FLAC_API FLAC__bool
FLAC__metadata_object_vorbiscomment_append_comment
(
FLAC__StreamMetadata
*
object
,
FLAC__StreamMetadata_VorbisComment_Entry
entry, FLAC__bool copy);
1689
1723
FLAC_API FLAC__bool
FLAC__metadata_object_vorbiscomment_replace_comment
(
FLAC__StreamMetadata
*
object
,
FLAC__StreamMetadata_VorbisComment_Entry
entry, FLAC__bool all, FLAC__bool copy);
1724
1736
FLAC_API FLAC__bool
FLAC__metadata_object_vorbiscomment_delete_comment
(
FLAC__StreamMetadata
*
object
,
unsigned
comment_num);
1737
1757
FLAC_API FLAC__bool
FLAC__metadata_object_vorbiscomment_entry_from_name_value_pair
(
FLAC__StreamMetadata_VorbisComment_Entry
*entry,
const
char
*field_name,
const
char
*field_value);
1758
1778
FLAC_API FLAC__bool
FLAC__metadata_object_vorbiscomment_entry_to_name_value_pair
(
const
FLAC__StreamMetadata_VorbisComment_Entry
entry,
char
**field_name,
char
**field_value);
1779
1792
FLAC_API FLAC__bool
FLAC__metadata_object_vorbiscomment_entry_matches
(
const
FLAC__StreamMetadata_VorbisComment_Entry
entry,
const
char
*field_name,
unsigned
field_name_length);
1793
1811
FLAC_API
int
FLAC__metadata_object_vorbiscomment_find_entry_from
(
const
FLAC__StreamMetadata
*
object
,
unsigned
offset,
const
char
*field_name);
1812
1824
FLAC_API
int
FLAC__metadata_object_vorbiscomment_remove_entry_matching
(
FLAC__StreamMetadata
*
object
,
const
char
*field_name);
1825
1837
FLAC_API
int
FLAC__metadata_object_vorbiscomment_remove_entries_matching
(
FLAC__StreamMetadata
*
object
,
const
char
*field_name);
1838
1846
FLAC_API
FLAC__StreamMetadata_CueSheet_Track
*
FLAC__metadata_object_cuesheet_track_new
(
void
);
1847
1861
FLAC_API
FLAC__StreamMetadata_CueSheet_Track
*
FLAC__metadata_object_cuesheet_track_clone
(
const
FLAC__StreamMetadata_CueSheet_Track
*
object
);
1862
1869
FLAC_API
void
FLAC__metadata_object_cuesheet_track_delete
(
FLAC__StreamMetadata_CueSheet_Track
*
object
);
1870
1889
FLAC_API FLAC__bool
FLAC__metadata_object_cuesheet_track_resize_indices
(
FLAC__StreamMetadata
*
object
,
unsigned
track_num,
unsigned
new_num_indices);
1890
1912
FLAC_API FLAC__bool
FLAC__metadata_object_cuesheet_track_insert_index
(
FLAC__StreamMetadata
*
object
,
unsigned
track_num,
unsigned
index_num,
FLAC__StreamMetadata_CueSheet_Index
index);
1913
1936
FLAC_API FLAC__bool
FLAC__metadata_object_cuesheet_track_insert_blank_index
(
FLAC__StreamMetadata
*
object
,
unsigned
track_num,
unsigned
index_num);
1937
1955
FLAC_API FLAC__bool
FLAC__metadata_object_cuesheet_track_delete_index
(
FLAC__StreamMetadata
*
object
,
unsigned
track_num,
unsigned
index_num);
1956
1972
FLAC_API FLAC__bool
FLAC__metadata_object_cuesheet_resize_tracks
(
FLAC__StreamMetadata
*
object
,
unsigned
new_num_tracks);
1973
1994
FLAC_API FLAC__bool
FLAC__metadata_object_cuesheet_set_track
(
FLAC__StreamMetadata
*
object
,
unsigned
track_num,
FLAC__StreamMetadata_CueSheet_Track
*track, FLAC__bool copy);
1995
2017
FLAC_API FLAC__bool
FLAC__metadata_object_cuesheet_insert_track
(
FLAC__StreamMetadata
*
object
,
unsigned
track_num,
FLAC__StreamMetadata_CueSheet_Track
*track, FLAC__bool copy);
2018
2036
FLAC_API FLAC__bool
FLAC__metadata_object_cuesheet_insert_blank_track
(
FLAC__StreamMetadata
*
object
,
unsigned
track_num);
2037
2051
FLAC_API FLAC__bool
FLAC__metadata_object_cuesheet_delete_track
(
FLAC__StreamMetadata
*
object
,
unsigned
track_num);
2052
2072
FLAC_API FLAC__bool
FLAC__metadata_object_cuesheet_is_legal
(
const
FLAC__StreamMetadata
*
object
, FLAC__bool check_cd_da_subset,
const
char
**violation);
2073
2085
FLAC_API FLAC__uint32
FLAC__metadata_object_cuesheet_calculate_cddb_id
(
const
FLAC__StreamMetadata
*
object
);
2086
2108
FLAC_API FLAC__bool
FLAC__metadata_object_picture_set_mime_type
(
FLAC__StreamMetadata
*
object
,
char
*mime_type, FLAC__bool copy);
2109
2130
FLAC_API FLAC__bool
FLAC__metadata_object_picture_set_description
(
FLAC__StreamMetadata
*
object
, FLAC__byte *description, FLAC__bool copy);
2131
2155
FLAC_API FLAC__bool
FLAC__metadata_object_picture_set_data
(
FLAC__StreamMetadata
*
object
, FLAC__byte *data, FLAC__uint32 length, FLAC__bool copy);
2156
2174
FLAC_API FLAC__bool
FLAC__metadata_object_picture_is_legal
(
const
FLAC__StreamMetadata
*
object
,
const
char
**violation);
2175
2176
/* \} */
2177
2178
#ifdef __cplusplus
2179
}
2180
#endif
2181
2182
#endif
Copyright (c) 2000-2009 Josh Coalson Copyright (c) 2011-2014 Xiph.Org Foundation