Grok 20.3.2
plugin_interface.h
Go to the documentation of this file.
1/*
2 * Copyright (C) 2016-2026 Grok Image Compression Inc.
3 *
4 * This source code is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU Affero General Public License, version 3,
6 * as published by the Free Software Foundation.
7 *
8 * This source code is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU Affero General Public License for more details.
12 *
13 * You should have received a copy of the GNU Affero General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 *
16 */
17
18#include <plugin/minpf_plugin.h>
19#include "grok.h"
20#define GPUP_TYPES_ONLY
22#undef GPUP_TYPES_ONLY
23#include <cstring>
24#include <string>
25
26#pragma once
27
28namespace grk
29{
31// Debug Interface
33
34#define DEBUG_CONTEXT_CACHE_SIZE 3
35
36// debugging variables
49
50typedef uint32_t (*PLUGIN_GET_DEBUG_STATE)(void);
51
52typedef void (*PLUGIN_DEBUG_MQC_NEXT_CXD)(grk_plugin_debug_mqc* mqc, uint32_t d);
53
55
57// compressor interface — function signatures match the plugin's gpup API
59
60typedef bool (*PLUGIN_INIT)(gpup_init_info initInfo);
61
62typedef int32_t (*PLUGIN_ENCODE)(gpup_compress_params* encoding_parameters,
64
66
67typedef void (*PLUGIN_STOP_BATCH_ENCODE)(void);
68
69typedef void (*PLUGIN_WAIT_FOR_BATCH_COMPLETE)(void);
70
72// decompressor interface
74
75/* PluginDecodeCallbackInfo uses gpup_ types because it shuttles data
76 between the plugin (which creates it with gpup types) and grok's
77 bridge code (which converts to grk_ types for the host callback). */
79{
81 PluginDecodeCallbackInfo(std::string input, std::string output,
82 gpup_decompress_params* decompressorParameters, gpup_codec_fmt format,
83 uint32_t flags)
84 : deviceId(0), init_decompressors_func(nullptr), inputFile(input), outputFile(output),
85 decod_format(format), cod_format(GPUP_FMT_UNK), codec(nullptr),
86 decompressor_parameters(decompressorParameters), image(nullptr), plugin_owns_image(false),
87 tile(nullptr), error_code(0), decompress_flags(flags), user_data(nullptr),
88 format_private(nullptr)
89
90 {
91 memset(&header_info, 0, sizeof(header_info));
92 }
93 size_t deviceId;
95 std::string inputFile;
96 std::string outputFile;
97 // input file format 0: J2K, 1: JP2
99 // output file format 0: PGX, 1: PxM, 2: BMP etc
107 int32_t error_code;
111};
112
114
115typedef int32_t (*PLUGIN_DECODE)(gpup_decompress_params* decoding_parameters,
116 PLUGIN_DECODE_USER_CALLBACK userCallback);
117
118typedef int32_t (*PLUGIN_INIT_BATCH_DECODE)(const char* input_dir, const char* output_dir,
119 gpup_decompress_params* decoding_parameters,
120 PLUGIN_DECODE_USER_CALLBACK userCallback);
121
122typedef int32_t (*PLUGIN_BATCH_DECODE)(void);
123
124typedef void (*PLUGIN_STOP_BATCH_DECODE)(void);
125
126} // namespace grk
struct _gpup_compress_batch_info gpup_compress_batch_info
int(* GPUP_INIT_DECOMPRESSORS)(gpup_header_info *header_info, gpup_image *image)
Definition gpu_plugin_shared.h:406
struct _gpup_tile gpup_tile
struct _gpup_compress_params gpup_compress_params
uint64_t(* GPUP_COMPRESS_USER_CALLBACK)(gpup_compress_callback_info *info)
Definition gpu_plugin_shared.h:421
struct _gpup_decompress_params gpup_decompress_params
struct _gpup_image gpup_image
struct _gpup_init_info gpup_init_info
struct _gpup_header_info gpup_header_info
gpup_file_fmt
Definition gpu_plugin_shared.h:95
@ GPUP_FMT_UNK
Definition gpu_plugin_shared.h:96
gpup_codec_fmt
Definition gpu_plugin_shared.h:112
@ GPUP_CODEC_UNK
Definition gpu_plugin_shared.h:113
void gpup_codec
Definition gpu_plugin_shared.h:66
ResWindow.
Definition CompressedChunkCache.h:36
int32_t(* PLUGIN_ENCODE)(gpup_compress_params *encoding_parameters, GPUP_COMPRESS_USER_CALLBACK callback)
Definition plugin_interface.h:62
int32_t(* PLUGIN_BATCH_ENCODE)(gpup_compress_batch_info info)
Definition plugin_interface.h:65
void(* PLUGIN_WAIT_FOR_BATCH_COMPLETE)(void)
Definition plugin_interface.h:69
bool(* PLUGIN_INIT)(gpup_init_info initInfo)
Definition plugin_interface.h:60
void(* PLUGIN_STOP_BATCH_DECODE)(void)
Definition plugin_interface.h:124
void(* PLUGIN_STOP_BATCH_ENCODE)(void)
Definition plugin_interface.h:67
uint32_t(* PLUGIN_GET_DEBUG_STATE)(void)
Definition plugin_interface.h:50
void(* PLUGIN_DEBUG_MQC_NEXT_CXD)(grk_plugin_debug_mqc *mqc, uint32_t d)
Definition plugin_interface.h:52
int32_t(* PLUGIN_DECODE)(gpup_decompress_params *decoding_parameters, PLUGIN_DECODE_USER_CALLBACK userCallback)
Definition plugin_interface.h:115
void(* PLUGIN_DEBUG_MQC_NEXT_PLANE)(grk_plugin_debug_mqc *mqc)
Definition plugin_interface.h:54
int32_t(* PLUGIN_INIT_BATCH_DECODE)(const char *input_dir, const char *output_dir, gpup_decompress_params *decoding_parameters, PLUGIN_DECODE_USER_CALLBACK userCallback)
Definition plugin_interface.h:118
int32_t(* PLUGIN_BATCH_DECODE)(void)
Definition plugin_interface.h:122
int32_t(* PLUGIN_DECODE_USER_CALLBACK)(PluginDecodeCallbackInfo *info)
Definition plugin_interface.h:113
#define DEBUG_CONTEXT_CACHE_SIZE
Definition plugin_interface.h:34
Definition plugin_interface.h:79
PluginDecodeCallbackInfo(std::string input, std::string output, gpup_decompress_params *decompressorParameters, gpup_codec_fmt format, uint32_t flags)
Definition plugin_interface.h:81
void * format_private
Definition plugin_interface.h:110
std::string inputFile
Definition plugin_interface.h:95
uint32_t decompress_flags
Definition plugin_interface.h:108
void * user_data
Definition plugin_interface.h:109
gpup_codec * codec
Definition plugin_interface.h:101
GPUP_INIT_DECOMPRESSORS init_decompressors_func
Definition plugin_interface.h:94
gpup_decompress_params * decompressor_parameters
Definition plugin_interface.h:102
std::string outputFile
Definition plugin_interface.h:96
gpup_tile * tile
Definition plugin_interface.h:106
int32_t error_code
Definition plugin_interface.h:107
size_t deviceId
Definition plugin_interface.h:93
gpup_file_fmt cod_format
Definition plugin_interface.h:100
PluginDecodeCallbackInfo()
Definition plugin_interface.h:80
gpup_codec_fmt decod_format
Definition plugin_interface.h:98
gpup_image * image
Definition plugin_interface.h:104
gpup_header_info header_info
Definition plugin_interface.h:103
bool plugin_owns_image
Definition plugin_interface.h:105
Definition plugin_interface.h:38
uint32_t debug_state
Definition plugin_interface.h:39
uint32_t * context_stream
Definition plugin_interface.h:41
uint8_t contextCache[DEBUG_CONTEXT_CACHE_SIZE]
Definition plugin_interface.h:43
uint8_t context_number
Definition plugin_interface.h:40
uint32_t contextCacheCount
Definition plugin_interface.h:44
uint16_t compno
Definition plugin_interface.h:46
uint8_t orientation
Definition plugin_interface.h:45
uint32_t contextStreamByteCount
Definition plugin_interface.h:42
uint32_t level
Definition plugin_interface.h:47