libjpeg-turbo2.0.5在海思hi3516cv500上的使用体验
libjpeg-turbo编译方式
交叉编译参考
https://blog.csdn.net/fengbingchun/article/details/96633906
linux下编译参考
https://blog.csdn.net/weixin_42118374/article/details/100579004
编译完成后找到libturbojpeg.a和turbojpeg.h文件,这就是我们jpeg解码的两个文件。
找到例程文件为tjexample.c,可以用来测试参考
编译gcc tjexample.c -o tjexample -L/home/ubantu-seven/Desktop/libjpegturbo -l:libturbojpeg.a
注意-L/home/ubantu-seven/Desktop/libjpegturbo是你当前的libturbojpeg.a所在的文件目录,按需求修改
交叉编译时arm-himix200-linux-gcc loadtest.c -o loadtest -L/home/ubantu-seven/Desktop/libjpegturbo-hisi -l:libturbojpeg.a
把他们放在同一个文件夹下,放入要处理的图片如
输入指令 ./tjexample filein.jpg fileout.jpg -gray
其中filein.jpg是输入的图像,fileout.jpg是输出的图像,-gray是处理参数
控制台输出 Transformed Image: 110 x 110 pixels, Grayscale subsampling, GRAY colorspace并输出图像
在海思上使用libjpeg-turbo
通过修改venc相关例程,可以实时的获取jpeg格式的buf,返回jpegbuf和jpegsize,因此可以利用相关的接口实现软解码。
这里用把JPEG文件读取进内存进行测试。
注意设置sw_out_size 的大小时要对应相应的解码方式
// An highlighted block
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include "turbojpeg.h"
const char *subsampName[TJ_NUMSAMP] = {
"4:4:4", "4:2:2", "4:2:0", "Grayscale", "4:4:0", "4:1:1"
};
const char *colorspaceName[TJ_NUMCS] = {
"RGB", "YCbCr", "GRAY", "CMYK", "YCCK"
};
tjscalingfactor *scalingFactors = NULL;
int numScalingFactors = 0;
/* DCT filter example. This produces a negative of the image. */
static int customFilter(short *coeffs, tjregion arrayRegion,
tjregion planeRegion, int componentIndex,
int transformIndex, tjtransform *transform)
{
int i;
for (i = 0