]> git.sesse.net Git - ffmpeg/blobdiff - libavcodec/dca.c
lavc: Remove deprecated XvMC support hacks
[ffmpeg] / libavcodec / dca.c
index 308211f01a06464f722d0a6d768100003f813956..c5daf077a9cf9f9c02b4672d8d67eceb1aa2e4d7 100644 (file)
 #include <stdint.h>
 #include <string.h>
 
-#include "put_bits.h"
+#include "libavutil/error.h"
+
 #include "dca.h"
+#include "dca_syncwords.h"
+#include "put_bits.h"
 
-const uint32_t avpriv_dca_sample_rates[16] =
-{
+const uint32_t avpriv_dca_sample_rates[16] = {
     0, 8000, 16000, 32000, 0, 0, 11025, 22050, 44100, 0, 0,
     12000, 24000, 48000, 96000, 192000
 };
@@ -35,8 +37,6 @@ int ff_dca_convert_bitstream(const uint8_t *src, int src_size, uint8_t *dst,
 {
     uint32_t mrk;
     int i, tmp;
-    const uint16_t *ssrc = (const uint16_t *) src;
-    uint16_t *sdst = (uint16_t *) dst;
     PutBitContext pb;
 
     if ((unsigned) src_size > (unsigned) max_size)
@@ -44,18 +44,21 @@ int ff_dca_convert_bitstream(const uint8_t *src, int src_size, uint8_t *dst,
 
     mrk = AV_RB32(src);
     switch (mrk) {
-    case DCA_MARKER_RAW_BE:
+    case DCA_SYNCWORD_CORE_BE:
         memcpy(dst, src, src_size);
         return src_size;
-    case DCA_MARKER_RAW_LE:
-        for (i = 0; i < (src_size + 1) >> 1; i++)
-            *sdst++ = av_bswap16(*ssrc++);
+    case DCA_SYNCWORD_CORE_LE:
+        for (i = 0; i < (src_size + 1) >> 1; i++) {
+            AV_WB16(dst, AV_RL16(src));
+            src += 2;
+            dst += 2;
+        }
         return src_size;
-    case DCA_MARKER_14B_BE:
-    case DCA_MARKER_14B_LE:
+    case DCA_SYNCWORD_CORE_14B_BE:
+    case DCA_SYNCWORD_CORE_14B_LE:
         init_put_bits(&pb, dst, max_size);
         for (i = 0; i < (src_size + 1) >> 1; i++, src += 2) {
-            tmp = ((mrk == DCA_MARKER_14B_BE) ? AV_RB16(src) : AV_RL16(src)) & 0x3FFF;
+            tmp = ((mrk == DCA_SYNCWORD_CORE_14B_BE) ? AV_RB16(src) : AV_RL16(src)) & 0x3FFF;
             put_bits(&pb, 14, tmp);
         }
         flush_put_bits(&pb);