Нужно быстро загрузить и показать Ne количество JPEG файлов. Приемлемым резултатом (для меня) это 4-5 файлов по 4MB/10Mpx в секунду на Core2 Duo E2140 ...
опробовал — стандартный GDI+ Bitmap::FromFile(), весьма тормознуто

— 50 сек на 100 циклов
libjpeg и cximage — около 30 сек на 100 циклов
Acdsee показывает в status bar'е не более 0.20 сек на файл, т.е. максимум 20 сек на 100 циклов — не знаю на сколько это правда, но субъективно и в самом деле весьма шустро
хотелось бы получить результат как в Acdsee
И на тему biCompression=BI_JPEG (про который MSDN пишут что вроде как работает в XP). Хотел проверить на каком же этапе так жутко тормозит родной виндовый GDI. Хотел сам загрузить JPG content из файлы и скормить в CreateDIBSection(biCompression = BI_RGB)->SetBitmapBits() но для этого нужно как-то добыть из файла JPG заголовок чтобы вызвать CreateDIBSection() а затем и сам JPG stream для SetBitmapBits() ... ничего из примеров как это сделать не нашёл ни в MSDN ни в гугле ни здесь
Да и вообще интересно будет ли выводиться на экран DIB с BI_JPEG вот таким способом или нет
void CChildView::OnPaint()
{
CPaintDC dc(this);
CDC bmDC;
bmDC.CreateCompatibleDC(&dc);
SelectObject(bmDC.m_hDC, m_hbm); // <-- где m_hbm это DIB c biCompression=BI_JPEG
dc.StretchBlt(100, 100, 800, 600, &m_bmDC, 500, 500, 400, 300, SRCCOPY);
}
ЗЫ:
Bitmap* bmp = Bitmap::FromFile(L"C:\\My.jpg");
HBITMAP hbm;
DIBSECTION dib;
bmp->GetHBITMAP(c, &hbm);
::GetObject(hbm, sizeof(DIBSECTION), &dib);
и вот здесь в dib.dsBmih.biCompression уже лежит 0 (он же BI_RGB) а не BI_JPEG.