Hi3XXX bindins for Rust.
arm-hisiv100-linux
toolchain executable dir to PATH
.MPP_DIR
to directory that contains the mpp-lib
.arm-unknown-linux-musleabi
must be installed.Examples:
sh
export OLD_PATH=$PATH
export PATH=~/sdk/Hi3531/toolchain/arm-hisiv100-linux/target/bin:$PATH
export MPP_DIR=~/sdk/Hi3531/mpp-lib
The arm-hisiv100-linux
, mpp-lib
you can get from the BSP sdk.
The layout of the arm-hisiv100-linux
like this:
tree
arm-hisiv100-linux
├── arm-hisiv100-linux-uclibcgnueabi
│ ├── bin
│ ├── include
│ └── lib
├── bin
│ ├── arm-hisiv100-linux-uclibcgnueabi-addr2line
│ ├── arm-hisiv100-linux-uclibcgnueabi-ar
│ ├── arm-hisiv100-linux-uclibcgnueabi-as
│ ├── arm-hisiv100-linux-uclibcgnueabi-c++
│ ├── arm-hisiv100-linux-uclibcgnueabi-c++filt
│ ├── arm-hisiv100-linux-uclibcgnueabi-cpp
│ ├── arm-hisiv100-linux-uclibcgnueabi-g++
│ ├── arm-hisiv100-linux-uclibcgnueabi-gcc
│ ├── arm-hisiv100-linux-uclibcgnueabi-gcc-4.4.1
│ ├── arm-hisiv100-linux-uclibcgnueabi-gccbug
│ ├── arm-hisiv100-linux-uclibcgnueabi-gcov
│ ├── arm-hisiv100-linux-uclibcgnueabi-gprof
│ ├── arm-hisiv100-linux-uclibcgnueabi-ld
│ ├── arm-hisiv100-linux-uclibcgnueabi-nm
│ ├── arm-hisiv100-linux-uclibcgnueabi-objcopy
│ ├── arm-hisiv100-linux-uclibcgnueabi-objdump
│ ├── arm-hisiv100-linux-uclibcgnueabi-ranlib
│ ├── arm-hisiv100-linux-uclibcgnueabi-readelf
│ ├── arm-hisiv100-linux-uclibcgnueabi-size
│ ├── arm-hisiv100-linux-uclibcgnueabi-strings
│ └── arm-hisiv100-linux-uclibcgnueabi-strip
├── include
├── lib
│ ├── gcc
│ └── libiberty.a
├── libexec
│ └── gcc
└── target
├── armv5te_soft
├── armv5te_vfp
├── armv7a_soft
├── armv7a_vfp
├── armv7a_vfp_v3d16
├── bin
├── lib
└── usr
The layout of the mpp-lib
like this:
tree
mpp-lib-Hi3531_SDK_V1.0.D.0
├── include
│ ├── hi_comm_adec.h
│ ├── hi_comm_aenc.h
│ ├── hi_comm_ai.h
│ ├── hi_comm_aio.h
│ ├── hi_comm_ao.h
│ ├── hi_comm_hdmi.h
│ ├── hi_comm_ive.h
│ ├── hi_common.h
│ ├── hi_comm_pciv.h
│ ├── hi_comm_rc.h
│ ├── hi_comm_region.h
│ ├── hi_comm_sys.h
│ ├── hi_comm_vb.h
│ ├── hi_comm_vda.h
│ ├── hi_comm_vdec.h
│ ├── hi_comm_venc.h
│ ├── hi_comm_video.h
│ ├── hi_comm_vi.h
│ ├── hi_comm_vo.h
│ ├── hi_comm_vpss.h
│ ├── hi_debug.h
│ ├── hi_defines.h
│ ├── hi_errno.h
│ ├── hifb.h
│ ├── hi_io.h
│ ├── hi_jpeg_api.h
│ ├── hi_math.h
│ ├── hi_mem.h
│ ├── hi_tde_api.h
│ ├── hi_tde_errcode.h
│ ├── hi_tde_type.h
│ ├── hi_type.h
│ ├── jconfig.h
│ ├── jerror.h
│ ├── jmorecfg.h
│ ├── jpeglib.h
│ ├── list.h
│ ├── mkp
│ │ └── mod_ext.h
│ ├── mpi_adec.h
│ ├── mpi_aenc.h
│ ├── mpi_ai.h
│ ├── mpi_ao.h
│ ├── mpi_hdmi.h
│ ├── mpi_ive.h
│ ├── mpi_pciv.h
│ ├── mpi_region.h
│ ├── mpi_sys.h
│ ├── mpi_vb.h
│ ├── mpi_vda.h
│ ├── mpi_vdec.h
│ ├── mpi_venc.h
│ ├── mpi_vi.h
│ ├── mpi_vo.h
│ └── mpi_vpss.h
└── lib
├── libaec.a
├── libaec.so
├── libanr.a
├── libanr.so
├── libhdmi.a
├── libjpeg6b.a
├── libjpeg6b.so
├── libjpeg.a -> libjpeg6b.a
├── libjpeg.so -> libjpeg6b.so
├── libmem.a
├── libmem.so
├── libmpi.a
├── libmpi.so
├── libpciv.a
├── libresampler.a
├── libresampler.so
├── libtde.a
├── libtde.so
├── libVoiceEngine.a
├── libVoiceEngine.so
├── libvqev2.a
└── libvqev2.so
```rs use himpp::ffi::*;
fn main() { unsafe { println!("HIMPISYSInit() = {}", HIMPISYSInit()); println!("HIMPISYSExit() = {}", HIMPISYSExit()); } } ```
More exmaples