tracker r2793 - in trunk: . src/tracker-extract tests/tracker-extract tests/tracker-extract/data/mp3
- From: mottela svn gnome org
- To: svn-commits-list gnome org
- Subject: tracker r2793 - in trunk: . src/tracker-extract tests/tracker-extract tests/tracker-extract/data/mp3
- Date: Wed, 14 Jan 2009 19:18:03 +0000 (UTC)
Author: mottela
Date: Wed Jan 14 19:18:02 2009
New Revision: 2793
URL: http://svn.gnome.org/viewvc/tracker?rev=2793&view=rev
Log:
Added test cases for mp3 extraction and fixed minor mp3 extraction issues
Added:
trunk/tests/tracker-extract/data/mp3/create_mp3_perfdata (contents, props changed)
trunk/tests/tracker-extract/data/mp3/header_bitrate_vbr_mpeg1_1.data
trunk/tests/tracker-extract/data/mp3/header_bitrate_vbr_mpeg1_2.data
trunk/tests/tracker-extract/data/mp3/header_bitrate_vbr_mpeg1_3.data
trunk/tests/tracker-extract/data/mp3/id3v23_tags_1.data
trunk/tests/tracker-extract/data/mp3/id3v23_tags_2.data
trunk/tests/tracker-extract/tracker-extract-gstreamer-test.c
trunk/tests/tracker-extract/tracker-extract-test-utils.c
trunk/tests/tracker-extract/tracker-extract-test-utils.h
trunk/tests/tracker-extract/tracker-extract-testsuite-generic.c
trunk/tests/tracker-extract/tracker-extract-testsuite-generic.h
trunk/tests/tracker-extract/tracker-extract-testsuite-mp3.c
trunk/tests/tracker-extract/tracker-extract-testsuite-mp3.h
Modified:
trunk/ChangeLog
trunk/src/tracker-extract/tracker-extract-mp3.c
trunk/tests/tracker-extract/Makefile.am
trunk/tests/tracker-extract/data/mp3/create_mp3_testdata
trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_1.data
trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_10.data
trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_11.data
trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_12.data
trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_13.data
trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_14.data
trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_2.data
trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_3.data
trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_4.data
trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_5.data
trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_6.data
trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_7.data
trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_8.data
trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_9.data
trunk/tests/tracker-extract/data/mp3/id3v1_basic_1.data
trunk/tests/tracker-extract/data/mp3/id3v23_basic_1.data
trunk/tests/tracker-extract/data/mp3/id3v23_basic_2.data
trunk/tests/tracker-extract/data/mp3/id3v23_basic_3.data
trunk/tests/tracker-extract/data/mp3/id3v23_comm_1.data
trunk/tests/tracker-extract/data/mp3/id3v23_comm_2.data
trunk/tests/tracker-extract/data/mp3/id3v23_comm_3.data
trunk/tests/tracker-extract/data/mp3/id3v23_trck_1.data
trunk/tests/tracker-extract/tracker-extract-mp3-test.c
Modified: trunk/src/tracker-extract/tracker-extract-mp3.c
==============================================================================
--- trunk/src/tracker-extract/tracker-extract-mp3.c (original)
+++ trunk/src/tracker-extract/tracker-extract-mp3.c Wed Jan 14 19:18:02 2009
@@ -389,6 +389,8 @@
guint header;
gchar mpeg_ver = 0;
gchar layer_ver = 0;
+ guint spfp8 = 0;
+ guint padsize = 0;
gint idx_num = 0;
guint bitrate = 0;
guint avg_bps = 0;
@@ -401,14 +403,14 @@
size_t pos = 0;
pos = seek_pos;
-
+
memcpy (&header, &data[pos], sizeof (header));
switch (header & mpeg_ver_mask) {
- case 0x1000:
+ case 0x800:
mpeg_ver = MPEG_ERR;
break;
- case 0x800:
+ case 0x1000:
g_hash_table_insert (metadata,
g_strdup ("Audio:Codec"),
g_strdup ("MPEG"));
@@ -416,6 +418,7 @@
g_strdup ("Audio:CodecVersion"),
g_strdup ("2"));
mpeg_ver = MPEG_V2;
+ spfp8 = 72;
break;
case 0x1800:
g_hash_table_insert (metadata,
@@ -425,6 +428,7 @@
g_strdup ("Audio:CodecVersion"),
g_strdup ("1"));
mpeg_ver = MPEG_V1;
+ spfp8 = 144;
break;
case 0:
g_hash_table_insert (metadata,
@@ -434,6 +438,7 @@
g_strdup ("Audio:CodecVersion"),
g_strdup ("2.5"));
mpeg_ver = MPEG_V25;
+ spfp8 = 72;
break;
default:
break;
@@ -442,21 +447,24 @@
switch (header&mpeg_layer_mask) {
case 0x400:
layer_ver = LAYER_2;
+ padsize = 1;
break;
case 0x200:
layer_ver = LAYER_3;
+ padsize = 1;
break;
case 0x600:
layer_ver = LAYER_1;
+ padsize = 4;
break;
case 0:
layer_ver = LAYER_ERR;
default:
break;
}
-
+
if (!layer_ver || !mpeg_ver) {
- g_debug ("Unknown mpeg type: %d, %d", mpeg_ver, layer_ver);
+ //g_debug ("Unknown mpeg type: %d, %d", mpeg_ver, layer_ver);
/* Unknown mpeg type */
return FALSE;
}
@@ -496,7 +504,7 @@
return FALSE;
}
- frame_size = 144 * bitrate / (sample_rate ? sample_rate : 1) + ((header & pad_mask) >> 17);
+ frame_size = spfp8 * bitrate / (sample_rate ? sample_rate : 1) + padsize*((header & pad_mask) >> 17);
avg_bps += bitrate / 1000;
pos += frame_size;
@@ -544,7 +552,7 @@
tracker_escape_metadata_printf ("%d", sample_rate));
g_hash_table_insert (metadata,
g_strdup ("Audio:Bitrate"),
- tracker_escape_metadata_printf ("%d", avg_bps));
+ tracker_escape_metadata_printf ("%d", avg_bps*1000));
return TRUE;
}
@@ -610,9 +618,9 @@
{"TLAN", "File:Language"},
{"TIT2", "Audio:Title"},
{"TIT3", "Audio:Comment"},
- {"WCOP", "File:License"},
{"TDRL", "Audio:ReleaseDate"},
{"TRCK", "Audio:TrackNo"},
+ {"PCNT", "Audio:PlayCount"},
{NULL, 0},
};
@@ -746,6 +754,31 @@
g_strfreev (parts);
}
+ if (strcmp (tmap[i].text, "TCON") == 0) {
+ if (g_pattern_match_simple ("(*)*", word)) {
+ gchar *begin;
+ gchar *end;
+ guint genre;
+ gchar *new_word;
+
+ begin = strchr (word,'(');
+ if (!begin)
+ continue;
+ begin++;
+ end = strchr (begin, ')');
+ if (!end)
+ continue;
+ end[0] = '\0';
+
+ genre = (guint)strtol(begin,&end,10);
+
+ if (begin != end) {
+ g_free (word);
+ word = g_strdup (genre_names[genre]);
+ }
+ }
+ }
+
g_hash_table_insert (metadata,
g_strdup (tmap[i].type),
tracker_escape_metadata (word));
@@ -880,9 +913,9 @@
{"TALB", "Audio:Album"},
{"TLAN", "File:Language"},
{"TIT2", "Audio:Title"},
- {"WCOP", "File:License"},
{"TYER", "Audio:ReleaseDate"},
{"TRCK", "Audio:TrackNo"},
+ {"PCNT", "Audio:PlayCount"},
{NULL, 0},
};
@@ -1018,6 +1051,31 @@
g_strfreev (parts);
}
+ if (strcmp (tmap[i].text, "TCON") == 0) {
+ if (g_pattern_match_simple ("(*)*", word)) {
+ gchar *begin;
+ gchar *end;
+ guint genre;
+ gchar *new_word;
+
+ begin = strchr (word,'(');
+ if (!begin)
+ continue;
+ begin++;
+ end = strchr (begin, ')');
+ if (!end)
+ continue;
+ end[0] = '\0';
+
+ genre = (guint)strtol(begin,&end,10);
+
+ if (begin != end) {
+ g_free (word);
+ word = g_strdup (genre_names[genre]);
+ }
+ }
+ }
+
g_hash_table_insert (metadata,
g_strdup (tmap[i].type),
tracker_escape_metadata (word));
@@ -1132,7 +1190,6 @@
{"WAF", "DC:Location"},
{"WAR", "DC:Location"},
{"WAS", "DC:Location"},
- {"WCP", "File:Copyright"},
{"WAF", "DC:Location"},
{"WCM", "File:License"},
{"TYE", "Audio:ReleaseDate"},
Modified: trunk/tests/tracker-extract/Makefile.am
==============================================================================
--- trunk/tests/tracker-extract/Makefile.am (original)
+++ trunk/tests/tracker-extract/Makefile.am Wed Jan 14 19:18:02 2009
@@ -2,12 +2,19 @@
noinst_PROGRAMS = $(TEST_PROGS)
+TEST_UTILS_SOURCES = tracker-extract-test-utils.c \
+ tracker-extract-testsuite-generic.c \
+ tracker-extract-testsuite-mp3.c
+
+
+
TEST_PROGS += \
- test-tracker-extract-mp3
+ test-tracker-extract-mp3 \
+ test-tracker-extract-gstreamer
INCLUDES = \
-DG_LOG_DOMAIN=\"Tracker\" \
- -DTEST_DATA_DIR=\""$(top_builddir)/tests/tracker-extract/data"\"\
+ -DTEST_DATA_DIR=\""$(abs_top_builddir)/tests/tracker-extract/data"\"\
-DTRACKER_COMPILATION \
-I$(top_srcdir)/src \
-I$(top_srcdir)/tests/common \
@@ -18,7 +25,8 @@
$(GLIB2_CFLAGS)
test_tracker_extract_mp3_SOURCES = \
- tracker-extract-mp3-test.c
+ tracker-extract-mp3-test.c \
+ $(TEST_UTILS_SOURCES)
test_tracker_extract_mp3_LDADD = \
$(top_builddir)/src/tracker-extract/libextract-mp3.la \
@@ -26,3 +34,15 @@
$(GMODULE_LIBS) \
$(GTHREAD_LIBS) \
$(GLIB2_LIBS)
+
+test_tracker_extract_gstreamer_SOURCES = \
+ tracker-extract-gstreamer-test.c \
+ $(TEST_UTILS_SOURCES)
+
+test_tracker_extract_gstreamer_LDADD = \
+ $(top_builddir)/src/tracker-extract/libextract-gstreamer.la \
+ $(top_builddir)/src/libtracker-common/libtracker-common.la \
+ $(GMODULE_LIBS) \
+ $(GTHREAD_LIBS) \
+ $(GLIB2_LIBS) \
+ $(GSTREAMER_LIBS)
\ No newline at end of file
Added: trunk/tests/tracker-extract/data/mp3/create_mp3_perfdata
==============================================================================
--- (empty file)
+++ trunk/tests/tracker-extract/data/mp3/create_mp3_perfdata Wed Jan 14 19:18:02 2009
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+# *** cbr id3v1 tags ***
+
+for i in $(seq 1000)
+do
+ echo Performance cbr id3v1 $i| text2wave - | lame --resample 48 - "perf_cbr_id3v1_$i.mp3"
+ id3v2 --id3v1-only -t "The title $i" -a "The Artist" -A "The album name" -y 1969 -c "This is a basic comment" -T 5 -g 5 "id3v1_basic_1_$i.mp3"
+done
\ No newline at end of file
Modified: trunk/tests/tracker-extract/data/mp3/create_mp3_testdata
==============================================================================
--- trunk/tests/tracker-extract/data/mp3/create_mp3_testdata (original)
+++ trunk/tests/tracker-extract/data/mp3/create_mp3_testdata Wed Jan 14 19:18:02 2009
@@ -30,7 +30,7 @@
#COMM
echo Basic id3v23 tags 1| text2wave - | lame --resample 48 - "id3v23_comm_1.mp3"
-id3v2 --id3v2-only -t "The titlev23" -a "The artistv23" -A "The album namev23" -y 1969 -c "" -T 8 -g 8 "id3v23_comm_1.mp3"
+id3v2 --id3v2-only -t "The titlev23" -a "The artistv23" -A "The album namev23" -y 1969 -c " - " -T 8 -g 8 "id3v23_comm_1.mp3"
echo Basic id3v23 tags 1| text2wave - | lame --resample 48 - "id3v23_comm_2.mp3"
id3v2 --id3v2-only -t "The titlev23" -a "The artistv23" -A "The album namev23" -y 1969 -c " " -T 8 -g 8 "id3v23_comm_2.mp3"
@@ -38,6 +38,13 @@
echo Basic id3v23 tags 1| text2wave - | lame --resample 48 - "id3v23_comm_3.mp3"
id3v2 --id3v2-only -t "The titlev23" -a "The artistv23" -A "The album namev23" -y 1969 -c "c" -T 8 -g 8 "id3v23_comm_3.mp3"
+#Others
+echo Basic id3v23 tags 1| text2wave - | lame --resample 48 - "id3v23_tags_1.mp3"
+id3v2 --id3v2-only --PCNT "4" --TALB "Album/Movie/Show" --TCON "content type" --TCOP "copyright me" --TDAT "2312" --TENC "julkaisija" --TEXT "Monday, monday.. yeah yeah.. monday" --TIT2 "Title or songname" --TLAN "fin" --TPE1 "lead performer" --TYER "2003" "id3v23_tags_1.mp3"
+
+echo Basic id3v23 tags 1| text2wave - | lame --resample 48 - "id3v23_tags_2.mp3"
+id3v2 --id3v2-only --TIT1 "content group desc" --TOAL "original album title" --TPE2 "Orchestra" --TPUB "publisher" "id3v23_tags_2.mp3"
+
# *** Basic header/calculated tags ***
#Sampling rate
@@ -69,6 +76,6 @@
echo Header bitrate 256| text2wave - | lame --resample 32 --cbr -b 256 - "header_bitrate_mpeg1_13.mp3"
echo Header bitrate 320| text2wave - | lame --resample 32 --cbr -b 320 - "header_bitrate_mpeg1_14.mp3"
-
-
-
+echo Header vbr 1| text2wave - | lame --resample 32 --abr 64 - "header_bitrate_vbr_mpeg1_1.mp3"
+echo Header vbr 1| text2wave - | lame --resample 32 --abr 128 - "header_bitrate_vbr_mpeg1_2.mp3"
+echo Header vbr 1| text2wave - | lame --resample 32 --abr 256 - "header_bitrate_vbr_mpeg1_3.mp3"
Modified: trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_1.data
==============================================================================
--- trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_1.data (original)
+++ trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_1.data Wed Jan 14 19:18:02 2009
@@ -1 +1 @@
-Audio:Bitrate = "32"
+Audio:Bitrate = "32000"
Modified: trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_10.data
==============================================================================
--- trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_10.data (original)
+++ trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_10.data Wed Jan 14 19:18:02 2009
@@ -1 +1 @@
-Audio:Bitrate = "160"
+Audio:Bitrate = "160000"
Modified: trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_11.data
==============================================================================
--- trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_11.data (original)
+++ trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_11.data Wed Jan 14 19:18:02 2009
@@ -1 +1 @@
-Audio:Bitrate = "192"
+Audio:Bitrate = "192000"
Modified: trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_12.data
==============================================================================
--- trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_12.data (original)
+++ trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_12.data Wed Jan 14 19:18:02 2009
@@ -1 +1 @@
-Audio:Bitrate = "224"
+Audio:Bitrate = "224000"
Modified: trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_13.data
==============================================================================
--- trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_13.data (original)
+++ trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_13.data Wed Jan 14 19:18:02 2009
@@ -1 +1 @@
-Audio:Bitrate = "256"
+Audio:Bitrate = "256000"
Modified: trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_14.data
==============================================================================
--- trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_14.data (original)
+++ trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_14.data Wed Jan 14 19:18:02 2009
@@ -1 +1 @@
-Audio:Bitrate = "320"
+Audio:Bitrate = "320000"
Modified: trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_2.data
==============================================================================
--- trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_2.data (original)
+++ trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_2.data Wed Jan 14 19:18:02 2009
@@ -1 +1 @@
-Audio:Bitrate = "40"
+Audio:Bitrate = "40000"
Modified: trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_3.data
==============================================================================
--- trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_3.data (original)
+++ trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_3.data Wed Jan 14 19:18:02 2009
@@ -1 +1 @@
-Audio:Bitrate = "48"
+Audio:Bitrate = "48000"
Modified: trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_4.data
==============================================================================
--- trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_4.data (original)
+++ trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_4.data Wed Jan 14 19:18:02 2009
@@ -1 +1 @@
-Audio:Bitrate = "56"
+Audio:Bitrate = "56000"
Modified: trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_5.data
==============================================================================
--- trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_5.data (original)
+++ trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_5.data Wed Jan 14 19:18:02 2009
@@ -1 +1 @@
-Audio:Bitrate = "64"
+Audio:Bitrate = "64000"
Modified: trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_6.data
==============================================================================
--- trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_6.data (original)
+++ trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_6.data Wed Jan 14 19:18:02 2009
@@ -1 +1 @@
-Audio:Bitrate = "80"
+Audio:Bitrate = "80000"
Modified: trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_7.data
==============================================================================
--- trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_7.data (original)
+++ trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_7.data Wed Jan 14 19:18:02 2009
@@ -1 +1 @@
-Audio:Bitrate = "96"
+Audio:Bitrate = "96000"
Modified: trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_8.data
==============================================================================
--- trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_8.data (original)
+++ trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_8.data Wed Jan 14 19:18:02 2009
@@ -1 +1 @@
-Audio:Bitrate = "112"
+Audio:Bitrate = "112000"
Modified: trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_9.data
==============================================================================
--- trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_9.data (original)
+++ trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_9.data Wed Jan 14 19:18:02 2009
@@ -1 +1 @@
-Audio:Bitrate = "128"
+Audio:Bitrate = "128000"
Added: trunk/tests/tracker-extract/data/mp3/header_bitrate_vbr_mpeg1_1.data
==============================================================================
--- (empty file)
+++ trunk/tests/tracker-extract/data/mp3/header_bitrate_vbr_mpeg1_1.data Wed Jan 14 19:18:02 2009
@@ -0,0 +1 @@
+Audio:Bitrate = "64000"
Added: trunk/tests/tracker-extract/data/mp3/header_bitrate_vbr_mpeg1_2.data
==============================================================================
--- (empty file)
+++ trunk/tests/tracker-extract/data/mp3/header_bitrate_vbr_mpeg1_2.data Wed Jan 14 19:18:02 2009
@@ -0,0 +1 @@
+Audio:Bitrate = "128000"
Added: trunk/tests/tracker-extract/data/mp3/header_bitrate_vbr_mpeg1_3.data
==============================================================================
--- (empty file)
+++ trunk/tests/tracker-extract/data/mp3/header_bitrate_vbr_mpeg1_3.data Wed Jan 14 19:18:02 2009
@@ -0,0 +1 @@
+Audio:Bitrate = "256000"
Modified: trunk/tests/tracker-extract/data/mp3/id3v1_basic_1.data
==============================================================================
--- trunk/tests/tracker-extract/data/mp3/id3v1_basic_1.data (original)
+++ trunk/tests/tracker-extract/data/mp3/id3v1_basic_1.data Wed Jan 14 19:18:02 2009
@@ -1,5 +1,5 @@
Audio:Title = "The title"
-Audio:Artist = "The artist"
+Audio:Artist = "The Artist"
Audio:Album = "The album name"
Audio:Comment = "This is a basic comment"
Audio:Genre = "Funk"
Modified: trunk/tests/tracker-extract/data/mp3/id3v23_basic_1.data
==============================================================================
--- trunk/tests/tracker-extract/data/mp3/id3v23_basic_1.data (original)
+++ trunk/tests/tracker-extract/data/mp3/id3v23_basic_1.data Wed Jan 14 19:18:02 2009
@@ -2,6 +2,6 @@
Audio:Artist = "The artistv23"
Audio:Album = "The album namev23"
Audio:Comment = "This is a basic commentv23"
-Audio:Genre = "(8)"
+Audio:Genre = "Jazz"
Audio:ReleaseDate = "1969"
-Audio:TrackNo = "5"
+Audio:TrackNo = "8"
Modified: trunk/tests/tracker-extract/data/mp3/id3v23_basic_2.data
==============================================================================
--- trunk/tests/tracker-extract/data/mp3/id3v23_basic_2.data (original)
+++ trunk/tests/tracker-extract/data/mp3/id3v23_basic_2.data Wed Jan 14 19:18:02 2009
@@ -2,6 +2,6 @@
Audio:Artist = "Artistv23"
Audio:Album = "Albumv23"
Audio:Comment = "Commentv23"
-Audio:Genre = "(9)"
+Audio:Genre = "Metal"
Audio:ReleaseDate = "1999"
-Audio:TrackNo = "6"
+Audio:TrackNo = "9"
Modified: trunk/tests/tracker-extract/data/mp3/id3v23_basic_3.data
==============================================================================
--- trunk/tests/tracker-extract/data/mp3/id3v23_basic_3.data (original)
+++ trunk/tests/tracker-extract/data/mp3/id3v23_basic_3.data Wed Jan 14 19:18:02 2009
@@ -2,6 +2,6 @@
Audio:Artist = "artistiv23"
Audio:Album = "levyv23"
Audio:Comment = "jotain kommenttiav23"
-Audio:Genre = "(10)"
+Audio:Genre = "New Age"
Audio:ReleaseDate = "2029"
Audio:TrackNo = "10"
Modified: trunk/tests/tracker-extract/data/mp3/id3v23_comm_1.data
==============================================================================
--- trunk/tests/tracker-extract/data/mp3/id3v23_comm_1.data (original)
+++ trunk/tests/tracker-extract/data/mp3/id3v23_comm_1.data Wed Jan 14 19:18:02 2009
@@ -1,7 +1,7 @@
Audio:Title = "The titlev23"
Audio:Artist = "The artistv23"
Audio:Album = "The album namev23"
-Audio:Comment = ""
-Audio:Genre = "(8)"
+Audio:Comment = " - "
+Audio:Genre = "Jazz"
Audio:ReleaseDate = "1969"
Audio:TrackNo = "8"
Modified: trunk/tests/tracker-extract/data/mp3/id3v23_comm_2.data
==============================================================================
--- trunk/tests/tracker-extract/data/mp3/id3v23_comm_2.data (original)
+++ trunk/tests/tracker-extract/data/mp3/id3v23_comm_2.data Wed Jan 14 19:18:02 2009
@@ -2,6 +2,6 @@
Audio:Artist = "The artistv23"
Audio:Album = "The album namev23"
Audio:Comment = " "
-Audio:Genre = "(8)"
+Audio:Genre = "Jazz"
Audio:ReleaseDate = "1969"
Audio:TrackNo = "8"
Modified: trunk/tests/tracker-extract/data/mp3/id3v23_comm_3.data
==============================================================================
--- trunk/tests/tracker-extract/data/mp3/id3v23_comm_3.data (original)
+++ trunk/tests/tracker-extract/data/mp3/id3v23_comm_3.data Wed Jan 14 19:18:02 2009
@@ -2,6 +2,6 @@
Audio:Artist = "The artistv23"
Audio:Album = "The album namev23"
Audio:Comment = "c"
-Audio:Genre = "(8)"
+Audio:Genre = "Jazz"
Audio:ReleaseDate = "1969"
Audio:TrackNo = "8"
Added: trunk/tests/tracker-extract/data/mp3/id3v23_tags_1.data
==============================================================================
--- (empty file)
+++ trunk/tests/tracker-extract/data/mp3/id3v23_tags_1.data Wed Jan 14 19:18:02 2009
@@ -0,0 +1,12 @@
+#Audio:PlayCount = "4"
+Audio:Album = "Album/Movie/Show"
+Audio:ReleaseDate = "2003"
+Audio:Genre = "content type"
+#Audio:Lyrics = "Monday, monday.. yeah yeah.. monday"
+Audio:Title = "Title or songname"
+Audio:Artist = "lead performer"
+
+File:Copyright = "copyright me"
+#File:Language = "fin"
+
+#DC:Publishers = "julkaisija"
Added: trunk/tests/tracker-extract/data/mp3/id3v23_tags_2.data
==============================================================================
--- (empty file)
+++ trunk/tests/tracker-extract/data/mp3/id3v23_tags_2.data Wed Jan 14 19:18:02 2009
@@ -0,0 +1,4 @@
+#Audio:Genre = "content group desc"
+#Audio:Album = "original album title"
+#Audio:Artist = "Orchestra"
+#DC:Publishers = "publisher"
Modified: trunk/tests/tracker-extract/data/mp3/id3v23_trck_1.data
==============================================================================
--- trunk/tests/tracker-extract/data/mp3/id3v23_trck_1.data (original)
+++ trunk/tests/tracker-extract/data/mp3/id3v23_trck_1.data Wed Jan 14 19:18:02 2009
@@ -2,6 +2,6 @@
Audio:Artist = "The artistv23"
Audio:Album = "The album namev23"
Audio:Comment = "This is a basic commentv23"
-Audio:Genre = "(8)"
+Audio:Genre = "Jazz"
Audio:ReleaseDate = "1969"
Audio:TrackNo = "88"
Added: trunk/tests/tracker-extract/tracker-extract-gstreamer-test.c
==============================================================================
--- (empty file)
+++ trunk/tests/tracker-extract/tracker-extract-gstreamer-test.c Wed Jan 14 19:18:02 2009
@@ -0,0 +1,70 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2008, Nokia (urho konttori nokia com)
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include <string.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <glib.h>
+
+#include <tracker-extract/tracker-extract.h>
+
+#include "tracker-extract-test-utils.h"
+#include "tracker-extract-testsuite-generic.h"
+#include "tracker-extract-testsuite-mp3.h"
+
+int
+main (int argc, char **argv) {
+
+ gint result;
+
+ g_type_init ();
+ g_thread_init (NULL);
+ g_test_init (&argc, &argv, NULL);
+
+ TrackerExtractorData *data;
+
+ g_test_message ("Testing extractor functionality");
+ g_test_add_func ("/tracker-extract/tracker-extract-gstreamer/check-extractor-data",
+ test_tracker_extract_check_extractor_data);
+#if 0
+ data = tracker_test_extract_get_extractor ("audio/mpeg");
+
+ g_test_add_data_func ("/tracker-extract/tracker-extract-gstreamer/id3v1_basic",
+ data, test_tracker_extract_mp3_id3v1_basic);
+ g_test_add_data_func ("/tracker-extract/tracker-extract-gstreamer/id3v23_basic",
+ data, test_tracker_extract_mp3_id3v23_basic);
+ g_test_add_data_func ("/tracker-extract/tracker-extract-gstreamer/id3v23_tags",
+ data, test_tracker_extract_mp3_id3v23_tags);
+/* g_test_add_data_func ("/tracker-extract/tracker-extract-gstreamer/header_bitrate",
+ data, test_tracker_extract_mp3_header_bitrate); Gstreamer gets these wrong. reported */
+ g_test_add_data_func ("/tracker-extract/tracker-extract-gstreamer/header_sampling",
+ data, test_tracker_extract_mp3_header_sampling);
+
+ if (g_test_perf()) {
+ g_test_add_data_func ("/tracker-extract/tracker-extract-gstreamer/performance_cbr",
+ data, performance_tracker_extract_mp3);
+ }
+#endif
+
+
+ result = g_test_run ();
+
+ return result;
+}
Modified: trunk/tests/tracker-extract/tracker-extract-mp3-test.c
==============================================================================
--- trunk/tests/tracker-extract/tracker-extract-mp3-test.c (original)
+++ trunk/tests/tracker-extract/tracker-extract-mp3-test.c Wed Jan 14 19:18:02 2009
@@ -20,365 +20,52 @@
#include <string.h>
#include <fcntl.h>
-
+#include <stdio.h>
#include <glib.h>
#include <tracker-extract/tracker-extract.h>
-typedef struct {
- gchar *filename;
- gchar *testdata;
-} ExtractData;
-
-static GHashTable *
-parse_testdata_file (const gchar *filename)
-{
- GHashTable *testdata;
- GScanner *scanner;
- GTokenType ttype;
- GScannerConfig config = {
- " \t\r\n", /* characters to skip */
- G_CSET_a_2_z "_" G_CSET_A_2_Z, /* identifier start */
- G_CSET_a_2_z "_.:" G_CSET_A_2_Z G_CSET_DIGITS,/* identifier cont. */
- "#\n", /* single line comment */
- TRUE, /* case_sensitive */
- TRUE, /* skip multi-line comments */
- TRUE, /* skip single line comments */
- FALSE, /* scan multi-line comments */
- TRUE, /* scan identifiers */
- TRUE, /* scan 1-char identifiers */
- FALSE, /* scan NULL identifiers */
- FALSE, /* scan symbols */
- FALSE, /* scan binary */
- FALSE, /* scan octal */
- TRUE, /* scan float */
- TRUE, /* scan hex */
- FALSE, /* scan hex dollar */
- TRUE, /* scan single quote strings */
- TRUE, /* scan double quite strings */
- TRUE, /* numbers to int */
- FALSE, /* int to float */
- TRUE, /* identifier to string */
- TRUE, /* char to token */
- FALSE, /* symbol to token */
- FALSE, /* scope 0 fallback */
- FALSE /* store int64 */
- };
- gint fd;
-
- testdata = g_hash_table_new_full (g_str_hash,
- g_str_equal,
- g_free,
- g_free);
-
- fd = g_fopen (filename, O_RDONLY);
-
- g_assert (fd >= 0);
-
- scanner = g_scanner_new (&config);
- g_scanner_input_file (scanner, fd);
- scanner->input_name = filename;
-
- for (ttype = g_scanner_get_next_token(scanner);
- ttype != G_TOKEN_EOF;
- ttype = g_scanner_get_next_token (scanner)) {
- if (ttype = G_TOKEN_IDENTIFIER) {
- gchar key[256];
- strcpy (key, scanner->value.v_identifier);
-
- ttype = g_scanner_get_next_token(scanner);
- g_assert (ttype == G_TOKEN_EQUAL_SIGN);
-
- ttype = g_scanner_get_next_token(scanner);
-
- switch (ttype) {
- case G_TOKEN_STRING:
- g_hash_table_insert (testdata,
- g_strdup(key),
- g_strdup(scanner->value.v_string));
- break;
-
- default:
- g_assert_not_reached();
-
- }
-
- }
- }
-
- g_scanner_destroy (scanner);
- close (fd);
-
- return testdata;
-}
-
-static void
-dump_metadataitem (gpointer key,
- gpointer value,
- gpointer user_data)
-{
- gchar *value_utf8;
-
- g_assert (key != NULL);
- g_assert (value != NULL);
-
- value_utf8 = g_locale_to_utf8 (value, -1, NULL, NULL, NULL);
-
- if (value_utf8) {
- value_utf8 = g_strstrip (value_utf8);
- g_print ("%s=%s;\n", (gchar*) key, value_utf8);
- g_free (value_utf8);
- }
-}
-
-static void
-dump_metadata (GHashTable *metadata)
-{
- g_assert (metadata != NULL);
- g_hash_table_foreach (metadata, dump_metadataitem, NULL);
-}
-
-static void
-check_metadata (GHashTable *metadata, gchar *key, gchar *value)
-{
- gchar *cvalue;
- g_assert (metadata != NULL);
- g_assert (key != NULL);
- g_assert (value != NULL);
-
- cvalue = g_hash_table_lookup (metadata, key);
- g_assert (cvalue != NULL);
- g_assert_cmpstr (cvalue, ==, value);
-}
-
-static TrackerExtractorData *
-search_mime_extractor (const gchar *mime)
-{
- TrackerExtractorData *data;
-
- data = tracker_get_extractor_data ();
-
- while (data->mime) {
- if (strcmp (data->mime,mime) == 0) {
- return data;
- }
- data++;
- }
-
- return NULL;
-}
-
-static void
-extract_file (const gchar *file, const gchar *testdatafile)
-{
- GHashTable *metadata;
- GHashTable *testdata;
-
- gchar *filename;
- gchar *testdata_filename;
-
- TrackerExtractorData *data;
-
- GHashTableIter iter;
- gpointer key, value;
-
- filename = g_strconcat (TEST_DATA_DIR, file, NULL);
- testdata_filename = g_strconcat (TEST_DATA_DIR, testdatafile, NULL);
-
- metadata = g_hash_table_new_full (g_str_hash,
- g_str_equal,
- g_free,
- g_free);
-
- data = search_mime_extractor ("audio/mpeg");
- g_assert (data != NULL);
- (*data->extractor) (filename, metadata);
-
- testdata = parse_testdata_file (testdata_filename);
-
- g_hash_table_iter_init (&iter, testdata);
- while (g_hash_table_iter_next (&iter, &key, &value)) {
- check_metadata (metadata, (gchar *)key, (gchar *)value);
- }
-
- g_hash_table_destroy (metadata);
- g_hash_table_destroy (testdata);
-}
-
-static void
-test_extract_mp3_check_extractor_data (void)
-{
- TrackerExtractorData *data;
- guint extractors = 0;
-
- data = tracker_get_extractor_data();
-
- while (data->mime) {
- if (data->extractor == NULL) {
- g_error ("Extractor for mime '%s' declared NULL", data->mime);
- }
-
- extractors++;
- data++;
- }
-
- g_assert (extractors > 1);
-}
-
-static void
-test_extract_mp3_extract_file (gconstpointer user_data)
-{
- const ExtractData *data = user_data;
- extract_file (data->filename, data->testdata);
-}
+#include "tracker-extract-test-utils.h"
+#include "tracker-extract-testsuite-generic.h"
+#include "tracker-extract-testsuite-mp3.h"
int
main (int argc, char **argv) {
gint result;
- ExtractData data;
g_type_init ();
g_thread_init (NULL);
g_test_init (&argc, &argv, NULL);
- g_test_message ("Testing basic extractor functionality");
- g_test_add_func ("/tracker-extract/tracker-extract-mp3/check-extractor-data", test_extract_mp3_check_extractor_data);
+ TrackerExtractorData *data;
- g_test_message ("Testing basic id3v1 metadata tags");
+ g_test_message ("Testing extractor functionality");
+ g_test_add_func ("/tracker-extract/tracker-extract-mp3/check-extractor-data",
+ test_tracker_extract_check_extractor_data);
- /* Tests fails, disabling, -mr */
#if 0
- data.filename = "/mp3/id3v1_basic_1.mp3";
- data.testdata = "/mp3/id3v1_basic_1.data";
- g_test_add_data_func ("/tracker-extract/tracker-extract-mp3/id3v1/1", &data, test_extract_mp3_extract_file);
-
- data.filename = "/mp3/id3v1_basic_2.mp3";
- data.testdata = "/mp3/id3v1_basic_2.data";
- g_test_add_data_func ("/tracker-extract/tracker-extract-mp3/id3v1/2", &data, test_extract_mp3_extract_file);
-
- data.filename = "/mp3/id3v1_basic_3.mp3";
- data.testdata = "/mp3/id3v1_basic_3.data";
- g_test_add_data_func ("/tracker-extract/tracker-extract-mp3/id3v1/3", &data, test_extract_mp3_extract_file);
-
- g_test_message ("Testing basic id3v23 metadata tags");
-
- data.filename = "/mp3/id3v23_basic_1.mp3";
- data.testdata = "/mp3/id3v23_basic_1.data";
- g_test_add_data_func ("/tracker-extract/tracker-extract-mp3/id3v23/1", &data, test_extract_mp3_extract_file);
-
- data.filename = "/mp3/id3v23_basic_2.mp3";
- data.testdata = "/mp3/id3v23_basic_2.data";
- g_test_add_data_func ("/tracker-extract/tracker-extract-mp3/id3v23/2", &data, test_extract_mp3_extract_file);
-
- data.filename = "/mp3/id3v23_basic_3.mp3";
- data.testdata = "/mp3/id3v23_basic_3.data";
- g_test_add_data_func ("/tracker-extract/tracker-extract-mp3/id3v23/3", &data, test_extract_mp3_extract_file);
-
- g_test_message ("Testing specific id3v23 tags");
-
- data.filename = "/mp3/id3v23_trck_1.mp3";
- data.testdata = "/mp3/id3v23_trck_1.data";
- g_test_add_data_func ("/tracker-extract/tracker-extract-mp3/id3v23/trck-1", &data, test_extract_mp3_extract_file);
-
- data.filename = "/mp3/id3v23_comm_1.mp3";
- data.testdata = "/mp3/id3v23_comm_1.data";
- g_test_add_data_func ("/tracker-extract/tracker-extract-mp3/id3v23/comm-1", &data, test_extract_mp3_extract_file);
-
- data.filename = "/mp3/id3v23_comm_2.mp3";
- data.testdata = "/mp3/id3v23_comm_2.data";
- g_test_add_data_func ("/tracker-extract/tracker-extract-mp3/id3v23/comm-2", &data, test_extract_mp3_extract_file);
-
- data.filename = "/mp3/id3v23_comm_3.mp3";
- data.testdata = "/mp3/id3v23_comm_3.data";
- g_test_add_data_func ("/tracker-extract/tracker-extract-mp3/id3v23/comm-3", &data, test_extract_mp3_extract_file);
-
- g_test_message ("Testing header/calculated metadata");
-
- data.filename = "/mp3/header_bitrate_mpeg1_1.mp3";
- data.testdata = "/mp3/header_bitrate_mpeg1_1.data";
- g_test_add_data_func ("/tracker-extract/tracker-extract-mp3/header/bitrate-mpeg1-1", &data, test_extract_mp3_extract_file);
-
- data.filename = "/mp3/header_bitrate_mpeg1_2.mp3";
- data.testdata = "/mp3/header_bitrate_mpeg1_2.data";
- g_test_add_data_func ("/tracker-extract/tracker-extract-mp3/header/bitrate-mpeg1-2", &data, test_extract_mp3_extract_file);
-
- data.filename = "/mp3/header_bitrate_mpeg1_3.mp3";
- data.testdata = "/mp3/header_bitrate_mpeg1_3.data";
- g_test_add_data_func ("/tracker-extract/tracker-extract-mp3/header/bitrate-mpeg1-3", &data, test_extract_mp3_extract_file);
-
- data.filename = "/mp3/header_bitrate_mpeg1_4.mp3";
- data.testdata = "/mp3/header_bitrate_mpeg1_4.data";
- g_test_add_data_func ("/tracker-extract/tracker-extract-mp3/header/bitrate-mpeg1-4", &data, test_extract_mp3_extract_file);
-
- data.filename = "/mp3/header_bitrate_mpeg1_5.mp3";
- data.testdata = "/mp3/header_bitrate_mpeg1_5.data";
- g_test_add_data_func ("/tracker-extract/tracker-extract-mp3/header/bitrate-mpeg1-5", &data, test_extract_mp3_extract_file);
-
- data.filename = "/mp3/header_bitrate_mpeg1_6.mp3";
- data.testdata = "/mp3/header_bitrate_mpeg1_6.data";
- g_test_add_data_func ("/tracker-extract/tracker-extract-mp3/header/bitrate-mpeg1-6", &data, test_extract_mp3_extract_file);
-
- data.filename = "/mp3/header_bitrate_mpeg1_7.mp3";
- data.testdata = "/mp3/header_bitrate_mpeg1_7.data";
- g_test_add_data_func ("/tracker-extract/tracker-extract-mp3/header/bitrate-mpeg1-7", &data, test_extract_mp3_extract_file);
-
- data.filename = "/mp3/header_bitrate_mpeg1_8.mp3";
- data.testdata = "/mp3/header_bitrate_mpeg1_8.data";
- g_test_add_data_func ("/tracker-extract/tracker-extract-mp3/header/bitrate-mpeg1-8", &data, test_extract_mp3_extract_file);
-
- data.filename = "/mp3/header_bitrate_mpeg1_9.mp3";
- data.testdata = "/mp3/header_bitrate_mpeg1_9.data";
- g_test_add_data_func ("/tracker-extract/tracker-extract-mp3/header/bitrate-mpeg1-9", &data, test_extract_mp3_extract_file);
-
- data.filename = "/mp3/header_bitrate_mpeg1_10.mp3";
- data.testdata = "/mp3/header_bitrate_mpeg1_10.data";
- g_test_add_data_func ("/tracker-extract/tracker-extract-mp3/header/bitrate-mpeg1-10", &data, test_extract_mp3_extract_file);
- data.filename = "/mp3/header_bitrate_mpeg1_11.mp3";
- data.testdata = "/mp3/header_bitrate_mpeg1_11.data";
- g_test_add_data_func ("/tracker-extract/tracker-extract-mp3/header/bitrate-mpeg1-11", &data, test_extract_mp3_extract_file);
- data.filename = "/mp3/header_bitrate_mpeg1_12.mp3";
- data.testdata = "/mp3/header_bitrate_mpeg1_12.data";
- g_test_add_data_func ("/tracker-extract/tracker-extract-mp3/header/bitrate-mpeg1-12", &data, test_extract_mp3_extract_file);
-
- data.filename = "/mp3/header_bitrate_mpeg1_13.mp3";
- data.testdata = "/mp3/header_bitrate_mpeg1_13.data";
- g_test_add_data_func ("/tracker-extract/tracker-extract-mp3/header/bitrate-mpeg1-13", &data, test_extract_mp3_extract_file);
- data.filename = "/mp3/header_bitrate_mpeg1_14.mp3";
- data.testdata = "/mp3/header_bitrate_mpeg1_14.data";
- g_test_add_data_func ("/tracker-extract/tracker-extract-mp3/header/bitrate-mpeg1-14", &data, test_extract_mp3_extract_file);
- data.filename = "/mp3/header_sampling_mpeg1_1.mp3";
- data.testdata = "/mp3/header_sampling_mpeg1_1.data";
- g_test_add_data_func ("/tracker-extract/tracker-extract-mp3/header/sampling-mpeg1-1", &data, test_extract_mp3_extract_file);
- data.filename = "/mp3/header_sampling_mpeg1_2.mp3";
- data.testdata = "/mp3/header_sampling_mpeg1_2.data";
- g_test_add_data_func ("/tracker-extract/tracker-extract-mp3/header/sampling-mpeg1-2", &data, test_extract_mp3_extract_file);
- data.filename = "/mp3/header_sampling_mpeg1_3.mp3";
- data.testdata = "/mp3/header_sampling_mpeg1_3.data";
- g_test_add_data_func ("/tracker-extract/tracker-extract-mp3/header/sampling-mpeg1-3", &data, test_extract_mp3_extract_file);
- data.filename = "/mp3/header_sampling_mpeg2_1.mp3";
- data.testdata = "/mp3/header_sampling_mpeg2_1.data";
- g_test_add_data_func ("/tracker-extract/tracker-extract-mp3/header/sampling-mpeg2-1", &data, test_extract_mp3_extract_file);
- data.filename = "/mp3/header_sampling_mpeg2_2.mp3";
- data.testdata = "/mp3/header_sampling_mpeg2_2.data";
- g_test_add_data_func ("/tracker-extract/tracker-extract-mp3/header/sampling-mpeg2-2", &data, test_extract_mp3_extract_file);
- data.filename = "/mp3/header_sampling_mpeg2_3.mp3";
- data.testdata = "/mp3/header_sampling_mpeg2_3.data";
- g_test_add_data_func ("/tracker-extract/tracker-extract-mp3/header/sampling-mpeg2-3", &data, test_extract_mp3_extract_file);
- data.filename = "/mp3/header_sampling_mpeg25_1.mp3";
- data.testdata = "/mp3/header_sampling_mpeg25_1.data";
- g_test_add_data_func ("/tracker-extract/tracker-extract-mp3/header/sampling-mpeg25-1", &data, test_extract_mp3_extract_file);
-
- data.filename = "/mp3/header_sampling_mpeg25_2.mp3";
- data.testdata = "/mp3/header_sampling_mpeg25_2.data";
- g_test_add_data_func ("/tracker-extract/tracker-extract-mp3/header/sampling-mpeg25-2", &data, test_extract_mp3_extract_file);
-
- data.filename = "/mp3/header_sampling_mpeg25_3.mp3";
- data.testdata = "/mp3/header_sampling_mpeg25_3.data";
- g_test_add_data_func ("/tracker-extract/tracker-extract-mp3/header/sampling-mpeg25-3", &data, test_extract_mp3_extract_file);
+ data = tracker_test_extract_get_extractor ("audio/mpeg");
+
+ g_test_add_data_func ("/tracker-extract/tracker-extract-mp3/id3v1_basic",
+ data, test_tracker_extract_mp3_id3v1_basic);
+ g_test_add_data_func ("/tracker-extract/tracker-extract-mp3/id3v23_basic",
+ data, test_tracker_extract_mp3_id3v23_basic);
+ g_test_add_data_func ("/tracker-extract/tracker-extract-mp3/id3v23_tags",
+ data, test_tracker_extract_mp3_id3v23_tags);
+ g_test_add_data_func ("/tracker-extract/tracker-extract-mp3/header_bitrate",
+ data, test_tracker_extract_mp3_header_bitrate);
+ g_test_add_data_func ("/tracker-extract/tracker-extract-mp3/header_sampling",
+ data, test_tracker_extract_mp3_header_sampling);
+
+
+ if (g_test_perf()) {
+ g_test_add_data_func ("/tracker-extract/tracker-extract-mp3/performance_cbr",
+ data, performance_tracker_extract_mp3);
+ }
+
#endif
- g_test_message ("Testing metadata ordering (priorities of sources)");
result = g_test_run ();
Added: trunk/tests/tracker-extract/tracker-extract-test-utils.c
==============================================================================
--- (empty file)
+++ trunk/tests/tracker-extract/tracker-extract-test-utils.c Wed Jan 14 19:18:02 2009
@@ -0,0 +1,186 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2009, Nokia (urho konttori nokia com)
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include "tracker-extract-test-utils.h"
+
+TrackerExtractorData *
+tracker_test_extract_get_extractor (const gchar *mime)
+{
+ TrackerExtractorData *data;
+
+ /* Search for exact match first */
+ data = tracker_get_extractor_data ();
+ while (data->mime) {
+ if (strcmp (data->mime, mime) == 0) {
+ return data;
+ }
+ data++;
+ }
+
+ /* Search for generic */
+ data = tracker_get_extractor_data ();
+ while (data->mime) {
+ if (g_pattern_match_simple (data->mime, mime)) {
+ return data;
+ }
+ data++;
+ }
+ return NULL;
+}
+
+TrackerExtractorData *
+search_mime_extractor (const gchar *mime)
+{
+ TrackerExtractorData *data;
+
+ data = tracker_get_extractor_data ();
+
+ while (data->mime) {
+ if (strcmp (data->mime,mime) == 0) {
+ return data;
+ }
+ data++;
+ }
+
+ return NULL;
+}
+
+
+GHashTable *
+parse_testdata_file (const gchar *filename)
+{
+ GHashTable *testdata;
+ GScanner *scanner;
+ GTokenType ttype;
+ GScannerConfig config = {
+ " \t\r\n", /* characters to skip */
+ G_CSET_a_2_z "_" G_CSET_A_2_Z, /* identifier start */
+ G_CSET_a_2_z "_.:" G_CSET_A_2_Z G_CSET_DIGITS,/* identifier cont. */
+ "#\n", /* single line comment */
+ TRUE, /* case_sensitive */
+ TRUE, /* skip multi-line comments */
+ TRUE, /* skip single line comments */
+ FALSE, /* scan multi-line comments */
+ TRUE, /* scan identifiers */
+ TRUE, /* scan 1-char identifiers */
+ FALSE, /* scan NULL identifiers */
+ FALSE, /* scan symbols */
+ FALSE, /* scan binary */
+ FALSE, /* scan octal */
+ TRUE, /* scan float */
+ TRUE, /* scan hex */
+ FALSE, /* scan hex dollar */
+ TRUE, /* scan single quote strings */
+ TRUE, /* scan double quite strings */
+ TRUE, /* numbers to int */
+ FALSE, /* int to float */
+ TRUE, /* identifier to string */
+ TRUE, /* char to token */
+ FALSE, /* symbol to token */
+ FALSE, /* scope 0 fallback */
+ FALSE /* store int64 */
+ };
+ int fd;
+
+ testdata = g_hash_table_new_full (g_str_hash,
+ g_str_equal,
+ g_free,
+ g_free);
+
+ fd = g_open (filename, O_RDONLY);
+
+ g_assert (fd >= 0);
+
+ scanner = g_scanner_new (&config);
+ g_scanner_input_file (scanner, fd);
+ scanner->input_name = filename;
+
+ for (ttype = g_scanner_get_next_token(scanner);
+ ttype != G_TOKEN_EOF;
+ ttype = g_scanner_get_next_token (scanner)) {
+ if (ttype = G_TOKEN_IDENTIFIER) {
+ gchar key[256];
+ strcpy (key, scanner->value.v_identifier);
+
+ ttype = g_scanner_get_next_token(scanner);
+ g_assert (ttype == G_TOKEN_EQUAL_SIGN);
+
+ ttype = g_scanner_get_next_token(scanner);
+
+ switch (ttype) {
+ case G_TOKEN_STRING:
+ g_hash_table_insert (testdata,
+ g_strdup(key),
+ g_strdup(scanner->value.v_string));
+ break;
+
+ default:
+ g_assert_not_reached();
+
+ }
+
+ }
+ }
+
+ g_scanner_destroy (scanner);
+ close (fd);
+
+ return testdata;
+}
+
+
+static void
+dump_metadataitem (gpointer key,
+ gpointer value,
+ gpointer user_data)
+{
+ gchar *value_utf8;
+
+ g_assert (key != NULL);
+ g_assert (value != NULL);
+
+ value_utf8 = g_locale_to_utf8 (value, -1, NULL, NULL, NULL);
+
+ if (value_utf8) {
+ value_utf8 = g_strstrip (value_utf8);
+ g_print ("%s=%s;\n", (gchar*) key, value_utf8);
+ g_free (value_utf8);
+ }
+}
+
+void
+dump_metadata (GHashTable *metadata)
+{
+ g_assert (metadata != NULL);
+ g_hash_table_foreach (metadata, dump_metadataitem, NULL);
+}
+
+void
+check_metadata (GHashTable *metadata, gchar *key, gchar *value)
+{
+ gchar *cvalue;
+ g_assert (metadata != NULL);
+ g_assert (key != NULL);
+ g_assert (value != NULL);
+
+ cvalue = g_hash_table_lookup (metadata, key);
+ g_assert (cvalue != NULL);
+ g_assert_cmpstr (cvalue, ==, value);
+}
Added: trunk/tests/tracker-extract/tracker-extract-test-utils.h
==============================================================================
--- (empty file)
+++ trunk/tests/tracker-extract/tracker-extract-test-utils.h Wed Jan 14 19:18:02 2009
@@ -0,0 +1,39 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2009, Nokia (urho konttori nokia com)
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef __TRACKER_EXTRACT_TEST_UTILS_H__
+#define __TRACKER_EXTRACT_TEST_UTILS_H__
+
+#include <string.h>
+#include <fcntl.h>
+#include <stdio.h>
+
+#include <glib.h>
+
+#include <tracker-extract/tracker-extract.h>
+
+TrackerExtractorData * tracker_test_extract_get_extractor (const gchar *mime);
+GHashTable * parse_testdata_file (const gchar *filename);
+void dump_metadata (GHashTable *metadata);
+void check_metadata (GHashTable *metadata,
+ gchar *key,
+ gchar *value);
+
+#endif
Added: trunk/tests/tracker-extract/tracker-extract-testsuite-generic.c
==============================================================================
--- (empty file)
+++ trunk/tests/tracker-extract/tracker-extract-testsuite-generic.c Wed Jan 14 19:18:02 2009
@@ -0,0 +1,45 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2008, Nokia (urho konttori nokia com)
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include "tracker-extract-testsuite-generic.h"
+
+#include <glib.h>
+
+#include "tracker-extract-test-utils.h"
+
+void
+test_tracker_extract_check_extractor_data (void)
+{
+ TrackerExtractorData *data;
+ guint extractors = 0;
+
+ data = tracker_get_extractor_data();
+
+ while (data->mime) {
+ if (data->extractor == NULL) {
+ g_error ("Extractor for mime '%s' declared NULL", data->mime);
+ }
+
+ extractors++;
+ data++;
+ }
+
+ g_assert (extractors > 1);
+}
Added: trunk/tests/tracker-extract/tracker-extract-testsuite-generic.h
==============================================================================
--- (empty file)
+++ trunk/tests/tracker-extract/tracker-extract-testsuite-generic.h Wed Jan 14 19:18:02 2009
@@ -0,0 +1,28 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2009, Nokia (urho konttori nokia com)
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef __TRACKER_EXTRACT_TESTSUITE_GENERIC_H__
+#define __TRACKER_EXTRACT_TESTSUITE_GENERIC_H__
+
+#include <tracker-extract/tracker-extract.h>
+
+void test_tracker_extract_check_extractor_data ();
+
+#endif
Added: trunk/tests/tracker-extract/tracker-extract-testsuite-mp3.c
==============================================================================
--- (empty file)
+++ trunk/tests/tracker-extract/tracker-extract-testsuite-mp3.c Wed Jan 14 19:18:02 2009
@@ -0,0 +1,255 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2008, Nokia (urho konttori nokia com)
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include "tracker-extract-testsuite-mp3.h"
+
+#include <glib.h>
+
+#include "tracker-extract-test-utils.h"
+
+typedef struct {
+ gchar *filename;
+ gchar *testdata;
+} ExtractData;
+
+static const ExtractData data_id3v1_basic[] = {
+ { "/mp3/id3v1_basic_1.mp3", "/mp3/id3v1_basic_1.data" },
+ { "/mp3/id3v1_basic_2.mp3", "/mp3/id3v1_basic_2.data" },
+ { "/mp3/id3v1_basic_3.mp3", "/mp3/id3v1_basic_3.data" },
+ { NULL, NULL }
+};
+
+static const ExtractData data_id3v23_basic[] = {
+ { "/mp3/id3v23_basic_1.mp3", "/mp3/id3v23_basic_1.data" },
+ { "/mp3/id3v23_basic_2.mp3", "/mp3/id3v23_basic_2.data" },
+ { "/mp3/id3v23_basic_3.mp3", "/mp3/id3v23_basic_3.data" },
+ { NULL, NULL }
+};
+
+static const ExtractData data_id3v23_tags[] = {
+ { "/mp3/id3v23_trck_1.mp3", "/mp3/id3v23_trck_1.data" },
+ { "/mp3/id3v23_comm_1.mp3", "/mp3/id3v23_comm_1.data" },
+ { "/mp3/id3v23_comm_2.mp3", "/mp3/id3v23_comm_2.data" },
+ { "/mp3/id3v23_comm_3.mp3", "/mp3/id3v23_comm_3.data" },
+ { "/mp3/id3v23_tags_1.mp3", "/mp3/id3v23_tags_1.data" },
+ { "/mp3/id3v23_tags_2.mp3", "/mp3/id3v23_tags_2.data" },
+ { NULL, NULL }
+};
+
+static const ExtractData data_header_bitrate[] = {
+ { "/mp3/header_bitrate_mpeg1_1.mp3", "/mp3/header_bitrate_mpeg1_1.data" },
+ { "/mp3/header_bitrate_mpeg1_2.mp3", "/mp3/header_bitrate_mpeg1_2.data" },
+ { "/mp3/header_bitrate_mpeg1_3.mp3", "/mp3/header_bitrate_mpeg1_3.data" },
+ { "/mp3/header_bitrate_mpeg1_4.mp3", "/mp3/header_bitrate_mpeg1_4.data" },
+ { "/mp3/header_bitrate_mpeg1_5.mp3", "/mp3/header_bitrate_mpeg1_5.data" },
+ { "/mp3/header_bitrate_mpeg1_6.mp3", "/mp3/header_bitrate_mpeg1_6.data" },
+ { "/mp3/header_bitrate_mpeg1_7.mp3", "/mp3/header_bitrate_mpeg1_7.data" },
+ { "/mp3/header_bitrate_mpeg1_8.mp3", "/mp3/header_bitrate_mpeg1_8.data" },
+ { "/mp3/header_bitrate_mpeg1_9.mp3", "/mp3/header_bitrate_mpeg1_9.data" },
+ { "/mp3/header_bitrate_mpeg1_10.mp3","/mp3/header_bitrate_mpeg1_10.data"},
+ { "/mp3/header_bitrate_mpeg1_11.mp3","/mp3/header_bitrate_mpeg1_11.data"},
+ { "/mp3/header_bitrate_mpeg1_12.mp3","/mp3/header_bitrate_mpeg1_12.data"},
+ { "/mp3/header_bitrate_mpeg1_13.mp3","/mp3/header_bitrate_mpeg1_13.data"},
+ { "/mp3/header_bitrate_mpeg1_14.mp3","/mp3/header_bitrate_mpeg1_14.data"},
+ { NULL, NULL }
+};
+
+static const ExtractData data_header_bitrate_vbr[] = {
+ { "/mp3/header_bitrate_vbr_mpeg1_1.mp3", "/mp3/header_bitrate_vbr_mpeg1_1.data" },
+ { "/mp3/header_bitrate_vbr_mpeg1_1.mp3", "/mp3/header_bitrate_vbr_mpeg1_1.data" },
+ { "/mp3/header_bitrate_vbr_mpeg1_1.mp3", "/mp3/header_bitrate_vbr_mpeg1_1.data" },
+ { NULL, NULL }
+};
+
+
+static const ExtractData data_header_sampling[] = {
+ { "/mp3/header_sampling_mpeg1_1.mp3", "/mp3/header_sampling_mpeg1_1.data" },
+ { "/mp3/header_sampling_mpeg1_2.mp3", "/mp3/header_sampling_mpeg1_2.data" },
+ { "/mp3/header_sampling_mpeg1_3.mp3", "/mp3/header_sampling_mpeg1_3.data" },
+ { "/mp3/header_sampling_mpeg2_1.mp3", "/mp3/header_sampling_mpeg2_1.data" },
+ { "/mp3/header_sampling_mpeg2_2.mp3", "/mp3/header_sampling_mpeg2_2.data" },
+ { "/mp3/header_sampling_mpeg2_3.mp3", "/mp3/header_sampling_mpeg2_3.data" },
+ { "/mp3/header_sampling_mpeg25_1.mp3", "/mp3/header_sampling_mpeg25_1.data" },
+ { "/mp3/header_sampling_mpeg25_2.mp3", "/mp3/header_sampling_mpeg25_2.data" },
+ { "/mp3/header_sampling_mpeg25_3.mp3", "/mp3/header_sampling_mpeg25_3.data" },
+ { NULL, NULL }
+};
+
+void
+extract_file (const TrackerExtractorData *data, const gchar *file, const gchar *testdatafile)
+{
+ GHashTable *metadata;
+ GHashTable *testdata;
+
+ gchar *filename;
+ gchar *testdata_filename;
+
+ GHashTableIter iter;
+ gpointer key, value;
+
+ g_assert (data != NULL);
+ g_assert (file != NULL);
+ g_assert (testdatafile != NULL);
+
+ filename = g_strconcat (TEST_DATA_DIR, file, NULL);
+ testdata_filename = g_strconcat (TEST_DATA_DIR, testdatafile, NULL);
+
+ metadata = g_hash_table_new_full (g_str_hash,
+ g_str_equal,
+ g_free,
+ g_free);
+
+ (*data->extractor) (filename, metadata);
+
+ testdata = parse_testdata_file (testdata_filename);
+
+ g_hash_table_iter_init (&iter, testdata);
+
+/* dump_metadata(metadata); */
+
+ while (g_hash_table_iter_next (&iter, &key, &value)) {
+ check_metadata (metadata, (gchar *)key, (gchar *)value);
+ }
+
+ g_hash_table_destroy (metadata);
+ g_hash_table_destroy (testdata);
+}
+
+void
+performance_extract_files (const TrackerExtractorData *data, const gchar *filematch, guint filecount)
+{
+ double perftime;
+ guint i;
+
+ g_assert (data != NULL);
+ g_assert (filematch != NULL);
+ g_assert (filecount >0 );
+
+ g_test_timer_start();
+
+ for (i=1;i<=filecount;i++) {
+ char filename[256];
+ GHashTable *metadata;
+
+ metadata = g_hash_table_new_full (g_str_hash,
+ g_str_equal,
+ g_free,
+ g_free);
+
+ if (sprintf (filename, "%s%s%d.mp3",TEST_DATA_DIR,filematch,i) < 0) {
+ g_assert_not_reached();
+ }
+
+ (*data->extractor) (filename, metadata);
+
+ g_assert (g_hash_table_size (metadata) > 0);
+
+ g_hash_table_destroy (metadata);
+ }
+
+ perftime = g_test_timer_elapsed();
+
+ g_debug ("Time was: %f", perftime);
+
+ g_test_minimized_result (perftime, "Time of the mp3 performance tests");
+}
+
+
+void test_tracker_extract_mp3_id3v1_basic(gconstpointer data)
+{
+ const TrackerExtractorData *extractor = data;
+ guint i;
+
+ for (i=0; data_id3v1_basic[i].filename; i++) {
+ extract_file (data,
+ data_id3v1_basic[i].filename,
+ data_id3v1_basic[i].testdata);
+ }
+}
+
+void test_tracker_extract_mp3_id3v23_basic(gconstpointer data)
+{
+ const TrackerExtractorData *extractor = data;
+ guint i;
+
+ for (i=0; data_id3v23_basic[i].filename; i++) {
+ extract_file (data,
+ data_id3v23_basic[i].filename,
+ data_id3v23_basic[i].testdata);
+ }
+}
+
+void test_tracker_extract_mp3_id3v23_tags(gconstpointer data)
+{
+ const TrackerExtractorData *extractor = data;
+ guint i;
+
+ for (i=0; data_id3v23_tags[i].filename; i++) {
+ extract_file (data,
+ data_id3v23_tags[i].filename,
+ data_id3v23_tags[i].testdata);
+ }
+}
+
+void test_tracker_extract_mp3_header_bitrate(gconstpointer data)
+{
+ const TrackerExtractorData *extractor = data;
+ guint i;
+
+ for (i=0; data_header_bitrate[i].filename; i++) {
+ extract_file (data,
+ data_header_bitrate[i].filename,
+ data_header_bitrate[i].testdata);
+ }
+}
+
+void test_tracker_extract_mp3_header_bitrate_vbr(gconstpointer data)
+{
+ const TrackerExtractorData *extractor = data;
+ guint i;
+
+ for (i=0; data_header_bitrate_vbr[i].filename; i++) {
+ extract_file (data,
+ data_header_bitrate_vbr[i].filename,
+ data_header_bitrate_vbr[i].testdata);
+ }
+}
+
+void test_tracker_extract_mp3_header_sampling(gconstpointer data)
+{
+ const TrackerExtractorData *extractor = data;
+ guint i;
+
+ for (i=0; data_header_sampling[i].filename; i++) {
+ extract_file (data,
+ data_header_sampling[i].filename,
+ data_header_sampling[i].testdata);
+ }
+}
+
+
+
+void performance_tracker_extract_mp3(gconstpointer data)
+{
+ const TrackerExtractorData *extractor = data;
+
+ performance_extract_files (data, "/mp3/perf_cbr_id3v1_", 1000);
+}
+
Added: trunk/tests/tracker-extract/tracker-extract-testsuite-mp3.h
==============================================================================
--- (empty file)
+++ trunk/tests/tracker-extract/tracker-extract-testsuite-mp3.h Wed Jan 14 19:18:02 2009
@@ -0,0 +1,35 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2009, Nokia (urho konttori nokia com)
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef __TRACKER_EXTRACT_TESTSUITE_MP3_H__
+#define __TRACKER_EXTRACT_TESTSUITE_MP3_H__
+
+#include <tracker-extract/tracker-extract.h>
+
+void test_tracker_extract_mp3_id3v1_basic (gconstpointer data);
+void test_tracker_extract_mp3_id3v23_basic (gconstpointer data);
+void test_tracker_extract_mp3_id3v23_tags (gconstpointer data);
+void test_tracker_extract_mp3_header_bitrate (gconstpointer data);
+void test_tracker_extract_mp3_header_bitrate_vbr(gconstpointer data);
+void test_tracker_extract_mp3_header_sampling (gconstpointer data);
+
+void performance_tracker_extract_mp3 (gconstpointer data);
+
+#endif
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]