Mercurial > libavcodec.hg
comparison ac3dec.c @ 1064:b32afefe7d33 libavcodec
* UINTX -> uintx_t INTX -> intx_t
| author | kabi |
|---|---|
| date | Tue, 11 Feb 2003 16:35:48 +0000 |
| parents | 718a22dc121f |
| children | 1e39f273ecd6 |
comparison
equal
deleted
inserted
replaced
| 1063:fdeac9642346 | 1064:b32afefe7d33 |
|---|---|
| 20 #include "libac3/ac3.h" | 20 #include "libac3/ac3.h" |
| 21 | 21 |
| 22 /* currently, I use libac3 which is Copyright (C) Aaron Holtzman and | 22 /* currently, I use libac3 which is Copyright (C) Aaron Holtzman and |
| 23 released under the GPL license. I may reimplement it someday... */ | 23 released under the GPL license. I may reimplement it someday... */ |
| 24 typedef struct AC3DecodeState { | 24 typedef struct AC3DecodeState { |
| 25 UINT8 inbuf[4096]; /* input buffer */ | 25 uint8_t inbuf[4096]; /* input buffer */ |
| 26 UINT8 *inbuf_ptr; | 26 uint8_t *inbuf_ptr; |
| 27 int frame_size; | 27 int frame_size; |
| 28 int flags; | 28 int flags; |
| 29 int channels; | 29 int channels; |
| 30 ac3_state_t state; | 30 ac3_state_t state; |
| 31 } AC3DecodeState; | 31 } AC3DecodeState; |
| 51 return -32768; | 51 return -32768; |
| 52 else | 52 else |
| 53 return i - 0x43c00000; | 53 return i - 0x43c00000; |
| 54 } | 54 } |
| 55 | 55 |
| 56 static inline void float_to_int (float * _f, INT16 * s16, int nchannels) | 56 static inline void float_to_int (float * _f, int16_t * s16, int nchannels) |
| 57 { | 57 { |
| 58 int i, j, c; | 58 int i, j, c; |
| 59 int32_t * f = (int32_t *) _f; // XXX assumes IEEE float format | 59 int32_t * f = (int32_t *) _f; // XXX assumes IEEE float format |
| 60 | 60 |
| 61 j = 0; | 61 j = 0; |
| 70 | 70 |
| 71 #define HEADER_SIZE 7 | 71 #define HEADER_SIZE 7 |
| 72 | 72 |
| 73 static int ac3_decode_frame(AVCodecContext *avctx, | 73 static int ac3_decode_frame(AVCodecContext *avctx, |
| 74 void *data, int *data_size, | 74 void *data, int *data_size, |
| 75 UINT8 *buf, int buf_size) | 75 uint8_t *buf, int buf_size) |
| 76 { | 76 { |
| 77 AC3DecodeState *s = avctx->priv_data; | 77 AC3DecodeState *s = avctx->priv_data; |
| 78 UINT8 *buf_ptr; | 78 uint8_t *buf_ptr; |
| 79 int flags, i, len; | 79 int flags, i, len; |
| 80 int sample_rate, bit_rate; | 80 int sample_rate, bit_rate; |
| 81 short *out_samples = data; | 81 short *out_samples = data; |
| 82 float level; | 82 float level; |
| 83 static const int ac3_channels[8] = { | 83 static const int ac3_channels[8] = { |
| 149 goto fail; | 149 goto fail; |
| 150 float_to_int (*samples, out_samples + i * 256 * avctx->channels, avctx->channels); | 150 float_to_int (*samples, out_samples + i * 256 * avctx->channels, avctx->channels); |
| 151 } | 151 } |
| 152 s->inbuf_ptr = s->inbuf; | 152 s->inbuf_ptr = s->inbuf; |
| 153 s->frame_size = 0; | 153 s->frame_size = 0; |
| 154 *data_size = 6 * avctx->channels * 256 * sizeof(INT16); | 154 *data_size = 6 * avctx->channels * 256 * sizeof(int16_t); |
| 155 break; | 155 break; |
| 156 } | 156 } |
| 157 } | 157 } |
| 158 return buf_ptr - buf; | 158 return buf_ptr - buf; |
| 159 } | 159 } |
