Hi everybody,
I am developing a video conference based on openh323, right now, I
failed to set video capability in my system.
I wrote a new class named HMH323_H261Capability, derived from
H323_H261Capability.
class HMH323_H261Capability : public H323_H261Capability
{
PCLASSINFO(HMH323_H261Capability, H323_H261Capability)
public:
HMH323_H261Capability(unsigned qcifMPI, unsigned cifMPI, BOOL
temporalSpatialTradeOff=TRUE,
BOOL stillImageTransmission=FALSE, unsigned maxBitRate=850);
virtual PObject *Clone()const;
virtual H323Codec *CreateCodec(H323Codec::Direction direction) const;
};
When the program begin, I use
SetCapability (0, 1, new HMH323_H261Capability (0, 1, TRUE, FALSE,
8192)); and the program runs OK, However, when I connect MCU by
calling
H323EndPoint::MakeCall(remoteParty, NULL, token, userData); the
program throw exception and exit.
Here is the call stack
KERNEL32! 7c812a5b()
MSVCRTD! _CxxThrowException@8 + 57 bytes
MSVCRTD! __RTDynamicCast + 383 bytes
H323Capability::Compare(const PObject & {...}) line 427 + 23 bytes
PObject::operator==(const PObject & {...}) line 1452 + 22 bytes
H323Capabilities::FindCapability(const H323Capability & {...}) line
2075 + 26 bytes
H323Capabilities::Merge(const H323Capabilities & {...}) line 2375 + 21 bytes
H323Connection::OnReceivedCapabilitySet(const H323Capabilities &
{...}, const H245_MultiplexCapability * 0x013f2c44,
H245_TerminalCapabilitySetReject & {...}) line 4315 + 18 bytes
H245NegTerminalCapabilitySet::HandleIncoming(const
H245_TerminalCapabilitySet & {...}) line 603 + 48 bytes
H323Connection::OnH245Request(const H323ControlPDU & {...}) line 3784 + 18 bytes
H323Connection::HandleControlPDU(const H323ControlPDU & {...}) line
3742 + 18 bytes
H323Connection::HandleControlData(PPER_Stream & {...}) line 3726 + 18 bytes
H323Connection::HandleControlChannel() line 3666 + 18 bytes
H245TransportThread::Main() line 599
PTLIBD! PThread::MainFunction(void *) line 1168
_threadstartex(void * 0x013e8ce0) line 212 + 13 bytes
KERNEL32! 7c80b683()
In the H323Capability::Compare
PObject::Comparison H323Capability::Compare(const PObject & obj) const
{
PAssert(PIsDescendant(&obj, H323Capability), PInvalidCast);-->Failed
Can anyone tell me the problem?