20 #ifndef MPD_FLAC_METADATA_H
21 #define MPD_FLAC_METADATA_H
26 #include <FLAC/metadata.h>
32 FLAC__Metadata_Chain *chain;
38 ::FLAC__metadata_chain_delete(chain);
41 explicit operator FLAC__Metadata_Chain *() {
45 bool Read(
const char *path) {
46 return ::FLAC__metadata_chain_read(chain, path);
49 bool Read(FLAC__IOHandle handle, FLAC__IOCallbacks callbacks) {
50 return ::FLAC__metadata_chain_read_with_callbacks(chain,
60 return ::FLAC__metadata_chain_read_ogg(chain, path);
63 bool ReadOgg(FLAC__IOHandle handle, FLAC__IOCallbacks callbacks) {
64 return ::FLAC__metadata_chain_read_ogg_with_callbacks(chain,
75 return ::FLAC__metadata_chain_status(chain);
80 return FLAC__Metadata_ChainStatusString[
GetStatus()];
87 FLAC__Metadata_Iterator *iterator;
93 :iterator(::FLAC__metadata_iterator_new()) {
94 ::FLAC__metadata_iterator_init(iterator,
95 (FLAC__Metadata_Chain *)chain);
99 ::FLAC__metadata_iterator_delete(iterator);
103 return ::FLAC__metadata_iterator_next(iterator);
108 return ::FLAC__metadata_iterator_get_block(iterator);
117 const FLAC__StreamMetadata_VorbisComment &vc);
127 const TagHandler &handler,
void *handler_ctx);
static FLAC__IOHandle ToFlacIOHandle(InputStream &is)
The meta information about a song file.
A callback table for receiving metadata of a song.
static const FLAC__IOCallbacks & GetFlacIOCallbacks(const InputStream &is)