CLOgg.cpp

Go to the documentation of this file.
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 // CLOgg.cpp : Command line minimalist audio player.
00034 //
00035 
00036 #include "stdafx.h"
00037 #include <dshow.h>
00038 #include <windows.h>
00039 #include <iostream>
00040 using namespace std;
00041 
00042 int __cdecl _tmain(int argc, _TCHAR* argv[])
00043 {
00044         //
00045         IGraphBuilder* locGraphBuilder = NULL;
00046         IMediaControl* locMediaControl = NULL;
00047         HRESULT locHR = S_FALSE;;
00048         CoInitialize(NULL);
00049         locHR = CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER, IID_IGraphBuilder, (void **)&locGraphBuilder);
00050         locHR = locGraphBuilder->RenderFile(L"g:\\a.ogg", NULL);
00051 
00052         locHR = locGraphBuilder->QueryInterface(IID_IMediaControl, (void**)&locMediaControl);
00053 
00054 
00055         locHR = locMediaControl->Run();
00056 
00057         IMediaEvent* locMediaEvent = NULL;
00058         locHR = locGraphBuilder->QueryInterface(IID_IMediaEvent, (void**)&locMediaEvent);
00059         
00060         HANDLE  hEvent; 
00061         long    evCode, param1, param2;
00062         BOOLEAN bDone = FALSE;
00063         HRESULT hr = S_OK;
00064         hr = locMediaEvent->GetEventHandle((OAEVENT*)&hEvent);
00065         if (FAILED(hr))
00066         {
00067             /* Insert failure-handling code here. */
00068         }
00069         while(!bDone) 
00070         {
00071             if (WAIT_OBJECT_0 == WaitForSingleObject(hEvent, 100))
00072             { 
00073                         while (hr = locMediaEvent->GetEvent(&evCode, &param1, &param2, 0), SUCCEEDED(hr)) 
00074                         {
00075                     //printf("Event code: %#04x\n Params: %d, %d\n", evCode, param1, param2);
00076                                 cout<<"Event : "<<evCode<<" Params : "<<param1<<", "<<param2<<endl;
00077                                 locMediaEvent->FreeEventParams(evCode, param1, param2);
00078                                 bDone = (EC_COMPLETE == evCode);
00079                         }
00080                 }
00081         } 
00082 
00083         cout<<"Finished..."<<endl;
00084         int x;
00085         cin>>x;
00086         locMediaControl->Release();
00087         locGraphBuilder->Release();
00088         CoUninitialize();
00089 
00090         return 0;
00091 }
00092 

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