在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
芯片精品文章合集(500篇!) 创芯人才网--重磅上线啦!
查看: 1884|回复: 0

[原创] josua中的os_sound_start()接口

[复制链接]
发表于 2010-4-24 21:59:44 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
看了一段时间ortp-0.15.0和音频编程指南后,虽然取得了一些小成果,但是对本项目来说,还是比较失败的,主要原因是在着手之前就没有想好如何将音频这部分,如何被上层协议调用。退一步来说,即使自己编写的程序可以完成音频传输,但从项目本身考虑,大方向也是不对的。于是从今天开始看exosip里面提供的音频接口的函数,因为这些函数是已经写好的,如果看懂了,可以直接利用,其一可以完成音频传输,其二可以与上层协议接口结合。
下面开始论述:exosip搭建好信令平台后,就可以调用音频传输的函数接口了。在josua中,这个接口函数就是os_sound_start(),其中只提供了两种编码方式(pcmu和pcma),像本程序中经常见到的speex编解码,在josua中并没有提供。
对于发送来讲:
os_sound_start()函数先open(AUDIO_DEVICE,"O_RDWR"),然后用ioctl函数设置音频设备/dev/dsp的各个参数;然后用read函数获取音频数据。
如果有SPEEX_SUPPORT,则用speex_enc函数进行编码,但是本程序中没有不支持,而只提供了mulaw_enc、alaw_enc函数用以编码,故我打算下一步是在本项目中用mulaw和alaw用以编码。
然后是调用ortp协议栈里面的函数,将编码后的数据用rtp_session_send_with_ts发送出去。
对于接收来讲:
os_sound_start()函数先open(AUDIO_DEVICE,"O_RDWR"),然后用ioctl函数设置音频设备/dev/dsp的各个参数;然后用rtp_session_recv_with_ts接收传来的编码后的音频数据。
如果有SPEEX_SUPPORT,则用speex_dec函数进行解码,但是本程序中没有不支持,而只提供了mulaw_dec、alaw_dec函数用以解码,故我打算下一步是在本项目中用mulaw和alaw用以解码。
然后用write函数将解码后的音频数据,写入声音设备完成放音操作。

总结一下:
1.用josua里面的音频接口,是实现与上层协议结合的一种方式。如果不参考josua,只用自己编写的程序,与上层协议结合在一起,会感觉到没有方向性。
2.josua里面只实现了两种编解码方式:alaw和mulaw。没有用到其它的编解码方式,比如也没有用到speex的支持。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-27 12:44 , Processed in 0.021130 second(s), 9 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表