#if !defined(AFX_PLAYWND_H__600DF662_4AF9_432A_B79A_6A86AB7A21A9__INCLUDED_) #define AFX_PLAYWND_H__600DF662_4AF9_432A_B79A_6A86AB7A21A9__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 // PlayWnd.h : header file // #include #include #include #include #include "D3DRenderer.h" #include "uucorelib/UUCoreApi.h" #include "uucorelib/UUCoreUtil.h" #include "StorageParserLib.h" // frame type // { #define REC_FT_MP4_I 1 #define REC_FT_MP4_P 2 #define REC_FT_MP4_B 3 #define REC_FT_MP2_I 4 #define REC_FT_MP2_P 5 #define REC_FT_MP2_B 6 #define REC_FT_MJPEG 7 #define REC_FT_PCM 8 #define REC_FT_ULAW 9 #define REC_FT_ALAW 10 // } #define MAX_CHANNEL 4 #define MAXGRAPH_SIZE 64 union MEDIA_INDEX_INFO { unsigned int uAll; struct { unsigned int uVideoVer : 4; unsigned int uWidth : 10; unsigned int uHeight : 10; }; struct { unsigned int uAudioVer : 4; unsigned int uSampleRate : 8; // kHz unsigned int uDataBits : 1; // 0: 8, 1: 16 unsigned int uChannel : 1; // 0: mono, 1: stereo }; }; typedef struct _REC_DATA_HEADER { unsigned int uVer; unsigned int uDataType; unsigned int uFrameType; unsigned int uChannelNum; unsigned int uDataSize; struct timeval TimeStamp; MEDIA_INDEX_INFO MediaInfo; } REC_DATA_HEADER; typedef struct _PLAY_INFO { CUUCoreUtil *pUUCoreDivx; CUUCoreUtil *pUUCoreMjpeg; BOOL bArrivedIFrame; ULONG uWidth; ULONG uHeight; BOOL bCommited; ULONG uFourCC; } PLAY_INFO; ///////////////////////////////////////////////////////////////////////////// // CPlayWnd window class CD3DRenderer; class CD3DFont; class CPlayWnd : public CWnd { // Construction public: CPlayWnd(); // Attributes public: // Operations public: // Overrides // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CPlayWnd) //}}AFX_VIRTUAL // Implementation public: virtual ~CPlayWnd(); // Generated message map functions protected: //{{AFX_MSG(CPlayWnd) afx_msg void OnMove(int x, int y); afx_msg void OnSize(UINT nType, int cx, int cy); //}}AFX_MSG DECLARE_MESSAGE_MAP() public: BOOL Init(); void Release(); BOOL InitCodec(ULONG uCh); void ReleaseCodec(ULONG uCh); BOOL DecodeVideo(REC_DATA_HEADER *pHeader, BYTE *pData); BOOL DecodeVideo(PAS_DATA_INFO *pInfo); void ConvertToPacked(BYTE *pPackedOut, DecodedVideo *pIn); BOOL DrawFrame(REC_DATA_HEADER *pHeader); void ChangeTime(BOOL bChange) { m_bChangeTime = bChange; } private: CD3DRenderer *m_pRenderer; CD3DFont *m_pFont; PLAY_INFO m_PlayInfo[MAX_CHANNEL]; RECT m_fsRect[MAXGRAPH_SIZE]; RECT m_recentRect; BYTE *m_pDecBuffer; BOOL m_bUpdate; ULONG m_uColumn; ULONG m_uRow; BOOL m_bChangeTime; }; ///////////////////////////////////////////////////////////////////////////// //{{AFX_INSERT_LOCATION}} // Microsoft Visual C++ will insert additional declarations immediately before the previous line. #endif // !defined(AFX_PLAYWND_H__600DF662_4AF9_432A_B79A_6A86AB7A21A9__INCLUDED_)