schroenc: set right OFFSET and OFFSET_END on header buffers to make oggmux happy
authorArek Korbik <arkadini@gmail.com>
Tue, 25 Aug 2009 23:26:42 +0000 (00:26 +0100)
committerTim-Philipp Müller <tim.muller@collabora.co.uk>
Tue, 25 Aug 2009 23:26:42 +0000 (00:26 +0100)
Without this oggmux will just keep buffering output pages in some cases.

Fixes #593024.

ext/schroedinger/gstschroenc.c

index 24c55e7ad9ee79b6ebbe82cd695641b8019d87c5..b5e40528d99dcf9a275a3f931a8d2cfbab77d67a 100644 (file)
@@ -526,6 +526,13 @@ gst_schro_enc_get_caps (GstBaseVideoEncoder * base_video_encoder)
       g_value_init (&value, GST_TYPE_BUFFER);
       size = GST_BUFFER_SIZE (schro_enc->seq_header_buffer);
       buf = gst_buffer_new_and_alloc (size + SCHRO_PARSE_HEADER_SIZE);
+
+      /* ogg(mux) expects the header buffers to have 0 timestamps -
+         set OFFSET and OFFSET_END accordingly */
+      GST_BUFFER_OFFSET (buf) = 0;
+      GST_BUFFER_OFFSET_END (buf) = 0;
+      GST_BUFFER_FLAG_SET (buf, GST_BUFFER_FLAG_IN_CAPS);
+
       memcpy (GST_BUFFER_DATA (buf),
           GST_BUFFER_DATA (schro_enc->seq_header_buffer), size);
       GST_WRITE_UINT32_BE (GST_BUFFER_DATA (buf) + size + 0, 0x42424344);