限于作者能力水平,本文可能存在谬误,因此而给读者带来的损失,作者不做任何承诺。
图像编解码器(codec)
包含 Encoder
和 Decoder
两部分功能。我们用下列分别说明 Encoder
和 Decoder
的工作方式。
---------------| --------- |
输入数据 -->|->| Encoder |->|-> 编码后的输出数据| --------- || || --------- || | Decoder | || --------- |------------------------------| --------- || | Encoder | || --------- || || --------- |输入数据 -->|->| Decoder |->|-> 解码后的输出数据| --------- |---------------
全志开源了一个 H3 平台的图像编解码器项目 sunxi-cedarx ,但该项目没有项目需要的 Decoder
相关代码,于是我在补全了 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 展开讨论。