mirror of
https://github.com/libjpeg-turbo/libjpeg-turbo.git
synced 2026-01-18 21:41:20 +01:00
Referring to https://github.com/libjpeg-turbo/libjpeg-turbo/issues/402#issuecomment-768348440 and https://github.com/libjpeg-turbo/libjpeg-turbo/issues/402#issuecomment-770221584 Ken Murchison clarified that it was his intent to release the lossless JPEG patch under the IJG License and that adding his name to the copyright headers would be sufficient to acknowledge that any derivatives are based on his work.
123 lines
3.8 KiB
C
123 lines
3.8 KiB
C
/*
|
|
* jlossy.h
|
|
*
|
|
* This file was part of the Independent JPEG Group's software:
|
|
* Copyright (C) 1998, Thomas G. Lane.
|
|
* Lossless JPEG Modifications:
|
|
* Copyright (C) 1999, Ken Murchison.
|
|
* For conditions of distribution and use, see the accompanying README file.
|
|
*
|
|
* This include file contains common declarations for the lossy (DCT-based)
|
|
* JPEG codec modules.
|
|
*/
|
|
|
|
#ifndef JLOSSY_H
|
|
#define JLOSSY_H
|
|
|
|
|
|
/* Lossy-specific compression codec (compressor proper) */
|
|
typedef struct {
|
|
struct jpeg_c_codec pub; /* public fields */
|
|
|
|
|
|
/* Coefficient buffer control */
|
|
JMETHOD(void, coef_start_pass, (j_compress_ptr cinfo, J_BUF_MODE pass_mode));
|
|
/* JMETHOD(boolean, coef_compress_data, (j_compress_ptr cinfo,
|
|
JSAMPIMAGE input_buf));*/
|
|
|
|
/* Pointer to data which is private to coef module */
|
|
void *coef_private;
|
|
|
|
|
|
/* Forward DCT (also controls coefficient quantization) */
|
|
JMETHOD(void, fdct_start_pass, (j_compress_ptr cinfo));
|
|
/* perhaps this should be an array??? */
|
|
JMETHOD(void, fdct_forward_DCT, (j_compress_ptr cinfo,
|
|
jpeg_component_info * compptr,
|
|
JSAMPARRAY sample_data, JBLOCKROW coef_blocks,
|
|
JDIMENSION start_row, JDIMENSION start_col,
|
|
JDIMENSION num_blocks));
|
|
|
|
/* Pointer to data which is private to fdct module */
|
|
void *fdct_private;
|
|
|
|
|
|
/* Entropy encoding */
|
|
JMETHOD(boolean, entropy_encode_mcu, (j_compress_ptr cinfo,
|
|
JBLOCKROW *MCU_data));
|
|
|
|
/* Pointer to data which is private to entropy module */
|
|
void *entropy_private;
|
|
|
|
} jpeg_lossy_c_codec;
|
|
|
|
typedef jpeg_lossy_c_codec * j_lossy_c_ptr;
|
|
|
|
|
|
|
|
typedef JMETHOD(void, inverse_DCT_method_ptr,
|
|
(j_decompress_ptr cinfo, jpeg_component_info * compptr,
|
|
JCOEFPTR coef_block,
|
|
JSAMPARRAY output_buf, JDIMENSION output_col));
|
|
|
|
/* Lossy-specific decompression codec (decompressor proper) */
|
|
typedef struct {
|
|
struct jpeg_d_codec pub; /* public fields */
|
|
|
|
|
|
/* Coefficient buffer control */
|
|
JMETHOD(void, coef_start_input_pass, (j_decompress_ptr cinfo));
|
|
JMETHOD(void, coef_start_output_pass, (j_decompress_ptr cinfo));
|
|
|
|
/* Pointer to array of coefficient virtual arrays, or NULL if none */
|
|
jvirt_barray_ptr *coef_arrays;
|
|
|
|
/* Pointer to data which is private to coef module */
|
|
void *coef_private;
|
|
|
|
|
|
/* Entropy decoding */
|
|
JMETHOD(void, entropy_start_pass, (j_decompress_ptr cinfo));
|
|
JMETHOD(boolean, entropy_decode_mcu, (j_decompress_ptr cinfo,
|
|
JBLOCKROW *MCU_data));
|
|
|
|
/* This is here to share code between baseline and progressive decoders; */
|
|
/* other modules probably should not use it */
|
|
boolean entropy_insufficient_data; /* set TRUE after emitting warning */
|
|
|
|
/* Pointer to data which is private to entropy module */
|
|
void *entropy_private;
|
|
|
|
|
|
/* Inverse DCT (also performs dequantization) */
|
|
JMETHOD(void, idct_start_pass, (j_decompress_ptr cinfo));
|
|
|
|
/* It is useful to allow each component to have a separate IDCT method. */
|
|
inverse_DCT_method_ptr inverse_DCT[MAX_COMPONENTS];
|
|
|
|
/* Pointer to data which is private to idct module */
|
|
void *idct_private;
|
|
|
|
} jpeg_lossy_d_codec;
|
|
|
|
typedef jpeg_lossy_d_codec * j_lossy_d_ptr;
|
|
|
|
|
|
/* Compression module initialization routines */
|
|
EXTERN(void) jinit_lossy_c_codec JPP((j_compress_ptr cinfo));
|
|
EXTERN(void) jinit_c_coef_controller JPP((j_compress_ptr cinfo,
|
|
boolean need_full_buffer));
|
|
EXTERN(void) jinit_forward_dct JPP((j_compress_ptr cinfo));
|
|
EXTERN(void) jinit_shuff_encoder JPP((j_compress_ptr cinfo));
|
|
EXTERN(void) jinit_phuff_encoder JPP((j_compress_ptr cinfo));
|
|
|
|
/* Decompression module initialization routines */
|
|
EXTERN(void) jinit_lossy_d_codec JPP((j_decompress_ptr cinfo));
|
|
EXTERN(void) jinit_d_coef_controller JPP((j_decompress_ptr cinfo,
|
|
boolean need_full_buffer));
|
|
EXTERN(void) jinit_shuff_decoder JPP((j_decompress_ptr cinfo));
|
|
EXTERN(void) jinit_phuff_decoder JPP((j_decompress_ptr cinfo));
|
|
EXTERN(void) jinit_inverse_dct JPP((j_decompress_ptr cinfo));
|
|
|
|
#endif /* JLOSSY_H */
|