0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

移植speexdsp到OpenHarmony标准系统①

电子发烧友开源社区 来源:未知 2022-11-29 12:40 次阅读

由于想要分享的内容较多,为避免观众姥爷们失去看下去的耐心,分享将以连载的方式进行。

本期为移植speexdspOpenHarmony标准系统的第①期,主要内容如下:

ba38555c-6f9d-11ed-8abf-dac502259ad0.png

Speexdsp

提到Speexdsp不得不先提到开源语音编解码器Speex

ba460efe-6f9d-11ed-8abf-dac502259ad0.png

如下是ACM Surveys中收录的标题为《Survey on Application-Layer Mechanisms for Speech Quality Adaptation in VoIP》综述中的一张图表。

  • 它总结了一些常用的可变比特率编解码器,并且做了性能方面的比较。

  • 其中唯一Open-source开源的两个编解码器之一就是speex。

ba52fe02-6f9d-11ed-8abf-dac502259ad0.png

ba7acf86-6f9d-11ed-8abf-dac502259ad0.png

  • 2007年12月11日Speex1.2beta3中首次将Speex中所有非编解码器组件(预处理器、回声消除、抖动缓冲区)都已移至新的libspeexdsp中。

  • 2014年12月6日推出的Speex 1.2rc2和SpeexDSP1.2rc2正式将speex编解码器库和speexDSP库拆分为单独的源代码。

Speexdsp功能

预处理器

预处理器被设计为在运行编码器之前在音频上使用。预处理器提供三个主要功能:

  • 噪声抑制

  • 自动增益控制(AGC)

  • 语音活动检测(VAD)

自适应抖动缓冲区

  • 当通过UDP或RTP传输语音(或任何相关内容)时,包可能会丢失,以不同的延迟到达,甚至乱序。

  • 抖动缓冲区的目的是重新排序数据包,并缓冲足够长的时间,以便它们可以被发送以进行解码。

声学回声消除器

回声消除是为了提高远端质量

  • 在任何免提通信系统中,远端语音通过本地扬声器播放。音频在房间内传播,并被麦克风捕获。如果从麦克风捕获的音频被直接发送到远程端,那么用户就会听到远端语音的回声。声学回声消除器设计用于在声学回声发送到远端之前消除它。

重采样器

这个重采样器可以用于在任意两个速率之间进行转换(比率必须是有理数),并且可以控制质量/复杂性的权衡。

  • 重采样器在某些情况下将音频从一个采样率转换到另一个采样率。

  • 它可以用于混合具有不同采样率的流、用于支持声卡不支持的采样率、用于转码等。

Speexdsp移植到OpenHarmony标准系统

OpenHarmony三方库主要是基于标准 Linux 系统的 c/c++ 开源库,所以三方库的移植工作,首先是在标准 Linux 系统搭建环境、编译与验证,然后将三方库的编译加入到 OpenHarmony 工程的构建中。

三方库移植的主要开发步骤如下:

  1. 在标准Linux系统下载三方库源码,搭建开发环境,编译整个源码工程;

  2. 分析在标准Linux系统的编译过程文件,提取编译需要的源文件、编译依赖等信息

  3. 根据上一步分析结果,编写gn文件,将三方库加入到OpenHarmony的编译体系;

  4. 验证编译结果,在OpenHarmony的out目录是否生成目标库;

  5. 测试demo/测试单元用例执行。

一、下载源码

下载三方库源码时,优先使用最新版,不要下载master分支,下载最新的版本分支。移植speexdsp下载的是1.2.1版本。

Speexdsp源码下载地址:https://github.com/xiph/speexdsp

baaafbac-6f9d-11ed-8abf-dac502259ad0.png

二、搭建开发环境,生成Makefile编译构建speexdsp

不同的原生三方库提供的编译方式不相同,根据原生三方库的readme文件或者manual用户手册可以知道该如何编译。

Speexdsp在linux下的编译安装,在linux终端输入如下语句:

安装make工具:

sudo apt-get install make

(左右移动查看全部内容)

安装autoAutotools工具:

sudo apt-get install autoconf automake libtool

(左右移动查看全部内容)

GNU Autotools框架包括三个主要的包:Autoconf,Automake,和Libtool。

GNU软件的构建过程,一般来说, 包含三个步骤:

tar xfv xxx.tar.gz
./configure
make
make install

(左右移动查看全部内容)

该过程一般依赖两个文件, configure和Makefile文件。

Autoconf/Automake就是一套用于自动构建configure脚本和Makefile文件的工具。

一般使用Makefile.am构建的三方库,原生库中存在autogen.sh,configure.ac文件。由makefile.am自动生成makefile。

./autogen.sh

(左右移动查看全部内容)

./autogen.sh之后我们可以运行./configure --help查看configure配置

./configure --help

(左右移动查看全部内容)

