15 # include <vcl_msvc_warnings.h> 17 #include <vxl_config.h> 21 , ready(false), quality(75)
29 jobj.next_scanline = 0;
32 jpeg_create_compress(&
jobj);
36 #if defined(VXL_ADDRESS_BITS) && VXL_ADDRESS_BITS == 32 37 jobj.mem->max_memory_to_use = 300 * 1024 * 1024;
38 #elif defined(VXL_ADDRESS_BITS) && VXL_ADDRESS_BITS == 64 39 jobj.mem->max_memory_to_use = 1024 * 1024 * 1024;
55 jobj.next_scanline = 0;
58 switch (
jobj.input_components) {
60 jobj.in_color_space = JCS_GRAYSCALE;
63 jobj.in_color_space = JCS_RGB;
66 std::cerr << __FILE__
" : urgh!\n";
70 jpeg_set_defaults(&
jobj);
74 jpeg_boolean write_all_tables = TRUE;
75 jpeg_start_compress (&
jobj, write_all_tables);
82 if (line !=
jobj.next_scanline) {
83 std::cerr <<
"scanlines must be written in order\n";
88 {
auto *tmp = const_cast<JSAMPLE*>(scanline);
89 jpeg_write_scanlines(&
jobj, &tmp, 1); }
92 if (line ==
jobj.image_height - 1) {
93 jpeg_finish_compress(&
jobj);
104 jpeg_finish_compress(&
jobj);
107 jpeg_destroy_compress(&
jobj);
Stream interface for VIL image loaders.
void vil_jpeg_stream_dst_rewind(j_compress_ptr cinfo, vil_stream *vs)
bool write_scanline(unsigned line, JSAMPLE const *)
struct jpeg_error_mgr jerr
void vil_jpeg_stream_dst_set(j_compress_ptr cinfo, vil_stream *vs)
Prepare for output to a vil_stream.
Stream interface for VIL image loaders.
void set_quality(int quality)
vil_jpeg_compressor(vil_stream *s)
void ref()
up/down the reference count.
struct jpeg_compress_struct jobj