how to compress the whole image on one run (libjpeg IJG)?
since I loose the control of my application, as soon as I start the compression/decompression process of the incoming image frame (from the usb camera), I tried to implement the compression in another way than standard. Normally, there is a while loop, where the image is compressed row for row. Maybe this while loop stucks my programm. Therefore I tried to do the compression in one step by the following code:
JSAMPROW row_pointer; /* pointer to a single row */
int row_stride; /* physical row width in buffer */
row_stride = m_compressInfo.image_width * 3; /* JSAMPLEs per row in image_buffer */
unsigned char* copyPointer =(unsigned char*) m_pcImageMemory;
// how many rows per run should be compressed
unsigned int howManyRows = m_compressInfo.image_height / 48;
// compress the raw data row by row
while (m_compressInfo.next_scanline < m_compressInfo.image_height)
// define the next row of raw data
row_pointer = copyPointer;
//jpeg_write_scanlines(&m_compressInfo, row_pointer, 1);
//copyPointer += row_stride;
jpeg_write_scanlines(&m_compressInfo, row_pointer, howManyRows);
copyPointer += row_stride*howManyRows;
Even, if I reduce the number of rows to be compressed to 10 rows (image_height = 480 px), then there is an exception however. The exception occures in the function "null_convert()" within the file jccolor.c.
Could you tell me please, what is my mistake and how to compress more than 1 row in one step?