简介
libjpeg-turbo是libjpeg的升级版,它 的价值是利用SIMD指令集,加速了编解码过程。官网上的介绍中提到某个案例中从原来的0.3左右降低到0.1,时间只有原来的1/3,在我的工程中,时间减少到原来LibJpeg的一半左右。而它的使用与之前的LibJpeg完全相同,只是添加完善了部分功能,完全可以直接替换,使用很方便。
代码:(这是我封装的一个函数,直接使用的turbo API实现,功能是从内存buffer中获取原始rgb图像,经libjpeg-turbo压缩输出,然后写入一个jpg数据流文件,若要得到压缩码流做其它用处,可直接从输出outjpg_buf中取即可):
#include "turbojpeg.h"
int tj_CompressFromMem(void* fp_jpg,uchar* rgb_buffer,int quality)
{
tjhandle handle = NULL;
int flags = 0;
int pad = 4; //字节对齐
int subsamp = TJSAMP_422;
int pixelfmt = TJPF_RGB;
/*创建一个turbojpeg句柄*/
handle=tjInitCompress();
if (NULL == handle){
return -1;
}
uchar *outjpg_buf=NULL;
unsigned long outjpg_size;
/*压缩*/
//int