himpp-rs

Hi3XXX bindins for Rust.

Requirements

  1. Add arm-hisiv100-linux toolchain executable dir to PATH.
  2. Export MPP_DIR to directory that contains the mpp-lib.
  3. The rust target 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

Example

```rs use himpp::ffi::*;

fn main() { unsafe { println!("HIMPISYSInit() = {}", HIMPISYSInit()); println!("HIMPISYSExit() = {}", HIMPISYSExit()); } } ```

More exmaples