tracker r2732 - in trunk: . src/tracker-extract
- From: mottela svn gnome org
- To: svn-commits-list gnome org
- Subject: tracker r2732 - in trunk: . src/tracker-extract
- Date: Thu, 18 Dec 2008 14:38:00 +0000 (UTC)
Author: mottela
Date: Thu Dec 18 14:37:59 2008
New Revision: 2732
URL: http://svn.gnome.org/viewvc/tracker?rev=2732&view=rev
Log:
Some optimizations to reading mp3 frames
Modified:
trunk/ChangeLog
trunk/src/tracker-extract/tracker-extract-mp3.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 Thu Dec 18 14:37:59 2008
@@ -375,66 +375,80 @@
return;
};
+ switch (header & mpeg_ver_mask) {
+ case 0x1000:
+ mpeg_ver = MPEG_ERR;
+ break;
+ case 0x800:
+ g_hash_table_insert (metadata,
+ g_strdup ("Audio:Codec"),
+ g_strdup ("MPEG"));
+ g_hash_table_insert (metadata,
+ g_strdup ("Audio:CodecVersion"),
+ g_strdup ("2"));
+ mpeg_ver = MPEG_V2;
+ break;
+ case 0x1800:
+ g_hash_table_insert (metadata,
+ g_strdup ("Audio:Codec"),
+ g_strdup ("MPEG"));
+ g_hash_table_insert (metadata,
+ g_strdup ("Audio:CodecVersion"),
+ g_strdup ("1"));
+ mpeg_ver = MPEG_V1;
+ break;
+ case 0:
+ g_hash_table_insert (metadata,
+ g_strdup ("Audio:Codec"),
+ g_strdup ("MPEG"));
+ g_hash_table_insert (metadata,
+ g_strdup ("Audio:CodecVersion"),
+ g_strdup ("2.5"));
+ mpeg_ver = MPEG_V25;
+ break;
+ }
+
+ switch (header&mpeg_layer_mask) {
+ case 0x400:
+ layer_ver = LAYER_2;
+ break;
+ case 0x200:
+ layer_ver = LAYER_3;
+ break;
+ case 0x600:
+ layer_ver = LAYER_1;
+ break;
+ case 0:
+ layer_ver = LAYER_ERR;
+ }
+
+ if (!layer_ver || !mpeg_ver) {
+ /* Unknown mpeg type */
+ return;
+ }
+
+ if (mpeg_ver<3) {
+ idx_num = (mpeg_ver - 1) * 3 + layer_ver - 1;
+ } else {
+ idx_num = 2 + layer_ver;
+ }
+
+ if ((header & ch_mask) == ch_mask) {
+ ch = 1;
+ g_hash_table_insert (metadata,
+ g_strdup ("Audio:Channels"),
+ g_strdup ("1"));
+ } else {
+ ch=2; /*stereo non stereo select*/
+ g_hash_table_insert (metadata,
+ g_strdup ("Audio:Channels"),
+ g_strdup ("2"));
+ }
+
+ /* We assume mpeg version, layer and channels are constant in frames */
+
do {
frames++;
- switch (header & mpeg_ver_mask) {
- case 0x1000:
- mpeg_ver = MPEG_ERR;
- break;
- case 0x800:
- g_hash_table_insert (metadata,
- g_strdup ("Audio:Codec"),
- g_strdup ("MPEG"));
- g_hash_table_insert (metadata,
- g_strdup ("Audio:CodecVersion"),
- g_strdup ("2"));
- mpeg_ver = MPEG_V2;
- break;
- case 0x1800:
- g_hash_table_insert (metadata,
- g_strdup ("Audio:Codec"),
- g_strdup ("MPEG"));
- g_hash_table_insert (metadata,
- g_strdup ("Audio:CodecVersion"),
- g_strdup ("1"));
- mpeg_ver = MPEG_V1;
- break;
- case 0:
- g_hash_table_insert (metadata,
- g_strdup ("Audio:Codec"),
- g_strdup ("MPEG"));
- g_hash_table_insert (metadata,
- g_strdup ("Audio:CodecVersion"),
- g_strdup ("2.5"));
- mpeg_ver = MPEG_V25;
- break;
- }
-
- switch (header&mpeg_layer_mask) {
- case 0x400:
- layer_ver = LAYER_2;
- break;
- case 0x200:
- layer_ver = LAYER_3;
- break;
- case 0x600:
- layer_ver = LAYER_1;
- break;
- case 0:
- layer_ver = LAYER_ERR;
- }
-
- if (!layer_ver || !mpeg_ver) {
- /* Unknown mpeg type */
- return;
- }
-
- if (mpeg_ver<3) {
- idx_num = (mpeg_ver - 1) * 3 + layer_ver - 1;
- } else {
- idx_num = 2 + layer_ver;
- }
-
bitrate = 1000 * bitrate_table[(header & bitrate_mask) >> 20][idx_num];
if (bitrate < 0) {
@@ -449,18 +463,6 @@
break;
}
- if ((header & ch_mask) == ch_mask) {
- ch = 1;
- g_hash_table_insert (metadata,
- g_strdup ("Audio:Channels"),
- g_strdup ("1"));
- } else {
- ch=2; /*stereo non stereo select*/
- g_hash_table_insert (metadata,
- g_strdup ("Audio:Channels"),
- g_strdup ("2"));
- }
-
frame_size = 144 * bitrate / (sample_rate ? sample_rate : 1) + ((header & pad_mask) >> 17);
avg_bps += bitrate / 1000;
@@ -510,6 +512,7 @@
g_hash_table_insert (metadata,
g_strdup ("Audio:Bitrate"),
g_strdup_printf ("%d", avg_bps));
+
}
static void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]