libavcodec/tta.c
Go to the documentation of this file.
1 /*
2  * TTA (The Lossless True Audio) decoder
3  * Copyright (c) 2006 Alex Beregszaszi
4  *
5  * This file is part of FFmpeg.
6  *
7  * FFmpeg is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU Lesser General Public
9  * License as published by the Free Software Foundation; either
10  * version 2.1 of the License, or (at your option) any later version.
11  *
12  * FFmpeg is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15  * Lesser General Public License for more details.
16  *
17  * You should have received a copy of the GNU Lesser General Public
18  * License along with FFmpeg; if not, write to the Free Software
19  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20  */
21 
22 /**
23  * @file
24  * TTA (The Lossless True Audio) decoder
25  * @see http://www.true-audio.com/
26  * @see http://tta.corecodec.org/
27  * @author Alex Beregszaszi
28  */
29 
30 #define BITSTREAM_READER_LE
31 //#define DEBUG
32 #include <limits.h>
33 #include "avcodec.h"
34 #include "get_bits.h"
35 #include "internal.h"
36 #include "libavutil/crc.h"
37 #include "libavutil/intreadwrite.h"
38 #include "libavutil/opt.h"
39 
40 #define FORMAT_SIMPLE 1
41 #define FORMAT_ENCRYPTED 2
42 
43 #define MAX_ORDER 16
44 typedef struct TTAFilter {
49 } TTAFilter;
50 
51 typedef struct TTARice {
52  uint32_t k0, k1, sum0, sum1;
53 } TTARice;
54 
55 typedef struct TTAChannel {
59 } TTAChannel;
60 
61 typedef struct TTAContext {
62  AVClass *class;
65  const AVCRC *crc_table;
66 
67  int format, channels, bps;
68  unsigned data_length;
69  int frame_length, last_frame_length;
70 
72 
73  uint8_t crc_pass[8];
76 } TTAContext;
77 
78 static const uint32_t shift_1[] = {
79  0x00000001, 0x00000002, 0x00000004, 0x00000008,
80  0x00000010, 0x00000020, 0x00000040, 0x00000080,
81  0x00000100, 0x00000200, 0x00000400, 0x00000800,
82  0x00001000, 0x00002000, 0x00004000, 0x00008000,
83  0x00010000, 0x00020000, 0x00040000, 0x00080000,
84  0x00100000, 0x00200000, 0x00400000, 0x00800000,
85  0x01000000, 0x02000000, 0x04000000, 0x08000000,
86  0x10000000, 0x20000000, 0x40000000, 0x80000000,
87  0x80000000, 0x80000000, 0x80000000, 0x80000000,
88  0x80000000, 0x80000000, 0x80000000, 0x80000000
89 };
90 
91 static const uint32_t * const shift_16 = shift_1 + 4;
92 
93 static const int32_t ttafilter_configs[4] = {
94  10,
95  9,
96  10,
97  12
98 };
99 
101  memset(c, 0, sizeof(TTAFilter));
102  if (s->format == FORMAT_ENCRYPTED) {
103  int i;
104  for (i = 0; i < 8; i++)
105  c->qm[i] = sign_extend(s->crc_pass[i], 8);
106  }
107  c->shift = shift;
108  c->round = shift_1[shift-1];
109 // c->round = 1 << (shift - 1);
110 }
111 
112 static inline void ttafilter_process(TTAFilter *c, int32_t *in)
113 {
114  register int32_t *dl = c->dl, *qm = c->qm, *dx = c->dx, sum = c->round;
115 
116  if (c->error < 0) {
117  qm[0] -= dx[0]; qm[1] -= dx[1]; qm[2] -= dx[2]; qm[3] -= dx[3];
118  qm[4] -= dx[4]; qm[5] -= dx[5]; qm[6] -= dx[6]; qm[7] -= dx[7];
119  } else if (c->error > 0) {
120  qm[0] += dx[0]; qm[1] += dx[1]; qm[2] += dx[2]; qm[3] += dx[3];
121  qm[4] += dx[4]; qm[5] += dx[5]; qm[6] += dx[6]; qm[7] += dx[7];
122  }
123 
124  sum += dl[0] * qm[0] + dl[1] * qm[1] + dl[2] * qm[2] + dl[3] * qm[3] +
125  dl[4] * qm[4] + dl[5] * qm[5] + dl[6] * qm[6] + dl[7] * qm[7];
126 
127  dx[0] = dx[1]; dx[1] = dx[2]; dx[2] = dx[3]; dx[3] = dx[4];
128  dl[0] = dl[1]; dl[1] = dl[2]; dl[2] = dl[3]; dl[3] = dl[4];
129 
130  dx[4] = ((dl[4] >> 30) | 1);
131  dx[5] = ((dl[5] >> 30) | 2) & ~1;
132  dx[6] = ((dl[6] >> 30) | 2) & ~1;
133  dx[7] = ((dl[7] >> 30) | 4) & ~3;
134 
135  c->error = *in;
136  *in += (sum >> c->shift);
137 
138  dl[4] = -dl[5]; dl[5] = -dl[6];
139  dl[6] = *in - dl[7]; dl[7] = *in;
140  dl[5] += dl[6]; dl[4] += dl[5];
141 }
142 
143 static void rice_init(TTARice *c, uint32_t k0, uint32_t k1)
144 {
145  c->k0 = k0;
146  c->k1 = k1;
147  c->sum0 = shift_16[k0];
148  c->sum1 = shift_16[k1];
149 }
150 
152 {
153  int ret = 0;
154 
155  // count ones
156  while (get_bits_left(gb) > 0 && get_bits1(gb))
157  ret++;
158  return ret;
159 }
160 
161 static const int64_t tta_channel_layouts[7] = {
165  0,
167  AV_CH_LAYOUT_5POINT1_BACK|AV_CH_BACK_CENTER,
169 };
170 
171 static int tta_check_crc(TTAContext *s, const uint8_t *buf, int buf_size)
172 {
173  uint32_t crc, CRC;
174 
175  CRC = AV_RL32(buf + buf_size);
176  crc = av_crc(s->crc_table, 0xFFFFFFFFU, buf, buf_size);
177  if (CRC != (crc ^ 0xFFFFFFFFU)) {
178  av_log(s->avctx, AV_LOG_ERROR, "CRC error\n");
179  return AVERROR_INVALIDDATA;
180  }
181 
182  return 0;
183 }
184 
185 static uint64_t tta_check_crc64(uint8_t *pass)
186 {
187  uint64_t crc = UINT64_MAX, poly = 0x42F0E1EBA9EA3693U;
188  uint8_t *end = pass + strlen(pass);
189  int i;
190 
191  while (pass < end) {
192  crc ^= (uint64_t)*pass++ << 56;
193  for (i = 0; i < 8; i++)
194  crc = (crc << 1) ^ (poly & (((int64_t) crc) >> 63));
195  }
196 
197  return crc ^ UINT64_MAX;
198 }
199 
201 {
202  TTAContext *s = avctx->priv_data;
203  int total_frames;
204 
205  s->avctx = avctx;
206 
207  // 30bytes includes a seektable with one frame
208  if (avctx->extradata_size < 30)
209  return AVERROR_INVALIDDATA;
210 
211  init_get_bits(&s->gb, avctx->extradata, avctx->extradata_size * 8);
212  if (show_bits_long(&s->gb, 32) == AV_RL32("TTA1"))
213  {
214  if (avctx->err_recognition & AV_EF_CRCCHECK) {
216  tta_check_crc(s, avctx->extradata, 18);
217  }
218 
219  /* signature */
220  skip_bits_long(&s->gb, 32);
221 
222  s->format = get_bits(&s->gb, 16);
223  if (s->format > 2) {
224  av_log(avctx, AV_LOG_ERROR, "Invalid format\n");
225  return AVERROR_INVALIDDATA;
226  }
227  if (s->format == FORMAT_ENCRYPTED) {
228  if (!s->pass) {
229  av_log(avctx, AV_LOG_ERROR, "Missing password for encrypted stream. Please use the -password option\n");
230  return AVERROR(EINVAL);
231  }
233  }
234  avctx->channels = s->channels = get_bits(&s->gb, 16);
235  if (s->channels > 1 && s->channels < 9)
237  avctx->bits_per_raw_sample = get_bits(&s->gb, 16);
238  s->bps = (avctx->bits_per_raw_sample + 7) / 8;
239  avctx->sample_rate = get_bits_long(&s->gb, 32);
240  s->data_length = get_bits_long(&s->gb, 32);
241  skip_bits_long(&s->gb, 32); // CRC32 of header
242 
243  if (s->channels == 0) {
244  av_log(avctx, AV_LOG_ERROR, "Invalid number of channels\n");
245  return AVERROR_INVALIDDATA;
246  } else if (avctx->sample_rate == 0) {
247  av_log(avctx, AV_LOG_ERROR, "Invalid samplerate\n");
248  return AVERROR_INVALIDDATA;
249  }
250 
251  switch(s->bps) {
252  case 1: avctx->sample_fmt = AV_SAMPLE_FMT_U8; break;
253  case 2:
254  avctx->sample_fmt = AV_SAMPLE_FMT_S16;
255  break;
256  case 3:
257  avctx->sample_fmt = AV_SAMPLE_FMT_S32;
258  break;
259  //case 4: avctx->sample_fmt = AV_SAMPLE_FMT_S32; break;
260  default:
261  av_log(avctx, AV_LOG_ERROR, "Invalid/unsupported sample format.\n");
262  return AVERROR_INVALIDDATA;
263  }
264 
265  // prevent overflow
266  if (avctx->sample_rate > 0x7FFFFFu) {
267  av_log(avctx, AV_LOG_ERROR, "sample_rate too large\n");
268  return AVERROR(EINVAL);
269  }
270  s->frame_length = 256 * avctx->sample_rate / 245;
271 
273  total_frames = s->data_length / s->frame_length +
274  (s->last_frame_length ? 1 : 0);
275 
276  av_log(avctx, AV_LOG_DEBUG, "format: %d chans: %d bps: %d rate: %d block: %d\n",
277  s->format, avctx->channels, avctx->bits_per_coded_sample, avctx->sample_rate,
278  avctx->block_align);
279  av_log(avctx, AV_LOG_DEBUG, "data_length: %d frame_length: %d last: %d total: %d\n",
280  s->data_length, s->frame_length, s->last_frame_length, total_frames);
281 
282  // FIXME: seek table
283  if (avctx->extradata_size <= 26 || total_frames > INT_MAX / 4 ||
284  avctx->extradata_size - 26 < total_frames * 4)
285  av_log(avctx, AV_LOG_WARNING, "Seek table missing or too small\n");
286  else if (avctx->err_recognition & AV_EF_CRCCHECK) {
287  if (tta_check_crc(s, avctx->extradata + 22, total_frames * 4))
288  return AVERROR_INVALIDDATA;
289  }
290  skip_bits_long(&s->gb, 32 * total_frames);
291  skip_bits_long(&s->gb, 32); // CRC32 of seektable
292 
293  if(s->frame_length >= UINT_MAX / (s->channels * sizeof(int32_t))){
294  av_log(avctx, AV_LOG_ERROR, "frame_length too large\n");
295  return AVERROR_INVALIDDATA;
296  }
297 
298  if (s->bps < 3) {
300  if (!s->decode_buffer)
301  return AVERROR(ENOMEM);
302  } else
303  s->decode_buffer = NULL;
304  s->ch_ctx = av_malloc(avctx->channels * sizeof(*s->ch_ctx));
305  if (!s->ch_ctx) {
306  av_freep(&s->decode_buffer);
307  return AVERROR(ENOMEM);
308  }
309  } else {
310  av_log(avctx, AV_LOG_ERROR, "Wrong extradata present\n");
311  return AVERROR_INVALIDDATA;
312  }
313 
314  return 0;
315 }
316 
317 static int tta_decode_frame(AVCodecContext *avctx, void *data,
318  int *got_frame_ptr, AVPacket *avpkt)
319 {
320  AVFrame *frame = data;
321  const uint8_t *buf = avpkt->data;
322  int buf_size = avpkt->size;
323  TTAContext *s = avctx->priv_data;
324  int i, ret;
325  int cur_chan = 0, framelen = s->frame_length;
326  int32_t *p;
327 
328  if (avctx->err_recognition & AV_EF_CRCCHECK) {
329  if (buf_size < 4 || tta_check_crc(s, buf, buf_size - 4))
330  return AVERROR_INVALIDDATA;
331  }
332 
333  init_get_bits(&s->gb, buf, buf_size*8);
334 
335  /* get output buffer */
336  frame->nb_samples = framelen;
337  if ((ret = ff_get_buffer(avctx, frame, 0)) < 0)
338  return ret;
339 
340  // decode directly to output buffer for 24-bit sample format
341  if (s->bps == 3)
342  s->decode_buffer = (int32_t *)frame->data[0];
343 
344  // init per channel states
345  for (i = 0; i < s->channels; i++) {
346  s->ch_ctx[i].predictor = 0;
348  rice_init(&s->ch_ctx[i].rice, 10, 10);
349  }
350 
351  i = 0;
352  for (p = s->decode_buffer; p < s->decode_buffer + (framelen * s->channels); p++) {
353  int32_t *predictor = &s->ch_ctx[cur_chan].predictor;
354  TTAFilter *filter = &s->ch_ctx[cur_chan].filter;
355  TTARice *rice = &s->ch_ctx[cur_chan].rice;
356  uint32_t unary, depth, k;
357  int32_t value;
358 
359  unary = tta_get_unary(&s->gb);
360 
361  if (unary == 0) {
362  depth = 0;
363  k = rice->k0;
364  } else {
365  depth = 1;
366  k = rice->k1;
367  unary--;
368  }
369 
370  if (get_bits_left(&s->gb) < k) {
371  ret = AVERROR_INVALIDDATA;
372  goto error;
373  }
374 
375  if (k) {
376  if (k > MIN_CACHE_BITS) {
377  ret = AVERROR_INVALIDDATA;
378  goto error;
379  }
380  value = (unary << k) + get_bits(&s->gb, k);
381  } else
382  value = unary;
383 
384  // FIXME: copy paste from original
385  switch (depth) {
386  case 1:
387  rice->sum1 += value - (rice->sum1 >> 4);
388  if (rice->k1 > 0 && rice->sum1 < shift_16[rice->k1])
389  rice->k1--;
390  else if(rice->sum1 > shift_16[rice->k1 + 1])
391  rice->k1++;
392  value += shift_1[rice->k0];
393  default:
394  rice->sum0 += value - (rice->sum0 >> 4);
395  if (rice->k0 > 0 && rice->sum0 < shift_16[rice->k0])
396  rice->k0--;
397  else if(rice->sum0 > shift_16[rice->k0 + 1])
398  rice->k0++;
399  }
400 
401  // extract coded value
402  *p = 1 + ((value >> 1) ^ ((value & 1) - 1));
403 
404  // run hybrid filter
405  ttafilter_process(filter, p);
406 
407  // fixed order prediction
408 #define PRED(x, k) (int32_t)((((uint64_t)x << k) - x) >> k)
409  switch (s->bps) {
410  case 1: *p += PRED(*predictor, 4); break;
411  case 2:
412  case 3: *p += PRED(*predictor, 5); break;
413  case 4: *p += *predictor; break;
414  }
415  *predictor = *p;
416 
417  // flip channels
418  if (cur_chan < (s->channels-1))
419  cur_chan++;
420  else {
421  // decorrelate in case of multiple channels
422  if (s->channels > 1) {
423  int32_t *r = p - 1;
424  for (*p += *r / 2; r > p - s->channels; r--)
425  *r = *(r + 1) - *r;
426  }
427  cur_chan = 0;
428  i++;
429  // check for last frame
430  if (i == s->last_frame_length && get_bits_left(&s->gb) / 8 == 4) {
431  frame->nb_samples = framelen = s->last_frame_length;
432  break;
433  }
434  }
435  }
436 
437  align_get_bits(&s->gb);
438  if (get_bits_left(&s->gb) < 32) {
439  ret = AVERROR_INVALIDDATA;
440  goto error;
441  }
442  skip_bits_long(&s->gb, 32); // frame crc
443 
444  // convert to output buffer
445  switch (s->bps) {
446  case 1: {
447  uint8_t *samples = (uint8_t *)frame->data[0];
448  for (p = s->decode_buffer; p < s->decode_buffer + (framelen * s->channels); p++)
449  *samples++ = *p + 0x80;
450  break;
451  }
452  case 2: {
453  int16_t *samples = (int16_t *)frame->data[0];
454  for (p = s->decode_buffer; p < s->decode_buffer + (framelen * s->channels); p++)
455  *samples++ = *p;
456  break;
457  }
458  case 3: {
459  // shift samples for 24-bit sample format
460  int32_t *samples = (int32_t *)frame->data[0];
461  for (p = s->decode_buffer; p < s->decode_buffer + (framelen * s->channels); p++)
462  *samples++ <<= 8;
463  // reset decode buffer
464  s->decode_buffer = NULL;
465  break;
466  }
467  }
468 
469  *got_frame_ptr = 1;
470 
471  return buf_size;
472 error:
473  // reset decode buffer
474  if (s->bps == 3)
475  s->decode_buffer = NULL;
476  return ret;
477 }
478 
480  TTAContext *s = avctx->priv_data;
481 
482  if (s->bps < 3)
484  s->decode_buffer = NULL;
485  av_freep(&s->ch_ctx);
486 
487  return 0;
488 }
489 
490 #define OFFSET(x) offsetof(TTAContext, x)
491 #define DEC (AV_OPT_FLAG_DECODING_PARAM | AV_OPT_FLAG_AUDIO_PARAM)
492 static const AVOption options[] = {
493  { "password", "Set decoding password", OFFSET(pass), AV_OPT_TYPE_STRING, { .str = NULL }, 0, 0, DEC },
494  { NULL },
495 };
496 
497 static const AVClass tta_decoder_class = {
498  .class_name = "TTA Decoder",
499  .item_name = av_default_item_name,
500  .option = options,
501  .version = LIBAVUTIL_VERSION_INT,
502 };
503 
505  .name = "tta",
506  .type = AVMEDIA_TYPE_AUDIO,
507  .id = AV_CODEC_ID_TTA,
508  .priv_data_size = sizeof(TTAContext),
512  .capabilities = CODEC_CAP_DR1,
513  .long_name = NULL_IF_CONFIG_SMALL("TTA (True Audio)"),
514  .priv_class = &tta_decoder_class,
515 };
static unsigned int show_bits_long(GetBitContext *s, int n)
Show 0-32 bits.
Definition: get_bits.h:352
static int tta_check_crc(TTAContext *s, const uint8_t *buf, int buf_size)
void * av_mallocz(size_t size)
Allocate a block of size bytes with alignment suitable for all memory accesses (including vectors if ...
Definition: mem.c:205
uint32_t poly
Definition: crc.c:217
const char * s
Definition: avisynth_c.h:668
#define AVERROR_INVALIDDATA
Invalid data found when processing input.
Definition: error.h:59
static void rice_init(TTARice *c, uint32_t k0, uint32_t k1)
This structure describes decoded (raw) audio or video data.
Definition: frame.h:76
uint32_t av_crc(const AVCRC *ctx, uint32_t crc, const uint8_t *buffer, size_t length)
Calculate the CRC of a block.
Definition: crc.c:275
AVOption.
Definition: opt.h:251
TTAChannel * ch_ctx
av_default_item_name
static unsigned int get_bits(GetBitContext *s, int n)
Read 1-25 bits.
Definition: get_bits.h:240
static void skip_bits_long(GetBitContext *s, int n)
Definition: get_bits.h:198
static av_cold int init(AVCodecContext *avctx)
Definition: avrndec.c:35
static av_cold int tta_decode_init(AVCodecContext *avctx)
#define AV_LOG_WARNING
Something somehow does not look correct.
Definition: log.h:154
static int tta_decode_frame(AVCodecContext *avctx, void *data, int *got_frame_ptr, AVPacket *avpkt)
int32_t predictor
About Git write you should know how to use GIT properly Luckily Git comes with excellent documentation git help man git shows you the available git< command > help man git< command > shows information about the subcommand< command > The most comprehensive manual is the website Git Reference visit they are quite exhaustive You do not need a special username or password All you need is to provide a ssh public key to the Git server admin What follows now is a basic introduction to Git and some FFmpeg specific guidelines Read it at least if you are granted commit privileges to the FFmpeg project you are expected to be familiar with these rules I if not You can get git from etc no matter how small Every one of them has been saved from looking like a fool by this many times It s very easy for stray debug output or cosmetic modifications to slip in
Definition: git-howto.txt:5
#define pass
Definition: fft.c:335
int bits_per_raw_sample
Bits per sample/pixel of internal libavcodec pixel/sample format.
#define AV_CH_LAYOUT_STEREO
GetBitContext gb
signed 16 bits
Definition: samplefmt.h:52
static const int64_t tta_channel_layouts[7]
int block_align
number of bytes per packet if constant and known or 0 Used by some WAV based audio codecs...
static int tta_get_unary(GetBitContext *gb)
void av_freep(void *arg)
Free a memory block which has been allocated with av_malloc(z)() or av_realloc() and set the pointer ...
Definition: mem.c:198
const char * class_name
The name of the class; usually it is the same name as the context structure type to which the AVClass...
Definition: log.h:55
struct TTAFilter TTAFilter
int32_t error
int32_t round
static av_cold int tta_decode_close(AVCodecContext *avctx)
static const uint32_t *const shift_16
enum AVSampleFormat sample_fmt
audio sample format
uint8_t
#define av_cold
Definition: attributes.h:78
AV_SAMPLE_FMT_U8
static void ttafilter_init(TTAContext *s, TTAFilter *c, int32_t shift)
AVOptions.
const AVCRC * av_crc_get_table(AVCRCId crc_id)
Get an initialized standard CRC table.
Definition: crc.c:261
end end
static uint64_t tta_check_crc64(uint8_t *pass)
uint8_t * extradata
some codecs need / can use extradata like Huffman tables.
#define AV_CH_LOW_FREQUENCY
#define CODEC_CAP_DR1
Codec uses get_buffer() for allocating buffers and supports custom allocators.
the mask is usually to keep the same permissions Filters should remove permissions on reference they give to output whenever necessary It can be automatically done by setting the rej_perms field on the output pad Here are a few guidelines corresponding to common then the filter should push the output frames on the output link immediately As an exception to the previous rule if the input frame is enough to produce several output frames then the filter needs output only at least one per link The additional frames can be left buffered in the filter
uint8_t * data
static const AVOption options[]
int32_t qm[MAX_ORDER]
bitstream reader API header.
int32_t shift
int bits_per_coded_sample
bits per sample/pixel from the demuxer (needed for huffyuv).
uint8_t crc_pass[8]
frame
Definition: stft.m:14
static void predictor(uint8_t *src, int size)
Definition: exr.c:188
#define U(x)
static int get_bits_left(GetBitContext *gb)
Definition: get_bits.h:557
static const uint32_t shift_1[]
void av_free(void *ptr)
Free a memory block which has been allocated with av_malloc(z)() or av_realloc(). ...
Definition: mem.c:183
struct TTAContext TTAContext
AVCodec ff_tta_decoder
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification. ...
struct TTAChannel TTAChannel
Spectrum Plot time data
const char * r
Definition: vf_curves.c:94
#define AV_CH_LAYOUT_QUAD
void av_log(void *avcl, int level, const char *fmt,...)
Definition: log.c:246
const char * name
Name of the codec implementation.
external API header
#define OFFSET(x)
const AVCRC * crc_table
int depth
Definition: v4l.c:62
uint32_t sum1
uint64_t channel_layout
Audio channel layout.
unsigned data_length
signed 32 bits
Definition: samplefmt.h:53
struct TTARice TTARice
int err_recognition
Error recognition; may misdetect some more or less valid parts as errors.
ret
Definition: avfilter.c:821
int32_t
#define AV_RL32
static void ttafilter_process(TTAFilter *c, int32_t *in)
#define AV_CH_LAYOUT_5POINT1_BACK
LIBAVUTIL_VERSION_INT
Definition: eval.c:55
uint32_t k1
for k
NULL
Definition: eval.c:55
AVCodecContext * avctx
static const AVClass tta_decoder_class
int sample_rate
samples per second
main external API structure.
static void close(AVCodecParserContext *s)
Definition: h264_parser.c:375
int32_t dx[MAX_ORDER]
int ff_get_buffer(AVCodecContext *avctx, AVFrame *frame, int flags)
Get a buffer for a frame.
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
Definition: log.h:148
void * buf
Definition: avisynth_c.h:594
static unsigned int get_bits1(GetBitContext *s)
Definition: get_bits.h:273
double value
Definition: eval.c:82
void * av_malloc(size_t size)
Allocate a block of size bytes with alignment suitable for all memory accesses (including vectors if ...
Definition: mem.c:73
Describe the class of an AVClass context structure.
Definition: log.h:50
synthesis window for stochastic i
#define DEC
static int init_get_bits(GetBitContext *s, const uint8_t *buffer, int bit_size)
Initialize GetBitContext.
Definition: get_bits.h:379
uint8_t * pass
static unsigned int get_bits_long(GetBitContext *s, int n)
Read 0-32 bits.
Definition: get_bits.h:306
Filter the word “frame” indicates either a video frame or a group of audio as stored in an AVFilterBuffer structure Format for each input and each output the list of supported formats For video that means pixel format For audio that means channel sample they are references to shared objects When the negotiation mechanism computes the intersection of the formats supported at each end of a all references to both lists are replaced with a reference to the intersection And when a single format is eventually chosen for a link amongst the remaining all references to the list are updated That means that if a filter requires that its input and output have the same format amongst a supported all it has to do is use a reference to the same list of formats query_formats can leave some formats unset and return AVERROR(EAGAIN) to cause the negotiation mechanism toagain later.That can be used by filters with complex requirements to use the format negotiated on one link to set the formats supported on another.Buffer references ownership and permissions
int last_frame_length
#define MIN_CACHE_BITS
Definition: get_bits.h:122
static av_const int sign_extend(int val, unsigned bits)
Definition: mathops.h:123
static const int32_t ttafilter_configs[4]
#define AV_CH_BACK_CENTER
#define AV_CH_LAYOUT_7POINT1_WIDE
uint8_t * data[AV_NUM_DATA_POINTERS]
pointer to the picture/channel planes.
Definition: frame.h:87
uint32_t k0
#define PRED(x, k)
common internal api header.
#define AV_WL64(p, darg)
Definition: intreadwrite.h:328
#define AV_LOG_DEBUG
Stuff which is only useful for libav* developers.
Definition: log.h:162
static double c[64]
int32_t * decode_buffer
uint32_t AVCRC
Definition: crc.h:28
unsigned bps
Definition: movenc.c:895
#define AV_EF_CRCCHECK
TTAFilter filter
int channels
number of audio channels
int32_t dl[MAX_ORDER]
#define FORMAT_ENCRYPTED
static const uint8_t * align_get_bits(GetBitContext *s)
Definition: get_bits.h:418
Filter the word “frame” indicates either a video frame or a group of audio samples
static int decode(AVCodecContext *avctx, void *data, int *got_frame, AVPacket *avpkt)
Definition: crystalhd.c:868
#define MAX_ORDER
TTARice rice
This structure stores compressed data.
int nb_samples
number of audio samples (per channel) described by this frame
Definition: frame.h:127
for(j=16;j >0;--j)
uint32_t sum0