音频解码问题

土豆吞噬者 2010-03-30 04:56:22
代码如下,数据保存到文件可正常播放,但就是不能边解码边放
HRESULT CMyAudioSourceStream::FillBuffer(IMediaSample *pms)
{
CheckPointer(pms,E_POINTER);
BYTE *pData;
int DataLen,de_size,cmp_size;
pms->GetPointer(&pData);
DataLen=pms->GetSize();
de_size=0;
cmp_size=0;

int MyRecv=recv(aClient,(char *)buffer,AVCODEC_MAX_AUDIO_FRAME_SIZE,0);
if (MyRecv>0)
{
fwrite(buffer,MyRecv,1,TestFile);
while (DataLen!=0 && MyRecv>0)
{
int out_size=avcodec_decode_audio2(c,(int16_t *)pData,&DataLen,buffer,MyRecv);
if (out_size<0)
{
break;
}
MyRecv-=out_size;
buffer+=out_size;
cmp_size+=out_size;
pData+=DataLen;
de_size+=DataLen;

}
pData-=de_size;
buffer-=cmp_size;
pms->SetActualDataLength(de_size);
pms->SetSyncPoint(TRUE);
pms->SetTime(0,0);
}

return NOERROR;
}
...全文
175 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
taoll 2010-04-12
  • 打赏
  • 举报
回复
数据保存到文件可正常播放说明解码正确的,是不是render有问题?
msdn2100 2010-04-11
  • 打赏
  • 举报
回复
边解码边播放,要考虑缓存队列,读取的数据大小、写入的数据大小是否达到要求等。
笨笨熊_穆 2010-04-01
  • 打赏
  • 举报
回复
边解码边放必须要有一个原则就是不要破坏一个完整的sample

2,543

社区成员

发帖
与我相关
我的任务
社区描述
专题开发/技术/项目 多媒体/流媒体开发
社区管理员
  • 多媒体/流媒体开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