From 8bc1fae91021b196c876287eb8786ffdcf752440 Mon Sep 17 00:00:00 2001 From: Justin Maggard Date: Wed, 25 Mar 2009 07:41:12 +0000 Subject: [PATCH] * Put WMA artist tag info where the metadata parser expects it to be. --- tagutils/tagutils-asf.c | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/tagutils/tagutils-asf.c b/tagutils/tagutils-asf.c index 5ec2896..83a3fe1 100644 --- a/tagutils/tagutils-asf.c +++ b/tagutils/tagutils-asf.c @@ -293,7 +293,7 @@ _asf_load_string(FILE *fp, int type, int size, char *buf, int len) return i; } -static void +static void * _asf_load_picture(FILE *fp, int size, void *bm, int *bm_size) { int i; @@ -309,10 +309,21 @@ _asf_load_picture(FILE *fp, int size, void *bm, int *bm_size) // Picture data pic_type = fget_byte(fp); size -= 1; - pic_size = fget_le32(fp); size -= 2; + pic_size = fget_le32(fp); size -= 4; + + for(i = 0; i < sizeof(buf) - 1; i++) + { + buf[i] = fget_le16(fp); size -= 2; + if(!buf[i]) + break; + } + buf[i] = '\0'; + if(i == sizeof(buf) - 1) + { + while(fget_le16(fp)) + size -= 2; + } - i = 0; - buf[i] = 0; if(!strcasecmp(buf, "image/jpeg") || !strcasecmp(buf, "image/jpg") || !strcasecmp(buf, "image/peg")) @@ -355,6 +366,7 @@ _asf_load_picture(FILE *fp, int size, void *bm, int *bm_size) } *bm_size = size; + return bm; } static int @@ -470,7 +482,7 @@ _get_asffileinfo(char *file, struct song_metadata *psong) if(_asf_load_string(fp, ValueType, ValueLength, buf, sizeof(buf))) { if(buf[0]) - psong->contributor[ROLE_ALBUMARTIST] = strdup(buf); + psong->contributor[ROLE_ARTIST] = strdup(buf); } } else if(!strcasecmp(buf, "Description") || !strcasecmp(buf, "WM/Track")) @@ -499,7 +511,7 @@ _get_asffileinfo(char *file, struct song_metadata *psong) } else if(!strcasecmp(buf, "WM/Picture") && (ValueType == ASF_VT_BYTEARRAY)) { - _asf_load_picture(fp, ValueLength, psong->image, &psong->image_size); + psong->image = _asf_load_picture(fp, ValueLength, psong->image, &psong->image_size); } else if(!strcasecmp(buf, "TrackNumber") || !strcasecmp(buf, "WM/TrackNumber")) {