| /*---------------------------------------------------------------------------- |
| * |
| * File: |
| * eas_config.c |
| * |
| * Contents and purpose: |
| * This file contains the Configuration Module interface (CM). The CM |
| * is a module compiled external to the library that sets the configuration |
| * for this build. It allows the library to find optional components and |
| * links to static memory allocations (when used in a static configuration). |
| * |
| * DO NOT MODIFY THIS FILE! |
| * |
| * NOTE: This module is not intended to be modified by the customer. It |
| * needs to be included in the build process with the correct configuration |
| * defines (see the library documentation for information on how to configure |
| * the library). |
| * |
| * Copyright Sonic Network Inc. 2004-2006 |
| |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| * |
| *---------------------------------------------------------------------------- |
| * Revision Control: |
| * $Revision: 796 $ |
| * $Date: 2007-08-01 00:15:25 -0700 (Wed, 01 Aug 2007) $ |
| *---------------------------------------------------------------------------- |
| */ |
| |
| #include "eas.h" |
| #include "eas_config.h" |
| |
| |
| #ifdef _MFI_PARSER |
| /*---------------------------------------------------------------------------- |
| * Vendor/Device ID for MFi Extensions |
| * |
| * Define the preprocessor symbols to establish the vendor ID and |
| * device ID for the MFi PCM/ADPCM extensions. |
| *---------------------------------------------------------------------------- |
| */ |
| const EAS_U8 eas_MFIVendorIDMSB = (MFI_VENDOR_ID >> 8) & 0xff; |
| const EAS_U8 eas_MFIVendorIDLSB = MFI_VENDOR_ID & 0xff; |
| const EAS_U8 eas_MFIDeviceID = MFI_DEVICE_ID; |
| #endif |
| |
| /*---------------------------------------------------------------------------- |
| * |
| * parserModules |
| * |
| * This structure is used by the EAS library to locate file parsing |
| * modules. |
| *---------------------------------------------------------------------------- |
| */ |
| |
| /* define the external file parsers */ |
| extern EAS_VOID_PTR EAS_SMF_Parser; |
| |
| #ifdef _XMF_PARSER |
| extern EAS_VOID_PTR EAS_XMF_Parser; |
| #endif |
| |
| #ifdef _SMAF_PARSER |
| extern EAS_VOID_PTR EAS_SMAF_Parser; |
| #endif |
| |
| #ifdef _WAVE_PARSER |
| extern EAS_VOID_PTR EAS_Wave_Parser; |
| #endif |
| |
| #ifdef _OTA_PARSER |
| extern EAS_VOID_PTR EAS_OTA_Parser; |
| #endif |
| |
| #ifdef _IMELODY_PARSER |
| extern EAS_VOID_PTR EAS_iMelody_Parser; |
| #endif |
| |
| #ifdef _RTTTL_PARSER |
| extern EAS_VOID_PTR EAS_RTTTL_Parser; |
| #endif |
| |
| #if defined (_CMX_PARSER) || defined(_MFI_PARSER) |
| extern EAS_VOID_PTR EAS_CMF_Parser; |
| #endif |
| |
| /* initalize pointers to parser interfaces */ |
| /*lint -e{605} not pretty, but it works */ |
| EAS_VOID_PTR const parserModules[] = |
| { |
| &EAS_SMF_Parser, |
| |
| #ifdef _XMF_PARSER |
| &EAS_XMF_Parser, |
| #endif |
| |
| #ifdef _WAVE_PARSER |
| &EAS_Wave_Parser, |
| #endif |
| |
| #ifdef _SMAF_PARSER |
| &EAS_SMAF_Parser, |
| #endif |
| |
| #ifdef _OTA_PARSER |
| &EAS_OTA_Parser, |
| #endif |
| |
| #ifdef _IMELODY_PARSER |
| &EAS_iMelody_Parser, |
| #endif |
| |
| #ifdef _RTTTL_PARSER |
| &EAS_RTTTL_Parser, |
| #endif |
| |
| #if defined (_CMX_PARSER) || defined(_MFI_PARSER) |
| &EAS_CMF_Parser |
| #endif |
| }; |
| #define NUM_PARSER_MODULES (sizeof(parserModules) / sizeof(EAS_VOID_PTR)) |
| |
| /*---------------------------------------------------------------------------- |
| * Data Modules |
| *---------------------------------------------------------------------------- |
| */ |
| |
| #ifdef _STATIC_MEMORY |
| extern EAS_VOID_PTR eas_SMFData; |
| extern EAS_VOID_PTR eas_Data; |
| extern EAS_VOID_PTR eas_MixBuffer; |
| extern EAS_VOID_PTR eas_Synth; |
| extern EAS_VOID_PTR eas_MIDI; |
| extern EAS_VOID_PTR eas_PCMData; |
| extern EAS_VOID_PTR eas_MIDIData; |
| |
| #ifdef _XMF_PARSER |
| extern EAS_VOID_PTR eas_XMFData; |
| #endif |
| |
| #ifdef _SMAF_PARSER |
| extern EAS_VOID_PTR eas_SMAFData; |
| #endif |
| |
| #ifdef _OTA_PARSER |
| extern EAS_VOID_PTR eas_OTAData; |
| #endif |
| |
| #ifdef _IMELODY_PARSER |
| extern EAS_VOID_PTR eas_iMelodyData; |
| #endif |
| |
| #ifdef _RTTTL_PARSER |
| extern EAS_VOID_PTR eas_RTTTLData; |
| #endif |
| |
| #ifdef _WAVE_PARSER |
| extern EAS_VOID_PTR eas_WaveData; |
| #endif |
| |
| #if defined (_CMX_PARSER) || defined(_MFI_PARSER) |
| extern EAS_VOID_PTR eas_CMFData; |
| #endif |
| #endif |
| |
| /*---------------------------------------------------------------------------- |
| * |
| * Effects Modules |
| * |
| * These declarations are used by the EAS library to locate |
| * effects modules. |
| *---------------------------------------------------------------------------- |
| */ |
| |
| #ifdef _ENHANCER_ENABLED |
| extern EAS_VOID_PTR EAS_Enhancer; |
| #define EAS_ENHANCER_INTERFACE &EAS_Enhancer |
| #ifdef _STATIC_MEMORY |
| extern EAS_VOID_PTR eas_EnhancerData; |
| #define EAS_ENHANCER_DATA &eas_EnhancerData |
| #else |
| #define EAS_ENHANCER_DATA NULL |
| #endif |
| #else |
| #define EAS_ENHANCER_INTERFACE NULL |
| #define EAS_ENHANCER_DATA NULL |
| #endif |
| |
| #ifdef _COMPRESSOR_ENABLED |
| extern EAS_VOID_PTR EAS_Compressor; |
| #define EAS_COMPRESSOR_INTERFACE &EAS_Compressor |
| #ifdef _STATIC_MEMORY |
| extern EAS_VOID_PTR eas_CompressorData; |
| #define EAS_COMPRESSOR_DATA &eas_CompressorData |
| #else |
| #define EAS_COMPRESSOR_DATA NULL |
| #endif |
| #else |
| #define EAS_COMPRESSOR_INTERFACE NULL |
| #define EAS_COMPRESSOR_DATA NULL |
| #endif |
| |
| #ifdef _MAXIMIZER_ENABLED |
| extern EAS_VOID_PTR EAS_Maximizer; |
| #define EAS_MAXIMIZER_INTERFACE &EAS_Maximizer |
| #ifdef _STATIC_MEMORY |
| extern EAS_VOID_PTR eas_MaximizerData; |
| #define EAS_MAXIMIZER_DATA &eas_MaximizerData |
| #else |
| #define EAS_MAXIMIZER_DATA NULL |
| #endif |
| #else |
| #define EAS_MAXIMIZER_INTERFACE NULL |
| #define EAS_MAXIMIZER_DATA NULL |
| #endif |
| |
| |
| #ifdef _REVERB_ENABLED |
| extern EAS_VOID_PTR EAS_Reverb; |
| #define EAS_REVERB_INTERFACE &EAS_Reverb |
| #ifdef _STATIC_MEMORY |
| extern EAS_VOID_PTR eas_ReverbData; |
| #define EAS_REVERB_DATA &eas_ReverbData |
| #else |
| #define EAS_REVERB_DATA NULL |
| #endif |
| #else |
| #define EAS_REVERB_INTERFACE NULL |
| #define EAS_REVERB_DATA NULL |
| #endif |
| |
| #ifdef _CHORUS_ENABLED |
| extern EAS_VOID_PTR EAS_Chorus; |
| #define EAS_CHORUS_INTERFACE &EAS_Chorus |
| #ifdef _STATIC_MEMORY |
| extern EAS_VOID_PTR eas_ChorusData; |
| #define EAS_CHORUS_DATA &eas_ChorusData |
| #else |
| #define EAS_CHORUS_DATA NULL |
| #endif |
| #else |
| #define EAS_CHORUS_INTERFACE NULL |
| #define EAS_CHORUS_DATA NULL |
| #endif |
| |
| #ifdef _WIDENER_ENABLED |
| extern EAS_VOID_PTR EAS_Widener; |
| #define EAS_WIDENER_INTERFACE &EAS_Widener |
| #ifdef _STATIC_MEMORY |
| extern EAS_VOID_PTR eas_WidenerData; |
| #define EAS_WIDENER_DATA &eas_WidenerData |
| #else |
| #define EAS_WIDENER_DATA NULL |
| #endif |
| #else |
| #define EAS_WIDENER_INTERFACE NULL |
| #define EAS_WIDENER_DATA NULL |
| #endif |
| |
| #ifdef _GRAPHIC_EQ_ENABLED |
| extern EAS_VOID_PTR EAS_GraphicEQ; |
| #define EAS_GRAPHIC_EQ_INTERFACE &EAS_GraphicEQ |
| #ifdef _STATIC_MEMORY |
| extern EAS_VOID_PTR eas_GraphicEQData; |
| #define EAS_GRAPHIC_EQ_DATA &eas_GraphicEQData |
| #else |
| #define EAS_GRAPHIC_EQ_DATA NULL |
| #endif |
| #else |
| #define EAS_GRAPHIC_EQ_INTERFACE NULL |
| #define EAS_GRAPHIC_EQ_DATA NULL |
| #endif |
| |
| #ifdef _WOW_ENABLED |
| extern EAS_VOID_PTR EAS_Wow; |
| #define EAS_WOW_INTERFACE &EAS_Wow |
| #ifdef _STATIC_MEMORY |
| #error "WOW module requires dynamic memory model" |
| #else |
| #define EAS_WOW_DATA NULL |
| #endif |
| #else |
| #define EAS_WOW_INTERFACE NULL |
| #define EAS_WOW_DATA NULL |
| #endif |
| |
| #ifdef _TONECONTROLEQ_ENABLED |
| extern EAS_VOID_PTR EAS_ToneControlEQ; |
| #define EAS_TONECONTROLEQ_INTERFACE &EAS_ToneControlEQ |
| #ifdef _STATIC_MEMORY |
| extern EAS_VOID_PTR eas_ToneControlEQData; |
| #define EAS_TONECONTROLEQ_DATA &eas_ToneControlEQData |
| #else |
| #define EAS_TONECONTROLEQ_DATA NULL |
| #endif |
| #else |
| #define EAS_TONECONTROLEQ_INTERFACE NULL |
| #define EAS_TONECONTROLEQ_DATA NULL |
| #endif |
| |
| /*lint -e{605} not pretty, but it works */ |
| EAS_VOID_PTR const effectsModules[] = |
| { |
| EAS_ENHANCER_INTERFACE, |
| EAS_COMPRESSOR_INTERFACE, |
| EAS_REVERB_INTERFACE, |
| EAS_CHORUS_INTERFACE, |
| EAS_WIDENER_INTERFACE, |
| EAS_GRAPHIC_EQ_INTERFACE, |
| EAS_WOW_INTERFACE, |
| EAS_MAXIMIZER_INTERFACE, |
| EAS_TONECONTROLEQ_INTERFACE |
| }; |
| |
| EAS_VOID_PTR const effectsData[] = |
| { |
| EAS_ENHANCER_DATA, |
| EAS_COMPRESSOR_DATA, |
| EAS_REVERB_DATA, |
| EAS_CHORUS_DATA, |
| EAS_WIDENER_DATA, |
| EAS_GRAPHIC_EQ_DATA, |
| EAS_WOW_DATA, |
| EAS_MAXIMIZER_DATA, |
| EAS_TONECONTROLEQ_DATA |
| }; |
| |
| /*---------------------------------------------------------------------------- |
| * |
| * Optional Modules |
| * |
| * These declarations are used by the EAS library to locate |
| * effects modules. |
| *---------------------------------------------------------------------------- |
| */ |
| |
| #ifdef _METRICS_ENABLED |
| extern EAS_VOID_PTR EAS_Metrics; |
| #define EAS_METRICS_INTERFACE &EAS_Metrics |
| #ifdef _STATIC_MEMORY |
| extern EAS_VOID_PTR eas_MetricsData; |
| #define EAS_METRICS_DATA &eas_MetricsData |
| #else |
| #define EAS_METRICS_DATA NULL |
| #endif |
| #else |
| #define EAS_METRICS_INTERFACE NULL |
| #define EAS_METRICS_DATA NULL |
| #endif |
| |
| #ifdef MMAPI_SUPPORT |
| extern EAS_VOID_PTR EAS_TC_Parser; |
| #define EAS_TONE_CONTROL_PARSER &EAS_TC_Parser |
| #ifdef _STATIC_MEMORY |
| extern EAS_VOID_PTR eas_TCData; |
| #define EAS_TONE_CONTROL_DATA &eas_TCData |
| #else |
| #define EAS_TONE_CONTROL_DATA NULL |
| #endif |
| #else |
| #define EAS_TONE_CONTROL_PARSER NULL |
| #define EAS_TONE_CONTROL_DATA NULL |
| #endif |
| |
| /*lint -e{605} not pretty, but it works */ |
| EAS_VOID_PTR const optionalModules[] = |
| { |
| EAS_TONE_CONTROL_PARSER, |
| EAS_METRICS_INTERFACE |
| }; |
| |
| EAS_VOID_PTR const optionalData[] = |
| { |
| EAS_TONE_CONTROL_DATA, |
| EAS_METRICS_DATA |
| }; |
| |
| /*---------------------------------------------------------------------------- |
| * EAS_CMStaticMemoryModel() |
| *---------------------------------------------------------------------------- |
| * Purpose: |
| * This function returns true if EAS has been configured for |
| * a static memory model. There are some limitations in the |
| * static memory model, see the documentation for more |
| * information. |
| * |
| * Outputs: |
| * returns EAS_TRUE if a module is found |
| *---------------------------------------------------------------------------- |
| */ |
| EAS_BOOL EAS_CMStaticMemoryModel (void) |
| { |
| #ifdef _STATIC_MEMORY |
| return EAS_TRUE; |
| #else |
| return EAS_FALSE; |
| #endif |
| } |
| |
| /*---------------------------------------------------------------------------- |
| * EAS_CMEnumModules() |
| *---------------------------------------------------------------------------- |
| * Purpose: |
| * This function is used to find pointers to optional modules. |
| * |
| * Inputs: |
| * module - module number |
| * |
| * Outputs: |
| * returns a pointer to the module function table or NULL if no module |
| *---------------------------------------------------------------------------- |
| */ |
| EAS_VOID_PTR EAS_CMEnumModules (EAS_INT module) |
| { |
| |
| if (module >= (EAS_INT) NUM_PARSER_MODULES) |
| return NULL; |
| return parserModules[module]; |
| } |
| |
| /*---------------------------------------------------------------------------- |
| * EAS_CMEnumData() |
| *---------------------------------------------------------------------------- |
| * Purpose: |
| * This function is used to find pointers to static memory allocations. |
| * |
| * Inputs: |
| * dataModule - enumerated module number |
| * |
| * Outputs: |
| * Returns handle to data or NULL if not found |
| *---------------------------------------------------------------------------- |
| */ |
| /*lint -esym(715, dataModule) used only when _STATIC_MEMORY is defined */ |
| EAS_VOID_PTR EAS_CMEnumData (EAS_INT dataModule) |
| { |
| |
| #ifdef _STATIC_MEMORY |
| switch (dataModule) |
| { |
| |
| /* main instance data for synthesizer */ |
| case EAS_CM_EAS_DATA: |
| return &eas_Data; |
| |
| /* mix buffer for mix engine */ |
| case EAS_CM_MIX_BUFFER: |
| /*lint -e{545} lint doesn't like this because it sees the underlying type */ |
| return &eas_MixBuffer; |
| |
| /* instance data for synth */ |
| case EAS_CM_SYNTH_DATA: |
| return &eas_Synth; |
| |
| /* instance data for MIDI parser */ |
| case EAS_CM_MIDI_DATA: |
| return &eas_MIDI; |
| |
| /* instance data for SMF parser */ |
| case EAS_CM_SMF_DATA: |
| return &eas_SMFData; |
| |
| #ifdef _XMF_PARSER |
| /* instance data for XMF parser */ |
| case EAS_CM_XMF_DATA: |
| return &eas_XMFData; |
| #endif |
| |
| #ifdef _SMAF_PARSER |
| /* instance data for SMAF parser */ |
| case EAS_CM_SMAF_DATA: |
| return &eas_SMAFData; |
| #endif |
| |
| /* instance data for the PCM engine */ |
| case EAS_CM_PCM_DATA: |
| /*lint -e{545} lint doesn't like this because it sees the underlying type */ |
| return &eas_PCMData; |
| |
| case EAS_CM_MIDI_STREAM_DATA: |
| return &eas_MIDIData; |
| |
| #ifdef _OTA_PARSER |
| /* instance data for OTA parser */ |
| case EAS_CM_OTA_DATA: |
| return &eas_OTAData; |
| #endif |
| |
| #ifdef _IMELODY_PARSER |
| /* instance data for iMelody parser */ |
| case EAS_CM_IMELODY_DATA: |
| return &eas_iMelodyData; |
| #endif |
| |
| #ifdef _RTTTL_PARSER |
| /* instance data for RTTTL parser */ |
| case EAS_CM_RTTTL_DATA: |
| return &eas_RTTTLData; |
| #endif |
| |
| #ifdef _WAVE_PARSER |
| /* instance data for WAVE parser */ |
| case EAS_CM_WAVE_DATA: |
| return &eas_WaveData; |
| #endif |
| |
| #if defined (_CMX_PARSER) || defined(_MFI_PARSER) |
| /* instance data for CMF parser */ |
| case EAS_CM_CMF_DATA: |
| return &eas_CMFData; |
| #endif |
| |
| default: |
| return NULL; |
| } |
| |
| #else |
| return NULL; |
| #endif |
| } |
| |
| /*---------------------------------------------------------------------------- |
| * EAS_CMEnumFXModules() |
| *---------------------------------------------------------------------------- |
| * Purpose: |
| * This function is used to find pointers to optional effects modules. |
| * |
| * Inputs: |
| * module - enumerated module number |
| * pModule - pointer to module interface |
| * |
| * Outputs: |
| * Returns pointer to function table or NULL if not found |
| *---------------------------------------------------------------------------- |
| */ |
| EAS_VOID_PTR EAS_CMEnumFXModules (EAS_INT module) |
| { |
| |
| if (module >= NUM_EFFECTS_MODULES) |
| return NULL; |
| return effectsModules[module]; |
| } |
| |
| /*---------------------------------------------------------------------------- |
| * EAS_CMEnumFXData() |
| *---------------------------------------------------------------------------- |
| * Purpose: |
| * This function is used to find pointers to static memory allocations. |
| * |
| * Inputs: |
| * dataModule - enumerated module number |
| * pData - pointer to handle variable |
| * |
| * Outputs: |
| * Returns handle to data or NULL if not found |
| *---------------------------------------------------------------------------- |
| */ |
| EAS_VOID_PTR EAS_CMEnumFXData (EAS_INT dataModule) |
| { |
| |
| if (dataModule >= NUM_EFFECTS_MODULES) |
| return NULL; |
| return effectsData[dataModule]; |
| } |
| |
| /*---------------------------------------------------------------------------- |
| * EAS_CMEnumOptModules() |
| *---------------------------------------------------------------------------- |
| * Purpose: |
| * This function is used to find pointers to optional modules. |
| * |
| * Inputs: |
| * module - enumerated module number |
| * |
| * Outputs: |
| * returns pointer to function table or NULL if no module |
| *---------------------------------------------------------------------------- |
| */ |
| EAS_VOID_PTR EAS_CMEnumOptModules (EAS_INT module) |
| { |
| |
| /* sanity check */ |
| if (module >= NUM_OPTIONAL_MODULES) |
| return EAS_FALSE; |
| return optionalModules[module]; |
| } |
| |
| /*---------------------------------------------------------------------------- |
| * EAS_CMEnumOptData() |
| *---------------------------------------------------------------------------- |
| * Purpose: |
| * This function is used to find pointers to static memory allocations. |
| * |
| * Inputs: |
| * dataModule - enumerated module number |
| * |
| * Outputs: |
| * Returns handle to data or NULL if not found |
| *---------------------------------------------------------------------------- |
| */ |
| EAS_VOID_PTR EAS_CMEnumOptData (EAS_INT dataModule) |
| { |
| |
| if (dataModule >= NUM_OPTIONAL_MODULES) |
| return NULL; |
| return optionalData[dataModule]; |
| } |
| |
| |