Infognition forum
March 13, 2010, 02:49:05 AM *
Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length
News: Last GraphEditPlus version: 1.4.0   Last Video Enhancer version: 1.9.3
 
   Home   Help Search Login Register  
Pages: [1]
  Print  
Author Topic: Application Code Help  (Read 523 times)
IndyJoe
Newbie
*

Karma: +0/-0
Posts: 2


View Profile
« on: June 22, 2009, 11:02:00 PM »

I tried to create an application using the code generator, but I'm getting 60+ errors when I try to build the app. I've never tried to create a program using C++, so I'm sure I'm doing something wrong. I'm trying to create an app that will automatically run a GraphEditPlus file, so maybe this wouldn't work regardless. If anyone can help, I would appreciate it. Here's my code:

#include "stdafx.h"
#include <DShow.h>
#include <initguid.h>
#include <dvdmedia.h>

BOOL hrcheck (HRESULT hr, TCHAR* errtext)
{
   if (hr >=S_OK)
      return FALSE;
   TCHAR szErr[MAX_ERROR_TEXT_LEN];
   DWORD res = AMGetErrorText (hr, szErr, MAX_ERROR_TEXT_LEN);
   if (res)
      printf("Error %x: %s\n%s\n",hr, errtext,szErr);
   else
      printf("Error %x: %s\n", hr, errtext);
   return TRUE;
}

//change this macro to fit your style of error handling
#define CHECK_HR(hr, msg) if (hrcheck(hr, msg)) return hr;


CComPtr<IBaseFilter> CreateFilter(WCHAR* displayName)
{
   CComPtr<IBindCtx> pBindCtx;
   HRESULT hr = CreateBindCtx(0, &pBindCtx);
   if (hrcheck(hr, "Can't create bind context"))
      return NULL;

   ULONG chEaten = 0;
   CComPtr<IMoniker> pMoniker;
   hr = MkParseDisplayName(pBindCtx, displayName, &chEaten, &pMoniker);
   if (hrcheck(hr, "Can't create parse display name of the filter"))
      return NULL;
   
   CComPtr<IBaseFilter> pFilter;
   if (SUCCEEDED(hr))
   {
      hr = pMoniker->BindToObject (pBindCtx, NULL, IID_IBaseFilter, (void**)&pFilter);
      if (hrcheck(hr, "Can't bind moniker to filter object"))
         return NULL;
   }
   return pFilter;
}

CComPtr<IPin> GetPin(IBaseFilter *pFilter, LPCOLESTR pinname)
{
   CComPtr<IEnumPins>    pEnum;
   CComPtr<IPin>      pPin;

   HRESULT hr = pFilter->EnumPins(&pEnum);
   if (hrcheck(hr, "Can't enumerate pins."))
      return NULL;

   while(pEnum->Next(1, &pPin, 0) == S_OK)
   {
      PIN_INFO pinfo;
      pPin->QueryPinInfo(&pinfo);
      BOOL found = !wcsicmp(pinname, pinfo.achName);
      if (pinfo.pFilter) pinfo.pFilter->Release();
      if (found)
         return pPin;
      pPin.Release();
   }
   printf("Pin not found!\n");
   return NULL;
}


// {A753A1EC-973E-4718-AF8E-A3F554D45C44}
DEFINE_GUID(CLSID_AC3Filter,
0xA753A1EC, 0x973E, 0x4718, 0xAF, 0x8E, 0xA3, 0xF5, 0x54, 0xD4, 0x5C, 0x44); //ac3filter.ax



