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