author | kergoth <kergoth> | 2002-01-25 22:14:26 (UTC) |
---|---|---|
committer | kergoth <kergoth> | 2002-01-25 22:14:26 (UTC) |
commit | 15318cad33835e4e2dc620d033e43cd930676cdd (patch) (side-by-side diff) | |
tree | c2fa0399a2c47fda8e2cd0092c73a809d17f68eb /core/multimedia/opieplayer/libmpeg3/audio/mpeg3audio.h | |
download | opie-15318cad33835e4e2dc620d033e43cd930676cdd.zip opie-15318cad33835e4e2dc620d033e43cd930676cdd.tar.gz opie-15318cad33835e4e2dc620d033e43cd930676cdd.tar.bz2 |
Initial revision
Diffstat (limited to 'core/multimedia/opieplayer/libmpeg3/audio/mpeg3audio.h') (more/less context) (ignore whitespace changes)
-rw-r--r-- | core/multimedia/opieplayer/libmpeg3/audio/mpeg3audio.h | 144 |
1 files changed, 144 insertions, 0 deletions
diff --git a/core/multimedia/opieplayer/libmpeg3/audio/mpeg3audio.h b/core/multimedia/opieplayer/libmpeg3/audio/mpeg3audio.h new file mode 100644 index 0000000..2117be7 --- a/dev/null +++ b/core/multimedia/opieplayer/libmpeg3/audio/mpeg3audio.h @@ -0,0 +1,144 @@ +/********************************************************************** +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of Qtopia Environment. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ +#ifndef MPEG3AUDIO_H +#define MPEG3AUDIO_H + +#include "ac3.h" +#include "../bitstream.h" +typedef struct mpeg3_atrack_rec mpeg3_atrack_t; + +#define MAXFRAMESIZE 1792 +#define HDRCMPMASK 0xfffffd00 +#define SBLIMIT 32 +#define SSLIMIT 18 +#define SCALE_BLOCK 12 +#define MPEG3AUDIO_PADDING 1024 + +/* Values for mode */ +#define MPG_MD_STEREO 0 +#define MPG_MD_JOINT_STEREO 1 +#define MPG_MD_DUAL_CHANNEL 2 +#define MPG_MD_MONO 3 + +/* IMDCT variables */ +typedef struct +{ + mpeg3_real_t real; + mpeg3_real_t imag; +} mpeg3_complex_t; + +#define AC3_N 512 + +struct al_table +{ + short bits; + short d; +}; + +typedef struct +{ + struct mpeg3_rec* file; + mpeg3_atrack_t* track; + mpeg3_bits_t *astream; + +/* In order of importance */ + int format; /* format of audio */ + int layer; /* layer if mpeg */ + int channels; + long outscale; + long framenum; + long prev_framesize; + long framesize; /* For mp3 current framesize without header. For AC3 current framesize with header. */ + int avg_framesize; /* Includes the 4 byte header */ + mpeg3_real_t *pcm_sample; /* Interlaced output from synthesizer in floats */ + int pcm_point; /* Float offset in pcm_sample to write to */ + long pcm_position; /* Sample start of pcm_samples in file */ + long pcm_size; /* Number of pcm samples in the buffer */ + long pcm_allocated; /* Allocated number of samples in pcm_samples */ + int sample_seek; + double percentage_seek; + unsigned long oldhead; + unsigned long newhead; + unsigned long firsthead; + int bsnum; + int lsf; + int mpeg35; + int sampling_frequency_code; + int bitrate_index; + int bitrate; + int samples_per_frame; + int padding; + int extension; + int mode; + int mode_ext; + int copyright; + int original; + int emphasis; + int error_protection; + +/* Back step buffers for mp3 */ + unsigned char bsspace[2][MAXFRAMESIZE + 512]; /* MAXFRAMESIZE */ + unsigned char *bsbuf, *bsbufold; + long ssize; + int init; + int single; + struct al_table *alloc; + int II_sblimit; + int jsbound; + int bo; /* Static variable in synthesizer */ + +/* MP3 Static arrays here */ + mpeg3_real_t synth_stereo_buffs[2][2][0x110]; + mpeg3_real_t synth_mono_buff[64]; + unsigned int layer2_scfsi_buf[64]; + + mpeg3_real_t mp3_block[2][2][SBLIMIT * SSLIMIT]; + int mp3_blc[2]; + +/* AC3 specific stuff. AC3 also shares objects with MPEG */ + unsigned int ac3_framesize_code; + mpeg3_ac3bsi_t ac3_bsi; + mpeg3_ac3audblk_t ac3_audblk; + mpeg3_ac3_bitallocation_t ac3_bit_allocation; + mpeg3_ac3_mantissa_t ac3_mantissa; + mpeg3_complex_t ac3_imdct_buf[AC3_N / 4]; + +/* Delay buffer for DCT interleaving */ + mpeg3_real_t ac3_delay[6][AC3_N / 2]; +/* Twiddle factor LUT */ + mpeg3_complex_t *ac3_w[7]; +#if !defined(USE_FIXED_POINT) || defined(PRINT_FIXED_POINT_TABLES) + /* Just for allocated memory */ + mpeg3_complex_t ac3_w_1[1]; + mpeg3_complex_t ac3_w_2[2]; + mpeg3_complex_t ac3_w_4[4]; + mpeg3_complex_t ac3_w_8[8]; + mpeg3_complex_t ac3_w_16[16]; + mpeg3_complex_t ac3_w_32[32]; + mpeg3_complex_t ac3_w_64[64]; +#endif + int ac3_lfsr_state; + unsigned char ac3_buffer[MAX_AC3_FRAMESIZE]; + mpeg3ac3_stream_samples_t ac3_samples; +} mpeg3audio_t; + + + +#endif |