jiajiahao@ubuntu:~/Desktop/SpeexDSP-1.2.1$ ./configure --help
`configure' configures speexdsp 1.2.1 to adapt to many kinds of systems.


Usage: ./configure [OPTION]... [VAR=VALUE]...


To assign environment variables (e.g., CC, CFLAGS...), specify them as
VAR=VALUE. See below for descriptions of some of the useful variables.


Defaults for the options are specified in brackets.


Configuration:
 -h, --help       display this help and exit
   --help=short    display options specific to this package
   --help=recursive  display the short help of all the included packages
 -V, --version      display version information and exit
 -q, --quiet, --silent  do not print `checking ...' messages
   --cache-file=FILE  cache test results in FILE [disabled]
 -C, --config-cache   alias for `--cache-file=config.cache'
 -n, --no-create     do not create output files
   --srcdir=DIR    find the sources in DIR [configure dir or `..']


Installation directories:
 --prefix=PREFIX     install architecture-independent files in PREFIX
             [/usr/local]
 --exec-prefix=EPREFIX  install architecture-dependent files in EPREFIX
             [PREFIX]


By default, `make install' will install all the files in
`/usr/local/bin', `/usr/local/lib' etc. You can specify
an installation prefix other than `/usr/local' using `--prefix',
for instance `--prefix=$HOME'.


For better control, use the options below.


Fine tuning of the installation directories:
 --bindir=DIR      user executables [EPREFIX/bin]
 --sbindir=DIR      system admin executables [EPREFIX/sbin]
 --libexecdir=DIR    program executables [EPREFIX/libexec]
 --sysconfdir=DIR    read-only single-machine data [PREFIX/etc]
 --sharedstatedir=DIR  modifiable architecture-independent data [PREFIX/com]
 --localstatedir=DIR   modifiable single-machine data [PREFIX/var]
 --runstatedir=DIR    modifiable per-process data [LOCALSTATEDIR/run]
 --libdir=DIR      object code libraries [EPREFIX/lib]
 --includedir=DIR    C header files [PREFIX/include]
 --oldincludedir=DIR   C header files for non-gcc [/usr/include]
 --datarootdir=DIR    read-only arch.-independent data root [PREFIX/share]
 --datadir=DIR      read-only architecture-independent data [DATAROOTDIR]
 --infodir=DIR      info documentation [DATAROOTDIR/info]
 --localedir=DIR     locale-dependent data [DATAROOTDIR/locale]
 --mandir=DIR      man documentation [DATAROOTDIR/man]
 --docdir=DIR      documentation root [DATAROOTDIR/doc/speexdsp]
 --htmldir=DIR      html documentation [DOCDIR]
 --dvidir=DIR      dvi documentation [DOCDIR]
 --pdfdir=DIR      pdf documentation [DOCDIR]
 --psdir=DIR       ps documentation [DOCDIR]


Program names:
 --program-prefix=PREFIX      prepend PREFIX to installed program names
 --program-suffix=SUFFIX      append SUFFIX to installed program names
 --program-transform-name=PROGRAM  run sed PROGRAM on installed program names


System types:
 --build=BUILD   configure for building on BUILD [guessed]
 --host=HOST    cross-compile to build programs to run on HOST [BUILD]


Optional Features:
 --disable-option-checking ignore unrecognized --enable/--with options
 --disable-FEATURE    do not include FEATURE (same as --enable-FEATURE=no)
 --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
 --enable-silent-rules  less verbose build output (undo: "make V=1")
 --disable-silent-rules verbose build output (undo: "make V=0")
 --disable-maintainer-mode
             disable make rules and dependencies not useful (and
             sometimes confusing) to the casual installer
 --enable-shared[=PKGS] build shared libraries [default=yes]
 --enable-static[=PKGS] build static libraries [default=yes]
 --enable-fast-install[=PKGS]
             optimize for fast installation [default=yes]
 --enable-dependency-tracking
             do not reject slow dependency extractors
 --disable-dependency-tracking
             speeds up one-time build
 --disable-libtool-lock avoid locking (might break parallel builds)
 --enable-sse      Enable SSE support
 --enable-neon      Enable NEON support
 --enable-fixed-point  Compile as fixed-point
 --disable-float-api   Disable the floating-point API
 --disable-examples   Do not build example programs, only the library
 --enable-arm4-asm    Make use of ARM4 assembly optimizations
 --enable-arm5e-asm   Make use of ARM5E assembly optimizations
 --enable-blackfin-asm  Make use of Blackfin assembly optimizations
 --enable-fixed-point-debug Debug fixed-point implementation
 --enable-resample-full-sinc-table Resample full SINC table (no interpolation)
 --enable-ti-c55x    Enable support for TI C55X DSP


Optional Packages:
 --with-PACKAGE[=ARG]  use PACKAGE [ARG=yes]
 --without-PACKAGE    do not use PACKAGE (same as --with-PACKAGE=no)
 --with-pic[=PKGS]    try to use only PIC/non-PIC objects [default=use
             both]
 --with-aix-soname=aix|svr4|both
             shared library versioning (aka "SONAME") variant to
             provide on AIX, [default=aix].
 --with-gnu-ld      assume the C compiler uses GNU ld [default=no]
 --with-sysroot[=DIR]  Search for dependent libraries within DIR (or the
             compiler's sysroot if not specified).
 --with-fft=choice    use an alternate FFT implementation. The available
             choices are kiss (default fixed point), smallft
             (default floating point), gpl-fftw3 and
             proprietary-intel-mkl


Some influential environment variables:
 CC     C compiler command
 CFLAGS   C compiler flags
 LDFLAGS   linker flags, e.g. -Lif you have libraries in a
       nonstandard directory 
 LIBS    libraries to pass to the linker, e.g. -l
 CPPFLAGS  (Objective) C/C++ preprocessor flags, e.g. -Iif
       you have headers in a nonstandard directory 
 LT_SYS_LIBRARY_PATH
       User-defined run-time library search path.
 CPP     C preprocessor
 PKG_CONFIG path to pkg-config utility
 PKG_CONFIG_PATH
       directories to add to pkg-config's search path
 PKG_CONFIG_LIBDIR
       path overriding pkg-config's built-in search path
 FFT_CFLAGS C compiler flags for FFT, overriding pkg-config
 FFT_LIBS  linker flags for FFT, overriding pkg-config


Use these variables to override the choices made by `configure' or to help
it to find libraries and programs with nonstandard names/locations.


