前言
最近的项目需要在linphone库中添加私有编解码器。以前一直在网上找资料,来解决自己的问题。这次发现网上的相应资料较少,所以把自己的一些方法贡献出来,供大家参考。
一、linphone-3.6.1库的框架简介
coreapi 提供核心API
mediastreamer2 处理编解码与媒体的流化
oRTP rtp包的封装与解封装
exosip与osip 是以库的形式使用的,linphone-3.6.1源码中并未包含,收发SIP信令并解析
二、实现
1.说明
此处只是一个简单的demo,仿照源代码中的pcmu的部分来实现的,仅供参考
PayloadType payload_type_pcmu8000={
TYPE( PAYLOAD_AUDIO_CONTINUOUS),
CLOCK_RATE( 8000),
BITS_PER_SAMPLE(8),
ZERO_PATTERN( &offset127),
PATTERN_LENGTH( 1),
NORMAL_BITRATE( 64000),
MIME_TYPE ("PCMU"),
CHANNELS(1)
};
2.定义私有payload
在 oRTP/src/avprofile.c 中定义私有payload
//start 添加代码
PayloadType payload_type_kypcm16k={
TYPE( PAYLOAD_AUDIO_CONTINUOUS),
CLOCK_RATE( 16000),
BITS_PER_SAMPLE(16),
ZERO_PATTERN(offset0),
PATTERN_LEN