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 "callback.h"
00037 #include "format.h"
00038
00039
00040
00041
00042
00043
00044
00117 #ifdef __cplusplus
00118 extern "C" {
00119 #endif
00120
00121
00151 FLAC_API FLAC__bool FLAC__metadata_get_streaminfo(const char *filename, FLAC__StreamMetadata *streaminfo);
00152
00170 FLAC_API FLAC__bool FLAC__metadata_get_tags(const char *filename, FLAC__StreamMetadata **tags);
00171
00172
00173
00174
00230 struct FLAC__Metadata_SimpleIterator;
00236 typedef struct FLAC__Metadata_SimpleIterator FLAC__Metadata_SimpleIterator;
00237
00242 typedef enum {
00243
00244 FLAC__METADATA_SIMPLE_ITERATOR_STATUS_OK = 0,
00247 FLAC__METADATA_SIMPLE_ITERATOR_STATUS_ILLEGAL_INPUT,
00250 FLAC__METADATA_SIMPLE_ITERATOR_STATUS_ERROR_OPENING_FILE,
00253 FLAC__METADATA_SIMPLE_ITERATOR_STATUS_NOT_A_FLAC_FILE,
00256 FLAC__METADATA_SIMPLE_ITERATOR_STATUS_NOT_WRITABLE,
00259 FLAC__METADATA_SIMPLE_ITERATOR_STATUS_BAD_METADATA,
00262 FLAC__METADATA_SIMPLE_ITERATOR_STATUS_READ_ERROR,
00265 FLAC__METADATA_SIMPLE_ITERATOR_STATUS_SEEK_ERROR,
00268 FLAC__METADATA_SIMPLE_ITERATOR_STATUS_WRITE_ERROR,
00271 FLAC__METADATA_SIMPLE_ITERATOR_STATUS_RENAME_ERROR,
00274 FLAC__METADATA_SIMPLE_ITERATOR_STATUS_UNLINK_ERROR,
00277 FLAC__METADATA_SIMPLE_ITERATOR_STATUS_MEMORY_ALLOCATION_ERROR,
00280 FLAC__METADATA_SIMPLE_ITERATOR_STATUS_INTERNAL_ERROR
00283 } FLAC__Metadata_SimpleIteratorStatus;
00284
00290 extern FLAC_API const char * const FLAC__Metadata_SimpleIteratorStatusString[];
00291
00292
00298 FLAC_API FLAC__Metadata_SimpleIterator *FLAC__metadata_simple_iterator_new();
00299
00306 FLAC_API void FLAC__metadata_simple_iterator_delete(FLAC__Metadata_SimpleIterator *iterator);
00307
00318 FLAC_API FLAC__Metadata_SimpleIteratorStatus FLAC__metadata_simple_iterator_status(FLAC__Metadata_SimpleIterator *iterator);
00319
00339 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);
00340
00351 FLAC_API FLAC__bool FLAC__metadata_simple_iterator_is_writable(const FLAC__Metadata_SimpleIterator *iterator);
00352
00365 FLAC_API FLAC__bool FLAC__metadata_simple_iterator_next(FLAC__Metadata_SimpleIterator *iterator);
00366
00379 FLAC_API FLAC__bool FLAC__metadata_simple_iterator_prev(FLAC__Metadata_SimpleIterator *iterator);
00380
00394 FLAC_API FLAC__MetadataType FLAC__metadata_simple_iterator_get_block_type(const FLAC__Metadata_SimpleIterator *iterator);
00395
00411 FLAC_API FLAC__StreamMetadata *FLAC__metadata_simple_iterator_get_block(FLAC__Metadata_SimpleIterator *iterator);
00412
00467 FLAC_API FLAC__bool FLAC__metadata_simple_iterator_set_block(FLAC__Metadata_SimpleIterator *iterator, FLAC__StreamMetadata *block, FLAC__bool use_padding);
00468
00492 FLAC_API FLAC__bool FLAC__metadata_simple_iterator_insert_block_after(FLAC__Metadata_SimpleIterator *iterator, FLAC__StreamMetadata *block, FLAC__bool use_padding);
00493
00511 FLAC_API FLAC__bool FLAC__metadata_simple_iterator_delete_block(FLAC__Metadata_SimpleIterator *iterator, FLAC__bool use_padding);
00512
00513
00514
00515
00568 struct FLAC__Metadata_Chain;
00571 typedef struct FLAC__Metadata_Chain FLAC__Metadata_Chain;
00572
00573 struct FLAC__Metadata_Iterator;
00576 typedef struct FLAC__Metadata_Iterator FLAC__Metadata_Iterator;
00577
00578 typedef enum {
00579 FLAC__METADATA_CHAIN_STATUS_OK = 0,
00582 FLAC__METADATA_CHAIN_STATUS_ILLEGAL_INPUT,
00585 FLAC__METADATA_CHAIN_STATUS_ERROR_OPENING_FILE,
00588 FLAC__METADATA_CHAIN_STATUS_NOT_A_FLAC_FILE,
00591 FLAC__METADATA_CHAIN_STATUS_NOT_WRITABLE,
00594 FLAC__METADATA_CHAIN_STATUS_BAD_METADATA,
00597 FLAC__METADATA_CHAIN_STATUS_READ_ERROR,
00600 FLAC__METADATA_CHAIN_STATUS_SEEK_ERROR,
00603 FLAC__METADATA_CHAIN_STATUS_WRITE_ERROR,
00606 FLAC__METADATA_CHAIN_STATUS_RENAME_ERROR,
00609 FLAC__METADATA_CHAIN_STATUS_UNLINK_ERROR,
00612 FLAC__METADATA_CHAIN_STATUS_MEMORY_ALLOCATION_ERROR,
00615 FLAC__METADATA_CHAIN_STATUS_INTERNAL_ERROR,
00618 FLAC__METADATA_CHAIN_STATUS_INVALID_CALLBACKS,
00621 FLAC__METADATA_CHAIN_STATUS_READ_WRITE_MISMATCH,
00629 FLAC__METADATA_CHAIN_STATUS_WRONG_WRITE_CALL
00639 } FLAC__Metadata_ChainStatus;
00640
00646 extern FLAC_API const char * const FLAC__Metadata_ChainStatusString[];
00647
00648
00649
00655 FLAC_API FLAC__Metadata_Chain *FLAC__metadata_chain_new();
00656
00663 FLAC_API void FLAC__metadata_chain_delete(FLAC__Metadata_Chain *chain);
00664
00675 FLAC_API FLAC__Metadata_ChainStatus FLAC__metadata_chain_status(FLAC__Metadata_Chain *chain);
00676
00689 FLAC_API FLAC__bool FLAC__metadata_chain_read(FLAC__Metadata_Chain *chain, const char *filename);
00690
00711 FLAC_API FLAC__bool FLAC__metadata_chain_read_with_callbacks(FLAC__Metadata_Chain *chain, FLAC__IOHandle handle, FLAC__IOCallbacks callbacks);
00712
00739 FLAC_API FLAC__bool FLAC__metadata_chain_check_if_tempfile_needed(FLAC__Metadata_Chain *chain, FLAC__bool use_padding);
00740
00784 FLAC_API FLAC__bool FLAC__metadata_chain_write(FLAC__Metadata_Chain *chain, FLAC__bool use_padding, FLAC__bool preserve_file_stats);
00785
00813 FLAC_API FLAC__bool FLAC__metadata_chain_write_with_callbacks(FLAC__Metadata_Chain *chain, FLAC__bool use_padding, FLAC__IOHandle handle, FLAC__IOCallbacks callbacks);
00814
00863 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);
00864
00877 FLAC_API void FLAC__metadata_chain_merge_padding(FLAC__Metadata_Chain *chain);
00878
00892 FLAC_API void FLAC__metadata_chain_sort_padding(FLAC__Metadata_Chain *chain);
00893
00894
00895
00896
00902 FLAC_API FLAC__Metadata_Iterator *FLAC__metadata_iterator_new();
00903
00910 FLAC_API void FLAC__metadata_iterator_delete(FLAC__Metadata_Iterator *iterator);
00911
00921 FLAC_API void FLAC__metadata_iterator_init(FLAC__Metadata_Iterator *iterator, FLAC__Metadata_Chain *chain);
00922
00935 FLAC_API FLAC__bool FLAC__metadata_iterator_next(FLAC__Metadata_Iterator *iterator);
00936
00949 FLAC_API FLAC__bool FLAC__metadata_iterator_prev(FLAC__Metadata_Iterator *iterator);
00950
00961 FLAC_API FLAC__MetadataType FLAC__metadata_iterator_get_block_type(const FLAC__Metadata_Iterator *iterator);
00962
00982 FLAC_API FLAC__StreamMetadata *FLAC__metadata_iterator_get_block(FLAC__Metadata_Iterator *iterator);
00983
00999 FLAC_API FLAC__bool FLAC__metadata_iterator_set_block(FLAC__Metadata_Iterator *iterator, FLAC__StreamMetadata *block);
01000
01017 FLAC_API FLAC__bool FLAC__metadata_iterator_delete_block(FLAC__Metadata_Iterator *iterator, FLAC__bool replace_with_padding);
01018
01036 FLAC_API FLAC__bool FLAC__metadata_iterator_insert_block_before(FLAC__Metadata_Iterator *iterator, FLAC__StreamMetadata *block);
01037
01054 FLAC_API FLAC__bool FLAC__metadata_iterator_insert_block_after(FLAC__Metadata_Iterator *iterator, FLAC__StreamMetadata *block);
01055
01056
01057
01058
01113 FLAC_API FLAC__StreamMetadata *FLAC__metadata_object_new(FLAC__MetadataType type);
01114
01127 FLAC_API FLAC__StreamMetadata *FLAC__metadata_object_clone(const FLAC__StreamMetadata *object);
01128
01138 FLAC_API void FLAC__metadata_object_delete(FLAC__StreamMetadata *object);
01139
01153 FLAC_API FLAC__bool FLAC__metadata_object_is_equal(const FLAC__StreamMetadata *block1, const FLAC__StreamMetadata *block2);
01154
01173 FLAC_API FLAC__bool FLAC__metadata_object_application_set_data(FLAC__StreamMetadata *object, FLAC__byte *data, unsigned length, FLAC__bool copy);
01174
01190 FLAC_API FLAC__bool FLAC__metadata_object_seektable_resize_points(FLAC__StreamMetadata *object, unsigned new_num_points);
01191
01202 FLAC_API void FLAC__metadata_object_seektable_set_point(FLAC__StreamMetadata *object, unsigned point_num, FLAC__StreamMetadata_SeekPoint point);
01203
01216 FLAC_API FLAC__bool FLAC__metadata_object_seektable_insert_point(FLAC__StreamMetadata *object, unsigned point_num, FLAC__StreamMetadata_SeekPoint point);
01217
01229 FLAC_API FLAC__bool FLAC__metadata_object_seektable_delete_point(FLAC__StreamMetadata *object, unsigned point_num);
01230
01242 FLAC_API FLAC__bool FLAC__metadata_object_seektable_is_legal(const FLAC__StreamMetadata *object);
01243
01259 FLAC_API FLAC__bool FLAC__metadata_object_seektable_template_append_placeholders(FLAC__StreamMetadata *object, unsigned num);
01260
01276 FLAC_API FLAC__bool FLAC__metadata_object_seektable_template_append_point(FLAC__StreamMetadata *object, FLAC__uint64 sample_number);
01277
01294 FLAC_API FLAC__bool FLAC__metadata_object_seektable_template_append_points(FLAC__StreamMetadata *object, FLAC__uint64 sample_numbers[], unsigned num);
01295
01315 FLAC_API FLAC__bool FLAC__metadata_object_seektable_template_append_spaced_points(FLAC__StreamMetadata *object, unsigned num, FLAC__uint64 total_samples);
01316
01332 FLAC_API FLAC__bool FLAC__metadata_object_seektable_template_sort(FLAC__StreamMetadata *object, FLAC__bool compact);
01333
01351 FLAC_API FLAC__bool FLAC__metadata_object_vorbiscomment_set_vendor_string(FLAC__StreamMetadata *object, FLAC__StreamMetadata_VorbisComment_Entry entry, FLAC__bool copy);
01352
01368 FLAC_API FLAC__bool FLAC__metadata_object_vorbiscomment_resize_comments(FLAC__StreamMetadata *object, unsigned new_num_comments);
01369
01389 FLAC_API FLAC__bool FLAC__metadata_object_vorbiscomment_set_comment(FLAC__StreamMetadata *object, unsigned comment_num, FLAC__StreamMetadata_VorbisComment_Entry entry, FLAC__bool copy);
01390
01413 FLAC_API FLAC__bool FLAC__metadata_object_vorbiscomment_insert_comment(FLAC__StreamMetadata *object, unsigned comment_num, FLAC__StreamMetadata_VorbisComment_Entry entry, FLAC__bool copy);
01414
01428 FLAC_API FLAC__bool FLAC__metadata_object_vorbiscomment_delete_comment(FLAC__StreamMetadata *object, unsigned comment_num);
01429
01430
01444 FLAC_API FLAC__bool FLAC__metadata_object_vorbiscomment_entry_matches(const FLAC__StreamMetadata_VorbisComment_Entry *entry, const char *field_name, unsigned field_name_length);
01445
01446
01463 FLAC_API int FLAC__metadata_object_vorbiscomment_find_entry_from(const FLAC__StreamMetadata *object, unsigned offset, const char *field_name);
01464
01465
01477 FLAC_API int FLAC__metadata_object_vorbiscomment_remove_entry_matching(FLAC__StreamMetadata *object, const char *field_name);
01478
01479
01491 FLAC_API int FLAC__metadata_object_vorbiscomment_remove_entries_matching(FLAC__StreamMetadata *object, const char *field_name);
01492
01500 FLAC_API FLAC__StreamMetadata_CueSheet_Track *FLAC__metadata_object_cuesheet_track_new();
01501
01515 FLAC_API FLAC__StreamMetadata_CueSheet_Track *FLAC__metadata_object_cuesheet_track_clone(const FLAC__StreamMetadata_CueSheet_Track *object);
01516
01523 FLAC_API void FLAC__metadata_object_cuesheet_track_delete(FLAC__StreamMetadata_CueSheet_Track *object);
01524
01543 FLAC_API FLAC__bool FLAC__metadata_object_cuesheet_track_resize_indices(FLAC__StreamMetadata *object, unsigned track_num, unsigned new_num_indices);
01544
01566 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);
01567
01590 FLAC_API FLAC__bool FLAC__metadata_object_cuesheet_track_insert_blank_index(FLAC__StreamMetadata *object, unsigned track_num, unsigned index_num);
01591
01609 FLAC_API FLAC__bool FLAC__metadata_object_cuesheet_track_delete_index(FLAC__StreamMetadata *object, unsigned track_num, unsigned index_num);
01610
01626 FLAC_API FLAC__bool FLAC__metadata_object_cuesheet_resize_tracks(FLAC__StreamMetadata *object, unsigned new_num_tracks);
01627
01649 FLAC_API FLAC__bool FLAC__metadata_object_cuesheet_set_track(FLAC__StreamMetadata *object, unsigned track_num, FLAC__StreamMetadata_CueSheet_Track *track, FLAC__bool copy);
01650
01673 FLAC_API FLAC__bool FLAC__metadata_object_cuesheet_insert_track(FLAC__StreamMetadata *object, unsigned track_num, FLAC__StreamMetadata_CueSheet_Track *track, FLAC__bool copy);
01674
01692 FLAC_API FLAC__bool FLAC__metadata_object_cuesheet_insert_blank_track(FLAC__StreamMetadata *object, unsigned track_num);
01693
01707 FLAC_API FLAC__bool FLAC__metadata_object_cuesheet_delete_track(FLAC__StreamMetadata *object, unsigned track_num);
01708
01728 FLAC_API FLAC__bool FLAC__metadata_object_cuesheet_is_legal(const FLAC__StreamMetadata *object, FLAC__bool check_cd_da_subset, const char **violation);
01729
01730
01731
01732 #ifdef __cplusplus
01733 }
01734 #endif
01735
01736 #endif