ATS_media.h 7.62 KB
/*
Copyright Wang yong ALL RIGHT RESERVED !
 @ file name: ATS_media.h

 @ description:  多媒体相关的接口

 @ Author: wangyong, doforfaith@gmail.com
 
 @ Modify History:

	Date					Event												Person
 10-05-31      Creator               			wangyong	
 
*/
#if defined(__SKY_3DGUI__)
#ifndef __ATS_MEDIA_H__
#define __ATS_MEDIA_H__

#include "ATS_basic.h"
#include "ATS_adaptation_features.h"

/*Audio Play Format */
typedef enum
{
    ATS_AUD_TYPE_NONE = -1,
    ATS_AUD_TYPE_GSM_FR,        /* 0 */
    ATS_AUD_TYPE_GSM_HR,        /* 1 */
    ATS_AUD_TYPE_GSM_EFR,       /* 2 */
    ATS_AUD_TYPE_AMR,           /* 3 */
    ATS_AUD_TYPE_AMR_WB,        /* 4 */
    ATS_AUD_TYPE_DAF,           /* 5 */
    ATS_AUD_TYPE_AAC,           /* 6 */
    ATS_AUD_TYPE_PCM_8K,        /* 7 */
    ATS_AUD_TYPE_PCM_16K,       /* 8 */
    ATS_AUD_TYPE_G711_ALAW,     /* 9 */
    ATS_AUD_TYPE_G711_ULAW,     /* 10 */
    ATS_AUD_TYPE_DVI_ADPCM,     /* 11 */
    ATS_AUD_TYPE_VR,            /* 12 */
    ATS_AUD_TYPE_WAV,           /* 13 */
    ATS_AUD_TYPE_WAV_ALAW,      /* 14 */
    ATS_AUD_TYPE_WAV_ULAW,      /* 15 */
    ATS_AUD_TYPE_WAV_DVI_ADPCM, /* 16 */
    ATS_AUD_TYPE_SMF,           /* 17 */
    ATS_AUD_TYPE_IMELODY,       /* 18 */
    ATS_AUD_TYPE_SMF_SND,       /* 19 */
    ATS_AUD_TYPE_MMF,           /* 20 */
    ATS_AUD_TYPE_AU,            /* 21 */
    ATS_AUD_TYPE_AIFF,          /* 22 */
    ATS_AUD_TYPE_VRSI,          /* 23 */
    ATS_AUD_TYPE_WMA,           /* 24 */
    ATS_AUD_TYPE_M4A,           /* 25 */
    ATS_AUD_TYPE_3GP,           /* 26 */
    ATS_AUD_TYPE_MP4,           /* 27 */
    ATS_AUD_TYPE_JPG,           /* 28 */
    ATS_AUD_TYPE_GIF,           /* 29 */
    ATS_AUD_TYPE_MJPG,          /* 30 */
    ATS_AUD_TYPE_PNG,           /* 31 */
    ATS_AUD_TYPE_MUSICAM,       /* 32 */
    ATS_AUD_TYPE_BSAC,          /* 33 */
    
    ATS_AUD_TYPE_MAX
}ATS_AUD_TYPE;

/*Audio Record quality type*/
typedef enum
{
    ATS_AUD_REC_QUALITY_LOW,
    ATS_AUD_REC_QUALITY_MED,
    ATS_AUD_REC_QUALITY_HIGH,
    ATS_AUD_REC_QUALITY_BEST
    
} ATS_AUD_REC_QUALITY_TYPE;



/*Audio Play Result */
typedef signed int ATS_AUD_RESULT;
#define ATS_AUD_RET_SUCCESS 		   0
#define ATS_AUD_RET_FAIL               1
#define ATS_AUD_RET_BUSY               2
#define ATS_AUD_RET_DISC_FULL          3
#define ATS_AUD_RET_OPEN_FILE_FAIL     4
#define ATS_AUD_RET_END_OF_FILE        5
#define ATS_AUD_RET_TERMINATED         6
#define ATS_AUD_RET_BAD_FORMAT         7
#define ATS_AUD_RET_INVALID_FORMAT     8

/*Audio Play Style */
typedef signed int ATS_AUD_STYLE;
#define ATS_AUD_STYLE_PLAY_CRESCENDO	0	/*声音渐强*/
#define ATS_AUD_STYLE_PLAY_INFINITE		1	/*重复播放*/
#define ATS_AUD_STYLE_PLAY_ONCE			2	/*只播放一次*/

/*Audio Play Volume Level */
typedef signed int  ATS_AUD_VOLUME_LEVEL;
#define ATS_AUD_VOLUME_LEVEL1 	0
#define ATS_AUD_VOLUME_LEVEL2 	1
#define ATS_AUD_VOLUME_LEVEL3 	2
#define ATS_AUD_VOLUME_LEVEL4 	3
#define ATS_AUD_VOLUME_LEVEL5 	4
#define ATS_AUD_VOLUME_LEVEL6 	5
#define ATS_AUD_VOLUME_LEVEL7 	6


/*Audio Play Volume Type */
typedef signed int  ATS_AUD_VOLUME_TYPE;
#define ATS_AUD_VOLUME_CTN             0 		/* MMI can apply to associate volume; call tone attribute */
#define ATS_AUD_VOLUME_KEY             1 		/* MMI can apply to associate volume; keypad tone attribute */
#define ATS_AUD_VOLUME_MIC             2 		/* microphone attribute */
#define ATS_AUD_VOLUME_FMR             3 		/* MMI can apply to FM radio attribute */
#define ATS_AUD_VOLUME_SPH             4 		/* MMI can apply to associate volume; speech sound attribute */
#define ATS_AUD_VOLUME_SID             5        /* side tone attribute */
#define ATS_AUD_VOLUME_MEDIA           6   		/* MMI can apply to associate volume; As MP3, Wave,... attribute */


