aboutsummaryrefslogtreecommitdiffstats
path: root/libavcodec
diff options
context:
space:
mode:
authorDiego Biurrun <diego@biurrun.de>2015-02-25 13:50:15 +0100
committerDiego Biurrun <diego@biurrun.de>2015-03-04 13:29:33 +0100
commit25f613f8be3b51e4396b93cda131e4631ba54302 (patch)
tree1756308545fcc7ac113d975027085e63787942bd /libavcodec
parent1dc19729e92a96620000e09eba8e58cb458c9486 (diff)
downloadffmpeg-25f613f8be3b51e4396b93cda131e4631ba54302.tar.gz
dca: Move syncword definitions to a separate header
Diffstat (limited to 'libavcodec')
-rw-r--r--libavcodec/dca.c11
-rw-r--r--libavcodec/dca.h9
-rw-r--r--libavcodec/dca_parser.c9
-rw-r--r--libavcodec/dca_syncwords.h37
-rw-r--r--libavcodec/dcadec.c7
5 files changed, 52 insertions, 21 deletions
diff --git a/libavcodec/dca.c b/libavcodec/dca.c
index 6cc74ba0af..ebe9fdb47c 100644
--- a/libavcodec/dca.c
+++ b/libavcodec/dca.c
@@ -24,6 +24,7 @@
#include "libavutil/error.h"
#include "dca.h"
+#include "dca_syncwords.h"
#include "put_bits.h"
const uint32_t avpriv_dca_sample_rates[16] = {
@@ -45,18 +46,18 @@ 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:
+ case DCA_SYNCWORD_CORE_LE:
for (i = 0; i < (src_size + 1) >> 1; i++)
*sdst++ = av_bswap16(*ssrc++);
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);
diff --git a/libavcodec/dca.h b/libavcodec/dca.h
index e3ec5ca1f2..54643c99a5 100644
--- a/libavcodec/dca.h
+++ b/libavcodec/dca.h
@@ -35,15 +35,6 @@
#include "fmtconvert.h"
#include "get_bits.h"
-/** DCA syncwords, also used for bitstream type detection */
-#define DCA_MARKER_RAW_BE 0x7FFE8001
-#define DCA_MARKER_RAW_LE 0xFE7F0180
-#define DCA_MARKER_14B_BE 0x1FFFE800
-#define DCA_MARKER_14B_LE 0xFF1F00E8
-
-/** DCA-HD specific block starts with this marker. */
-#define DCA_HD_MARKER 0x64582025
-
#define DCA_PRIM_CHANNELS_MAX (7)
#define DCA_ABITS_MAX (32) /* Should be 28 */
#define DCA_SUBSUBFRAMES_MAX (4)
diff --git a/libavcodec/dca_parser.c b/libavcodec/dca_parser.c
index 276d8736c2..401402d391 100644
--- a/libavcodec/dca_parser.c
+++ b/libavcodec/dca_parser.c
@@ -23,6 +23,7 @@
*/
#include "dca.h"
+#include "dca_syncwords.h"
#include "get_bits.h"
#include "parser.h"
@@ -35,9 +36,9 @@ typedef struct DCAParseContext {
} DCAParseContext;
#define IS_MARKER(state, i, buf, buf_size) \
- ((state == DCA_MARKER_14B_LE && (i < buf_size - 2) && (buf[i + 1] & 0xF0) == 0xF0 && buf[i + 2] == 0x07) || \
- (state == DCA_MARKER_14B_BE && (i < buf_size - 2) && buf[i + 1] == 0x07 && (buf[i + 2] & 0xF0) == 0xF0) || \
- state == DCA_MARKER_RAW_LE || state == DCA_MARKER_RAW_BE)
+ ((state == DCA_SYNCWORD_CORE_14B_LE && (i < buf_size - 2) && (buf[i + 1] & 0xF0) == 0xF0 && buf[i + 2] == 0x07) || \
+ (state == DCA_SYNCWORD_CORE_14B_BE && (i < buf_size - 2) && buf[i + 1] == 0x07 && (buf[i + 2] & 0xF0) == 0xF0) || \
+ state == DCA_SYNCWORD_CORE_LE || state == DCA_SYNCWORD_CORE_BE)
/**
* Find the end of the current frame in the bitstream.
@@ -75,7 +76,7 @@ static int dca_find_frame_end(DCAParseContext *pc1, const uint8_t *buf,
for (; i < buf_size; i++) {
pc1->size++;
state = (state << 8) | buf[i];
- if (state == DCA_HD_MARKER && !pc1->hd_pos)
+ if (state == DCA_SYNCWORD_SUBSTREAM && !pc1->hd_pos)
pc1->hd_pos = pc1->size;
if (state == pc1->lastmarker && IS_MARKER(state, i, buf, buf_size)) {
if (pc1->framesize > pc1->size)
diff --git a/libavcodec/dca_syncwords.h b/libavcodec/dca_syncwords.h
new file mode 100644
index 0000000000..5abd480d71
--- /dev/null
+++ b/libavcodec/dca_syncwords.h
@@ -0,0 +1,37 @@
+/*
+ * This file is part of Libav.
+ *
+ * Libav is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * Libav is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with Libav; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#ifndef AVCODEC_DCA_SYNCWORDS_H
+#define AVCODEC_DCA_SYNCWORDS_H
+
+enum DCASyncwords {
+ DCA_SYNCWORD_CORE_BE = 0x7FFE8001,
+ DCA_SYNCWORD_CORE_LE = 0xFE7F0180,
+ DCA_SYNCWORD_CORE_14B_BE = 0x1FFFE800,
+ DCA_SYNCWORD_CORE_14B_LE = 0xFF1F00E8,
+ DCA_SYNCWORD_XCH = 0x5A5A5A5A,
+ DCA_SYNCWORD_XXCH = 0x47004A03,
+ DCA_SYNCWORD_X96 = 0x1D95F262,
+ DCA_SYNCWORD_XBR = 0x655E315E,
+ DCA_SYNCWORD_LBR = 0x0A801921,
+ DCA_SYNCWORD_XLL = 0x41A29547,
+ DCA_SYNCWORD_SUBSTREAM = 0x64582025,
+ DCA_SYNCWORD_SUBSTREAM_CORE = 0x02B09261,
+};
+
+#endif /* AVCODEC_DCA_SYNCWORDS_H */
diff --git a/libavcodec/dcadec.c b/libavcodec/dcadec.c
index ad111c366a..316affb6b8 100644
--- a/libavcodec/dcadec.c
+++ b/libavcodec/dcadec.c
@@ -37,6 +37,7 @@
#include "avcodec.h"
#include "dca.h"
+#include "dca_syncwords.h"
#include "dcadata.h"
#include "dcadsp.h"
#include "dcahuff.h"
@@ -1100,7 +1101,7 @@ static int dca_decode_frame(AVCodecContext *avctx, void *data,
uint32_t bits = get_bits_long(&s->gb, 32);
switch (bits) {
- case 0x5a5a5a5a: {
+ case DCA_SYNCWORD_XCH: {
int ext_amode, xch_fsize;
s->xch_base_channel = s->prim_channels;
@@ -1137,7 +1138,7 @@ static int dca_decode_frame(AVCodecContext *avctx, void *data,
s->xch_present = 1;
break;
}
- case 0x47004a03:
+ case DCA_SYNCWORD_XXCH:
/* XXCh: extended channels */
/* usually found either in core or HD part in DTS-HD HRA streams,
* but not in DTS-ES which contains XCh extensions instead */
@@ -1174,7 +1175,7 @@ static int dca_decode_frame(AVCodecContext *avctx, void *data,
/* check for ExSS (HD part) */
if (s->dca_buffer_size - s->frame_size > 32 &&
- get_bits_long(&s->gb, 32) == DCA_HD_MARKER)
+ get_bits_long(&s->gb, 32) == DCA_SYNCWORD_SUBSTREAM)
ff_dca_exss_parse_header(s);
avctx->profile = s->profile;