⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sfapi.h

📁 此为在MTK手机平台上添加软解码MP4要修改的源代码
💻 H
📖 第 1 页 / 共 2 页
字号:

typedef enum _SFSND_FORMAT
{
  SNDFORMAT_UNKNOWN=0,
  SNDFORMAT_MIDI=1,
  SNDFORMAT_WAVE=2
} SFSND_FORMAT;

/**
 * @brief 开始播放一个声音
 * @param pSndBuffer - 声音缓冲
 * @param uBufferSize - 声音缓冲大小
 * @param format - 声音数据格式
 * @param nLoopCount - 0表示循环播放,其他表示播放次数
 * @return 播放ID
 */
SFSND_ID SFSnd_Play(void*pSndBuffer,unsigned int uBufferSize,SFSND_FORMAT format,int nLoopCount);

/**
 * @brief 结束并关闭声音的播放
 * @param idSnd - 播放声音ID
 */
void SFSnd_Stop(SFSND_ID idSnd);

/**
 * @brief发送一条短消息
 * @param pNumber - 发送到的号码
 * @param pContent - 发送的内容
 * @return 发送的消息ID
 */
SFSMS_ID SFSms_Send(const UChar*pNumber,const UChar *pContent);

#ifdef WIN32
typedef struct _MemProfile MemProfile;
void SFMem_Profile(MemProfile*profile);
typedef struct _MemProfileEx MemProfileEx;
void SFMem_ProfileEx(MemProfileEx*profile);
#endif


typedef struct _SFDateTime
{
	SFInt nYear;
	SFInt nMonth;
	SFInt nDay;
	SFInt nHour;
	SFInt nMinute;
	SFInt nSecond;
	SFUint nMill;
} SFDateTime;

void SFSystem_GetCurrentDataTime(SFDateTime*pDataTime);

/**
* @brief 检查当前是否有SIM卡
* @return SFTrue 表示有SIM卡,SFFalse 表示没有
*/
SFBool SFSystem_HasSim(void);

/**
* @brief 检查当前平台是否支持触摸屏
* @return SFTrue 表示支持,SFFalse 表示不支持
*/
SFBool SFSystem_IsTouchSupported(void);

/**
 * @brief 绘制一行文字
 * @param str - 绘制的字符串,不要求0结尾
 * @param length - 以字符为单位的文字长度
 * @param x - 绘制的水平位置
 * @param y - 绘制的垂直位置
 * @param cr - 指定的RRGGBB颜色值
 */
void SFScreen_DrawTextN(UString str,SFInt length,SFInt x,SFInt y,SFUint32 cr);

//void SFSystem_Initialize(void);
//void SFSystem_Finalize(void);

//SFBool SFKey_IsPressed(SFInt aKeyCode);

typedef int SFFS_HANDLE;

enum SFFS_Flags
{
	SFFSF_CREATE=1,
	SFFSF_READ=2,
	SFFSF_WRITE=4
};

#define SFFS_INVALID_HANDLE	0

/**
 * @brief 打开一个文件
 * @param path - 文件路径
 * @param flags - 打开标志,参见::SFFS_Flags,可以是这些标志的或
 * @return 大开的文件句柄,如果打开失败返回SFFS_INVALID_HANDLE
 */
SFFS_HANDLE SFFS_Open(UString path,SFUint flags);

/**
 * @brief 对一个文件读取内容
 * @param hFile - 文件句柄
 * @param buf -接受数据的缓冲区的首地址
 * @param sz - 要读入的以字节为单位的大小
 * @return 实际读入的大小
 */
SFSize_T SFFS_Read(SFFS_HANDLE hFile,SFAnyPtr buf,SFSize_T sz);

/**
 * @brief 向一个文件写入内容
 * @param hFile - 文件句柄
 * @param buf - 写入的数据的首地址
 * @param sz - 写入的以字节为单位的大小
 * @return 实际写入的大小
 */
SFSize_T SFFS_Write(SFFS_HANDLE hFile,const SFAny*buf,SFSize_T sz);

/**
 * @brief 关闭一个打开的文件句柄
 * @param hHandle - 打开的文件句柄
 */
void SFFS_Close(SFFS_HANDLE hHandle);

/**
 * @brief 获取一个打开的文件的当前长度
 * @param hHandle - 打开的文件句柄
 * @return 成功或失败 
 */
SFBool SFFS_GetSize(SFFS_HANDLE hHandle,SFSize_T*pSz);


typedef SFInt32 SFReason;

enum SFReasons
{
	SF_REASON_OK=0,
	SF_REASON_FAIL=-1,
	SF_REASON_BUSY=-2,
	SF_REASON_CANCEL=-3,
	SF_REASON_NOTFOUND=-4
};

/**
 * @brief 浏览并选择一个文件以供之后打开
 * @param aBuffer - 接受文件名的缓冲
 * @param aMaxSize - 缓冲以字符为单位的大小,含0结尾
 * @param abOpenFile - 是否是打开文件还是保存文件
 * @param aFilter - 过滤字符串,格式为"*.aaa;*.bbb",如果为SFNull表示"*.*"
 * @param aReason - 异步调用的通知结果的存放地址,调用后应当设为SF_REASON_BUSY,然后在系统处理完后设置实际的处理结果,成功的话设为SF_REASON_OK
 * @remarks 这是一个异步调用,调用后将在之后控制权交还系统时离开本应用进入系统的打开界面,之后回到应用再设置结果。
 */
