rtcp package send/recv demo

main.c

#include <stdio.h>
#include <rtp.h>
#include <rtcp.h>
#include <netinet/in.h>
#include <netdb.h>
#include <math.h>
#include <event.h>
#include <syn.h>
#include <payload.h>
#include <sample.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdlib.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <util.h>
#include <frame.h>
#include <sys/ioctl.h>
#include <sys/stropts.h>
#include "main.h"

#ifdef LINUX
#include <linux/soundcard.h>
#endif /* LINUX */

#define MAX_SOURCES 32

int main(int argc, char **argv) {

  ];
  unsigned short    *samp16 = (unsigned short *) buf;
  bool            found;
  int            audio, port, rv, payloadtype;
  , one = ;
  ssrc_t        ssrc = , sources[MAX_SOURCES];
  struct in_addr    addr;
  struct session    *psn;
  struct synsession    *pssn;
  struct timespec    time;
  struct sampparam    parameters;
  struct encoding    enc;
  mediatime_t        ts;
  struct sampreadparam  sreadparam;

  int            leeway;

  /*
   * Check for correct number of arguments.
   */
  ) {
    fprintf(stderr, ]);
    exit();
  }

  addr.s_addr = inet_addr(argv[]);
  port = atoi(argv[]);

  printf("Session: %s/%d\n", inet_ntoa(addr), port);

  /*
   * Open a synchronization layer session.
   * Use 2k buffers for RTP packets, 64 buffers in pool.
   */
  pssn = synopen(addr, port, , );
  if (pssn == NULL) {
    fprintf(stderr, "synopen() returned NULL.\n");
    exit();
  }

  /*
   * Get a handle to the RTP layer session.
   */
  synctl(pssn, SYN_CTL_GETRTPSESSION, ();

  /*
   * Look up the encoding represented by payloadtype.
   * Determine if it's a supported encoding.
   */
  enc = getencoding(payloadtype);
  printf("enc.en_name: %s\n", enc.en_name);

  ssrc = ;

  printf("Found sender: SSRC = 0x%x Encoding = %s\n", ssrc, enc.en_name);

  /*
   * rtcp package send/recv thread.
   */
  rtpctl(psn, RTP_CTL_RTCPCYCLETHREAD, (, ssrc);

  rtpctl(psn, RTP_CTL_RTCPRECVTHREAD, (, ssrc);

}

运行

code::blocks工程

https://files.cnblogs.com/files/dong1/rtprtcp_linux_demo.tar.gz

最新文章

  1. spring整合hibernate的时候报异常org.hibernate.HibernateException: createQuery is not valid without active transaction
  2. java中InvocationHandler 用于实现代理。
  3. sublime 3
  4. csharp: MVC Controls
  5. 如何通过 GT 快速开始性能测试?
  6. MongoDb查询日期范围
  7. jQuery Mobile里xxx怎么用呀?(缓存篇)
  8. spring mvc + mybatis + spring aop声明式事务管理没有作用
  9. 在Java SE中使用Hibernate处理数据
  10. html5 canvas的教程
  11. 推荐几个在线PDF转化成Word网站
  12. 使用 Python &amp; Flask 实现 RESTful Web API
  13. win10 uwp 获得元素绝对坐标
  14. OO第二单元总结之线程大冒险第一关
  15. Readme.txt
  16. linux 根据端口查看系统进程
  17. OpenCvSharp尝试
  18. cache基础
  19. springboot项目线程使用2
  20. Hibernate基础知识

热门文章

  1. 详解Git工作区、暂存区、历史记录区以及git reset、git revert、git checkout等撤销命令的区别
  2. NHibernate初学六之关联多对多关系
  3. [转]ASP.NET MVC 5 - 将数据从控制器传递给视图
  4. easyui------设置datagrid(&#39;getEditor&#39;)时焦点问题
  5. Android开发之程序猿必需要懂得Android的重要设计理念2(5.20更新版)
  6. JAVA语言基础内部测试题(50道选择题)
  7. Extjs学习笔记--(四,基本函数介绍)
  8. Windows 端口占用
  9. Access数据操作-02
  10. 判断页面中的js方法是否存在,存在就调用它,不存在则忽略