/*Audio Play Output Type */
typedef signed int  ATS_AUD_OUTPUT_TYPE;
#define ATS_AUD_DEVICE_SPEAKER		0	/* Tone, Keypad sound to play on audio device. */
#define ATS_AUD_DEVICE_MICROPHONE   1	/* Microphone sound to send on audio device. */
#define ATS_AUD_DEVICE_BUZZER 	  	2	/* Ring tone sound to play on audio device. */
#define ATS_AUD_DEVICE_GMI		  	3	/* MIDI/Melody sound to play on audio device */
#define ATS_AUD_DEVICE_SPEAKER2	  	4	/* earphone, carkit */
#define ATS_AUD_DEVICE_LOUDSPEAKER  5	/* loudspeaker for free sound */
#define ATS_AUD_DEVICE_SPEAKER_BOTH 6	



typedef void (*ATS_AUD_CALLBACK) (ATS_AUD_RESULT result);


typedef signed int ATS_AUD_HANDLE;
typedef void (*ATS_AUD_MMA_CALLBACK) (ATS_AUD_HANDLE handle, ats_int32 result);


/*音频播放接口,如果是整体播放,请将start_offset/end_offset 都设置为0 */
/*播放音频数据*/
extern ATS_AUD_RESULT ATS_aud_play_string(
       			    void *audio_data,
		            ats_uint32 len,
		            ATS_AUD_TYPE format,
					ats_uint32 start_offset,
					ats_uint32 end_offset,
		            ATS_AUD_STYLE play_style,
		            ATS_AUD_CALLBACK callback,
		            ATS_AUD_VOLUME_LEVEL volume,
		            ATS_AUD_OUTPUT_TYPE output_type);
/*播放音频文件*/
extern ATS_AUD_RESULT ATS_aud_play_file(
                    void *file_name,
                    ats_uint32 start_offset,
                    ats_uint32 end_offset,
                    ATS_AUD_STYLE play_style,
                    ATS_AUD_CALLBACK callback,
                    ATS_AUD_VOLUME_LEVEL volume,
                    ATS_AUD_OUTPUT_TYPE output_type );

/*停止播放音频数据*/
extern void ATS_aud_stop_string(void);
/*播放音频文件*/
extern void ATS_aud_stop_file(void);



/*音频录制接口, 假如对size 或time 没有限制,请将 size_limit 或time_limit 设置为0*/
extern ATS_AUD_RESULT ATS_aud_start_record(
                    void *file_name,
                    ATS_AUD_TYPE format,
                    ATS_AUD_REC_QUALITY_TYPE quality,
                    ATS_AUD_CALLBACK callback,
                    ats_uint32 size_limit,
                    ats_uint32 time_limit);
extern void ATS_aud_stop_record(void);


/*其他音频接口*/
extern void ATS_aud_set_volume(ATS_AUD_VOLUME_TYPE type, ATS_AUD_VOLUME_LEVEL volume);
extern void ATS_aud_set_mute(ATS_AUD_VOLUME_TYPE vol_type, ATS_BOOL mute);

extern void ATS_aud_resume_background_play(void);
extern void ATS_aud_suspend_background_play(void);





/*音频播放器相关接口 */
extern void ATS_audply_press_prev_button_down(void);

extern void ATS_audply_press_next_button_down(void);

extern void ATS_audply_press_play_button_down(void);

extern void ATS_audply_press_stop_button_down(void);

extern void ATS_audply_press_prev_button_up(void);

extern void ATS_audply_press_next_button_up(void);

extern void ATS_audply_press_play_button_up(void);

extern void ATS_audply_press_stop_button_up(void);

extern ATS_BOOL ATS_audply_is_ready(void);

extern ATS_BOOL ATS_audply_get_current_title(ats_uint8* title);

extern ATS_BOOL ATS_audply_is_playing(void);

extern ats_uint8* ATS_audply_get_current_fullname(void);

extern ats_uint32 ATS_audply_get_play_seconds(void);

extern ats_uint32 ATS_audply_get_play_duration(void);




/*与以上音频播放器函数类似,为mma相关接口,该接口可以实现声音的预加载,
	且可以实现3 种声音混音 */
extern ATS_AUD_HANDLE ATS_aud_mma_open_file(void *file_name, ats_uint8 repeats, ATS_BOOL is_pdl, ATS_AUD_MMA_CALLBACK callback);
extern ATS_AUD_HANDLE ATS_aud_mma_open_string(void *audio_data, ats_uint32 len, ats_uint8 mdi_format, ats_uint8 repeats, ATS_AUD_MMA_CALLBACK callback);
extern ATS_AUD_HANDLE ATS_aud_mma_play(ATS_AUD_HANDLE handle);
extern ATS_AUD_HANDLE ATS_aud_mma_pause(ATS_AUD_HANDLE handle);
extern ATS_AUD_HANDLE ATS_aud_mma_resume(ATS_AUD_HANDLE handle);
extern ATS_AUD_HANDLE ATS_aud_mma_stop(ATS_AUD_HANDLE handle);
extern ATS_AUD_HANDLE ATS_aud_mma_close(ATS_AUD_HANDLE handle);
extern ATS_BOOL ATS_aud_mma_is_idle(void);
extern ATS_BOOL ATS_aud_mma_is_open(void);

#endif /*__ATS_MEDIA_H__*/

#endif /*__SKY_3DGUI__*/