291 lines
6.5 KiB
C
Executable File
291 lines
6.5 KiB
C
Executable File
/**
|
|
GxSound module.
|
|
|
|
For playing key sound.
|
|
|
|
@file GxSound.h
|
|
@ingroup mILIBGXSOUND
|
|
@note Nothing (or anything need to be mentioned).
|
|
|
|
Copyright Novatek Microelectronics Corp. 2012. All rights reserved.
|
|
*/
|
|
#ifndef _GXSOUND_H
|
|
#define _GXSOUND_H
|
|
|
|
|
|
/**
|
|
@addtogroup mILIBGXSOUND
|
|
*/
|
|
//@{
|
|
|
|
|
|
/**
|
|
@name Operations on a sound
|
|
*/
|
|
//@{
|
|
#define SOUND_CTRL_STOP 0 //stop playing the current sound immediatly
|
|
#define SOUND_CTRL_PLAY 1 //play a sound
|
|
#define SOUND_CTRL_WAITSTOP 2 //stop playing the current sound and wait it finished
|
|
//@}
|
|
|
|
|
|
/**
|
|
@name Maximum repeat-times for playing a sound
|
|
*/
|
|
//@{
|
|
#define SOUND_PLAY_MAX_TIMES 10
|
|
//@}
|
|
|
|
|
|
/**
|
|
Attributes of the sound.
|
|
|
|
*/
|
|
typedef struct {
|
|
const UINT8 *puiData; ///< points to the memory that a pcm sound data located
|
|
UINT32 uiSize; ///< how many bytes of the sound data
|
|
UINT32 sampleRate; ///< audio sample rate, ex: 44.1k, 32k, 48k,¡K.
|
|
UINT32 isMono; ///< mono or stereo
|
|
UINT32 soundId; ///< an unique Id for the sound, not its index in the sound table
|
|
} SOUND_DATA, *PSOUND_DATA;
|
|
|
|
typedef struct {
|
|
UINT32 pa;
|
|
UINT32 va;
|
|
UINT32 size;
|
|
} SOUND_MEM, *PSOUND_MEM;
|
|
|
|
/**
|
|
To-Do operations on a sound.
|
|
|
|
*/
|
|
typedef enum {
|
|
SOUND_PLAY_START = 0, ///< start to play a sound
|
|
SOUND_PLAY_STOP, ///< stop playing a sound
|
|
SOUND_PLAY_PAUSE, ///< pause playing a sound
|
|
SOUND_PLAY_RESUME, ///< resume playing a sound
|
|
SOUND_PLAY_MAX
|
|
} SOUND_PLAY_EVENT;
|
|
|
|
/**
|
|
A callback event signals what is going.
|
|
|
|
@note: Internal operations on a sound.
|
|
*/
|
|
typedef enum {
|
|
SOUND_CB_START = 0,
|
|
SOUND_CB_STOP,
|
|
SOUND_CB_OUTDEVCHG, //to be remove
|
|
SOUND_CB_PLUG,
|
|
SOUND_CB_UNPLUG,
|
|
SOUND_CB_MAX
|
|
} SOUND_CB_EVENT_TYPE;
|
|
|
|
typedef enum {
|
|
SOUND_CONFIG_MEM = 0,
|
|
SOUND_CONFIG_MAX,
|
|
} SOUND_CONFIG;
|
|
|
|
/**
|
|
PlaySound callback event function prototype.
|
|
|
|
*/
|
|
typedef void (*FPSOUNDCB)(UINT32 event, UINT32 param1, UINT32 param2);
|
|
|
|
/**
|
|
Plays a sound, wav-pcm format, which is indicated by "pSndData".
|
|
|
|
It is usually used to play a sound which is not in the registered sound table.
|
|
|
|
@param[in] sndEvt Start,stop,pause,or resume play a sound.
|
|
Please reference the type "SOUND_PLAY_EVENT".
|
|
@param[in] pSndData Point to the memory that the sound is located.
|
|
Please reference the structure,"SOUND_DATA".
|
|
@param[in] isPCM sound data is PCM-Only or Wav.
|
|
|
|
@return
|
|
- @b E_OK: Ok
|
|
- @b E_PAR: Fail
|
|
*/
|
|
extern ER GxSound_ActOnSndNotInTbl(SOUND_PLAY_EVENT sndEvt, SOUND_DATA *pSndData, UINT32 isPCM);
|
|
|
|
/**
|
|
Registers all key sounds in the format of "SOUND_DATA".
|
|
|
|
@param[in] uiCount How many elements in the sound table, "pSoundTable".
|
|
@param[in] pSoundTable Points to an array in the structure of "SOUND_DATA".
|
|
Please reference the structure,"SOUND_DATA".
|
|
|
|
@return
|
|
- @b E_OK: Ok
|
|
- @b E_PAR: Fail
|
|
*/
|
|
extern ER GxSound_SetSoundTable(UINT32 uiCount, SOUND_DATA *pSoundTable);
|
|
|
|
/**
|
|
Skip or keep playing a sound.
|
|
@note It is not mute or close the audio driver.
|
|
|
|
@param[in] bEn TRUE=Play, FALSE=Not play
|
|
@return None.
|
|
*/
|
|
extern void GxSound_EnableSound(BOOL bEn);
|
|
|
|
/**
|
|
Whether the sound-playing function is skipped or kept.
|
|
|
|
@return
|
|
- @b TRUE: Keep
|
|
- @b FALSE: Skip
|
|
*/
|
|
extern BOOL GxSound_IsSoundEnabled(void);
|
|
|
|
/**
|
|
Check whether is play or stop
|
|
|
|
@param void
|
|
@return BOOL: TRUE -> play, FALSE -> stop
|
|
*/
|
|
extern BOOL GxSound_IsPlaying(void);
|
|
|
|
/**
|
|
Get current-set volume.
|
|
|
|
@return
|
|
- @b AUDIO_VOL Volume level. Please reference the structure in the file, Audio.h.
|
|
*/
|
|
//extern AUDIO_VOL GxSound_GetVolume(void);
|
|
|
|
/**
|
|
Get current-set volume.
|
|
|
|
@return
|
|
- @b UINT32 Volume level. 0 ~ 100
|
|
*/
|
|
extern UINT32 GxSound_GetVolume(void);
|
|
|
|
|
|
/**
|
|
Set volume.
|
|
Set volume for the next playing sound.
|
|
|
|
@param[in] vol Volume level. Please reference the structure in the file, Audio.h..
|
|
|
|
@return None
|
|
*/
|
|
//extern void GxSound_SetVolume(AUDIO_VOL vol);
|
|
|
|
/**
|
|
Set the audio volume
|
|
|
|
@param[in] vol 0 ~ 100.
|
|
|
|
|
|
@return None
|
|
*/
|
|
void GxSound_SetVolume(UINT32 vol);
|
|
|
|
|
|
|
|
/**
|
|
Open the key-sound playing module.
|
|
|
|
@return
|
|
- @b E_OK: Ok
|
|
- @b E_SYS: Fail
|
|
*/
|
|
extern ER GxSound_Open(FPSOUNDCB fpSoundCB);
|
|
|
|
/**
|
|
Close the key-sound playing module.
|
|
|
|
@return
|
|
- @b E_OK: Ok
|
|
- @b E_SYS: Fail
|
|
*/
|
|
extern ER GxSound_Close(void);
|
|
|
|
/**
|
|
Play the sound with the "index" in registered sound table by the function "GxSound_SetSoundTable".
|
|
|
|
@param[in] index index in the registered sound table.
|
|
@param[in] times repeat times
|
|
|
|
@return None
|
|
*/
|
|
extern void GxSound_Play_Repeat(int index, UINT32 times);
|
|
|
|
/**
|
|
Play the sound once with the "index" in registered sound table by the function "GxSound_SetSoundTable".
|
|
|
|
@param[in] index index in the registered sound table.
|
|
|
|
@return None
|
|
*/
|
|
extern void GxSound_Play(int index);
|
|
|
|
/**
|
|
Stop playing the current sound immediately.
|
|
|
|
@return None
|
|
*/
|
|
extern void GxSound_Stop(void);
|
|
|
|
/**
|
|
Stop playing the current sound but wait it finished.
|
|
|
|
@return None
|
|
*/
|
|
extern void GxSound_WaitStop(void);
|
|
|
|
/**
|
|
Detect current sound output device insert or not.
|
|
|
|
@return None
|
|
*/
|
|
extern void GxSound_DetInsert(UINT32 DevID, UINT32 context);
|
|
|
|
/**
|
|
Set the configuration index of play-sound audio device
|
|
|
|
@param[in] outDevConfigIdx index of audio configuration device.
|
|
|
|
|
|
@return None
|
|
*/
|
|
void GxSound_SetOutDevConfigIdx(UINT32 outDevConfigIdx);
|
|
|
|
|
|
/**
|
|
Install PlaySound task, flag and semaphore id
|
|
|
|
This is a default setting API. Users can create their own task id, semphore id,
|
|
flag id to adjust own stack size and task priority as the following:
|
|
|
|
@code
|
|
{
|
|
#define PRI_PLAYSOUND 4
|
|
#define STKSIZE_PLAYSOUND 1024
|
|
|
|
UINT32 PLAYSOUNDTSK_ID = 0;
|
|
UINT32 FLG_ID_SOUND = 0;
|
|
|
|
void GxSound_InstallID(void)
|
|
{
|
|
OS_CONFIG_TASK(PLAYSOUNDTSK_ID, PRI_PLAYSOUND, STKSIZE_PLAYSOUND, PlaySoundTsk);
|
|
OS_CONFIG_FLAG(FLG_ID_SOUND);
|
|
}
|
|
|
|
}
|
|
@endcode
|
|
*/
|
|
|
|
extern ER GxSound_Set_Config(SOUND_CONFIG cfg_id, UINT32 value);
|
|
|
|
extern void GxSound_SetPlayCount(UINT32 count);
|
|
|
|
//@}
|
|
|
|
#endif //_GXSOUND_H
|
|
|