Report bugs to .@xiph.org>

(左右移动查看全部内容)

在下载到linux中的speexdsp中新建build目录

mkdir build

(左右移动查看全部内容)

运行configure命令来生成Makefile。

./configure --prefix=/XXX/speexdsp/build -disable-sse

(左右移动查看全部内容)

SSE是一个X86平台的指令集,所以要移植speexdsp到OpenHarmony过程,configure时要disable掉sse这个配置。否则在加入OpenHarmony编译体系后生成libspeexdsp_share.z.so和在ohos上执行的可执行文件编译过程中会报错。

在linux上生成speexdsp的so动态链接库和.a静态链接库

  • make和make install后会生成speexdsp的.so动态链接库和.a静态链接库

make
make install

(左右移动查看全部内容)

编译安装后build目录结构如下:

bacd67a0-6f9d-11ed-8abf-dac502259ad0.png

整个编译安装过程终端输出log如下:

jiajiahao@ubuntu:~/Desktop/speexdsp-SpeexDSP-1.2.1$ ./autogen.sh
Updating build configuration files, please wait....
libtoolize: putting auxiliary files in '.'.
libtoolize: copying file './ltmain.sh'
libtoolize: putting macros in AC_CONFIG_MACRO_DIRS, 'm4'.
libtoolize: copying file 'm4/libtool.m4'
libtoolize: copying file 'm4/ltoptions.m4'
libtoolize: copying file 'm4/ltsugar.m4'
libtoolize: copying file 'm4/ltversion.m4'
libtoolize: copying file 'm4/lt~obsolete.m4'
configure.ac:26: installing './compile'
configure.ac:24: installing './config.guess'
configure.ac:24: installing './config.sub'
configure.ac:21: installing './install-sh'
configure.ac:21: installing './missing'
libspeexdsp/Makefile.am: installing './depcomp'
jiajiahao@ubuntu:~/Desktop/speexdsp-SpeexDSP-1.2.1$ mkdir build
jiajiahao@ubuntu:~/Desktop/speexdsp-SpeexDSP-1.2.1$ ./configure --prefix=/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/build -disable-sse
checking whether make supports nested variables... yes
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /usr/bin/mkdir -p
checking for gawk... no
checking for mawk... mawk
checking whether make sets $(MAKE)... yes
checking whether to enable maintainer-specific portions of Makefiles... yes
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking how to print strings... printf
checking whether make supports the include directive... yes (GNU style)
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking whether gcc understands -c and -o together... yes
checking dependency style of gcc... gcc3
checking for a sed that does not truncate output... /usr/bin/sed
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for fgrep... /usr/bin/grep -F
checking for ld used by gcc... /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld... yes
checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B
checking the name lister (/usr/bin/nm -B) interface... BSD nm
checking whether ln -s works... yes
checking the maximum length of command line arguments... 1572864
checking how to convert x86_64-pc-linux-gnu file names to x86_64-pc-linux-gnu format... func_convert_file_noop
checking how to convert x86_64-pc-linux-gnu file names to toolchain format... func_convert_file_noop
checking for /usr/bin/ld option to reload object files... -r
checking for objdump... objdump
checking how to recognize dependent libraries... pass_all
checking for dlltool... dlltool
checking how to associate runtime and link libraries... printf %s

