LINUX.ORG.RU

История изменений

Исправление 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;
}