| <html> |
| <head> |
| <meta http-equiv="content-type" content="text/html; charset=windows-1252"> |
| </head> |
| <body> |
| <p>LibRaw: C API<a href="index.html">[back to Index]</a></p> |
| <h1>LibRaw: C API</h1> |
| <p>LibRaw C API is a wrapper around C++ API; therefore, virtually all |
| documentation to C API functions is represented by a set of hyperlinks to |
| the corresponding places in the <a href="API-CXX.html">description of C++ |
| API</a>.</p> |
| <p>Contents</p> |
| <ol> |
| <li><a href="#init">Initialization and de</a><a href="#init">nitialization</a></li> |
| <li><a href="#return">Returned values</a></li> |
| <li><a href="#dataload">Data loading</a></li> |
| <li><a href="#setters">Parameters getters/setters</a></li> |
| <li><a href="#utility">Auxiliary Functions</a></li> |
| <li><a href="#dcrawemu">Data Postprocessing, Emulation of dcraw Behavior</a> |
| <ul> |
| <li><a href="#dcrawparams">Setting of Parameters</a></li> |
| <li><a href="#emu">Emulation of dcraw Behavior</a></li> |
| </ul> |
| </li> |
| <li><a href="#write">Writing to Output Files</a></li> |
| <li><a href="#memwrite">Writing processing results to memory buffer</a></li> |
| </ol> |
| <p><a name="init"></a></p> |
| <h2>Initialization and denitialization</h2> |
| <dl> |
| <dt>libraw_data_t *libraw_init(unsigned int flags);</dt> |
| <dd> The function returns the pointer to the <a href="#API-datastruct.html#libraw_data_t">instance |
| of libraw_data_t structure</a>.<br> |
| The resultant pointer should be passed as the first argument to all C |
| API functions (except for libraw_strerror). <br> |
| Returns NULL in case of error, pointer to the structure in all other |
| cases. </dd> |
| <dt>void libraw_close(libraw_data_t *);</dt> |
| <dd> Closes libraw_data_t handler and deallocates all memory. </dd> |
| </dl> |
| <p><a name="return"></a></p> |
| <h2>Returned values</h2> |
| <p>Functions of C API return EINVAL (see errno.h) if the null pointer was |
| passed to them as the first argument. In all other cases, the <a href="API-CXX.html#return">C++ |
| API return code</a> is returned.</p> |
| <p><a name="dataload"></a></p> |
| <h2>Data Loading from a File/Buffer</h2> |
| <dl> |
| <dt>int libraw_open_file(libraw_data_t*, const char *)</dt> |
| <dt>int libraw_open_file_ex(libraw_data_t*, const char *,INT64 |
| bigfile_size)</dt> |
| <dt>WIN32: int libraw_open_wfile(libraw_data_t*, const wchar_t *)</dt> |
| <dt>WIN32: int libraw_open_wfile_ex(libraw_data_t*, const wchar_t *,INT64 |
| bigfile_size)</dt> |
| <dd>See <a href="API-CXX.html#open_file">LibRaw::open_file()</a></dd> |
| <dt>int libraw_open_buffer(libraw_data_t*, void *buffer, size_t bufsize)</dt> |
| <dd>See <a href="API-CXX.html#open_buffer">LibRaw::open_buffer()</a></dd> |
| <dt>int libraw_open_bayer(libraw_data_t *lr, unsigned char *data, unsigned |
| datalen, ushort _raw_width, ushort _raw_height, ushort _left_margin, |
| ushort _top_margin, ushort _right_margin, ushort _bottom_margin, |
| unsigned char procflags, unsigned char bayer_battern, unsigned |
| unused_bits, unsigned otherflags, unsigned black_level)</dt> |
| <dd>See <a href="API-CXX.html#open_bayer">LibRaw::open_bayer()</a></dd> |
| <dt>int libraw_unpack(libraw_data_t*);</dt> |
| <dd>See <a href="API-CXX.html#unpack">LibRaw::unpack()</a></dd> |
| <dt>int libraw_unpack_thumb(libraw_data_t*);</dt> |
| <dd>See <a href="API-CXX.html#unpack_thumb">LibRaw::unpack_thumb()</a></dd> |
| <dt>int libraw_unpack_thumb_ex(libraw_data_t*,int);</dt> |
| <dd>See <a href="API-CXX.html#unpack_thumb_ex">LibRaw::unpack_thumb_ex()</a></dd> |
| </dl> |
| <p><a name="setters"></a></p> |
| <h2>Parameters setters/getters</h2> |
| <p>These functions provides interface to imgdata.params, .sizes and .color |
| fields which works regardless of LibRaw versions used when building |
| calling app and the library itself.</p> |
| <ul> |
| <li>int libraw_get_raw_height(libraw_data_t *lr); </li> |
| <li>int libraw_get_raw_width(libraw_data_t *lr); </li> |
| <li>int libraw_get_iheight(libraw_data_t *lr); </li> |
| <li>int libraw_get_iwidth(libraw_data_t *lr); </li> |
| <li>float libraw_get_cam_mul(libraw_data_t *lr,int index); </li> |
| <li>float libraw_get_pre_mul(libraw_data_t *lr,int index); </li> |
| <li>float libraw_get_rgb_cam(libraw_data_t *lr,int index1, int index2);</li> |
| <li>libraw_iparams_t *libraw_get_iparams(libraw_data_t *lr);</li> |
| <li>libraw_lensinfo_t *libraw_get_lensinfo(libraw_data_t *lr);</li> |
| <li>libraw_imgother_t *libraw_get_imgother(libraw_data_t *lr);</li> |
| <li>int libraw_get_color_maximum(libraw_data_t *lr); </li> |
| <li>void libraw_set_user_mul(libraw_data_t *lr,int index, float val);</li> |
| <li>void libraw_set_demosaic(libraw_data_t *lr,int value); </li> |
| <li>void libraw_set_adjust_maximum_thr(libraw_data_t *lr,float value); </li> |
| <li>void libraw_set_output_color(libraw_data_t *lr,int value); </li> |
| <li>void libraw_set_output_bps(libraw_data_t *lr,int value);</li> |
| <li>void libraw_set_gamma(libraw_data_t *lr,int index, float value);</li> |
| <li>void libraw_set_no_auto_bright(libraw_data_t *lr,int value);</li> |
| <li>void libraw_set_bright(libraw_data_t *lr,float value);</li> |
| <li>void libraw_set_highlight(libraw_data_t *lr,int value);</li> |
| <li>void libraw_set_fbdd_noiserd(libraw_data_t *lr,int value);</li> |
| <li>int libraw_adjust_to_raw_inset_crop(libraw_data_t *lr, unsigned mask, |
| float maxcrop);</li> |
| </ul> |
| <p><a name="utility"></a></p> |
| <h2>Auxiliary Functions</h2> |
| <dl> |
| <dt>const char* libraw_version()</dt> |
| <dd>See <a href="API-CXX.html#version">LibRaw::version()</a></dd> |
| <dt>int libraw_versionNumber()</dt> |
| <dt>See <a href="API-CXX.html#versionNumber">LibRaw::versionNumber()</a><br> |
| </dt> |
| <dd>See <a href="API-CXX.html#versionNumber">LibRaw::versionNumber()</a></dd> |
| <dt>bool LIBRAW_CHECK_VERSION(major,minor,patch)</dt> |
| <dd>See <a href="API-CXX.html#LIBRAW_CHECK_VERSION">LIBRAW_CHECK_VERSION</a></dd> |
| <dt>unsigned libraw_capabilities()</dt> |
| <dd>See <a href="API-CXX.html#capabilities">LibRaw::capabilities()</a></dd> |
| <dt>int libraw_cameraCount()</dt> |
| <dd>See <a href="API-CXX.html#cameraCount">LibRaw::cameraCount()</a></dd> |
| <dt>const char* libraw_cameraList()</dt> |
| <dd>See <a href="API-CXX.html#cameraList">LibRaw::cameraList()</a></dd> |
| <dt>int libraw_get_decoder_info(libraw_data_t*,libraw_decoder_info_t *);</dt> |
| <dd>See <a href="API-CXX.html#get_decoder_info">LibRaw::get_decoder_info()</a></dd> |
| <dt>const char* libraw_unpack_function_name(libraw_data_t*);</dt> |
| <dd>See <a href="API-CXX.html#unpack_function_name">LibRaw::unpack_function_name()</a></dd> |
| <dt>int libraw_COLOR(libraw_data_t*,int row,int col);</dt> |
| <dd>See <a href="API-CXX.html#COLOR">LibRaw::COLOR()</a></dd> |
| <dt>void libraw_subtract_black(libraw_data_t*);</dt> |
| <dd>See <a href="API-CXX.html#add_subtract_black">LibRaw::subtract_black()</a></dd> |
| <dt>void libraw_recycle_datastream(libraw_data_t*);</dt> |
| <dd>See <a href="API-CXX.html#recycle_datastream">LibRaw::recycle_datastream()</a></dd> |
| <dt>void libraw_recycle(libraw_data_t*);</dt> |
| <dd>See <a href="API-CXX.html#recycle">LibRaw::recycle()</a></dd> |
| <dt>const char *libraw_strerror(int errorcode);</dt> |
| <dd>See <a href="API-CXX.html#libraw_strerror">LibRaw::strerror</a></dd> |
| <dt>libraw_adjust_to_raw_inset_crop(libraw_data_t *lr, unsigned mask, float maxcrop);</dt> |
| <dd>See <a href="API-CXX.html#adjust_to_raw_inset_crop">LibRaw::adjust_to_raw_inset_crop()</a></dd> |
| <dt>const char *libraw_strprogress(enum LibRaw_progress);</dt> |
| <dd>See <a href="API-CXX.html#strprogress">LibRaw::strprogress</a></dd> |
| <dt>void libraw_set_dataerror_handler(libraw_data_t*,data_callback func, |
| void *);</dt> |
| <dd>See <a href="API-CXX.html#dataerror">LibRaw::set_dataerror_handler()</a></dd> |
| <dt>void libraw_set_progress_handler(libraw_data_t*,progress_callback |
| func, void *);</dt> |
| <dd>See <a href="API-CXX.html#progress">LibRaw::set_progress_handler()</a></dd> |
| </dl> |
| <p><a name="dcrawemu"></a></p> |
| <h2>Data Postprocessing, Emulation of dcraw Behavior</h2> |
| <p><a name="dcrawparams"></a></p> |
| <h3>Setting of Parameters</h3> |
| <p>The postprocessing parameters for the calls described below are set, just |
| as for C++ API, via setting of fields in the libraw_output_params_t |
| structure:</p> |
| <pre> libraw_data_t *ptr = libraw_init(0); |
| ptr->params.output_tiff = 1; // output to TIFF |
| </pre> |
| <p>Fields of this structure are described in the <a href="API-datastruct.html#libraw_output_params_t">documentation |
| to libraw_output_params_t</a>. For notes on their use, see <a href="API-notes.html">API |
| notes</a>.</p> |
| <p><a name="emu"></a></p> |
| <h3>Emulation of dcraw Behavior</h3> |
| <dl> |
| <dt>int libraw_raw2image(libraw_data_t*);</dt> |
| <dd>See <a href="API-CXX.html#raw2image">LibRaw::raw2image</a></dd> |
| <dt>int libraw_free_image(libraw_data_t*);</dt> |
| <dd>See <a href="API-CXX.html#free_image">LibRaw::free_image</a></dd> |
| <dt>int libraw_adjust_sizes_info_only(libraw_data_t*);</dt> |
| <dd>See <a href="API-CXX.html#adjust_sizes_info_only">LibRaw::adjust_sizes_info_only()</a></dd> |
| <dt>int libraw_dcraw_process(libraw_data_t* lr);</dt> |
| <dd>See <a href="API-CXX.html#dcraw_process">LibRaw::dcraw_process()</a></dd> |
| </dl> |
| <h2>Writing to Output Files</h2> |
| <dl> |
| <dt>int libraw_dcraw_ppm_tiff_writer(libraw_data_t* lr,const char |
| *filename);</dt> |
| <dd>See <a href="API-CXX.html#dcraw_ppm_tiff_writer">LibRaw::dcraw_ppm_tiff_writer()</a></dd> |
| <dt>int libraw_dcraw_thumb_writer(libraw_data_t* lr,const char *fname);</dt> |
| <dd>See <a href="API-CXX.html#dcraw_thumb_writer">LibRaw::dcraw_thumb_writer()</a></dd> |
| </dl> |
| <h2>Writing processing results to memory buffer</h2> |
| <dl> |
| <dt>libraw_processed_image_t *libraw_dcraw_make_mem_image(libraw_data_t* |
| lr,int * errcode)</dt> |
| <dd>See <a href="API-CXX.html#dcraw_make_mem_image">LibRaw::dcraw_make_mem_image()</a></dd> |
| <dt>libraw_processed_image_t *libraw_dcraw_make_mem_thumb(libraw_data_t* |
| lr,int * errcode)</dt> |
| <dd>See <a href="API-CXX.html#dcraw_make_mem_thumb">LibRaw::dcraw_make_mem_thumb()</a></dd> |
| <dt>void libraw_dcraw_clear_mem(libraw_processed_image_t *);</dt> |
| <dd>See <a href="API-CXX.html#dcraw_clear_mem">LibRaw::dcraw_clear_mem()</a></dd> |
| <dd><br> |
| </dd> |
| </dl> |
| <p><a href="index.html">[back to Index]</a></p> |
| </body> |
| </html> |