checking for ar... ar
checking for archiver [url=home.php?mod=space&uid=1455510]@file[/url] support... @
checking for strip... strip
checking for ranlib... ranlib
checking command to parse /usr/bin/nm -B output from gcc object... ok
checking for sysroot... no
checking for a working dd... /usr/bin/dd
checking how to truncate binary pipes... /usr/bin/dd bs=4096 count=1
checking for mt... mt
checking if mt is a manifest tool... no
checking how to run the C preprocessor... gcc -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for dlfcn.h... yes
checking for objdir... .libs
checking if gcc supports -fno-rtti -fno-exceptions... no
checking for gcc option to produce PIC... -fPIC -DPIC
checking if gcc PIC flag -fPIC -DPIC works... yes
checking if gcc static flag -static works... yes
checking if gcc supports -c -o file.o... yes
checking if gcc supports -c -o file.o... (cached) yes
checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking whether -lc should be explicitly linked in... no
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... yes
checking whether byte ordering is bigendian... no
checking for an ANSI C-conforming const... yes
checking for inline... inline
checking for C/C++ restrict keyword... __restrict
checking for C99 variable-size arrays... yes
checking for SSE in current arch/CFLAGS... yes
checking for SSE2 in current arch/CFLAGS... yes
checking for NEON in current arch/CFLAGS... no
checking for ELF visibility... yes
checking sys/soundcard.h usability... yes
checking sys/soundcard.h presence... yes
checking for sys/soundcard.h... yes
checking sys/audioio.h usability... no
checking sys/audioio.h presence... no
checking for sys/audioio.h... no
checking for cos in -lm... yes
checking for pkg-config... /usr/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking size of int16_t... 2
checking size of uint16_t... 2
checking size of u_int16_t... 2
checking size of int32_t... 4
checking size of uint32_t... 4
checking size of u_int32_t... 4
checking size of short... 2
checking size of int... 4
checking size of long... 8
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
config.status: creating libspeexdsp/Makefile
config.status: creating doc/Makefile
config.status: creating SpeexDSP.spec
config.status: creating include/Makefile
config.status: creating include/speex/Makefile
config.status: creating speexdsp.pc
config.status: creating win32/Makefile
config.status: creating win32/libspeexdsp/Makefile
config.status: creating symbian/Makefile
config.status: creating win32/VS2003/Makefile
config.status: creating win32/VS2003/libspeexdsp/Makefile
config.status: creating win32/VS2003/tests/Makefile
config.status: creating win32/VS2005/Makefile
config.status: creating win32/VS2005/libspeexdsp/Makefile
config.status: creating win32/VS2005/tests/Makefile
config.status: creating win32/VS2008/Makefile
config.status: creating win32/VS2008/libspeexdsp/Makefile
config.status: creating win32/VS2008/tests/Makefile
config.status: creating include/speex/speexdsp_config_types.h
config.status: creating ti/Makefile
config.status: creating ti/speex_C54_test/Makefile
config.status: creating ti/speex_C55_test/Makefile
config.status: creating ti/speex_C64_test/Makefile
config.status: creating config.h
config.status: executing depfiles commands
config.status: executing libtool commands
Type "make; make install" to compile and install Speex
jiajiahao@ubuntu:~/Desktop/speexdsp-SpeexDSP-1.2.1$ make
make all-recursive
make[1]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1
Making all in libspeexdsp
make[2]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/libspeexdsp”
 CC    preprocess.lo
 CC    jitter.lo
 CC    mdf.lo
 CC    fftwrap.lo
 CC    filterbank.lo
 CC    resample.lo
 CC    buffer.lo
 CC    scal.lo
 CC    smallft.lo
 CCLD   libspeexdsp.la
