metadata.h
Go to the documentation of this file.
/* libFLAC++ - Free Lossless Audio Codec library
* Copyright (C) 2002-2009 Josh Coalson
* Copyright (C) 2011-2025 Xiph.Org Foundation
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* - Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* - Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* - Neither the name of the Xiph.org Foundation nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef FLACPP__METADATA_H
#define FLACPP__METADATA_H
#include "export.h"
#include "FLAC/metadata.h"
// ===============================================================
//
// Full documentation for the metadata interface can be found
// in the C layer in include/FLAC/metadata.h
//
// ===============================================================
namespace FLAC {
namespace Metadata {
// ============================================================
//
// Metadata objects
//
// ============================================================
class FLACPP_API Prototype {
protected:
Prototype(const Prototype &);
Prototype(const ::FLAC__StreamMetadata &);
Prototype(const ::FLAC__StreamMetadata *);
Prototype(::FLAC__StreamMetadata *object, bool copy);
Prototype &operator=(const Prototype &);
Prototype &operator=(const ::FLAC__StreamMetadata &);
Prototype &operator=(const ::FLAC__StreamMetadata *);
Prototype &assign_object(::FLAC__StreamMetadata *object, bool copy);
virtual void clear();
::FLAC__StreamMetadata *object_;
public:
virtual ~Prototype();
inline bool operator==(const Prototype &) const;
inline bool operator==(const ::FLAC__StreamMetadata &) const;
inline bool operator==(const ::FLAC__StreamMetadata *) const;
inline bool operator!=(const Prototype &) const;
inline bool operator!=(const ::FLAC__StreamMetadata &) const;
inline bool operator!=(const ::FLAC__StreamMetadata *) const;
friend class SimpleIterator;
friend class Iterator;
inline bool is_valid() const;
bool get_is_last() const;
::FLAC__MetadataType get_type() const;
uint32_t get_length() const;
void set_is_last(bool);
inline operator const ::FLAC__StreamMetadata *() const;
private:
Prototype();
// These are used only by Iterator
bool is_reference_;
inline void set_reference(bool x) { is_reference_ = x; }
};
// local utility routines
namespace local {
Prototype *construct_block(::FLAC__StreamMetadata *object);
}
#ifdef _MSC_VER
// warning C4800: 'int' : forcing to bool 'true' or 'false' (performance warning)
#pragma warning ( disable : 4800 )
#endif
inline bool Prototype::operator==(const Prototype &object) const
{ return (bool)::FLAC__metadata_object_is_equal(object_, object.object_); }
inline bool Prototype::operator==(const ::FLAC__StreamMetadata &object) const
{ return (bool)::FLAC__metadata_object_is_equal(object_, &object); }
inline bool Prototype::operator==(const ::FLAC__StreamMetadata *object) const
{ return (bool)::FLAC__metadata_object_is_equal(object_, object); }
#ifdef _MSC_VER
#pragma warning ( default : 4800 )
#endif
inline bool Prototype::operator!=(const Prototype &object) const
{ return !operator==(object); }
inline bool Prototype::operator!=(const ::FLAC__StreamMetadata &object) const
{ return !operator==(object); }
inline bool Prototype::operator!=(const ::FLAC__StreamMetadata *object) const
{ return !operator==(object); }
inline bool Prototype::is_valid() const
{ return 0 != object_; }
inline Prototype::operator const ::FLAC__StreamMetadata *() const
{ return object_; }
FLACPP_API Prototype *clone(const Prototype *);
class FLACPP_API StreamInfo : public Prototype {
public:
StreamInfo();
inline StreamInfo(const StreamInfo &object): Prototype(object) { }
inline StreamInfo(const ::FLAC__StreamMetadata &object): Prototype(object) { }
inline StreamInfo(const ::FLAC__StreamMetadata *object): Prototype(object) { }
inline StreamInfo(::FLAC__StreamMetadata *object, bool copy): Prototype(object, copy) { }
~StreamInfo();
inline StreamInfo &operator=(const StreamInfo &object) { Prototype::operator=(object); return *this; }
inline StreamInfo &operator=(const ::FLAC__StreamMetadata &object) { Prototype::operator=(object); return *this; }
inline StreamInfo &operator=(const ::FLAC__StreamMetadata *object) { Prototype::operator=(object); return *this; }
inline StreamInfo &assign(::FLAC__StreamMetadata *object, bool copy) { Prototype::assign_object(object, copy); return *this; }
inline bool operator==(const StreamInfo &object) const { return Prototype::operator==(object); }
inline bool operator==(const ::FLAC__StreamMetadata &object) const { return Prototype::operator==(object); }
inline bool operator==(const ::FLAC__StreamMetadata *object) const { return Prototype::operator==(object); }
inline bool operator!=(const StreamInfo &object) const { return Prototype::operator!=(object); }
inline bool operator!=(const ::FLAC__StreamMetadata &object) const { return Prototype::operator!=(object); }
inline bool operator!=(const ::FLAC__StreamMetadata *object) const { return Prototype::operator!=(object); }
uint32_t get_min_blocksize() const;
uint32_t get_max_blocksize() const;
uint32_t get_min_framesize() const;
uint32_t get_max_framesize() const;
uint32_t get_sample_rate() const;
uint32_t get_channels() const;
uint32_t get_bits_per_sample() const;
FLAC__uint64 get_total_samples() const;
const FLAC__byte *get_md5sum() const;
void set_min_blocksize(uint32_t value);
void set_max_blocksize(uint32_t value);
void set_min_framesize(uint32_t value);
void set_max_framesize(uint32_t value);
void set_sample_rate(uint32_t value);
void set_channels(uint32_t value);
void set_bits_per_sample(uint32_t value);
void set_total_samples(FLAC__uint64 value);
void set_md5sum(const FLAC__byte value[16]);
};
class FLACPP_API Padding : public Prototype {
public:
Padding();
inline Padding(const Padding &object): Prototype(object) { }
inline Padding(const ::FLAC__StreamMetadata &object): Prototype(object) { }
inline Padding(const ::FLAC__StreamMetadata *object): Prototype(object) { }
inline Padding(::FLAC__StreamMetadata *object, bool copy): Prototype(object, copy) { }
Padding(uint32_t length);
~Padding();
inline Padding &operator=(const Padding &object) { Prototype::operator=(object); return *this; }
inline Padding &operator=(const ::FLAC__StreamMetadata &object) { Prototype::operator=(object); return *this; }
inline Padding &operator=(const ::FLAC__StreamMetadata *object) { Prototype::operator=(object); return *this; }
inline Padding &assign(::FLAC__StreamMetadata *object, bool copy) { Prototype::assign_object(object, copy); return *this; }
inline bool operator==(const Padding &object) const { return Prototype::operator==(object); }
inline bool operator==(const ::FLAC__StreamMetadata &object) const { return Prototype::operator==(object); }
inline bool operator==(const ::FLAC__StreamMetadata *object) const { return Prototype::operator==(object); }
inline bool operator!=(const Padding &object) const { return Prototype::operator!=(object); }
inline bool operator!=(const ::FLAC__StreamMetadata &object) const { return Prototype::operator!=(object); }
inline bool operator!=(const ::FLAC__StreamMetadata *object) const { return Prototype::operator!=(object); }
void set_length(uint32_t length);
};
class FLACPP_API Application : public Prototype {
public:
Application();
//
inline Application(const Application &object): Prototype(object) { }
inline Application(const ::FLAC__StreamMetadata &object): Prototype(object) { }
inline Application(const ::FLAC__StreamMetadata *object): Prototype(object) { }
inline Application(::FLAC__StreamMetadata *object, bool copy): Prototype(object, copy) { }
~Application();
inline Application &operator=(const Application &object) { Prototype::operator=(object); return *this; }
inline Application &operator=(const ::FLAC__StreamMetadata &object) { Prototype::operator=(object); return *this; }
inline Application &operator=(const ::FLAC__StreamMetadata *object) { Prototype::operator=(object); return *this; }
inline Application &assign(::FLAC__StreamMetadata *object, bool copy) { Prototype::assign_object(object, copy); return *this; }
inline bool operator==(const Application &object) const { return Prototype::operator==(object); }
inline bool operator==(const ::FLAC__StreamMetadata &object) const { return Prototype::operator==(object); }
inline bool operator==(const ::FLAC__StreamMetadata *object) const { return Prototype::operator==(object); }
inline bool operator!=(const Application &object) const { return Prototype::operator!=(object); }
inline bool operator!=(const ::FLAC__StreamMetadata &object) const { return Prototype::operator!=(object); }
inline bool operator!=(const ::FLAC__StreamMetadata *object) const { return Prototype::operator!=(object); }
const FLAC__byte *get_id() const;
const FLAC__byte *get_data() const;
void set_id(const FLAC__byte value[4]);
bool set_data(const FLAC__byte *data, uint32_t length);
bool set_data(FLAC__byte *data, uint32_t length, bool copy);
};
class FLACPP_API SeekTable : public Prototype {
public:
SeekTable();
inline SeekTable(const SeekTable &object): Prototype(object) { }
inline SeekTable(const ::FLAC__StreamMetadata &object): Prototype(object) { }
inline SeekTable(const ::FLAC__StreamMetadata *object): Prototype(object) { }
inline SeekTable(::FLAC__StreamMetadata *object, bool copy): Prototype(object, copy) { }
~SeekTable();
inline SeekTable &operator=(const SeekTable &object) { Prototype::operator=(object); return *this; }
inline SeekTable &operator=(const ::FLAC__StreamMetadata &object) { Prototype::operator=(object); return *this; }
inline SeekTable &operator=(const ::FLAC__StreamMetadata *object) { Prototype::operator=(object); return *this; }
inline SeekTable &assign(::FLAC__StreamMetadata *object, bool copy) { Prototype::assign_object(object, copy); return *this; }
inline bool operator==(const SeekTable &object) const { return Prototype::operator==(object); }
inline bool operator==(const ::FLAC__StreamMetadata &object) const { return Prototype::operator==(object); }
inline bool operator==(const ::FLAC__StreamMetadata *object) const { return Prototype::operator==(object); }
inline bool operator!=(const SeekTable &object) const { return Prototype::operator!=(object); }
inline bool operator!=(const ::FLAC__StreamMetadata &object) const { return Prototype::operator!=(object); }
inline bool operator!=(const ::FLAC__StreamMetadata *object) const { return Prototype::operator!=(object); }
uint32_t get_num_points() const;
::FLAC__StreamMetadata_SeekPoint get_point(uint32_t index) const;
bool resize_points(uint32_t new_num_points);
void set_point(uint32_t index, const ::FLAC__StreamMetadata_SeekPoint &point);
bool insert_point(uint32_t index, const ::FLAC__StreamMetadata_SeekPoint &point);
bool delete_point(uint32_t index);
bool is_legal() const;
bool template_append_placeholders(uint32_t num);
bool template_append_point(FLAC__uint64 sample_number);
bool template_append_points(FLAC__uint64 sample_numbers[], uint32_t num);
bool template_append_spaced_points(uint32_t num, FLAC__uint64 total_samples);
bool template_append_spaced_points_by_samples(uint32_t samples, FLAC__uint64 total_samples);
bool template_sort(bool compact);
};
class FLACPP_API VorbisComment : public Prototype {
public:
class FLACPP_API Entry {
public:
Entry();
Entry(const char *field, uint32_t field_length);
Entry(const char *field); // assumes \a field is NUL-terminated
Entry(const char *field_name, const char *field_value, uint32_t field_value_length);
Entry(const char *field_name, const char *field_value); // assumes \a field_value is NUL-terminated
Entry(const Entry &entry);
Entry &operator=(const Entry &entry);
virtual ~Entry();
virtual bool is_valid() const;
uint32_t get_field_length() const;
uint32_t get_field_name_length() const;
uint32_t get_field_value_length() const;
::FLAC__StreamMetadata_VorbisComment_Entry get_entry() const;
const char *get_field() const;
const char *get_field_name() const;
const char *get_field_value() const;
bool set_field(const char *field, uint32_t field_length);
bool set_field(const char *field); // assumes \a field is NUL-terminated
bool set_field_name(const char *field_name);
bool set_field_value(const char *field_value, uint32_t field_value_length);
bool set_field_value(const char *field_value); // assumes \a field_value is NUL-terminated
protected:
bool is_valid_;
::FLAC__StreamMetadata_VorbisComment_Entry entry_;
char *field_name_;
uint32_t field_name_length_;
char *field_value_;
uint32_t field_value_length_;
private:
void zero();
void clear();
void clear_entry();
void clear_field_name();
void clear_field_value();
void construct(const char *field, uint32_t field_length);
void construct(const char *field); // assumes \a field is NUL-terminated
void construct(const char *field_name, const char *field_value, uint32_t field_value_length);
void construct(const char *field_name, const char *field_value); // assumes \a field_value is NUL-terminated
void compose_field();
void parse_field();
};
VorbisComment();
inline VorbisComment(const VorbisComment &object): Prototype(object) { }
inline VorbisComment(const ::FLAC__StreamMetadata &object): Prototype(object) { }
inline VorbisComment(const ::FLAC__StreamMetadata *object): Prototype(object) { }
inline VorbisComment(::FLAC__StreamMetadata *object, bool copy): Prototype(object, copy) { }
~VorbisComment();
inline VorbisComment &operator=(const VorbisComment &object) { Prototype::operator=(object); return *this; }
inline VorbisComment &operator=(const ::FLAC__StreamMetadata &object) { Prototype::operator=(object); return *this; }
inline VorbisComment &operator=(const ::FLAC__StreamMetadata *object) { Prototype::operator=(object); return *this; }
inline VorbisComment &assign(::FLAC__StreamMetadata *object, bool copy) { Prototype::assign_object(object, copy); return *this; }
inline bool operator==(const VorbisComment &object) const { return Prototype::operator==(object); }
inline bool operator==(const ::FLAC__StreamMetadata &object) const { return Prototype::operator==(object); }
inline bool operator==(const ::FLAC__StreamMetadata *object) const { return Prototype::operator==(object); }
inline bool operator!=(const VorbisComment &object) const { return Prototype::operator!=(object); }
inline bool operator!=(const ::FLAC__StreamMetadata &object) const { return Prototype::operator!=(object); }
inline bool operator!=(const ::FLAC__StreamMetadata *object) const { return Prototype::operator!=(object); }
uint32_t get_num_comments() const;
const FLAC__byte *get_vendor_string() const; // NUL-terminated UTF-8 string
Entry get_comment(uint32_t index) const;
bool set_vendor_string(const FLAC__byte *string); // NUL-terminated UTF-8 string
bool resize_comments(uint32_t new_num_comments);
bool set_comment(uint32_t index, const Entry &entry);
bool insert_comment(uint32_t index, const Entry &entry);
bool append_comment(const Entry &entry);
bool replace_comment(const Entry &entry, bool all);
bool delete_comment(uint32_t index);
int find_entry_from(uint32_t offset, const char *field_name);
int remove_entry_matching(const char *field_name);
int remove_entries_matching(const char *field_name);
};
class FLACPP_API CueSheet : public Prototype {
public:
class FLACPP_API Track {
protected:
::FLAC__StreamMetadata_CueSheet_Track *object_;
public:
Track();
Track(const ::FLAC__StreamMetadata_CueSheet_Track *track);
Track(const Track &track);
Track &operator=(const Track &track);
virtual ~Track();
virtual bool is_valid() const;
inline FLAC__uint64 get_offset() const { return object_->offset; }
inline FLAC__byte get_number() const { return object_->number; }
inline const char *get_isrc() const { return object_->isrc; }
inline uint32_t get_type() const { return object_->type; }
inline bool get_pre_emphasis() const { return object_->pre_emphasis; }
inline FLAC__byte get_num_indices() const { return object_->num_indices; }
::FLAC__StreamMetadata_CueSheet_Index get_index(uint32_t i) const;
inline const ::FLAC__StreamMetadata_CueSheet_Track *get_track() const { return object_; }
inline void set_offset(FLAC__uint64 value) { object_->offset = value; }
inline void set_number(FLAC__byte value) { object_->number = value; }
void set_isrc(const char value[12]);
void set_type(uint32_t value);
inline void set_pre_emphasis(bool value) { object_->pre_emphasis = value? 1 : 0; }
void set_index(uint32_t i, const ::FLAC__StreamMetadata_CueSheet_Index &index);
//@@@ It's awkward but to insert/delete index points
//@@@ you must use the routines in the CueSheet class.
};
CueSheet();
inline CueSheet(const CueSheet &object): Prototype(object) { }
inline CueSheet(const ::FLAC__StreamMetadata &object): Prototype(object) { }
inline CueSheet(const ::FLAC__StreamMetadata *object): Prototype(object) { }
inline CueSheet(::FLAC__StreamMetadata *object, bool copy): Prototype(object, copy) { }
~CueSheet();
inline CueSheet &operator=(const CueSheet &object) { Prototype::operator=(object); return *this; }
inline CueSheet &operator=(const ::FLAC__StreamMetadata &object) { Prototype::operator=(object); return *this; }
inline CueSheet &operator=(const ::FLAC__StreamMetadata *object) { Prototype::operator=(object); return *this; }
inline CueSheet &assign(::FLAC__StreamMetadata *object, bool copy) { Prototype::assign_object(object, copy); return *this; }
inline bool operator==(const CueSheet &object) const { return Prototype::operator==(object); }
inline bool operator==(const ::FLAC__StreamMetadata &object) const { return Prototype::operator==(object); }
inline bool operator==(const ::FLAC__StreamMetadata *object) const { return Prototype::operator==(object); }
inline bool operator!=(const CueSheet &object) const { return Prototype::operator!=(object); }
inline bool operator!=(const ::FLAC__StreamMetadata &object) const { return Prototype::operator!=(object); }
inline bool operator!=(const ::FLAC__StreamMetadata *object) const { return Prototype::operator!=(object); }
const char *get_media_catalog_number() const;
FLAC__uint64 get_lead_in() const;
bool get_is_cd() const;
uint32_t get_num_tracks() const;
Track get_track(uint32_t i) const;
void set_media_catalog_number(const char value[128]);
void set_lead_in(FLAC__uint64 value);
void set_is_cd(bool value);
void set_index(uint32_t track_num, uint32_t index_num, const ::FLAC__StreamMetadata_CueSheet_Index &index);
bool resize_indices(uint32_t track_num, uint32_t new_num_indices);
bool insert_index(uint32_t track_num, uint32_t index_num, const ::FLAC__StreamMetadata_CueSheet_Index &index);
bool insert_blank_index(uint32_t track_num, uint32_t index_num);
bool delete_index(uint32_t track_num, uint32_t index_num);
bool resize_tracks(uint32_t new_num_tracks);
bool set_track(uint32_t i, const Track &track);
bool insert_track(uint32_t i, const Track &track);
bool insert_blank_track(uint32_t i);
bool delete_track(uint32_t i);
bool is_legal(bool check_cd_da_subset = false, const char **violation = 0) const;
FLAC__uint32 calculate_cddb_id() const;
};
class FLACPP_API Picture : public Prototype {
public:
Picture();
inline Picture(const Picture &object): Prototype(object) { }
inline Picture(const ::FLAC__StreamMetadata &object): Prototype(object) { }
inline Picture(const ::FLAC__StreamMetadata *object): Prototype(object) { }
inline Picture(::FLAC__StreamMetadata *object, bool copy): Prototype(object, copy) { }
~Picture();
inline Picture &operator=(const Picture &object) { Prototype::operator=(object); return *this; }
inline Picture &operator=(const ::FLAC__StreamMetadata &object) { Prototype::operator=(object); return *this; }
inline Picture &operator=(const ::FLAC__StreamMetadata *object) { Prototype::operator=(object); return *this; }
inline Picture &assign(::FLAC__StreamMetadata *object, bool copy) { Prototype::assign_object(object, copy); return *this; }
inline bool operator==(const Picture &object) const { return Prototype::operator==(object); }
inline bool operator==(const ::FLAC__StreamMetadata &object) const { return Prototype::operator==(object); }
inline bool operator==(const ::FLAC__StreamMetadata *object) const { return Prototype::operator==(object); }
inline bool operator!=(const Picture &object) const { return Prototype::operator!=(object); }
inline bool operator!=(const ::FLAC__StreamMetadata &object) const { return Prototype::operator!=(object); }
inline bool operator!=(const ::FLAC__StreamMetadata *object) const { return Prototype::operator!=(object); }
::FLAC__StreamMetadata_Picture_Type get_type() const;
const char *get_mime_type() const; // NUL-terminated printable ASCII string
const FLAC__byte *get_description() const; // NUL-terminated UTF-8 string
FLAC__uint32 get_width() const;
FLAC__uint32 get_height() const;
FLAC__uint32 get_depth() const;
FLAC__uint32 get_colors() const;
FLAC__uint32 get_data_length() const;
const FLAC__byte *get_data() const;
void set_type(::FLAC__StreamMetadata_Picture_Type type);
bool set_mime_type(const char *string); // NUL-terminated printable ASCII string
bool set_description(const FLAC__byte *string); // NUL-terminated UTF-8 string
void set_width(FLAC__uint32 value) const;
void set_height(FLAC__uint32 value) const;
void set_depth(FLAC__uint32 value) const;
void set_colors(FLAC__uint32 value) const;
bool set_data(const FLAC__byte *data, FLAC__uint32 data_length);
bool is_legal(const char **violation);
};
class FLACPP_API Unknown : public Prototype {
public:
Unknown();
//
inline Unknown(const Unknown &object): Prototype(object) { }
inline Unknown(const ::FLAC__StreamMetadata &object): Prototype(object) { }
inline Unknown(const ::FLAC__StreamMetadata *object): Prototype(object) { }
inline Unknown(::FLAC__StreamMetadata *object, bool copy): Prototype(object, copy) { }
~Unknown();
inline Unknown &operator=(const Unknown &object) { Prototype::operator=(object); return *this; }
inline Unknown &operator=(const ::FLAC__StreamMetadata &object) { Prototype::operator=(object); return *this; }
inline Unknown &operator=(const ::FLAC__StreamMetadata *object) { Prototype::operator=(object); return *this; }
inline Unknown &assign(::FLAC__StreamMetadata *object, bool copy) { Prototype::assign_object(object, copy); return *this; }
inline bool operator==(const Unknown &object) const { return Prototype::operator==(object); }
inline bool operator==(const ::FLAC__StreamMetadata &object) const { return Prototype::operator==(object); }
inline bool operator==(const ::FLAC__StreamMetadata *object) const { return Prototype::operator==(object); }
inline bool operator!=(const Unknown &object) const { return Prototype::operator!=(object); }
inline bool operator!=(const ::FLAC__StreamMetadata &object) const { return Prototype::operator!=(object); }
inline bool operator!=(const ::FLAC__StreamMetadata *object) const { return Prototype::operator!=(object); }
const FLAC__byte *get_data() const;
bool set_data(const FLAC__byte *data, uint32_t length);
bool set_data(FLAC__byte *data, uint32_t length, bool copy);
};
/* \} */
FLACPP_API bool get_streaminfo(const char *filename, StreamInfo &streaminfo);
FLACPP_API bool get_tags(const char *filename, VorbisComment *&tags);
FLACPP_API bool get_tags(const char *filename, VorbisComment &tags);
FLACPP_API bool get_cuesheet(const char *filename, CueSheet *&cuesheet);
FLACPP_API bool get_cuesheet(const char *filename, CueSheet &cuesheet);
FLACPP_API bool get_picture(const char *filename, Picture *&picture, ::FLAC__StreamMetadata_Picture_Type type, const char *mime_type, const FLAC__byte *description, uint32_t max_width, uint32_t max_height, uint32_t max_depth, uint32_t max_colors);
FLACPP_API bool get_picture(const char *filename, Picture &picture, ::FLAC__StreamMetadata_Picture_Type type, const char *mime_type, const FLAC__byte *description, uint32_t max_width, uint32_t max_height, uint32_t max_depth, uint32_t max_colors);
/* \} */
class FLACPP_API SimpleIterator {
public:
class FLACPP_API Status {
public:
inline Status(::FLAC__Metadata_SimpleIteratorStatus status): status_(status) { }
inline operator ::FLAC__Metadata_SimpleIteratorStatus() const { return status_; }
inline const char *as_cstring() const { return ::FLAC__Metadata_SimpleIteratorStatusString[status_]; }
protected:
::FLAC__Metadata_SimpleIteratorStatus status_;
};
SimpleIterator();
virtual ~SimpleIterator();
bool is_valid() const;
bool init(const char *filename, bool read_only, bool preserve_file_stats);
Status status();
bool is_writable() const;
bool next();
bool prev();
bool is_last() const;
off_t get_block_offset() const;
::FLAC__MetadataType get_block_type() const;
uint32_t get_block_length() const;
bool get_application_id(FLAC__byte *id);
Prototype *get_block();
bool set_block(Prototype *block, bool use_padding = true);
bool insert_block_after(Prototype *block, bool use_padding = true);
bool delete_block(bool use_padding = true);
protected:
::FLAC__Metadata_SimpleIterator *iterator_;
void clear();
private: // Do not use.
SimpleIterator(const SimpleIterator&);
SimpleIterator&operator=(const SimpleIterator&);
};
/* \} */
class FLACPP_API Chain {
public:
class FLACPP_API Status {
public:
inline Status(::FLAC__Metadata_ChainStatus status): status_(status) { }
inline operator ::FLAC__Metadata_ChainStatus() const { return status_; }
inline const char *as_cstring() const { return ::FLAC__Metadata_ChainStatusString[status_]; }
protected:
::FLAC__Metadata_ChainStatus status_;
};
Chain();
virtual ~Chain();
friend class Iterator;
bool is_valid() const;
Status status();
bool read(const char *filename, bool is_ogg = false);
bool read(FLAC__IOHandle handle, FLAC__IOCallbacks callbacks, bool is_ogg = false);
bool check_if_tempfile_needed(bool use_padding);
bool write(bool use_padding = true, bool preserve_file_stats = false);
bool write(const char *filename, bool use_padding = false);
bool write(bool use_padding, ::FLAC__IOHandle handle, ::FLAC__IOCallbacks callbacks);
bool write(bool use_padding, ::FLAC__IOHandle handle, ::FLAC__IOCallbacks callbacks, ::FLAC__IOHandle temp_handle, ::FLAC__IOCallbacks temp_callbacks);
void merge_padding();
void sort_padding();
protected:
::FLAC__Metadata_Chain *chain_;
virtual void clear();
private: // Do not use.
Chain(const Chain&);
Chain&operator=(const Chain&);
};
class FLACPP_API Iterator {
public:
Iterator();
virtual ~Iterator();
bool is_valid() const;
void init(Chain &chain);
bool next();
bool prev();
::FLAC__MetadataType get_block_type() const;
Prototype *get_block();
bool set_block(Prototype *block);
bool delete_block(bool replace_with_padding);
bool insert_block_before(Prototype *block);
bool insert_block_after(Prototype *block);
protected:
::FLAC__Metadata_Iterator *iterator_;
virtual void clear();
private: // Do not use.
Iterator(const Iterator&);
Iterator&operator=(const Iterator&);
};
/* \} */
}
}
#endif
export.h
This module contains #defines and symbols for exporting function calls, and providing version informa...
metadata.h
This module provides functions for creating and manipulating FLAC metadata blocks in memory,...
FLAC::Metadata::Application
Definition metadata.h:412
FLAC::Metadata::Chain::Status
Definition metadata.h:1156
FLAC::Metadata::Chain
Definition metadata.h:1152
FLAC::Metadata::CueSheet::Track
Definition metadata.h:733
FLAC::Metadata::CueSheet
Definition metadata.h:725
FLAC::Metadata::Iterator
Definition metadata.h:1201
FLAC::Metadata::Padding
Definition metadata.h:353
FLAC::Metadata::Picture
Definition metadata.h:864
FLAC::Metadata::Prototype
Definition metadata.h:109
FLAC::Metadata::SeekTable
Definition metadata.h:471
FLAC::Metadata::SimpleIterator::Status
Definition metadata.h:1066
FLAC::Metadata::SimpleIterator
Definition metadata.h:1062
FLAC::Metadata::StreamInfo
Definition metadata.h:279
FLAC::Metadata::Unknown
Definition metadata.h:946
FLAC::Metadata::VorbisComment::Entry
Definition metadata.h:589
FLAC::Metadata::VorbisComment
Definition metadata.h:558
FLAC__IOHandle
void * FLAC__IOHandle
Definition callback.h:89
FLAC__StreamMetadata_CueSheet_Track::type
uint32_t type
Definition format.h:683
FLAC__StreamMetadata_CueSheet_Track::offset
FLAC__uint64 offset
Definition format.h:674
FLAC__StreamMetadata_CueSheet_Track::number
FLAC__byte number
Definition format.h:677
FLAC__StreamMetadata_CueSheet_Track::isrc
char isrc[13]
Definition format.h:680
FLAC__StreamMetadata_CueSheet_Track::num_indices
FLAC__byte num_indices
Definition format.h:689
FLAC__MetadataType
FLAC__MetadataType
Definition format.h:496
FLAC__StreamMetadata_CueSheet_Track::pre_emphasis
uint32_t pre_emphasis
Definition format.h:686
FLAC__StreamMetadata_Picture_Type
FLAC__StreamMetadata_Picture_Type
Definition format.h:739
FLAC__Metadata_SimpleIterator
struct FLAC__Metadata_SimpleIterator FLAC__Metadata_SimpleIterator
Definition metadata.h:312
FLAC__Metadata_SimpleIteratorStatus
FLAC__Metadata_SimpleIteratorStatus
Definition metadata.h:318
FLAC__Metadata_Iterator
struct FLAC__Metadata_Iterator FLAC__Metadata_Iterator
Definition metadata.h:733
FLAC__Metadata_Chain
struct FLAC__Metadata_Chain FLAC__Metadata_Chain
Definition metadata.h:728
FLAC__Metadata_ChainStatus
FLAC__Metadata_ChainStatus
Definition metadata.h:735
FLAC__metadata_object_is_equal
FLAC__bool FLAC__metadata_object_is_equal(const FLAC__StreamMetadata *block1, const FLAC__StreamMetadata *block2)
FLACPP_API
#define FLACPP_API
Definition export.h:88
FLAC::Metadata::get_cuesheet
bool get_cuesheet(const char *filename, CueSheet *&cuesheet)
See FLAC__metadata_get_cuesheet().
FLAC::Metadata::get_tags
bool get_tags(const char *filename, VorbisComment *&tags)
See FLAC__metadata_get_tags().
FLAC::Metadata::get_streaminfo
bool get_streaminfo(const char *filename, StreamInfo &streaminfo)
See FLAC__metadata_get_streaminfo().
FLAC::Metadata::get_picture
bool get_picture(const char *filename, Picture *&picture, ::FLAC__StreamMetadata_Picture_Type type, const char *mime_type, const FLAC__byte *description, uint32_t max_width, uint32_t max_height, uint32_t max_depth, uint32_t max_colors)
See FLAC__metadata_get_picture().
FLAC::Metadata::CueSheet::delete_index
bool delete_index(uint32_t track_num, uint32_t index_num)
See FLAC__metadata_object_cuesheet_track_delete_index()
FLAC::Metadata::Chain::status
Status status()
See FLAC__metadata_chain_status().
FLAC::Metadata::Chain::read
bool read(FLAC__IOHandle handle, FLAC__IOCallbacks callbacks, bool is_ogg=false)
See FLAC__metadata_chain_read_with_callbacks(), FLAC__metadata_chain_read_ogg_with_callbacks().
FLAC::Metadata::Prototype::is_valid
bool is_valid() const
Definition metadata.h:265
FLAC::Metadata::Padding::set_length
void set_length(uint32_t length)
FLAC::Metadata::SeekTable::resize_points
bool resize_points(uint32_t new_num_points)
See FLAC__metadata_object_seektable_resize_points()
FLAC::Metadata::SeekTable::template_sort
bool template_sort(bool compact)
See FLAC__metadata_object_seektable_template_sort()
FLAC::Metadata::SeekTable::delete_point
bool delete_point(uint32_t index)
See FLAC__metadata_object_seektable_delete_point()
FLAC::Metadata::SimpleIterator::set_block
bool set_block(Prototype *block, bool use_padding=true)
See FLAC__metadata_simple_iterator_set_block().
FLAC::Metadata::Chain::write
bool write(bool use_padding, ::FLAC__IOHandle handle, ::FLAC__IOCallbacks callbacks)
See FLAC__metadata_chain_write_with_callbacks().
FLAC::Metadata::VorbisComment::append_comment
bool append_comment(const Entry &entry)
See FLAC__metadata_object_vorbiscomment_append_comment()
FLAC::Metadata::Padding::operator!=
bool operator!=(const Padding &object) const
Definition metadata.h:398
FLAC::Metadata::SeekTable::operator==
bool operator==(const SeekTable &object) const
Definition metadata.h:505
FLAC::Metadata::VorbisComment::find_entry_from
int find_entry_from(uint32_t offset, const char *field_name)
See FLAC__metadata_object_vorbiscomment_find_entry_from()
FLAC::Metadata::Picture::set_description
bool set_description(const FLAC__byte *string)
See FLAC__metadata_object_picture_set_description()
FLAC::Metadata::Padding::operator==
bool operator==(const Padding &object) const
Definition metadata.h:391
FLAC::Metadata::Picture::operator==
bool operator==(const Picture &object) const
Definition metadata.h:898
FLAC::Metadata::SimpleIterator::insert_block_after
bool insert_block_after(Prototype *block, bool use_padding=true)
See FLAC__metadata_simple_iterator_insert_block_after().
FLAC::Metadata::Iterator::next
bool next()
See FLAC__metadata_iterator_next().
FLAC::Metadata::Chain::check_if_tempfile_needed
bool check_if_tempfile_needed(bool use_padding)
See FLAC__metadata_chain_check_if_tempfile_needed().
FLAC::Metadata::Chain::write
bool write(bool use_padding=true, bool preserve_file_stats=false)
See FLAC__metadata_chain_write().
FLAC::Metadata::Prototype::Prototype
Prototype(::FLAC__StreamMetadata *object, bool copy)
FLAC::Metadata::VorbisComment::replace_comment
bool replace_comment(const Entry &entry, bool all)
See FLAC__metadata_object_vorbiscomment_replace_comment()
FLAC::Metadata::SeekTable::operator=
SeekTable & operator=(const SeekTable &object)
Definition metadata.h:493
FLAC::Metadata::StreamInfo::assign
StreamInfo & assign(::FLAC__StreamMetadata *object, bool copy)
Definition metadata.h:309
FLAC::Metadata::CueSheet::insert_blank_index
bool insert_blank_index(uint32_t track_num, uint32_t index_num)
See FLAC__metadata_object_cuesheet_track_insert_blank_index()
FLAC::Metadata::VorbisComment::assign
VorbisComment & assign(::FLAC__StreamMetadata *object, bool copy)
Definition metadata.h:670
FLAC::Metadata::Unknown::Unknown
Unknown(::FLAC__StreamMetadata *object, bool copy)
Definition metadata.h:962
FLAC::Metadata::Picture::set_data
bool set_data(const FLAC__byte *data, FLAC__uint32 data_length)
See FLAC__metadata_object_picture_set_data()
FLAC::Metadata::SimpleIterator::get_block_type
::FLAC__MetadataType get_block_type() const
See FLAC__metadata_simple_iterator_get_block_type().
FLAC::Metadata::Iterator::set_block
bool set_block(Prototype *block)
See FLAC__metadata_iterator_set_block().
FLAC::Metadata::SeekTable::assign
SeekTable & assign(::FLAC__StreamMetadata *object, bool copy)
Definition metadata.h:501
FLAC::Metadata::Application::Application
Application(::FLAC__StreamMetadata *object, bool copy)
Definition metadata.h:428
FLAC::Metadata::Padding::Padding
Padding(::FLAC__StreamMetadata *object, bool copy)
Definition metadata.h:369
FLAC::Metadata::Picture::Picture
Picture(const Picture &object)
Definition metadata.h:872
FLAC::Metadata::Chain::write
bool write(bool use_padding, ::FLAC__IOHandle handle, ::FLAC__IOCallbacks callbacks, ::FLAC__IOHandle temp_handle, ::FLAC__IOCallbacks temp_callbacks)
See FLAC__metadata_chain_write_with_callbacks_and_tempfile().
FLAC::Metadata::Padding::Padding
Padding(const Padding &object)
Definition metadata.h:361
FLAC::Metadata::Unknown::operator==
bool operator==(const Unknown &object) const
Definition metadata.h:980
FLAC::Metadata::Picture::operator!=
bool operator!=(const Picture &object) const
Definition metadata.h:905
FLAC::Metadata::StreamInfo::operator==
bool operator==(const StreamInfo &object) const
Definition metadata.h:313
FLAC::Metadata::VorbisComment::operator==
bool operator==(const VorbisComment &object) const
Definition metadata.h:674
FLAC::Metadata::Iterator::is_valid
bool is_valid() const
Returns true iff object was properly constructed.
FLAC::Metadata::SimpleIterator::get_application_id
bool get_application_id(FLAC__byte *id)
See FLAC__metadata_simple_iterator_get_application_id().
FLAC::Metadata::VorbisComment::VorbisComment
VorbisComment(const VorbisComment &object)
Definition metadata.h:648
FLAC::Metadata::Picture::assign
Picture & assign(::FLAC__StreamMetadata *object, bool copy)
Definition metadata.h:894
FLAC::Metadata::VorbisComment::operator=
VorbisComment & operator=(const VorbisComment &object)
Definition metadata.h:662
FLAC::Metadata::Chain::read
bool read(const char *filename, bool is_ogg=false)
See FLAC__metadata_chain_read(), FLAC__metadata_chain_read_ogg().
FLAC::Metadata::Prototype::get_type
::FLAC__MetadataType get_type() const
FLAC::Metadata::Prototype::assign_object
Prototype & assign_object(::FLAC__StreamMetadata *object, bool copy)
FLAC::Metadata::CueSheet::set_track
bool set_track(uint32_t i, const Track &track)
See FLAC__metadata_object_cuesheet_set_track()
FLAC::Metadata::CueSheet::assign
CueSheet & assign(::FLAC__StreamMetadata *object, bool copy)
Definition metadata.h:797
FLAC::Metadata::SimpleIterator::is_valid
bool is_valid() const
Returns true iff object was properly constructed.
FLAC::Metadata::Prototype::get_length
uint32_t get_length() const
FLAC::Metadata::Prototype::operator==
bool operator==(const Prototype &) const
Definition metadata.h:243
FLAC::Metadata::SimpleIterator::get_block
Prototype * get_block()
See FLAC__metadata_simple_iterator_get_block().
FLAC::Metadata::Chain::is_valid
bool is_valid() const
Returns true iff object was properly constructed.
FLAC::Metadata::SeekTable::template_append_spaced_points_by_samples
bool template_append_spaced_points_by_samples(uint32_t samples, FLAC__uint64 total_samples)
See FLAC__metadata_object_seektable_template_append_spaced_points_by_samples()
FLAC::Metadata::VorbisComment::VorbisComment
VorbisComment(::FLAC__StreamMetadata *object, bool copy)
Definition metadata.h:656
FLAC::Metadata::SimpleIterator::delete_block
bool delete_block(bool use_padding=true)
See FLAC__metadata_simple_iterator_delete_block().
FLAC::Metadata::Iterator::delete_block
bool delete_block(bool replace_with_padding)
See FLAC__metadata_iterator_delete_block().
FLAC::Metadata::SimpleIterator::init
bool init(const char *filename, bool read_only, bool preserve_file_stats)
See FLAC__metadata_simple_iterator_init().
FLAC::Metadata::Unknown::Unknown
Unknown(const Unknown &object)
Definition metadata.h:954
FLAC::Metadata::Prototype::~Prototype
virtual ~Prototype()
FLAC::Metadata::SeekTable::template_append_spaced_points
bool template_append_spaced_points(uint32_t num, FLAC__uint64 total_samples)
See FLAC__metadata_object_seektable_template_append_spaced_points()
FLAC::Metadata::Picture::Picture
Picture(::FLAC__StreamMetadata *object, bool copy)
Definition metadata.h:880
FLAC::Metadata::SimpleIterator::is_writable
bool is_writable() const
See FLAC__metadata_simple_iterator_is_writable().
FLAC::Metadata::Iterator::insert_block_after
bool insert_block_after(Prototype *block)
See FLAC__metadata_iterator_insert_block_after().
FLAC::Metadata::CueSheet::delete_track
bool delete_track(uint32_t i)
See FLAC__metadata_object_cuesheet_delete_track()
FLAC::Metadata::Application::operator=
Application & operator=(const Application &object)
Definition metadata.h:434
FLAC::Metadata::VorbisComment::Entry::is_valid
virtual bool is_valid() const
Returns true iff object was properly constructed.
FLAC::Metadata::SimpleIterator::prev
bool prev()
See FLAC__metadata_simple_iterator_prev().
FLAC::Metadata::Chain::sort_padding
void sort_padding()
See FLAC__metadata_chain_sort_padding().
FLAC::Metadata::CueSheet::resize_indices
bool resize_indices(uint32_t track_num, uint32_t new_num_indices)
See FLAC__metadata_object_cuesheet_track_resize_indices()
FLAC::Metadata::SimpleIterator::get_block_length
uint32_t get_block_length() const
See FLAC__metadata_simple_iterator_get_block_length().
FLAC::Metadata::CueSheet::calculate_cddb_id
FLAC__uint32 calculate_cddb_id() const
See FLAC__metadata_object_cuesheet_calculate_cddb_id()
FLAC::Metadata::SeekTable::SeekTable
SeekTable(const SeekTable &object)
Definition metadata.h:479
FLAC::Metadata::Padding::Padding
Padding(uint32_t length)
FLAC::Metadata::Iterator::insert_block_before
bool insert_block_before(Prototype *block)
See FLAC__metadata_iterator_insert_block_before().
FLAC::Metadata::Padding::assign
Padding & assign(::FLAC__StreamMetadata *object, bool copy)
Definition metadata.h:387
FLAC::Metadata::Application::operator==
bool operator==(const Application &object) const
Definition metadata.h:446
FLAC::Metadata::SeekTable::is_legal
bool is_legal() const
See FLAC__metadata_object_seektable_is_legal()
FLAC::Metadata::CueSheet::resize_tracks
bool resize_tracks(uint32_t new_num_tracks)
See FLAC__metadata_object_cuesheet_resize_tracks()
FLAC::Metadata::Picture::set_colors
void set_colors(FLAC__uint32 value) const
a value of 0 means true-color, i.e. 2^depth colors
FLAC::Metadata::CueSheet::is_legal
bool is_legal(bool check_cd_da_subset=false, const char **violation=0) const
See FLAC__metadata_object_cuesheet_is_legal()
FLAC::Metadata::Application::set_data
bool set_data(const FLAC__byte *data, uint32_t length)
This form always copies data.
FLAC::Metadata::SeekTable::operator!=
bool operator!=(const SeekTable &object) const
Definition metadata.h:512
FLAC::Metadata::SeekTable::template_append_point
bool template_append_point(FLAC__uint64 sample_number)
See FLAC__metadata_object_seektable_template_append_point()
FLAC::Metadata::SimpleIterator::status
Status status()
See FLAC__metadata_simple_iterator_status().
FLAC::Metadata::Iterator::get_block
Prototype * get_block()
See FLAC__metadata_iterator_get_block().
FLAC::Metadata::Iterator::get_block_type
::FLAC__MetadataType get_block_type() const
See FLAC__metadata_iterator_get_block_type().
FLAC::Metadata::StreamInfo::get_min_blocksize
uint32_t get_min_blocksize() const
FLAC::Metadata::Prototype::clear
virtual void clear()
FLAC::Metadata::Prototype::operator=
Prototype & operator=(const Prototype &)
FLAC::Metadata::Unknown::operator!=
bool operator!=(const Unknown &object) const
Definition metadata.h:987
FLAC::Metadata::StreamInfo::StreamInfo
StreamInfo(::FLAC__StreamMetadata *object, bool copy)
Definition metadata.h:295
FLAC::Metadata::VorbisComment::insert_comment
bool insert_comment(uint32_t index, const Entry &entry)
See FLAC__metadata_object_vorbiscomment_insert_comment()
FLAC::Metadata::SimpleIterator::next
bool next()
See FLAC__metadata_simple_iterator_next().
FLAC::Metadata::Picture::get_colors
FLAC__uint32 get_colors() const
a return value of 0 means true-color, i.e. 2^depth colors
FLAC::Metadata::Iterator::init
void init(Chain &chain)
See FLAC__metadata_iterator_init().
FLAC::Metadata::StreamInfo::StreamInfo
StreamInfo(const StreamInfo &object)
Definition metadata.h:287
FLAC::Metadata::Prototype::operator!=
bool operator!=(const Prototype &) const
Definition metadata.h:256
FLAC::Metadata::SeekTable::insert_point
bool insert_point(uint32_t index, const ::FLAC__StreamMetadata_SeekPoint &point)
See FLAC__metadata_object_seektable_insert_point()
FLAC::Metadata::CueSheet::insert_blank_track
bool insert_blank_track(uint32_t i)
See FLAC__metadata_object_cuesheet_insert_blank_track()
FLAC::Metadata::CueSheet::Track::is_valid
virtual bool is_valid() const
Returns true iff object was properly constructed.
FLAC::Metadata::SimpleIterator::is_last
bool is_last() const
See FLAC__metadata_simple_iterator_is_last().
FLAC::Metadata::Application::Application
Application(const Application &object)
Definition metadata.h:420
FLAC::Metadata::VorbisComment::operator!=
bool operator!=(const VorbisComment &object) const
Definition metadata.h:681
FLAC::Metadata::SeekTable::SeekTable
SeekTable(::FLAC__StreamMetadata *object, bool copy)
Definition metadata.h:487
FLAC::Metadata::CueSheet::insert_index
bool insert_index(uint32_t track_num, uint32_t index_num, const ::FLAC__StreamMetadata_CueSheet_Index &index)
See FLAC__metadata_object_cuesheet_track_insert_index()
FLAC::Metadata::Picture::operator=
Picture & operator=(const Picture &object)
Definition metadata.h:886
FLAC::Metadata::SeekTable::set_point
void set_point(uint32_t index, const ::FLAC__StreamMetadata_SeekPoint &point)
See FLAC__metadata_object_seektable_set_point()
FLAC::Metadata::CueSheet::operator!=
bool operator!=(const CueSheet &object) const
Definition metadata.h:808
FLAC::Metadata::CueSheet::operator==
bool operator==(const CueSheet &object) const
Definition metadata.h:801
FLAC::Metadata::VorbisComment::set_comment
bool set_comment(uint32_t index, const Entry &entry)
See FLAC__metadata_object_vorbiscomment_set_comment()
FLAC::Metadata::SimpleIterator::get_block_offset
off_t get_block_offset() const
See FLAC__metadata_simple_iterator_get_block_offset().
FLAC::Metadata::SeekTable::template_append_points
bool template_append_points(FLAC__uint64 sample_numbers[], uint32_t num)
See FLAC__metadata_object_seektable_template_append_points()
FLAC::Metadata::Unknown::operator=
Unknown & operator=(const Unknown &object)
Definition metadata.h:968
FLAC::Metadata::Prototype::get_is_last
bool get_is_last() const
FLAC::Metadata::VorbisComment::set_vendor_string
bool set_vendor_string(const FLAC__byte *string)
See FLAC__metadata_object_vorbiscomment_set_vendor_string()
FLAC::Metadata::VorbisComment::resize_comments
bool resize_comments(uint32_t new_num_comments)
See FLAC__metadata_object_vorbiscomment_resize_comments()
FLAC::Metadata::Unknown::set_data
bool set_data(const FLAC__byte *data, uint32_t length)
This form always copies data.
FLAC::Metadata::CueSheet::CueSheet
CueSheet(::FLAC__StreamMetadata *object, bool copy)
Definition metadata.h:783
FLAC::Metadata::VorbisComment::remove_entries_matching
int remove_entries_matching(const char *field_name)
See FLAC__metadata_object_vorbiscomment_remove_entries_matching()
FLAC::Metadata::Iterator::prev
bool prev()
See FLAC__metadata_iterator_prev().
FLAC::Metadata::Application::operator!=
bool operator!=(const Application &object) const
Definition metadata.h:453
FLAC::Metadata::Chain::write
bool write(const char *filename, bool use_padding=false)
See FLAC__metadata_chain_write_new_file().
FLAC::Metadata::Prototype::Prototype
Prototype(const Prototype &)
FLAC::Metadata::CueSheet::operator=
CueSheet & operator=(const CueSheet &object)
Definition metadata.h:789
FLAC::Metadata::SeekTable::template_append_placeholders
bool template_append_placeholders(uint32_t num)
See FLAC__metadata_object_seektable_template_append_placeholders()
FLAC::Metadata::CueSheet::insert_track
bool insert_track(uint32_t i, const Track &track)
See FLAC__metadata_object_cuesheet_insert_track()
FLAC::Metadata::Chain::merge_padding
void merge_padding()
See FLAC__metadata_chain_merge_padding().
FLAC::Metadata::VorbisComment::remove_entry_matching
int remove_entry_matching(const char *field_name)
See FLAC__metadata_object_vorbiscomment_remove_entry_matching()
FLAC::Metadata::StreamInfo::operator!=
bool operator!=(const StreamInfo &object) const
Definition metadata.h:320
FLAC::Metadata::Picture::is_legal
bool is_legal(const char **violation)
See FLAC__metadata_object_picture_is_legal()
FLAC::Metadata::Prototype::set_is_last
void set_is_last(bool)
FLAC::Metadata::Application::assign
Application & assign(::FLAC__StreamMetadata *object, bool copy)
Definition metadata.h:442
FLAC::Metadata::VorbisComment::delete_comment
bool delete_comment(uint32_t index)
See FLAC__metadata_object_vorbiscomment_delete_comment()
FLAC::Metadata::Picture::set_mime_type
bool set_mime_type(const char *string)
See FLAC__metadata_object_picture_set_mime_type()
FLAC::Metadata::StreamInfo::operator=
StreamInfo & operator=(const StreamInfo &object)
Definition metadata.h:301
FLAC::Metadata::Padding::operator=
Padding & operator=(const Padding &object)
Definition metadata.h:379
FLAC::Metadata::Unknown::assign
Unknown & assign(::FLAC__StreamMetadata *object, bool copy)
Definition metadata.h:976
FLAC::Metadata::CueSheet::CueSheet
CueSheet(const CueSheet &object)
Definition metadata.h:775
FLAC::Metadata::clone
Prototype * clone(const Prototype *)
FLAC__IOCallbacks
Definition callback.h:175
FLAC__StreamMetadata_CueSheet_Index
Definition format.h:654
FLAC__StreamMetadata_CueSheet_Track
Definition format.h:673
FLAC__StreamMetadata_SeekPoint
Definition format.h:581
FLAC__StreamMetadata_VorbisComment_Entry
Definition format.h:631
FLAC__StreamMetadata
Definition format.h:841

Copyright (c) 2000-2009 Josh Coalson Copyright (c) 2011-2025 Xiph.Org Foundation