[cvs-annodex] commit (/annodex): liboggz/trunk/ChangeLog liboggz/trunk/src/liboggz/oggz_auto.c

conrad nobody at lists.annodex.net
Fri Jan 21 16:42:21 EST 2005


Update of /annodex (new revision 690)

Modified files:
   liboggz/trunk/ChangeLog
   liboggz/trunk/src/liboggz/oggz_auto.c

Log Message:
add flac header parsing to oggz_auto (patch from Tobias Gehrig)


Modified: liboggz/trunk/ChangeLog
===================================================================
--- liboggz/trunk/ChangeLog	2005-01-21 04:27:28 UTC (rev 689)
+++ liboggz/trunk/ChangeLog	2005-01-21 05:42:20 UTC (rev 690)
@@ -1,3 +1,7 @@
+Fri Jan 21 17:38:33 EST 2005 Conrad Parker <conrad at annodex.net>
+
+	* added FLAC header parsing from Tobias Gehrig
+
 Fri May 28 11:08:34 EST 2004 Conrad Parker <conrad at annodex.net>
 
 	* removed use of floating point in liboggz

Modified: liboggz/trunk/src/liboggz/oggz_auto.c
===================================================================
--- liboggz/trunk/src/liboggz/oggz_auto.c	2005-01-21 04:27:28 UTC (rev 689)
+++ liboggz/trunk/src/liboggz/oggz_auto.c	2005-01-21 05:42:20 UTC (rev 690)
@@ -225,12 +225,35 @@
   return 1;
 }
 
+static int
+auto_flac (OGGZ * oggz, ogg_packet * op, long serialno, void * user_data)
+{
+  unsigned char * header = op->packet;
+  ogg_int64_t granule_rate = 0;
+
+  if (op->bytes < 51) return 0;
+
+  if (header[0] != 0x7f) return 0;
+  if (strncmp ((char *)&header[1], "FLAC", 4)) return 0;
+  if (!op->b_o_s) return 0;
+
+  granule_rate = (ogg_int64_t) (header[27] << 12) | (header[28] << 4) | ((header[29] >> 4)&0xf);
+#ifdef DEBUG
+  printf ("Got flac rate %d\n", (int)granule_rate);
+#endif
+
+  oggz_set_metric_linear (oggz, serialno, granule_rate, OGGZ_AUTO_MULT);
+
+  return 1;
+}
+
 static const OggzReadPacket auto_readers[] = {
   auto_speex,
   auto_vorbis,
   auto_theora,
   auto_annodex,
   auto_anxdata,
+  auto_flac,
   NULL
 };
 


-- 
conrad



More information about the cvs-annodex mailing list