OOOggValidate.cpp

Go to the documentation of this file.
00001 // OOOggValidate.cpp : Defines the entry point for the console application.
00002 //
00003 
00004 #include "stdafx.h"
00005 #include "OggValidationState.h"
00006 #include <libOOOgg/libOOOgg.h>
00007 #include <fstream>
00008 using namespace std;
00009 
00010 
00011 
00012 
00013 #ifdef WIN32
00014 int __cdecl _tmain(int argc, _TCHAR* argv[])
00015 #else
00016 int main(int argc, char * argv[])
00017 #endif
00018 {
00019                 //This program just dumps the pages out of a file in ogg format.
00020         // Currently does not error checking. Check your command line carefully !
00021         // USAGE :: OOOggValidate <OggFile>
00022         //
00023         //bytePos = 0;
00024 
00025 
00026 
00027         if (argc < 2) {
00028                 cout<<"Usage : OOOggValidate <filename>"<<endl;
00029         } else {
00030                 OggValidationState testValidator;
00031                 OggDataBuffer testOggBuff;
00032                 testOggBuff.registerVirtualCallback(&testValidator);
00033 
00034         
00035                 const int BUFF_SIZE = 8092;
00036         
00037                 fstream testFile;
00038                 testFile.open(argv[1], ios_base::in | ios_base::binary);
00039                 char* locBuff = new char[BUFF_SIZE];
00040                 OggDataBuffer::eFeedResult locResult;
00041                 while (!testFile.eof()) {
00042                         testFile.read(locBuff, BUFF_SIZE);
00043                         unsigned long locBytesRead = testFile.gcount();
00044                 locResult = testOggBuff.feed((const unsigned char*)locBuff, locBytesRead);
00045                         switch(locResult) {
00046                                 case OggValidationState::OVE_OK:
00047                                         break;
00048                                 
00049                                 case OggValidationState::OVE_STRUCTURE_VERSION_NOT_ZERO:
00050                                         testValidator.error_write(OggValidationState::OVE_STRUCTURE_VERSION_NOT_ZERO, NULL , NULL);
00051                                         return OggValidationState::OVE_STRUCTURE_VERSION_NOT_ZERO;
00052                                 
00053                                 case OggValidationState::OVE_MORE_THAN_ONE_BOS:
00054                                         testValidator.error_write(OggValidationState::OVE_MORE_THAN_ONE_BOS, NULL, NULL);
00055                                         return OggValidationState::OVE_MORE_THAN_ONE_BOS;
00056                                 
00057                                 case OggValidationState::OVE_MORE_THAN_ONE_EOS:
00058                                         testValidator.error_write(OggValidationState::OVE_MORE_THAN_ONE_EOS, NULL, NULL);
00059                                         return OggValidationState::OVE_MORE_THAN_ONE_EOS;
00060                                         
00061                                 case OggValidationState::OVE_BOS_PAGE_NOT_AT_START:
00062                                         testValidator.error_write(OggValidationState::OVE_BOS_PAGE_NOT_AT_START, NULL, NULL);
00063                                         return OggValidationState::OVE_BOS_PAGE_NOT_AT_START;
00064 
00065                                 case OggValidationState::OVE_EOS_BEFORE_BOS:
00066                                         testValidator.error_write(OggValidationState::OVE_EOS_BEFORE_BOS, NULL, NULL);
00067                                         return OggValidationState::OVE_EOS_BEFORE_BOS;
00068                                 default:
00069                                         testValidator.error_write(locResult, NULL, NULL);
00070                                         return locResult;
00071 
00072                         }
00073                 }
00074 
00075                 if (testValidator.isValid()) {
00076                         cout<<"File was valid."<<endl;
00077                 } else {
00078                         cout<<"File is invalid."<<endl;
00079                 }
00080                 delete[] locBuff;
00081         }
00082 
00083         
00084         return 0;
00085 }
00086 

Generated on Tue Feb 15 14:54:24 2005 for oggdsf by  doxygen 1.3.9