himpp 0.1.1

Hi3XXX bindings for Rust
docs.rs failed to build himpp-0.1.1
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.

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:

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:

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:

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

use himpp::ffi::*;

fn main() {
    unsafe {
        println!("HI_MPI_SYS_Init() = {}", HI_MPI_SYS_Init());
        println!("HI_MPI_SYS_Exit() = {}", HI_MPI_SYS_Exit());
    }
}

More exmaples