Я пытаюсь использовать libjpeg для декомпрессии изображений, но мне нужно знать, как читаются данные. Чтение исходного кода jpeg_read_scanlines привело меня к некоторым указателям на функции, и я не могу найти, где они объявлены, оставляя меня в тупике.
Вот исходный код, о котором идет речь:
https://code.woboq.org/qt5/qtbase/src/3rdparty/libjpeg/src/jdapistd.c.html#263
GLOBAL(JDIMENSION)
jpeg_read_scanlines(j_decompress_ptr cinfo, JSAMPARRAY scanlines,
JDIMENSION max_lines)
{
JDIMENSION row_ctr;
if (cinfo->global_state != DSTATE_SCANNING)
ERREXIT1(cinfo, JERR_BAD_STATE, cinfo->global_state);
if (cinfo->output_scanline >= cinfo->output_height) {
WARNMS(cinfo, JWRN_TOO_MUCH_DATA);
return 0;
}
/* Call progress monitor hook if present */
if (cinfo->progress != NULL) {
cinfo->progress->pass_counter = (long)cinfo->output_scanline;
cinfo->progress->pass_limit = (long)cinfo->output_height;
(*cinfo->progress->progress_monitor) ((j_common_ptr)cinfo);
}
/* Process some data */
row_ctr = 0;
// This is the function pointer that processes the data.
// I cannot seem to find where this is initialized and what it does.
(*cinfo->main->process_data) (cinfo, scanlines, &row_ctr, max_lines);
cinfo->output_scanline += row_ctr;
return row_ctr;
}
Если кто-нибудь может указать мне правильное направление, я был бы очень признателен за помощь! Спасибо!