Cover Art - always shows first image found, not $03 Cover (Front) as default
Hi.
I hate to complain for a cosmetic issue, especially reading the outstanding issues.
Many formats allow attachment of multiple images via ID3v2 tagging. I originally noticed while playing .flacs under Fedora GNOME desktop, and have since tested .mp3 too... I fired up Jérôme Couderc's EasyTAG and intentionally tagged various audio files with multiple images.
Issue: all versions of parole (up to e2e85642, from git, I guess 4.16.0 equivalent) will always display the first image found. It finds a metadata type 6 Image, parses it and moves on. Done!
Expected behaviour: Well, that's the thing. One expects to see the cover or album art, so parse metadata til you find the first one with type #3 aka "Cover (Front)" if it contains ID3v2 tags maybe? Then default to first or last one read if not? (you can't be responsible for people mis-tagging, anyway.) From there it's not a bug report but a feature request I guess? Do you rotate displaying every image found in the meta or just display the cover? Sequentially? Cross-fade them? Do you display them in some "normal" order as though you were looking at the LP/CD/DVD sleeve, with a configurable time-on-screen? (ex. a holding a physical CD jewel case, you would see cover, cover back, media, then maybe each booklet page, then tray card? It would be up to who implements it, I assume.)
Sorry I'm rambling.
I'm guessing the issue is in parole-player.c around line 1850:
static void
parole_player_media_tag_cb(ParoleGst *gst, const ParoleStream *stream, ParolePlayer *player) {
gchar *title;
gchar *album;
gchar *artist;
gchar *year;
gchar *uri;
gchar *filename;
GdkPixbuf *image = NULL;
...
image = parole_stream_get_image(G_OBJECT(stream));
if (image) {
gtk_image_set_from_pixbuf(GTK_IMAGE(player->priv->audiobox_cover), image);
g_object_unref(image);
} else {
gtk_image_set_from_icon_name(GTK_IMAGE(player->priv->audiobox_cover),
"audio-x-generic-symbolic",
GTK_ICON_SIZE_ARTWORK_FALLBACK);
}
I guess you could put some parsing/handling under parole_stream_get_image in misc/parole-stream.c but everyone's structured logic is different, isn't it?
Apologies I'm not up on tag processing outside or GTK/GDK coding. I will try to fix it myself however.
Thanks for reading!