播放视频的问题, 很急
请帮我看看我的代码,怎么不能播放,很急,谢谢啦!
void Play_Media(multimediaplayer* pMe)
{
IMediaUtil *pMediaUtil;
AEEMediaData sMediaData;
//AEERect rc;
int result;
int a;
char szFilename[20] = "123.mp3";
ISHELL_CreateInstance(pMe->a.m_pIShell, AEECLSID_MEDIAUTIL, (void **)&pMediaUtil);
DBGPRINTF("0");
if(!pMediaUtil)
{
//Error....
DBGPRINTF("error");
}
sMediaData.clsData = MMD_FILE_NAME;
sMediaData.pData = (void *)& szFilename;
sMediaData.dwSize = 0;
result = IMEDIAUTIL_CreateMedia(pMediaUtil, &sMediaData, &pMe->pIMediaObject);
if(!pMe->pIMediaObject)
{
//Error....
if (result == MM_ENOMEDIAMEMORY)
DBGPRINTF("Error: %d", result);
}
DBGPRINTF("1");
IMEDIAUTIL_Release(pMediaUtil);
a=IMEDIA_RegisterNotify(pMe->pIMediaObject, (PFNMEDIANOTIFY)IMediaEventHandler, (void *) pMe);
DBGPRINTF("a=%d",a);
IMEDIA_GetTotalTime(pMe->pIMediaObject);
IMEDIA_Play(pMe->pIMediaObject);
IMEDIA_Release(pMe->pIMediaObject);
DBGPRINTF("3");
DBGPRINTF("pMedia = %d",pMe->pIMediaObject);
/*if(pMe->pIMediaObject)
{
rc.x = 0;
rc.y = 0;
rc.dx = pMe->DeviceInfo.cxScreen;//The width of the rectangle
rc.dy = pMe->DeviceInfo.cyScreen;//The height of the rectangle
//a=IMEDIA_SetRect(pMe->pIMediaObject,&rc,NULL);
//DBGPRINTF("a=%d",a);
DBGPRINTF("pMedia = %d",pMe->pIMediaObject);
IMEDIA_Play(pMe->pIMediaObject);
DBGPRINTF("pMedia= %d",pMe->pIMediaObject);
}
DBGPRINTF("3");*/
//if(pIMediaObject)
//IMEDIAUTIL_Release(pMediaUtil);
//DBGPRINTF("4");
IDISPLAY_Update(pMe->a.m_pIDisplay);
DBGPRINTF("4");
}
void IMediaEventHandler(void *pUser, AEEMediaCmdNotify *pCmdNotify)
{
multimediaplayer *pMe = (multimediaplayer*)pUser;
// AEERect sRect;
IBitmap *pFrame;
if( pCmdNotify->nStatus == MM_MOVIE_LOADED )
{
IMEDIA_EnableFrameCallback(pCmdNotify->pIMedia, TRUE);
IMEDIA_Play(pCmdNotify->pIMedia);
DBGPRINTF("4");
return;
}
switch(pCmdNotify->nCmd)
{
case MM_CMD_GETTOTALTIME:
if(pCmdNotify->nStatus == MM_STATUS_DONE)
{
pMe->dwTotalMediaTime = (int)pCmdNotify->pCmdData;
if( SUCCESS != IMEDIA_Play(pCmdNotify->pIMedia) )
{
//Set a timer to attempt the play later
}
}
break;
case MM_CMD_PLAY:
switch(pCmdNotify->nStatus)
{
case MM_STATUS_START:
//Change UI to reflect play status
DBGPRINTF("5");
break;
case MM_STATUS_DONE:
//Change UI to reflect stop status
//IMEDIA_Play(pIMediaObject);
DBGPRINTF("Call back MM_STATUS_DONE");
break;
case MM_STATUS_TICK_UPDATE:
//Advance your time counter here
DBGPRINTF("6");
break;
case MM_PARM_FRAME:
/*IMEDIA_GetFrame(pCmdNotify->pIMedia, &pFrame);
if(!pFrame)
{
//Error
return;
}
//.....Draw the IBitmap to the screen
IBITMAP_Release(pFrame);*/
{
// IBitmap* pFrame;
AEEBitmapInfo bi;
IMEDIA_GetFrame(pMe->pIMediaObject, &pFrame);
IBITMAP_GetInfo(pFrame,&bi,sizeof(bi));
IDISPLAY_BitBlt(pMe->a.m_pIDisplay,0,0,bi.cx,bi.cy,
pFrame,0,0,AEE_RO_COPY);
IDISPLAY_Update(pMe->a.m_pIDisplay);
IBITMAP_Release(pFrame);
DBGPRINTF("7");
break;
}
}
break;
}
}