xHiveAI-A311D:JPEG Encoder的实现

A311D芯片集成了一个硬件JPEG Encoder来将yuv格式的图片压缩成jpeg格式的图片。

按照下面的步骤来实现你的jpeg encoder功能:

1) 请参考文章:开发环境准备 

2) 请参照代码树/jpeg_encoder下的example.c来实现你的jpeg encoder代码

      -- 因为只有一个硬件JPEG Encoder,对于多路视频解码后,调用jpeg encoder来生成jpeg图片的情况,配置参数中的config.multi_proc是用来决定多线程调用还是多进程调用,jpeg encoder库会决定使用不同的锁来保护压缩数据的完整性。

      -- 考虑到实际应用中的原图和缩略图都需要压缩成jpeg图片,来保存到本地或者传输到远程服务器。amlJpegEncodeBothProc()函数就是为此目的来定义的,它的实现效率比调用两次amlJpegEncodeProc()来生成原图和缩略图的jpeg图片要高。

3) 完成你自己的代码后,可以参照Makefile.example来编译代码,并且scp到板子上实际运行。


示例程序如下:

#include "jpegenc.h"

JPEGEN_HANDLE_t jpegEnHandle;

JpegEnSetting_t config;

config.width     = <输入YUV图片的宽度>
config.height    = <输入YUV图片的高度>
config.channel_id = <对于多路jpeg encoder的应用,输入该路的index作为标识>
config.scale      = <如果有对YUV图片resize的需要,输入resize的比例。例如 scale=2, 那么resize之后的宽和高均为原始图片的1/2>
                    <如果不需要resize,设置为0>
config.multi_proc = <因为Soc中只有一个硬件jpeg encoder,如果有多路jpeg encoder的需求时,需要设置这个参数,来保证同步访问时候的数据保护>
                    <如果是一个进程内的多线程应用来实现, 那么设置为:0>
                    <如果是多个进程的应用来实现, 那么设置为:1>
config.enParam    = NULL <使用默认值:iformat(FMT_NV12),oformat(FMT_YUV420),quality(25),timeout(-1 nerver timeout),block_mode(0)>
                    自定义结构 JpegEncodeParam_t
                                quality: 数字越大质量越高 (default: 25)
                                iformat: 输入图片的格式(default: FMT_NV12)
                                oformat: 输出图片的格式(default: FMT_YUV420)
                                timeout: 编码是否等待超时(default: -1 永远不超时)
                                block_mode:块编码模式(default: 0)
                                除qulity可以根据需要调整外,其他参数最好使用默认值。

jpegEnHandle = amlJpegEncodeInit(&config); //在开始编码前初始化

while (一帧一帧图片数据输入) {
    //参照jpegenc.h的注释来调用处理函数
    amlJpegEncodeProc();    OR
    amlJpegEncodeBothProc();
}

amlJpegEncodeRelease(jpegEnHandle);  //所有图片处理完成后,释放jpeg encoder

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值