source: svn/newcon3bcm2_21bu/magnum/portinginterface/ape/7552/bape_studio_sound.h

Last change on this file was 76, checked in by megakiss, 10 years ago

1W 대기전력을 만족시키기 위하여 POWEROFF시 튜너를 Standby 상태로 함

  • Property svn:executable set to *
File size: 19.2 KB
Line 
1/***************************************************************************
2*     (c)2004-2011 Broadcom Corporation
3
4*  This program is the proprietary software of Broadcom Corporation and/or its licensors,
5*  and may only be used, duplicated, modified or distributed pursuant to the terms and
6*  conditions of a separate, written license agreement executed between you and Broadcom
7*  (an "Authorized License").  Except as set forth in an Authorized License, Broadcom grants
8*  no license (express or implied), right to use, or waiver of any kind with respect to the
9*  Software, and Broadcom expressly reserves all rights in and to the Software and all
10*  intellectual property rights therein.  IF YOU HAVE NO AUTHORIZED LICENSE, THEN YOU
11*  HAVE NO RIGHT TO USE THIS SOFTWARE IN ANY WAY, AND SHOULD IMMEDIATELY
12*  NOTIFY BROADCOM AND DISCONTINUE ALL USE OF THE SOFTWARE. 
13*   
14*  Except as expressly set forth in the Authorized License,
15*   
16*  1.     This program, including its structure, sequence and organization, constitutes the valuable trade
17*  secrets of Broadcom, and you shall use all reasonable efforts to protect the confidentiality thereof,
18*  and to use this information only in connection with your use of Broadcom integrated circuit products.
19*   
20*  2.     TO THE MAXIMUM EXTENT PERMITTED BY LAW, THE SOFTWARE IS PROVIDED "AS IS"
21*  AND WITH ALL FAULTS AND BROADCOM MAKES NO PROMISES, REPRESENTATIONS OR
22*  WARRANTIES, EITHER EXPRESS, IMPLIED, STATUTORY, OR OTHERWISE, WITH RESPECT TO
23*  THE SOFTWARE.  BROADCOM SPECIFICALLY DISCLAIMS ANY AND ALL IMPLIED WARRANTIES
24*  OF TITLE, MERCHANTABILITY, NONINFRINGEMENT, FITNESS FOR A PARTICULAR PURPOSE,
25*  LACK OF VIRUSES, ACCURACY OR COMPLETENESS, QUIET ENJOYMENT, QUIET POSSESSION
26*  OR CORRESPONDENCE TO DESCRIPTION. YOU ASSUME THE ENTIRE RISK ARISING OUT OF
27*  USE OR PERFORMANCE OF THE SOFTWARE.
28
29*  3.     TO THE MAXIMUM EXTENT PERMITTED BY LAW, IN NO EVENT SHALL BROADCOM OR ITS
30*  LICENSORS BE LIABLE FOR (i) CONSEQUENTIAL, INCIDENTAL, SPECIAL, INDIRECT, OR
31*  EXEMPLARY DAMAGES WHATSOEVER ARISING OUT OF OR IN ANY WAY RELATING TO YOUR
32*  USE OF OR INABILITY TO USE THE SOFTWARE EVEN IF BROADCOM HAS BEEN ADVISED OF
33*  THE POSSIBILITY OF SUCH DAMAGES; OR (ii) ANY AMOUNT IN EXCESS OF THE AMOUNT
34*  ACTUALLY PAID FOR THE SOFTWARE ITSELF OR U.S. $1, WHICHEVER IS GREATER. THESE
35*  LIMITATIONS SHALL APPLY NOTWITHSTANDING ANY FAILURE OF ESSENTIAL PURPOSE OF
36*  ANY LIMITED REMEDY.
37*
38* $brcm_Workfile: bape_studio_sound.h $
39* $brcm_Revision: Hydra_Software_Devel/2 $
40* $brcm_Date: 8/8/11 5:38p $
41*
42* API Description:
43*   API name: StudioSound
44*    Specific APIs related to SRS StudioSound Audio Processing
45*
46* Revision History:
47*
48* $brcm_Log: /magnum/portinginterface/ape/7422/bape_studio_sound.h $
49*
50* Hydra_Software_Devel/2   8/8/11 5:38p jgarrett
51* SWDTV-6761: Adding StudioSound
52*
53* Hydra_Software_Devel/1   7/15/11 5:51p jgarrett
54* SWDTV-6761: Adding StudioSound API
55*
56***************************************************************************/
57
58#ifndef BAPE_STUDIO_SOUND_H__
59#define BAPE_STUDIO_SOUND_H__
60
61#include "bape.h"
62#include "bape_tru_surround.h"
63#include "bape_tru_volume.h"
64
65/***************************************************************************
66Summary:
67StudioSound Handle
68***************************************************************************/
69typedef struct BAPE_StudioSound *BAPE_StudioSoundHandle;
70
71/***************************************************************************
72Summary:
73StudioSound Mode - Select the opearating mode of StudioSound. Default is Mode1.
74                   Based on mode, a few of the modules will be disabled by the driver internally.
75    Mode1: TruVolume(on), HPF(on), CircleSurround(on), TruSurroundHD(on), GEQ(off), HardLimiter(on), TruEQ(on)
76    Mode2: TruVolume(off), HPF(on), CircleSurround(off), TruSurroundHD(off), GEQ(on), HardLimiter(on), TruEq(on)
77
78Note: When TruVolume/CircleSurround/TruSurroundHD is off, a bypass gain of 1.0 will be used.
79***************************************************************************/
80typedef enum BAPE_StudioSoundMode
81{
82    BAPE_StudioSoundMode_eMode1,
83    BAPE_StudioSoundMode_eMode2,
84    BAPE_StudioSoundMode_eMax
85} BAPE_StudioSoundMode;
86
87/***************************************************************************
88Summary:
89SRS StudioSound Input Mode
90***************************************************************************/
91typedef enum BAPE_StudioSoundInputMode
92{
93    BAPE_StudioSoundInputMode_eMono,
94    BAPE_StudioSoundInputMode_eStereo,
95    BAPE_StudioSoundInputMode_eMultichannel,
96    BAPE_StudioSoundInputMode_eLtRt,
97    BAPE_StudioSoundInputMode_eMax
98} BAPE_StudioSoundInputMode;
99
100/***************************************************************************
101Summary:
102SRS CircleSurround Processing Mode
103***************************************************************************/
104typedef enum BAPE_CircleSurroundMode
105{
106    BAPE_CircleSurroundMode_eCinema,
107    BAPE_CircleSurroundMode_eMusic,
108    BAPE_CircleSurroundMode_eMax
109}BAPE_CircleSurroundMode;
110
111/***************************************************************************
112Summary:
113SRS CircleSurround Settings
114***************************************************************************/
115typedef struct BAPE_CircleSurroundSettings
116{
117    bool enabled;                       /* If true, CircleSurround processing is enabled. Default: true */
118
119    unsigned inputGain;                 /* Adjusts the signal level immediately prior to CircleSurround processing.  Range: 125 to 1000. Default: 1000 */
120    BAPE_CircleSurroundMode mode;       /* The CircleSurround processing mode. Default:  BAPE_CircleSurroundMode_eCinema */
121    unsigned outputMode;                /* 0: stereo ; 1: multichannel. Default: 0 (only 0 is supported) */
122    unsigned outputGainFront;           /* Output gain for the front (L/R). Range: 89 to 4000. Default: 1000 */
123    unsigned outputGainRear;            /* Output gain for the rear (Ls/Rs). Range: 89 to 4000. Default: 1000 */
124    unsigned outputGainCenter;          /* Output gain for the center. Range: 89 to 4000. Default: 1000 */
125    unsigned outputGainSubwoofer;       /* Output gain for the subwoofer. Range: 89 to 4000. Default: 1000 */
126} BAPE_CircleSurroundSettings;
127
128/***************************************************************************
129Summary:
130SRS TruDialog Settings
131***************************************************************************/
132typedef struct BAPE_TruDialogSettings
133{
134    bool enabled;               /* If true, TruDialog processing is enabled. Default: true */
135
136    unsigned inputGain;         /* Adjusts the signal level prior immediately prior to TruDialog processing.  Range: 0 to 100. Default: 100 */
137    unsigned outputGain;        /* Adjusts the signal level prior after TruDialog processing.  Range: 0 to 100. Default: 100 */
138    unsigned processGain;       /* Controls how much of the calculated final output gain is applied to the output signal, effectively
139                                   controlling how much the process will raise the dialog signal.  Range: 50 to 300. Default: 150 */
140    unsigned bypassGain;        /* Adjusts the signal level when TruDialog processing is disabled.  Range: 0 to 100. Default: 100 */
141    unsigned enhancementGain;  /*  The amount of vocal enhancement that is applied to the audio signal.  Range: 0 to 100. Default: 100 */
142} BAPE_TruDialogSettings;
143
144/***************************************************************************
145Summary:
146SRS Graphic EQ Band Modes
147***************************************************************************/
148typedef enum BAPE_SrsGraphicEqBandMode
149{
150    BAPE_SrsGraphicEqBandMode_eFiveBand,
151    BAPE_SrsGraphicEqBandMode_eTenBand,
152    BAPE_SrsGraphicEqBandMode_eSpeakerCompensation,
153    BAPE_SrsGraphicEqBandMode_eMax
154} BAPE_SrsGraphicEqBandMode;
155
156#define BAPE_STUDIO_SOUND_MAX_GEQ_BANDS    10
157/***************************************************************************
158Summary:
159SRS Graphic Equalizer Settings
160***************************************************************************/
161typedef struct BAPE_SrsGraphicEqSettings
162{
163    bool leftEnabled;           /* If true, left channel processing is enabled. Default: true */
164    bool rightEnabled;          /* If true, right channel processing is enabled. Default: true */
165    BAPE_SrsGraphicEqBandMode bandMode;  /* Graphic EQ band mode: 5-band or 10-band. Default BAPE_SrsGraphicEqBandMode_eFiveBand */
166    unsigned leftBandGain[BAPE_STUDIO_SOUND_MAX_GEQ_BANDS];   /* Left channel band gain.  Range for 5-band: 316 to 3160. Range for 10-band: 251 to 4000. Default: 1000 */
167    unsigned rightBandGain[BAPE_STUDIO_SOUND_MAX_GEQ_BANDS];  /* Right channel band gain.  Range for 5-band: 316 to 3160. Range for 10-band: 251 to 4000. Default: 1000 */
168    unsigned inputGain;         /* Adjusts the signal level prior immediately prior to Graphic Equalizer processing.  Range: 316 to 3160 Default: 316 */
169    unsigned outputGain;        /* Adjusts the signal level prior after Graphic Equalizer processing.  Range: 0 to 100. Default: 100 */
170    unsigned bypassGain;        /* Adjusts the signal level when Graphic Equalizer processing is disabled.  Range: 0 to 100. Default: 100 */
171} BAPE_SrsGraphicEqSettings;
172
173/***************************************************************************
174Summary:
175SRS TruEQ Filter parameters for coefficients specified by user
176***************************************************************************/
177typedef struct BAPE_TruEqFilterCoefficients
178{
179    BAPE_SrsFilterOrder filterOrder;    /* EQ filter order.  Default: BAPE_SrsFilterOrder_e2 */
180    unsigned scale;                     /* Specified q-format of the coefficients. (1+scale).(31-scale) format
181                                           Default: 1. scale=1 implies a q-format of 2.30 */
182    int coefficientB0;
183    int coefficientA1;
184    int coefficientB1;
185    int coefficientA2;
186    int coefficientB2;
187}BAPE_TruEqFilterCoefficients;
188
189/***************************************************************************
190Summary:
191SRS TruEQ Filter parameters for coefficients generated by specification
192***************************************************************************/
193typedef struct BAPE_TruEqFilterCoefficientSpecification
194{
195    int bandGain;    /*  Range: (-120 to 120). Default:0 Format: q24
196                         Range in dB: -12 to 12 db. Default: 0dB
197                         Range in Fixed point: 0x00404DE6 to 0x03FB2783 */
198
199    unsigned bandFrequency;     /*  Range: (20 - 20000)Hz. Default: 1000 Hz */
200    int qFactor;                /*  Range: (25 - 1600).  Default:200 Format: q24
201                                    Range in floating point: 0.25 to 16.0
202                                    Range in fixed point: 0x00400000 to 0x10000000 */
203}BAPE_TruEqFilterCoefficientSpecification;
204
205#define BAPE_STUDIO_SOUND_MAX_PEQ_BANDS    8
206/***************************************************************************
207Summary:
208SRS TruEQ Settings
209***************************************************************************/
210typedef struct BAPE_TruEqSettings
211{
212    bool leftEnabled;           /* If true, left channel processing is enabled. Default: true */
213    bool rightEnabled;          /* If true, right channel processing is enabled. Default: true */
214
215    bool leftBandEnabled[BAPE_STUDIO_SOUND_MAX_PEQ_BANDS];   /* If true, left channel processing is enabled for this band. Default: true */
216    bool rightBandEnabled[BAPE_STUDIO_SOUND_MAX_PEQ_BANDS];  /* If true, right channel processing is enabled for this band. Default: true */
217
218    unsigned inputGain;         /* Adjusts the signal level prior immediately prior to TruEQ processing.  Range: 0 to 100. Default: 100 */
219    unsigned outputGain;        /* Adjusts the signal level prior after TruEQ processing.  Range: 0 to 100. Default: 100 */
220    unsigned bypassGain;        /* Adjusts the signal level when TruEQ processing is disabled.  Range: 0 to 100. Default: 100 */
221
222    BAPE_SrsFilterCoefficientMode coefficientMode;  /* Coefficients generation mode. Default: BAPE_SrsFilterCoefGenMode_eFilterUser */
223    struct
224    {
225        BAPE_TruEqFilterCoefficients user[3][BAPE_STUDIO_SOUND_MAX_PEQ_BANDS];
226                                                                  /* The first array dimension indicates 3 sampling frequencies 32, 44.1 and 48kHz respectively
227                                                                     will be used if coefficientMode is BAPE_SrsFilterCoefficientMode_eUser */
228        BAPE_TruEqFilterCoefficientSpecification specification[BAPE_STUDIO_SOUND_MAX_PEQ_BANDS];
229                                                                  /* Filter specification for generating filter coeffcients,
230                                                                     will be used if eCoefGenMode is BAPE_SrsFilterCoefficientMode_eSpecification */
231    } coefficientSettings;
232} BAPE_TruEqSettings;
233
234/***************************************************************************
235Summary:
236SRS Hard Limiter Block Size
237***************************************************************************/
238typedef enum BAPE_SrsHardLimiterBlockSize
239{
240    BAPE_SrsHardLimiterBlockSize_e256,
241    BAPE_SrsHardLimiterBlockSize_e512,
242    BAPE_SrsHardLimiterBlockSize_e768,
243    BAPE_SrsHardLimiterBlockSize_e1024,
244    BAPE_SrsHardLimiterBlockSize_eMax
245} BAPE_SrsHardLimiterBlockSize;
246
247/***************************************************************************
248Summary:
249SRS Hard Limiter Settings
250***************************************************************************/
251typedef struct BAPE_SrsHardLimiterSettings
252{
253    bool enabled;                               /* If true, Hard limiter processing is enabled. Default: true */
254    BAPE_SrsHardLimiterBlockSize blockSize;     /* Processing block size. Default:  BAPE_SrsHardLimiterBlockSize_e256 */
255    unsigned inputGain;                         /* Adjusts the signal level prior immediately prior to hard limiter processing.  Range: 0 to 400. Default: 100 */
256    unsigned outputGain;                        /* Adjusts the signal level prior after hard limiter processing.  Range: 0 to 400. Default: 100 */
257    unsigned bypassGain;                        /* Adjusts the signal level when hard limiter processing is disabled.  Range: 0 to 100. Default: 100 */   
258    unsigned boost;                             /* Modifies the signal level within the context of the hard limiter, so that the signal
259                                                   will not exceed the hard limit level parameter.  Range: 1 to 256000. Default: 2820 */
260    unsigned level;                             /* Specifies the level over which no signal shall bel allowed to exceed.  Range: 3 to 100000. Default: 100000 */
261    unsigned delay;                             /* Specifies the length of the look-ahead delay line utilized in the hard limiter.  Range: 6 to 22.  Default: 22 */
262} BAPE_SrsHardLimiterSettings;
263
264/***************************************************************************
265Summary:
266SRS StudioSound Settings
267***************************************************************************/
268typedef struct BAPE_StudioSoundSettings
269{
270    bool enabled;               /* If true, processing is enabled.  Otherwise this stage is bypassed. Default: true */
271    BAPE_StudioSoundMode mode;  /* Pre-defined operation mode of StudioSound */
272    unsigned inputGain;         /* Adjusts the signal level prior to StudioSound processing.  Ranges from 0 to 100 in %. */
273    unsigned outputGain;        /* Adjusts the signal level after StudioSound processing.  Ranges from 0 to 100 in %. */
274    unsigned bypassGain;        /* Adjusts the signal level when StudioStound is disabled.  Ranges from 0 to 100 in %. */
275    unsigned headroomGain;      /* Provides headroom for intermediate calculations to avoid clipping.  Ranges from 0 to 100 in %. */
276    BAPE_StudioSoundInputMode inputMode; /* Channel configuration present in input. Default:  BAPE_StudioSoundInputMode_eLtRt */
277
278    BAPE_CircleSurroundSettings circleSurround;    /* CircleSurround settings */
279    BAPE_TruDialogSettings truDialog;              /* TruDialog settings */
280    BAPE_TruSurroundHdSettings truSurroundHd;      /* TruSurroundHd settings */
281    BAPE_TruVolumeSettings truVolume;              /* TruVolume settings */
282    BAPE_SrsGraphicEqSettings graphicEq;           /* Graphic Equalizer Settings */
283    BAPE_TruEqSettings truEq;                      /* TruEq Settings */
284    BAPE_SrsHighPassFilterSettings highPassFilter; /* High Pass Filter Settings */
285    BAPE_SrsHardLimiterSettings hardLimiter;       /* Hard Limiter Settings */
286} BAPE_StudioSoundSettings;
287
288/***************************************************************************
289Summary:
290    Get default settings for an SRS StudioSound stage
291***************************************************************************/
292void BAPE_StudioSound_GetDefaultSettings(
293    BAPE_StudioSoundSettings *pSettings   /* [out] default settings */
294    );
295
296/***************************************************************************
297Summary:
298    Open an SRS StudioSound stage
299***************************************************************************/
300BERR_Code BAPE_StudioSound_Create(
301    BAPE_Handle deviceHandle,
302    const BAPE_StudioSoundSettings *pSettings,
303    BAPE_StudioSoundHandle *pHandle
304    );
305
306/***************************************************************************
307Summary:
308    Close an SRS StudioSound stage
309   
310Description:
311    Input to the stage must be removed prior to closing.
312***************************************************************************/
313void BAPE_StudioSound_Destroy(
314    BAPE_StudioSoundHandle handle
315    );
316
317/***************************************************************************
318Summary:
319    Get Settings for an SRS StudioSound stage
320***************************************************************************/
321void BAPE_StudioSound_GetSettings(
322    BAPE_StudioSoundHandle handle,
323    BAPE_StudioSoundSettings *pSettings    /* [out] Settings */
324    );
325
326/***************************************************************************
327Summary:
328    Set Settings for an SRS StudioSound stage
329***************************************************************************/
330BERR_Code BAPE_StudioSound_SetSettings(
331    BAPE_StudioSoundHandle handle,
332    const BAPE_StudioSoundSettings *pSettings
333    );
334
335/***************************************************************************
336Summary:
337    Get the audio connector for an SRS StudioSound stage
338***************************************************************************/
339void BAPE_StudioSound_GetConnector(
340    BAPE_StudioSoundHandle handle,
341    BAPE_Connector *pConnector
342    );
343
344/***************************************************************************
345Summary:
346Add an input to this processing stage
347***************************************************************************/
348BERR_Code BAPE_StudioSound_AddInput(
349    BAPE_StudioSoundHandle handle,
350    BAPE_Connector input
351    );
352
353/***************************************************************************
354Summary:
355Remove an input from this processing stage
356***************************************************************************/
357BERR_Code BAPE_StudioSound_RemoveInput(
358    BAPE_StudioSoundHandle handle,
359    BAPE_Connector input
360    );
361
362/***************************************************************************
363Summary:
364Remove all inputs from this processing stage
365***************************************************************************/
366BERR_Code BAPE_StudioSound_RemoveAllInputs(
367    BAPE_StudioSoundHandle handle
368    );
369
370#endif /* #ifndef BAPE_STUDIO_SOUND_H__ */
371
372
Note: See TracBrowser for help on using the repository browser.