private bool JPEGPostEncode()
{
if (m_scancount > 0)
{
// Need to emit a partial bufferload of downsampled data. Pad the data vertically.
for (int ci = 0; ci < m_compression.Num_components; ci++)
{
int vsamp = m_compression.Component_info[ci].V_samp_factor;
int row_width = m_compression.Component_info[ci].Width_in_blocks * JpegConstants.DCTSIZE * sizeof(byte);
for (int ypos = m_scancount * vsamp; ypos < JpegConstants.DCTSIZE * vsamp; ypos++)
Buffer.BlockCopy(m_ds_buffer[ci][ypos - 1], 0, m_ds_buffer[ci][ypos], 0, row_width);
}
int n = m_compression.Max_v_samp_factor * JpegConstants.DCTSIZE;
if (TIFFjpeg_write_raw_data(m_ds_buffer, n) != n)
return false;
}
return TIFFjpeg_finish_compress();
}