[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    kdesupport/taglib/ogg/flac
From:       Allan Sandfeld Jensen <kde () carewolf ! com>
Date:       2005-03-18 0:02:32
Message-ID: 20050318000232.44AE916F45 () office ! kde ! org
[Download RAW message or body]

CVS commit by carewolf: 

Support the new OggFLAC 1.0 standard from FLAC 1.1.2


  M +26 -6     oggflacfile.cpp   1.5


--- kdesupport/taglib/ogg/flac/oggflacfile.cpp  #1.4:1.5
@@ -1,4 +1,4 @@
 /***************************************************************************
-    copyright            : (C) 2004 by Allan Sandfeld Jensen
+    copyright            : (C) 2004-2005 by Allan Sandfeld Jensen
     email                : kde@carewolf.org
  ***************************************************************************/
@@ -179,14 +179,31 @@ void Ogg::FLAC::File::scan()
     return;
 
-  int ipacket = 1;
+  int ipacket = 0;
   long overhead = 0;
 
-  ByteVector metadataHeader = packet(ipacket);
+  ByteVector metadataHeader = packet(ipacket++);
+  if(metadataHeader.isNull())
+    return;
+
+  ByteVector header;
+
+  if (!metadataHeader.startsWith("fLaC"))  {
+    // FLAC 1.1.2+
+    if (metadataHeader.startsWith("\x7fFLAC")) return;
+
+    if (metadataHeader[5] != 1) return; // not version 1
+
+    metadataHeader = metadataHeader.mid(13);
+  }
+  else {
+    // FLAC 1.1.0 & 1.1.1
+    metadataHeader = packet(ipacket++);
 
   if(metadataHeader.isNull())
     return;
 
-  ByteVector header = metadataHeader.mid(0,4);
+  }
 
+  header = metadataHeader.mid(0,4);
   // Header format (from spec):
   // <1> Last-metadata-block flag
@@ -216,5 +233,8 @@ void Ogg::FLAC::File::scan()
 
   while(!lastBlock) {
-    metadataHeader = packet(++ipacket);
+    metadataHeader = packet(ipacket++);
+
+    if(metadataHeader.isNull())
+      return;
 
     header = metadataHeader.mid(0, 4);


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic