Initial commit of Command & Conquer Generals and Command & Conquer Generals Zero Hour source code.
This commit is contained in:
parent
2e338c00cb
commit
3d0ee53a05
6072 changed files with 2283311 additions and 0 deletions
123
Generals/Code/GameEngine/Include/Common/simpleplayer.h
Normal file
123
Generals/Code/GameEngine/Include/Common/simpleplayer.h
Normal file
|
@ -0,0 +1,123 @@
|
|||
/*
|
||||
** Command & Conquer Generals(tm)
|
||||
** Copyright 2025 Electronic Arts Inc.
|
||||
**
|
||||
** This program is free software: you can redistribute it and/or modify
|
||||
** it under the terms of the GNU General Public License as published by
|
||||
** the Free Software Foundation, either version 3 of the License, or
|
||||
** (at your option) any later version.
|
||||
**
|
||||
** This program is distributed in the hope that it will be useful,
|
||||
** but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
** GNU General Public License for more details.
|
||||
**
|
||||
** You should have received a copy of the GNU General Public License
|
||||
** along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
|
||||
#ifndef SIMPLEPLAYER_H
|
||||
#define SIMPLEPLAYER_H
|
||||
|
||||
#include "wmsdk.h"
|
||||
|
||||
//
|
||||
// we preserve a list of "ready-to-free" list of wave headers for the
|
||||
// caller to unprepare and free
|
||||
//
|
||||
typedef struct WAVEHDR_LIST {
|
||||
LPWAVEHDR pwh;
|
||||
struct WAVEHDR_LIST *next;
|
||||
} WAVEHDR_LIST;
|
||||
|
||||
#define SIMPLE_PLAYER_OPEN_EVENT _T( "45ab58e0-382e-4d1c-ac50-88a5f9601851" )
|
||||
#define SIMPLE_PLAYER_CLOSE_EVENT _T( "276095fa-a8e0-48e6-ac61-8b0002345607" )
|
||||
#define WMAPLAY_EVENT _T( "9e828a72-64f3-48f0-9de8-13dafd0cbd3a" )
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
class CSimplePlayer : public IWMReaderCallback
|
||||
{
|
||||
public:
|
||||
CSimplePlayer( HRESULT* phr );
|
||||
~CSimplePlayer();
|
||||
|
||||
virtual HRESULT Play( LPCWSTR pszUrl, DWORD dwSecDuration, HANDLE hCompletionEvent, HRESULT *phrCompletion );
|
||||
|
||||
//
|
||||
// IUnknown Implemenation
|
||||
//
|
||||
public:
|
||||
virtual HRESULT STDMETHODCALLTYPE QueryInterface(
|
||||
REFIID riid,
|
||||
void **ppvObject );
|
||||
|
||||
virtual ULONG STDMETHODCALLTYPE AddRef();
|
||||
virtual ULONG STDMETHODCALLTYPE Release();
|
||||
|
||||
//
|
||||
// IWMReaderCallback Implemenation
|
||||
//
|
||||
public:
|
||||
virtual HRESULT STDMETHODCALLTYPE OnSample(
|
||||
/* [in] */ DWORD dwOutputNum,
|
||||
/* [in] */ QWORD cnsSampleTime,
|
||||
/* [in] */ QWORD cnsSampleDuration,
|
||||
/* [in] */ DWORD dwFlags,
|
||||
/* [in] */ INSSBuffer __RPC_FAR *pSample,
|
||||
/* [in] */ void __RPC_FAR *pvContext);
|
||||
|
||||
virtual HRESULT STDMETHODCALLTYPE OnStatus(
|
||||
/* [in] */ WMT_STATUS Status,
|
||||
/* [in] */ HRESULT hr,
|
||||
/* [in] */ WMT_ATTR_DATATYPE dwType,
|
||||
/* [in] */ BYTE __RPC_FAR *pValue,
|
||||
/* [in] */ void __RPC_FAR *pvContext);
|
||||
|
||||
//
|
||||
// Helper Methods
|
||||
//
|
||||
protected:
|
||||
|
||||
HRESULT Close();
|
||||
|
||||
void OnWaveOutMsg( UINT uMsg, DWORD dwParam1, DWORD dwParam2 );
|
||||
|
||||
static void CALLBACK WaveProc(
|
||||
HWAVEOUT hwo,
|
||||
UINT uMsg,
|
||||
DWORD dwInstance,
|
||||
DWORD dwParam1,
|
||||
DWORD dwParam2 );
|
||||
|
||||
HRESULT AddWaveHeader( LPWAVEHDR pwh );
|
||||
void RemoveWaveHeaders( void );
|
||||
|
||||
CRITICAL_SECTION m_CriSec;
|
||||
WAVEHDR_LIST *m_whdrHead;
|
||||
|
||||
LONG m_cRef;
|
||||
LONG m_cBuffersOutstanding;
|
||||
BOOL m_fEof;
|
||||
HANDLE m_hCompletionEvent;
|
||||
|
||||
IWMReader *m_pReader;
|
||||
IWMHeaderInfo *m_pHeader;
|
||||
HWAVEOUT m_hwo;
|
||||
|
||||
HRESULT *m_phrCompletion;
|
||||
|
||||
HRESULT m_hrOpen;
|
||||
HANDLE m_hOpenEvent;
|
||||
HANDLE m_hCloseEvent;
|
||||
|
||||
union
|
||||
{
|
||||
WAVEFORMATEX m_wfx;
|
||||
BYTE m_WfxBuf[1024];
|
||||
};
|
||||
|
||||
LPWSTR m_pszUrl;
|
||||
|
||||
};
|
||||
|
||||
#endif // SIMPLEPLAYER_H
|
Reference in a new issue