Skip to main content

nvtiff_sys/
nvtiff.rs

1/* automatically generated by rust-bindgen 0.71.1 */
2
3pub mod libraryPropertyType_t {
4    pub type Type = u32;
5    pub const MAJOR_VERSION: Type = 0;
6    pub const MINOR_VERSION: Type = 1;
7    pub const PATCH_LEVEL: Type = 2;
8}
9pub use self::libraryPropertyType_t::Type as libraryPropertyType;
10#[repr(C)]
11#[derive(Debug, Copy, Clone)]
12pub struct CUstream_st {
13    _unused: [u8; 0],
14}
15pub type cudaStream_t = *mut CUstream_st;
16pub mod nvtiffStatus {
17    pub type Type = u32;
18    pub const NVTIFF_STATUS_SUCCESS: Type = 0;
19    pub const NVTIFF_STATUS_NOT_INITIALIZED: Type = 1;
20    pub const NVTIFF_STATUS_INVALID_PARAMETER: Type = 2;
21    pub const NVTIFF_STATUS_BAD_TIFF: Type = 3;
22    pub const NVTIFF_STATUS_TIFF_NOT_SUPPORTED: Type = 4;
23    pub const NVTIFF_STATUS_ALLOCATOR_FAILURE: Type = 5;
24    pub const NVTIFF_STATUS_EXECUTION_FAILED: Type = 6;
25    pub const NVTIFF_STATUS_ARCH_MISMATCH: Type = 7;
26    pub const NVTIFF_STATUS_INTERNAL_ERROR: Type = 8;
27    pub const NVTIFF_STATUS_NVCOMP_NOT_FOUND: Type = 9;
28    pub const NVTIFF_STATUS_NVJPEG_NOT_FOUND: Type = 10;
29    pub const NVTIFF_STATUS_TAG_NOT_FOUND: Type = 11;
30    pub const NVTIFF_STATUS_PARAMETER_OUT_OF_BOUNDS: Type = 12;
31    pub const NVTIFF_STATUS_NVJPEG2K_NOT_FOUND: Type = 13;
32    pub const NVTIFF_STATUS_BATCH_INCOMPATIBLE: Type = 14;
33}
34pub use self::nvtiffStatus::Type as nvtiffStatus_t;
35pub mod nvtiffGeoKeys {
36    pub type Type = u32;
37    pub const NVTIFF_GEOKEY_GT_MODEL_TYPE: Type = 1024;
38    pub const NVTIFF_GEOKEY_GT_RASTER_TYPE: Type = 1025;
39    pub const NVTIFF_GEOKEY_GT_CITATION: Type = 1026;
40    pub const NVTIFF_GEOKEY_GEODETIC_CRS: Type = 2048;
41    pub const NVTIFF_GEOKEY_GEODETIC_CITATION: Type = 2049;
42    pub const NVTIFF_GEOKEY_GEODETIC_DATUM: Type = 2050;
43    pub const NVTIFF_GEOKEY_PRIME_MERIDIAN: Type = 2051;
44    pub const NVTIFF_GEOKEY_GEOG_LINEAR_UNITS: Type = 2052;
45    pub const NVTIFF_GEOKEY_GEOG_LINEAR_UNIT_SIZE: Type = 2053;
46    pub const NVTIFF_GEOKEY_GEOG_ANGULAR_UNITS: Type = 2054;
47    pub const NVTIFF_GEOKEY_GEOG_ANGULAR_UNIT_SIZE: Type = 2055;
48    pub const NVTIFF_GEOKEY_ELLIPSOID: Type = 2056;
49    pub const NVTIFF_GEOKEY_ELLIPSOID_SEMI_MAJOR_AXIS: Type = 2057;
50    pub const NVTIFF_GEOKEY_ELLIPSOID_SEMI_MINOR_AXIS: Type = 2058;
51    pub const NVTIFF_GEOKEY_ELLIPSOID_INV_FLATTENING: Type = 2059;
52    pub const NVTIFF_GEOKEY_GEOG_AZIMUTH_UNITS: Type = 2060;
53    pub const NVTIFF_GEOKEY_PRIME_MERIDIAN_LONG: Type = 2061;
54    pub const NVTIFF_GEOKEY_PROJECTED_CRS: Type = 3072;
55    pub const NVTIFF_GEOKEY_PROJECTED_CITATION: Type = 3073;
56    pub const NVTIFF_GEOKEY_PROJECTION: Type = 3074;
57    pub const NVTIFF_GEOKEY_PROJ_METHOD: Type = 3075;
58    pub const NVTIFF_GEOKEY_PROJ_LINEAR_UNITS: Type = 3076;
59    pub const NVTIFF_GEOKEY_PROJ_LINEAR_UNIT_SIZE: Type = 3077;
60    pub const NVTIFF_GEOKEY_PROJ_STD_PARALLEL1: Type = 3078;
61    pub const NVTIFF_GEOKEY_PROJ_STD_PARALLEL: Type = 3078;
62    pub const NVTIFF_GEOKEY_PROJ_STD_PARALLEL2: Type = 3079;
63    pub const NVTIFF_GEOKEY_PROJ_NAT_ORIGIN_LONG: Type = 3080;
64    pub const NVTIFF_GEOKEY_PROJ_ORIGIN_LONG: Type = 3080;
65    pub const NVTIFF_GEOKEY_PROJ_NAT_ORIGIN_LAT: Type = 3081;
66    pub const NVTIFF_GEOKEY_PROJ_ORIGIN_LAT: Type = 3081;
67    pub const NVTIFF_GEOKEY_PROJ_FALSE_EASTING: Type = 3082;
68    pub const NVTIFF_GEOKEY_PROJ_FALSE_NORTHING: Type = 3083;
69    pub const NVTIFF_GEOKEY_PROJ_FALSE_ORIGIN_LONG: Type = 3084;
70    pub const NVTIFF_GEOKEY_PROJ_FALSE_ORIGIN_LAT: Type = 3085;
71    pub const NVTIFF_GEOKEY_PROJ_FALSE_ORIGIN_EASTING: Type = 3086;
72    pub const NVTIFF_GEOKEY_PROJ_FALSE_ORIGIN_NORTHING: Type = 3087;
73    pub const NVTIFF_GEOKEY_PROJ_CENTER_LONG: Type = 3088;
74    pub const NVTIFF_GEOKEY_PROJ_CENTER_LAT: Type = 3089;
75    pub const NVTIFF_GEOKEY_PROJ_CENTER_EASTING: Type = 3090;
76    pub const NVTIFF_GEOKEY_PROJ_CENTER_NORTHING: Type = 3091;
77    pub const NVTIFF_GEOKEY_PROJ_SCALE_AT_NAT_ORIGIN: Type = 3092;
78    pub const NVTIFF_GEOKEY_PROJ_SCALE_AT_ORIGIN: Type = 3092;
79    pub const NVTIFF_GEOKEY_PROJ_SCALE_AT_CENTER: Type = 3093;
80    pub const NVTIFF_GEOKEY_PROJ_AZIMUTH_ANGLE: Type = 3094;
81    pub const NVTIFF_GEOKEY_PROJ_STRAIGHT_VERT_POLE_LONG: Type = 3095;
82    pub const NVTIFF_GEOKEY_VERTICAL: Type = 4096;
83    pub const NVTIFF_GEOKEY_VERTICAL_CITATION: Type = 4097;
84    pub const NVTIFF_GEOKEY_VERTICAL_DATUM: Type = 4098;
85    pub const NVTIFF_GEOKEY_VERTICAL_UNITS: Type = 4099;
86    pub const NVTIFF_GEOKEY_BASE: Type = 32768;
87    pub const NVTIFF_GEOKEY_END: Type = 65535;
88}
89pub use self::nvtiffGeoKeys::Type as nvtiffGeoKey_t;
90pub mod nvtiffGeoKeyDataType {
91    pub type Type = u32;
92    pub const NVTIFF_GEOKEY_TYPE_SHORT: Type = 1;
93    pub const NVTIFF_GEOKEY_TYPE_ASCII: Type = 2;
94    pub const NVTIFF_GEOKEY_TYPE_DOUBLE: Type = 3;
95    pub const NVTIFF_GEOKEY_TYPE_UNKNOWN: Type = 4;
96}
97pub use self::nvtiffGeoKeyDataType::Type as nvtiffGeoKeyDataType_t;
98#[repr(C)]
99#[derive(Debug, Copy, Clone)]
100pub struct nvtiffDecoder {
101    _unused: [u8; 0],
102}
103pub type nvtiffDecoder_t = *mut nvtiffDecoder;
104#[repr(C)]
105#[derive(Debug, Copy, Clone)]
106pub struct nvtiffStream {
107    _unused: [u8; 0],
108}
109pub type nvtiffStream_t = *mut nvtiffStream;
110pub mod nvtiffSampleFormat {
111    pub type Type = u32;
112    pub const NVTIFF_SAMPLEFORMAT_UNKNOWN: Type = 0;
113    pub const NVTIFF_SAMPLEFORMAT_UINT: Type = 1;
114    pub const NVTIFF_SAMPLEFORMAT_INT: Type = 2;
115    pub const NVTIFF_SAMPLEFORMAT_IEEEFP: Type = 3;
116    pub const NVTIFF_SAMPLEFORMAT_VOID: Type = 4;
117    pub const NVTIFF_SAMPLEFORMAT_COMPLEXINT: Type = 5;
118    pub const NVTIFF_SAMPLEFORMAT_COMPLEXIEEEFP: Type = 6;
119}
120pub use self::nvtiffSampleFormat::Type as nvtiffSampleFormat_t;
121pub mod nvtiffPhotometricInt {
122    pub type Type = i32;
123    pub const NVTIFF_PHOTOMETRIC_UNKNOWN: Type = -1;
124    pub const NVTIFF_PHOTOMETRIC_MINISWHITE: Type = 0;
125    pub const NVTIFF_PHOTOMETRIC_MINISBLACK: Type = 1;
126    pub const NVTIFF_PHOTOMETRIC_RGB: Type = 2;
127    pub const NVTIFF_PHOTOMETRIC_PALETTE: Type = 3;
128    pub const NVTIFF_PHOTOMETRIC_MASK: Type = 4;
129    pub const NVTIFF_PHOTOMETRIC_SEPARATED: Type = 5;
130    pub const NVTIFF_PHOTOMETRIC_YCBCR: Type = 6;
131}
132pub use self::nvtiffPhotometricInt::Type as nvtiffPhotometricInt_t;
133pub mod nvtiffPlanarConfig {
134    pub type Type = u32;
135    pub const NVTIFF_PLANARCONFIG_UNKNOWN: Type = 0;
136    pub const NVTIFF_PLANARCONFIG_CONTIG: Type = 1;
137    pub const NVTIFF_PLANARCONFIG_SEPARATE: Type = 2;
138}
139pub use self::nvtiffPlanarConfig::Type as nvtiffPlanarConfig_t;
140pub mod nvtiffCompression {
141    pub type Type = u32;
142    pub const NVTIFF_COMPRESSION_UNKNOWN: Type = 0;
143    pub const NVTIFF_COMPRESSION_NONE: Type = 1;
144    pub const NVTIFF_COMPRESSION_LZW: Type = 5;
145    pub const NVTIFF_COMPRESSION_JPEG: Type = 7;
146    pub const NVTIFF_COMPRESSION_ADOBE_DEFLATE: Type = 8;
147    pub const NVTIFF_COMPRESSION_PACKBITS: Type = 32773;
148    pub const NVTIFF_COMPRESSION_DEFLATE: Type = 32946;
149    pub const NVTIFF_COMPRESSION_APERIO_JP2000_YCC: Type = 33003;
150    pub const NVTIFF_COMPRESSION_APERIO_JP2000_RGB: Type = 33005;
151    pub const NVTIFF_COMPRESSION_JP2000: Type = 34712;
152    pub const NVTIFF_COMPRESSION_ZSTD: Type = 50000;
153}
154pub use self::nvtiffCompression::Type as nvtiffCompression_t;
155pub mod nvtiffImageType {
156    pub type Type = u32;
157    pub const NVTIFF_IMAGETYPE_REDUCED_IMAGE: Type = 1;
158    pub const NVTIFF_IMAGETYPE_PAGE: Type = 2;
159    pub const NVTIFF_IMAGETYPE_MASK: Type = 4;
160    pub const NVTIFF_IMAGETYPE_ENUM_FORCE_UINT32: Type = 4294967295;
161}
162pub type nvtiffImageType_t = u32;
163#[repr(C)]
164#[derive(Debug, Copy, Clone, PartialEq)]
165pub struct nvtiffImageInfo {
166    pub image_type: nvtiffImageType_t,
167    pub image_width: u32,
168    pub image_height: u32,
169    pub compression: nvtiffCompression_t,
170    pub photometric_int: nvtiffPhotometricInt_t,
171    pub planar_config: nvtiffPlanarConfig_t,
172    pub samples_per_pixel: u16,
173    pub bits_per_pixel: u16,
174    pub bits_per_sample: [u16; 16usize],
175    pub sample_format: [nvtiffSampleFormat_t; 16usize],
176}
177#[allow(clippy::unnecessary_operation, clippy::identity_op)]
178const _: () = {
179    ["Size of nvtiffImageInfo"][::std::mem::size_of::<nvtiffImageInfo>() - 124usize];
180    ["Alignment of nvtiffImageInfo"][::std::mem::align_of::<nvtiffImageInfo>() - 4usize];
181    ["Offset of field: nvtiffImageInfo::image_type"]
182        [::std::mem::offset_of!(nvtiffImageInfo, image_type) - 0usize];
183    ["Offset of field: nvtiffImageInfo::image_width"]
184        [::std::mem::offset_of!(nvtiffImageInfo, image_width) - 4usize];
185    ["Offset of field: nvtiffImageInfo::image_height"]
186        [::std::mem::offset_of!(nvtiffImageInfo, image_height) - 8usize];
187    ["Offset of field: nvtiffImageInfo::compression"]
188        [::std::mem::offset_of!(nvtiffImageInfo, compression) - 12usize];
189    ["Offset of field: nvtiffImageInfo::photometric_int"]
190        [::std::mem::offset_of!(nvtiffImageInfo, photometric_int) - 16usize];
191    ["Offset of field: nvtiffImageInfo::planar_config"]
192        [::std::mem::offset_of!(nvtiffImageInfo, planar_config) - 20usize];
193    ["Offset of field: nvtiffImageInfo::samples_per_pixel"]
194        [::std::mem::offset_of!(nvtiffImageInfo, samples_per_pixel) - 24usize];
195    ["Offset of field: nvtiffImageInfo::bits_per_pixel"]
196        [::std::mem::offset_of!(nvtiffImageInfo, bits_per_pixel) - 26usize];
197    ["Offset of field: nvtiffImageInfo::bits_per_sample"]
198        [::std::mem::offset_of!(nvtiffImageInfo, bits_per_sample) - 28usize];
199    ["Offset of field: nvtiffImageInfo::sample_format"]
200        [::std::mem::offset_of!(nvtiffImageInfo, sample_format) - 60usize];
201};
202impl Default for nvtiffImageInfo {
203    fn default() -> Self {
204        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
205        unsafe {
206            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
207            s.assume_init()
208        }
209    }
210}
211pub type nvtiffImageInfo_t = nvtiffImageInfo;
212pub mod nvtiffImageGeometryType {
213    pub type Type = u32;
214    pub const NVTIFF_IMAGE_STRIPED: Type = 0;
215    pub const NVTIFF_IMAGE_TILED: Type = 1;
216}
217pub use self::nvtiffImageGeometryType::Type as nvtiffImageGeometryType_t;
218#[repr(C)]
219#[derive(Debug, Copy, Clone, PartialEq)]
220pub struct nvtiffImageGeometry {
221    pub type_: nvtiffImageGeometryType_t,
222    pub image_depth: u32,
223    pub strile_width: u32,
224    pub strile_height: u32,
225    pub strile_depth: u32,
226    pub num_striles_per_plane: u32,
227    pub num_striles: u32,
228}
229#[allow(clippy::unnecessary_operation, clippy::identity_op)]
230const _: () = {
231    ["Size of nvtiffImageGeometry"][::std::mem::size_of::<nvtiffImageGeometry>() - 28usize];
232    ["Alignment of nvtiffImageGeometry"][::std::mem::align_of::<nvtiffImageGeometry>() - 4usize];
233    ["Offset of field: nvtiffImageGeometry::type_"]
234        [::std::mem::offset_of!(nvtiffImageGeometry, type_) - 0usize];
235    ["Offset of field: nvtiffImageGeometry::image_depth"]
236        [::std::mem::offset_of!(nvtiffImageGeometry, image_depth) - 4usize];
237    ["Offset of field: nvtiffImageGeometry::strile_width"]
238        [::std::mem::offset_of!(nvtiffImageGeometry, strile_width) - 8usize];
239    ["Offset of field: nvtiffImageGeometry::strile_height"]
240        [::std::mem::offset_of!(nvtiffImageGeometry, strile_height) - 12usize];
241    ["Offset of field: nvtiffImageGeometry::strile_depth"]
242        [::std::mem::offset_of!(nvtiffImageGeometry, strile_depth) - 16usize];
243    ["Offset of field: nvtiffImageGeometry::num_striles_per_plane"]
244        [::std::mem::offset_of!(nvtiffImageGeometry, num_striles_per_plane) - 20usize];
245    ["Offset of field: nvtiffImageGeometry::num_striles"]
246        [::std::mem::offset_of!(nvtiffImageGeometry, num_striles) - 24usize];
247};
248impl Default for nvtiffImageGeometry {
249    fn default() -> Self {
250        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
251        unsafe {
252            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
253            s.assume_init()
254        }
255    }
256}
257pub type nvtiffImageGeometry_t = nvtiffImageGeometry;
258#[repr(C)]
259#[derive(Debug, Copy, Clone)]
260pub struct nvtiffDecodeParams {
261    _unused: [u8; 0],
262}
263pub type nvtiffDecodeParams_t = *mut nvtiffDecodeParams;
264#[repr(C)]
265#[derive(Debug, Copy, Clone, PartialEq)]
266pub struct nvtiffImage {
267    pub plane_data: *mut *mut ::std::os::raw::c_void,
268    pub plane_pitch_bytes: *mut usize,
269    pub num_planes: u32,
270}
271#[allow(clippy::unnecessary_operation, clippy::identity_op)]
272const _: () = {
273    ["Size of nvtiffImage"][::std::mem::size_of::<nvtiffImage>() - 24usize];
274    ["Alignment of nvtiffImage"][::std::mem::align_of::<nvtiffImage>() - 8usize];
275    ["Offset of field: nvtiffImage::plane_data"]
276        [::std::mem::offset_of!(nvtiffImage, plane_data) - 0usize];
277    ["Offset of field: nvtiffImage::plane_pitch_bytes"]
278        [::std::mem::offset_of!(nvtiffImage, plane_pitch_bytes) - 8usize];
279    ["Offset of field: nvtiffImage::num_planes"]
280        [::std::mem::offset_of!(nvtiffImage, num_planes) - 16usize];
281};
282impl Default for nvtiffImage {
283    fn default() -> Self {
284        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
285        unsafe {
286            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
287            s.assume_init()
288        }
289    }
290}
291pub type nvtiffImage_t = nvtiffImage;
292#[repr(C)]
293#[derive(Debug, Default, Copy, Clone, PartialEq)]
294pub struct nvtiffDecodeRegion {
295    pub ifd_offset: usize,
296    pub offset_x: i32,
297    pub offset_y: i32,
298    pub width: u32,
299    pub height: u32,
300}
301#[allow(clippy::unnecessary_operation, clippy::identity_op)]
302const _: () = {
303    ["Size of nvtiffDecodeRegion"][::std::mem::size_of::<nvtiffDecodeRegion>() - 24usize];
304    ["Alignment of nvtiffDecodeRegion"][::std::mem::align_of::<nvtiffDecodeRegion>() - 8usize];
305    ["Offset of field: nvtiffDecodeRegion::ifd_offset"]
306        [::std::mem::offset_of!(nvtiffDecodeRegion, ifd_offset) - 0usize];
307    ["Offset of field: nvtiffDecodeRegion::offset_x"]
308        [::std::mem::offset_of!(nvtiffDecodeRegion, offset_x) - 8usize];
309    ["Offset of field: nvtiffDecodeRegion::offset_y"]
310        [::std::mem::offset_of!(nvtiffDecodeRegion, offset_y) - 12usize];
311    ["Offset of field: nvtiffDecodeRegion::width"]
312        [::std::mem::offset_of!(nvtiffDecodeRegion, width) - 16usize];
313    ["Offset of field: nvtiffDecodeRegion::height"]
314        [::std::mem::offset_of!(nvtiffDecodeRegion, height) - 20usize];
315};
316pub type nvtiffDecodeRegion_t = nvtiffDecodeRegion;
317unsafe extern "C" {
318    pub fn nvtiffGetProperty(
319        type_: libraryPropertyType,
320        value: *mut ::std::os::raw::c_int,
321    ) -> nvtiffStatus_t;
322}
323unsafe extern "C" {
324    pub fn nvtiffDecodeParamsCreate(decode_params: *mut nvtiffDecodeParams_t) -> nvtiffStatus_t;
325}
326unsafe extern "C" {
327    pub fn nvtiffDecoderCreateSimple(
328        decoder: *mut nvtiffDecoder_t,
329        stream: cudaStream_t,
330    ) -> nvtiffStatus_t;
331}
332unsafe extern "C" {
333    pub fn nvtiffStreamOpenFromFile(
334        fname: *const ::std::os::raw::c_char,
335        tiff_stream: *mut nvtiffStream_t,
336    ) -> nvtiffStatus_t;
337}
338unsafe extern "C" {
339    pub fn nvtiffStreamOpen(
340        buffer: *const u8,
341        buffer_size: usize,
342        tiff_stream: *mut nvtiffStream_t,
343    ) -> nvtiffStatus_t;
344}
345unsafe extern "C" {
346    pub fn nvtiffStreamGetNextIFDOffset(
347        tiff_stream: nvtiffStream_t,
348        ifd_offset: usize,
349        next_ifd_offset: *mut usize,
350    ) -> nvtiffStatus_t;
351}
352unsafe extern "C" {
353    pub fn nvtiffStreamPrint(tiff_stream: nvtiffStream_t) -> nvtiffStatus_t;
354}
355unsafe extern "C" {
356    pub fn nvtiffStreamGetImageInfo(
357        tiff_stream: nvtiffStream_t,
358        ifd_offset: usize,
359        image_info: *mut nvtiffImageInfo_t,
360    ) -> nvtiffStatus_t;
361}
362unsafe extern "C" {
363    pub fn nvtiffStreamGetImageGeometry(
364        tiff_stream: nvtiffStream_t,
365        ifd_offset: usize,
366        geometry: *mut nvtiffImageGeometry_t,
367    ) -> nvtiffStatus_t;
368}
369unsafe extern "C" {
370    pub fn nvtiffStreamGetGeoKeyInfo(
371        tiff_stream: nvtiffStream_t,
372        key: nvtiffGeoKey_t,
373        size: *mut u32,
374        count: *mut u32,
375        type_: *mut nvtiffGeoKeyDataType_t,
376    ) -> nvtiffStatus_t;
377}
378unsafe extern "C" {
379    pub fn nvtiffStreamGetTagValue(
380        tiff_stream: nvtiffStream_t,
381        ifd_offset: usize,
382        tiff_tag: u16,
383        tag_value: *mut ::std::os::raw::c_void,
384        count: u32,
385    ) -> nvtiffStatus_t;
386}
387unsafe extern "C" {
388    pub fn nvtiffStreamGetGeoKey(
389        tiff_stream: nvtiffStream_t,
390        key: nvtiffGeoKey_t,
391        val: *mut ::std::os::raw::c_void,
392        count: u32,
393    ) -> nvtiffStatus_t;
394}
395unsafe extern "C" {
396    pub fn nvtiffDecode(
397        tiff_stream: nvtiffStream_t,
398        decoder: nvtiffDecoder_t,
399        params: nvtiffDecodeParams_t,
400        image_out: *mut nvtiffImage_t,
401        stream: cudaStream_t,
402    ) -> nvtiffStatus_t;
403}
404unsafe extern "C" {
405    pub fn nvtiffDecodeCheckSupported(
406        tiff_stream: nvtiffStream_t,
407        decoder: nvtiffDecoder_t,
408        params: nvtiffDecodeParams_t,
409        image_out: *const nvtiffImage_t,
410    ) -> nvtiffStatus_t;
411}
412unsafe extern "C" {
413    pub fn nvtiffDecodeParamsSetRegions(
414        decode_params: nvtiffDecodeParams_t,
415        regions: *const nvtiffDecodeRegion_t,
416        count: u32,
417    ) -> nvtiffStatus_t;
418}