- メインページ
- モジュール
- データ構造
- ファイル
- ディレクトリ

- ファイル一覧
- グローバル

# sound.h

説明を見る。

    00001 #include "dxlibp.h"
    00002 #include <pspmp3.h>
    00003 #include <psputility.h>
    00004
    00005 #define DXP_BUILDOPTION_SOUNDHANDLE_MAX 32
    00006
    00007 #define DXP_SOUNDCMD_NONE 0
    00008 #define DXP_SOUNDCMD_PLAY 1
    00009 #define DXP_SOUNDCMD_STOP 2
    00010 #define DXP_SOUNDCMD_EXIT 3
    00011
    00012 #define DXP_SOUNDFMT_MP3 1
    00013
    00014 #define SHND2PTR(HNDLE,PTR) {if(!dxpSoundData.init)return -1; if(HNDLE < 0 || HNDLE >= DXP_BUILDOPTION_SOUNDHANDLE_MAX)return -1;PTR = dxpSoundArray + HNDLE;if(!PTR->used)return -1;}
    00015
    00016
    00017 typedef struct DXPAVCODEC_BUFFER
    00018 {
    00019     u32 reserved0[6];
    00020     u8* datIn;
    00021     u32 frameSize0;
    00022     u32* pcmOut;
    00023     u32 decodeByte;//set 4608 (= 1152[sample per frame] * 2[byte per sample] * 2[channel])
    00024     u32 frameSize1;
    00025     u32 reserved1[54];
    00026 }DXPAVCODEC_BUFFER;
    00027
    00028 typedef struct DXPAVCONTEXT_MP3
    00029 {
    00030     DXPAVCODEC_BUFFER *avBuf;
    00031     int id3v1Pos;
    00032     int id3v2Pos;
    00033     u32 blockId;//メモリ確保に使う。
    00034     u8 *mp3Buf;
    00035     u32 mp3BufSize;
    00036 }DXPAVCONTEXT_MP3;
    00037
    00038 typedef struct DXPAVCONTEXT
    00039 {
    00040     int fileHandle;//Uファイルハンドル
    00041     int fileSize;//Uファイルサイズ
    00042
    00043     u32 *pcmOut;//U出力先
    00044
    00045     int sampleRate;//Dサンプルレート
    00046     int nextPos;//Dデコーダが次にデコードするサンプル位置
    00047     int outSampleNum;//Dデコーダが必要とする出力先バッファサイズ（サンプル数）
    00048     u8 format;//Dフォーマット
    00049     union
    00050     {
    00051         DXPAVCONTEXT_MP3 mp3;
    00052     };
    00053 }DXPAVCONTEXT;
    00054
    00055 typedef struct DXPSOUNDHANDLE
    00056 {
    00057     //ハンドルステータス
    00058     unsigned used : 1;
    00059     int soundDataType;
    00060     //ユーザーから指定する情報
    00061     int cmd;
    00062     int loopResumePos;
    00063     u8 volume;
    00064     int pan;
    00065     int playing;
    00066     union
    00067     {
    00068         struct{
    00069             int threadId;
    00070             int gotoPos;
    00071             int loop;
    00072         }file;
    00073         struct{
    00074             int length;
    00075             u32 *pcmBuf;
    00076             int cmdplaytype;
    00077         }memnopress;
    00078     };
    00079
    00080
    00081     DXPAVCONTEXT avContext;
    00082 }DXPSOUNDHANDLE;
    00083
    00084 typedef struct DXPSOUNDDATA
    00085 {
    00086     u8 init;
    00087     u8 createSoundDataType;
    00088 }DXPSOUNDDATA;
    00089
    00090 extern DXPSOUNDHANDLE dxpSoundArray[];
    00091 extern DXPSOUNDDATA dxpSoundData;
    00092
    00093 int dxpSoundInit();
    00094 int dxpSoundTerm();
    00095 int dxpSoundReserveHandle();
    00096 int dxpSoundReleaseHandle(int handle);
    00097
    00098 int dxpSoundMp3Init(DXPAVCONTEXT *av);
    00099 int dxpSoundMp3GetSampleLength(DXPAVCONTEXT *av);
    00100 int dxpSoundMp3Seek(DXPAVCONTEXT *av,int sample);
    00101 int dxpSoundMp3Decode(DXPAVCONTEXT *av);
    00102 int dxpSoundMp3End(DXPAVCONTEXT *av);
    00103
    00104 int dxpSoundCodecInit(DXPSOUNDHANDLE *pHnd);
    00105 int dxpSoundCodecGetSampleLength(DXPSOUNDHANDLE *pHnd);
    00106 int dxpSoundCodecSeek(DXPSOUNDHANDLE *pHnd,int sample);
    00107 int dxpSoundCodecDecode(DXPSOUNDHANDLE *pHnd);
    00108 int dxpSoundCodecEnd(DXPSOUNDHANDLE *pHnd);
    00109
    00110 int dxpSoundThreadFunc_file(SceSize size,void* argp);
    00111 int dxpSoundThreadFunc_memnopress(SceSize size,void* argp);