home *** CD-ROM | disk | FTP | other *** search
/ Fun CD 69 / OTACD69.bin / archive / game / PsrSDK16a / PsrSDK16a.lzh / Include / Psrp.h < prev   
C/C++ Source or Header  |  2000-10-28  |  14KB  |  386 lines

  1. /*******************************************************************************
  2. *                                           *
  3. * [PSストリームアクセスプラグイン]                           *
  4. *                                           *
  5. *    FILE NAME    : PSRP.h                            *
  6. *                                           *
  7. *    History        | Comment                Name           *
  8. *     ------------------+--------------------------------------------------    *
  9. *    2000.01.22    | 新規作成                ふぃろ           *
  10. *    2000.05.01    | CDサポートのため全面修正        ふぃろ           *
  11. *    2000.09.27    | 再生時の強制終了対策            Ribot           *
  12. *    2000.10.28    | PSRSTREAMINFOとPSRPLUGINの変更    ふぃろ           *
  13. *                                           *
  14. *                (C) Copyright ふぃろ 2000. All rights reserved.*
  15. *******************************************************************************/
  16.  
  17.  
  18. #ifndef PSXMC_PSRPLUGIN
  19. #define PSXMC_PSRPLUGIN
  20.  
  21.  
  22. #ifndef CEXPORT
  23. #define CEXPORT    extern __declspec (dllexport)
  24. #endif
  25.  
  26. #define PSR_FRAMEBUFFER        0xb000                    //000927
  27.  
  28.  
  29. /******************************************************************************/
  30. /*                                          */
  31. /*    構造形式定義                                  */
  32. /*                                          */
  33. /******************************************************************************/
  34.  
  35. typedef struct {    // ストリームデータ情報 --------------------------------
  36.     WORD        wTypeFlags;    // データ種別フラグ    PSR_STRTYPE_XXX
  37.     WORD        wReserved;    // 予備    0固定
  38.     DWORD        nBeginSector;    // データ開始セクタ番号
  39.     DWORD        nNumSector;    // データセクタ数
  40.     DWORD        nPlayTime;    // 再生時間    1/1000秒単位
  41.     DWORD        nNumFrame;    // フレーム数
  42.     SIZE        szFrame;    // フレームサイズ
  43.     WORD        wFrameRate;    // フレームレート
  44.     WORD        wFormatTag;    // 音声データのフォーマット
  45.     WORD        wChannels;    // モノラル/ステレオの別
  46.     WORD        wBitsPerSample;    // サンプル当たりのビット数
  47.     DWORD        nSamplesPerSec;    // サンプリングレート
  48.     DWORD        nDataSize;    // データサイズ(byte)    0可
  49. } PSRSTREAMINFO, *LPPSRSTREAMINFO;
  50.  
  51.  
  52.             // データ種別フラグ ------------------------------------
  53. #define PSR_STRTYPE_MOVIE    0x0001    // 動画ストリーム
  54. #define PSR_STRTYPE_AUDIO    0x0002    // 音声ストリーム
  55. #define PSR_STRTYPE_ALL        0x0003    // 動画ストリーム & 音声ストリーム
  56.  
  57. #define PSR_STRTYPE_VFRATE    0x0010    // 可変フレームレート
  58.  
  59.  
  60. typedef struct {    // 読み込みバッファ ------------------------------------
  61.     DWORD        nFrameNo;    // フレーム番号
  62.     SIZE        szFrame;    // フレームサイズ
  63.     WORD        wFrameRate;    // フレームレート    0:固定フレームレート
  64.     WORD        wReserved;    // 0固定
  65.     DWORD        nLength;    // データ長
  66.     BYTE        abData[PSR_FRAMEBUFFER]; // データ
  67. } PSRREADBUFF, *LPPSRREADBUFF;
  68.  
  69.  
  70.  
  71.  
  72. /******************************************************************************/
  73. /*                                          */
  74. /* PsrQueryPlugin() : プラグイン情報の取得 (共通 : 必須)              */
  75. /*                                          */
  76. /*    プラグインを識別する名前などの情報を返します。                  */
  77. /*                                          */
  78. /******************************************************************************/
  79.  
  80.  
  81. #define PSR_MAX_PLUGINNAME    48    // プラグイン識別名文字数
  82. #define PSR_MAX_COPYRIGHT    80    // コピーライト文字数
  83. #define PSR_MAX_SITENAME    80    // サイト名文字数
  84. #define PSR_MAX_SITEURL        80    // サイトURL文字数
  85.  
  86. #define PSR_SYSTEMVERSION220    220    // 対応システムバージョン    2.20
  87. #define PSR_SYSTEMVERSION    230    // 対応システムバージョン    2.30
  88.  
  89. typedef struct {    // プラグイン情報 --------------------------------------
  90.     CHAR        aName[PSR_MAX_PLUGINNAME+1];    // プラグイン識別名
  91.     CHAR        aCopyright[PSR_MAX_COPYRIGHT+1];// コピーライト
  92.     USHORT        usVersion;        // バージョン番号
  93.     USHORT        usIsSupportVersion;    // 判定結果保証バージョン
  94.     USHORT        usSystemVersion;    // 対応システムバージョン
  95.     CHAR        aSiteName[PSR_MAX_SITENAME+1];    // サイト名    省略可
  96.     CHAR        aSiteUrl[PSR_MAX_SITEURL+1];    // サイト URL    省略可
  97. } PSRPLUGIN, *LPPSRPLUGIN;
  98.  
  99.  
  100. CEXPORT    VOID    PsrQueryPlugin(
  101.     LPPSRPLUGIN    lpPlugin);    // プラグイン情報取得バッファアドレス
  102.  
  103. typedef VOID    (*PFNPSRQUERYP)(LPPSRPLUGIN);
  104.  
  105.  
  106.  
  107. /******************************************************************************/
  108. /*                                          */
  109. /* PsrIsSupportFile() : ストリームファイルのサポート判定 (FILE : 必須)          */
  110. /*                                          */
  111. /*    指定ファイルが当該プラグインでサポートできる形式のストリームデータで  */
  112. /*    あるかを判定します。                              */
  113. /*                                          */
  114. /******************************************************************************/
  115.  
  116. CEXPORT BOOL    PsrIsSupportFile(
  117.     LPCTSTR        lpFileName);    // ファイル名
  118.  
  119. typedef BOOL    (*PFNPSRISSF)(LPCTSTR);
  120.  
  121.  
  122.  
  123.  
  124. /******************************************************************************/
  125. /*                                          */
  126. /* PsrIsSupportCDBegin() : CDサポート判定 開始処理 (CD : 必須)              */
  127. /*                                          */
  128. /*    CDが当該プラグインでサポートできる形式のストリームデータを含んでいる  */
  129. /*    かを判定するための開始処理を行います。                      */
  130. /*                                          */
  131. /******************************************************************************/
  132.  
  133. #ifdef PSXMC_CDACCESS
  134. CEXPORT HANDLE    PsrIsSupportCDBegin(
  135.     INT        iNumToc,    // TOCの数
  136.     LPTOCENTRY    lptoc);        // TOC
  137.  
  138. typedef HANDLE    (*PFNPSRISSCDB)(INT, LPTOCENTRY);
  139.  
  140.  
  141.  
  142. /******************************************************************************/
  143. /*                                          */
  144. /* PsrIsSupportCDEnd() : CDサポート判定 終了処理 (CD : 必須)              */
  145. /*                                          */
  146. /*    CDが当該プラグインでサポートできる形式のストリームデータを含んでいる  */
  147. /*    かを判定するための終了処理を行います。                      */
  148. /*                                          */
  149. /******************************************************************************/
  150.  
  151. CEXPORT    VOID    PsrIsSupportCDEnd(
  152.     HANDLE        hIsCD);        // CDサポート判定ハンドル
  153.  
  154. typedef VOID    (*PFNPSRISSCDE)(HANDLE);
  155.  
  156.  
  157.  
  158. /******************************************************************************/
  159. /*                                          */
  160. /* PsrIsSupportCDSector() : CDサポート判定 セクタ通知 (CD : 必須)          */
  161. /*                                          */
  162. /*    CDが当該プラグインでサポートできる形式のストリームデータを含んでいる  */
  163. /*    かを判定するための処理を行います。                      */
  164. /*                                          */
  165. /******************************************************************************/
  166.  
  167. CEXPORT    BOOL    PsrIsSupportCDSector(
  168.     HANDLE        hIsCD,        // CDサポート判定ハンドル
  169.     TOCENTRY    toc,        // TOC
  170.     DWORD        nSector,    // セクタ番号
  171.     PVOID        pvSector);    // セクタ
  172.  
  173. typedef BOOL    (*PFNPSRISSCDS)(HANDLE, TOCENTRY, DWORD, PVOID);
  174.  
  175.  
  176.  
  177. /******************************************************************************/
  178. /*                                          */
  179. /* PsrIsSupportCDResult() : CDサポート判定 結果取得 (CD : 必須)              */
  180. /*                                          */
  181. /*    CDが当該プラグインでサポートできる形式のストリームデータを含んでいる  */
  182. /*    かを判定した結果を返します。                          */
  183. /*                                          */
  184. /******************************************************************************/
  185.  
  186. CEXPORT    INT    PsrIsSupportCDResult(
  187.     HANDLE        hIsCD,        // CDサポート判定ハンドル
  188.     INT        iIndex,        // ストリームインデックス
  189.     LPPSRSTREAMINFO    lpStreamInfo);    // ストリームデータ情報
  190.  
  191. typedef INT    (*PFNPSRISSCDR)(HANDLE, INT, LPPSRSTREAMINFO);
  192. #endif    // PSXMC_CDACCESS
  193.  
  194.  
  195.  
  196. /******************************************************************************/
  197. /*                                          */
  198. /* PsrGetStrFileInfo() : ストリームファイル情報の取得 (FILE : 必須)          */
  199. /*                                          */
  200. /*    指定ファイルのストリームデータに関する情報を返します。              */
  201. /*                                          */
  202. /******************************************************************************/
  203.  
  204. CEXPORT    BOOL    PsrGetStrFileInfo(
  205.     LPCTSTR        lpFileName,    // ファイル名
  206.     LPPSRSTREAMINFO    lpStreamInfo);    // ストリームデータ情報
  207.  
  208. typedef BOOL    (*PFNPSRGETSFI)(LPCTSTR, LPPSRSTREAMINFO);
  209.  
  210.  
  211.  
  212. /******************************************************************************/
  213. /*                                          */
  214. /* PsrGetStrDataInfo() : ストリームデータ情報の取得 (CD : 必須)              */
  215. /*                                          */
  216. /*    CD中の指定ストリームデータに関する情報を返します。              */
  217. /*                                          */
  218. /******************************************************************************/
  219.  
  220. CEXPORT    BOOL    PsrGetStrDataInfo(
  221.     INT        iDriveNo,    // ドライブ番号
  222.     DWORD        dwBegin,    // 開始セクタ番号
  223.     DWORD        dwNumSector,    // セクタ数
  224.     LPPSRSTREAMINFO    lpStreamInfo);    // ストリームデータ情報
  225.  
  226. typedef BOOL    (*PFNPSRGETSDI)(INT, DWORD, DWORD, LPPSRSTREAMINFO);
  227.  
  228.  
  229.  
  230. /******************************************************************************/
  231. /*                                          */
  232. /* PsrOpenFile() : ストリームファイルのオープン (FILE : 必須)              */
  233. /*                                          */
  234. /*    指定ファイルのストリームデータをオープンします。              */
  235. /*                                          */
  236. /******************************************************************************/
  237.  
  238. CEXPORT HANDLE    PsrOpenFile(
  239.     LPCTSTR        lpFileName,    // ファイル名
  240.     LPPSRSTREAMINFO    lpStreamInfo);    // ストリームデータ情報
  241.  
  242. typedef HANDLE    (*PFNPSROPENFILE)(LPCTSTR, LPPSRSTREAMINFO);
  243.  
  244.  
  245.  
  246. /******************************************************************************/
  247. /*                                          */
  248. /* PsrOpenCD() : CDストリームのオープン (CD : 必須)                  */
  249. /*                                          */
  250. /*    CD中の指定ストリームデータをオープンします。                  */
  251. /*                                          */
  252. /******************************************************************************/
  253.  
  254. #ifdef PSXMC_CDACCESS
  255. CEXPORT HANDLE    PsrOpenCD(
  256.     INT        iDriveNo,    // ドライブ番号
  257.     LPPSRSTREAMINFO    lpStreamInfo);    // ストリームデータ情報
  258.  
  259. typedef HANDLE    (*PFNPSROPENCD)(INT, LPPSRSTREAMINFO);
  260. #endif    // PSXMC_CDACCESS
  261.  
  262.  
  263.  
  264. /******************************************************************************/
  265. /*                                          */
  266. /* PsrClose() : ストリームデータのクローズ (共通 : 必須)              */
  267. /*                                          */
  268. /*    PsrOpenFile()またはPsrOpenCD()によりオープンしたストリームデータを    */
  269. /*    クローズします。                              */
  270. /*                                          */
  271. /******************************************************************************/
  272.  
  273. CEXPORT BOOL    PsrClose(
  274.     HANDLE        hStream);    // ストリームハンドル
  275.  
  276. typedef BOOL    (*PFNPSRCLOSE)(HANDLE);
  277.  
  278.  
  279. /******************************************************************************/
  280. /*                                          */
  281. /* PsrRead() : ストリームデータの読み取り (共通 : 必須)                  */
  282. /*                                          */
  283. /*    ストリームデータから動画データまたは音声データを読み取ります。          */
  284. /*                                          */
  285. /******************************************************************************/
  286.  
  287. CEXPORT BOOL    PsrRead(
  288.     HANDLE        hStream,    // ストリームハンドル
  289.     LPPSRREADBUFF    lpBuffer);    // 読み取りバッファ
  290.  
  291. typedef BOOL    (*PFNPSRREAD)(HANDLE, LPPSRREADBUFF);
  292.  
  293.  
  294. /******************************************************************************/
  295. /*                                          */
  296. /* PsrSeek() : 読み取り位置の設定 (共通 : 必須)                      */
  297. /*                                          */
  298. /*    ストリームデータの読み取り位置を指定されたフレームデータの先頭に移動し*/
  299. /*    ます。                                      */
  300. /*                                          */
  301. /******************************************************************************/
  302.  
  303. CEXPORT BOOL    PsrSeek(
  304.     HANDLE        hStream,    // ストリームハンドル
  305.     DWORD        dwPosition);    // 読み取り位置        1/1000秒単位
  306.  
  307. typedef BOOL    (*PFNPSRSEEK)(HANDLE, DWORD);
  308.  
  309.  
  310.  
  311. /******************************************************************************/
  312. /*                                          */
  313. /* PsrDecodeFrame() : 動画データのデコード (共通)                  */
  314. /*                                          */
  315. /*    通常のSTRファイルとは異なる動画データをデコードします。              */
  316. /*                                          */
  317. /*    このファンクションとPsrDecodeBs関数が省略された場合、そのプラグインの */
  318. /*    PsrRead()が読み取った動画データが通常のSTRファイルの形式であると認識し*/
  319. /*    ます。                                      */
  320. /*                                          */
  321. /******************************************************************************/
  322.  
  323. #define PSR_DECODE_ERROR    0xffffffff
  324. #define PSR_DECODE_NORMAL    0
  325.  
  326. CEXPORT LPBITMAPINFO PsrDecodeFrame(
  327.     LPPSRREADBUFF    lpFrame,    // フレームデータ
  328.     LPBITMAPINFO    lpbmi);        // DIBビットマップ
  329.  
  330. typedef LPBITMAPINFO    (*PFNPSRDECODEF)(LPPSRREADBUFF, LPBITMAPINFO);
  331.  
  332.  
  333. /******************************************************************************/
  334. /*                                          */
  335. /* PsrDecodeBs() : BSデコード (共通)                          */
  336. /*                                          */
  337. /*    通常のSTRファイルとは異なる動画データをデコードします。              */
  338. /*                                          */
  339. /*    このファンクションとPsrDecodeFrame関数が省略された場合、そのプラグイン*/
  340. /*    のPsrRead()が読み取った動画データが通常のSTRファイルの形式であると認識*/
  341. /*    します。                                  */
  342. /*                                          */
  343. /******************************************************************************/
  344.  
  345. CEXPORT    PUSHORT    PsrDecodeBs(
  346.     LPPSRREADBUFF    lpFrame);    // フレームデータ
  347.  
  348. typedef PUSHORT    (*PFNPSRDECODEB)(LPPSRREADBUFF);
  349.  
  350.  
  351. /******************************************************************************/
  352. /*                                          */
  353. /* PsrDecodeAudio() : 音声データのデコード (共通)                  */
  354. /*                                          */
  355. /*    通常のSTRファイルとは異なる音声データをデコードします。              */
  356. /*                                          */
  357. /*    このファンクションが省略された場合、そのプラグインのPsrRead()が読み   */
  358. /*    取った音声データが通常のSTRファイルの形式であると認識されます。          */
  359. /*                                          */
  360. /******************************************************************************/
  361.  
  362. CEXPORT DWORD    PsrDecodeAudio(
  363.     LPPSRREADBUFF    lpAudio,    // 音声データ
  364.     PVOID        pvBuffer,    // デコード後の音声データ
  365.     DWORD        nLength);    // lpBufferのバイト数
  366.  
  367. typedef DWORD    (*PFNPSRDECODEA)(LPPSRREADBUFF, PVOID, DWORD);
  368.  
  369.  
  370. /******************************************************************************/
  371. /*                                          */
  372. /* PsrSetEntrionment() : 環境設定パネルの呼び出し (共通)              */
  373. /*                                          */
  374. /*    当該プラグインに必要な環境設定を行うパネルを表示します。          */
  375. /*                                          */
  376. /*    このファンクションが省略された場合、そのプラグインに環境設定の必要がな*/
  377. /*    いと認識されます。                              */
  378. /*                                          */
  379. /******************************************************************************/
  380.  
  381. CEXPORT VOID    PsrSetEnvironment(
  382.     HWND        hWndParent);    // 親ウインドウ
  383.  
  384. typedef VOID    (*PFNPSRSETE)(HWND);
  385. #endif
  386.