HRESULT BuildGraph(IGraphBuilder *pGraph)
{
   HRESULT hr = S_OK;

   //graph builder
   CComPtr<ICaptureGraphBuilder2> pBuilder;
   hr = pBuilder.CoCreateInstance(CLSID_CaptureGraphBuilder2);
   CHECK_HR(hr, "Can't create Capture Graph Builder");
   hr = pBuilder->SetFiltergraph(pGraph);
   CHECK_HR(hr, "Can't SetFiltergraph");

   //add Virtual Cable 1
   CComPtr<IBaseFilter> pVirtualCable1 = CreateFilter(L"@device:cm:(33D9A762-90C8-11D0-BD43-00A0C911CE86}\\Virtual Cable 1");
   hr = pGraph->AddFilter(pVirtualCable1, L"Virtual Cable 1");
   CHECK_HR(hr, "Can't add Virtual Cable 1 to graph");


   //add AC3FILTER
   CComPtr<IBaseFilter> pAC3FILTER;
   hr = pAC3Filter.CoCreateInstance(CLSID_AC3Filter);
   CHECK_HR(hr, "Can't create AC3Filter");
   hr = pGraph->AddFilter(pAC3Filter, L"AC3Filter");
   CHECK_HR(hr, "Can't add AC3Filter to graph");


   //add DirectSound: Creative SB Extigy
   CComPtr<IBaseFilter> pDirectSoundCreativeSBExtigy = CreateFilter(L"@device:cm:(E0F158E1-CB04-11D0-BD4E-00A0C911CE86}\\DirectSound: Creative SB Extigy:);
   hr = pGraph->AddFilter(pDirectSoundCreativeSBExtigy, L"DirectSound: Creative SB Extigy");
   CHECK_HR(hr, "Can't add DirectSound: Creative SB Extigy to graph");


   //connect Virtual Cable 1 and AC3Filter
   hr = pGraph->ConnectDirect(GetPin(pVirtualCable1, L"Capture"), GetPin(pAC3Filter, L"In"), NULL);
   CHECK_HR(hr, "Can't connect Virtual Cable 1 and AC3Filter");


   //connect AC3Filter and DirectSound: Creative SB Extigy
   hr = pGraph->ConnectDirect(GetPin(pAC3Filter, L"Out"), GetPin(pDirectSoundCreativeSBExtigy, L"Audio Input pin (rendered)"), NULL);


   return S_OK;
}


int main(int argc, char* argv[])
(
   USES_CONVERSION;
   CoInitialize(NULL);
   CComPtr<IGraphBuilder> graph;
   graph.CoCreateInstance(CLSID_FilterGraph);

   if (argc<3) return 0;
   printf("Building graph...\n");
   HRESULT hr = BuildGraph(graph, T2W(argv[1]), T2W(argv[2]));
   if (hr==S_OK) {
      printf("Running");
      CComQIPtr<IMediaControl, &IID_IMediaControl> mediaControl(graph);
      hr = mediaControl->Run();
      CHECK_HR(hr, "Can't run the graph");
      CComQIPtr<IMediaEvent, &IID_IMediaEvent> mediaEvent (graph);
      BOOL stop = FALSE;
      while(!stop)
      {
         long ev=0, p1=0, p2=0;
         Sleep(500);
         printf(".");
         if (mediaEvent->GetEvent(&ev, &p1, &p2, 0)==S_OK)
         {
            printf("Done!\n");
            stop = TRUE;
         }
         else
         if (ev == EC_ERRORABORT)
         {
            printf("An error occured: HRESULT=%X\N", P1);
            mediaControl->Stop();
            stop = TRUE;
         }
         mediaEvent->FreeEventParams(ev, p1, p2);
      }
   }
}      
CoUninitialize();
return 0;
}

Logged
Dee Mon
Administrator
Full Member
*****

Karma: +7/-0
Posts: 246



View Profile WWW
« Reply #1 on: June 23, 2009, 06:26:35 AM »

You should have quote some errors instead of the code.
Most probably you don't have DirectShow headers installed or configured.
You need to install Windows SDK and then configure paths in your C++ project.
Logged
IndyJoe
Newbie
*

Karma: +0/-0
Posts: 2


View Profile
« Reply #2 on: June 24, 2009, 12:51:26 AM »

I updated the graph, and updated the code. I also included the SDK directories and libraries for the project. I wasn't sure how to inlude the directshow headers? Here are the errors that I'm getting:

