[h323plus] enabling DirectShow video input

Simon Horne s.horne at packetizer.com
Wed Oct 27 21:11:19 EDT 2010


Alessandro

There are 2 directshow implementations. The original directshow
(P_DIRECTSHOW) was dependent on DirectSound being present (which sometimes
it is not) and the second directshow2 (P_DIRECTSHOW2) did not. DirectShow2
files should be in the distro but may or may not be loaded in the project
(vidinput_directx2.h\.cxx)  Check to see in the ptbuildopts.h what has been
enabled.

It appears directshow is not loading because the dependency is not present.
Try DirectShow2. 

The current PTLIB SVN and H323plus CVS now use DirectShow2 by default.

Simon



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

I successfully built the debug configurations of ptlib 2.4.5 (static),
h323plus 1.21.0 and simpleplus 1.21.0 in VS2008SP1 + WinSDK 7.1 on Win7/x64.

Audio and text work fine. However, video does not work: "No Video Grabber
available Disabling Video Support!".

DirectShow support in vidinput_directx.cxx is compiled successfully and the
DirectShow branches in simpleplus/main.cxx are active, since P_DIRECTSHOW is
#define'd as 1 in ptbuildopts.h. I tried #define'ing P_DSHOW to 1 as well in
simpleplus, without any difference.

As far as I can tell, the problem is that the DirectShow service is never
registered on startup.

I expanded the PCREATE_VIDINPUT_PLUGIN(DirectShow) macro in
vidinput_directx.cxx  to put a breakpoint in
PPlugin_PVideoInputDevice_DirectShow_Registration::<ctor>()
and that code is compiled but never executed. Actually, it appears to never
be mapped into memory at all, which should imply that the linker is removing
it from the final EXE, but adding /OPT:NOREF in the build config of
simpleplus does not make a difference.

However FakeVideo is registered and it also uses the
PCREATE_VIDINPUT_PLUGIN() macro, and I can not spot any difference between
the way FakeVideo and DirectShow are compiled and linked.

The only reference to a similar issue I could find is from over one year
ago:

http://lists.packetizer.com/pipermail/h323plus/2009-August/001165.html

But the current code already uses PCREATE_VIDINPUT_PLUGIN() and, as I said,
FakeVideo uses the same macro but is correctly registered.

--
Alessandro




More information about the h323plus mailing list