Go to the documentation of this file.
25 #define BITSTREAM_READER_LE
51 3, 4, 6, 8, 4096, 8192, 16384, 512, 1024, 2048,
56 int nb_samples, max_nb_samples;
61 max_nb_samples = 16384;
71 if (nb_samples <= 0 || nb_samples > max_nb_samples)
95 uint64_t channel_mask = 0;
115 for (
i = 0;
i <
s->channels;
i++) {
124 s->ch_layout = channel_mask;
static const int64_t tak_channel_layouts[]
#define AV_CH_TOP_FRONT_CENTER
#define TAK_FRAME_HEADER_NO_BITS
int ff_tak_decode_frame_header(AVCodecContext *avctx, GetBitContext *gb, TAKStreamInfo *ti, int log_level_offset)
Validate and decode a frame header.
#define AV_CH_TOP_FRONT_RIGHT
#define TAK_FRAME_HEADER_SYNC_ID
#define TAK_FORMAT_CH_LAYOUT_BITS
#define AV_CH_TOP_FRONT_LEFT
#define AV_CH_TOP_BACK_LEFT
#define TAK_SIZE_FRAME_DURATION_BITS
static void skip_bits(GetBitContext *s, int n)
static unsigned int get_bits(GetBitContext *s, int n)
Read 1-25 bits.
#define AV_CH_TOP_BACK_CENTER
#define TAK_FRAME_FLAG_HAS_INFO
it s the only field you need to keep assuming you have a context There is some magic you don t need to care about around this just let it vf type
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
#define FF_ARRAY_ELEMS(a)
static int init_get_bits8(GetBitContext *s, const uint8_t *buffer, int byte_size)
Initialize GetBitContext.
#define AV_CH_LOW_FREQUENCY
static const uint16_t frame_duration_type_quants[]
#define TAK_FORMAT_BPS_BITS
void ff_tak_parse_streaminfo(TAKStreamInfo *s, GetBitContext *gb)
#define TAK_FRAME_FLAG_IS_LAST
#define TAK_FORMAT_SAMPLE_RATE_BITS
#define TAK_FRAME_FLAG_HAS_METADATA
static unsigned int get_bits1(GetBitContext *s)
#define AV_CH_FRONT_CENTER
#define AV_CH_FRONT_LEFT_OF_CENTER
#define TAK_FORMAT_CHANNEL_BITS
int ff_tak_check_crc(const uint8_t *buf, unsigned int buf_size)
const AVCRC * av_crc_get_table(AVCRCId crc_id)
Get an initialized standard CRC table.
#define AV_CH_TOP_BACK_RIGHT
#define AV_CH_FRONT_RIGHT_OF_CENTER
static uint64_t get_bits64(GetBitContext *s, int n)
Read 0-64 bits.
#define AV_CH_BACK_CENTER
it s the only field you need to keep assuming you have a context There is some magic you don t need to care about around this just let it vf default value
static int tak_get_nb_samples(int sample_rate, enum TAKFrameSizeType type)
#define TAK_FRAME_HEADER_FLAGS_BITS
int avpriv_tak_parse_streaminfo(TAKStreamInfo *s, const uint8_t *buf, int size)
Parse the Streaminfo metadata block.
#define TAK_FRAME_HEADER_SYNC_ID_BITS
static const uint8_t * align_get_bits(GetBitContext *s)
main external API structure.
uint32_t av_crc(const AVCRC *ctx, uint32_t crc, const uint8_t *buffer, size_t length)
Calculate the CRC of a block.
#define TAK_SAMPLE_RATE_MIN
#define TAK_FORMAT_VALID_BITS
#define TAK_ENCODER_PROFILE_BITS
#define AV_CH_FRONT_RIGHT
#define TAK_FRAME_DURATION_QUANT_SHIFT
#define TAK_FRAME_HEADER_SAMPLE_COUNT_BITS
#define TAK_SIZE_SAMPLES_NUM_BITS
#define AVERROR_INVALIDDATA
Invalid data found when processing input.
#define TAK_FORMAT_DATA_TYPE_BITS
uint64_t_TMPL AV_WL64 unsigned int_TMPL AV_WL32 unsigned int_TMPL AV_WL24 unsigned int_TMPL AV_WL16 uint64_t_TMPL AV_WB64 unsigned int_TMPL AV_WB32 unsigned int_TMPL AV_RB24
#define TAK_ENCODER_CODEC_BITS