summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlessandro Decina <alessandro@nnva.org>2006-09-04 09:34:25 +0000
committerWim Taymans <wim.taymans@gmail.com>2006-09-04 09:34:25 +0000
commitfc559fff48fc72e04aca551519d5bf8dfef8d877 (patch)
treea5754b29cbe5a14e3ccb0e5c9f296e48c13950ad
parent7e97d570ae56158a8c6e24e4a38f640380fa6042 (diff)
ext/annodex/gstcmmldec.c: Seeking back in a file containing a CMML stream errors out if the seek goes back up to the ...
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.
-rw-r--r--ChangeLog15
-rw-r--r--ext/annodex/gstcmmldec.c9
-rw-r--r--ext/annodex/gstcmmlenc.h2
3 files changed, 23 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 2ebd0f94..debc6818 100644
--- 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):
diff --git a/ext/annodex/gstcmmldec.c b/ext/annodex/gstcmmldec.c
index b3884880..75038c61 100644
--- a/ext/annodex/gstcmmldec.c
+++ b/ext/annodex/gstcmmldec.c
@@ -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:
diff --git a/ext/annodex/gstcmmlenc.h b/ext/annodex/gstcmmlenc.h
index d8e07ed2..1c037421 100644
--- a/ext/annodex/gstcmmlenc.h
+++ b/ext/annodex/gstcmmlenc.h
@@ -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