libjpeg学习3:turbojpeg试用

原创 2015年07月07日 21:29:44

turbojpeg针对ARM和X86对了优化,宣称其速度是libjpeg的2到4倍。下载其源码,值得称赞的地方是其例子,单元测试很到位。另外是它的注释,或者说是html说明文件,对于宏、函数都有详细的说明。本文就是参考源码的例子和html文档写的简单示例。由于只是试用,并无深入研究,只是在我的虚拟机里运行。对于性能测试,并未进行。

代码示例:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <setjmp.h>

#include "jpeg-utils.h"

// jpeg库头文件必须放到stdio.h后面
#include "libjpeg/include/turbojpeg.h"


int tjpeg_header(unsigned char* jpeg_buffer, int jpeg_size, int* width, int* height, int* subsample, int* colorspace)
{
    tjhandle handle = NULL;

    handle = tjInitDecompress();
    tjDecompressHeader3(handle, jpeg_buffer, jpeg_size, width, height, subsample, colorspace);

    tjDestroy(handle);

    return 0;
}

int tjpeg2rgb(unsigned char* jpeg_buffer, int jpeg_size, unsigned char* rgb_buffer, int* size)
{
    tjhandle handle = NULL;
    int width, height, subsample, colorspace;
    int flags = 0;
    int pixelfmt = TJPF_RGB;

    handle = tjInitDecompress();
    tjDecompressHeader3(handle, jpeg_buffer, jpeg_size, &width, &height, &subsample, &colorspace);

    flags |= 0;
    tjDecompress2(handle, jpeg_buffer, jpeg_size, rgb_buffer, width, 0,
            height, pixelfmt, flags);

    tjDestroy(handle);

    return 0;
}

int trgb2jpeg(unsigned char* rgb_buffer, int width, int height, int quality, unsigned char** jpeg_buffer, unsigned long* jpeg_size)
{
    tjhandle handle = NULL;
    //unsigned long size=0;
    int flags = 0;
    int subsamp = TJSAMP_422;
    int pixelfmt = TJPF_RGB;

    handle=tjInitCompress();
    //size=tjBufSize(width, height, subsamp);
    tjCompress2(handle, rgb_buffer, width, 0, height, pixelfmt, jpeg_buffer, jpeg_size, subsamp,
            quality, flags);

    tjDestroy(handle);

    return 0;
}


李迟 2015.7.7


版权声明:本文为迟思堂主人李迟原创文章,如转载请注明出处,并附带原文超链接地址。用于商业用途请付稿费¥100/千字。谢谢。

libjpeg-turbo使用实例(编解码jpeg、jpg转bmp、bmp转jpg代码)

libjpeg-turbo库用于jpeg图像编解码,上一节说了编译过程:编译libjpeg-turbo 。现在说说jpeg的编码、解码使用方法。 Windows上GDI接口支持的都是位图格式(DDB\...
  • mfcing
  • mfcing
  • 2016年09月23日 22:12
  • 5956

windows7 64位机上,libjpeg-turbo的安装和使用

windows7 64位机上,libjpeg-turbo的安装和使用!
  • fengbingchun
  • fengbingchun
  • 2013年08月22日 10:02
  • 11132

android 编译libjpeg-turbo

最近解码视频生成的是yuv数据,然后需要生成jpg图片,之前的方案是yuv-rgb-bmp-jpg这样的话是很慢的,计算了时间大概要300ms左右,导致多次点击照相,会造成视频画面的延迟,所以只能使用...
  • jwzhangjie
  • jwzhangjie
  • 2013年04月12日 10:49
  • 9981

android bitmap compress(图片压缩)

android bitmap compress android的照相功能随着手机硬件的发展,变得越来越强大,能够找出很高分辨率的图片。 有些场景中,需要照相并且上传到服务,但是由于图片的大小太大,...
  • luhuajcdd
  • luhuajcdd
  • 2013年05月23日 14:41
  • 127229

libjpeg-turbo的neon功能

libjpeg-turbo是对libjpeg的扩展,支持SIMD指令,如X86架构的MMX、SSE、SSE2、3DNOW,ARM架构的NEON,在对jpeg进行编码和解码的过程中能提高速度。在图形库C...
  • alien75
  • alien75
  • 2012年04月13日 15:41
  • 5968

libjpeg学习4:libjpeg-turbo之YUV

libjpeg-turbo支持直接从JPEG解压成YUV格式,或者反之。这也是我当初想研究它的一个动力。...
  • subfate
  • subfate
  • 2015年07月08日 22:07
  • 3481

turbojpeg tjDecompress 的解码

#include "../../../Core/Include/CompilerDefines.h" #include "../../../Core/Include/Utilities/Log.h" ...
  • zsc09_leaf
  • zsc09_leaf
  • 2013年04月16日 17:45
  • 2954

libjpeg-turbo(2)

主要是介绍一下API,基本就是头文件里面的!
  • swartz_lubel
  • swartz_lubel
  • 2017年07月23日 13:11
  • 336

android 使用libjpeg-turbo将yuv2jpeg图像

要将yuv2jpeg图像则需要两个准备,一、准备libjpeg-turbo库,可以查看之前android 编译libjpeg-turbo文章,二、调用libjpeg-turbo代码,可以查看源码中的E...
  • jwzhangjie
  • jwzhangjie
  • 2013年04月16日 10:35
  • 9008

移植libjpeg-turbo到arm遇到的问题

libjpeg-turbo版本为1.4.2 从github 克隆下来的最新版 https://github.com/libjpeg-turbo/libjpeg-turbo Ubuntu版本比较...
  • elitah
  • elitah
  • 2015年10月15日 10:37
  • 1540
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:libjpeg学习3:turbojpeg试用
举报原因:
原因补充:

(最多只允许输入30个字)