PJSIP arm 开发笔记

2024-02-17 04:58
文章标签 开发 笔记 arm pjsip

本文主要是介绍PJSIP arm 开发笔记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

http://blog.csdn.net/suer0101/article/details/7488783

 

浮点的可用性

PJ_HAS_FLOATING_POINT这个宏可以控制浮点的可用性,它在头文件<pj/config.h>里面默认设置为1,你也可以在<pj/config_site.h>里面把它复写为0。


PJLIB, PJLIB-UTIL和PJSIP不需要任何浮点的支持。即使浮点没有使用,它们也能正确地工作。但是,PJ_HAS_FLOATING_POINT这个宏却必须要设置来激活相应的一些低效率运行的代码(fallback code)。


在PJMEDIA里面情况不一样,像音频发生器、RTCP的统计、Speex的编解码、AEC这些PJMEDIA的组件使用定点来计算低效率运行的运算,它们是在PJ_HAS_FLOATING_POINT设置为0 时被激活的。但是,其它的一些组件就不能选择使用定点计算,所以不管浮点运算是否设置,基于浮点运算的代码会正常被使用,这样的组件有更改采样率、PLC、iLBC编解码。


移植pjprodect-1.12

在移植到开发板的时候,配置时选择不使用浮点,结果报出缺少库的错误,去掉那一特性后移植成功。可是,使用浮点计算的话对CPU的要求较高,到底硬件是否满足要求需要做实验进一步确认,先把它移植过去再说。

1)在/pjsip/include/pj/目录下创建config.h,编辑并加入:

#define PJ_IS_BIG_ENDIAN 0

[cpp] view plain copy print ?
  1. #define PJ_IS_LITTLE_ENDIAN 1 
#define PJ_IS_LITTLE_ENDIAN 1


 

否则会出错,没有定义处理器的大小端。一般CPU都是小端吧!大端比较少。个人认识,怎样辨别大小端呢?

[cpp] view plain copy print ?
  1. #include <stdlib.h> 
  2. #include <stdio.h> 
  3.  
  4. int  main(void
  5.     union 
  6.     { 
  7.         long l; 
  8.         char c[sizeof(long)]; 
  9.     }u; 
  10.   
  11.     u.l = 1; 
  12.     if (u.c[sizeof(long) - 1] == 1) 
  13.         printf("Your processor is big endian!\n"); 
  14.     else 
  15.         printf("Your processor is little endian!\n"); 
  16.          
  17.     return 0; 
#include <stdlib.h>
#include <stdio.h>int  main(void)
{union{long l;char c[sizeof(long)];}u;u.l = 1;if (u.c[sizeof(long) - 1] == 1)printf("Your processor is big endian!\n");elseprintf("Your processor is little endian!\n");return 0;
}


2) ./configure --prefix=/wo/arm/pjsip --host=arm-linux --disable-ssl --disable-opencore-amrnb

3) make dep

4) make

5) make install


静态编译PKGCONFIG

移植时我把静态库保存到/wo/arm/pjsip目录下,静态编译时首先需要设置终端的环境变量,然后再利用/lib/pkgconfig/libpjproject.pc文件进行交叉编译会比较简单,如果不这样做的话,你可以去看看你生成的库有多少,一个个去手动链接很麻烦的,竟然移植时生成了这个pc文件,那就好好利用它。

1)设置环境变量

export PKG_CONFIG_PATH=/wo/arm/pjsip/lib/pkgconfig:$PKG_CONFIG_PATH

这样设置好的环境变量仅在终端有效,查看是否设置成功:

echo $PKG_CONFIG_PATH

如果打印的是之前设置的路径就OK

2)makefile

以交叉编译测试程序中的录音程序为例

[cpp] view plain copy print ?
  1. all: recfile 
  2.  
  3. CC = arm-linux-gcc 
  4. recfile: recfile.c 
  5.     $(CC) -o $@ $< `pkg-config --cflags --libs libpjproject` 
  6.  
  7. clean: 
  8.     rm -f recfile 
all: recfileCC = arm-linux-gcc
recfile: recfile.c$(CC) -o $@ $< `pkg-config --cflags --libs libpjproject`clean:rm -f recfile


这样程序就交叉编译好了。

