changeset 24432:79fcacd73f9b

Simplify and fix big-endian hwac3 header generation code.
author reimar
date Fri, 14 Sep 2007 08:54:06 +0000
parents 3cfff0f1d9b8
children 435b37266f1e
files libmpcodecs/ad_hwac3.c
diffstat 1 files changed, 13 insertions(+), 17 deletions(-) [+]
line wrap: on
line diff
--- a/libmpcodecs/ad_hwac3.c	Thu Sep 13 18:36:04 2007 +0000
+++ b/libmpcodecs/ad_hwac3.c	Fri Sep 14 08:54:06 2007 +0000
@@ -159,14 +159,11 @@
   }
   else if(isdts == 0)
   {
-    buf[0] = 0x72;
-    buf[1] = 0xF8;
-    buf[2] = 0x1F;
-    buf[3] = 0x4E;
-    buf[4] = 0x01; //(length) ? data_type : 0; /* & 0x1F; */
-    buf[5] = 0x00;
-    buf[6] = (len << 3) & 0xFF;
-    buf[7] = (len >> 5) & 0xFF;
+    uint16_t *buf16 = (uint16_t *)buf;
+    buf16[0] = 0xF872;
+    buf16[1] = 0x4E1F;
+    buf16[2] = 0x0001;
+    buf16[3] = len << 3;
 #ifdef WORDS_BIGENDIAN
     memcpy(buf + 8, sh_audio->a_in_buffer, len);  // untested
 #else
@@ -327,6 +324,7 @@
   int sfreq;
   int burst_len;
   int nr_samples;
+  uint16_t *buf16 = (uint16_t *)buf;
 
   fsize = dts_decode_header(indata_ptr, &rate, &nblks, &sfreq);
   if(fsize < 0)
@@ -335,27 +333,25 @@
   burst_len = fsize * 8;
   nr_samples = nblks * 32;
 
-  buf[0] = 0x72; buf[1] = 0xf8; /* iec 61937     */
-  buf[2] = 0x1f; buf[3] = 0x4e; /*  syncword     */
+  buf16[0] = 0xf872; /* iec 61937     */
+  buf16[1] = 0x431f; /*  syncword     */
   switch(nr_samples) 
   {
   case 512:
-    buf[4] = 0x0b;      /* DTS-1 (512-sample bursts) */
+    buf16[2] = 0x000b;      /* DTS-1 (512-sample bursts) */
     break;
   case 1024:
-    buf[4] = 0x0c;      /* DTS-2 (1024-sample bursts) */
+    buf16[2] = 0x000c;      /* DTS-2 (1024-sample bursts) */
     break;
   case 2048:
-    buf[4] = 0x0d;      /* DTS-3 (2048-sample bursts) */
+    buf16[2] = 0x000d;      /* DTS-3 (2048-sample bursts) */
     break;
   default:
     mp_msg(MSGT_DECAUDIO, MSGL_ERR, "DTS: %d-sample bursts not supported\n", nr_samples);
-    buf[4] = 0x00;
+    buf16[2] = 0x0000;
     break;
   }
-  buf[5] = 0;                      /* ?? */    
-  buf[6] = (burst_len) & 0xff;   
-  buf[7] = (burst_len >> 8) & 0xff;
+  buf16[3] = burst_len;
  
   if(fsize + 8 > nr_samples * 2 * 2)
   {