#include <vector>
#include "HxTimer.h"
#include "HxDXMedia.h"
#include "HxImageSeq.h"
#include "HxExportByteData.h"
#include "HxMakeFromByteData.h"
Functions | |
void | showTimeInfo (bool theEnd) |
int | visitUsingSequence (HxString seqName) |
int | visitUsingDX (HxString seqName) |
int | testDisplayDX () |
void | showUsage (char *progName) |
int | main (int argc, char *argv[]) |
Variables | |
int | verbose = 0 |
bool | doDisplay = false |
bool | doStep = false |
int | nFrames |
int | width |
int | height |
HxTimer | t |
int | nr |
double | total |
double | estTime |
double | fps |
|
00038 { 00039 total += t.lastTime(); 00040 nr++; 00041 fps = nr / total; 00042 estTime = nFrames / fps; 00043 if (((verbose > 0) && (nr % verbose == 0)) || theEnd) { 00044 STD_COUT << "nr " << nr << " in " 00045 << t.lastTime() << " s, " << fps << " fps, " 00046 << "E " << total << " s, R " << estTime - total 00047 << " s" << STD_ENDL; 00048 } 00049 if (theEnd) 00050 return; 00051 if (doStep) { 00052 char c; 00053 STD_COUT << "Hit return - "; 00054 c = STD_CIN.get(); 00055 } 00056 } |
|
00060 { 00061 HxImageSeq seq(seqName, 0); 00062 nFrames = seq.nrFrames(); 00063 STD_COUT << "Frames : " << nFrames << STD_ENDL; 00064 width = seq.frameWidth(); 00065 height = seq.frameHeight(); 00066 STD_COUT << "Width x height = " << width << " x " << height << STD_ENDL; 00067 00068 void* dispH = 0; 00069 if (doDisplay) 00070 dispH = HxDXBeginDisplay(width, height); 00071 00072 nr = 0; 00073 total = 0; 00074 int nPix = width * height; 00075 unsigned char* charBuf = new unsigned char[nPix * 3]; 00076 int* intBuf = new int[nPix]; 00077 00078 for (HxImageSeqIter it = seq.begin() ; it != seq.end() ; it++) { 00079 t.start(); 00080 HxImageRep im = *it; 00081 // HxValue v = im.sum(); 00082 //STD_COUT << "v: " << v << STD_ENDL; 00083 00084 // for (int i=0 ; i<nPix ; i++) 00085 // buf[i] = 200; 00086 00087 //im.exportOp(charBuf); 00088 HxExportByteData(im, charBuf); 00089 00090 /* 00091 im.getRgbPixels2d(intBuf, HxString("Direct")); 00092 int* src = intBuf; 00093 unsigned char* dst = charBuf; 00094 int n = nPix; 00095 while(n--) { 00096 unsigned char r = (unsigned char)((*src & 0x00ff0000) >> 16); //r 00097 unsigned char g = (unsigned char)((*src & 0x0000ff00) >> 8); //g 00098 unsigned char b = (unsigned char)((*src & 0x000000ff) ); //b 00099 *dst++ = r; 00100 *dst++ = g; 00101 *dst++ = b; 00102 src++; 00103 } 00104 */ 00105 if (dispH) 00106 HxDXPutFrame(dispH, charBuf); 00107 t.stop(); 00108 showTimeInfo(false); 00109 } 00110 showTimeInfo(true); 00111 if (dispH != 0) 00112 HxDXEndDisplay(dispH); 00113 return 0; 00114 } |
|
00118 { 00119 void* handle = HxDXLoadVideo(seqName.c_str()); 00120 nFrames = HxDXGetLength(handle); 00121 STD_COUT << "Frames : " << nFrames << STD_ENDL; 00122 width = HxDXGetFrameWidth(handle); 00123 height = HxDXGetFrameHeight(handle); 00124 STD_COUT << "Width x height = " << width << " x " << height << STD_ENDL; 00125 HxSizes sizes = HxSizes(width, height, 1); 00126 00127 void* dispH = 0; 00128 if (doDisplay) 00129 dispH = HxDXBeginDisplay(width, height); 00130 00131 nr = 0; 00132 total = 0; 00133 int bufSize = width * height * 3; 00134 unsigned char* bufCopy = new unsigned char[bufSize]; 00135 00136 for (int it = 0 ; it < nFrames-1 ; it++) { 00137 t.start(); 00138 unsigned char* data = HxDXGetFrame(handle, it); 00139 //STD_COUT << "Got frame" << STD_ENDL; 00140 if (data) { 00141 // for (int i=0 ; i<bufSize ; i++) 00142 // bufCopy[i] = data[i]; 00143 HxImageRep im = HxMakeFromByteData(3, 2, sizes, data); 00144 // HxValue v = im.max(); 00145 HxExportByteData(im, bufCopy); 00146 if (dispH) 00147 HxDXPutFrame(dispH, bufCopy); 00148 // HxDXPutFrame(dispH, data); 00149 } 00150 t.stop(); 00151 showTimeInfo(false); 00152 } 00153 showTimeInfo(true); 00154 HxDXCloseVideo(handle); 00155 if (dispH != 0) 00156 HxDXEndDisplay(dispH); 00157 return 0; 00158 } |
|
00162 { 00163 int width = 320; 00164 int height = 200; 00165 HxSizes sizes(width, height, 1); 00166 void* dispH = HxDXBeginDisplay(width, height); 00167 HxTimer t; 00168 int nFrames = 1000; 00169 int nr = 0; 00170 double total = 0; 00171 double estTime; 00172 double fps; 00173 int bufSize = width * height * 4; 00174 unsigned char* buf = new unsigned char[bufSize]; 00175 for (int it = 0 ; it < nFrames ; it++) { 00176 t.start(); 00177 for (int i=0 ; i<bufSize ; i++) 00178 buf[i] = it % 250; 00179 HxDXPutFrame(dispH, buf); 00180 t.stop(); 00181 total += t.lastTime(); 00182 nr++; 00183 fps = nr / total; 00184 estTime = nFrames / fps; 00185 if (nr % 20 == 0) { 00186 STD_COUT << "fr " << nr << " (" << nFrames << ") in " 00187 << t.lastTime() << " s\t " << fps << " fps, " 00188 << "E " << total << " R " << estTime - total 00189 << STD_ENDL; 00190 } 00191 } 00192 HxDXEndDisplay(dispH); 00193 return 0; 00194 } |
|
|
|
00207 { 00208 HxString videoFile; 00209 bool useGenerator = false; 00210 bool useHxImageSeq = false; 00211 00212 int i = 1; 00213 while (i < argc) { 00214 if (HxString(argv[i]) == "-source") { 00215 videoFile = HxString(argv[i+1]); 00216 i++; 00217 } 00218 if (HxString(argv[i]) == "--generator") 00219 useGenerator = true; 00220 if (HxString(argv[i]) == "-verb") { 00221 verbose = atol(argv[i+1]); 00222 i++; 00223 } 00224 if (HxString(argv[i]) == "--useHxImageSeq") 00225 useHxImageSeq = true; 00226 if (HxString(argv[i]) == "--display") 00227 doDisplay = true; 00228 if (HxString(argv[i]) == "--step") 00229 doStep = true; 00230 if (HxString(argv[i]) == "--help") { 00231 showUsage(argv[0]); 00232 return 1; 00233 } 00234 i++; 00235 } 00236 00237 // need videoFile or generator 00238 if ((videoFile == "") && !useGenerator) { 00239 showUsage(argv[0]); 00240 return 1; 00241 } 00242 00243 if (useGenerator) 00244 STD_COUT << "Using generator" << STD_ENDL; 00245 else 00246 STD_COUT << "videoFile : " << videoFile << STD_ENDL; 00247 STD_COUT << "useHxImageSeq : " << useHxImageSeq << STD_ENDL; 00248 STD_COUT << "doDisplay : " << doDisplay << STD_ENDL; 00249 00250 if (useGenerator) 00251 return testDisplayDX(); 00252 if (useHxImageSeq) 00253 return visitUsingSequence(videoFile); 00254 return visitUsingDX(videoFile); 00255 } |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|