cannam@86: cannam@86:
cannam@86:00001 /* libFLAC - Free Lossless Audio Codec library cannam@86: 00002 * Copyright (C) 2001,2002,2003,2004,2005,2006,2007 Josh Coalson cannam@86: 00003 * cannam@86: 00004 * Redistribution and use in source and binary forms, with or without cannam@86: 00005 * modification, are permitted provided that the following conditions cannam@86: 00006 * are met: cannam@86: 00007 * cannam@86: 00008 * - Redistributions of source code must retain the above copyright cannam@86: 00009 * notice, this list of conditions and the following disclaimer. cannam@86: 00010 * cannam@86: 00011 * - Redistributions in binary form must reproduce the above copyright cannam@86: 00012 * notice, this list of conditions and the following disclaimer in the cannam@86: 00013 * documentation and/or other materials provided with the distribution. cannam@86: 00014 * cannam@86: 00015 * - Neither the name of the Xiph.org Foundation nor the names of its cannam@86: 00016 * contributors may be used to endorse or promote products derived from cannam@86: 00017 * this software without specific prior written permission. cannam@86: 00018 * cannam@86: 00019 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS cannam@86: 00020 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT cannam@86: 00021 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR cannam@86: 00022 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR cannam@86: 00023 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, cannam@86: 00024 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, cannam@86: 00025 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR cannam@86: 00026 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF cannam@86: 00027 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING cannam@86: 00028 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS cannam@86: 00029 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. cannam@86: 00030 */ cannam@86: 00031 cannam@86: 00032 #ifndef FLAC__METADATA_H cannam@86: 00033 #define FLAC__METADATA_H cannam@86: 00034 cannam@86: 00035 #include <sys/types.h> /* for off_t */ cannam@86: 00036 #include "export.h" cannam@86: 00037 #include "callback.h" cannam@86: 00038 #include "format.h" cannam@86: 00039 cannam@86: 00040 /* -------------------------------------------------------------------- cannam@86: 00041 (For an example of how all these routines are used, see the source cannam@86: 00042 code for the unit tests in src/test_libFLAC/metadata_*.c, or cannam@86: 00043 metaflac in src/metaflac/) cannam@86: 00044 ------------------------------------------------------------------*/ cannam@86: 00045 cannam@86: 00123 #ifdef __cplusplus cannam@86: 00124 extern "C" { cannam@86: 00125 #endif cannam@86: 00126 cannam@86: 00127 cannam@86: 00158 FLAC_API FLAC__bool FLAC__metadata_get_streaminfo(const char *filename, FLAC__StreamMetadata *streaminfo); cannam@86: 00159 cannam@86: 00177 FLAC_API FLAC__bool FLAC__metadata_get_tags(const char *filename, FLAC__StreamMetadata **tags); cannam@86: 00178 cannam@86: 00196 FLAC_API FLAC__bool FLAC__metadata_get_cuesheet(const char *filename, FLAC__StreamMetadata **cuesheet); cannam@86: 00197 cannam@86: 00236 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); cannam@86: 00237 cannam@86: 00238 /* \} */ cannam@86: 00239 cannam@86: 00240 cannam@86: 00296 struct FLAC__Metadata_SimpleIterator; cannam@86: 00302 typedef struct FLAC__Metadata_SimpleIterator FLAC__Metadata_SimpleIterator; cannam@86: 00303 cannam@86: 00308 typedef enum { cannam@86: 00309 cannam@86: 00310 FLAC__METADATA_SIMPLE_ITERATOR_STATUS_OK = 0, cannam@86: 00313 FLAC__METADATA_SIMPLE_ITERATOR_STATUS_ILLEGAL_INPUT, cannam@86: 00316 FLAC__METADATA_SIMPLE_ITERATOR_STATUS_ERROR_OPENING_FILE, cannam@86: 00319 FLAC__METADATA_SIMPLE_ITERATOR_STATUS_NOT_A_FLAC_FILE, cannam@86: 00322 FLAC__METADATA_SIMPLE_ITERATOR_STATUS_NOT_WRITABLE, cannam@86: 00325 FLAC__METADATA_SIMPLE_ITERATOR_STATUS_BAD_METADATA, cannam@86: 00328 FLAC__METADATA_SIMPLE_ITERATOR_STATUS_READ_ERROR, cannam@86: 00331 FLAC__METADATA_SIMPLE_ITERATOR_STATUS_SEEK_ERROR, cannam@86: 00334 FLAC__METADATA_SIMPLE_ITERATOR_STATUS_WRITE_ERROR, cannam@86: 00337 FLAC__METADATA_SIMPLE_ITERATOR_STATUS_RENAME_ERROR, cannam@86: 00340 FLAC__METADATA_SIMPLE_ITERATOR_STATUS_UNLINK_ERROR, cannam@86: 00343 FLAC__METADATA_SIMPLE_ITERATOR_STATUS_MEMORY_ALLOCATION_ERROR, cannam@86: 00346 FLAC__METADATA_SIMPLE_ITERATOR_STATUS_INTERNAL_ERROR cannam@86: 00349 } FLAC__Metadata_SimpleIteratorStatus; cannam@86: 00350 cannam@86: 00356 extern FLAC_API const char * const FLAC__Metadata_SimpleIteratorStatusString[]; cannam@86: 00357 cannam@86: 00358 cannam@86: 00364 FLAC_API FLAC__Metadata_SimpleIterator *FLAC__metadata_simple_iterator_new(void); cannam@86: 00365 cannam@86: 00372 FLAC_API void FLAC__metadata_simple_iterator_delete(FLAC__Metadata_SimpleIterator *iterator); cannam@86: 00373 cannam@86: 00384 FLAC_API FLAC__Metadata_SimpleIteratorStatus FLAC__metadata_simple_iterator_status(FLAC__Metadata_SimpleIterator *iterator); cannam@86: 00385 cannam@86: 00405 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); cannam@86: 00406 cannam@86: 00417 FLAC_API FLAC__bool FLAC__metadata_simple_iterator_is_writable(const FLAC__Metadata_SimpleIterator *iterator); cannam@86: 00418 cannam@86: 00431 FLAC_API FLAC__bool FLAC__metadata_simple_iterator_next(FLAC__Metadata_SimpleIterator *iterator); cannam@86: 00432 cannam@86: 00445 FLAC_API FLAC__bool FLAC__metadata_simple_iterator_prev(FLAC__Metadata_SimpleIterator *iterator); cannam@86: 00446 cannam@86: 00458 FLAC_API FLAC__bool FLAC__metadata_simple_iterator_is_last(const FLAC__Metadata_SimpleIterator *iterator); cannam@86: 00459 cannam@86: 00474 FLAC_API off_t FLAC__metadata_simple_iterator_get_block_offset(const FLAC__Metadata_SimpleIterator *iterator); cannam@86: 00475 cannam@86: 00488 FLAC_API FLAC__MetadataType FLAC__metadata_simple_iterator_get_block_type(const FLAC__Metadata_SimpleIterator *iterator); cannam@86: 00489 cannam@86: 00505 FLAC_API unsigned FLAC__metadata_simple_iterator_get_block_length(const FLAC__Metadata_SimpleIterator *iterator); cannam@86: 00506 cannam@86: 00530 FLAC_API FLAC__bool FLAC__metadata_simple_iterator_get_application_id(FLAC__Metadata_SimpleIterator *iterator, FLAC__byte *id); cannam@86: 00531 cannam@86: 00548 FLAC_API FLAC__StreamMetadata *FLAC__metadata_simple_iterator_get_block(FLAC__Metadata_SimpleIterator *iterator); cannam@86: 00549 cannam@86: 00604 FLAC_API FLAC__bool FLAC__metadata_simple_iterator_set_block(FLAC__Metadata_SimpleIterator *iterator, FLAC__StreamMetadata *block, FLAC__bool use_padding); cannam@86: 00605 cannam@86: 00629 FLAC_API FLAC__bool FLAC__metadata_simple_iterator_insert_block_after(FLAC__Metadata_SimpleIterator *iterator, FLAC__StreamMetadata *block, FLAC__bool use_padding); cannam@86: 00630 cannam@86: 00648 FLAC_API FLAC__bool FLAC__metadata_simple_iterator_delete_block(FLAC__Metadata_SimpleIterator *iterator, FLAC__bool use_padding); cannam@86: 00649 cannam@86: 00650 /* \} */ cannam@86: 00651 cannam@86: 00652 cannam@86: 00710 struct FLAC__Metadata_Chain; cannam@86: 00713 typedef struct FLAC__Metadata_Chain FLAC__Metadata_Chain; cannam@86: 00714 cannam@86: 00715 struct FLAC__Metadata_Iterator; cannam@86: 00718 typedef struct FLAC__Metadata_Iterator FLAC__Metadata_Iterator; cannam@86: 00719 cannam@86: 00720 typedef enum { cannam@86: 00721 FLAC__METADATA_CHAIN_STATUS_OK = 0, cannam@86: 00724 FLAC__METADATA_CHAIN_STATUS_ILLEGAL_INPUT, cannam@86: 00727 FLAC__METADATA_CHAIN_STATUS_ERROR_OPENING_FILE, cannam@86: 00730 FLAC__METADATA_CHAIN_STATUS_NOT_A_FLAC_FILE, cannam@86: 00733 FLAC__METADATA_CHAIN_STATUS_NOT_WRITABLE, cannam@86: 00736 FLAC__METADATA_CHAIN_STATUS_BAD_METADATA, cannam@86: 00739 FLAC__METADATA_CHAIN_STATUS_READ_ERROR, cannam@86: 00742 FLAC__METADATA_CHAIN_STATUS_SEEK_ERROR, cannam@86: 00745 FLAC__METADATA_CHAIN_STATUS_WRITE_ERROR, cannam@86: 00748 FLAC__METADATA_CHAIN_STATUS_RENAME_ERROR, cannam@86: 00751 FLAC__METADATA_CHAIN_STATUS_UNLINK_ERROR, cannam@86: 00754 FLAC__METADATA_CHAIN_STATUS_MEMORY_ALLOCATION_ERROR, cannam@86: 00757 FLAC__METADATA_CHAIN_STATUS_INTERNAL_ERROR, cannam@86: 00760 FLAC__METADATA_CHAIN_STATUS_INVALID_CALLBACKS, cannam@86: 00763 FLAC__METADATA_CHAIN_STATUS_READ_WRITE_MISMATCH, cannam@86: 00772 FLAC__METADATA_CHAIN_STATUS_WRONG_WRITE_CALL cannam@86: 00782 } FLAC__Metadata_ChainStatus; cannam@86: 00783 cannam@86: 00789 extern FLAC_API const char * const FLAC__Metadata_ChainStatusString[]; cannam@86: 00790 cannam@86: 00791 /*********** FLAC__Metadata_Chain ***********/ cannam@86: 00792 cannam@86: 00798 FLAC_API FLAC__Metadata_Chain *FLAC__metadata_chain_new(void); cannam@86: 00799 cannam@86: 00806 FLAC_API void FLAC__metadata_chain_delete(FLAC__Metadata_Chain *chain); cannam@86: 00807 cannam@86: 00818 FLAC_API FLAC__Metadata_ChainStatus FLAC__metadata_chain_status(FLAC__Metadata_Chain *chain); cannam@86: 00819 cannam@86: 00832 FLAC_API FLAC__bool FLAC__metadata_chain_read(FLAC__Metadata_Chain *chain, const char *filename); cannam@86: 00833 cannam@86: 00849 FLAC_API FLAC__bool FLAC__metadata_chain_read_ogg(FLAC__Metadata_Chain *chain, const char *filename); cannam@86: 00850 cannam@86: 00871 FLAC_API FLAC__bool FLAC__metadata_chain_read_with_callbacks(FLAC__Metadata_Chain *chain, FLAC__IOHandle handle, FLAC__IOCallbacks callbacks); cannam@86: 00872 cannam@86: 00896 FLAC_API FLAC__bool FLAC__metadata_chain_read_ogg_with_callbacks(FLAC__Metadata_Chain *chain, FLAC__IOHandle handle, FLAC__IOCallbacks callbacks); cannam@86: 00897 cannam@86: 00924 FLAC_API FLAC__bool FLAC__metadata_chain_check_if_tempfile_needed(FLAC__Metadata_Chain *chain, FLAC__bool use_padding); cannam@86: 00925 cannam@86: 00970 FLAC_API FLAC__bool FLAC__metadata_chain_write(FLAC__Metadata_Chain *chain, FLAC__bool use_padding, FLAC__bool preserve_file_stats); cannam@86: 00971 cannam@86: 01000 FLAC_API FLAC__bool FLAC__metadata_chain_write_with_callbacks(FLAC__Metadata_Chain *chain, FLAC__bool use_padding, FLAC__IOHandle handle, FLAC__IOCallbacks callbacks); cannam@86: 01001 cannam@86: 01051 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); cannam@86: 01052 cannam@86: 01065 FLAC_API void FLAC__metadata_chain_merge_padding(FLAC__Metadata_Chain *chain); cannam@86: 01066 cannam@86: 01080 FLAC_API void FLAC__metadata_chain_sort_padding(FLAC__Metadata_Chain *chain); cannam@86: 01081 cannam@86: 01082 cannam@86: 01083 /*********** FLAC__Metadata_Iterator ***********/ cannam@86: 01084 cannam@86: 01090 FLAC_API FLAC__Metadata_Iterator *FLAC__metadata_iterator_new(void); cannam@86: 01091 cannam@86: 01098 FLAC_API void FLAC__metadata_iterator_delete(FLAC__Metadata_Iterator *iterator); cannam@86: 01099 cannam@86: 01109 FLAC_API void FLAC__metadata_iterator_init(FLAC__Metadata_Iterator *iterator, FLAC__Metadata_Chain *chain); cannam@86: 01110 cannam@86: 01123 FLAC_API FLAC__bool FLAC__metadata_iterator_next(FLAC__Metadata_Iterator *iterator); cannam@86: 01124 cannam@86: 01137 FLAC_API FLAC__bool FLAC__metadata_iterator_prev(FLAC__Metadata_Iterator *iterator); cannam@86: 01138 cannam@86: 01149 FLAC_API FLAC__MetadataType FLAC__metadata_iterator_get_block_type(const FLAC__Metadata_Iterator *iterator); cannam@86: 01150 cannam@86: 01170 FLAC_API FLAC__StreamMetadata *FLAC__metadata_iterator_get_block(FLAC__Metadata_Iterator *iterator); cannam@86: 01171 cannam@86: 01187 FLAC_API FLAC__bool FLAC__metadata_iterator_set_block(FLAC__Metadata_Iterator *iterator, FLAC__StreamMetadata *block); cannam@86: 01188 cannam@86: 01205 FLAC_API FLAC__bool FLAC__metadata_iterator_delete_block(FLAC__Metadata_Iterator *iterator, FLAC__bool replace_with_padding); cannam@86: 01206 cannam@86: 01224 FLAC_API FLAC__bool FLAC__metadata_iterator_insert_block_before(FLAC__Metadata_Iterator *iterator, FLAC__StreamMetadata *block); cannam@86: 01225 cannam@86: 01242 FLAC_API FLAC__bool FLAC__metadata_iterator_insert_block_after(FLAC__Metadata_Iterator *iterator, FLAC__StreamMetadata *block); cannam@86: 01243 cannam@86: 01244 /* \} */ cannam@86: 01245 cannam@86: 01246 cannam@86: 01312 FLAC_API FLAC__StreamMetadata *FLAC__metadata_object_new(FLAC__MetadataType type); cannam@86: 01313 cannam@86: 01326 FLAC_API FLAC__StreamMetadata *FLAC__metadata_object_clone(const FLAC__StreamMetadata *object); cannam@86: 01327 cannam@86: 01337 FLAC_API void FLAC__metadata_object_delete(FLAC__StreamMetadata *object); cannam@86: 01338 cannam@86: 01352 FLAC_API FLAC__bool FLAC__metadata_object_is_equal(const FLAC__StreamMetadata *block1, const FLAC__StreamMetadata *block2); cannam@86: 01353 cannam@86: 01375 FLAC_API FLAC__bool FLAC__metadata_object_application_set_data(FLAC__StreamMetadata *object, FLAC__byte *data, unsigned length, FLAC__bool copy); cannam@86: 01376 cannam@86: 01392 FLAC_API FLAC__bool FLAC__metadata_object_seektable_resize_points(FLAC__StreamMetadata *object, unsigned new_num_points); cannam@86: 01393 cannam@86: 01404 FLAC_API void FLAC__metadata_object_seektable_set_point(FLAC__StreamMetadata *object, unsigned point_num, FLAC__StreamMetadata_SeekPoint point); cannam@86: 01405 cannam@86: 01418 FLAC_API FLAC__bool FLAC__metadata_object_seektable_insert_point(FLAC__StreamMetadata *object, unsigned point_num, FLAC__StreamMetadata_SeekPoint point); cannam@86: 01419 cannam@86: 01431 FLAC_API FLAC__bool FLAC__metadata_object_seektable_delete_point(FLAC__StreamMetadata *object, unsigned point_num); cannam@86: 01432 cannam@86: 01444 FLAC_API FLAC__bool FLAC__metadata_object_seektable_is_legal(const FLAC__StreamMetadata *object); cannam@86: 01445 cannam@86: 01461 FLAC_API FLAC__bool FLAC__metadata_object_seektable_template_append_placeholders(FLAC__StreamMetadata *object, unsigned num); cannam@86: 01462 cannam@86: 01478 FLAC_API FLAC__bool FLAC__metadata_object_seektable_template_append_point(FLAC__StreamMetadata *object, FLAC__uint64 sample_number); cannam@86: 01479 cannam@86: 01496 FLAC_API FLAC__bool FLAC__metadata_object_seektable_template_append_points(FLAC__StreamMetadata *object, FLAC__uint64 sample_numbers[], unsigned num); cannam@86: 01497 cannam@86: 01518 FLAC_API FLAC__bool FLAC__metadata_object_seektable_template_append_spaced_points(FLAC__StreamMetadata *object, unsigned num, FLAC__uint64 total_samples); cannam@86: 01519 cannam@86: 01546 FLAC_API FLAC__bool FLAC__metadata_object_seektable_template_append_spaced_points_by_samples(FLAC__StreamMetadata *object, unsigned samples, FLAC__uint64 total_samples); cannam@86: 01547 cannam@86: 01563 FLAC_API FLAC__bool FLAC__metadata_object_seektable_template_sort(FLAC__StreamMetadata *object, FLAC__bool compact); cannam@86: 01564 cannam@86: 01588 FLAC_API FLAC__bool FLAC__metadata_object_vorbiscomment_set_vendor_string(FLAC__StreamMetadata *object, FLAC__StreamMetadata_VorbisComment_Entry entry, FLAC__bool copy); cannam@86: 01589 cannam@86: 01605 FLAC_API FLAC__bool FLAC__metadata_object_vorbiscomment_resize_comments(FLAC__StreamMetadata *object, unsigned new_num_comments); cannam@86: 01606 cannam@86: 01632 FLAC_API FLAC__bool FLAC__metadata_object_vorbiscomment_set_comment(FLAC__StreamMetadata *object, unsigned comment_num, FLAC__StreamMetadata_VorbisComment_Entry entry, FLAC__bool copy); cannam@86: 01633 cannam@86: 01662 FLAC_API FLAC__bool FLAC__metadata_object_vorbiscomment_insert_comment(FLAC__StreamMetadata *object, unsigned comment_num, FLAC__StreamMetadata_VorbisComment_Entry entry, FLAC__bool copy); cannam@86: 01663 cannam@86: 01687 FLAC_API FLAC__bool FLAC__metadata_object_vorbiscomment_append_comment(FLAC__StreamMetadata *object, FLAC__StreamMetadata_VorbisComment_Entry entry, FLAC__bool copy); cannam@86: 01688 cannam@86: 01722 FLAC_API FLAC__bool FLAC__metadata_object_vorbiscomment_replace_comment(FLAC__StreamMetadata *object, FLAC__StreamMetadata_VorbisComment_Entry entry, FLAC__bool all, FLAC__bool copy); cannam@86: 01723 cannam@86: 01735 FLAC_API FLAC__bool FLAC__metadata_object_vorbiscomment_delete_comment(FLAC__StreamMetadata *object, unsigned comment_num); cannam@86: 01736 cannam@86: 01756 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); cannam@86: 01757 cannam@86: 01777 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); cannam@86: 01778 cannam@86: 01791 FLAC_API FLAC__bool FLAC__metadata_object_vorbiscomment_entry_matches(const FLAC__StreamMetadata_VorbisComment_Entry entry, const char *field_name, unsigned field_name_length); cannam@86: 01792 cannam@86: 01810 FLAC_API int FLAC__metadata_object_vorbiscomment_find_entry_from(const FLAC__StreamMetadata *object, unsigned offset, const char *field_name); cannam@86: 01811 cannam@86: 01823 FLAC_API int FLAC__metadata_object_vorbiscomment_remove_entry_matching(FLAC__StreamMetadata *object, const char *field_name); cannam@86: 01824 cannam@86: 01836 FLAC_API int FLAC__metadata_object_vorbiscomment_remove_entries_matching(FLAC__StreamMetadata *object, const char *field_name); cannam@86: 01837 cannam@86: 01845 FLAC_API FLAC__StreamMetadata_CueSheet_Track *FLAC__metadata_object_cuesheet_track_new(void); cannam@86: 01846 cannam@86: 01860 FLAC_API FLAC__StreamMetadata_CueSheet_Track *FLAC__metadata_object_cuesheet_track_clone(const FLAC__StreamMetadata_CueSheet_Track *object); cannam@86: 01861 cannam@86: 01868 FLAC_API void FLAC__metadata_object_cuesheet_track_delete(FLAC__StreamMetadata_CueSheet_Track *object); cannam@86: 01869 cannam@86: 01888 FLAC_API FLAC__bool FLAC__metadata_object_cuesheet_track_resize_indices(FLAC__StreamMetadata *object, unsigned track_num, unsigned new_num_indices); cannam@86: 01889 cannam@86: 01911 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); cannam@86: 01912 cannam@86: 01935 FLAC_API FLAC__bool FLAC__metadata_object_cuesheet_track_insert_blank_index(FLAC__StreamMetadata *object, unsigned track_num, unsigned index_num); cannam@86: 01936 cannam@86: 01954 FLAC_API FLAC__bool FLAC__metadata_object_cuesheet_track_delete_index(FLAC__StreamMetadata *object, unsigned track_num, unsigned index_num); cannam@86: 01955 cannam@86: 01971 FLAC_API FLAC__bool FLAC__metadata_object_cuesheet_resize_tracks(FLAC__StreamMetadata *object, unsigned new_num_tracks); cannam@86: 01972 cannam@86: 01993 FLAC_API FLAC__bool FLAC__metadata_object_cuesheet_set_track(FLAC__StreamMetadata *object, unsigned track_num, FLAC__StreamMetadata_CueSheet_Track *track, FLAC__bool copy); cannam@86: 01994 cannam@86: 02016 FLAC_API FLAC__bool FLAC__metadata_object_cuesheet_insert_track(FLAC__StreamMetadata *object, unsigned track_num, FLAC__StreamMetadata_CueSheet_Track *track, FLAC__bool copy); cannam@86: 02017 cannam@86: 02035 FLAC_API FLAC__bool FLAC__metadata_object_cuesheet_insert_blank_track(FLAC__StreamMetadata *object, unsigned track_num); cannam@86: 02036 cannam@86: 02050 FLAC_API FLAC__bool FLAC__metadata_object_cuesheet_delete_track(FLAC__StreamMetadata *object, unsigned track_num); cannam@86: 02051 cannam@86: 02071 FLAC_API FLAC__bool FLAC__metadata_object_cuesheet_is_legal(const FLAC__StreamMetadata *object, FLAC__bool check_cd_da_subset, const char **violation); cannam@86: 02072 cannam@86: 02084 FLAC_API FLAC__uint32 FLAC__metadata_object_cuesheet_calculate_cddb_id(const FLAC__StreamMetadata *object); cannam@86: 02085 cannam@86: 02107 FLAC_API FLAC__bool FLAC__metadata_object_picture_set_mime_type(FLAC__StreamMetadata *object, char *mime_type, FLAC__bool copy); cannam@86: 02108 cannam@86: 02129 FLAC_API FLAC__bool FLAC__metadata_object_picture_set_description(FLAC__StreamMetadata *object, FLAC__byte *description, FLAC__bool copy); cannam@86: 02130 cannam@86: 02154 FLAC_API FLAC__bool FLAC__metadata_object_picture_set_data(FLAC__StreamMetadata *object, FLAC__byte *data, FLAC__uint32 length, FLAC__bool copy); cannam@86: 02155 cannam@86: 02173 FLAC_API FLAC__bool FLAC__metadata_object_picture_is_legal(const FLAC__StreamMetadata *object, const char **violation); cannam@86: 02174 cannam@86: 02175 /* \} */ cannam@86: 02176 cannam@86: 02177 #ifdef __cplusplus cannam@86: 02178 } cannam@86: 02179 #endif cannam@86: 02180 cannam@86: 02181 #endif cannam@86: