[tracker] Fixes NB#107116, Music:Duration displayed as -:- in library for some clips
- From: Philip Van Hoof <pvanhoof src gnome org>
- To: svn-commits-list gnome org
- Subject: [tracker] Fixes NB#107116, Music:Duration displayed as -:- in library for some clips
- Date: Fri, 12 Jun 2009 04:23:05 -0400 (EDT)
commit 1efdc9625f7bc31cdd95ae0f9f19123438ce56c0
Author: Mikael Ottela <mikael ottela ixonos com>
Date: Thu Jun 11 01:53:12 2009 +0300
Fixes NB#107116, Music:Duration displayed as -:- in library for some clips
Fixed mpeg v2 bitrates.
src/tracker-extract/tracker-extract-mp3.c | 41 +++++++++++++++--------------
1 files changed, 21 insertions(+), 20 deletions(-)
---
diff --git a/src/tracker-extract/tracker-extract-mp3.c b/src/tracker-extract/tracker-extract-mp3.c
index f0ac67e..d22b6d6 100644
--- a/src/tracker-extract/tracker-extract-mp3.c
+++ b/src/tracker-extract/tracker-extract-mp3.c
@@ -284,20 +284,20 @@ static const guint pad_mask = 0x20000;
static guint bitrate_table[16][6] = {
{ 0, 0, 0, 0, 0, 0 },
- { 32, 32, 32, 32, 32, 8 },
- { 64, 48, 40, 64, 48, 16 },
- { 96, 56, 48, 96, 56, 24 },
- { 128, 64, 56, 128, 64, 32 },
- { 160, 80, 64, 160, 80, 64 },
- { 192, 96, 80, 192, 96, 80 },
- { 224, 112, 96, 224, 112, 56 },
- { 256, 128, 112, 256, 128, 64 },
- { 288, 160, 128, 288, 160, 128 },
- { 320, 192, 160, 320, 192, 160 },
- { 352, 224, 192, 352, 224, 112 },
- { 384, 256, 224, 384, 256, 128 },
- { 416, 320, 256, 416, 320, 256 },
- { 448, 384, 320, 448, 384, 320 },
+ { 32, 32, 32, 32, 8, 8 },
+ { 64, 48, 40, 48, 16, 16 },
+ { 96, 56, 48, 56, 24, 24 },
+ { 128, 64, 56, 64, 32, 32 },
+ { 160, 80, 64, 80, 40, 40 },
+ { 192, 96, 80, 96, 48, 48 },
+ { 224, 112, 96, 112, 56, 56 },
+ { 256, 128, 112, 128, 64, 64 },
+ { 288, 160, 128, 144, 80, 80 },
+ { 320, 192, 160, 160, 96, 96 },
+ { 352, 224, 192, 176, 112, 112 },
+ { 384, 256, 224, 192, 128, 128 },
+ { 416, 320, 256, 224, 144, 144 },
+ { 448, 384, 320, 256, 160, 160 },
{ -1, -1, -1, -1, -1, -1 }
};
@@ -307,6 +307,8 @@ static gint freq_table[4][3] = {
{32000, 16000, 8000}
};
+static gint spf_table[6] = { 48, 144, 144, 48, 144, 72 };
+
static TrackerExtractData extract_data[] = {
{ "audio/mpeg", extract_mp3 },
{ "audio/x-mp3", extract_mp3 },
@@ -544,7 +546,7 @@ mp3_parse_header (const gchar *data,
guint header;
gchar mpeg_ver = 0;
gchar layer_ver = 0;
- guint spfp8 = 0;
+ gint spfp8 = 0;
guint padsize = 0;
gint idx_num = 0;
guint bitrate = 0;
@@ -573,7 +575,6 @@ mp3_parse_header (const gchar *data,
"Audio:CodecVersion",
"2");*/
mpeg_ver = MPEG_V2;
- spfp8 = 72;
break;
case 0x1800:
tracker_statement_list_insert (metadata, uri,
@@ -583,7 +584,6 @@ mp3_parse_header (const gchar *data,
"Audio:CodecVersion",
"1");*/
mpeg_ver = MPEG_V1;
- spfp8 = 144;
break;
case 0:
tracker_statement_list_insert (metadata, uri,
@@ -593,7 +593,6 @@ mp3_parse_header (const gchar *data,
"Audio:CodecVersion",
"2.5");*/
mpeg_ver = MPEG_V25;
- spfp8 = 72;
break;
default:
break;
@@ -629,6 +628,8 @@ mp3_parse_header (const gchar *data,
} else {
idx_num = 2 + layer_ver;
}
+
+ spfp8 = spf_table[idx_num];
if ((header & ch_mask) == ch_mask) {
ch = 1;
@@ -695,11 +696,11 @@ mp3_parse_header (const gchar *data,
avg_bps /= frames;
if (filedata->duration==0) {
- if ((!vbr_flag || frames > VBR_THRESHOLD) || (frames > MAX_FRAMES_SCAN)) {
+ if ((!vbr_flag && frames > VBR_THRESHOLD) || (frames > MAX_FRAMES_SCAN)) {
/* If not all frames scanned */
length = (filedata->size - filedata->id3v2_size) / (avg_bps ? avg_bps : bitrate ? bitrate : 0xFFFFFFFF) / 125;
} else{
- length = 1152 * frames / (sample_rate ? sample_rate : 0xFFFFFFFF);
+ length = spfp8 * 8 * frames / (sample_rate ? sample_rate : 0xFFFFFFFF);
}
tracker_statement_list_insert_with_int (metadata, uri,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]