[h323plus] enabling DirectShow video input

Simon Horne s.horne at packetizer.com
Sun Oct 31 04:01:01 EDT 2010


Alessandro

I have checked in a fix for DirectShow2 so it can be compiled without
requiring qedit.h. I have also updated simple with fixes for DirectShow2 and
H.239

Bug fix to PSoundChannel::Write()  also applied. 

Thanks.
Simon

-----Original Message-----
From: h323plus-bounces at lists.packetizer.com
[mailto:h323plus-bounces at lists.packetizer.com] On Behalf Of Alessandro
Angeli
Sent: Saturday, October 30, 2010 10:34 AM
To: h323plus at lists.packetizer.com
Subject: Re: [h323plus] enabling DirectShow video input

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:

-----------------------
1.
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.

-----------------------
2.
simpleplus/main.cxx has

#ifdef P_DIRECTSHOW2
  PString inputDriverName = "DirectShow"; #else

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
"DirectShow").


-----------------------
3.
ptlib/common/sound.cxx

PBoolean PSoundChannel::Write(const void * buf, PINDEX len, const void *
mark)
{
  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.

--
Alessandro




More information about the h323plus mailing list