36 #define BITSTREAM_READER_LE
45 #define FORMAT_SIMPLE 1
46 #define FORMAT_ENCRYPTED 2
80 crc =
av_crc(
s->crc_table, 0xFFFFFFFFU, buf, buf_size);
81 if (CRC != (crc ^ 0xFFFFFFFFU)) {
91 uint64_t crc = UINT64_MAX, poly = 0x42F0E1EBA9EA3693U;
96 crc ^= (uint64_t)*
pass++ << 56;
97 for (
i = 0;
i < 8;
i++)
98 crc = (crc << 1) ^ (poly & (((
int64_t) crc) >> 63));
101 return crc ^ UINT64_MAX;
110 if (!
s->decode_buffer)
113 s->decode_buffer =
NULL;
152 av_log(avctx,
AV_LOG_ERROR,
"Missing password for encrypted stream. Please use the -password option\n");
158 if (
s->channels > 1 &&
s->channels < 9)
166 if (
s->channels == 0 ||
s->channels > 16) {
195 s->last_frame_length =
s->data_length %
s->frame_length;
196 total_frames =
s->data_length /
s->frame_length +
197 (
s->last_frame_length ? 1 : 0);
203 s->data_length,
s->frame_length,
s->last_frame_length, total_frames);
205 if(
s->frame_length >= UINT_MAX / (
s->channels *
sizeof(
int32_t))){
220 int *got_frame_ptr,
AVPacket *avpkt)
225 int buf_size = avpkt->
size;
229 int cur_chan = 0, framelen =
s->frame_length;
251 for (
i = 0;
i <
s->channels;
i++) {
253 s->ch_ctx[
i].predictor = 0;
257 for (
i = 0;
i < 8;
i++)
264 for (p =
s->decode_buffer; (
int32_t*)p < s->decode_buffer + (framelen *
s->channels); p++) {
267 TTARice *rice = &
s->ch_ctx[cur_chan].rice;
268 uint32_t unary, depth, k;
321 #define PRED(x, k) (int32_t)((((uint64_t)(x) << (k)) - (x)) >> (k))
331 if (cur_chan < (
s->channels-1))
335 if (
s->channels > 1) {
337 for (*p += *
r / 2;
r > (
int32_t*)p -
s->channels;
r--)
338 *
r = *(
r + 1) - (
unsigned)*
r;
361 for (p =
s->decode_buffer; (
int32_t*)p <
s->decode_buffer + (framelen *
s->channels); p++)
362 *samples++ = *p + 0x80;
366 int16_t *samples = (int16_t *)
frame->
data[0];
367 for (p =
s->decode_buffer; (
int32_t*)p <
s->decode_buffer + (framelen *
s->channels); p++)
376 for (
i = 0;
i < framelen *
s->channels;
i++) {
377 int scaled = *samples * 256U;
378 overflow += (scaled >> 8 != *samples);
384 s->decode_buffer =
NULL;
395 s->decode_buffer =
NULL;
404 s->decode_buffer =
NULL;
410 #define OFFSET(x) offsetof(TTAContext, x)
411 #define DEC (AV_OPT_FLAG_DECODING_PARAM | AV_OPT_FLAG_AUDIO_PARAM)
Libavcodec external API header.
#define AV_EF_CRCCHECK
Verify checksums embedded in the bitstream (could be of either encoded or decoded data,...
#define AV_EF_EXPLODE
abort decoding on minor error detection
static av_cold int init(AVCodecContext *avctx)
static av_always_inline void filter(int16_t *output, ptrdiff_t out_stride, const int16_t *low, ptrdiff_t low_stride, const int16_t *high, ptrdiff_t high_stride, int len, int clip)
Public header for CRC hash function implementation.
static void decode(AVCodecContext *dec_ctx, AVPacket *pkt, AVFrame *frame, FILE *outfile)
static void predictor(uint8_t *src, ptrdiff_t size)
bitstream reader API header.
static unsigned int show_bits_long(GetBitContext *s, int n)
Show 0-32 bits.
static unsigned int get_bits_long(GetBitContext *s, int n)
Read 0-32 bits.
static int get_bits_left(GetBitContext *gb)
static void skip_bits_long(GetBitContext *s, int n)
Skips the specified number of bits.
static int init_get_bits8(GetBitContext *s, const uint8_t *buffer, int byte_size)
Initialize GetBitContext.
static unsigned int get_bits(GetBitContext *s, int n)
Read 1-25 bits.
static const uint8_t * align_get_bits(GetBitContext *s)
#define AV_CH_LAYOUT_QUAD
#define AV_CH_LAYOUT_7POINT1_WIDE
#define AV_CH_LAYOUT_STEREO
#define AV_CH_LAYOUT_5POINT1_BACK
#define AV_CH_BACK_CENTER
#define AV_CH_LOW_FREQUENCY
#define AV_CODEC_CAP_DR1
Codec uses get_buffer() or get_encode_buffer() for allocating buffers and supports custom allocators.
#define AV_CODEC_CAP_CHANNEL_CONF
Codec should fill in channel configuration and samplerate instead of container.
#define AV_CODEC_CAP_FRAME_THREADS
Codec supports frame-level multithreading.
const AVCRC * av_crc_get_table(AVCRCId crc_id)
Get an initialized standard CRC table.
uint32_t av_crc(const AVCRC *ctx, uint32_t crc, const uint8_t *buffer, size_t length)
Calculate the CRC of a block.
#define AVERROR_INVALIDDATA
Invalid data found when processing input.
#define AV_LOG_DEBUG
Stuff which is only useful for libav* developers.
#define AV_LOG_WARNING
Something somehow does not look correct.
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
const char * av_default_item_name(void *ptr)
Return the context name.
void * av_mallocz_array(size_t nmemb, size_t size)
Allocate a memory block for an array with av_mallocz().
@ AV_SAMPLE_FMT_S32
signed 32 bits
@ AV_SAMPLE_FMT_S16
signed 16 bits
#define LIBAVUTIL_VERSION_INT
static const AVClass tta_decoder_class
static const AVOption options[]
static uint64_t tta_check_crc64(uint8_t *pass)
static av_cold int tta_decode_close(AVCodecContext *avctx)
static int allocate_buffers(AVCodecContext *avctx)
static int tta_decode_frame(AVCodecContext *avctx, void *data, int *got_frame_ptr, AVPacket *avpkt)
static const int64_t tta_channel_layouts[7]
static int tta_check_crc(TTAContext *s, const uint8_t *buf, int buf_size)
static av_cold int tta_decode_init(AVCodecContext *avctx)
common internal API header
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification.
static av_const int sign_extend(int val, unsigned bits)
FF_ENABLE_DEPRECATION_WARNINGS int ff_thread_get_buffer(AVCodecContext *avctx, ThreadFrame *f, int flags)
Wrapper around get_buffer() for frame-multithreaded codecs.
Describe the class of an AVClass context structure.
const char * class_name
The name of the class; usually it is the same name as the context structure type to which the AVClass...
main external API structure.
enum AVSampleFormat sample_fmt
audio sample format
int bits_per_coded_sample
bits per sample/pixel from the demuxer (needed for huffyuv).
int bits_per_raw_sample
Bits per sample/pixel of internal libavcodec pixel/sample format.
int sample_rate
samples per second
uint8_t * extradata
some codecs need / can use extradata like Huffman tables.
int channels
number of audio channels
int block_align
number of bytes per packet if constant and known or 0 Used by some WAV based audio codecs.
uint64_t channel_layout
Audio channel layout.
int err_recognition
Error recognition; may misdetect some more or less valid parts as errors.
const char * name
Name of the codec implementation.
This structure describes decoded (raw) audio or video data.
int nb_samples
number of audio samples (per channel) described by this frame
uint8_t * data[AV_NUM_DATA_POINTERS]
pointer to the picture/channel planes.
This structure stores compressed data.
#define av_malloc_array(a, b)
static void error(const char *err)
const uint32_t *const ff_tta_shift_16
const uint32_t ff_tta_shift_1[]
void ff_tta_rice_init(TTARice *c, uint32_t k0, uint32_t k1)
void ff_tta_filter_init(TTAFilter *c, int32_t shift)
const uint8_t ff_tta_filter_configs[]
av_cold void ff_ttadsp_init(TTADSPContext *c)
static int get_unary(GetBitContext *gb, int stop, int len)
Get unary code of limited length.