1e16b04aa6041efb6507546547737e9603fa1606emsarett/* 2e16b04aa6041efb6507546547737e9603fa1606emsarett * Copyright 2015 Google Inc. 3e16b04aa6041efb6507546547737e9603fa1606emsarett * 4e16b04aa6041efb6507546547737e9603fa1606emsarett * Use of this source code is governed by a BSD-style license that can be 5e16b04aa6041efb6507546547737e9603fa1606emsarett * found in the LICENSE file. 6e16b04aa6041efb6507546547737e9603fa1606emsarett */ 7e16b04aa6041efb6507546547737e9603fa1606emsarett 8e16b04aa6041efb6507546547737e9603fa1606emsarett 9525e90ab92fed79ac11afbb6e13d56867157fa70mtklein#ifndef SkJpegUtility_codec_DEFINED 10525e90ab92fed79ac11afbb6e13d56867157fa70mtklein#define SkJpegUtility_codec_DEFINED 11e16b04aa6041efb6507546547737e9603fa1606emsarett 125df93de8ad968b4e25708964e558979375eeaa9eMatt Sarett#include "SkJpegPriv.h" 13e16b04aa6041efb6507546547737e9603fa1606emsarett#include "SkStream.h" 14e16b04aa6041efb6507546547737e9603fa1606emsarett 15e16b04aa6041efb6507546547737e9603fa1606emsarett#include <setjmp.h> 16e16b04aa6041efb6507546547737e9603fa1606emsarett// stdio is needed for jpeglib 17e16b04aa6041efb6507546547737e9603fa1606emsarett#include <stdio.h> 18e16b04aa6041efb6507546547737e9603fa1606emsarett 19e16b04aa6041efb6507546547737e9603fa1606emsarettextern "C" { 20e16b04aa6041efb6507546547737e9603fa1606emsarett #include "jpeglib.h" 21e16b04aa6041efb6507546547737e9603fa1606emsarett #include "jerror.h" 22e16b04aa6041efb6507546547737e9603fa1606emsarett} 23e16b04aa6041efb6507546547737e9603fa1606emsarett 24e16b04aa6041efb6507546547737e9603fa1606emsarett/* 25e16b04aa6041efb6507546547737e9603fa1606emsarett * Error handling function 26e16b04aa6041efb6507546547737e9603fa1606emsarett */ 27e16b04aa6041efb6507546547737e9603fa1606emsarettvoid skjpeg_err_exit(j_common_ptr cinfo); 28e16b04aa6041efb6507546547737e9603fa1606emsarett 29e16b04aa6041efb6507546547737e9603fa1606emsarett/* 30e16b04aa6041efb6507546547737e9603fa1606emsarett * Source handling struct for that allows libjpeg to use our stream object 31e16b04aa6041efb6507546547737e9603fa1606emsarett */ 32e16b04aa6041efb6507546547737e9603fa1606emsarettstruct skjpeg_source_mgr : jpeg_source_mgr { 33e16b04aa6041efb6507546547737e9603fa1606emsarett skjpeg_source_mgr(SkStream* stream); 34e16b04aa6041efb6507546547737e9603fa1606emsarett 35e16b04aa6041efb6507546547737e9603fa1606emsarett SkStream* fStream; // unowned 36e16b04aa6041efb6507546547737e9603fa1606emsarett enum { 37e16b04aa6041efb6507546547737e9603fa1606emsarett // TODO (msarett): Experiment with different buffer sizes. 38e16b04aa6041efb6507546547737e9603fa1606emsarett // This size was chosen because it matches SkImageDecoder. 39e16b04aa6041efb6507546547737e9603fa1606emsarett kBufferSize = 1024 40e16b04aa6041efb6507546547737e9603fa1606emsarett }; 41e16b04aa6041efb6507546547737e9603fa1606emsarett uint8_t fBuffer[kBufferSize]; 42e16b04aa6041efb6507546547737e9603fa1606emsarett}; 43e16b04aa6041efb6507546547737e9603fa1606emsarett 44e16b04aa6041efb6507546547737e9603fa1606emsarett#endif 45