make[2]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/libspeexdsp”
Making all in include
make[2]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/include”
Making all in speex
make[3]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/include/speex”
make[3]: 对“all”无需做任何事。
make[3]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/include/speex”
make[3]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/include”
make[3]: 对“all-am”无需做任何事。
make[3]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/include”
make[2]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/include”
Making all in doc
make[2]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/doc”
make[2]: 对“all”无需做任何事。
make[2]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/doc”
Making all in win32
make[2]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32”
Making all in libspeexdsp
make[3]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/libspeexdsp”
make[3]: 对“all”无需做任何事。
make[3]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/libspeexdsp”
Making all in VS2003
make[3]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2003”
Making all in libspeexdsp
make[4]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2003/libspeexdsp”
make[4]: 对“all”无需做任何事。
make[4]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2003/libspeexdsp”
Making all in tests
make[4]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2003/tests”
make[4]: 对“all”无需做任何事。
make[4]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2003/tests”
make[4]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2003”
make[4]: 对“all-am”无需做任何事。
make[4]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2003”
make[3]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2003”
Making all in VS2005
make[3]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2005”
Making all in libspeexdsp
make[4]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2005/libspeexdsp”
make[4]: 对“all”无需做任何事。
make[4]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2005/libspeexdsp”
Making all in tests
make[4]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2005/tests”
make[4]: 对“all”无需做任何事。
make[4]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2005/tests”
make[4]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2005”
make[4]: 对“all-am”无需做任何事。
make[4]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2005”
make[3]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2005”
Making all in VS2008
make[3]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2008”
Making all in libspeexdsp
make[4]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2008/libspeexdsp”
make[4]: 对“all”无需做任何事。
make[4]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2008/libspeexdsp”
Making all in tests
make[4]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2008/tests”
make[4]: 对“all”无需做任何事。
make[4]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2008/tests”
make[4]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2008”
make[4]: 对“all-am”无需做任何事。
make[4]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2008”
make[3]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2008”
make[3]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32”
make[3]: 对“all-am”无需做任何事。
make[3]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32”
make[2]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32”
Making all in symbian
make[2]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/symbian”
make[2]: 对“all”无需做任何事。
make[2]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/symbian”
Making all in ti
make[2]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/ti”
Making all in speex_C54_test
make[3]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/ti/speex_C54_test”
make[3]: 对“all”无需做任何事。
make[3]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/ti/speex_C54_test”
Making all in speex_C55_test
make[3]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/ti/speex_C55_test”
make[3]: 对“all”无需做任何事。
make[3]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/ti/speex_C55_test”
Making all in speex_C64_test
make[3]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/ti/speex_C64_test”
make[3]: 对“all”无需做任何事。
make[3]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/ti/speex_C64_test”
make[3]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/ti”
make[3]: 对“all-am”无需做任何事。
make[3]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/ti”
make[2]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/ti”
make[2]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1
make[2]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1
make[1]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1
jiajiahao@ubuntu:~/Desktop/speexdsp-SpeexDSP-1.2.1$ make install
Making install in libspeexdsp
make[1]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/libspeexdsp”
make[2]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/libspeexdsp”
 /usr/bin/mkdir -p '/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/build/lib'
 /bin/sh ../libtool  --mode=install /usr/bin/install -c  libspeexdsp.la '/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/build/lib'
libtool: install: /usr/bin/install -c .libs/libspeexdsp.so.1.5.2 /home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/build/lib/libspeexdsp.so.1.5.2
libtool: install: (cd /home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/build/lib && { ln -s -f libspeexdsp.so.1.5.2 libspeexdsp.so.1 || { rm -f libspeexdsp.so.1 && ln -s libspeexdsp.so.1.5.2 libspeexdsp.so.1; }; })
libtool: install: (cd /home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/build/lib && { ln -s -f libspeexdsp.so.1.5.2 libspeexdsp.so || { rm -f libspeexdsp.so && ln -s libspeexdsp.so.1.5.2 libspeexdsp.so; }; })
libtool: install: /usr/bin/install -c .libs/libspeexdsp.lai /home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/build/lib/libspeexdsp.la
libtool: install: /usr/bin/install -c .libs/libspeexdsp.a /home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/build/lib/libspeexdsp.a
libtool: install: chmod 644 /home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/build/lib/libspeexdsp.a
libtool: install: ranlib /home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/build/lib/libspeexdsp.a
libtool: finish: PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/sbin" ldconfig -n /home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/build/lib
----------------------------------------------------------------------
Libraries have been installed in:
  /home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/build/lib


If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the '-LLIBDIR'
flag during linking and do at least one of the following:
  - add LIBDIR to the 'LD_LIBRARY_PATH' environment variable
   during execution
  - add LIBDIR to the 'LD_RUN_PATH' environment variable
   during linking
  - use the '-Wl,-rpath -Wl,LIBDIR' linker flag
  - have your system administrator add LIBDIR to '/etc/ld.so.conf'


See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
make[2]: 对“install-data-am”无需做任何事。
make[2]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/libspeexdsp”
make[1]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/libspeexdsp”
Making install in include
make[1]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/include”
Making install in speex
make[2]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/include/speex”
make[3]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/include/speex”
make[3]: 对“install-exec-am”无需做任何事。
 /usr/bin/mkdir -p '/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/build/include/speex'
 /usr/bin/install -c -m 644 speexdsp_config_types.h '/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/build/include/speex'
 /usr/bin/mkdir -p '/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/build/include/speex'
 /usr/bin/install -c -m 644 speex_echo.h speex_jitter.h speex_preprocess.h speex_resampler.h speexdsp_types.h '/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/build/include/speex'
make[3]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/include/speex”
make[2]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/include/speex”
make[2]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/include”
make[3]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/include”
make[3]: 对“install-exec-am”无需做任何事。
make[3]: 对“install-data-am”无需做任何事。
make[3]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/include”
make[2]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/include”
make[1]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/include”
Making install in doc
make[1]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/doc”
make[2]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/doc”
make[2]: 对“install-exec-am”无需做任何事。
 /usr/bin/mkdir -p '/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/build/share/doc/speexdsp'
 /usr/bin/install -c -m 644 manual.pdf '/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/build/share/doc/speexdsp'
