summaryrefslogtreecommitdiff
path: root/apps/playback.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/playback.c')
-rw-r--r--apps/playback.c29
1 files changed, 25 insertions, 4 deletions
diff --git a/apps/playback.c b/apps/playback.c
index 4162d9b647..cac28bd6e7 100644
--- a/apps/playback.c
+++ b/apps/playback.c
@@ -172,6 +172,8 @@ static struct mutex id3_mutex SHAREDBSS_ATTR; /* (A,O)*/
172#define MAX_MULTIPLE_AA SKINNABLE_SCREENS_COUNT 172#define MAX_MULTIPLE_AA SKINNABLE_SCREENS_COUNT
173#ifdef HAVE_ALBUMART 173#ifdef HAVE_ALBUMART
174 174
175static int albumart_mode = -1;
176
175static struct albumart_slot 177static struct albumart_slot
176{ 178{
177 struct dim dim; /* Holds width, height of the albumart */ 179 struct dim dim; /* Holds width, height of the albumart */
@@ -1690,6 +1692,15 @@ static bool audio_load_cuesheet(struct track_info *infop,
1690} 1692}
1691 1693
1692#ifdef HAVE_ALBUMART 1694#ifdef HAVE_ALBUMART
1695
1696void set_albumart_mode(int setting)
1697{
1698 if (albumart_mode != -1 &&
1699 albumart_mode != setting)
1700 playback_update_aa_dims();
1701 albumart_mode = setting;
1702}
1703
1693/* Load any album art for the file - returns false if the buffer is full */ 1704/* Load any album art for the file - returns false if the buffer is full */
1694static int audio_load_albumart(struct track_info *infop, 1705static int audio_load_albumart(struct track_info *infop,
1695 struct mp3entry *track_id3) 1706 struct mp3entry *track_id3)
@@ -1709,18 +1720,28 @@ static int audio_load_albumart(struct track_info *infop,
1709 memset(&user_data, 0, sizeof(user_data)); 1720 memset(&user_data, 0, sizeof(user_data));
1710 user_data.dim = &albumart_slots[i].dim; 1721 user_data.dim = &albumart_slots[i].dim;
1711 1722
1723 char path[MAX_PATH];
1724 if(global_settings.album_art == AA_PREFER_IMAGE_FILE &&
1725 find_albumart(track_id3, path, sizeof(path),
1726 &albumart_slots[i].dim))
1727 {
1728 user_data.embedded_albumart = NULL;
1729 hid = bufopen(path, 0, TYPE_BITMAP, &user_data);
1730 }
1731
1712 /* We can only decode jpeg for embedded AA */ 1732 /* We can only decode jpeg for embedded AA */
1713 if (track_id3->has_embedded_albumart && track_id3->albumart.type == AA_TYPE_JPG) 1733 if (global_settings.album_art != AA_OFF &&
1734 hid < 0 && hid != ERR_BUFFER_FULL &&
1735 track_id3->has_embedded_albumart && track_id3->albumart.type == AA_TYPE_JPG)
1714 { 1736 {
1715 user_data.embedded_albumart = &track_id3->albumart; 1737 user_data.embedded_albumart = &track_id3->albumart;
1716 hid = bufopen(track_id3->path, 0, TYPE_BITMAP, &user_data); 1738 hid = bufopen(track_id3->path, 0, TYPE_BITMAP, &user_data);
1717 } 1739 }
1718 1740
1719 if (hid < 0 && hid != ERR_BUFFER_FULL) 1741 if (global_settings.album_art != AA_OFF &&
1742 hid < 0 && hid != ERR_BUFFER_FULL)
1720 { 1743 {
1721 /* No embedded AA or it couldn't be loaded - try other sources */ 1744 /* No embedded AA or it couldn't be loaded - try other sources */
1722 char path[MAX_PATH];
1723
1724 if (find_albumart(track_id3, path, sizeof(path), 1745 if (find_albumart(track_id3, path, sizeof(path),
1725 &albumart_slots[i].dim)) 1746 &albumart_slots[i].dim))
1726 { 1747 {