84 lines
2.1 KiB
C
84 lines
2.1 KiB
C
#pragma once
|
|
#include <stdint.h>
|
|
#include <stdlib.h>
|
|
|
|
#ifdef _MSC_VER
|
|
#ifdef RAWSPEED_BUILDLIB
|
|
#define DllDef __declspec(dllexport)
|
|
#else
|
|
#define DllDef __declspec(dllimport)
|
|
#endif
|
|
#else
|
|
#define DllDef
|
|
#endif
|
|
|
|
|
|
#ifdef __cplusplus
|
|
extern "C"
|
|
{
|
|
#endif
|
|
|
|
enum rawspeed3_error_codes
|
|
{
|
|
rawspeed_inited = -2,
|
|
rawspeed3_param_error = -1,
|
|
rawspeed3_ok = 0,
|
|
rawspeed3_ok_warnings = 1,
|
|
rawspeed3_not_inited = 2,
|
|
rawspeed3_processing_error = 3,
|
|
rawspeed3_no_decoder = 4,
|
|
rawspeed3_not_supported = 5,
|
|
};
|
|
|
|
typedef void *rawspeed3_handle_t;
|
|
|
|
/* RAW file parsing results */
|
|
typedef struct
|
|
{
|
|
int status; /* -1: param error, 0 => OK, >=1 error code */
|
|
uint16_t width, height, bpp, cpp;
|
|
unsigned pitch, filters;
|
|
const void *pixeldata;
|
|
}rawspeed3_ret_t;
|
|
|
|
/* API calls */
|
|
DllDef void rawspeed3_clearresult(rawspeed3_ret_t*);
|
|
/*
|
|
rawspeed3_init()
|
|
Init rawspeed3 Camera, returns: 0 on failure, pointer to data block on success
|
|
Cameradefs: cameras.xml in string (is_file == false) or file (is_file == true)
|
|
*/
|
|
DllDef rawspeed3_handle_t rawspeed3_init(const char* cameradefs, bool is_file);
|
|
|
|
/* init with built-in cameras.xml */
|
|
DllDef rawspeed3_handle_t rawspeed3_initdefault();
|
|
|
|
/*
|
|
rawspeed3_decodefile(..)
|
|
parse/decode RAW file passed via memory
|
|
Parameters:
|
|
handle - rawspeed3_handle_t => handle created by rawspeed3_init()
|
|
resultp -> pointer to rawspeed3_ret_t to be filled with
|
|
data -> data buffer with raw file
|
|
datasize -> size of this buffer
|
|
allowunknown -> allow to process unknown cameras (not listed in cameras.xml)
|
|
Return values:
|
|
0 -> OK
|
|
1 -> decode warnings (not fatal)
|
|
>1 -> error code
|
|
-1 -> Incorrect parameters passed (handle, or data, or datasize)
|
|
*/
|
|
DllDef int rawspeed3_decodefile(rawspeed3_handle_t handle, rawspeed3_ret_t* resultp,
|
|
const void *data, size_t datasize, bool allowunknown);
|
|
|
|
/* release internal raw data buffer */
|
|
DllDef void rawspeed3_release(rawspeed3_handle_t handle);
|
|
|
|
/* close handle: release all internal data */
|
|
DllDef void rawspeed3_close(rawspeed3_handle_t handle);
|
|
|
|
|
|
#ifdef __cplusplus
|
|
} /* Extern C */
|
|
#endif
|