From 54daa85ac2d7cae14ad44d2849dd8a74ffc01438 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Mon, 12 Aug 2019 20:44:22 +0200 Subject: [PATCH] decoder/flac: support embedded pictures (FLAC__METADATA_TYPE_PICTURE) --- src/lib/xiph/FlacStreamMetadata.cxx | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) 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; }