34#define TAK_FORMAT_DATA_TYPE_BITS 3
35#define TAK_FORMAT_SAMPLE_RATE_BITS 18
36#define TAK_FORMAT_BPS_BITS 5
37#define TAK_FORMAT_CHANNEL_BITS 4
38#define TAK_FORMAT_VALID_BITS 5
39#define TAK_FORMAT_CH_LAYOUT_BITS 6
40#define TAK_SIZE_FRAME_DURATION_BITS 4
41#define TAK_SIZE_SAMPLES_NUM_BITS 35
42#define TAK_LAST_FRAME_POS_BITS 40
43#define TAK_LAST_FRAME_SIZE_BITS 24
44#define TAK_ENCODER_CODEC_BITS 6
45#define TAK_ENCODER_PROFILE_BITS 4
46#define TAK_SAMPLE_RATE_MIN 6000
47#define TAK_CHANNELS_MIN 1
49#define TAK_FRAME_HEADER_FLAGS_BITS 3
50#define TAK_FRAME_HEADER_SYNC_ID 0xA0FF
51#define TAK_FRAME_HEADER_SYNC_ID_BITS 16
52#define TAK_FRAME_HEADER_SAMPLE_COUNT_BITS 14
53#define TAK_FRAME_HEADER_NO_BITS 21
54#define TAK_FRAME_DURATION_QUANT_SHIFT 5
55#define TAK_CRC24_BITS 24
58#define TAK_FRAME_FLAG_IS_LAST 0x1
59#define TAK_FRAME_FLAG_HAS_INFO 0x2
60#define TAK_FRAME_FLAG_HAS_METADATA 0x4
62#define TAK_MAX_CHANNELS (1 << TAK_FORMAT_CHANNEL_BITS)
64#define TAK_MIN_FRAME_HEADER_BITS (TAK_FRAME_HEADER_SYNC_ID_BITS + \
65 TAK_FRAME_HEADER_FLAGS_BITS + \
66 TAK_FRAME_HEADER_NO_BITS + \
69#define TAK_MIN_FRAME_HEADER_LAST_BITS (TAK_MIN_FRAME_HEADER_BITS + 2 + \
70 TAK_FRAME_HEADER_SAMPLE_COUNT_BITS)
72#define TAK_ENCODER_BITS (TAK_ENCODER_CODEC_BITS + \
73 TAK_ENCODER_PROFILE_BITS)
75#define TAK_SIZE_BITS (TAK_SIZE_SAMPLES_NUM_BITS + \
76 TAK_SIZE_FRAME_DURATION_BITS)
78#define TAK_FORMAT_BITS (TAK_FORMAT_DATA_TYPE_BITS + \
79 TAK_FORMAT_SAMPLE_RATE_BITS + \
80 TAK_FORMAT_BPS_BITS + \
81 TAK_FORMAT_CHANNEL_BITS + 1 + \
82 TAK_FORMAT_VALID_BITS + 1 + \
83 TAK_FORMAT_CH_LAYOUT_BITS * \
86#define TAK_STREAMINFO_BITS (TAK_ENCODER_BITS + \
90#define TAK_MAX_FRAME_HEADER_BITS (TAK_MIN_FRAME_HEADER_LAST_BITS + \
91 TAK_STREAMINFO_BITS + 31)
93#define TAK_STREAMINFO_BYTES ((TAK_STREAMINFO_BITS + 7) / 8)
94#define TAK_MAX_FRAME_HEADER_BYTES ((TAK_MAX_FRAME_HEADER_BITS + 7) / 8)
95#define TAK_MIN_FRAME_HEADER_BYTES ((TAK_MIN_FRAME_HEADER_BITS + 7) / 8)
bitstream reader API header.
@ TAK_METADATA_STREAMINFO
@ TAK_METADATA_SIMPLE_WAVE_DATA
@ TAK_METADATA_LAST_FRAME
int ff_tak_decode_frame_header(void *logctx, GetBitContext *gb, TAKStreamInfo *s, int log_level_offset)
Validate and decode a frame header.
int ff_tak_check_crc(const uint8_t *buf, unsigned int buf_size)
int avpriv_tak_parse_streaminfo(TAKStreamInfo *s, const uint8_t *buf, int size)
Parse the Streaminfo metadata block.