521 lines
15 KiB
C++
521 lines
15 KiB
C++
/*
|
||
クラスライブラリ内の共通ヘッダーファイル
|
||
(NP2) Sachiko Yasukawa
|
||
*/
|
||
// Date | Author | Description
|
||
// -----------+--------------+--------------------------------------------
|
||
// 1998.03.27 | Hideki Yagi | Change the specification about GetSTC().
|
||
// | | Change the specification about
|
||
// | | Get***Property().
|
||
//
|
||
|
||
#define ISMIXSTREAM(type) ((type == Dvd || type == VideoCD) ? TRUE : FALSE)
|
||
|
||
typedef enum{
|
||
Video,
|
||
Audio,
|
||
Subpicture,
|
||
Dvd,
|
||
VideoCD,
|
||
} STREAMTYPE;
|
||
|
||
class CBaseStream;
|
||
|
||
class IMPEGBoardBaseState
|
||
{
|
||
public:
|
||
virtual BOOL ChangePowerOff(IClassLibHAL *, IHALStreamControl *)=0;
|
||
virtual BOOL ChangeStop(IClassLibHAL *, IHALStreamControl *, CBaseStream *)=0;
|
||
virtual BOOL ChangePlay(IClassLibHAL *, IHALStreamControl *)=0;
|
||
virtual BOOL ChangePause(IClassLibHAL *, IHALStreamControl *)=0;
|
||
virtual BOOL ChangePauseViaSingleStep(IClassLibHAL *, IHALStreamControl *)=0;
|
||
virtual BOOL ChangeSlow(DWORD, IClassLibHAL *, IHALStreamControl *)=0;
|
||
virtual BOOL ChangeScan(DWORD, IClassLibHAL *, IHALStreamControl *)=0;
|
||
};
|
||
|
||
class CPowerOffState : public IMPEGBoardBaseState
|
||
{
|
||
public:
|
||
void Init(IMPEGBoardState *pMPEGBoardState){m_pMPEGBoardState = pMPEGBoardState;};
|
||
BOOL ChangePowerOff(IClassLibHAL *, IHALStreamControl *);
|
||
BOOL ChangeStop(IClassLibHAL *, IHALStreamControl *, CBaseStream *);
|
||
BOOL ChangePlay(IClassLibHAL *, IHALStreamControl *);
|
||
BOOL ChangePause(IClassLibHAL *, IHALStreamControl *);
|
||
BOOL ChangePauseViaSingleStep(IClassLibHAL *, IHALStreamControl *);
|
||
BOOL ChangeSlow(DWORD, IClassLibHAL *, IHALStreamControl *);
|
||
BOOL ChangeScan(DWORD, IClassLibHAL *, IHALStreamControl *);
|
||
|
||
private:
|
||
IMPEGBoardState *m_pMPEGBoardState;
|
||
};
|
||
|
||
class CStopState : public IMPEGBoardBaseState
|
||
{
|
||
public:
|
||
void Init(IMPEGBoardState *pMPEGBoardState){m_pMPEGBoardState = pMPEGBoardState;};
|
||
BOOL ChangePowerOff(IClassLibHAL *, IHALStreamControl *);
|
||
BOOL ChangeStop(IClassLibHAL *, IHALStreamControl *, CBaseStream *);
|
||
BOOL ChangePlay(IClassLibHAL *, IHALStreamControl *);
|
||
BOOL ChangePause(IClassLibHAL *, IHALStreamControl *);
|
||
BOOL ChangePauseViaSingleStep(IClassLibHAL *, IHALStreamControl *);
|
||
BOOL ChangeSlow(DWORD, IClassLibHAL *, IHALStreamControl *);
|
||
BOOL ChangeScan(DWORD, IClassLibHAL *, IHALStreamControl *);
|
||
|
||
private:
|
||
IMPEGBoardState *m_pMPEGBoardState;
|
||
};
|
||
|
||
class CPlayState : public IMPEGBoardBaseState
|
||
{
|
||
public:
|
||
void Init(IMPEGBoardState *pMPEGBoardState){m_pMPEGBoardState = pMPEGBoardState;};
|
||
BOOL ChangePowerOff(IClassLibHAL *, IHALStreamControl *);
|
||
BOOL ChangeStop(IClassLibHAL *, IHALStreamControl *, CBaseStream *);
|
||
BOOL ChangePlay(IClassLibHAL *, IHALStreamControl *);
|
||
BOOL ChangePause(IClassLibHAL *, IHALStreamControl *);
|
||
BOOL ChangePauseViaSingleStep(IClassLibHAL *, IHALStreamControl *);
|
||
BOOL ChangeSlow(DWORD, IClassLibHAL *, IHALStreamControl *);
|
||
BOOL ChangeScan(DWORD, IClassLibHAL *, IHALStreamControl *);
|
||
|
||
private:
|
||
IMPEGBoardState *m_pMPEGBoardState;
|
||
};
|
||
|
||
class CPauseState : public IMPEGBoardBaseState
|
||
{
|
||
public:
|
||
void Init(IMPEGBoardState *pMPEGBoardState){m_pMPEGBoardState = pMPEGBoardState;};
|
||
BOOL ChangePowerOff(IClassLibHAL *, IHALStreamControl *);
|
||
BOOL ChangeStop(IClassLibHAL *, IHALStreamControl *, CBaseStream *);
|
||
BOOL ChangePlay(IClassLibHAL *, IHALStreamControl *);
|
||
BOOL ChangePause(IClassLibHAL *, IHALStreamControl *);
|
||
BOOL ChangePauseViaSingleStep(IClassLibHAL *, IHALStreamControl *);
|
||
BOOL ChangeSlow(DWORD, IClassLibHAL *, IHALStreamControl *);
|
||
BOOL ChangeScan(DWORD, IClassLibHAL *, IHALStreamControl *);
|
||
|
||
private:
|
||
IMPEGBoardState *m_pMPEGBoardState;
|
||
};
|
||
|
||
class CSlowState : public IMPEGBoardBaseState
|
||
{
|
||
public:
|
||
void Init(IMPEGBoardState *pMPEGBoardState){m_pMPEGBoardState = pMPEGBoardState;};
|
||
BOOL ChangePowerOff(IClassLibHAL *, IHALStreamControl *);
|
||
BOOL ChangeStop(IClassLibHAL *, IHALStreamControl *, CBaseStream *);
|
||
BOOL ChangePlay(IClassLibHAL *, IHALStreamControl *);
|
||
BOOL ChangePause(IClassLibHAL *, IHALStreamControl *);
|
||
BOOL ChangePauseViaSingleStep(IClassLibHAL *, IHALStreamControl *);
|
||
BOOL ChangeSlow(DWORD, IClassLibHAL *, IHALStreamControl *);
|
||
BOOL ChangeScan(DWORD, IClassLibHAL *, IHALStreamControl *);
|
||
|
||
private:
|
||
IMPEGBoardState *m_pMPEGBoardState;
|
||
};
|
||
|
||
class CScanState : public IMPEGBoardBaseState
|
||
{
|
||
public:
|
||
void Init(IMPEGBoardState *pMPEGBoardState){m_pMPEGBoardState = pMPEGBoardState;};
|
||
BOOL ChangePowerOff(IClassLibHAL *, IHALStreamControl *);
|
||
BOOL ChangeStop(IClassLibHAL *, IHALStreamControl *, CBaseStream *);
|
||
BOOL ChangePlay(IClassLibHAL *, IHALStreamControl *);
|
||
BOOL ChangePause(IClassLibHAL *, IHALStreamControl *);
|
||
BOOL ChangePauseViaSingleStep(IClassLibHAL *, IHALStreamControl *);
|
||
BOOL ChangeSlow(DWORD, IClassLibHAL *, IHALStreamControl *);
|
||
BOOL ChangeScan(DWORD, IClassLibHAL *, IHALStreamControl *);
|
||
|
||
private:
|
||
IMPEGBoardState *m_pMPEGBoardState;
|
||
};
|
||
|
||
|
||
class CMPEGBoardState : public IMPEGBoardState
|
||
{
|
||
friend class CMPEGBoard;
|
||
friend class CBaseStream;
|
||
public:
|
||
BOOL Init(){ m_pStateObject = (IMPEGBoardBaseState *)&m_PowerOffState; m_State = PowerOff;
|
||
m_PowerOffState.Init(this); m_StopState.Init(this); m_PauseState.Init(this); m_PlayState.Init(this);
|
||
m_ScanState.Init(this); m_SlowState.Init(this); return TRUE;};
|
||
|
||
//独自
|
||
CMPEGBoardState(){Init();};
|
||
IMPEGBoardBaseState *GetMPEGBoardState(){return m_pStateObject;};
|
||
LIBSTATE GetState(){ return m_State;};
|
||
void SetState(LIBSTATE);
|
||
|
||
private:
|
||
//IMPEGBoardState *m_this;
|
||
IMPEGBoardBaseState *m_pStateObject;
|
||
CPowerOffState m_PowerOffState;
|
||
CStopState m_StopState;
|
||
CPauseState m_PauseState;
|
||
CPlayState m_PlayState;
|
||
CSlowState m_SlowState;
|
||
CScanState m_ScanState;
|
||
LIBSTATE m_State;
|
||
};
|
||
|
||
class CTransfer;
|
||
|
||
class CClassLibEvent : public IMPEGBoardEvent
|
||
{
|
||
public:
|
||
void Advice(PVOID);
|
||
HALEVENTTYPE GetEventType(){return m_Type;};
|
||
|
||
IMBoardListItem* GetNext( void ){ return m_pNextEvent;};
|
||
void SetNext( IMBoardListItem *Item ){ m_pNextEvent = Item;};
|
||
|
||
CClassLibEvent(){m_pNextEvent = NULL; m_pTransfer = NULL; m_Type = ClassLibEvent_SendData;};
|
||
void SetTransfer(CTransfer *pTransfer){m_pTransfer = pTransfer;};
|
||
void SetEventType(HALEVENTTYPE type){ m_Type = type;};
|
||
|
||
private:
|
||
HALEVENTTYPE m_Type;
|
||
IMBoardListItem *m_pNextEvent;
|
||
CTransfer *m_pTransfer;
|
||
};
|
||
|
||
class CBaseStream : public IBaseStream
|
||
{
|
||
friend class CMPEGBoard;
|
||
|
||
public:
|
||
|
||
//IBaseStreamから
|
||
BOOL Init();
|
||
BOOL Play();
|
||
BOOL Stop();
|
||
BOOL Pause();
|
||
BOOL Slow(DWORD);
|
||
BOOL Scan(DWORD);
|
||
BOOL SingleStep();
|
||
LIBSTATE GetState();
|
||
BOOL SendData(IMPEGBuffer *);
|
||
BOOL SetStateObject(IMPEGBoardState *pMPEGBoardStateObject);
|
||
BOOL SetTransferObject(ITransfer *pTransfer);
|
||
BOOL SetTransferMode(HALSTREAMMODE);
|
||
BOOL SetDataDirection(DirectionType type );
|
||
BOOL GetDataDirection(DirectionType *ptype );
|
||
|
||
//独自
|
||
CBaseStream();
|
||
IMPEGBoardBaseState *GetStateObject();
|
||
IClassLibHAL *GetClassLibHAL(){return m_pIHAL;};
|
||
IHALStreamControl *GetHALStreamControl(){return m_pIStreamHAL;};
|
||
IMPEGBoardBaseState *GetIMPEGBoardState(){ return (((CMPEGBoardState *)m_pMPEGBoardStateObject)->GetMPEGBoardState());};
|
||
void FlushTransferBuffer();
|
||
IBaseStream *GetNextStream(){return m_pNextStreamObject;};
|
||
IBaseStream *GetPrevStream(){return m_pPrevStreamObject;};
|
||
void SetNextStream(IBaseStream *pNextStreamObject){m_pNextStreamObject = (CBaseStream *)pNextStreamObject;};
|
||
void SetPrevStream(IBaseStream *pPrevStreamObject){m_pPrevStreamObject = (CBaseStream *)pPrevStreamObject;};
|
||
BOOL ISMIXSTREAMTYPE(STREAMTYPE StreamType){return (StreamType == VideoCD) ? TRUE : ((StreamType == Dvd) ? TRUE : FALSE);};
|
||
|
||
protected:
|
||
CBaseStream *m_pNextStreamObject;
|
||
CBaseStream *m_pPrevStreamObject;
|
||
STREAMTYPE m_StreamType;
|
||
IMPEGBoardState *m_pMPEGBoardStateObject;
|
||
|
||
IClassLibHAL *m_pIHAL;
|
||
IHALStreamControl *m_pIStreamHAL;
|
||
ITransfer *m_pTransfer;
|
||
|
||
UCHAR m_DriveChlgKey[10];
|
||
UCHAR m_DecoderChlgKey[10];
|
||
UCHAR m_DriveResKey[5];
|
||
UCHAR m_DecoderResKey[5];
|
||
};
|
||
|
||
class CVideoStream : public CBaseStream, public IVideoProperty, public ICopyProtectProperty
|
||
{
|
||
public:
|
||
BOOL CppInit();
|
||
BOOL GetVideoProperty(VIDEOPROPTYPE PropertyType, PVOID pProperty);
|
||
BOOL SetVideoProperty(VIDEOPROPTYPE PropertyType, PVOID pProperty);
|
||
BOOL SetChlgKey(UCHAR *);
|
||
BOOL GetChlgKey(UCHAR *);
|
||
BOOL SetDVDKey1(UCHAR *);
|
||
BOOL GetDVDKey2(UCHAR *);
|
||
BOOL SetTitleKey(UCHAR *);
|
||
BOOL SetDiscKey(UCHAR *);
|
||
|
||
CVideoStream(){m_StreamType = Video;};
|
||
};
|
||
|
||
class CAudioStream : public CBaseStream, public IAudioProperty, public ICopyProtectProperty
|
||
{
|
||
public:
|
||
BOOL CppInit();
|
||
BOOL GetAudioProperty(AUDIOPROPTYPE PropertyType, PVOID pProperty);
|
||
BOOL SetAudioProperty(AUDIOPROPTYPE PropertyType, PVOID pProperty);
|
||
BOOL SetChlgKey(UCHAR *);
|
||
BOOL GetChlgKey(UCHAR *);
|
||
BOOL SetDVDKey1(UCHAR *);
|
||
BOOL GetDVDKey2(UCHAR *);
|
||
BOOL SetTitleKey(UCHAR *);
|
||
BOOL SetDiscKey(UCHAR *);
|
||
|
||
CAudioStream(){m_StreamType = Audio;};
|
||
};
|
||
|
||
class CSubpicStream : public CBaseStream, public ISubpicProperty, public ICopyProtectProperty
|
||
{
|
||
public:
|
||
BOOL CppInit();
|
||
BOOL GetSubpicProperty(SUBPICPROPTYPE PropertyType, PVOID pProperty);
|
||
BOOL SetSubpicProperty(SUBPICPROPTYPE PropertyType, PVOID pProperty);
|
||
BOOL SetChlgKey(UCHAR *);
|
||
BOOL GetChlgKey(UCHAR *);
|
||
BOOL SetDVDKey1(UCHAR *);
|
||
BOOL GetDVDKey2(UCHAR *);
|
||
BOOL SetTitleKey(UCHAR *);
|
||
BOOL SetDiscKey(UCHAR *);
|
||
|
||
CSubpicStream(){m_StreamType = Subpicture;};
|
||
};
|
||
|
||
class CVideoCDStream : public CBaseStream, public IVideoProperty, public IAudioProperty, public ICopyProtectProperty
|
||
{
|
||
public:
|
||
BOOL CppInit();
|
||
BOOL GetVideoProperty(VIDEOPROPTYPE PropertyType, PVOID pProperty);
|
||
BOOL SetVideoProperty(VIDEOPROPTYPE PropertyType, PVOID pProperty);
|
||
BOOL GetAudioProperty(AUDIOPROPTYPE PropertyType, PVOID pProperty);
|
||
BOOL SetAudioProperty(AUDIOPROPTYPE PropertyType, PVOID pProperty);
|
||
BOOL SetChlgKey(UCHAR *);
|
||
BOOL GetChlgKey(UCHAR *);
|
||
BOOL SetDVDKey1(UCHAR *);
|
||
BOOL GetDVDKey2(UCHAR *);
|
||
BOOL SetTitleKey(UCHAR *);
|
||
BOOL SetDiscKey(UCHAR *);
|
||
|
||
CVideoCDStream(){ m_StreamType = VideoCD;};
|
||
};
|
||
|
||
class CDVDStream : public CBaseStream, public IVideoProperty, public IAudioProperty,public ISubpicProperty, public ICopyProtectProperty
|
||
{
|
||
public:
|
||
BOOL CppInit();
|
||
BOOL GetVideoProperty(VIDEOPROPTYPE PropertyType, PVOID pProperty);
|
||
BOOL SetVideoProperty(VIDEOPROPTYPE PropertyType, PVOID pProperty);
|
||
BOOL GetAudioProperty(AUDIOPROPTYPE PropertyType, PVOID pProperty);
|
||
BOOL SetAudioProperty(AUDIOPROPTYPE PropertyType, PVOID pProperty);
|
||
BOOL GetSubpicProperty(SUBPICPROPTYPE PropertyType, PVOID pProperty);
|
||
BOOL SetSubpicProperty(SUBPICPROPTYPE PropertyType, PVOID pProperty);
|
||
BOOL SetChlgKey(UCHAR *);
|
||
BOOL GetChlgKey(UCHAR *);
|
||
BOOL SetDVDKey1(UCHAR *);
|
||
BOOL GetDVDKey2(UCHAR *);
|
||
BOOL SetTitleKey(UCHAR *);
|
||
BOOL SetDiscKey(UCHAR *);
|
||
|
||
BOOL GetCapability( CAPSTYPE PropType, DWORD *pPropType ); // H.Yagi
|
||
|
||
CDVDStream(){m_StreamType = Dvd;};
|
||
};
|
||
|
||
|
||
class CClassLibBuffer : public IHALBuffer
|
||
{
|
||
public:
|
||
DWORD GetSize();
|
||
DWORD Flags();
|
||
BYTE *GetBuffPointer();
|
||
BYTE *GetLinBuffPointer();
|
||
|
||
IMBoardListItem* GetNext(){ return m_pNext; };
|
||
void SetNext( IMBoardListItem *Item ){ m_pNext = Item; };
|
||
|
||
PVOID GetIMPEGBuffer(){ return m_pMPEGBoardBuffer;};
|
||
CBaseStream *GetStream(){ return m_pStream;};
|
||
|
||
CClassLibBuffer( void );
|
||
CClassLibBuffer(IMBoardListItem *pBuffer, CBaseStream *pStream, DWORD PageNum);
|
||
CClassLibBuffer(IMBoardListItem *pBuffer, CBaseStream *pStream, DWORD PageNum, DWORD Size, DWORD Add, DWORD LinAdd, DWORD flag);
|
||
void SetParam(IMBoardListItem *pBuffer, CBaseStream *pStream, DWORD PageNum, DWORD Size, DWORD Add, DWORD LinAdd, DWORD flag);
|
||
private:
|
||
IMBoardListItem *m_pNext;
|
||
|
||
DWORD m_PageNum;
|
||
DWORD m_Size;
|
||
DWORD m_flag;
|
||
UCHAR *m_Add;
|
||
UCHAR *m_LinAdd;
|
||
CBaseStream *m_pStream;
|
||
IMPEGBuffer *m_pMPEGBoardBuffer;
|
||
public:
|
||
BOOL m_fEnd;
|
||
};
|
||
|
||
#define MAXCLIBBUFF (20)
|
||
|
||
class CMemoryAllocator
|
||
{
|
||
private:
|
||
CClassLibBuffer Buff[MAXCLIBBUFF];
|
||
int TopFreePoint;
|
||
int LastFreePoint;
|
||
int FreeBuffNum;
|
||
|
||
public:
|
||
CMemoryAllocator(){
|
||
TopFreePoint = 0;
|
||
LastFreePoint = 0;
|
||
FreeBuffNum = MAXCLIBBUFF;
|
||
for( int i = 0; i < MAXCLIBBUFF ; i ++ )
|
||
Buff[i].SetNext( NULL );
|
||
};
|
||
|
||
~CMemoryAllocator(){
|
||
};
|
||
|
||
CClassLibBuffer *Alloc(IMBoardListItem *pBuffer, CBaseStream *pStream, DWORD PageNum, DWORD Size, DWORD Add, DWORD LinAdd, DWORD flag)
|
||
{
|
||
CClassLibBuffer *pNewBuffer;
|
||
|
||
if( FreeBuffNum == 0 )
|
||
return NULL;
|
||
|
||
pNewBuffer = &Buff[TopFreePoint];
|
||
pNewBuffer->SetParam(pBuffer, pStream, PageNum, Size, Add, LinAdd, flag);
|
||
|
||
FreeBuffNum--;
|
||
TopFreePoint++;
|
||
if( TopFreePoint == MAXCLIBBUFF )
|
||
TopFreePoint = 0;
|
||
|
||
return pNewBuffer;
|
||
};
|
||
|
||
void Free(CClassLibBuffer *pBuffer)
|
||
{
|
||
ASSERT( pBuffer == &Buff[LastFreePoint] );
|
||
ASSERT( FreeBuffNum != MAXCLIBBUFF );
|
||
|
||
LastFreePoint ++;
|
||
if( LastFreePoint == MAXCLIBBUFF )
|
||
LastFreePoint = 0;
|
||
FreeBuffNum ++;
|
||
|
||
pBuffer->SetNext(NULL);
|
||
};
|
||
|
||
int GetMaxBuffNum( void )
|
||
{
|
||
return MAXCLIBBUFF;
|
||
};
|
||
|
||
void Flush( void )
|
||
{
|
||
TopFreePoint = 0;
|
||
LastFreePoint = 0;
|
||
FreeBuffNum = MAXCLIBBUFF;
|
||
for( int i = 0; i < MAXCLIBBUFF ; i ++ )
|
||
Buff[i].SetNext( NULL );
|
||
};
|
||
};
|
||
|
||
class CTransferStreamList : public IMBoardListItem
|
||
{
|
||
public:
|
||
CTransferStreamList(){m_pNextItem = NULL; m_pBaseStream = NULL;};
|
||
CTransferStreamList(CBaseStream *pStream){m_pNextItem = NULL; m_pBaseStream = pStream;};
|
||
|
||
//378742 PNPBOOT: tosdvd03 leaks 1 page of memory on unload.
|
||
void Init(CBaseStream *pStream){m_pNextItem = NULL; m_pBaseStream = pStream;};
|
||
//378742
|
||
|
||
IMBoardListItem* GetNext( void ){ return (IMBoardListItem *)m_pNextItem;};
|
||
void SetNext( IMBoardListItem *Item ){ m_pNextItem = (CTransferStreamList *)Item;};
|
||
|
||
CBaseStream *GetBaseStream(void){ return m_pBaseStream;};
|
||
void SetBaseStream (CBaseStream *pStream){ m_pBaseStream = pStream;};
|
||
|
||
private:
|
||
CBaseStream *m_pBaseStream;
|
||
CTransferStreamList *m_pNextItem;
|
||
};
|
||
|
||
class CTransfer : public ITransfer
|
||
{
|
||
friend class CMPEGBoard;
|
||
#ifdef TEST
|
||
friend class CMBoardAppDlg;
|
||
#endif
|
||
public:
|
||
BOOL EnQueue( IMPEGBuffer *Buff);
|
||
BOOL Init();
|
||
BOOL SetSink(IMPEGBoardEvent *pEvent);
|
||
BOOL UnSetSink(IMPEGBoardEvent *pEvent);
|
||
BOOL SetDMABuffer(DWORD size, BYTE* LinerAdd, BYTE *PhysAdd);
|
||
|
||
//独自
|
||
CTransfer(){Init();};
|
||
~CTransfer();
|
||
BOOL DeQueue();
|
||
BOOL AddStreamObject(IBaseStream *);
|
||
BOOL ReleaseStreamObject(IBaseStream *);
|
||
BOOL EndOfTransfer(CClassLibBuffer *);
|
||
void Flush();
|
||
|
||
private:
|
||
CTransferStreamList *m_pStreamObject;
|
||
|
||
//378742 PNPBOOT: tosdvd03 leaks 1 page of memory on unload.
|
||
CTransferStreamList m_pNewTransferStreamList;
|
||
//378742
|
||
|
||
IMBoardListItem *m_pTopEventList, *m_pLastEventList;
|
||
BYTE *m_LinerAdd;
|
||
BYTE *m_PhysAdd;
|
||
DWORD m_DMABufferSize;
|
||
CClassLibEvent m_EndOfTransferEvent;
|
||
IClassLibHAL *m_pIHAL;
|
||
CMemoryAllocator m_Mem;
|
||
|
||
IMPEGBuffer *m_pTopQueuedMPEGBuffer;
|
||
IMPEGBuffer *m_pLastQueuedMPEGBuffer;
|
||
IMPEGBuffer *m_pNextTransferMPEGBuffer;
|
||
DWORD m_TopPagePoint;
|
||
DWORD m_LastPagePoint;
|
||
|
||
BOOL HasQueuedBuffer( void );
|
||
BOOL GetNextTransferPoint( IMPEGBuffer **Point, DWORD *Page );
|
||
BOOL FreeTopTransferPoint( IMPEGBuffer **Free );
|
||
|
||
|
||
//デバッグ用
|
||
int BufCount;
|
||
DWORD StreamCount;
|
||
};
|
||
|
||
|
||
class CMPEGBoard : public IMPEGBoard
|
||
{
|
||
public:
|
||
//IMPEGBoardから
|
||
BOOL Init();
|
||
BOOL AddStreamObjectInterface(IBaseStream *);
|
||
BOOL ReleaseStreamObjectInterface(IBaseStream *);
|
||
BOOL PowerOn();
|
||
BOOL PowerOff();
|
||
BOOL SetSTC(DWORD);
|
||
BOOL GetSTC(DWORD *); // 98.03.27 H.Yagi
|
||
BOOL SetHALObjectInterface(IClassLibHAL *);
|
||
|
||
//独自
|
||
CMPEGBoard(){Init();};
|
||
BOOL ChangePower(POWERSTATE);
|
||
BOOL ISPOWEROFF(); //HALが設定されてからつかうこと
|
||
BOOL SetHALStream(CBaseStream *, IClassLibHAL *);
|
||
private:
|
||
|
||
CBaseStream *m_pBaseStreamObject;//管理すべきストリームのチェーンの先頭
|
||
IClassLibHAL *m_pIHAL;//ハルインタフェースへのポインタ
|
||
};
|
||
|
||
|