make[2]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/doc”
make[1]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/doc”
Making install in win32
make[1]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32”
Making install in libspeexdsp
make[2]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/libspeexdsp”
make[3]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/libspeexdsp”
make[3]: 对“install-exec-am”无需做任何事。
make[3]: 对“install-data-am”无需做任何事。
make[3]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/libspeexdsp”
make[2]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/libspeexdsp”
Making install in VS2003
make[2]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2003”
Making install in libspeexdsp
make[3]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2003/libspeexdsp”
make[4]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2003/libspeexdsp”
make[4]: 对“install-exec-am”无需做任何事。
make[4]: 对“install-data-am”无需做任何事。
make[4]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2003/libspeexdsp”
make[3]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2003/libspeexdsp”
Making install in tests
make[3]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2003/tests”
make[4]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2003/tests”
make[4]: 对“install-exec-am”无需做任何事。
make[4]: 对“install-data-am”无需做任何事。
make[4]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2003/tests”
make[3]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2003/tests”
make[3]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2003”
make[4]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2003”
make[4]: 对“install-exec-am”无需做任何事。
make[4]: 对“install-data-am”无需做任何事。
make[4]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2003”
make[3]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2003”
make[2]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2003”
Making install in VS2005
make[2]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2005”
Making install in libspeexdsp
make[3]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2005/libspeexdsp”
make[4]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2005/libspeexdsp”
make[4]: 对“install-exec-am”无需做任何事。
make[4]: 对“install-data-am”无需做任何事。
make[4]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2005/libspeexdsp”
make[3]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2005/libspeexdsp”
Making install in tests
make[3]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2005/tests”
make[4]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2005/tests”
make[4]: 对“install-exec-am”无需做任何事。
make[4]: 对“install-data-am”无需做任何事。
make[4]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2005/tests”
make[3]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2005/tests”
make[3]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2005”
make[4]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2005”
make[4]: 对“install-exec-am”无需做任何事。
make[4]: 对“install-data-am”无需做任何事。
make[4]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2005”
make[3]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2005”
make[2]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2005”
Making install in VS2008
make[2]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2008”
Making install in libspeexdsp
make[3]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2008/libspeexdsp”
make[4]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2008/libspeexdsp”
make[4]: 对“install-exec-am”无需做任何事。
make[4]: 对“install-data-am”无需做任何事。
make[4]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2008/libspeexdsp”
make[3]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2008/libspeexdsp”
Making install in tests
make[3]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2008/tests”
make[4]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2008/tests”
make[4]: 对“install-exec-am”无需做任何事。
make[4]: 对“install-data-am”无需做任何事。
make[4]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2008/tests”
make[3]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2008/tests”
make[3]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2008”
make[4]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2008”
make[4]: 对“install-exec-am”无需做任何事。
make[4]: 对“install-data-am”无需做任何事。
make[4]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2008”
make[3]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2008”
make[2]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2008”
make[2]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32”
make[3]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32”
make[3]: 对“install-exec-am”无需做任何事。
make[3]: 对“install-data-am”无需做任何事。
make[3]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32”
make[2]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32”
make[1]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32”
Making install in symbian
make[1]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/symbian”
make[2]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/symbian”
make[2]: 对“install-exec-am”无需做任何事。
make[2]: 对“install-data-am”无需做任何事。
make[2]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/symbian”
make[1]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/symbian”
Making install in ti
make[1]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/ti”
Making install in speex_C54_test
make[2]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/ti/speex_C54_test”
make[3]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/ti/speex_C54_test”
make[3]: 对“install-exec-am”无需做任何事。
make[3]: 对“install-data-am”无需做任何事。
make[3]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/ti/speex_C54_test”
make[2]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/ti/speex_C54_test”
Making install in speex_C55_test
make[2]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/ti/speex_C55_test”
make[3]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/ti/speex_C55_test”
make[3]: 对“install-exec-am”无需做任何事。
make[3]: 对“install-data-am”无需做任何事。
make[3]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/ti/speex_C55_test”
make[2]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/ti/speex_C55_test”
Making install in speex_C64_test
make[2]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/ti/speex_C64_test”
make[3]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/ti/speex_C64_test”
make[3]: 对“install-exec-am”无需做任何事。
make[3]: 对“install-data-am”无需做任何事。
make[3]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/ti/speex_C64_test”
make[2]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/ti/speex_C64_test”
make[2]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/ti”
make[3]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/ti”
make[3]: 对“install-exec-am”无需做任何事。
make[3]: 对“install-data-am”无需做任何事。
make[3]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/ti”
make[2]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/ti”
make[1]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/ti”
make[1]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1
make[2]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1
make[2]: 对“install-exec-am”无需做任何事。
 /usr/bin/mkdir -p '/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/build/lib/pkgconfig'
 /usr/bin/install -c -m 644 speexdsp.pc '/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/build/lib/pkgconfig'
