matroska: handle matroska and webm doctype versions equally
authorPhilip Jägenstedt <philipj@opera.com>
Mon, 17 May 2010 03:27:44 +0000 (05:27 +0200)
committerSebastian Dröge <sebastian.droege@collabora.co.uk>
Wed, 19 May 2010 18:38:16 +0000 (20:38 +0200)
The original plan was to let WebM v1 be the same as Matroska v2 (with
extra constraints), but for simplicity it was decided to handle the
versions equally, such that e.g. SimpleBlock is only allowed in WebM v2.

gst/matroska/matroska-demux.c
gst/matroska/matroska-mux.c

index 8478893f31a5e45417a4fcc0ce9df38a5c55cb23..a311b4afdc8686b6e4578b9a5715905ae949fd96 100644 (file)
@@ -2581,15 +2581,13 @@ gst_matroska_demux_parse_header (GstMatroskaDemux * demux)
     doctype_class = g_type_class_ref (GST_TYPE_MATROSKA_DOCTYPE);
     doctype_value = g_enum_get_value_by_nick (doctype_class, doctype);
     if (doctype_value) {
-      guint max_version =
-          doctype_value->value == GST_MATROSKA_DOCTYPE_MATROSKA ? 2 : 1;
-      if (version <= max_version) {
+      if (version <= 2) {
         GST_INFO_OBJECT (demux, "Input is %s version %d", doctype, version);
         ret = GST_FLOW_OK;
       } else {
         GST_ELEMENT_ERROR (demux, STREAM, DEMUX, (NULL),
-            ("Demuxer version (%d) is too old to read %s version %d",
-                max_version, doctype, version));
+            ("Demuxer version (2) is too old to read %s version %d",
+                doctype, version));
       }
     } else {
       GST_ELEMENT_ERROR (demux, STREAM, WRONG_TYPE, (NULL),
index 6f9dc545f16f2c29d9c168327da9d51e14b5cadf..2f32cf6b58b8a0339f463359a8fdb3a283a4e6df 100644 (file)
@@ -2600,7 +2600,7 @@ gst_matroska_mux_write_data (GstMatroskaMux * mux, GstMatroskaPad * collect_pad)
     }
   }
 
-  /* write the block, for Matroska v2 and WebM use SimpleBlock if possible
+  /* write the block, for doctype v2 use SimpleBlock if possible
    * one slice (*breath*).
    * FIXME: Need to do correct lacing! */
   relative_timestamp64 = GST_BUFFER_TIMESTAMP (buf) - mux->cluster_time;
@@ -2612,10 +2612,7 @@ gst_matroska_mux_write_data (GstMatroskaMux * mux, GstMatroskaPad * collect_pad)
     relative_timestamp64 -= mux->time_scale / 2;
   }
   relative_timestamp = relative_timestamp64 / (gint64) mux->time_scale;
-  if (((mux->doctype == GST_MATROSKA_DOCTYPE_MATROSKA
-              && mux->doctype_version > 1)
-          || mux->doctype == GST_MATROSKA_DOCTYPE_WEBM)
-      && !write_duration) {
+  if (mux->doctype_version > 1 && !write_duration) {
     int flags =
         GST_BUFFER_FLAG_IS_SET (buf, GST_BUFFER_FLAG_DELTA_UNIT) ? 0 : 0x80;