From f4cb76e92dc78bdde3dd9be49fc921111a94ee0a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= <slomo@circular-chaos.org>
Date: Sat, 6 Dec 2008 19:46:05 +0000
Subject: gst/mxf/mxfd10.c: Document decoding of the AES3 data and also skip
 the 32 bit header in the beginning of every buffer...

Original commit message from CVS:
* gst/mxf/mxfd10.c: (mxf_d10_sound_handle_essence_element):
Document decoding of the AES3 data and also skip the 32 bit
header in the beginning of every buffer, otherwise we get
one broken audio channel.
---
 gst/mxf/mxfd10.c | 8 ++++++++
 1 file changed, 8 insertions(+)

(limited to 'gst/mxf')

diff --git a/gst/mxf/mxfd10.c b/gst/mxf/mxfd10.c
index 75e74008..d8d19099 100644
--- a/gst/mxf/mxfd10.c
+++ b/gst/mxf/mxfd10.c
@@ -118,10 +118,16 @@ mxf_d10_sound_handle_essence_element (const MXFUL * key, GstBuffer * buffer,
   indata = GST_BUFFER_DATA (buffer);
   outdata = GST_BUFFER_DATA (*outbuf);
 
+  /* Skip 32 bit header */
+  indata += 4;
+
   for (i = 0; i < nsamples; i++) {
     for (j = 0; j < channels; j++) {
       guint32 in = GST_READ_UINT32_LE (indata);
 
+      /* Remove first 4 and last 4 bits as they only
+       * contain status data. Shift the 24 bit samples
+       * to the correct width afterwards. */
       if (width == 2) {
         in = (in >> 12) & 0xffff;
         GST_WRITE_UINT16_LE (outdata, in);
@@ -132,6 +138,8 @@ mxf_d10_sound_handle_essence_element (const MXFUL * key, GstBuffer * buffer,
       indata += 4;
       outdata += width;
     }
+    /* There are always 8 channels but only the first
+     * ones contain valid data, skip the others */
     indata += 4 * (8 - channels);
   }
 
-- 
cgit v1.2.1