make[2]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1
make[1]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1

(左右移动查看全部内容)

生成在linux上测试speexdsp功能用的可执行文件

编译生成出在linux上测试speexdsp功能用的可执行文件,目的是为了分析speexdsp在ohos编译体系生成动态链接库后进功能测试的逻辑。

阅读speexdsp用户手册,测试speexdsp功能的源文件分别为:

  • testdenoise.c

  • testecho.c

  • testjitter.c

  • testresample.c

  • testresample2.c

它们均位于speexdsp下的libspeexdsp。
需要把它们编译为可运行的执行文件,通过阅读用户手册可以知道在编译时需要添加-lspeexdsp和-lm

以编译testresample可执行文件为例,编译执行语句如下:

在speexdsp目录libspeexdsp目录下打开终端输入如下语句

gcc testjitter.c -L /home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/build/lib -lspeexdsp -o testjitter -I /home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/include -lm

(左右移动查看全部内容)

  • 其中/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1为笔者放置speexdsp原生库linux下的绝对路径。

  • 链接动态链接库编译可执行文件,gcc后面是测试用的源文件。-L 后指定so库所在的文件夹,-l+so库的名字(出去lib和后缀)。-o 后面是可执行文件的名字,-I 后面是测试用的源文件要用到的头文件所在的地址。

编译出全部测试功能用的可执行文件如下:

baf0f2ce-6f9d-11ed-8abf-dac502259ad0.png

更多热点文章阅读

  • 玩嗨OpenHarmony:基于OpenHarmony的智能助老服务机器人
  • 玩嗨OpenHarmony:基于OpenHarmony的智慧农业环境监控系统
  • OpenHarmony 3.2 Beta多媒体系列:音视频播放gstreamer
  • 基于OpenHarmony的智慧牧场方案:生物运动轨迹跟踪篇
  • 基于OpenHarmony的智能门禁系统,让出行更便捷

提示:本文电子烧友社区发布,转载请注明以上来源。如需社区合作及入群交流,请添加微信EEFans0806,或者发邮箱liuyong@huaqiu.com。


原文标题:移植speexdsp到OpenHarmony标准系统①

文章出处:【微信公众号:电子发烧友开源社区】欢迎添加关注!文章转载请注明出处。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 电子发烧友
    +关注

    关注

    33

    文章

    549

    浏览量

    32958
  • 开源社区
    +关注

    关注

    0

    文章

    94

    浏览量

    406

原文标题:移植speexdsp到OpenHarmony标准系统①

