[h323plus] enabling DirectShow video input

Alessandro Angeli packetizer.com at riseoftheants.com
Fri Oct 29 20:33:41 EDT 2010

From: "Simon Horne" <s.horne at packetizer.com>
Date: Thursday 28 October 2010 08:12

> Yes Jan is right. You should be able to compile the h323plus CVS
> against the latest PTLIB release.
> I am working towards a release in the not too distant future.

I finally managed to compile and run ptlib + h323plus + simpleplus from 
the latest source.

I do not know what the established procedure to fix bugs is, so I'll 
just report the issues here for the moment:

DirectShow2 needs qedit.h and ptbuildopts.h.in assumes that qedit.h is 
in the same location as dshow.h. But qedit.h is no longer part of the 
DirectShow SDK (included in the Windows SDK). Adding the directory where 
qedit.h can be found to the project settings does not work because of

#pragma include_alias(<Qedit.h>, <@DIRECTSHOW_DIR@/include/Qedit.h>)

which only works if one puts a copy of qedit.h in the <WinSDK>/include/ 
folder itself.

Since the WinCE branch in vidinput_directx2.cxx declares the needed 
interfaces and GUIDs, why not do the same for Win32/Win64 instead of 
relying on a no-longer supported qedit.h and forcing it to reside in the 
WinSDK where it should not be?

For the time being, I simply commented out the #pragma and added the 
directory containing qedit.h to the project's include path.

simpleplus/main.cxx has

  PString inputDriverName = "DirectShow";

but that should be "DirectShow2", otherwise the service is not found, 
since DirectShow2 registers itself as "DirectShow2" and not "DirectShow" 
(which makes sense but is not backward-compatible with looking for 


PBoolean PSoundChannel::Write(const void * buf, PINDEX len, const void * 
  return Write(buf, len, mark);

It is an infinite recursion ending in a stack overflow. I do not know 
what the call should have been so I have no fix for it.


More information about the h323plus mailing list