1. 前言
限于作者能力水平,本文可能存在谬误,因此而给读者带来的损失,作者不做任何承诺。
2. 图像 codec 概述
图像编解码器(codec)
包含 Encoder
和 Decoder
两部分功能。我们用下列分别说明 Encoder
和 Decoder
的工作方式。
---------------
| --------- |
输入数据 -->|->| Encoder |->|-> 编码后的输出数据
| --------- |
| |
| --------- |
| | Decoder | |
| --------- |
---------------
---------------
| --------- |
| | Encoder | |
| --------- |
| |
| --------- |
输入数据 -->|->| Decoder |->|-> 解码后的输出数据
| --------- |
---------------
3. 全志H3的图像编解码器
全志H3 平台开源了一个图像编解码器项目 sunxi-cedarx ,但该项目没有我们需要的 Decoder
相关代码,我补全了 Decoder
功能需要的相关代码 ,见 这里 或 这里,其中包括:
. 用于 Decoder 的 ION 内存分配器代码:sunxi-cedarx/SOURCE/common/ve_alloc.*
. Decoder 测试 demo: sunxi-cedarx/demo/vdecoder/*
其中 Decoder 测试 demo
程序可以通过选项 --neon=1
启用 ARM NEON
指令优化,加速解码过程;同时,加上 ION
的加持,在我们项目实际应用场景中,速度上基本满足了要求,但全志 H3 图像解码器对图像尺寸有对齐要求
,使得我们最后不得不放弃在项目中使用它。但不管怎样,学习的过程还是令人愉快的。
另外,想了解 ION 实现相关细节的童鞋请移步 BSP for FriendlyARM NanoPi H3,本篇基于该 Linux 3.4
内核进行测试,编译所需的内核头文件也从该内核代码提取。本篇不对 ION 展开讨论。