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) noexcept {
46 return ::FLAC__metadata_chain_read(chain, path);
49 bool Read(FLAC__IOHandle handle,
50 FLAC__IOCallbacks callbacks) noexcept {
51 return ::FLAC__metadata_chain_read_with_callbacks(chain,
61 return ::FLAC__metadata_chain_read_ogg(chain, path);
65 FLAC__IOCallbacks callbacks) noexcept {
66 return ::FLAC__metadata_chain_read_ogg_with_callbacks(chain,
76 FLAC__Metadata_ChainStatus
GetStatus() const noexcept {
77 return ::FLAC__metadata_chain_status(chain);
82 return FLAC__Metadata_ChainStatusString[
GetStatus()];
89 FLAC__Metadata_Iterator *iterator;
95 :iterator(::FLAC__metadata_iterator_new()) {
96 ::FLAC__metadata_iterator_init(iterator,
97 (FLAC__Metadata_Chain *)chain);
101 ::FLAC__metadata_iterator_delete(iterator);
105 return ::FLAC__metadata_iterator_next(iterator);
110 return ::FLAC__metadata_iterator_get_block(iterator);
119 const FLAC__StreamMetadata_VorbisComment &vc);
129 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)