libhevc编译使用

libhevc 编译与使用

目录

背景

libhevc由Ittiam开发,解码器由Google集成到Android源码/external/libhevc/ 中,libhevc是Android 5.0开始默认使用的265解码器。
libhevc提供:arm64, arm, mips, x86四个版本的汇编优化。

源码获取 Android 镜像使用帮助

git clone https://aosp.tuna.tsinghua.edu.cn/platform/external/libhevc

源码结构

以下为2017-02-15 commit编译,最新commit已经更换为Android.bp

├── common
├── decoder
├── test
├── Android.mk
├── decoder.arm.mk
├── decoder.arm64.mk
├── decoder.mips.mk
├── decoder.mips64.mk
├── decoder.mk
├── decoder.x86.mk
└── decoder.x86_64.mk

common+decoder: 解码器功能
test:包含解码器调用

环境

  • MacOS
  • ndk-r10e 下载 (注意:r10开始支持arm64,如果编译arm版本可以是更早版本)

编译

  • ARMv7平台 neon优化

    • 新建Application.mk
      APP_ABI := armeabi-v7a
    • 修改decoder.arm.mk
      这个文件定义了:LOCAL_SRC_FILES_arm 和 LOCAL_C_INCLUDES_arm
      第一行加入:
      ARCH_ARM_HAVE_NEON := true
      ifeq ($(ARCH_ARM_HAVE_NEON),true)后加入:
      LOCAL_ARM_NEON := true
      让 NDK 构建支持 NEON 的所有源文件
    • 修改decoder.mk
      1.打开注释
      include $(LOCAL_PATH)/decoder.arm.mk
      2.在include 后面加:
      LOCAL_SRC_FILES += $(LOCAL_SRC_FILES_arm)
      LOCAL_CFLAGS += $(LOCAL_CFLAGS_arm)
      LOCAL_C_INCLUDES += $(LOCAL_C_INCLUDES_arm)
  • ARMv8平台 (与ARMv7大同小异)

    • 新建Application.mk
      APP_ABI := arm64-v8a
    • decoder.arm64.mk不需要动
    • 修改decoder.mk
      1.打开注释
      include $(LOCAL_PATH)/decoder.arm64.mk
      2.在include 后面改加:
      LOCAL_SRC_FILES += $(LOCAL_SRC_FILES_arm64)
      LOCAL_CFLAGS += $(LOCAL_CFLAGS_arm64)
      LOCAL_C_INCLUDES += $(LOCAL_C_INCLUDES_arm64)
  • ndk-build 命令执行编译
    在上级目录生成obj/,里面有生成的库文件:libhevcdec.a

参数使用说明

在main.c中可以找到使用参数,简要说明:

  • --input [必填]输入文件/mnt/sdcard/265_meishi.hevc
  • --num_frames [必填]其中-1指完整解码
  • --save_output--output搭配使用,output输出yuv文件,注意android 6.0的写文件问题
  • --chroma_format YUV_420P,输出chroma format默认初始化为YUV_420SP_UV, --!
  • --display 需SDL实现支持,仅提供接口
  • --chksum 需md5实现支持,仅提供接口

编译部分转载 ZSL的博客

265并行解码性能对比

对比FFmpeg(openHEVC),测试机型Huawei Mate8 8-cores
这里写图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值