程序在开发板上运行时出错:

./recfile: error while loading shared libraries: libuuid.so.1: cannot open shared object file: No such file or directory

不能加载共享库,唉~又是库的问题!可是我在生成的静态库里面没有发现uuid这个库啊!不管了,修改PC文件,不链接这个库试试看。

可以正常运行,也不知道哪个程序会应用到这个库,不管,出问题再解决。uuid是用于身份的唯一标识,有什么用啊?在这处项目里面。

在编译playfile.c的时候提示没有util.h这个文件,在源码包的/pjsip-apps/src/samples里有这个文件,把它复制到编译后的include目录里面就可以了!

默认是最多保持4人的电话会议

 

这篇关于PJSIP arm 开发笔记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/716740

相关文章

基于Python开发PDF转PNG的可视化工具

《基于Python开发PDF转PNG的可视化工具》在数字文档处理领域,PDF到图像格式的转换是常见需求,本文介绍如何利用Python的PyMuPDF库和Tkinter框架开发一个带图形界面的PDF转P... 目录一、引言二、功能特性三、技术架构1. 技术栈组成2. 系统架构javascript设计3.效果图

基于Python开发PDF转Doc格式小程序

《基于Python开发PDF转Doc格式小程序》这篇文章主要为大家详细介绍了如何基于Python开发PDF转Doc格式小程序,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 用python实现PDF转Doc格式小程序以下是一个使用Python实现PDF转DOC格式的GUI程序,采用T

使用Python开发一个图像标注与OCR识别工具

《使用Python开发一个图像标注与OCR识别工具》:本文主要介绍一个使用Python开发的工具,允许用户在图像上进行矩形标注,使用OCR对标注区域进行文本识别,并将结果保存为Excel文件,感兴... 目录项目简介1. 图像加载与显示2. 矩形标注3. OCR识别4. 标注的保存与加载5. 裁剪与重置图像

Android开发中gradle下载缓慢的问题级解决方法

《Android开发中gradle下载缓慢的问题级解决方法》本文介绍了解决Android开发中Gradle下载缓慢问题的几种方法,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录一、网络环境优化二、Gradle版本与配置优化三、其他优化措施针对android开发中Gradle下载缓慢的问

使用Go语言开发一个命令行文件管理工具

《使用Go语言开发一个命令行文件管理工具》这篇文章主要为大家详细介绍了如何使用Go语言开发一款命令行文件管理工具,支持批量重命名,删除,创建,移动文件,需要的小伙伴可以了解下... 目录一、工具功能一览二、核心代码解析1. 主程序结构2. 批量重命名3. 批量删除4. 创建文件/目录5. 批量移动三、如何安

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

基于Python开发PPTX压缩工具

《基于Python开发PPTX压缩工具》在日常办公中,PPT文件往往因为图片过大而导致文件体积过大,不便于传输和存储,所以本文将使用Python开发一个PPTX压缩工具,需要的可以了解下... 目录引言全部代码环境准备代码结构代码实现运行结果引言在日常办公中,PPT文件往往因为图片过大而导致文件体积过大,

使用DeepSeek API 结合VSCode提升开发效率

《使用DeepSeekAPI结合VSCode提升开发效率》:本文主要介绍DeepSeekAPI与VisualStudioCode(VSCode)结合使用,以提升软件开发效率,具有一定的参考价值... 目录引言准备工作安装必要的 VSCode 扩展配置 DeepSeek API1. 创建 API 请求文件2.

基于Python开发电脑定时关机工具

《基于Python开发电脑定时关机工具》这篇文章主要为大家详细介绍了如何基于Python开发一个电脑定时关机工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 简介2. 运行效果3. 相关源码1. 简介这个程序就像一个“忠实的管家”,帮你按时关掉电脑,而且全程不需要你多做

Java中的Opencv简介与开发环境部署方法

《Java中的Opencv简介与开发环境部署方法》OpenCV是一个开源的计算机视觉和图像处理库,提供了丰富的图像处理算法和工具,它支持多种图像处理和计算机视觉算法,可以用于物体识别与跟踪、图像分割与... 目录1.Opencv简介Opencv的应用2.Java使用OpenCV进行图像操作opencv安装j