Patch by Tahseen to ignore CMML or other non-Speex logical streams.
authorjm <jm@0101bb08-14d6-0310-b084-bc0e0c8e3800>
Thu, 17 Aug 2006 12:39:48 +0000 (12:39 +0000)
committerjm <jm@0101bb08-14d6-0310-b084-bc0e0c8e3800>
Thu, 17 Aug 2006 12:39:48 +0000 (12:39 +0000)
git-svn-id: http://svn.xiph.org/trunk/speex@11790 0101bb08-14d6-0310-b084-bc0e0c8e3800

src/speexdec.c

index 6b24730..36893a2 100644 (file)
@@ -462,7 +462,7 @@ int main(int argc, char **argv)
    int extra_headers;
    int wav_format=0;
    int lookahead;
-   int skeleton_serialno = -1;
+   int speex_serialno = -1;
 
    enh_enabled = 1;
 
@@ -605,8 +605,8 @@ int main(int argc, char **argv)
             stream_init = 1;
          }
         if (ogg_page_serialno(&og) != os.serialno) {
-           /* so that both skeleton & speex pages are read. */
-           os.serialno = ogg_page_serialno(&og);
+           /* so all streams are read. */
+           ogg_stream_reset_serialno(&os, ogg_page_serialno(&og));
         }
          /*Add page to the bitstream*/
          ogg_stream_pagein(&os, &og);
@@ -628,13 +628,13 @@ int main(int argc, char **argv)
          last_granule = page_granule;
          /*Extract all available packets*/
          packet_no=0;
-         while (!eos && ogg_stream_packetout(&os, &op)==1)
+         while (!eos && ogg_stream_packetout(&os, &op) == 1)
          {
-           if (!memcmp(op.packet, "fishead", 7) || !memcmp(op.packet, "fisbone", 7)) {
-              /* skipping the skeleotn packets, also saving the skeleton stream serial number. */
-              skeleton_serialno = os.serialno;
-              break;
+           if (!memcmp(op.packet, "Speex", 5)) {
+              speex_serialno = os.serialno;
            }
+           if (speex_serialno == -1 || os.serialno != speex_serialno)
+              break;
             /*If first packet, process as Speex header*/
             if (packet_count==0)
             {
@@ -660,7 +660,7 @@ int main(int argc, char **argv)
                   lost=1;
 
                /*End of stream condition*/
-               if (op.e_o_s && os.serialno != skeleton_serialno) /* don't set eos for skeleton e_o_s */
+               if (op.e_o_s && os.serialno == speex_serialno) /* don't care for anything except speex eos */
                   eos=1;
               
                /*Copy Ogg packet to Speex bitstream*/