📄 cbrewmedia.cpp
字号:
///////////////////////////////////////////////////////////////////////////////////////////////////
// CBrewMedia.h
// By Levi's J
// 2004.03.12
///////////////////////////////////////////////////////////////////////////////////////////////////
//-Brew Media..
//-mp3, smaf, midi 殿殿
///////////////////////////////////////////////////////////////////////////////////////////////////
#include "CBrewMedia.h"
/*
/////////////////////////////////////////////////////////////
// operator new : 春
void* CBrewMedia::operator new ( unsigned int size )
{
return MALLOC(size);
}
/////////////////////////////////////////////////////////////
// operator delete : 掉府飘
void CBrewMedia::operator delete ( void* ptr )
{
if ( ptr )
{
FREE ( ptr );
ptr = NULL;
}
}
*/
///////////////////////////////////////////////////////////
// CBrewMedia : 积己磊 ( 檬扁拳 )
CBrewMedia::CBrewMedia()
{
m_pIShell = NULL;
m_pIMedia = NULL;
buf = NULL;
m_bPlaying = FALSE;
m_bSound = TRUE;
m_bLoop = FALSE;
m_bWait = FALSE;
}
///////////////////////////////////////////////////////////
// ~CBrewMedia : 家戈磊 ( 皋葛府 副府令 )
CBrewMedia::~CBrewMedia ()
{
Release();
m_pIShell = NULL;
}
/////////////////////////////////////////////////////////////
// Release : 副府令
void CBrewMedia::Release ()
{
m_bPlaying = FALSE;
if( buf )
ISHELL_FreeResData( m_pIShell, buf );
buf = NULL;
if( m_pIMedia )
IMEDIA_Release( m_pIMedia );
m_pIMedia = NULL;
}
/////////////////////////////////////////////////////////////
// Init : 檬扁拳
boolean CBrewMedia::Init ( IShell* _pIShell, AEECLSID _cid, const char* _filename, int16 nResID, int nVolume )
{
uint32 size, offset;
if(m_pIMedia)
return FALSE;
m_pIShell = _pIShell;
if(ISHELL_CreateInstance ( m_pIShell, _cid, (void**)&m_pIMedia ) != SUCCESS)
return FALSE;
// 府家胶 农扁 何磐 掘绢 坷扁
ISHELL_LoadResDataEx( m_pIShell, _filename, nResID, RESTYPE_IMAGE, (void*)-1, &size );
// 府家胶 肺靛
buf = (byte*)ISHELL_LoadResData ( m_pIShell, _filename, nResID, RESTYPE_IMAGE );
offset = (uint32)buf[0]; // 府家胶 坷橇悸
size -= offset;
// 滚欺 技泼
m_pMediaData.clsData = MMD_BUFFER;
m_pMediaData.pData = buf + offset;
m_pMediaData.dwSize = size;
// 厘傈
IMEDIA_SetMediaData( m_pIMedia, &m_pMediaData );
if( IMEDIA_RegisterNotify( m_pIMedia, mediaNotify, this ) != SUCCESS )
return FALSE;
// 澜樊
IMEDIA_SetVolume( m_pIMedia, nVolume );
return TRUE;
}
/////////////////////////////////////////////////////////////
// Play : 犁积 (府家胶), 府家胶 捞抚 快急 殿废
void CBrewMedia::Play ( boolean on, boolean loop )
{
m_bSound = on;
m_bLoop = loop;
if ( !on ) // 波廉乐栏搁 角青 陛瘤
return;
if ( m_pIMedia )
{
if ( m_bPlaying )
{
IMEDIA_Stop ( m_pIMedia );
m_bWait = TRUE;
//DBGPRINTF("Sound Stop");
}
else
{
m_bPlaying = TRUE;
IMEDIA_Play ( m_pIMedia );
//DBGPRINTF("Sound Play");
}
}
}
/////////////////////////////////////////////////////////////
// Stop : 沥瘤!!
void CBrewMedia::Stop ()
{
if ( m_bPlaying )
{
if(m_pIMedia)
{
IMEDIA_Stop ( m_pIMedia );
}
m_bPlaying = FALSE;
}
}
/*
void CBrewMedia::Sleep(int DeleyTime)
{
int FirstTime=GET_UPTIMEMS();
int SecondTime;
while(1)
{
SecondTime=GET_UPTIMEMS();
if((SecondTime-FirstTime)>=DeleyTime)
break;
}
}
*/
/////////////////////////////////////////////////////////////
// mediaNotify : 妮归 舅覆 窃荐
void mediaNotify ( void* cxt, AEEMediaCmdNotify* pNotify )
{
CBrewMedia* pThis = (CBrewMedia*)cxt;
// 贸府
if ( pNotify->nCmd == MM_CMD_PLAY ) // Play ()
{
switch ( pNotify->nStatus )
{
case MM_STATUS_START: // 矫累~
{
pThis->m_bPlaying = TRUE;
//MEMSET ( pThis->m_sWaitName, 0, 256 );
}
break;
case MM_STATUS_DONE: // playback done (沥惑 场)
{
pThis->m_bPlaying = FALSE; // 犁积 吝 酒丛
{
if ( pThis->m_bLoop ) // 馆汗 犁积捞搁
pThis->Play ( pThis->m_bSound, pThis->m_bLoop );
// 扁大扁绰 逞捞 乐栏搁
else if ( pThis->m_bWait )
{
pThis->Play ( pThis->m_bSound, pThis->m_bLoop );
pThis->m_bWait = FALSE;
}
}
}
break;
case MM_STATUS_ABORT: // playback aborted (碍力 场)
{
pThis->m_bPlaying = FALSE; // 犁积 吝 酒丛
// 扁大扁绰 逞捞 乐栏搁
if ( pThis->m_bWait )
{
pThis->Play ( pThis->m_bSound, pThis->m_bLoop );
pThis->m_bWait = FALSE;
}
}
break;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -