00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035 #include "stdafx.h"
00036 #include <libOOOgg/libOOOgg.h>
00037 #include <libOOOgg/dllstuff.h>
00038
00039 #include <iostream>
00040 #include <fstream>
00041
00042 unsigned long bytePos;
00043
00044
00045 bool pageCB(OggPage* inOggPage, void* ) {
00046 cout<<"Page Location : "<<bytePos;
00047 bytePos += inOggPage->pageSize();
00048 cout<<" to "<<bytePos<<endl;
00049 OggPacket* locPack = NULL;
00050 cout << inOggPage->header()->toString();
00051 cout << "Num Packets : " << inOggPage->numPackets() << endl;;
00052 for (unsigned long i = 0; i < inOggPage->numPackets(); i++) {
00053 locPack = inOggPage->getPacket(i);
00054 cout << "------ Packet " << i << " (" << locPack->packetSize() << " bytes) -------";
00055
00056 if (locPack->isContinuation()) {
00057 cout<<" ** CONT **";
00058 }
00059 if (locPack->isTruncated()) {
00060 cout<<" ** TRUNC **";
00061 }
00062 cout<<endl;
00063 cout << locPack->toPackDumpString();
00064 }
00065
00066 return true;
00067 }
00068
00069
00070 #ifdef WIN32
00071 int __cdecl _tmain(int argc, _TCHAR* argv[])
00072 #else
00073 int main (int argc, char * argv[])
00074 #endif
00075 {
00076
00077
00078
00079
00080
00081 bytePos = 0;
00082
00083 if (argc < 2) {
00084 cout<<"Usage : OOOggDump <filename>"<<endl;
00085 } else {
00086 OggDataBuffer testOggBuff;
00087
00088 testOggBuff.registerStaticCallback(&pageCB, NULL);
00089
00090 fstream testFile;
00091 testFile.open(argv[1], ios_base::in | ios_base::binary);
00092
00093 const unsigned short BUFF_SIZE = 8092;
00094 char* locBuff = new char[BUFF_SIZE];
00095 while (!testFile.eof()) {
00096 testFile.read(locBuff, BUFF_SIZE);
00097 unsigned long locBytesRead = testFile.gcount();
00098 testOggBuff.feed((const unsigned char*)locBuff, locBytesRead);
00099 }
00100
00101 delete[] locBuff;
00102 }
00103
00104 return 0;
00105 }
00106