文章出处:【微信号:HarmonyOS_Community,微信公众号:电子发烧友开源社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    基于ArkTS语言的OpenHarmony APP应用开发:HelloOpenharmony

    1、程序简介该程序是基于OpenHarmony标准系统编写的UI应用类:HelloOpenHarmony。本案例是基于API9接口开发。本案例已在OpenHarmony凌蒙派-RK35
    的头像 发表于 09-15 08:09 371次阅读
    基于ArkTS语言的<b class='flag-5'>OpenHarmony</b> APP应用开发:Hello<b class='flag-5'>Openharmony</b>

    瑞芯微RK3566鸿蒙开发板OpenHarmony标准系统应用兼容性测试指导

    本文OpenHarmony标准系统应用兼容性测试指导,适用鸿蒙系统软件开发测试的新手入门学习课程,设备为触觉智能的瑞芯微RK3566开发板,型号Purple Pi OH。是Laval官方社区主荐的一款鸿蒙开发主板。
    的头像 发表于 09-10 11:56 373次阅读
    瑞芯微RK3566鸿蒙开发板<b class='flag-5'>OpenHarmony</b><b class='flag-5'>标准系统</b>应用兼容性测试指导

    基于OpenHarmony标准系统的C++公共基础类库案例:SafeMap

    1、程序简介该程序是基于OpenHarmony的C++公共基础类库的安全关联容器:SafeMap。OpenHarmony提供了一个线程安全的map实现。SafeMap在STLmap基础上封装互斥锁
    的头像 发表于 08-30 12:42 344次阅读
    基于<b class='flag-5'>OpenHarmony</b><b class='flag-5'>标准系统</b>的C++公共基础类库案例:SafeMap

    基于OpenHarmony标准系统的C++公共基础类库案例:SafeQueue

    1、程序简介该程序是基于OpenHarmony的C++公共基础类库的线程安全队列:SafeQueue。线程安全队列,是在dequeue的基础上封装std::lock_guard,以此实现线程的相关
    的头像 发表于 08-30 12:41 290次阅读
    基于<b class='flag-5'>OpenHarmony</b><b class='flag-5'>标准系统</b>的C++公共基础类库案例:SafeQueue

    基于OpenHarmony标准系统的C++公共基础类库案例:SafeStack

    1、程序简介该程序是基于OpenHarmony的C++公共基础类库的线程安全队列:SafeQueue。线程安全队列,是在dequeue的基础上封装std::lock_guard,以此实现线程的相关
    的头像 发表于 08-30 12:41 320次阅读
    基于<b class='flag-5'>OpenHarmony</b><b class='flag-5'>标准系统</b>的C++公共基础类库案例:SafeStack

    基于OpenHarmony标准系统的C++公共基础类库案例:SafeBlockQueue

    1、程序简介该程序是基于OpenHarmony的C++公共基础类库的读写锁:SafeBlockQueue。线程安全阻塞队列SafeBlockQueue类,提供阻塞和非阻塞版的入队入队和出队接口,并提
    的头像 发表于 08-30 12:41 298次阅读
    基于<b class='flag-5'>OpenHarmony</b><b class='flag-5'>标准系统</b>的C++公共基础类库案例:SafeBlockQueue

    基于OpenHarmony标准系统的C++公共基础类库案例:SafeStack

    /a28_utils_safestack 2、基础知识 C++公共基础类库为标准系统提供了一些常用的C++开发工具类,包括: 文件、路径、字符串相关操作的能力增强接口 读写锁、信号量、定时器、线程增强及线程池等接口
    发表于 08-21 14:51

    基于OpenHarmony标准系统的C++公共基础类库案例:SafeQueue

    /a27_utils_safequeue 2、基础知识 C++公共基础类库为标准系统提供了一些常用的C++开发工具类,包括: 文件、路径、字符串相关操作的能力增强接口 读写锁、信号量、定时器、线程增强及线程池等
    发表于 08-21 10:56

    请求推荐无需NPU的OpenHarmony标准系统ARM开发板

    请教一下大佬们,目前的需求是在国产ARM开发板上跑OpenHarmony标准系统,无需NPU/GPU,其它配置(CPU、RAM等)可以尽量高点,价位在2k以内,球球推荐!感谢大佬们!
    发表于 08-16 16:25

    OpenHarmony标准系统C++公共基础类库案例:HelloWorld

    1、程序简介该程序是基于凌蒙派OpenHarmony-v3.2.1标准系统C++公共基础类库的简单案例:HelloWorld。主要讲解C++公共基础类库案例如何搭建和编译。2、程序解析2.1、创建
    的头像 发表于 08-13 08:23 513次阅读
    <b class='flag-5'>OpenHarmony</b><b class='flag-5'>标准系统</b>C++公共基础类库案例:HelloWorld

    基于OpenHarmony标准系统的C++公共基础类库案例:ThreadPoll

    1、程序简介 该程序是基于OpenHarmony标准系统的C++公共基础类库的线程池处理:ThreadPoll。 本案例完成如下工作: 创建1个线程池,设置该线程池内部有1024个线程空间。 启动5
    发表于 08-12 11:42

    鸿蒙OpenHarmony【基于Hi3516DV300开发板(时钟应用开发)】

    如何快速搭建基于OpenHarmony标准系统(Hi3516DV300开发板)的应用开发环境,并基于一个时钟APP示例逐步展示应用的创建、开发、调试和安装等流程。
    的头像 发表于 05-08 15:27 1163次阅读
    鸿蒙<b class='flag-5'>OpenHarmony</b>【基于Hi3516DV300开发板(时钟应用开发)】

    鸿蒙OpenHarmony南向:【Hi3516标准系统入门(命令行方式)】

    除小型系统外,Hi3516DV300开发板还支持标准系统。此章节简要介绍如何使用命令行在Hi3516DV300开发板上进行标准系统的开发。
    的头像 发表于 05-08 09:26 875次阅读
    鸿蒙<b class='flag-5'>OpenHarmony</b>南向:【Hi3516<b class='flag-5'>标准系统</b>入门(命令行方式)】

    OpenHarmony开发实例:【 待办事项TodoList】

    TodoList应用是基于OpenHarmony SDK开发的安装在润和HiSpark Taurus AI Camera(Hi3516d)开发板标准系统上的应用;应用主要功能是以列表的形式,展示需要完成的日程;通过本demo可以学习
    的头像 发表于 04-22 22:00 724次阅读
    <b class='flag-5'>OpenHarmony</b>开发实例:【 待办事项TodoList】

    【鸿蒙】标准系统移植指南

    标准系统移植指南 本文描述了移植一块开发板的通用步骤,和具体芯片相关的详细移植过程无法在此一一列举。后续社区还会陆续发布开发板移植的实例供开
    的头像 发表于 02-27 14:36 885次阅读
    【鸿蒙】<b class='flag-5'>标准系统</b><b class='flag-5'>移植</b>指南