github上的ortp库镜像:Linphone.org mirror for ortp (git://git.linphone.org/ortp.git)
1、ORTP库概览
(1)没有main,在src目录下提供一堆功能函数
(2)使用案例:有main,在src/tests目录下
(3)相关数据结构和头文件在include/ortp目录下
(4)ortp实现了rtp和rtcp协议,前者负责传输,后者负责控制和同步协调
2、ORTP库的使用案例
(1)src/tests/rtpsend.c
(2)ortp_init及av_profile_init
(3)ortp_scheduler_init和ORTP调度器:一个任务中完成多个会话的发送和接收,类似于select
(4)rtp_session_new和rtp的会话管理
3、rtp的session
(1)rtp通过会话来管理数据发送和接收,会话的本质是一个结构体,管理很多信息
(2)创建会话用rtp_session_new
(3)rtp发送用rtp_session_send_with_ts
(4)底层真正干活的还是socket接口那一套,参考rtpsession_inet.c
4、ORTP的一些小细节
(1)port.c中对OS的常用机制(任务创建和销毁、进程管理和信号量等)进行了封装,便于将ortp移植到不同平台中
(2)utils.c中实现了一个双向链表
(3)str_util.c中实现了一个队列管理
(4)rtpparse.c和rtcpparse.c文件实现了解析收到的rtp数据包的部分
(5)j