matroskamux: write subtitle codec ID and data at start when known
authorVincent Penquerc'h <vincent.penquerch@collabora.co.uk>
Thu, 9 Jan 2014 18:25:04 +0000 (18:25 +0000)
committerVincent Penquerc'h <vincent.penquerch@collabora.co.uk>
Thu, 9 Jan 2014 18:29:32 +0000 (18:29 +0000)
This avoids issues with writing dummy data first, then having
to come back and write correct data later. Doing so prevents
the muxed stream from being actually streamable.

https://bugzilla.gnome.org/show_bug.cgi?id=712134

gst/matroska/matroska-mux.c

index b79edb1..e594fbc 100644 (file)
@@ -2378,7 +2378,13 @@ gst_matroska_mux_track_header (GstMatroskaMux * mux,
     case GST_MATROSKA_TRACK_TYPE_SUBTITLE:{
       gpointer buf;
 
+      /* If codec_id and codec data are already known, we can write
+         them now, as for audio/video */
+      if (context->codec_id && context->codec_priv)
+        break;
+
       context->pos = ebml->pos;
+
       /* CodecID is mandatory ... */
       gst_ebml_write_ascii (ebml, GST_MATROSKA_ID_CODECID, "S_SUB_UNKNOWN");
       /* reserve space */