flypenghong:做的不错,我正参考本站的SPEAK FREELY,刚整理了部分代码,对编码,解码那部分正头疼呢,谢谢!
(发表于2003-1-13 11:00:00)
morenyonghu:好像只是把NETTALK的Demo中语音部分包装成了一个DLL啊,其实我觉得,还是同时给出nettalk那个Demo的下载链接为好,因为那个程序在界面处理,自定义消息等方面都写的至少我感觉还是不错,大家还是读读原版的比较好一些。学到的东东也多些。
(发表于2003-1-14 9:53:00)
flypenghong:有于各个计算机性能不一样,对调序的那部分代码,我觉的用链表好些,代码简洁,又有了很好的缓冲机制
void CBufferList::AddBuffer(char *pBuffer, int iLen)
{
struct Frame *m_pFrame;//定义接收数据的指针
m_pNewBuffer=new struct RecvBuffer;//准备被填充的数据
m_pFrame = (struct Frame *)pBuffer;
m_pNewBuffer->iIndex=m_pFrame->iIndex;
//拷贝数据到新的列表
memcpy(m_pNewBuffer->cdata,pBuffer+sizeof(struct Frame),60);
if(IsEmpty())//如果是空表,直接添加
{
CPtrList::AddTail(m_pNewBuffer);
return;
}
POSITION pos,temp;
for (pos=GetHeadPosition();pos!=NULL;)
{
temp=pos;
struct RecvBuffer *pFindBuffer=(struct RecvBuffer*)GetNext(pos);
if(m_pNewBuffer->iIndex
iIndex)
{
CPtrList::InsertBefore(temp,m_pNewBuffer);
return;
}
}
CPtrList::AddTail(m_pNewBuffer);
}
对了,你每帧中有个CB[12],是什么意识?怎么没见使用?
(发表于2003-1-16 13:59:00)
X-mind:cb[12] 是保留的,提供以后有什么附加的东西可以使用,提供兼容。
对于聊天,实时性要求比较高。如果有办法不乱序,就可以尽量减少缓冲,对于调序,我觉得在internet上,如果网络不是经常被改动,ip数据走的线路基本是固定的,也就是说udp乱序的可能并不是很大,一个简单的方法就是把迟到的包丢丢掉,直接播放已经播放的包后面的数据。这样可以更实时。不过我没实过。你可以试试。
使用链表当然可以,我做调序那里的原则是只要发现数据到达的顺序正确,就马上播放,只是在乱序,掉包的时候才用到缓冲,如果没有乱序掉包,是不用缓冲的
(发表于2003-1-17 11:42:00)
sujikui:这个代码延迟好象有些大了点,能不能做做改进阿
(发表于2003-5-20 15:51:00)
woo_17:请问有G723.1的算法的源码吗? 我找不到G723.1 6kb的算法源码!
thanks!
(发表于2004-3-17 19:43:00)
syf1025:好程序
(发表于2007-6-15 6:26:00)
..........................................................................
--------------------next---------------------
阅读(210) | 评论(0) | 转发(0) |