gui: Simplify display command execution.
[paraslash.git] / mp3_afh.c
index b83343edcf505b69a9cd6e79fbca43e9fb2ce384..2b558cbbaa1d8c82fd5fc121b6a1ce30fbff08ee 100644 (file)
--- a/mp3_afh.c
+++ b/mp3_afh.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2003-2011 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2003-2014 Andre Noll <maan@systemlinux.org>
  *
  * Licensed under the GPL v2. For licencing details see COPYING.
  */
@@ -23,8 +23,6 @@
 #include "afh.h"
 #include "string.h"
 
-/** \cond some defines and structs which are only used in this file */
-
 /*
  * MIN_CONSEC_GOOD_FRAMES defines how many consecutive valid MP3 frames we need
  * to see before we decide we are looking at a real MP3 file
@@ -47,7 +45,6 @@ struct mp3header {
        unsigned int emphasis;
 };
 
-/** \endcond */
 static const int frequencies[3][4] = {
        {22050,24000,16000,50000}, /* MPEG 2.0 */
        {44100,48000,32000,50000}, /* MPEG 1.0 */
@@ -75,11 +72,11 @@ static const char *mode_text[] = {"stereo", "joint stereo", "dual channel", "mon
 
 #include <id3tag.h>
 
-static char *get_latin1(id3_ucs4_t const *string)
+static char *get_utf8(id3_ucs4_t const *string)
 {
        if (!string)
                return NULL;
-       return (char *)id3_ucs4_latin1duplicate(string);
+       return (char *)id3_ucs4_utf8duplicate(string);
 }
 
 static char *get_stringlist(union id3_field *field)
@@ -88,7 +85,7 @@ static char *get_stringlist(union id3_field *field)
        char *result = NULL;
 
        for (k = 0; k < nstrings; k++) {
-               char *tmp = (char *)get_latin1(id3_field_getstrings(field, k));
+               char *tmp = (char *)get_utf8(id3_field_getstrings(field, k));
                if (result) {
                        char *tmp2 = result;
                        result = make_message("%s %s", tmp2, tmp);
@@ -104,7 +101,7 @@ static char *get_string(union id3_field *field)
 {
        id3_ucs4_t const *string = id3_field_getfullstring(field);
 
-       return get_latin1(string);
+       return get_utf8(string);
 }
 
 #define FOR_EACH_FIELD(f, j, fr) for (j = 0; j < (fr)->nfields && \
@@ -142,27 +139,27 @@ static void mp3_get_id3(__a_unused unsigned char *map,
        }
        for (i = 0; i < id3_t->nframes; i++) {
                struct id3_frame *fr = id3_t->frames[i];
-               if (!strcmp(fr->id, "TIT2")) {
+               if (!strcmp(fr->id, ID3_FRAME_TITLE)) {
                        if (!tags->title)
                                tags->title = get_strings(fr);
                        continue;
                }
-               if (!strcmp(fr->id, "TPE1")) {
+               if (!strcmp(fr->id, ID3_FRAME_ARTIST)) {
                        if (!tags->artist)
                                tags->artist = get_strings(fr);
                        continue;
                }
-               if (!strcmp(fr->id, "TALB")) {
+               if (!strcmp(fr->id, ID3_FRAME_ALBUM)) {
                        if (!tags->album)
                                tags->album = get_strings(fr);
                        continue;
                }
-               if (!strcmp(fr->id, "TDRC")) {
+               if (!strcmp(fr->id, ID3_FRAME_YEAR)) {
                        if (!tags->year)
                                tags->year = get_strings(fr);
                        continue;
                }
-               if (!strcmp(fr->id, "COMM")) {
+               if (!strcmp(fr->id, ID3_FRAME_COMMENT)) {
                        if (!tags->comment)
                                tags->comment = get_strings(fr);
                        continue;
@@ -420,7 +417,7 @@ static int mp3_read_info(unsigned char *map, size_t numbytes, int fd,
                if (ret < 0)
                        continue;
                fl = ret;
-               tmp.tv_sec = fl;
+               tmp.tv_sec = fl - header.padding;
                tmp.tv_usec = 0;
                tv_divide(br * 125, &tmp, &cct);
                tv_add(&cct, &total_time, &tmp);