Initial
This commit is contained in:
107
avifile/MAIN.CPP
Normal file
107
avifile/MAIN.CPP
Normal file
@@ -0,0 +1,107 @@
|
||||
#include <common/file.hpp>
|
||||
#include <common/pathfnd.hpp>
|
||||
#include <common/finddata.hpp>
|
||||
#include <common/qsort.hpp>
|
||||
#include <common/profile.hpp>
|
||||
#include <avifile/AVIGenerator.hpp>
|
||||
#include <avifile/fileinfo.hpp>
|
||||
#include <avifile/params.hpp>
|
||||
#include <vidcap/vidcap.hpp>
|
||||
|
||||
bool getFileList(const String &strPathFileSpec,Block<FileInfo> &fileList);
|
||||
|
||||
bool getFileList(const String &strPathFileSpec,Block<String> &pathFileNames)
|
||||
{
|
||||
QuickSort<FileInfo> sorter;
|
||||
Block<FileInfo> fileList;
|
||||
String strPathDirectory;
|
||||
FindData findData;
|
||||
|
||||
pathFileNames.remove();
|
||||
strPathDirectory=strPathFileSpec;
|
||||
Profile::makeDirectoryName(strPathDirectory);
|
||||
strPathDirectory+="\\";
|
||||
if(findData.findFirst(strPathFileSpec))
|
||||
{
|
||||
fileList.insert(&FileInfo());
|
||||
FileInfo &fileInfo=fileList[fileList.size()-1];
|
||||
fileInfo.setFileName(strPathDirectory+findData.fileName());
|
||||
fileInfo.setCreationTime(findData.creationTime());
|
||||
while(findData.findNext())
|
||||
{
|
||||
fileList.insert(&FileInfo());
|
||||
FileInfo &fileInfo=fileList[fileList.size()-1];
|
||||
fileInfo.setFileName(strPathDirectory+findData.fileName());
|
||||
fileInfo.setCreationTime(findData.creationTime());
|
||||
}
|
||||
}
|
||||
sorter.sortItems(fileList);
|
||||
for(int index=0;index<fileList.size();index++)pathFileNames.insert(&String(fileList[index].getPathFileName()));
|
||||
return pathFileNames.size()?true:false;
|
||||
}
|
||||
|
||||
// fcchandlers "msvc","cvid"
|
||||
|
||||
int main(int argc,char **argv)
|
||||
{
|
||||
String keyAVIFileName("avifilename");
|
||||
String keyPathFileSpec("pathfilespec");
|
||||
String keyResampleSpec("resample");
|
||||
String keyFCCHandler("fcchandler");
|
||||
String keyRate("rate");
|
||||
String keyScale("scale");
|
||||
String keyQuality("quality");
|
||||
AVIGenerator aviGenerator;
|
||||
Block<String> fileList;
|
||||
Params params;
|
||||
|
||||
params.setArgs(argc,argv);
|
||||
if(!params.contains(keyAVIFileName)||!params.contains(keyPathFileSpec))
|
||||
{
|
||||
::printf("USAGE: avifile avifilename=<avifilename> pathfilespec=<pathfilespec>\n");
|
||||
::printf(" resample=<width,height> fcchandler=<fcchandler> rate=<rate> \n");
|
||||
::printf(" scale=<scale> quality=<quality>\n");
|
||||
::printf("(ie) avifile avifilename=d:\\capture.avi pathfilespec=c:\\images\\*.jpg resample=320,200\n");
|
||||
::printf("(ie) avifile avifilename=d:\\capture.avi pathfilespec=c:\\images\\*.jpg fcchandler=cvid\n");
|
||||
::printf("scale=time scale.\n");
|
||||
::printf("rate=rate in integer format.\n");
|
||||
::printf("rate/scale=samples per second.\n");
|
||||
::printf("quality=integer (1-10000).\n");
|
||||
return 1;
|
||||
}
|
||||
params.showParams();
|
||||
if(!getFileList(params.getParam(keyPathFileSpec),fileList))
|
||||
{
|
||||
::printf("Failed to retrieve file list from %s\n",params.getParam(keyPathFileSpec).str());
|
||||
return 1;
|
||||
}
|
||||
if(params.contains(keyResampleSpec))
|
||||
{
|
||||
String strResample=params.getParam(keyResampleSpec);
|
||||
aviGenerator.setResample(Point(strResample.betweenString(0,',').toInt(),strResample.betweenString(',',0).toInt()));
|
||||
}
|
||||
if(params.contains(keyRate))
|
||||
{
|
||||
aviGenerator.setRate(params.getParam(keyRate).toInt());
|
||||
}
|
||||
if(params.contains(keyScale))
|
||||
{
|
||||
aviGenerator.setScale(params.getParam(keyScale).toInt());
|
||||
}
|
||||
if(params.contains(keyQuality))
|
||||
{
|
||||
aviGenerator.setQuality(params.getParam(keyQuality).toInt());
|
||||
}
|
||||
if(params.contains(keyFCCHandler))
|
||||
{
|
||||
aviGenerator.createAVIFile(params.getParam(keyAVIFileName),FOURCC(params.getParam(keyFCCHandler)),fileList);
|
||||
}
|
||||
else aviGenerator.createAVIFile(params.getParam(keyAVIFileName),fileList);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user