imedia streaming 得问题
小弟要用brew做一个media client,主要功能是从server接收数据,同时在client断播放
目前,想先用文件的方式从本地读取一个wav文件,然后边读取边播放,由于目的是为了以后steaming方式播放做准备,所以文件播放的时候也采用了Isource方式,程序基本是照着sdk写的
现在在手机上测试的时候发现了一个问题,就是模拟器似乎不会多次触发isource_read,而只是触发一次,最大读32m,所以,在我的模拟器上,就没办法播放大于32m的文件
请问一下高人,是不是高通的模拟器有问题?
我的程序如下
急切盼望高人解答一下,非常感谢
nErr = ISHELL_CreateInstance(pMe->a.m_pIShell,AEECLSID_MEDIAPCM,(void **)&pMe->pIMedia);
if (SUCCESS != nErr)
return FALSE;
ISHELL_CreateInstance(pMe->a.m_pIShell,AEECLSID_SOURCEUTIL,(void **)&pMe->psu);
ISOURCEUTIL_SourceFromAStream(pMe->psu,(IAStream *)pMe->pIFile,&pMe->pISource);
/*
MEMSET(&ws, (int)0, sizeof(ws));
ws.wSize= sizeof(ws);
ws.clsMedia= AEECLSID_MEDIAPCM;
ws.wChannels= 2;
ws.dwSamplesPerSec= 11025;//44100;
ws.wBitsPerSample= 16;
ws.bUnsigned= TRUE;
*/
md.clsData= MMD_ISOURCE;// pDatais ISource
md.pData= (void *)pMe->pISource;
md.dwSize= 0;
md.dwStructSize= sizeof(md); // Size of AEEMediaDataExstructure
md.dwCaps= 0; // What capabilities to enable. 0 means all.
md.bRaw= FALSE; // Is this Raw data? Set it to no (FALSE)
md.dwBufferSize= 0; // Internal buffer size. 0 means use default.
md.pSpec= NULL; // Valid only for raw data
md.dwSpecSize= 0; // Valid only for raw data
md.bRaw = FALSE; // Is this Raw data? Set it to yes (TRUE)
md.dwBufferSize = 0; // Internal buffer size. 0 means use default.
md.pSpec = &ws; // Raw media data encoding specifications
md.dwSpecSize = sizeof(ws); // Size, in bytes, of the specifications
nErr = IMEDIA_SetMediaDataEx(pMe->pIMedia, &md,1); // Set the media source
if (SUCCESS != nErr)
return FALSE;
nErr = IMEDIA_Play(pMe->pIMedia);
if (SUCCESS != nErr)
return FALSE;