annotate libfaad2/drm_dec.h @ 25661:293aeec83153

Replace the persistent CODECS_FLAG_SELECTED by a local "stringset" with an almost-trivial implementation. This allows making the builtin codec structs const, and it also makes clearer that this "selected" status is not used outside the init functions.
author reimar
date Sat, 12 Jan 2008 14:05:46 +0000
parents 59b6fa5b4201
children e83eef58b30a
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
18141
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
1 /*
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
2 ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
3 ** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
4 **
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
5 ** This program is free software; you can redistribute it and/or modify
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
6 ** it under the terms of the GNU General Public License as published by
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
7 ** the Free Software Foundation; either version 2 of the License, or
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
8 ** (at your option) any later version.
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
9 **
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
10 ** This program is distributed in the hope that it will be useful,
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
11 ** but WITHOUT ANY WARRANTY; without even the implied warranty of
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
12 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
13 ** GNU General Public License for more details.
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
14 **
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
15 ** You should have received a copy of the GNU General Public License
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
16 ** along with this program; if not, write to the Free Software
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
17 ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
18 **
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
19 ** Any non-GPL usage of this software or parts of this software is strictly
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
20 ** forbidden.
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
21 **
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
22 ** Commercial non-GPL licensing of this software is possible.
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
23 ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com.
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
24 **
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
25 ** $Id$
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
26 **/
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
27
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
28 #ifndef __DRM_DEC_H__
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
29 #define __DRM_DEC_H__
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
30
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
31 #ifdef __cplusplus
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
32 extern "C" {
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
33 #endif
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
34
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
35 #include "bits.h"
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
36
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
37 #define DRM_PARAMETRIC_STEREO 0
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
38 #define DRM_NUM_SA_BANDS 8
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
39 #define DRM_NUM_PAN_BANDS 20
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
40 #define NUM_OF_LINKS 3
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
41 #define NUM_OF_QMF_CHANNELS 64
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
42 #define NUM_OF_SUBSAMPLES 30
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
43 #define MAX_SA_BAND 46
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
44 #define MAX_PAN_BAND 64
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
45 #define MAX_DELAY 5
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
46
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
47 typedef struct
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
48 {
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
49 uint8_t drm_ps_data_available;
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
50 uint8_t bs_enable_sa;
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
51 uint8_t bs_enable_pan;
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
52
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
53 uint8_t bs_sa_dt_flag;
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
54 uint8_t bs_pan_dt_flag;
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
55
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
56 uint8_t g_last_had_sa;
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
57 uint8_t g_last_had_pan;
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
58
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
59 int8_t bs_sa_data[DRM_NUM_SA_BANDS];
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
60 int8_t bs_pan_data[DRM_NUM_PAN_BANDS];
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
61
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
62 int8_t g_sa_index[DRM_NUM_SA_BANDS];
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
63 int8_t g_pan_index[DRM_NUM_PAN_BANDS];
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
64 int8_t g_prev_sa_index[DRM_NUM_SA_BANDS];
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
65 int8_t g_prev_pan_index[DRM_NUM_PAN_BANDS];
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
66
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
67 int8_t sa_decode_error;
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
68 int8_t pan_decode_error;
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
69
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
70 int8_t g_last_good_sa_index[DRM_NUM_SA_BANDS];
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
71 int8_t g_last_good_pan_index[DRM_NUM_PAN_BANDS];
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
72
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
73 qmf_t SA[NUM_OF_SUBSAMPLES][MAX_SA_BAND];
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
74
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
75 complex_t d_buff[2][MAX_SA_BAND];
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
76 complex_t d2_buff[NUM_OF_LINKS][MAX_DELAY][MAX_SA_BAND];
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
77
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
78 uint8_t delay_buf_index_ser[NUM_OF_LINKS];
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
79
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
80 real_t prev_nrg[MAX_SA_BAND];
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
81 real_t prev_peakdiff[MAX_SA_BAND];
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
82 real_t peakdecay_fast[MAX_SA_BAND];
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
83 } drm_ps_info;
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
84
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
85
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
86 uint16_t drm_ps_data(drm_ps_info *ps, bitfile *ld);
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
87
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
88 drm_ps_info *drm_ps_init(void);
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
89 void drm_ps_free(drm_ps_info *ps);
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
90
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
91 uint8_t drm_ps_decode(drm_ps_info *ps, uint8_t guess, uint32_t samplerate, qmf_t X_left[38][64], qmf_t X_right[38][64]);
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
92
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
93 #ifdef __cplusplus
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
94 }
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
95 #endif
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
96 #endif
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents:
diff changeset
97