История изменений
Исправление I-Love-Microsoft, (текущая версия) :
Вот код, на всякий случай выложу:
#include <turbojpeg.h>
bool tjpegt::benchmark_turbojpeg()
{
QTime bench_timer;
QFile jpeg_file;
jpeg_file.setFileName("test.jpg");
if(!jpeg_file.open(QIODevice::ReadOnly)) return false;
QByteArray jpeg_data = jpeg_file.readAll();
jpeg_file.close();
tjhandle jpeg = tjInitDecompress();
int jpeg_width, jpeg_height, jpeg_jpegsubsamp;
tjDecompressHeader2(jpeg, (unsigned char*)jpeg_data.data(), jpeg_data.size(), &jpeg_width, &jpeg_height, &jpeg_jpegsubsamp);
qDebug() << "jpeg width=" << jpeg_width << "height=" << jpeg_height << "OK";
int image_size = jpeg_width*jpeg_height*3;
unsigned char *image_buffer = new unsigned char [image_size];
bench_timer.start();
int bench_count = 35;
for(int i = 0; i < bench_count; i++)
{
int jpeg_result = tjDecompress2(jpeg, (unsigned char*)jpeg_data.data(), jpeg_data.size(), image_buffer, jpeg_width, jpeg_width*3, jpeg_height, TJPF_RGB, 0);
qDebug() << "frame=" << (i + 1) << "jpeg_result=" << jpeg_result << (tjGetErrorStr());
}
qreal elapsed_s = (qreal) bench_timer.elapsed() / 1000;
qreal fps = ((qreal) bench_count / elapsed_s);
qDebug() << "turbojpeg FPS=" << fps << "time(s)=" << elapsed_s;
delete [] image_buffer;
return true;
}
фактически всего две простые функции :) но поддерживается и libjpeg API, я может чего не понял но мне он показался архаичным или не то смотрел, а новый turbojpeg API - то что надо, ибо просто
Исходная версия I-Love-Microsoft, :
Вот код, на всякий случай выложу:
#include <turbojpeg.h>
bool tjpegt::benchmark_turbojpeg()
{
QTime bench_timer;
QFile jpeg_file;
jpeg_file.setFileName("test.jpg");
if(!jpeg_file.open(QIODevice::ReadOnly)) return false;
QByteArray jpeg_data = jpeg_file.readAll();
jpeg_file.close();
tjhandle jpeg = tjInitDecompress();
int jpeg_width, jpeg_height, jpeg_jpegsubsamp;
tjDecompressHeader2(jpeg, (unsigned char*)jpeg_data.data(), jpeg_data.size(), &jpeg_width, &jpeg_height, &jpeg_jpegsubsamp);
qDebug() << "jpeg width=" << jpeg_width << "height=" << jpeg_height << "OK";
int image_size = jpeg_width*jpeg_height*3;
unsigned char *image_buffer = new unsigned char [image_size];
bench_timer.start();
int bench_count = 35;
for(int i = 0; i < bench_count; i++)
{
int jpeg_result = tjDecompress2(jpeg, (unsigned char*)jpeg_data.data(), jpeg_data.size(), image_buffer, jpeg_width, jpeg_width*3, jpeg_height, TJPF_RGB, 0);
qDebug() << "frame=" << (i + 1) << "jpeg_result=" << jpeg_result << (tjGetErrorStr());
}
qreal elapsed_s = (qreal) bench_timer.elapsed() / 1000;
qreal fps = ((qreal) bench_count / elapsed_s);
qDebug() << "turbojpeg FPS=" << fps << "time(s)=" << elapsed_s;
delete [] image_buffer;
return true;
}