FLAC
1.2.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,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__METADATA_H
33
#define FLAC__METADATA_H
34
35
#include <sys/types.h>
/* for off_t */
36
#include "
export.h
"
37
#include "
callback.h
"
38
#include "
format.h
"
39
40
/* --------------------------------------------------------------------
41
(For an example of how all these routines are used, see the source
42
code for the unit tests in src/test_libFLAC/metadata_*.c, or
43
metaflac in src/metaflac/)
44
------------------------------------------------------------------*/
45
123
#ifdef __cplusplus
124
extern
"C"
{
125
#endif
126
127
158
FLAC_API FLAC__bool
FLAC__metadata_get_streaminfo
(
const
char
*filename,
FLAC__StreamMetadata
*streaminfo);
159
177
FLAC_API FLAC__bool
FLAC__metadata_get_tags
(
const
char
*filename,
FLAC__StreamMetadata
**tags);
178
196
FLAC_API FLAC__bool
FLAC__metadata_get_cuesheet
(
const
char
*filename,
FLAC__StreamMetadata
**cuesheet);
197
236
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);
237
238
/* \} */
239
240
296
struct
FLAC__Metadata_SimpleIterator
;
302
typedef
struct
FLAC__Metadata_SimpleIterator
FLAC__Metadata_SimpleIterator
;
303
308
typedef
enum
{
309
310
FLAC__METADATA_SIMPLE_ITERATOR_STATUS_OK
= 0,
313
FLAC__METADATA_SIMPLE_ITERATOR_STATUS_ILLEGAL_INPUT
,
316
FLAC__METADATA_SIMPLE_ITERATOR_STATUS_ERROR_OPENING_FILE
,
319
FLAC__METADATA_SIMPLE_ITERATOR_STATUS_NOT_A_FLAC_FILE
,
322
FLAC__METADATA_SIMPLE_ITERATOR_STATUS_NOT_WRITABLE
,
325
FLAC__METADATA_SIMPLE_ITERATOR_STATUS_BAD_METADATA
,
328
FLAC__METADATA_SIMPLE_ITERATOR_STATUS_READ_ERROR
,
331
FLAC__METADATA_SIMPLE_ITERATOR_STATUS_SEEK_ERROR
,
334
FLAC__METADATA_SIMPLE_ITERATOR_STATUS_WRITE_ERROR
,
337
FLAC__METADATA_SIMPLE_ITERATOR_STATUS_RENAME_ERROR
,
340
FLAC__METADATA_SIMPLE_ITERATOR_STATUS_UNLINK_ERROR
,
343
FLAC__METADATA_SIMPLE_ITERATOR_STATUS_MEMORY_ALLOCATION_ERROR
,
346
FLAC__METADATA_SIMPLE_ITERATOR_STATUS_INTERNAL_ERROR
349
}
FLAC__Metadata_SimpleIteratorStatus
;
350
356
extern
FLAC_API
const
char
*
const
FLAC__Metadata_SimpleIteratorStatusString
[];
357
358
364
FLAC_API
FLAC__Metadata_SimpleIterator
*
FLAC__metadata_simple_iterator_new
(
void
);
365
372
FLAC_API
void
FLAC__metadata_simple_iterator_delete
(
FLAC__Metadata_SimpleIterator
*iterator);
373
384
FLAC_API
FLAC__Metadata_SimpleIteratorStatus
FLAC__metadata_simple_iterator_status
(
FLAC__Metadata_SimpleIterator
*iterator);
385
405
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);
406
417
FLAC_API FLAC__bool
FLAC__metadata_simple_iterator_is_writable
(
const
FLAC__Metadata_SimpleIterator
*iterator);
418
431
FLAC_API FLAC__bool
FLAC__metadata_simple_iterator_next
(
FLAC__Metadata_SimpleIterator
*iterator);
432
445
FLAC_API FLAC__bool
FLAC__metadata_simple_iterator_prev
(
FLAC__Metadata_SimpleIterator
*iterator);
446
458
FLAC_API FLAC__bool
FLAC__metadata_simple_iterator_is_last
(
const
FLAC__Metadata_SimpleIterator
*iterator);
459
474
FLAC_API off_t
FLAC__metadata_simple_iterator_get_block_offset
(
const
FLAC__Metadata_SimpleIterator
*iterator);
475
488
FLAC_API
FLAC__MetadataType
FLAC__metadata_simple_iterator_get_block_type
(
const
FLAC__Metadata_SimpleIterator
*iterator);
489
505
FLAC_API
unsigned
FLAC__metadata_simple_iterator_get_block_length
(
const
FLAC__Metadata_SimpleIterator
*iterator);
506
530
FLAC_API FLAC__bool
FLAC__metadata_simple_iterator_get_application_id
(
FLAC__Metadata_SimpleIterator
*iterator, FLAC__byte *
id
);
531
548
FLAC_API
FLAC__StreamMetadata
*
FLAC__metadata_simple_iterator_get_block
(
FLAC__Metadata_SimpleIterator
*iterator);
549
604
FLAC_API FLAC__bool
FLAC__metadata_simple_iterator_set_block
(
FLAC__Metadata_SimpleIterator
*iterator,
FLAC__StreamMetadata
*block, FLAC__bool use_padding);
605
629
FLAC_API FLAC__bool
FLAC__metadata_simple_iterator_insert_block_after
(
FLAC__Metadata_SimpleIterator
*iterator,
FLAC__StreamMetadata
*block, FLAC__bool use_padding);
630
648
FLAC_API FLAC__bool
FLAC__metadata_simple_iterator_delete_block
(
FLAC__Metadata_SimpleIterator
*iterator, FLAC__bool use_padding);
649
650
/* \} */
651
652
710
struct
FLAC__Metadata_Chain
;
713
typedef
struct
FLAC__Metadata_Chain
FLAC__Metadata_Chain
;
714
715
struct
FLAC__Metadata_Iterator
;
718
typedef
struct
FLAC__Metadata_Iterator
FLAC__Metadata_Iterator
;
719
720
typedef
enum
{
721
FLAC__METADATA_CHAIN_STATUS_OK
= 0,
724
FLAC__METADATA_CHAIN_STATUS_ILLEGAL_INPUT
,
727
FLAC__METADATA_CHAIN_STATUS_ERROR_OPENING_FILE
,
730
FLAC__METADATA_CHAIN_STATUS_NOT_A_FLAC_FILE
,
733
FLAC__METADATA_CHAIN_STATUS_NOT_WRITABLE
,
736
FLAC__METADATA_CHAIN_STATUS_BAD_METADATA
,
739
FLAC__METADATA_CHAIN_STATUS_READ_ERROR
,
742
FLAC__METADATA_CHAIN_STATUS_SEEK_ERROR
,
745
FLAC__METADATA_CHAIN_STATUS_WRITE_ERROR
,
748
FLAC__METADATA_CHAIN_STATUS_RENAME_ERROR
,
751
FLAC__METADATA_CHAIN_STATUS_UNLINK_ERROR
,
754
FLAC__METADATA_CHAIN_STATUS_MEMORY_ALLOCATION_ERROR
,
757
FLAC__METADATA_CHAIN_STATUS_INTERNAL_ERROR
,
760
FLAC__METADATA_CHAIN_STATUS_INVALID_CALLBACKS
,
763
FLAC__METADATA_CHAIN_STATUS_READ_WRITE_MISMATCH
,
772
FLAC__METADATA_CHAIN_STATUS_WRONG_WRITE_CALL
782
}
FLAC__Metadata_ChainStatus
;
783
789
extern
FLAC_API
const
char
*
const
FLAC__Metadata_ChainStatusString
[];
790
791
/*********** FLAC__Metadata_Chain ***********/
792
798
FLAC_API
FLAC__Metadata_Chain
*
FLAC__metadata_chain_new
(
void
);
799
806
FLAC_API
void
FLAC__metadata_chain_delete
(
FLAC__Metadata_Chain
*chain);
807
818
FLAC_API
FLAC__Metadata_ChainStatus
FLAC__metadata_chain_status
(
FLAC__Metadata_Chain
*chain);
819
832
FLAC_API FLAC__bool
FLAC__metadata_chain_read
(
FLAC__Metadata_Chain
*chain,
const
char
*filename);
833
849
FLAC_API FLAC__bool
FLAC__metadata_chain_read_ogg
(
FLAC__Metadata_Chain
*chain,
const
char
*filename);
850
871
FLAC_API FLAC__bool
FLAC__metadata_chain_read_with_callbacks
(
FLAC__Metadata_Chain
*chain,
FLAC__IOHandle
handle,
FLAC__IOCallbacks
callbacks);
872
896
FLAC_API FLAC__bool
FLAC__metadata_chain_read_ogg_with_callbacks
(
FLAC__Metadata_Chain
*chain,
FLAC__IOHandle
handle,
FLAC__IOCallbacks
callbacks);
897
924
FLAC_API FLAC__bool
FLAC__metadata_chain_check_if_tempfile_needed
(
FLAC__Metadata_Chain
*chain, FLAC__bool use_padding);
925
970
FLAC_API FLAC__bool
FLAC__metadata_chain_write
(
FLAC__Metadata_Chain
*chain, FLAC__bool use_padding, FLAC__bool preserve_file_stats);
971
1000
FLAC_API FLAC__bool
FLAC__metadata_chain_write_with_callbacks
(
FLAC__Metadata_Chain
*chain, FLAC__bool use_padding,
FLAC__IOHandle
handle,
FLAC__IOCallbacks
callbacks);
1001
1051
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);
1052
1065
FLAC_API
void
FLAC__metadata_chain_merge_padding
(
FLAC__Metadata_Chain
*chain);
1066
1080
FLAC_API
void
FLAC__metadata_chain_sort_padding
(
FLAC__Metadata_Chain
*chain);
1081
1082
1083
/*********** FLAC__Metadata_Iterator ***********/
1084
1090
FLAC_API
FLAC__Metadata_Iterator
*
FLAC__metadata_iterator_new
(
void
);
1091
1098
FLAC_API
void
FLAC__metadata_iterator_delete
(
FLAC__Metadata_Iterator
*iterator);
1099
1109
FLAC_API
void
FLAC__metadata_iterator_init
(
FLAC__Metadata_Iterator
*iterator,
FLAC__Metadata_Chain
*chain);
1110
1123
FLAC_API FLAC__bool
FLAC__metadata_iterator_next
(
FLAC__Metadata_Iterator
*iterator);
1124
1137
FLAC_API FLAC__bool
FLAC__metadata_iterator_prev
(
FLAC__Metadata_Iterator
*iterator);
1138
1149
FLAC_API
FLAC__MetadataType
FLAC__metadata_iterator_get_block_type
(
const
FLAC__Metadata_Iterator
*iterator);
1150
1170
FLAC_API
FLAC__StreamMetadata
*
FLAC__metadata_iterator_get_block
(
FLAC__Metadata_Iterator
*iterator);
1171
1187
FLAC_API FLAC__bool
FLAC__metadata_iterator_set_block
(
FLAC__Metadata_Iterator
*iterator,
FLAC__StreamMetadata
*block);
1188
1205
FLAC_API FLAC__bool
FLAC__metadata_iterator_delete_block
(
FLAC__Metadata_Iterator
*iterator, FLAC__bool replace_with_padding);
1206
1224
FLAC_API FLAC__bool
FLAC__metadata_iterator_insert_block_before
(
FLAC__Metadata_Iterator
*iterator,
FLAC__StreamMetadata
*block);
1225
1242
FLAC_API FLAC__bool
FLAC__metadata_iterator_insert_block_after
(
FLAC__Metadata_Iterator
*iterator,
FLAC__StreamMetadata
*block);
1243
1244
/* \} */
1245
1246
1312
FLAC_API
FLAC__StreamMetadata
*
FLAC__metadata_object_new
(
FLAC__MetadataType
type);
1313
1326
FLAC_API
FLAC__StreamMetadata
*
FLAC__metadata_object_clone
(
const
FLAC__StreamMetadata
*
object
);
1327
1337
FLAC_API
void
FLAC__metadata_object_delete
(
FLAC__StreamMetadata
*
object
);
1338
1352
FLAC_API FLAC__bool
FLAC__metadata_object_is_equal
(
const
FLAC__StreamMetadata
*block1,
const
FLAC__StreamMetadata
*block2);
1353
1375
FLAC_API FLAC__bool
FLAC__metadata_object_application_set_data
(
FLAC__StreamMetadata
*
object
, FLAC__byte *data,
unsigned
length, FLAC__bool copy);
1376
1392
FLAC_API FLAC__bool
FLAC__metadata_object_seektable_resize_points
(
FLAC__StreamMetadata
*
object
,
unsigned
new_num_points);
1393
1404
FLAC_API
void
FLAC__metadata_object_seektable_set_point
(
FLAC__StreamMetadata
*
object
,
unsigned
point_num,
FLAC__StreamMetadata_SeekPoint
point);
1405
1418
FLAC_API FLAC__bool
FLAC__metadata_object_seektable_insert_point
(
FLAC__StreamMetadata
*
object
,
unsigned
point_num,
FLAC__StreamMetadata_SeekPoint
point);
1419
1431
FLAC_API FLAC__bool
FLAC__metadata_object_seektable_delete_point
(
FLAC__StreamMetadata
*
object
,
unsigned
point_num);
1432
1444
FLAC_API FLAC__bool
FLAC__metadata_object_seektable_is_legal
(
const
FLAC__StreamMetadata
*
object
);
1445
1461
FLAC_API FLAC__bool
FLAC__metadata_object_seektable_template_append_placeholders
(
FLAC__StreamMetadata
*
object
,
unsigned
num);
1462
1478
FLAC_API FLAC__bool
FLAC__metadata_object_seektable_template_append_point
(
FLAC__StreamMetadata
*
object
, FLAC__uint64 sample_number);
1479
1496
FLAC_API FLAC__bool
FLAC__metadata_object_seektable_template_append_points
(
FLAC__StreamMetadata
*
object
, FLAC__uint64 sample_numbers[],
unsigned
num);
1497
1518
FLAC_API FLAC__bool
FLAC__metadata_object_seektable_template_append_spaced_points
(
FLAC__StreamMetadata
*
object
,
unsigned
num, FLAC__uint64 total_samples);
1519
1546
FLAC_API FLAC__bool
FLAC__metadata_object_seektable_template_append_spaced_points_by_samples
(
FLAC__StreamMetadata
*
object
,
unsigned
samples, FLAC__uint64 total_samples);
1547
1563
FLAC_API FLAC__bool
FLAC__metadata_object_seektable_template_sort
(
FLAC__StreamMetadata
*
object
, FLAC__bool compact);
1564
1588
FLAC_API FLAC__bool
FLAC__metadata_object_vorbiscomment_set_vendor_string
(
FLAC__StreamMetadata
*
object
,
FLAC__StreamMetadata_VorbisComment_Entry
entry, FLAC__bool copy);
1589
1605
FLAC_API FLAC__bool
FLAC__metadata_object_vorbiscomment_resize_comments
(
FLAC__StreamMetadata
*
object
,
unsigned
new_num_comments);
1606
1632
FLAC_API FLAC__bool
FLAC__metadata_object_vorbiscomment_set_comment
(
FLAC__StreamMetadata
*
object
,
unsigned
comment_num,
FLAC__StreamMetadata_VorbisComment_Entry
entry, FLAC__bool copy);
1633
1662
FLAC_API FLAC__bool
FLAC__metadata_object_vorbiscomment_insert_comment
(
FLAC__StreamMetadata
*
object
,
unsigned
comment_num,
FLAC__StreamMetadata_VorbisComment_Entry
entry, FLAC__bool copy);
1663
1687
FLAC_API FLAC__bool
FLAC__metadata_object_vorbiscomment_append_comment
(
FLAC__StreamMetadata
*
object
,
FLAC__StreamMetadata_VorbisComment_Entry
entry, FLAC__bool copy);
1688
1722
FLAC_API FLAC__bool
FLAC__metadata_object_vorbiscomment_replace_comment
(
FLAC__StreamMetadata
*
object
,
FLAC__StreamMetadata_VorbisComment_Entry
entry, FLAC__bool all, FLAC__bool copy);
1723
1735
FLAC_API FLAC__bool
FLAC__metadata_object_vorbiscomment_delete_comment
(
FLAC__StreamMetadata
*
object
,
unsigned
comment_num);
1736
1756
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);
1757
1777
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);
1778
1791
FLAC_API FLAC__bool
FLAC__metadata_object_vorbiscomment_entry_matches
(
const
FLAC__StreamMetadata_VorbisComment_Entry
entry,
const
char
*field_name,
unsigned
field_name_length);
1792
1810
FLAC_API
int
FLAC__metadata_object_vorbiscomment_find_entry_from
(
const
FLAC__StreamMetadata
*
object
,
unsigned
offset,
const
char
*field_name);
1811
1823
FLAC_API
int
FLAC__metadata_object_vorbiscomment_remove_entry_matching
(
FLAC__StreamMetadata
*
object
,
const
char
*field_name);
1824
1836
FLAC_API
int
FLAC__metadata_object_vorbiscomment_remove_entries_matching
(
FLAC__StreamMetadata
*
object
,
const
char
*field_name);
1837
1845
FLAC_API
FLAC__StreamMetadata_CueSheet_Track
*
FLAC__metadata_object_cuesheet_track_new
(
void
);
1846
1860
FLAC_API
FLAC__StreamMetadata_CueSheet_Track
*
FLAC__metadata_object_cuesheet_track_clone
(
const
FLAC__StreamMetadata_CueSheet_Track
*
object
);
1861
1868
FLAC_API
void
FLAC__metadata_object_cuesheet_track_delete
(
FLAC__StreamMetadata_CueSheet_Track
*
object
);
1869
1888
FLAC_API FLAC__bool
FLAC__metadata_object_cuesheet_track_resize_indices
(
FLAC__StreamMetadata
*
object
,
unsigned
track_num,
unsigned
new_num_indices);
1889
1911
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);
1912
1935
FLAC_API FLAC__bool
FLAC__metadata_object_cuesheet_track_insert_blank_index
(
FLAC__StreamMetadata
*
object
,
unsigned
track_num,
unsigned
index_num);
1936
1954
FLAC_API FLAC__bool
FLAC__metadata_object_cuesheet_track_delete_index
(
FLAC__StreamMetadata
*
object
,
unsigned
track_num,
unsigned
index_num);
1955
1971
FLAC_API FLAC__bool
FLAC__metadata_object_cuesheet_resize_tracks
(
FLAC__StreamMetadata
*
object
,
unsigned
new_num_tracks);
1972
1993
FLAC_API FLAC__bool
FLAC__metadata_object_cuesheet_set_track
(
FLAC__StreamMetadata
*
object
,
unsigned
track_num,
FLAC__StreamMetadata_CueSheet_Track
*track, FLAC__bool copy);
1994
2016
FLAC_API FLAC__bool
FLAC__metadata_object_cuesheet_insert_track
(
FLAC__StreamMetadata
*
object
,
unsigned
track_num,
FLAC__StreamMetadata_CueSheet_Track
*track, FLAC__bool copy);
2017
2035
FLAC_API FLAC__bool
FLAC__metadata_object_cuesheet_insert_blank_track
(
FLAC__StreamMetadata
*
object
,
unsigned
track_num);
2036
2050
FLAC_API FLAC__bool
FLAC__metadata_object_cuesheet_delete_track
(
FLAC__StreamMetadata
*
object
,
unsigned
track_num);
2051
2071
FLAC_API FLAC__bool
FLAC__metadata_object_cuesheet_is_legal
(
const
FLAC__StreamMetadata
*
object
, FLAC__bool check_cd_da_subset,
const
char
**violation);
2072
2084
FLAC_API FLAC__uint32
FLAC__metadata_object_cuesheet_calculate_cddb_id
(
const
FLAC__StreamMetadata
*
object
);
2085
2107
FLAC_API FLAC__bool
FLAC__metadata_object_picture_set_mime_type
(
FLAC__StreamMetadata
*
object
,
char
*mime_type, FLAC__bool copy);
2108
2129
FLAC_API FLAC__bool
FLAC__metadata_object_picture_set_description
(
FLAC__StreamMetadata
*
object
, FLAC__byte *description, FLAC__bool copy);
2130
2154
FLAC_API FLAC__bool
FLAC__metadata_object_picture_set_data
(
FLAC__StreamMetadata
*
object
, FLAC__byte *data, FLAC__uint32 length, FLAC__bool copy);
2155
2173
FLAC_API FLAC__bool
FLAC__metadata_object_picture_is_legal
(
const
FLAC__StreamMetadata
*
object
,
const
char
**violation);
2174
2175
/* \} */
2176
2177
#ifdef __cplusplus
2178
}
2179
#endif
2180
2181
#endif
Copyright (c) 2000,2001,2002,2003,2004,2005,2006,2007,2008,2009 Josh Coalson