00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032 #ifndef FLAC__METADATA_H
00033 #define FLAC__METADATA_H
00034
00035 #include "export.h"
00036 #include "format.h"
00037
00038
00039
00040
00041
00042
00043
00111 #ifdef __cplusplus
00112 extern "C" {
00113 #endif
00114
00115
00141 FLAC_API FLAC__bool FLAC__metadata_get_streaminfo(const char *filename, FLAC__StreamMetadata *streaminfo);
00142
00143
00144
00145
00201 struct FLAC__Metadata_SimpleIterator;
00207 typedef struct FLAC__Metadata_SimpleIterator FLAC__Metadata_SimpleIterator;
00208
00213 typedef enum {
00214
00215 FLAC__METADATA_SIMPLE_ITERATOR_STATUS_OK = 0,
00218 FLAC__METADATA_SIMPLE_ITERATOR_STATUS_ILLEGAL_INPUT,
00221 FLAC__METADATA_SIMPLE_ITERATOR_STATUS_ERROR_OPENING_FILE,
00224 FLAC__METADATA_SIMPLE_ITERATOR_STATUS_NOT_A_FLAC_FILE,
00227 FLAC__METADATA_SIMPLE_ITERATOR_STATUS_NOT_WRITABLE,
00230 FLAC__METADATA_SIMPLE_ITERATOR_STATUS_BAD_METADATA,
00233 FLAC__METADATA_SIMPLE_ITERATOR_STATUS_READ_ERROR,
00236 FLAC__METADATA_SIMPLE_ITERATOR_STATUS_SEEK_ERROR,
00239 FLAC__METADATA_SIMPLE_ITERATOR_STATUS_WRITE_ERROR,
00242 FLAC__METADATA_SIMPLE_ITERATOR_STATUS_RENAME_ERROR,
00245 FLAC__METADATA_SIMPLE_ITERATOR_STATUS_UNLINK_ERROR,
00248 FLAC__METADATA_SIMPLE_ITERATOR_STATUS_MEMORY_ALLOCATION_ERROR,
00251 FLAC__METADATA_SIMPLE_ITERATOR_STATUS_INTERNAL_ERROR
00254 } FLAC__Metadata_SimpleIteratorStatus;
00255
00261 extern FLAC_API const char * const FLAC__Metadata_SimpleIteratorStatusString[];
00262
00263
00269 FLAC_API FLAC__Metadata_SimpleIterator *FLAC__metadata_simple_iterator_new();
00270
00277 FLAC_API void FLAC__metadata_simple_iterator_delete(FLAC__Metadata_SimpleIterator *iterator);
00278
00289 FLAC_API FLAC__Metadata_SimpleIteratorStatus FLAC__metadata_simple_iterator_status(FLAC__Metadata_SimpleIterator *iterator);
00290
00310 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);
00311
00322 FLAC_API FLAC__bool FLAC__metadata_simple_iterator_is_writable(const FLAC__Metadata_SimpleIterator *iterator);
00323
00336 FLAC_API FLAC__bool FLAC__metadata_simple_iterator_next(FLAC__Metadata_SimpleIterator *iterator);
00337
00350 FLAC_API FLAC__bool FLAC__metadata_simple_iterator_prev(FLAC__Metadata_SimpleIterator *iterator);
00351
00365 FLAC_API FLAC__MetadataType FLAC__metadata_simple_iterator_get_block_type(const FLAC__Metadata_SimpleIterator *iterator);
00366
00382 FLAC_API FLAC__StreamMetadata *FLAC__metadata_simple_iterator_get_block(FLAC__Metadata_SimpleIterator *iterator);
00383
00438 FLAC_API FLAC__bool FLAC__metadata_simple_iterator_set_block(FLAC__Metadata_SimpleIterator *iterator, FLAC__StreamMetadata *block, FLAC__bool use_padding);
00439
00463 FLAC_API FLAC__bool FLAC__metadata_simple_iterator_insert_block_after(FLAC__Metadata_SimpleIterator *iterator, FLAC__StreamMetadata *block, FLAC__bool use_padding);
00464
00482 FLAC_API FLAC__bool FLAC__metadata_simple_iterator_delete_block(FLAC__Metadata_SimpleIterator *iterator, FLAC__bool use_padding);
00483
00484
00485
00486
00539 struct FLAC__Metadata_Chain;
00542 typedef struct FLAC__Metadata_Chain FLAC__Metadata_Chain;
00543
00544 struct FLAC__Metadata_Iterator;
00547 typedef struct FLAC__Metadata_Iterator FLAC__Metadata_Iterator;
00548
00549 typedef enum {
00550 FLAC__METADATA_CHAIN_STATUS_OK = 0,
00553 FLAC__METADATA_CHAIN_STATUS_ILLEGAL_INPUT,
00556 FLAC__METADATA_CHAIN_STATUS_ERROR_OPENING_FILE,
00559 FLAC__METADATA_CHAIN_STATUS_NOT_A_FLAC_FILE,
00562 FLAC__METADATA_CHAIN_STATUS_NOT_WRITABLE,
00565 FLAC__METADATA_CHAIN_STATUS_BAD_METADATA,
00568 FLAC__METADATA_CHAIN_STATUS_READ_ERROR,
00571 FLAC__METADATA_CHAIN_STATUS_SEEK_ERROR,
00574 FLAC__METADATA_CHAIN_STATUS_WRITE_ERROR,
00577 FLAC__METADATA_CHAIN_STATUS_RENAME_ERROR,
00580 FLAC__METADATA_CHAIN_STATUS_UNLINK_ERROR,
00583 FLAC__METADATA_CHAIN_STATUS_MEMORY_ALLOCATION_ERROR,
00586 FLAC__METADATA_CHAIN_STATUS_INTERNAL_ERROR
00589 } FLAC__Metadata_ChainStatus;
00590
00596 extern FLAC_API const char * const FLAC__Metadata_ChainStatusString[];
00597
00598
00599
00605 FLAC_API FLAC__Metadata_Chain *FLAC__metadata_chain_new();
00606
00613 FLAC_API void FLAC__metadata_chain_delete(FLAC__Metadata_Chain *chain);
00614
00625 FLAC_API FLAC__Metadata_ChainStatus FLAC__metadata_chain_status(FLAC__Metadata_Chain *chain);
00626
00639 FLAC_API FLAC__bool FLAC__metadata_chain_read(FLAC__Metadata_Chain *chain, const char *filename);
00640
00681 FLAC_API FLAC__bool FLAC__metadata_chain_write(FLAC__Metadata_Chain *chain, FLAC__bool use_padding, FLAC__bool preserve_file_stats);
00682
00695 FLAC_API void FLAC__metadata_chain_merge_padding(FLAC__Metadata_Chain *chain);
00696
00710 FLAC_API void FLAC__metadata_chain_sort_padding(FLAC__Metadata_Chain *chain);
00711
00712
00713
00714
00720 FLAC_API FLAC__Metadata_Iterator *FLAC__metadata_iterator_new();
00721
00728 FLAC_API void FLAC__metadata_iterator_delete(FLAC__Metadata_Iterator *iterator);
00729
00739 FLAC_API void FLAC__metadata_iterator_init(FLAC__Metadata_Iterator *iterator, FLAC__Metadata_Chain *chain);
00740
00753 FLAC_API FLAC__bool FLAC__metadata_iterator_next(FLAC__Metadata_Iterator *iterator);
00754
00767 FLAC_API FLAC__bool FLAC__metadata_iterator_prev(FLAC__Metadata_Iterator *iterator);
00768
00779 FLAC_API FLAC__MetadataType FLAC__metadata_iterator_get_block_type(const FLAC__Metadata_Iterator *iterator);
00780
00800 FLAC_API FLAC__StreamMetadata *FLAC__metadata_iterator_get_block(FLAC__Metadata_Iterator *iterator);
00801
00817 FLAC_API FLAC__bool FLAC__metadata_iterator_set_block(FLAC__Metadata_Iterator *iterator, FLAC__StreamMetadata *block);
00818
00835 FLAC_API FLAC__bool FLAC__metadata_iterator_delete_block(FLAC__Metadata_Iterator *iterator, FLAC__bool replace_with_padding);
00836
00854 FLAC_API FLAC__bool FLAC__metadata_iterator_insert_block_before(FLAC__Metadata_Iterator *iterator, FLAC__StreamMetadata *block);
00855
00872 FLAC_API FLAC__bool FLAC__metadata_iterator_insert_block_after(FLAC__Metadata_Iterator *iterator, FLAC__StreamMetadata *block);
00873
00874
00875
00876
00930 FLAC_API FLAC__StreamMetadata *FLAC__metadata_object_new(FLAC__MetadataType type);
00931
00944 FLAC_API FLAC__StreamMetadata *FLAC__metadata_object_clone(const FLAC__StreamMetadata *object);
00945
00955 FLAC_API void FLAC__metadata_object_delete(FLAC__StreamMetadata *object);
00956
00970 FLAC_API FLAC__bool FLAC__metadata_object_is_equal(const FLAC__StreamMetadata *block1, const FLAC__StreamMetadata *block2);
00971
00990 FLAC_API FLAC__bool FLAC__metadata_object_application_set_data(FLAC__StreamMetadata *object, FLAC__byte *data, unsigned length, FLAC__bool copy);
00991
01007 FLAC_API FLAC__bool FLAC__metadata_object_seektable_resize_points(FLAC__StreamMetadata *object, unsigned new_num_points);
01008
01019 FLAC_API void FLAC__metadata_object_seektable_set_point(FLAC__StreamMetadata *object, unsigned point_num, FLAC__StreamMetadata_SeekPoint point);
01020
01033 FLAC_API FLAC__bool FLAC__metadata_object_seektable_insert_point(FLAC__StreamMetadata *object, unsigned point_num, FLAC__StreamMetadata_SeekPoint point);
01034
01046 FLAC_API FLAC__bool FLAC__metadata_object_seektable_delete_point(FLAC__StreamMetadata *object, unsigned point_num);
01047
01059 FLAC_API FLAC__bool FLAC__metadata_object_seektable_is_legal(const FLAC__StreamMetadata *object);
01060
01076 FLAC_API FLAC__bool FLAC__metadata_object_seektable_template_append_placeholders(FLAC__StreamMetadata *object, unsigned num);
01077
01093 FLAC_API FLAC__bool FLAC__metadata_object_seektable_template_append_point(FLAC__StreamMetadata *object, FLAC__uint64 sample_number);
01094
01111 FLAC_API FLAC__bool FLAC__metadata_object_seektable_template_append_points(FLAC__StreamMetadata *object, FLAC__uint64 sample_numbers[], unsigned num);
01112
01132 FLAC_API FLAC__bool FLAC__metadata_object_seektable_template_append_spaced_points(FLAC__StreamMetadata *object, unsigned num, FLAC__uint64 total_samples);
01133
01149 FLAC_API FLAC__bool FLAC__metadata_object_seektable_template_sort(FLAC__StreamMetadata *object, FLAC__bool compact);
01150
01168 FLAC_API FLAC__bool FLAC__metadata_object_vorbiscomment_set_vendor_string(FLAC__StreamMetadata *object, FLAC__StreamMetadata_VorbisComment_Entry entry, FLAC__bool copy);
01169
01185 FLAC_API FLAC__bool FLAC__metadata_object_vorbiscomment_resize_comments(FLAC__StreamMetadata *object, unsigned new_num_comments);
01186
01206 FLAC_API FLAC__bool FLAC__metadata_object_vorbiscomment_set_comment(FLAC__StreamMetadata *object, unsigned comment_num, FLAC__StreamMetadata_VorbisComment_Entry entry, FLAC__bool copy);
01207
01230 FLAC_API FLAC__bool FLAC__metadata_object_vorbiscomment_insert_comment(FLAC__StreamMetadata *object, unsigned comment_num, FLAC__StreamMetadata_VorbisComment_Entry entry, FLAC__bool copy);
01231
01245 FLAC_API FLAC__bool FLAC__metadata_object_vorbiscomment_delete_comment(FLAC__StreamMetadata *object, unsigned comment_num);
01246
01247
01261 FLAC_API FLAC__bool FLAC__metadata_object_vorbiscomment_entry_matches(const FLAC__StreamMetadata_VorbisComment_Entry *entry, const char *field_name, unsigned field_name_length);
01262
01263
01280 FLAC_API int FLAC__metadata_object_vorbiscomment_find_entry_from(const FLAC__StreamMetadata *object, unsigned offset, const char *field_name);
01281
01282
01294 FLAC_API int FLAC__metadata_object_vorbiscomment_remove_entry_matching(FLAC__StreamMetadata *object, const char *field_name);
01295
01296
01308 FLAC_API int FLAC__metadata_object_vorbiscomment_remove_entries_matching(FLAC__StreamMetadata *object, const char *field_name);
01309
01317 FLAC_API FLAC__StreamMetadata_CueSheet_Track *FLAC__metadata_object_cuesheet_track_new();
01318
01332 FLAC_API FLAC__StreamMetadata_CueSheet_Track *FLAC__metadata_object_cuesheet_track_clone(const FLAC__StreamMetadata_CueSheet_Track *object);
01333
01340 FLAC_API void FLAC__metadata_object_cuesheet_track_delete(FLAC__StreamMetadata_CueSheet_Track *object);
01341
01360 FLAC_API FLAC__bool FLAC__metadata_object_cuesheet_track_resize_indices(FLAC__StreamMetadata *object, unsigned track_num, unsigned new_num_indices);
01361
01383 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);
01384
01407 FLAC_API FLAC__bool FLAC__metadata_object_cuesheet_track_insert_blank_index(FLAC__StreamMetadata *object, unsigned track_num, unsigned index_num);
01408
01426 FLAC_API FLAC__bool FLAC__metadata_object_cuesheet_track_delete_index(FLAC__StreamMetadata *object, unsigned track_num, unsigned index_num);
01427
01443 FLAC_API FLAC__bool FLAC__metadata_object_cuesheet_resize_tracks(FLAC__StreamMetadata *object, unsigned new_num_tracks);
01444
01466 FLAC_API FLAC__bool FLAC__metadata_object_cuesheet_set_track(FLAC__StreamMetadata *object, unsigned track_num, FLAC__StreamMetadata_CueSheet_Track *track, FLAC__bool copy);
01467
01490 FLAC_API FLAC__bool FLAC__metadata_object_cuesheet_insert_track(FLAC__StreamMetadata *object, unsigned track_num, FLAC__StreamMetadata_CueSheet_Track *track, FLAC__bool copy);
01491
01509 FLAC_API FLAC__bool FLAC__metadata_object_cuesheet_insert_blank_track(FLAC__StreamMetadata *object, unsigned track_num);
01510
01524 FLAC_API FLAC__bool FLAC__metadata_object_cuesheet_delete_track(FLAC__StreamMetadata *object, unsigned track_num);
01525
01545 FLAC_API FLAC__bool FLAC__metadata_object_cuesheet_is_legal(const FLAC__StreamMetadata *object, FLAC__bool check_cd_da_subset, const char **violation);
01546
01547
01548
01549 #ifdef __cplusplus
01550 }
01551 #endif
01552
01553 #endif