bump GDP to 0.1, add buffer flags
authorThomas Vander Stichele <thomas@apestaart.org>
Wed, 9 Jun 2004 16:24:19 +0000 (16:24 +0000)
committerThomas Vander Stichele <thomas@apestaart.org>
Wed, 9 Jun 2004 16:24:19 +0000 (16:24 +0000)
Original commit message from CVS:
bump GDP to 0.1, add buffer flags

ChangeLog
docs/random/gdp
libs/gst/dataprotocol/dataprotocol-test.c
libs/gst/dataprotocol/dataprotocol.c
libs/gst/dataprotocol/dataprotocol.h
libs/gst/dataprotocol/dp-private.h

index 2b9c467ee098dde3d442f31d58a53d4dfd7c583f..e5ecdbc6928af705a1c8e996a2317906c45b3e72 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2004-06-09  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * docs/random/gdp:
+       * libs/gst/dataprotocol/dataprotocol-test.c: (buffer_test):
+       * libs/gst/dataprotocol/dataprotocol.c:
+       (gst_dp_header_from_buffer), (gst_dp_packet_from_caps),
+       (gst_dp_buffer_from_header):
+       * libs/gst/dataprotocol/dataprotocol.h:
+       * libs/gst/dataprotocol/dp-private.h:
+          rev version to 0.1, add buffer flags and copy them
+
 2004-06-09  Johan Dahlin  <johan@gnome.org>
 
        * gst/gstbuffer.c (gst_buffer_default_copy): Don't forget to merge
index 1c6beb416fe5feee3d91a1663610e7ec4f168f1f..dd16ea2ed8101f52af75d0d54503eb8c4b503515 100644 (file)
@@ -15,8 +15,8 @@ IDEAS
 
 PROTOCOL
 --------
-* 1 byte   GDP major version
-* 1 byte   GDP minor version
+* 1 byte   GDP major version (0)
+* 1 byte   GDP minor version (1)
 * 1 byte   GDP flags
 * 1 byte   GDP data type
            1 for buffer, 2 caps, 65+ for events
@@ -25,11 +25,16 @@ PROTOCOL
 * 8 byte   duration  of buffer
 * 8 byte   offset
 * 8 byte   offset_end
-* 16 byte  future extension (ABI padding)
+* 2 byte   buffer data flags
+* 14 byte  future extension (ABI padding)
 * 2 byte   optional header crc
 * 2 byte   optional payload crc
 * (length) payload
 
 header: 60 bytes
 
+PROTOCOL CHANGELOG
+------------------
+0.1: added two bytes for buffer flags
+
 all numbers use network byte ordering.
index 4737f38fb066ed776b5b442c5f7b1290fe440e59..227dc77cbf04ee4fce9bff9bbad311cfe42f30be 100644 (file)
@@ -116,6 +116,8 @@ buffer_test ()
   GST_BUFFER_DURATION (buffer) = (GstClockTime) GST_SECOND;
   GST_BUFFER_OFFSET (buffer) = (guint64) 10;
   GST_BUFFER_OFFSET_END (buffer) = (guint64) 19;
+  GST_BUFFER_FLAG_SET (buffer, GST_BUFFER_IN_CAPS);
+  GST_BUFFER_FLAG_SET (buffer, GST_BUFFER_SUBBUFFER);
   memmove (GST_BUFFER_DATA (buffer), "a buffer", 8);
 
   /* create a buffer with CRC checking */
@@ -158,6 +160,12 @@ buffer_test ()
   if (GST_BUFFER_OFFSET_END (newbuffer) != GST_BUFFER_OFFSET_END (buffer)) {
     g_error ("Offset ends don't match !");
   }
+  if (GST_BUFFER_FLAG_IS_SET (newbuffer, GST_BUFFER_SUBBUFFER)) {
+    g_error ("GST_BUFFER_SUBBUFFER flag should not have been copied !");
+  }
+  if (!GST_BUFFER_FLAG_IS_SET (newbuffer, GST_BUFFER_IN_CAPS)) {
+    g_error ("GST_BUFFER_IN_CAPS flag should have been copied !");
+  }
   g_free (header);
 
   return 0;
