00001 //=========================================================================== 00002 //Copyright (C) 2004 Zentaro Kavanagh 00003 // 00004 //Redistribution and use in source and binary forms, with or without 00005 //modification, are permitted provided that the following conditions 00006 //are met: 00007 // 00008 //- Redistributions of source code must retain the above copyright 00009 // notice, this list of conditions and the following disclaimer. 00010 // 00011 //- Redistributions in binary form must reproduce the above copyright 00012 // notice, this list of conditions and the following disclaimer in the 00013 // documentation and/or other materials provided with the distribution. 00014 // 00015 //- Neither the name of Zentaro Kavanagh nor the names of contributors 00016 // may be used to endorse or promote products derived from this software 00017 // without specific prior written permission. 00018 // 00019 //THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 00020 //``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 00021 //LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A 00022 //PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE ORGANISATION OR 00023 //CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 00024 //EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 00025 //PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 00026 //PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 00027 //LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 00028 //NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 00029 //SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 00030 //=========================================================================== 00031 00032 00033 // OOOggCommentDump.cpp : Defines the entry point for the console application. 00034 // 00035 00036 #include "stdafx.h" 00037 #include <libOOOgg/libOOOgg.h> 00038 #include <libOOOgg/dllstuff.h> 00039 #include <VorbisComments.h> 00040 #include "FileComments.h" 00041 #include "StreamCommentInfo.h" 00042 00043 #include <iostream> 00044 00045 00046 #include <fstream> 00047 00049 //unsigned long bytePos; 00050 //VorbisComments gComments; 00051 // 00052 //bool pageCB(OggPage* inOggPage) { 00053 // 00054 // for (unsigned long i = 0; i < inOggPage->numPackets(); i++) { 00055 // OggPacket* locPacket = NULL; 00056 // locPacket = inOggPage->getPacket(i); 00057 // if (strncmp((const char*)locPacket->packetData(), "\003vorbis", 7) == 0) { 00058 // //Comment Packet 00059 // 00060 // bool locIsOK = gComments.parseOggPacket(locPacket, 7); 00061 // cout<<"Vorbis Comments"<<endl; 00062 // cout<<gComments.toString(); 00063 // } else if ((strncmp((char*)locPacket->packetData(), "\201theora", 7)) == 0) { 00064 // bool locIsOK = gComments.parseOggPacket(locPacket, 7); 00065 // cout<<"Theora Comments"<<endl; 00066 // cout<<gComments.toString(); 00067 // 00068 // } 00069 // } 00070 // 00071 // return true; 00072 //} 00073 00074 #ifdef WIN32 00075 int __cdecl _tmain(int argc, _TCHAR* argv[]) 00076 #else 00077 int main(int argc, char * argv[]) 00078 #endif 00079 { 00080 00081 00082 //This program just dumps the pages out of a file in ogg format. 00083 // Currently does not error checking. Check your command line carefully ! 00084 // USAGE :: OOOggCommentDump <OggFile> 00085 // 00086 00087 00088 00089 if (argc < 2) { 00090 cout<<"Usage : OOOggCommentDump <filename>"<<endl; 00091 } else { 00092 00093 FileComments locFileComments; 00094 StreamCommentInfo* locStreamInfo = NULL; 00095 locFileComments.loadFile(argv[1]); 00096 for (unsigned long i = 0; i < locFileComments.streamCount(); i++) { 00097 locStreamInfo = locFileComments.getStreamComment(i); 00098 00099 cout<<"Stream "<<locStreamInfo->majorStreamNo()<<":"<<locStreamInfo->minorStreamNo()<<endl; 00100 cout<<"Starts "<<locStreamInfo->pageStart()<<endl; 00101 cout<<locStreamInfo->comments()->toString()<<endl<<endl; 00102 00103 } 00104 } 00105 00106 00107 return 0; 00108 }