• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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