index 85c798e929d468a1f9f83c82d2f4c79954ee9873..2fdbc5fc74c1444c27cc879147cc593da08b0ce8 100644 (file)
@@ -163,6 +163,7 @@ gst_dp_header_from_buffer (const GstBuffer * buffer, GstDPHeaderFlag flags,
 {
   guint8 *h;
   guint16 crc;
+  guint16 flags_mask;
 
   g_return_val_if_fail (GST_IS_BUFFER (buffer), FALSE);
   g_return_val_if_fail (GST_BUFFER_REFCOUNT_VALUE (buffer) > 0, FALSE);
@@ -184,8 +185,16 @@ gst_dp_header_from_buffer (const GstBuffer * buffer, GstDPHeaderFlag flags,
   GST_WRITE_UINT64_BE (h + 24, GST_BUFFER_OFFSET (buffer));
   GST_WRITE_UINT64_BE (h + 32, GST_BUFFER_OFFSET_END (buffer));
 
+  /* data flags */
+  /* we only copy KEY_UNIT and IN_CAPS flags */
+  flags_mask = GST_DATA_FLAG_SHIFT (GST_BUFFER_KEY_UNIT) |
+      GST_DATA_FLAG_SHIFT (GST_BUFFER_IN_CAPS);
+
+  GST_WRITE_UINT16_BE (h + 40, GST_BUFFER_FLAGS (buffer) & flags_mask);
+
   /* ABI padding */
-  GST_WRITE_UINT64_BE (h + 40, (guint64) 0);
+  GST_WRITE_UINT16_BE (h + 42, (guint64) 0);
+  GST_WRITE_UINT32_BE (h + 44, (guint64) 0);
   GST_WRITE_UINT64_BE (h + 48, (guint64) 0);
 
   /* CRC */
@@ -419,6 +428,7 @@ gst_dp_buffer_from_header (guint header_length, const guint8 * header)
   GST_BUFFER_DURATION (buffer) = GST_DP_HEADER_DURATION (header);
   GST_BUFFER_OFFSET (buffer) = GST_DP_HEADER_OFFSET (header);
   GST_BUFFER_OFFSET_END (buffer) = GST_DP_HEADER_OFFSET_END (header);
+  GST_BUFFER_FLAGS (buffer) = GST_DP_HEADER_BUFFER_FLAGS (header);
 
   return buffer;
 }
index 41e7feeb4fe36b3207c8172c8b89a4eb35882a6a..ca394ccf9ae51d88774cc1936c636c5e32c67be8 100644 (file)
@@ -33,7 +33,7 @@ G_BEGIN_DECLS
 
 /* GStreamer Data Protocol Version */
 #define GST_DP_VERSION_MAJOR 0
-#define GST_DP_VERSION_MINOR 0
+#define GST_DP_VERSION_MINOR 1
 
 #define GST_DP_HEADER_LENGTH 60 /* header size in bytes */
 
index 0780a12559b22660a7d706e9411f46842207046e..befd501b0ad33d7c91da81c9d123e22b035cc447 100644 (file)
@@ -40,6 +40,7 @@ G_BEGIN_DECLS
 #define GST_DP_HEADER_DURATION(x)       GST_READ_UINT64_BE (x + 16)
 #define GST_DP_HEADER_OFFSET(x)         GST_READ_UINT64_BE (x + 24)
 #define GST_DP_HEADER_OFFSET_END(x)     GST_READ_UINT64_BE (x + 32)
+#define GST_DP_HEADER_BUFFER_FLAGS(x)   GST_READ_UINT16_BE (x + 40)
 #define GST_DP_HEADER_CRC_HEADER(x)     GST_READ_UINT16_BE (x + 56)
 #define GST_DP_HEADER_CRC_PAYLOAD(x)    GST_READ_UINT16_BE (x + 58)