Error   1   error C2143: syntax error : missing ';' before '<'   c:\documents and settings\mercedes\my documents\visual studio 2008\projects\audio2\audio2\audio2.cpp   28
Error   2   error C4430: missing type specifier - int assumed. Note: C++ does not support default-int   c:\documents and settings\mercedes\my documents\visual studio 2008\projects\audio2\audio2\audio2.cpp   28
Error   3   error C2143: syntax error : missing ';' before '{'   c:\documents and settings\mercedes\my documents\visual studio 2008\projects\audio2\audio2\audio2.cpp   29
Error   4   error C2447: '{' : missing function header (old-style formal list?)   c:\documents and settings\mercedes\my documents\visual studio 2008\projects\audio2\audio2\audio2.cpp   29
Error   5   error C2275: 'ICaptureGraphBuilder2' : illegal use of this type as an expression   c:\documents and settings\mercedes\my documents\visual studio 2008\projects\audio2\audio2\audio2.cpp   59
Error   6   error C2065: 'pBuilder' : undeclared identifier   c:\documents and settings\mercedes\my documents\visual studio 2008\projects\audio2\audio2\audio2.cpp   59
Error   7   error C2065: 'pBuilder' : undeclared identifier   c:\documents and settings\mercedes\my documents\visual studio 2008\projects\audio2\audio2\audio2.cpp   60
Error   8   error C2228: left of '.CoCreateInstance' must have class/struct/union   c:\documents and settings\mercedes\my documents\visual studio 2008\projects\audio2\audio2\audio2.cpp   60
Error   9   error C2664: 'hrcheck' : cannot convert parameter 2 from 'const char [35]' to 'TCHAR *'   c:\documents and settings\mercedes\my documents\visual studio 2008\projects\audio2\audio2\audio2.cpp   61
Error   10   error C2065: 'pBuilder' : undeclared identifier   c:\documents and settings\mercedes\my documents\visual studio 2008\projects\audio2\audio2\audio2.cpp   62
Error   11   error C2227: left of '->SetFiltergraph' must point to class/struct/union/generic type   c:\documents and settings\mercedes\my documents\visual studio 2008\projects\audio2\audio2\audio2.cpp   62
Error   12   error C2664: 'hrcheck' : cannot convert parameter 2 from 'const char [21]' to 'TCHAR *'   c:\documents and settings\mercedes\my documents\visual studio 2008\projects\audio2\audio2\audio2.cpp   63
Error   13   error C2275: 'IBaseFilter' : illegal use of this type as an expression   c:\documents and settings\mercedes\my documents\visual studio 2008\projects\audio2\audio2\audio2.cpp   66
Error   14   error C2065: 'pVirtualCable1' : undeclared identifier   c:\documents and settings\mercedes\my documents\visual studio 2008\projects\audio2\audio2\audio2.cpp   66
Error   15   error C2065: 'pVirtualCable1' : undeclared identifier   c:\documents and settings\mercedes\my documents\visual studio 2008\projects\audio2\audio2\audio2.cpp   67
Error   16   error C2228: left of '.CoCreateInstance' must have class/struct/union   c:\documents and settings\mercedes\my documents\visual studio 2008\projects\audio2\audio2\audio2.cpp   67
Error   17   error C2664: 'hrcheck' : cannot convert parameter 2 from 'const char [29]' to 'TCHAR *'   c:\documents and settings\mercedes\my documents\visual studio 2008\projects\audio2\audio2\audio2.cpp   68
Error   18   error C2065: 'pVirtualCable1' : undeclared identifier   c:\documents and settings\mercedes\my documents\visual studio 2008\projects\audio2\audio2\audio2.cpp   69
Error   19   error C2664: 'hrcheck' : cannot convert parameter 2 from 'const char [35]' to 'TCHAR *'   c:\documents and settings\mercedes\my documents\visual studio 2008\projects\audio2\audio2\audio2.cpp   70
Error   20   error C2275: 'IBaseFilter' : illegal use of this type as an expression   c:\documents and settings\mercedes\my documents\visual studio 2008\projects\audio2\audio2\audio2.cpp   74
Error   21   error C2065: 'pAC3Filter' : undeclared identifier   c:\documents and settings\mercedes\my documents\visual studio 2008\projects\audio2\audio2\audio2.cpp   74
Error   22   error C2065: 'pAC3Filter' : undeclared identifier   c:\documents and settings\mercedes\my documents\visual studio 2008\projects\audio2\audio2\audio2.cpp   75
Error   23   error C2228: left of '.CoCreateInstance' must have class/struct/union   c:\documents and settings\mercedes\my documents\visual studio 2008\projects\audio2\audio2\audio2.cpp   75
Error   24   error C2664: 'hrcheck' : cannot convert parameter 2 from 'const char [23]' to 'TCHAR *'   c:\documents and settings\mercedes\my documents\visual studio 2008\projects\audio2\audio2\audio2.cpp   76
Error   25   error C2065: 'pAC3Filter' : undeclared identifier   c:\documents and settings\mercedes\my documents\visual studio 2008\projects\audio2\audio2\audio2.cpp   77
Error   26   error C2664: 'hrcheck' : cannot convert parameter 2 from 'const char [29]' to 'TCHAR *'   c:\documents and settings\mercedes\my documents\visual studio 2008\projects\audio2\audio2\audio2.cpp   78
Error   27   error C2275: 'IBaseFilter' : illegal use of this type as an expression   c:\documents and settings\mercedes\my documents\visual studio 2008\projects\audio2\audio2\audio2.cpp   82
Error   28   error C2065: 'pDirectSoundCreativeSBExtigy' : undeclared identifier   c:\documents and settings\mercedes\my documents\visual studio 2008\projects\audio2\audio2\audio2.cpp   82
Error   29   error C2065: 'pDirectSoundCreativeSBExtigy' : undeclared identifier   c:\documents and settings\mercedes\my documents\visual studio 2008\projects\audio2\audio2\audio2.cpp   83
Error   30   error C2228: left of '.CoCreateInstance' must have class/struct/union   c:\documents and settings\mercedes\my documents\visual studio 2008\projects\audio2\audio2\audio2.cpp   83
Error   31   error C2664: 'hrcheck' : cannot convert parameter 2 from 'const char [45]' to 'TCHAR *'   c:\documents and settings\mercedes\my documents\visual studio 2008\projects\audio2\audio2\audio2.cpp   84
Error   32   error C2065: 'pDirectSoundCreativeSBExtigy' : undeclared identifier   c:\documents and settings\mercedes\my documents\visual studio 2008\projects\audio2\audio2\audio2.cpp   85
Error   33   error C2664: 'hrcheck' : cannot convert parameter 2 from 'const char [51]' to 'TCHAR *'   c:\documents and settings\mercedes\my documents\visual studio 2008\projects\audio2\audio2\audio2.cpp   86
Error   34   error C2065: 'pVirtualCable1' : undeclared identifier   c:\documents and settings\mercedes\my documents\visual studio 2008\projects\audio2\audio2\audio2.cpp   90
Error   35   error C2065: 'pAC3Filter' : undeclared identifier   c:\documents and settings\mercedes\my documents\visual studio 2008\projects\audio2\audio2\audio2.cpp   90
Error   36   error C3861: 'GetPin': identifier not found   c:\documents and settings\mercedes\my documents\visual studio 2008\projects\audio2\audio2\audio2.cpp   90
Error   37   error C3861: 'GetPin': identifier not found   c:\documents and settings\mercedes\my documents\visual studio 2008\projects\audio2\audio2\audio2.cpp   90
Error   38   error C2664: 'hrcheck' : cannot convert parameter 2 from 'const char [44]' to 'TCHAR *'   c:\documents and settings\mercedes\my documents\visual studio 2008\projects\audio2\audio2\audio2.cpp   91
Error   39   error C2065: 'pAC3Filter' : undeclared identifier   c:\documents and settings\mercedes\my documents\visual studio 2008\projects\audio2\audio2\audio2.cpp   95
Error   40   error C2065: 'pDirectSoundCreativeSBExtigy' : undeclared identifier   c:\documents and settings\mercedes\my documents\visual studio 2008\projects\audio2\audio2\audio2.cpp   95
Error   41   error C3861: 'GetPin': identifier not found   c:\documents and settings\mercedes\my documents\visual studio 2008\projects\audio2\audio2\audio2.cpp   95
Error   42   error C3861: 'GetPin': identifier not found   c:\documents and settings\mercedes\my documents\visual studio 2008\projects\audio2\audio2\audio2.cpp   95
Error   43   error C2664: 'hrcheck' : cannot convert parameter 2 from 'const char [60]' to 'TCHAR *'   c:\documents and settings\mercedes\my documents\visual studio 2008\projects\audio2\audio2\audio2.cpp   96
Error   44   error C2059: syntax error : 'constant'   c:\documents and settings\mercedes\my documents\visual studio 2008\projects\audio2\audio2\audio2.cpp   104
Error   45   error C2143: syntax error : missing ')' before ';'   c:\documents and settings\mercedes\my documents\visual studio 2008\projects\audio2\audio2\audio2.cpp   104
Error   46   error C4430: missing type specifier - int assumed. Note: C++ does not support default-int   c:\documents and settings\mercedes\my documents\visual studio 2008\projects\audio2\audio2\audio2.cpp   104
Error   47   error C2143: syntax error : missing ';' before '<'   c:\documents and settings\mercedes\my documents\visual studio 2008\projects\audio2\audio2\audio2.cpp   105
Error   48   error C4430: missing type specifier - int assumed. Note: C++ does not support default-int   c:\documents and settings\mercedes\my documents\visual studio 2008\projects\audio2\audio2\audio2.cpp   105
Error   49   error C2086: 'int CComPtr' : redefinition   c:\documents and settings\mercedes\my documents\visual studio 2008\projects\audio2\audio2\audio2.cpp   105
Error   50   error C2143: syntax error : missing ';' before '.'   c:\documents and settings\mercedes\my documents\visual studio 2008\projects\audio2\audio2\audio2.cpp   106
Error   51   error C4430: missing type specifier - int assumed. Note: C++ does not support default-int   c:\documents and settings\mercedes\my documents\visual studio 2008\projects\audio2\audio2\audio2.cpp   106
Error   52   error C4430: missing type specifier - int assumed. Note: C++ does not support default-int   c:\documents and settings\mercedes\my documents\visual studio 2008\projects\audio2\audio2\audio2.cpp   108
Error   53   error C2365: 'printf' : redefinition; previous definition was 'function'   c:\documents and settings\mercedes\my documents\visual studio 2008\projects\audio2\audio2\audio2.cpp   108
Error   54   error C2440: 'initializing' : cannot convert from 'const char [19]' to 'int'   c:\documents and settings\mercedes\my documents\visual studio 2008\projects\audio2\audio2\audio2.cpp   108
Error   55   error C2664: 'BuildGraph' : cannot convert parameter 1 from 'int' to 'IGraphBuilder *'   c:\documents and settings\mercedes\my documents\visual studio 2008\projects\audio2\audio2\audio2.cpp   109
Error   56   error C2059: syntax error : 'if'   c:\documents and settings\mercedes\my documents\visual studio 2008\projects\audio2\audio2\audio2.cpp   110
Error   57   error C2143: syntax error : missing ';' before '{'   c:\documents and settings\mercedes\my documents\visual studio 2008\projects\audio2\audio2\audio2.cpp   110
Error   58   error C2447: '{' : missing function header (old-style formal list?)   c:\documents and settings\mercedes\my documents\visual studio 2008\projects\audio2\audio2\audio2.cpp   110
Error   60   error C2059: syntax error : '}'   c:\documents and settings\mercedes\my documents\visual studio 2008\projects\audio2\audio2\audio2.cpp   137
Error   61   error C2143: syntax error : missing ';' before '}'   c:\documents and settings\mercedes\my documents\visual studio 2008\projects\audio2\audio2\audio2.cpp   137
Error   62   error C2059: syntax error : '}'   c:\documents and settings\mercedes\my documents\visual studio 2008\projects\audio2\audio2\audio2.cpp   137
Error   63   error C2059: syntax error : 'return'   c:\documents and settings\mercedes\my documents\visual studio 2008\projects\audio2\audio2\audio2.cpp   139
Error   64   error C2059: syntax error : '}'   c:\documents and settings\mercedes\my documents\visual studio 2008\projects\audio2\audio2\audio2.cpp   140
Error   65   error C2143: syntax error : missing ';' before '}'   c:\documents and settings\mercedes\my documents\visual studio 2008\projects\audio2\audio2\audio2.cpp   140
Error   66   error C2059: syntax error : '}'   c:\documents and settings\mercedes\my documents\visual studio 2008\projects\audio2\audio2\audio2.cpp   140
Logged
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.5 | SMF © 2006-2008, Simple Machines LLC Valid XHTML 1.0! Valid CSS!