Fix for http://bugzilla.gnome.org/show_bug.cgi?id=333254
authorThomas Vander Stichele <thomas@apestaart.org>
Fri, 3 Mar 2006 15:22:02 +0000 (15:22 +0000)
committerThomas Vander Stichele <thomas@apestaart.org>
Fri, 3 Mar 2006 15:22:02 +0000 (15:22 +0000)
Original commit message from CVS:
2006-03-03  Thomas Vander Stichele  <thomas at apestaart dot org>

* ext/theora/theoraenc.c: (theora_set_header_on_caps):
* tests/check/pipelines/theoraenc.c: (check_buffer_is_header),
(GST_START_TEST):
Fix for http://bugzilla.gnome.org/show_bug.cgi?id=333254
Set IN_CAPS on header buffers

ChangeLog
ext/theora/theoraenc.c
tests/check/pipelines/theoraenc.c

index 3ad58be689088712e03a1bb9dfc08b4aba6c126a..6924be7c9fd27437da7a1cc3cbcbf97cc5415459 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2006-03-03  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * ext/theora/theoraenc.c: (theora_set_header_on_caps):
+       * tests/check/pipelines/theoraenc.c: (check_buffer_is_header),
+       (GST_START_TEST):
+         Fix for http://bugzilla.gnome.org/show_bug.cgi?id=333254
+         Set IN_CAPS on header buffers
+
 2006-03-02  Wim Taymans  <wim@fluendo.com>
 
        * docs/plugins/Makefile.am:
index c06725baf482b9dfb361b0f1da45b3f42f7414b3..b7c4c1e7403fb03d594c25086f10f335fce89770 100644 (file)
@@ -452,17 +452,17 @@ theora_set_header_on_caps (GstCaps * caps, GstBuffer * buf1,
   caps = gst_caps_make_writable (caps);
   structure = gst_caps_get_structure (caps, 0);
 
+  /* mark buffers */
+  GST_BUFFER_FLAG_SET (buf1, GST_BUFFER_FLAG_IN_CAPS);
+  GST_BUFFER_FLAG_SET (buf2, GST_BUFFER_FLAG_IN_CAPS);
+  GST_BUFFER_FLAG_SET (buf3, GST_BUFFER_FLAG_IN_CAPS);
+
   /* Copy buffers, because we can't use the originals -
    * it creates a circular refcount with the caps<->buffers */
   buf1 = gst_buffer_copy (buf1);
   buf2 = gst_buffer_copy (buf2);
   buf3 = gst_buffer_copy (buf3);
 
-  /* mark buffers */
-  GST_BUFFER_FLAG_SET (buf1, GST_BUFFER_FLAG_IN_CAPS);
-  GST_BUFFER_FLAG_SET (buf2, GST_BUFFER_FLAG_IN_CAPS);
-  GST_BUFFER_FLAG_SET (buf3, GST_BUFFER_FLAG_IN_CAPS);
-
   /* put copies of the buffers in a fixed list */
   g_value_init (&array, GST_TYPE_ARRAY);
 
index 7229191afcc4396f70eeda78a37dcb9ce165af8c..c69eda345551bc1e9ce1665d8e5727a792231f8c 100644 (file)
@@ -126,6 +126,15 @@ stop_pipeline (GstElement * bin, GstPad * pad)
   cond = NULL;
 }
 
