diff --git a/src/lib/xiph/FlacStreamMetadata.cxx b/src/lib/xiph/FlacStreamMetadata.cxx index dfca2ca40..bf96f1622 100644 --- a/src/lib/xiph/FlacStreamMetadata.cxx +++ b/src/lib/xiph/FlacStreamMetadata.cxx @@ -149,6 +149,21 @@ Scan(const FLAC__StreamMetadata_StreamInfo &stream_info, } } +static void +Scan(const FLAC__StreamMetadata_Picture &picture, TagHandler &handler) noexcept +{ + if (!handler.WantPicture()) + return; + + if (picture.mime_type != nullptr && + StringIsEqual(picture.mime_type, "-->")) + /* this is a URL, not image data */ + return; + + handler.OnPicture(picture.mime_type, + {picture.data, picture.data_length}); +} + void flac_scan_metadata(const FLAC__StreamMetadata *block, TagHandler &handler) noexcept @@ -163,6 +178,10 @@ flac_scan_metadata(const FLAC__StreamMetadata *block, Scan(block->data.stream_info, handler); break; + case FLAC__METADATA_TYPE_PICTURE: + Scan(block->data.picture, handler); + break; + default: break; }