| /*---------------------------------------------------------------------------- |
| * |
| * File: |
| * eas_pcm.h |
| * |
| * Contents and purpose: |
| * External function prototypes for eas_pcm.c module |
| * |
| * |
| * Copyright Sonic Network Inc. 2005 |
| |
| * 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: 847 $ |
| * $Date: 2007-08-27 21:30:08 -0700 (Mon, 27 Aug 2007) $ |
| *---------------------------------------------------------------------------- |
| */ |
| |
| #ifndef _EAS_PCM_H |
| #define _EAS_PCM_H |
| |
| /* default gain setting - roughly unity gain */ |
| #define PCM_DEFAULT_GAIN_SETTING 0x6000 |
| |
| typedef struct s_pcm_state_tag *EAS_PCM_HANDLE; |
| typedef void (*EAS_PCM_CALLBACK) (EAS_DATA_HANDLE pEASData, EAS_VOID_PTR cbInstData, EAS_PCM_HANDLE pcmHandle, EAS_STATE state); |
| |
| /* parameters for EAS_PEOpenStream */ |
| typedef struct s_pcm_open_params_tag |
| { |
| EAS_FILE_HANDLE fileHandle; |
| EAS_I32 decoder; |
| EAS_U32 sampleRate; |
| EAS_I32 size; |
| EAS_U32 loopStart; |
| EAS_U32 loopSamples; |
| EAS_I32 blockSize; |
| EAS_U32 flags; |
| EAS_U32 envData; |
| EAS_I16 volume; |
| EAS_PCM_CALLBACK pCallbackFunc; |
| EAS_VOID_PTR cbInstData; |
| } S_PCM_OPEN_PARAMS; |
| |
| /*---------------------------------------------------------------------------- |
| * EAS_PEInit() |
| *---------------------------------------------------------------------------- |
| * Purpose: |
| * Initializes the PCM engine |
| * |
| * Inputs: |
| * |
| * |
| * Outputs: |
| * |
| * |
| * Side Effects: |
| * |
| *---------------------------------------------------------------------------- |
| */ |
| EAS_RESULT EAS_PEInit (EAS_DATA_HANDLE pEASData); |
| |
| /*---------------------------------------------------------------------------- |
| * EAS_PEShutdown() |
| *---------------------------------------------------------------------------- |
| * Purpose: |
| * Shuts down the PCM engine |
| * |
| * Inputs: |
| * |
| * |
| * Outputs: |
| * |
| * |
| * Side Effects: |
| * |
| *---------------------------------------------------------------------------- |
| */ |
| EAS_RESULT EAS_PEShutdown (EAS_DATA_HANDLE pEASData); |
| |
| /*---------------------------------------------------------------------------- |
| * EAS_PEOpenStream() |
| *---------------------------------------------------------------------------- |
| * Purpose: |
| * Starts up a PCM playback |
| * |
| * Inputs: |
| * |
| * |
| * Outputs: |
| * |
| * |
| * Side Effects: |
| * |
| *---------------------------------------------------------------------------- |
| */ |
| EAS_RESULT EAS_PEOpenStream (EAS_DATA_HANDLE pEASData, S_PCM_OPEN_PARAMS *pParams, EAS_PCM_HANDLE *pHandle); |
| |
| /*---------------------------------------------------------------------------- |
| * EAS_PEContinueStream() |
| *---------------------------------------------------------------------------- |
| * Purpose: |
| * Continues a PCM stream |
| * |
| * Inputs: |
| * |
| * |
| * Outputs: |
| * |
| * |
| * Side Effects: |
| * |
| *---------------------------------------------------------------------------- |
| */ |
| EAS_RESULT EAS_PEContinueStream (EAS_DATA_HANDLE pEASData, EAS_PCM_HANDLE handle, EAS_I32 size); |
| |
| /*---------------------------------------------------------------------------- |
| * EAS_PEGetFileHandle() |
| *---------------------------------------------------------------------------- |
| * Purpose: |
| * Returns the file handle of a stream |
| * |
| * Inputs: |
| * |
| * |
| * Outputs: |
| * |
| * |
| * Side Effects: |
| * |
| *---------------------------------------------------------------------------- |
| */ |
| EAS_RESULT EAS_PEGetFileHandle (EAS_DATA_HANDLE pEASData, EAS_PCM_HANDLE handle, EAS_FILE_HANDLE *pFileHandle); |
| |
| /*---------------------------------------------------------------------------- |
| * EAS_PERender() |
| *---------------------------------------------------------------------------- |
| * Purpose: |
| * Render a buffer of PCM audio |
| * |
| * Inputs: |
| * |
| * |
| * Outputs: |
| * |
| * |
| * Side Effects: |
| * |
| *---------------------------------------------------------------------------- |
| */ |
| EAS_RESULT EAS_PERender (EAS_DATA_HANDLE pEASData, EAS_I32 numSamples); |
| |
| /*---------------------------------------------------------------------------- |
| * EAS_PEUpdateParams() |
| *---------------------------------------------------------------------------- |
| * Purpose: |
| * Update the pitch and volume parameters using MIDI controls |
| * |
| * Inputs: |
| * |
| * |
| * Outputs: |
| * |
| * |
| * Side Effects: |
| * |
| *---------------------------------------------------------------------------- |
| */ |
| EAS_RESULT EAS_PEUpdateParams (EAS_DATA_HANDLE pEASData, EAS_PCM_HANDLE pState, EAS_I16 pitch, EAS_I16 gainLeft, EAS_I16 gainRight); |
| |
| /*---------------------------------------------------------------------------- |
| * EAS_PELocate() |
| *---------------------------------------------------------------------------- |
| * Purpose: |
| * This function seeks to the requested place in the file. Accuracy |
| * is dependent on the sample rate and block size. |
| * |
| * Inputs: |
| * pEASData - pointer to overall EAS data structure |
| * pState - stream handle |
| * time - media time in milliseconds |
| *---------------------------------------------------------------------------- |
| */ |
| EAS_RESULT EAS_PELocate (EAS_DATA_HANDLE pEASData, EAS_PCM_HANDLE pState, EAS_I32 time); |
| |
| /*---------------------------------------------------------------------------- |
| * EAS_PEUpdateVolume() |
| *---------------------------------------------------------------------------- |
| * Purpose: |
| * Update the volume parameters for a PCM stream |
| * |
| * Inputs: |
| * pEASData - pointer to EAS library instance data |
| * handle - pointer to S_PCM_STATE for this stream |
| * gainLeft - linear gain multipler in 1.15 fraction format |
| * gainRight - linear gain multipler in 1.15 fraction format |
| * initial - initial settings, set current gain |
| * |
| * Outputs: |
| * |
| * |
| * Side Effects: |
| * |
| * Notes |
| * In mono mode, leftGain controls the output gain and rightGain is ignored |
| *---------------------------------------------------------------------------- |
| */ |
| /*lint -esym(715, pEASData) reserved for future use */ |
| EAS_RESULT EAS_PEUpdateVolume (EAS_DATA_HANDLE pEASData, EAS_PCM_HANDLE pState, EAS_I16 volume); |
| |
| /*---------------------------------------------------------------------------- |
| * EAS_PEUpdatePitch() |
| *---------------------------------------------------------------------------- |
| * Purpose: |
| * Update the pitch parameter for a PCM stream |
| * |
| * Inputs: |
| * pEASData - pointer to EAS library instance data |
| * pState - pointer to S_PCM_STATE for this stream |
| * pitch - new pitch value in pitch cents |
| *---------------------------------------------------------------------------- |
| */ |
| /*lint -esym(715, pEASData) reserved for future use */ |
| EAS_RESULT EAS_PEUpdatePitch (EAS_DATA_HANDLE pEASData, EAS_PCM_HANDLE pState, EAS_I16 pitch); |
| |
| /*---------------------------------------------------------------------------- |
| * EAS_PEState() |
| *---------------------------------------------------------------------------- |
| * Purpose: |
| * Returns the current state of the stream |
| * |
| * Inputs: |
| * pEASData - pointer to overall EAS data structure |
| * handle - pointer to file handle |
| * pState - pointer to variable to store state |
| * |
| * Outputs: |
| * |
| * |
| * Side Effects: |
| * |
| * Notes: |
| * This interface is also exposed in the internal library for use by the other modules. |
| *---------------------------------------------------------------------------- |
| */ |
| EAS_RESULT EAS_PEState (EAS_DATA_HANDLE pEASData, EAS_PCM_HANDLE handle, EAS_STATE *pState); |
| |
| /*---------------------------------------------------------------------------- |
| * EAS_PEClose() |
| *---------------------------------------------------------------------------- |
| * Purpose: |
| * Close the file and clean up |
| * |
| * Inputs: |
| * pEASData - pointer to overall EAS data structure |
| * handle - pointer to file handle |
| * |
| * Outputs: |
| * |
| * |
| * Side Effects: |
| * |
| *---------------------------------------------------------------------------- |
| */ |
| EAS_RESULT EAS_PEClose (EAS_DATA_HANDLE pEASData, EAS_PCM_HANDLE handle); |
| |
| /*---------------------------------------------------------------------------- |
| * EAS_PEReset() |
| *---------------------------------------------------------------------------- |
| * Purpose: |
| * Reset the sequencer. Used for locating backwards in the file. |
| * |
| * Inputs: |
| * pEASData - pointer to overall EAS data structure |
| * handle - pointer to file handle |
| * |
| * Outputs: |
| * |
| * |
| * Side Effects: |
| * |
| *---------------------------------------------------------------------------- |
| */ |
| EAS_RESULT EAS_PEReset (EAS_DATA_HANDLE pEASData, EAS_PCM_HANDLE handle); |
| |
| /*---------------------------------------------------------------------------- |
| * EAS_PEPause() |
| *---------------------------------------------------------------------------- |
| * Purpose: |
| * Mute and pause rendering a PCM stream. Sets the gain target to zero and stops the playback |
| * at the end of the next audio frame. |
| * |
| * Inputs: |
| * pEASData - pointer to EAS library instance data |
| * handle - pointer to S_PCM_STATE for this stream |
| * |
| * Outputs: |
| * |
| * |
| * Side Effects: |
| * |
| *---------------------------------------------------------------------------- |
| */ |
| EAS_RESULT EAS_PEPause (EAS_DATA_HANDLE pEASData, EAS_PCM_HANDLE handle); |
| |
| /*---------------------------------------------------------------------------- |
| * EAS_PEResume() |
| *---------------------------------------------------------------------------- |
| * Purpose: |
| * Resume rendering a PCM stream. Sets the gain target back to its |
| * previous setting and restarts playback at the end of the next audio |
| * frame. |
| * |
| * Inputs: |
| * pEASData - pointer to EAS library instance data |
| * handle - pointer to S_PCM_STATE for this stream |
| * |
| * Outputs: |
| * |
| * |
| * Side Effects: |
| * |
| *---------------------------------------------------------------------------- |
| */ |
| EAS_RESULT EAS_PEResume (EAS_DATA_HANDLE pEASData, EAS_PCM_HANDLE handle); |
| |
| /*---------------------------------------------------------------------------- |
| * EAS_PERelease() |
| *---------------------------------------------------------------------------- |
| * Purpose: |
| * Put the PCM stream envelope into release. |
| * |
| * Inputs: |
| * pEASData - pointer to EAS library instance data |
| * handle - pointer to S_PCM_STATE for this stream |
| * |
| * Outputs: |
| * |
| * |
| * Side Effects: |
| * |
| *---------------------------------------------------------------------------- |
| */ |
| EAS_RESULT EAS_PERelease (EAS_DATA_HANDLE pEASData, EAS_PCM_HANDLE handle); |
| |
| #endif /* end _EAS_PCM_H */ |
| |