2014-03-12 20:25:59 +04:00
|
|
|
/*
|
|
|
|
* The Python Imaging Library
|
|
|
|
* $Id$
|
|
|
|
*
|
|
|
|
* declarations for the OpenJPEG codec interface.
|
|
|
|
*
|
|
|
|
* Copyright (c) 2014 by Coriolis Systems Limited
|
|
|
|
* Copyright (c) 2014 by Alastair Houghton
|
|
|
|
*/
|
|
|
|
|
2014-05-27 15:43:54 +04:00
|
|
|
#include <openjpeg.h>
|
2014-03-12 20:25:59 +04:00
|
|
|
|
2016-05-29 01:07:36 +03:00
|
|
|
/* 1MB for now */
|
|
|
|
#define BUFFER_SIZE OPJ_J2K_STREAM_CHUNK_SIZE
|
|
|
|
|
2014-03-12 20:25:59 +04:00
|
|
|
/* -------------------------------------------------------------------- */
|
2020-05-01 15:08:57 +03:00
|
|
|
/* Decoder */
|
2014-03-13 22:27:16 +04:00
|
|
|
/* -------------------------------------------------------------------- */
|
2014-03-12 20:25:59 +04:00
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
/* CONFIGURATION */
|
|
|
|
|
2014-03-14 15:21:08 +04:00
|
|
|
/* File descriptor, if available; otherwise, -1 */
|
|
|
|
int fd;
|
|
|
|
|
2016-05-29 01:07:36 +03:00
|
|
|
/* File pointer, when opened */
|
|
|
|
FILE *pfile;
|
|
|
|
|
2014-05-27 15:43:54 +04:00
|
|
|
/* Length of data, if available; otherwise, -1 */
|
|
|
|
off_t length;
|
|
|
|
|
2014-03-12 20:25:59 +04:00
|
|
|
/* Specify the desired format */
|
|
|
|
OPJ_CODEC_FORMAT format;
|
|
|
|
|
|
|
|
/* Set to divide image resolution by 2**reduce. */
|
|
|
|
int reduce;
|
|
|
|
|
|
|
|
/* Set to limit the number of quality layers to decode (0 = all layers) */
|
|
|
|
int layers;
|
|
|
|
|
|
|
|
/* PRIVATE CONTEXT (set by decoder) */
|
|
|
|
const char *error_msg;
|
2016-09-03 05:23:42 +03:00
|
|
|
|
2014-03-13 22:27:16 +04:00
|
|
|
} JPEG2KDECODESTATE;
|
|
|
|
|
|
|
|
/* -------------------------------------------------------------------- */
|
2020-05-01 15:08:57 +03:00
|
|
|
/* Encoder */
|
2014-03-13 22:27:16 +04:00
|
|
|
/* -------------------------------------------------------------------- */
|
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
/* CONFIGURATION */
|
|
|
|
|
2014-03-14 15:21:08 +04:00
|
|
|
/* File descriptor, if available; otherwise, -1 */
|
|
|
|
int fd;
|
|
|
|
|
2016-05-29 01:07:36 +03:00
|
|
|
/* File pointer, when opened */
|
|
|
|
FILE *pfile;
|
|
|
|
|
2014-03-13 22:27:16 +04:00
|
|
|
/* Specify the desired format */
|
|
|
|
OPJ_CODEC_FORMAT format;
|
|
|
|
|
|
|
|
/* Image offset */
|
|
|
|
int offset_x, offset_y;
|
|
|
|
|
|
|
|
/* Tile information */
|
|
|
|
int tile_offset_x, tile_offset_y;
|
|
|
|
int tile_size_x, tile_size_y;
|
|
|
|
|
|
|
|
/* Quality layers (a sequence of numbers giving *either* rates or dB) */
|
|
|
|
int quality_is_in_db;
|
|
|
|
PyObject *quality_layers;
|
|
|
|
|
|
|
|
/* Number of resolutions (DWT decompositions + 1 */
|
|
|
|
int num_resolutions;
|
|
|
|
|
|
|
|
/* Code block size */
|
|
|
|
int cblk_width, cblk_height;
|
|
|
|
|
2014-03-14 19:40:30 +04:00
|
|
|
/* Precinct size */
|
|
|
|
int precinct_width, precinct_height;
|
|
|
|
|
2014-03-13 22:27:16 +04:00
|
|
|
/* Compression style */
|
|
|
|
int irreversible;
|
|
|
|
|
2021-05-11 13:01:35 +03:00
|
|
|
/* Set multiple component transformation */
|
|
|
|
char mct;
|
|
|
|
|
2022-11-03 10:26:31 +03:00
|
|
|
/* Signed */
|
|
|
|
int sgnd;
|
|
|
|
|
2014-03-13 22:27:16 +04:00
|
|
|
/* Progression order (LRCP/RLCP/RPCL/PCRL/CPRL) */
|
|
|
|
OPJ_PROG_ORDER progression;
|
|
|
|
|
|
|
|
/* Cinema mode */
|
|
|
|
OPJ_CINEMA_MODE cinema_mode;
|
|
|
|
|
|
|
|
/* PRIVATE CONTEXT (set by decoder) */
|
|
|
|
const char *error_msg;
|
2016-05-29 01:07:36 +03:00
|
|
|
|
2023-01-19 03:37:14 +03:00
|
|
|
/* Custom comment */
|
2023-01-31 14:24:52 +03:00
|
|
|
char *comment;
|
2023-01-19 03:37:14 +03:00
|
|
|
|
|
|
|
/* Include PLT marker segment */
|
2023-03-27 14:38:29 +03:00
|
|
|
int plt;
|
2023-01-19 03:37:14 +03:00
|
|
|
|
2014-03-13 22:27:16 +04:00
|
|
|
} JPEG2KENCODESTATE;
|
2014-03-12 20:25:59 +04:00
|
|
|
|
|
|
|
/*
|
|
|
|
* Local Variables:
|
|
|
|
* c-basic-offset: 4
|
|
|
|
* End:
|
|
|
|
*
|
|
|
|
*/
|