home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Fun CD 69
/
OTACD69.bin
/
archive
/
game
/
PsrSDK16a
/
PsrSDK16a.lzh
/
Include
/
Psrp.h
< prev
Wrap
C/C++ Source or Header
|
2000-10-28
|
14KB
|
386 lines
/*******************************************************************************
* *
* [PSストリームアクセスプラグイン] *
* *
* FILE NAME : PSRP.h *
* *
* History | Comment Name *
* ------------------+-------------------------------------------------- *
* 2000.01.22 | 新規作成 ふぃろ *
* 2000.05.01 | CDサポートのため全面修正 ふぃろ *
* 2000.09.27 | 再生時の強制終了対策 Ribot *
* 2000.10.28 | PSRSTREAMINFOとPSRPLUGINの変更 ふぃろ *
* *
* (C) Copyright ふぃろ 2000. All rights reserved.*
*******************************************************************************/
#ifndef PSXMC_PSRPLUGIN
#define PSXMC_PSRPLUGIN
#ifndef CEXPORT
#define CEXPORT extern __declspec (dllexport)
#endif
#define PSR_FRAMEBUFFER 0xb000 //000927
/******************************************************************************/
/* */
/* 構造形式定義 */
/* */
/******************************************************************************/
typedef struct { // ストリームデータ情報 --------------------------------
WORD wTypeFlags; // データ種別フラグ PSR_STRTYPE_XXX
WORD wReserved; // 予備 0固定
DWORD nBeginSector; // データ開始セクタ番号
DWORD nNumSector; // データセクタ数
DWORD nPlayTime; // 再生時間 1/1000秒単位
DWORD nNumFrame; // フレーム数
SIZE szFrame; // フレームサイズ
WORD wFrameRate; // フレームレート
WORD wFormatTag; // 音声データのフォーマット
WORD wChannels; // モノラル/ステレオの別
WORD wBitsPerSample; // サンプル当たりのビット数
DWORD nSamplesPerSec; // サンプリングレート
DWORD nDataSize; // データサイズ(byte) 0可
} PSRSTREAMINFO, *LPPSRSTREAMINFO;
// データ種別フラグ ------------------------------------
#define PSR_STRTYPE_MOVIE 0x0001 // 動画ストリーム
#define PSR_STRTYPE_AUDIO 0x0002 // 音声ストリーム
#define PSR_STRTYPE_ALL 0x0003 // 動画ストリーム & 音声ストリーム
#define PSR_STRTYPE_VFRATE 0x0010 // 可変フレームレート
typedef struct { // 読み込みバッファ ------------------------------------
DWORD nFrameNo; // フレーム番号
SIZE szFrame; // フレームサイズ
WORD wFrameRate; // フレームレート 0:固定フレームレート
WORD wReserved; // 0固定
DWORD nLength; // データ長
BYTE abData[PSR_FRAMEBUFFER]; // データ
} PSRREADBUFF, *LPPSRREADBUFF;
/******************************************************************************/
/* */
/* PsrQueryPlugin() : プラグイン情報の取得 (共通 : 必須) */
/* */
/* プラグインを識別する名前などの情報を返します。 */
/* */
/******************************************************************************/
#define PSR_MAX_PLUGINNAME 48 // プラグイン識別名文字数
#define PSR_MAX_COPYRIGHT 80 // コピーライト文字数
#define PSR_MAX_SITENAME 80 // サイト名文字数
#define PSR_MAX_SITEURL 80 // サイトURL文字数
#define PSR_SYSTEMVERSION220 220 // 対応システムバージョン 2.20
#define PSR_SYSTEMVERSION 230 // 対応システムバージョン 2.30
typedef struct { // プラグイン情報 --------------------------------------
CHAR aName[PSR_MAX_PLUGINNAME+1]; // プラグイン識別名
CHAR aCopyright[PSR_MAX_COPYRIGHT+1];// コピーライト
USHORT usVersion; // バージョン番号
USHORT usIsSupportVersion; // 判定結果保証バージョン
USHORT usSystemVersion; // 対応システムバージョン
CHAR aSiteName[PSR_MAX_SITENAME+1]; // サイト名 省略可
CHAR aSiteUrl[PSR_MAX_SITEURL+1]; // サイト URL 省略可
} PSRPLUGIN, *LPPSRPLUGIN;
CEXPORT VOID PsrQueryPlugin(
LPPSRPLUGIN lpPlugin); // プラグイン情報取得バッファアドレス
typedef VOID (*PFNPSRQUERYP)(LPPSRPLUGIN);
/******************************************************************************/
/* */
/* PsrIsSupportFile() : ストリームファイルのサポート判定 (FILE : 必須) */
/* */
/* 指定ファイルが当該プラグインでサポートできる形式のストリームデータで */
/* あるかを判定します。 */
/* */
/******************************************************************************/
CEXPORT BOOL PsrIsSupportFile(
LPCTSTR lpFileName); // ファイル名
typedef BOOL (*PFNPSRISSF)(LPCTSTR);
/******************************************************************************/
/* */
/* PsrIsSupportCDBegin() : CDサポート判定 開始処理 (CD : 必須) */
/* */
/* CDが当該プラグインでサポートできる形式のストリームデータを含んでいる */
/* かを判定するための開始処理を行います。 */
/* */
/******************************************************************************/
#ifdef PSXMC_CDACCESS
CEXPORT HANDLE PsrIsSupportCDBegin(
INT iNumToc, // TOCの数
LPTOCENTRY lptoc); // TOC
typedef HANDLE (*PFNPSRISSCDB)(INT, LPTOCENTRY);
/******************************************************************************/
/* */
/* PsrIsSupportCDEnd() : CDサポート判定 終了処理 (CD : 必須) */
/* */
/* CDが当該プラグインでサポートできる形式のストリームデータを含んでいる */
/* かを判定するための終了処理を行います。 */
/* */
/******************************************************************************/
CEXPORT VOID PsrIsSupportCDEnd(
HANDLE hIsCD); // CDサポート判定ハンドル
typedef VOID (*PFNPSRISSCDE)(HANDLE);
/******************************************************************************/
/* */
/* PsrIsSupportCDSector() : CDサポート判定 セクタ通知 (CD : 必須) */
/* */
/* CDが当該プラグインでサポートできる形式のストリームデータを含んでいる */
/* かを判定するための処理を行います。 */
/* */
/******************************************************************************/
CEXPORT BOOL PsrIsSupportCDSector(
HANDLE hIsCD, // CDサポート判定ハンドル
TOCENTRY toc, // TOC
DWORD nSector, // セクタ番号
PVOID pvSector); // セクタ
typedef BOOL (*PFNPSRISSCDS)(HANDLE, TOCENTRY, DWORD, PVOID);
/******************************************************************************/
/* */
/* PsrIsSupportCDResult() : CDサポート判定 結果取得 (CD : 必須) */
/* */
/* CDが当該プラグインでサポートできる形式のストリームデータを含んでいる */
/* かを判定した結果を返します。 */
/* */
/******************************************************************************/
CEXPORT INT PsrIsSupportCDResult(
HANDLE hIsCD, // CDサポート判定ハンドル
INT iIndex, // ストリームインデックス
LPPSRSTREAMINFO lpStreamInfo); // ストリームデータ情報
typedef INT (*PFNPSRISSCDR)(HANDLE, INT, LPPSRSTREAMINFO);
#endif // PSXMC_CDACCESS
/******************************************************************************/
/* */
/* PsrGetStrFileInfo() : ストリームファイル情報の取得 (FILE : 必須) */
/* */
/* 指定ファイルのストリームデータに関する情報を返します。 */
/* */
/******************************************************************************/
CEXPORT BOOL PsrGetStrFileInfo(
LPCTSTR lpFileName, // ファイル名
LPPSRSTREAMINFO lpStreamInfo); // ストリームデータ情報
typedef BOOL (*PFNPSRGETSFI)(LPCTSTR, LPPSRSTREAMINFO);
/******************************************************************************/
/* */
/* PsrGetStrDataInfo() : ストリームデータ情報の取得 (CD : 必須) */
/* */
/* CD中の指定ストリームデータに関する情報を返します。 */
/* */
/******************************************************************************/
CEXPORT BOOL PsrGetStrDataInfo(
INT iDriveNo, // ドライブ番号
DWORD dwBegin, // 開始セクタ番号
DWORD dwNumSector, // セクタ数
LPPSRSTREAMINFO lpStreamInfo); // ストリームデータ情報
typedef BOOL (*PFNPSRGETSDI)(INT, DWORD, DWORD, LPPSRSTREAMINFO);
/******************************************************************************/
/* */
/* PsrOpenFile() : ストリームファイルのオープン (FILE : 必須) */
/* */
/* 指定ファイルのストリームデータをオープンします。 */
/* */
/******************************************************************************/
CEXPORT HANDLE PsrOpenFile(
LPCTSTR lpFileName, // ファイル名
LPPSRSTREAMINFO lpStreamInfo); // ストリームデータ情報
typedef HANDLE (*PFNPSROPENFILE)(LPCTSTR, LPPSRSTREAMINFO);
/******************************************************************************/
/* */
/* PsrOpenCD() : CDストリームのオープン (CD : 必須) */
/* */
/* CD中の指定ストリームデータをオープンします。 */
/* */
/******************************************************************************/
#ifdef PSXMC_CDACCESS
CEXPORT HANDLE PsrOpenCD(
INT iDriveNo, // ドライブ番号
LPPSRSTREAMINFO lpStreamInfo); // ストリームデータ情報
typedef HANDLE (*PFNPSROPENCD)(INT, LPPSRSTREAMINFO);
#endif // PSXMC_CDACCESS
/******************************************************************************/
/* */
/* PsrClose() : ストリームデータのクローズ (共通 : 必須) */
/* */
/* PsrOpenFile()またはPsrOpenCD()によりオープンしたストリームデータを */
/* クローズします。 */
/* */
/******************************************************************************/
CEXPORT BOOL PsrClose(
HANDLE hStream); // ストリームハンドル
typedef BOOL (*PFNPSRCLOSE)(HANDLE);
/******************************************************************************/
/* */
/* PsrRead() : ストリームデータの読み取り (共通 : 必須) */
/* */
/* ストリームデータから動画データまたは音声データを読み取ります。 */
/* */
/******************************************************************************/
CEXPORT BOOL PsrRead(
HANDLE hStream, // ストリームハンドル
LPPSRREADBUFF lpBuffer); // 読み取りバッファ
typedef BOOL (*PFNPSRREAD)(HANDLE, LPPSRREADBUFF);
/******************************************************************************/
/* */
/* PsrSeek() : 読み取り位置の設定 (共通 : 必須) */
/* */
/* ストリームデータの読み取り位置を指定されたフレームデータの先頭に移動し*/
/* ます。 */
/* */
/******************************************************************************/
CEXPORT BOOL PsrSeek(
HANDLE hStream, // ストリームハンドル
DWORD dwPosition); // 読み取り位置 1/1000秒単位
typedef BOOL (*PFNPSRSEEK)(HANDLE, DWORD);
/******************************************************************************/
/* */
/* PsrDecodeFrame() : 動画データのデコード (共通) */
/* */
/* 通常のSTRファイルとは異なる動画データをデコードします。 */
/* */
/* このファンクションとPsrDecodeBs関数が省略された場合、そのプラグインの */
/* PsrRead()が読み取った動画データが通常のSTRファイルの形式であると認識し*/
/* ます。 */
/* */
/******************************************************************************/
#define PSR_DECODE_ERROR 0xffffffff
#define PSR_DECODE_NORMAL 0
CEXPORT LPBITMAPINFO PsrDecodeFrame(
LPPSRREADBUFF lpFrame, // フレームデータ
LPBITMAPINFO lpbmi); // DIBビットマップ
typedef LPBITMAPINFO (*PFNPSRDECODEF)(LPPSRREADBUFF, LPBITMAPINFO);
/******************************************************************************/
/* */
/* PsrDecodeBs() : BSデコード (共通) */
/* */
/* 通常のSTRファイルとは異なる動画データをデコードします。 */
/* */
/* このファンクションとPsrDecodeFrame関数が省略された場合、そのプラグイン*/
/* のPsrRead()が読み取った動画データが通常のSTRファイルの形式であると認識*/
/* します。 */
/* */
/******************************************************************************/
CEXPORT PUSHORT PsrDecodeBs(
LPPSRREADBUFF lpFrame); // フレームデータ
typedef PUSHORT (*PFNPSRDECODEB)(LPPSRREADBUFF);
/******************************************************************************/
/* */
/* PsrDecodeAudio() : 音声データのデコード (共通) */
/* */
/* 通常のSTRファイルとは異なる音声データをデコードします。 */
/* */
/* このファンクションが省略された場合、そのプラグインのPsrRead()が読み */
/* 取った音声データが通常のSTRファイルの形式であると認識されます。 */
/* */
/******************************************************************************/
CEXPORT DWORD PsrDecodeAudio(
LPPSRREADBUFF lpAudio, // 音声データ
PVOID pvBuffer, // デコード後の音声データ
DWORD nLength); // lpBufferのバイト数
typedef DWORD (*PFNPSRDECODEA)(LPPSRREADBUFF, PVOID, DWORD);
/******************************************************************************/
/* */
/* PsrSetEntrionment() : 環境設定パネルの呼び出し (共通) */
/* */
/* 当該プラグインに必要な環境設定を行うパネルを表示します。 */
/* */
/* このファンクションが省略された場合、そのプラグインに環境設定の必要がな*/
/* いと認識されます。 */
/* */
/******************************************************************************/
CEXPORT VOID PsrSetEnvironment(
HWND hWndParent); // 親ウインドウ
typedef VOID (*PFNPSRSETE)(HWND);
#endif