[Asterisk-Dev] Re: Asterisk H.323 driver
Chih-Wei Huang
cwhuang at citron.com.tw
Fri Mar 25 02:31:06 MST 2005
Craig Southeren wrote:
> On Thu, 24 Mar 2005 19:42:37 +0600
> "Paul Cadach" <paul at odt.east.telecom.kz> wrote:
>
>>I had next patch for openh323 1.12.2 (not one-line but two-line, not so much important):
>
> That code version is nearly two years old, and there have been 4 stable
> releases since then.
>
> More recent code can be found at http://www.voxgratia.org/downloads.html
>
> ..deleted
>
>>With this patch it's possible to not create inheritance from H323_ExternalRTPChannel class (as I remember - there was
>>about 1 year ago).
>
> I've written many applications that do this very succesfully. You might
> want to read the documentation on the OpenH323 external RTP interface
> at:
>
> http://www.voxgratia.org/docs/external_rtp.html
Hello Craig,
No time no see. How are you?
Paul and I are discussing that if it is possible to get the remote media
address without creating inheritance from H323_ExternalRTPChannel.
(i.e., use H323_ExternalRTPChannel instead of MyH323_ExternalRTPChannel)
Originally, I think the remote media address can be got from
H323Connection::OnStartLogicalChannel
(by calling H323_ExternalRTPChannel::GetRemoteAddress)
But Paul pointed out a issue. Some buggy(?) devices like Cisco
send fake IP/port in OLC and return the real media address in
OLCAck (i.e., RTCP != RTP+1).
When OnStartLogicalChannel be called (by H323Conneection::Open)
for a transmitter channel, the remote media address is not available
yet(GetRemoteAddress failed), while for a receiver channel, the remote
media address is derived from mediaControlChannel of OLC.
It seems impossible to get the remote media address from OLCAck
in OnStartLogicalChannel.
So for a device with RTCP != RTP+1, this is a problem.
Paul's patch seems defer calling H323Conneection::Open until
receive OLCAck so the problem can be solved.
(though he said it is for 1.12.2, it seems still applies to Openh323 CVS
-- I didn't really test)
Of course, creating inheritance from H323_ExternalRTPChannel to
override H323_ExternalRTPChannel::Start can solve the problem,
since Start is be called after OLCAck for a transmitter channel.
I just hope to know is it possible to do the same work
without inheritance of H323_ExternalRTPChannel. It's cool!
--
~ Chih-Wei Huang (cwhuang at citron.com.tw)
'v' CTO, Citron Network Inc. ( http://www.citron.com.tw/ )
// \\ GnuGK Project : http://www.gnugk.org/ (Developer)
/( )\ HomePage : http://www.linux.org.tw/~cwhuang/
^`~'^
More information about the asterisk-dev
mailing list