diff options
author | Fabrice Bellard <fabrice@bellard.org> | 2002-10-28 00:39:05 +0000 |
---|---|---|
committer | Fabrice Bellard <fabrice@bellard.org> | 2002-10-28 00:39:05 +0000 |
commit | 6107fa87b46f9147d9b572af72bdcf3e155dfd16 (patch) | |
tree | 6b43991441a790bcf293207bd99c55481796ce3b /libavcodec/ac3.h | |
parent | bb6f5690728486b71e280a295aef4c49d25ee758 (diff) | |
download | ffmpeg-6107fa87b46f9147d9b572af72bdcf3e155dfd16.tar.gz |
preparing integration of new AC3 decoder
Originally committed as revision 1089 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec/ac3.h')
-rw-r--r-- | libavcodec/ac3.h | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/libavcodec/ac3.h b/libavcodec/ac3.h new file mode 100644 index 0000000000..d62c3c168b --- /dev/null +++ b/libavcodec/ac3.h @@ -0,0 +1,56 @@ +/* + * Common code between AC3 encoder and decoder + * Copyright (c) 2000, 2001, 2002 Fabrice Bellard. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#define AC3_MAX_CODED_FRAME_SIZE 3840 /* in bytes */ +#define AC3_MAX_CHANNELS 6 /* including LFE channel */ + +#define NB_BLOCKS 6 /* number of PCM blocks inside an AC3 frame */ +#define AC3_FRAME_SIZE (NB_BLOCKS * 256) + +/* exponent encoding strategy */ +#define EXP_REUSE 0 +#define EXP_NEW 1 + +#define EXP_D15 1 +#define EXP_D25 2 +#define EXP_D45 3 + +typedef struct AC3BitAllocParameters { + int fscod; /* frequency */ + int halfratecod; + int sgain, sdecay, fdecay, dbknee, floor; + int cplfleak, cplsleak; +} AC3BitAllocParameters; + +extern const UINT16 ac3_freqs[3]; +extern const UINT16 ac3_bitratetab[19]; +extern const INT16 ac3_window[256]; +extern const UINT8 sdecaytab[4]; +extern const UINT8 fdecaytab[4]; +extern const UINT16 sgaintab[4]; +extern const UINT16 dbkneetab[4]; +extern const UINT16 floortab[8]; +extern const UINT16 fgaintab[8]; + +void ac3_common_init(void); +void ac3_parametric_bit_allocation(AC3BitAllocParameters *s, UINT8 *bap, + INT8 *exp, int start, int end, + int snroffset, int fgain, int is_lfe, + int deltbae,int deltnseg, + UINT8 *deltoffst, UINT8 *deltlen, UINT8 *deltba); |