mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2025-12-13 02:20:07 +01:00
dca: Move syncword definitions to a separate header
This commit is contained in:
@@ -20,14 +20,11 @@
|
||||
*/
|
||||
|
||||
#include "libavcodec/bytestream.h"
|
||||
#include "libavcodec/dca_syncwords.h"
|
||||
|
||||
#include "avformat.h"
|
||||
#include "rawdec.h"
|
||||
|
||||
#define DCA_MARKER_14B_BE 0x1FFFE800
|
||||
#define DCA_MARKER_14B_LE 0xFF1F00E8
|
||||
#define DCA_MARKER_RAW_BE 0x7FFE8001
|
||||
#define DCA_MARKER_RAW_LE 0xFE7F0180
|
||||
|
||||
static int dts_probe(AVProbeData *p)
|
||||
{
|
||||
const uint8_t *buf, *bufp;
|
||||
@@ -42,16 +39,16 @@ static int dts_probe(AVProbeData *p)
|
||||
state = (state << 16) | bytestream_get_be16(&bufp);
|
||||
|
||||
/* regular bitstream */
|
||||
if (state == DCA_MARKER_RAW_BE || state == DCA_MARKER_RAW_LE)
|
||||
if (state == DCA_SYNCWORD_CORE_BE || state == DCA_SYNCWORD_CORE_LE)
|
||||
markers[0]++;
|
||||
|
||||
/* 14 bits big-endian bitstream */
|
||||
if (state == DCA_MARKER_14B_BE)
|
||||
if (state == DCA_SYNCWORD_CORE_14B_BE)
|
||||
if ((bytestream_get_be16(&bufp) & 0xFFF0) == 0x07F0)
|
||||
markers[1]++;
|
||||
|
||||
/* 14 bits little-endian bitstream */
|
||||
if (state == DCA_MARKER_14B_LE)
|
||||
if (state == DCA_SYNCWORD_CORE_14B_LE)
|
||||
if ((bytestream_get_be16(&bufp) & 0xF0FF) == 0xF007)
|
||||
markers[2]++;
|
||||
}
|
||||
|
||||
@@ -51,6 +51,7 @@
|
||||
#include "spdif.h"
|
||||
#include "libavcodec/ac3.h"
|
||||
#include "libavcodec/dca.h"
|
||||
#include "libavcodec/dca_syncwords.h"
|
||||
#include "libavcodec/aacadtsdec.h"
|
||||
#include "libavutil/opt.h"
|
||||
|
||||
@@ -251,25 +252,25 @@ static int spdif_header_dts(AVFormatContext *s, AVPacket *pkt)
|
||||
return AVERROR_INVALIDDATA;
|
||||
|
||||
switch (syncword_dts) {
|
||||
case DCA_MARKER_RAW_BE:
|
||||
case DCA_SYNCWORD_CORE_BE:
|
||||
blocks = (AV_RB16(pkt->data + 4) >> 2) & 0x7f;
|
||||
core_size = ((AV_RB24(pkt->data + 5) >> 4) & 0x3fff) + 1;
|
||||
sample_rate = avpriv_dca_sample_rates[(pkt->data[8] >> 2) & 0x0f];
|
||||
break;
|
||||
case DCA_MARKER_RAW_LE:
|
||||
case DCA_SYNCWORD_CORE_LE:
|
||||
blocks = (AV_RL16(pkt->data + 4) >> 2) & 0x7f;
|
||||
ctx->extra_bswap = 1;
|
||||
break;
|
||||
case DCA_MARKER_14B_BE:
|
||||
case DCA_SYNCWORD_CORE_14B_BE:
|
||||
blocks =
|
||||
(((pkt->data[5] & 0x07) << 4) | ((pkt->data[6] & 0x3f) >> 2));
|
||||
break;
|
||||
case DCA_MARKER_14B_LE:
|
||||
case DCA_SYNCWORD_CORE_14B_LE:
|
||||
blocks =
|
||||
(((pkt->data[4] & 0x07) << 4) | ((pkt->data[7] & 0x3f) >> 2));
|
||||
ctx->extra_bswap = 1;
|
||||
break;
|
||||
case DCA_HD_MARKER:
|
||||
case DCA_SYNCWORD_SUBSTREAM:
|
||||
/* We only handle HD frames that are paired with core. However,
|
||||
sometimes DTS-HD streams with core have a stray HD frame without
|
||||
core in the beginning of the stream. */
|
||||
|
||||
Reference in New Issue
Block a user