ext/annodex/gstcmmldec.c: Seeking back in a file containing a CMML stream errors...
authorAlessandro Decina <alessandro@nnva.org>
Mon, 4 Sep 2006 09:34:25 +0000 (09:34 +0000)
committerWim Taymans <wim.taymans@gmail.com>
Mon, 4 Sep 2006 09:34:25 +0000 (09:34 +0000)
Original commit message from CVS:
Patch by: Alessandro Decina <alessandro at nnva dot org>
* ext/annodex/gstcmmldec.c: (gst_cmml_dec_chain):
Seeking back in a file containing a CMML stream errors out if the seek
goes back up to the CMML headers. This is because after the seek the xml
processing instruction <?xml ...?> is submitted to the xml parser again,
which results in an error. The attached patch fixes the problem.
Fixes #353908.
* ext/annodex/gstcmmlenc.h:
Fix authors name.

ChangeLog
ext/annodex/gstcmmldec.c
ext/annodex/gstcmmlenc.h

index 2ebd0f9..debc681 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,18 @@
+2006-09-04  Wim Taymans  <wim@fluendo.com>
+
+       Patch by: Alessandro Decina <alessandro at nnva dot org>
+
+       * ext/annodex/gstcmmldec.c: (gst_cmml_dec_chain):
+       Seeking back in a file containing a CMML stream errors out if the seek
+       goes back up to the CMML headers. This is because after the seek the xml
+       processing instruction <?xml ...?> is submitted to the xml parser again, 
+       which results in an error. The attached patch fixes the problem. 
+       Fixes #353908.
+
+       * ext/annodex/gstcmmlenc.h:
+       Fix authors name.
+
+
 2006-08-28  Andy Wingo  <wingo@pobox.com>
 
        * ext/raw1394/gstdv1394src.c (gst_dv1394src_from_raw1394handle):
index b388488..75038c6 100644 (file)
@@ -391,10 +391,15 @@ gst_cmml_dec_chain (GstPad * pad, GstBuffer * buffer)
   /* handle the packet. the handler will set dec->flow_return */
   switch (packet) {
     case GST_CMML_PACKET_IDENT_HEADER:
-      gst_cmml_dec_parse_ident_header (dec, buffer);
+      if (dec->sent_root == FALSE)
+        /* don't parse the ident again in case of seeking to the beginning */
+        gst_cmml_dec_parse_ident_header (dec, buffer);
       break;
     case GST_CMML_PACKET_FIRST_HEADER:
-      gst_cmml_dec_parse_first_header (dec, buffer);
+      if (dec->sent_root == FALSE)
+        /* don't parse the xml preamble if it has already been parsed because it
+         * would error out, so seeking to the beginning would fail */
+        gst_cmml_dec_parse_first_header (dec, buffer);
       break;
     case GST_CMML_PACKET_SECOND_HEADER:
     case GST_CMML_PACKET_CLIP:
index d8e07ed..1c03742 100644 (file)
@@ -3,7 +3,7 @@
  * Copyright (C) 2005 Alessandro Decina
  * 
  * Authors:
- *   Alessandro Encina <alessandro@nnva.org>
+ *   Alessandro Decina <alessandro@nnva.org>
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Library General Public