void SFSystem_SelectFile(UChar* aBuffer,SFSize_T aMaxSize,SFBool bOpenFile,const UChar* aFilter,SFReason* aReason);


/**
 * @brief 调试用方法,用于打出调试信息
 */
void SFDEBUG(const char*str);

typedef struct _SFPCMDevice
{
	void * data;
}
SFPCMDevice;

/**
* @brief 声音设备结构,我这边只要指针,不需要知道其结构
*/
typedef struct _SFPCMDevice SFPCMDevice;

/**
* @brief 创建一个PCM播放设备
* @param aFormat - 必须为0
* @param aSamplesPerSec - 每秒的采样数
* @param aBit - 采样精度8/16
* @param aChannel - 声道
* @return 创建的声音设备
*/
SFPCMDevice* SFPCMDevice_Create(SFInt aFormat,SFInt aSamplesPerSec,SFInt
aBit,SFInt aChannel);

/**
* @brief 开始播放指定的设备
* @param aDevice - 播放的设备
*/
void SFPCMDevice_Start(SFPCMDevice* aDevice);

/**
* @brief 停止声音播放
* @param aDevice - 播放的设备
*/
void SFPCMDevice_Stop(SFPCMDevice* aDevice);

/**
* @brief 关闭设备
* @param aDevice - 创建的声音设备
*/
void SFPCMDevice_Close(SFPCMDevice* aDevice);

#define SF_MAX_VOLUME 32767
/**
* @brief 设置设备的音量
* @param aDevice - 创建的声音设备
* @param aVolume - 设置的音量
*/
void SFPCMDevice_SetVolume(SFPCMDevice* aDevice,SFInt aVolume);

/**
* @brief 获取设备的音量
* @param aDevice - 创建的声音设备
* @return 音量
*/
SFInt SFPCMDevice_GetVolume(SFPCMDevice* aDevice);

/**
* @brief 获取发给应用的额外命令,0结尾
* @param aBuffer - 用于获取额外字符串命令的缓冲
* @param aSize - 缓冲取的大小,以字符为单位
* @return 实际的大小,以字符为单位,不含0结尾
*/
SFSize_T SFApp_GetCommandLine(UChar* aBuffer,SFSize_T aSize);

/*
* @brief 获取当前的按键状态,每一位代表一个按键的状态,1标示按下,0标示松开。参见enum SFKeyStates
*/
SFUint32 SFSystem_GetKeyState(void);

enum SFKeyStates
{
	SFKS_UP=1,
	SFKS_DOWN=1<<1,
	SFKS_LEFT=1<<2,
	SFKS_RIGHT=1<<3,
	SFKS_NUM0=1<<4,
	SFKS_NUM1=1<<5,
	SFKS_NUM2=1<<6,
	SFKS_NUM3=1<<7,
	SFKS_NUM4=1<<8,
	SFKS_NUM5=1<<9,
	SFKS_NUM6=1<<10,
	SFKS_NUM7=1<<11,
	SFKS_NUM8=1<<12,
	SFKS_NUM9=1<<13,
	SFKS_POUND=1<<14,
	SFKS_STAR=1<<15,
	SFKS_SL=1<<16,
	SFKS_SM=1<<17,
	SFKS_SR=1<<18,
	SFKS_END=1<<19
};

/**
* @brief 获取一个可写的声音数据缓冲段
* @param aDevice - 创建的声音设备
* @param offset - 声音缓冲中的偏移,如果给0xFFFFFFFF则表示要当前写入位置
(之前提交的数据的末尾),模拟器中仅使用0xFFFFFFFF
* @param size - 要获取的声音缓冲的大小
* @param pBuf0 - 获取的缓冲第一段
* @param pBUfSize0 - 获取的缓冲第一段的大小
* @param pBuf1 - 获取的缓冲第二段,如果没有或者实现中不出现第二段缓冲这
种情况则给SFNull
* @param pBUfSize1 - 获取的缓冲第二段的大小,如果没有则给0
* @remarks 这是一个循环播放的缓冲,所以如果到达缓冲的末尾可能会出现连续
空间不够的情况,
* 那么除了这个空间,就需要额外给出位于缓冲起始的空间,所以就需要两组参数,
* 参见DirectX中的DirectSound中IDirectSoundBuffer
*/
void SFPCMDevice_LockBuffer(SFPCMDevice* aDevice,SFUint32
offset,SFUint32 size,SFAny** pBuf0,SFUint32* pBufSize0,SFAny**
pBuf1,SFUint32* pBufSize1);

/**
* @brief 提交之前获得的缓冲数据
* @param aDevice - 创建的声音设备
* @param aBuf0 - 之前获取的缓冲第一段
* @param aBUfSize0 - 实际要提交的缓冲第一段的长度
* @param aBuf1 - 之前获取的缓冲第二段,如果没有则给SFNull
* @param aBUfSize1 - 实际要提交的缓冲第一段的长度
*/
void SFPCMDevice_UnlockBuffer(SFPCMDevice* aDevice,SFAny* aBuf0,SFUint32
aBufSize0,SFAny* aBuf1,SFUint32 aBufSize1);

enum
{
	NESEMU_STATUS_NONE=0, //!< 其它状态
	NESEMU_STATUS_GAME=1, //!< 游戏中,正常屏幕
	NESEMU_STATUS_GAMER90=2 //!< 游戏中,旋转90度
};

SFInt SFNesEmuApp_GetStatus(void);

#ifdef __cplusplus
}
#endif //__cplusplus

#endif //!__SNOWFISH_API__H__


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -