nvjpeg
copied
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Readme
Files and versions
90 lines
2.0 KiB
90 lines
2.0 KiB
#include <string>
|
|
#include <sys/timeb.h>
|
|
#include <sstream>
|
|
#include <fstream>
|
|
#include <iostream>
|
|
#include "nvjpeg_decoder.h"
|
|
|
|
|
|
bool ReadImage(const char* filename, std::string& imagedata) {
|
|
std::ifstream input(filename);
|
|
if (!(input.is_open())) {
|
|
std::cout << "Open file " << filename << " failed" << std::endl;
|
|
return false;
|
|
}
|
|
|
|
imagedata = std::string((std::istreambuf_iterator<char>(input)), std::istreambuf_iterator<char>());
|
|
return true;
|
|
}
|
|
|
|
int main(int argc, char *argv[]) {
|
|
const char* image_file = argv[1];
|
|
NVJpegDecoder::Decoder decoder;
|
|
if (!decoder.BindDevice(0)) {
|
|
std::cout << "Init Failed" << std::endl;
|
|
return -1;
|
|
}
|
|
|
|
// test deocde from bytes
|
|
{
|
|
std::string image_btyes;
|
|
if (!ReadImage(image_file, image_btyes)) {
|
|
return -1;
|
|
}
|
|
int count = 0;
|
|
timeb t1, t2;
|
|
ftime(&t1);
|
|
|
|
while (count < 1000) {
|
|
NVJpegDecoder::JpegImage image;
|
|
if (!decoder.Decode(image_btyes, image)) {
|
|
return -1;
|
|
}
|
|
count++;
|
|
}
|
|
ftime(&t2);
|
|
std::cout << "--------- " << t2.time * 1000 + t2.millitm - t1.time * 1000 - t1.millitm << std::endl;
|
|
}
|
|
|
|
// test decode from file
|
|
{
|
|
timeb t1, t2;
|
|
ftime(&t1);
|
|
{
|
|
int count = 0;
|
|
while (count < 1000) {
|
|
NVJpegDecoder::JpegImage image;
|
|
if (!decoder.Read(image_file, image)) {
|
|
return -1;
|
|
}
|
|
unsigned char* d = image.Cpu();
|
|
delete[] d;
|
|
count++;
|
|
}
|
|
}
|
|
ftime(&t2);
|
|
std::cout << "--------- " << t2.time * 1000 + t2.millitm - t1.time * 1000 - t1.millitm << std::endl;
|
|
}
|
|
|
|
decoder.BindDevice(1);
|
|
{
|
|
std::string image_btyes;
|
|
if (!ReadImage(image_file, image_btyes)) {
|
|
return -1;
|
|
}
|
|
int count = 0;
|
|
timeb t1, t2;
|
|
ftime(&t1);
|
|
|
|
while (count < 1000) {
|
|
NVJpegDecoder::JpegImage image;
|
|
if (!decoder.Decode(image_btyes, image)) {
|
|
return -1;
|
|
}
|
|
count++;
|
|
}
|
|
ftime(&t2);
|
|
std::cout << "--------- " << t2.time * 1000 + t2.millitm - t1.time * 1000 - t1.millitm << std::endl;
|
|
}
|
|
return 0;
|
|
}
|