+static void
+check_buffer_is_header (GstBuffer * buffer, gboolean is_header)
+{
+  fail_unless (GST_BUFFER_FLAG_IS_SET (buffer,
+          GST_BUFFER_FLAG_IN_CAPS) == is_header,
+      "GST_BUFFER_IN_CAPS is set to %d but expected %d",
+      GST_BUFFER_FLAG_IS_SET (buffer, GST_BUFFER_FLAG_IN_CAPS), is_header);
+}
+
 static void
 check_buffer_timestamp (GstBuffer * buffer, GstClockTime timestamp)
 {
@@ -207,23 +216,26 @@ GST_START_TEST (test_granulepos_offset)
 
   start_pipeline (bin, pad);
 
-  /* header packets should have timestamp == NONE, granulepos 0 */
+  /* header packets should have timestamp == NONE, granulepos 0, IN_CAPS */
   buffer = get_buffer (bin, pad);
   check_buffer_timestamp (buffer, GST_CLOCK_TIME_NONE);
   check_buffer_duration (buffer, GST_CLOCK_TIME_NONE);
   check_buffer_granulepos (buffer, 0);
+  check_buffer_is_header (buffer, TRUE);
   gst_buffer_unref (buffer);
 
   buffer = get_buffer (bin, pad);
   check_buffer_timestamp (buffer, GST_CLOCK_TIME_NONE);
   check_buffer_duration (buffer, GST_CLOCK_TIME_NONE);
   check_buffer_granulepos (buffer, 0);
+  check_buffer_is_header (buffer, TRUE);
   gst_buffer_unref (buffer);
 
   buffer = get_buffer (bin, pad);
   check_buffer_timestamp (buffer, GST_CLOCK_TIME_NONE);
   check_buffer_duration (buffer, GST_CLOCK_TIME_NONE);
   check_buffer_granulepos (buffer, 0);
+  check_buffer_is_header (buffer, TRUE);
   gst_buffer_unref (buffer);
 
   {
@@ -240,6 +252,7 @@ GST_START_TEST (test_granulepos_offset)
     check_buffer_timestamp (buffer, TIMESTAMP_OFFSET);
     /* don't really have a good way of checking duration... */
     check_buffer_granulepos_from_starttime (buffer, TIMESTAMP_OFFSET);
+    check_buffer_is_header (buffer, FALSE);
 
     next_timestamp = TIMESTAMP_OFFSET + GST_BUFFER_DURATION (buffer);
 
@@ -253,6 +266,7 @@ GST_START_TEST (test_granulepos_offset)
             FRAMERATE)
         - gst_util_uint64_scale (last_granulepos, GST_SECOND, FRAMERATE));
     check_buffer_granulepos_from_starttime (buffer, next_timestamp);
+    check_buffer_is_header (buffer, FALSE);
 
     gst_buffer_unref (buffer);
   }
@@ -300,18 +314,21 @@ GST_START_TEST (test_continuity)
   check_buffer_timestamp (buffer, GST_CLOCK_TIME_NONE);
   check_buffer_duration (buffer, GST_CLOCK_TIME_NONE);
   check_buffer_granulepos (buffer, 0);
+  check_buffer_is_header (buffer, TRUE);
   gst_buffer_unref (buffer);
 
   buffer = get_buffer (bin, pad);
   check_buffer_timestamp (buffer, GST_CLOCK_TIME_NONE);
   check_buffer_duration (buffer, GST_CLOCK_TIME_NONE);
   check_buffer_granulepos (buffer, 0);
+  check_buffer_is_header (buffer, TRUE);
   gst_buffer_unref (buffer);
 
   buffer = get_buffer (bin, pad);
   check_buffer_timestamp (buffer, GST_CLOCK_TIME_NONE);
   check_buffer_duration (buffer, GST_CLOCK_TIME_NONE);
   check_buffer_granulepos (buffer, 0);
+  check_buffer_is_header (buffer, TRUE);
   gst_buffer_unref (buffer);
 
   {
@@ -329,6 +346,7 @@ GST_START_TEST (test_continuity)
     /* plain division because I know the answer is exact */
     check_buffer_duration (buffer, GST_SECOND / 10);
     check_buffer_granulepos (buffer, 0);
+    check_buffer_is_header (buffer, FALSE);
 
     next_timestamp = GST_BUFFER_DURATION (buffer);
 
@@ -339,6 +357,7 @@ GST_START_TEST (test_continuity)
     check_buffer_timestamp (buffer, next_timestamp);
     check_buffer_duration (buffer, GST_SECOND / 10);
     check_buffer_granulepos (buffer, 1);
+    check_buffer_is_header (buffer, FALSE);
 
     gst_buffer_unref (buffer);
   }