对PJSUA-LIB中媒体定制处理在应用中有实际意义,例如:在安卓5.x系统下,硬件编解码、视频预览等功能已被安卓封装的极其方便易用(被封得也很死),且硬件解码设置时同时设定渲染设备的surfaceview,解码后会自动渲染。视频效果很好,且不易受界面线程影响。视频预览、硬件编解码在安卓方实现,编码后的h264媒体流,在定制后的PJSUA-LIB中RTP封包后,调用媒体传输端口的send_rtp功能,发送rtp包到SDP协商对远端UA;在PJSUA-LIB定制后的视频媒体处理中,对媒体传输端口收到RTP的回调做处理:从抖动缓冲区收到RTP包后,不做解码处理,将多个RTP包中相同时间戳的h264数据收齐后,将h264数据传到安卓端做硬件解码、渲染处理。
PJSUA-LIB是pjproject2.6中提供的高级别API,下图展示了PJSUA-LIB下左侧媒体处理部分和右侧SIP处理部分,及最上端应用程序pjsua对PJSUA-LIB的调用。应用程序调用PJSUA-LIB库中的API方便地实现:注册、呼叫、事件处理、媒体处理等功能。在方便的同时,也会受到PJSUA-LIB实现的体系制约。
下面的内容中前部分是从pjsip(