<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:syn="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/">
  <channel rdf:about="http://blog.gmane.org/gmane.comp.telephony.h323plus">
    <title>gmane.comp.telephony.h323plus</title>
    <link>http://blog.gmane.org/gmane.comp.telephony.h323plus</link>
    <description/>
    <syn:updatePeriod>hourly</syn:updatePeriod>
    <syn:updateFrequency>1</syn:updateFrequency>
    <syn:updateBase>1901-01-01T00:00+00:00</syn:updateBase>
    <items>
      <rdf:Seq>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.telephony.h323plus/952"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.telephony.h323plus/951"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.telephony.h323plus/950"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.telephony.h323plus/949"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.telephony.h323plus/948"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.telephony.h323plus/947"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.telephony.h323plus/946"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.telephony.h323plus/945"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.telephony.h323plus/944"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.telephony.h323plus/943"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.telephony.h323plus/942"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.telephony.h323plus/941"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.telephony.h323plus/940"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.telephony.h323plus/939"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.telephony.h323plus/938"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.telephony.h323plus/937"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.telephony.h323plus/936"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.telephony.h323plus/935"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.telephony.h323plus/934"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.telephony.h323plus/933"/>
      </rdf:Seq>
    </items>
    <image rdf:resource="http://gmane.org/img/gmane-25t.png"/>
    <textinput rdf:resource=""/>
  </channel>
  <image rdf:about="http://gmane.org/img/gmane-25t.png">
    <title>Gmane</title>
    <url>http://gmane.org/img/gmane-25t.png</url>
    <link>http://gmane.org</link>
  </image>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.telephony.h323plus/952">
    <title>GNU Gatekeeper 3.0.2 released</title>
    <link>http://permalink.gmane.org/gmane.comp.telephony.h323plus/952</link>
    <description>&lt;pre&gt;Hi,

I have just released GnuGk 3.0.2. This is purely a bugfix release that
fixes 2 bugs in the 3.0.x line.

You can download the new version at
http://www.gnugk.org/h323download.html

Executables are provided for Linux, Windows and FreeBSD.

Regards,
Jan

&lt;/pre&gt;</description>
    <dc:creator>Jan Willamowius</dc:creator>
    <dc:date>2012-05-04T14:45:47</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.telephony.h323plus/951">
    <title>Re: H323-SIP Gateway with H264 Support</title>
    <link>http://permalink.gmane.org/gmane.comp.telephony.h323plus/951</link>
    <description>&lt;pre&gt;Hi Simon, where I define this option (_STATIC_LINK) ?
And what about my second question. It is very important for me. I
appreciate any help. Thanks.

2012/4/30 Simon Horne &amp;lt;s.horne&amp;lt; at &amp;gt;packetizer.com&amp;gt;

&lt;/pre&gt;</description>
    <dc:creator>Diego Carvalho</dc:creator>
    <dc:date>2012-05-02T14:37:02</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.telephony.h323plus/950">
    <title>Re: H323-SIP Gateway with H264 Support</title>
    <link>http://permalink.gmane.org/gmane.comp.telephony.h323plus/950</link>
    <description>&lt;pre&gt;Diego

 

Compile the plugins using _STATIC_LINK option for both G.722 and H.264 this
will create static libraries and #define H323_STATIC_H264  and
H323_STATIC_G7221 in openh323buildopts.h.in to load them.

 

Simon

 

 

From: h323plus-bounces&amp;lt; at &amp;gt;lists.packetizer.com
[mailto:h323plus-bounces&amp;lt; at &amp;gt;lists.packetizer.com] On Behalf Of Diego Carvalho
Sent: 01 May 2012 05:39
To: Simon Horne; h323plus&amp;lt; at &amp;gt;lists.packetizer.com
Subject: Re: [h323plus] H323-SIP Gateway with H264 Support

 

Hi Simon,

I am very grateful for the version of the H264 plugin with the _SGINAL_ONLY
option. After using it I finally could make video work on my application.

Now I have 2 more challenges:

1 - Link the H264 and G722 plugins statically. How can I do this?

2 - I still have problems with capability negotiation. You said me to
override H323Connection::OnSetLocalCapabilities to remove the codecs that
SIP doesn't support. But this function is called in the very beginning of a
call, when I don't have SIP info yet. So I answer the call with
H323Connection::AnswerCallPending and then start the SIP call. So I will
have the SIP info only before sending the Connect PDU (e.g before calling
H323Connection::AnswerCallNow). Is there another way to modify the local
capabilities with this constraint?

I appreciate any help. Thanks in advance.

 

2012/4/10 Simon Horne &amp;lt;s.horne&amp;lt; at &amp;gt;packetizer.com&amp;gt;

Diego

 

Today I checked into the CVS a compile directive _SIGNAL_ONLY which will
compile the plugin without dependencies on FFMPEG or X264.  You only need
h264-x264.h/.cxx. You can use this in conjunction with _STATIC_LINK to build
a static library to statically link the codec into the h323plus library.

http://h323plus.cvs.sourceforge.net/viewvc/h323plus/h323plus/plugins/video/H
.264/

You will need to configure the makefile.in with these switches (not done
yet)

 

Also G.722 has serious interop issues. Mainly due to IMHO an error in the
RFC. Although the codec is a 16k codec the RTP timestamps are incremented as
8k in the RFC. On the H.323 side they almost always use a 16k timestamp
while on the SIP side it's mostly 8k. 

 

Simon

 

From: h323plus-bounces&amp;lt; at &amp;gt;lists.packetizer.com
[mailto:h323plus-bounces&amp;lt; at &amp;gt;lists.packetizer.com] On Behalf Of Diego Carvalho
Sent: 10 April 2012 04:41


To: h323plus&amp;lt; at &amp;gt;lists.packetizer.com
Subject: Re: [h323plus] H323-SIP Gateway with H264 Support

 

Hi Simon, thanks a lot for you help, but I will have to bother you again.
Now I could compile the H264 plugin after remove the code you told me but I
couldn't make my program load it. I tried 3 different things: first I put
the .so and the help in the same folder as my app, second I tried to install
the plugins in the default folder (/usr/local/lib/opal-1.24.0/) and finally
I tried to set PWLIBPLUGINDIR. None of these worked. I also tried to load
the G722 plugin and at least this one should work because I didn't change
it. Am I missing something?
I also tried to enable the stack's log. At first glance, it didn't show
anything about plugins. Then I used the following code, from Simple app:

PDirectory DefaultDir = PProcess::Current().GetFile().GetDirectory();
PPluginManager &amp;amp; pluginMgr = PPluginManager::GetPluginManager();
pluginMgr.LoadPluginDirectory(DefaultDir);

This makes the app loads the plugins from the current directory. After this
the log shows:

2012/04/09 11:08:17.701    4       pluginmgr.cxx(96)    PLUGIN
Enumerating plugin directory /home/diego/H323Gateway/bin/Debug/
2012/04/09 11:08:17.701    5       pluginmgr.cxx(106)    PLUGIN    Checking
/home/diego/H323Gateway/bin/Debug/g722_audio_pwplugin.so against suffix
_ptplugin
2012/04/09 11:08:17.701    5       pluginmgr.cxx(106)    PLUGIN    Checking
/home/diego/H323Gateway/bin/Debug/g722_audio_pwplugin.so against suffix
_pwplugin
2012/04/09 11:08:17.702    3    h323pluginmgr.cxx(2529)    H323PLUGIN
Loading plugin codec g722_audio_pwplugin
2012/04/09 11:08:17.702    5       pluginmgr.cxx(106)    PLUGIN    Checking
/home/diego/H323Gateway/bin/Debug/h264_video_pwplugin_helper against suffix
_ptplugin
2012/04/09 11:08:17.702    5       pluginmgr.cxx(106)    PLUGIN    Checking
/home/diego/H323Gateway/bin/Debug/h264_video_pwplugin_helper against suffix
_pwplugin
2012/04/09 11:08:17.702    5       pluginmgr.cxx(106)    PLUGIN    Checking
/home/diego/H323Gateway/bin/Debug/h264_video_pwplugin.so against suffix
_ptplugin
2012/04/09 11:08:17.702    5       pluginmgr.cxx(106)    PLUGIN    Checking
/home/diego/H323Gateway/bin/Debug/h264_video_pwplugin.so against suffix
_pwplugin
2012/04/09 11:08:18.053    3    h323pluginmgr.cxx(2525)    H323PLUGIN
Plugin Codec DLL h264_video_pwplugin contains no codec definitions
2012/04/09 11:08:18.058    5       pluginmgr.cxx(106)    PLUGIN    Checking
/home/diego/H323Gateway/bin/Debug/H323Gateway against suffix _ptplugin
2012/04/09 11:08:18.058    5       pluginmgr.cxx(106)    PLUGIN    Checking
/home/diego/H323Gateway/bin/Debug/H323Gateway against suffix _pwplugin

So it seems that it loaded G722 correctly and encontered an error while
loading H264. But when the app starts, there is no G722 on capabilities
table. I also tried to use the G722 plugin in the Simple app and got the
same result. The app shows this in its start up:

Codecs (in preference order):
 Table:
   G.711-ALaw-64k &amp;lt;1&amp;gt;
   G.711-uLaw-64k &amp;lt;2&amp;gt;
   UserInput/hookflash &amp;lt;3&amp;gt;
   UserInput/basicString &amp;lt;4&amp;gt;
   UserInput/dtmf &amp;lt;5&amp;gt;
   UserInput/RFC2833 &amp;lt;6&amp;gt;
   UserInput/Navigation &amp;lt;7&amp;gt;
   UserInput/Softkey &amp;lt;8&amp;gt;
   UserInput/PointDevice &amp;lt;9&amp;gt;
   UserInput/Modal &amp;lt;10&amp;gt;

So, no G722.

A last thing is how to link the plugins statically. You said something about
the CVS. Does it mean that the option to load the plugins statically is not
available in the current version (1.24.0)?
Thanks in advance.

2012/4/3 Simon Horne &amp;lt;s.horne&amp;lt; at &amp;gt;packetizer.com&amp;gt;

Diego

 

There are 2 functions to load the plugin.

PLUGIN_CODEC_IMPLEMENT(H264)  

PLUGIN_CODEC_DLL_API struct PluginCodec_Definition *
PLUGIN_CODEC_GET_CODEC_FN(unsigned * count, unsigned version)

These are left as they are (including all the macro associated with them)

 

All Encryption/Decryption is handled by the H264Encoder/H264Decoder classes.
Simple remove these classes and everything referenced by the classes.

Where they are instanced.

static void * create_encoder(const struct PluginCodec_Definition *
/*codec*/)

static void * create_decoder(const struct PluginCodec_Definition *
/*codec*/)

return NULL.

 

That's it. It should compile without needing FFMPEG or X264.

 

Simon

 

 

From: h323plus-bounces&amp;lt; at &amp;gt;lists.packetizer.com
[mailto:h323plus-bounces&amp;lt; at &amp;gt;lists.packetizer.com] On Behalf Of Diego Carvalho
Sent: 04 April 2012 03:57


To: h323plus&amp;lt; at &amp;gt;lists.packetizer.com
Subject: Re: [h323plus] H323-SIP Gateway with H264 Support

 

Hi Simon.
Again, I would like to thank you because you helped me to solve two
problems: make SIP and H323 endpoints exchange media directly and set
capabilities by call basis. Actually, the code you showed me didn't work in
my tests (remove all capabilities and then add the ones I want) but I could
at least remove the capabilities I don't want. Anyway, now my last big
problem is the H264 support. I'm totally lost. You said: "Simply supply the
codec definitions and the codec will be available in h323plus. ". But supply
where? I don't know where to define the PluginCodec_Definition or the other
things you mentioned. Since I'm not an expert on H264 (I know enough to make
things work, lol) I would like to use what is already done, I mean, is it
possible to make some changes in the H264 plugin to make it work only for
signaling or I need to make something from the scratch? Regardless the
answer, give me some instructions, please. Thanks in advance.

2012/3/27 Simon Horne &amp;lt;s.horne&amp;lt; at &amp;gt;packetizer.com&amp;gt;

Diego

 

Sorry for delay in replying

With Reference to the document you linked to

The plugin codec exports 2 functions for capability registration

unsigned int PWLibPlugin_GetAPIVersion()

PluginCodec_Definition
&amp;lt;http://www.voxgratia.org/docs/codec_plugins.html#PluginCodec_Definition&amp;gt;  *
OpalCodecPlugin_GetCodecs(unsigned * count, unsigned version)

 

The OpalCodecPlugin_GetCodecs function returns all the information you need
on the signaling side. Simply supply the codec definitions and the codec
will be available in h323plus. 

You DO NOT need to create the Codec Methods which link to FFMPEG/x264.

 

For only supplying the codecs you need rather than removing them for the
call. Clone the Capability List then remove all the orginal and add back the
ones you want.

In your derived 

void H323Connection::OnSetLocalCapabilities()

 

H323Capabilities * myCapabilities(localCapabilities);

localCapabilities.RemoveAll();

 

H323Capability * cap = myCapabilities.FindCapability("H.264*");

If (cap)

  LocalCapabilities.Add(cap);

 

 

Simon

 

From: Diego Carvalho [mailto:diego.cdomingos2010&amp;lt; at &amp;gt;gmail.com] 
Sent: 28 March 2012 06:37
To: Simon Horne


Subject: [h323plus] H323-SIP Gateway with H264 Support

 

Hi Simon, thanks for answering again. Today I could establish SIP -&amp;gt; H323
audio calls. So now I only need to deal with the 2 points below.

I'm really interested in being able to add H.264 in the capability set
without having to link the library with FFMPEG/X264, but I couldn't
understand what you explained. I searched on the internet and found this:
http://www.voxgratia.org/docs/codec_plugins.html
that I believe is related to what you explained but even with this page I
couldn't realize what I have to do. Is it possible to configure the plugin
that comes with the source in this way? I mean, use the plugin in
h323plus/plugin/video/H.264 for only signaling, without have to link with
FFMPEG/X264.
Another question is again about the capabilities. You said that I can remove
the capabilities that aren't supported by the SIP endpoint. But this way, I
will have to add all possible capabilities to my gateway and them remove the
ones that SIP doesn't support. It would be much easier if my gateway could
start without any capabilities and then I add the ones that SIP supports. Is
that possible? If not, I will have to do what you explained but when I will
add all the capabilities again to be ready to handle the next call?
Again, thanks for all the help. 

 

2012/3/23 Simon Horne &amp;lt;s.horne&amp;lt; at &amp;gt;packetizer.com&amp;gt;

Diego

 

There is some issues with changes in FFMPEG v54 and a number of function
names changed and others were depreciated recommend v52. I am currently
working through issues with v54. Again X264 is a moving target but last I
looked it compiled on Linux. On Windows is a whole different story
unfortunately.

 

If you are only using the codec for signaling there should be no need to
link to either FFMPEG or X264 and you can gut the plugins and only define
the PluginCodec_Definitions,  Plugin_Codec_Implementation() and
PLUGIN_CODEC_GET_CODEC_FN. These are the signaling parts of the codec. The
Encoder/Decoder contexts can be removed. There is some changes in the CVS to
also allow you to load these plugins statically see the
openh323buildopt.h.in.

 

To filter capabilities on a call by call basis you can do this by overriding
H323Capabilities::OnSetLocalCapabilities() and use the
localCapabilities.Remove() function to remove the capabilities not used on
the SIP side.

 

Simon

 

From: h323plus-bounces&amp;lt; at &amp;gt;lists.packetizer.com
[mailto:h323plus-bounces&amp;lt; at &amp;gt;lists.packetizer.com] On Behalf Of Diego Carvalho
Sent: 23 March 2012 22:44
To: h323plus&amp;lt; at &amp;gt;lists.packetizer.com


Subject: Re: [h323plus] H323-SIP Gateway with H264 Support

 

Hi Simon and "chr_cb". First of all, thanks for your help. Today I was able
to establish an audio only call between H323 and SIP using the gateway I'm
developing. This is great but I still have some problems and I appreciate
any help on this:
1) Like I said, it was an audio only call. I was able to compile the plugins
with the packages from Ubuntu repositories (libx264-dev, libavcodec-dev and
libavutil-dev) but my project also uses ffmpeg and x264 so I would like to
compile with the latest source code from git we use. The config.log shows
some errors and on the internet I saw somebody saying that only a specific
version of ffmpeg allows the compilation. Is that true? If so, what would be
the version of ffmpeg and x264 I should use? Again, I would like to
reiterate that I only want to have H264 on my capabilities list (I don't
want to capture/render video). Do I indeed need the plugin? Is there another
way?
2) If I set the gateway capabilities in the beginning it works but I want so
set them in a later time. Specifically, I receive the call and send an
invite on hold to SIP. Then it will answer with 200 OK with SDP. In this
moment, when I have the SIP SDP, I want to set the gateway capabilities
based on what the SIP side supports. How can I do this? If I try to add in
this moment it simply doesn't add them.
Thanks in advance.

2012/3/13 Simon Horne &amp;lt;s.horne&amp;lt; at &amp;gt;packetizer.com&amp;gt;

Diego

The plugins load default capability instances into the H323Endpoint.
When the H323Connection is created these capabilities are cloned
In H323Connection::OnSetLocalCapabilities()
Simply remove the unmatched capabilities
localCapabilities.Remove("H.264*");

The H323_ExternalRTPChannel does not handle RTP but can be used to not use
the internal RTP system. You can have your own external RTP stack or not
have one at all.
You needed to read and populate H245_H2250LogicalChannelParameters in the
send and receive message of the class with those of the SIP Client.

I do have serious doubts what you are planning will work not because it
can't technically work but because of the differences in H.323 and SIP with
Video. H.323 is very strict on rules while SIP is very loose on
interpretations.
Here are the problems
1. RTP packetization H.323 says strictly single NAL SIP is undefined 2
options (Single NAL/Fragmented units) . You will get video on the H.323 side
just fine but your SIP side with some devices may not be able to decode.
2. Payload Type for H.264 is specified as being flexible but a lot of SIP
implementations have them fixed (usually 96 or 97) so H.323 requests 103
SIP always ends 97  no video on the H.323 side. There is no way you can fix
this with signaling as SIP tells the other party what it is going to send
and H.323 tells the party what it wants to receive. You have to proxy the
media to fix the payload type number.

Good luck.

Simon

============================================================================
=============================================

From: Diego Carvalho [mailto:diego.cdomingos2010&amp;lt; at &amp;gt;gmail.com]
Sent: 14 March 2012 06:09
To: Simon Horne
Subject: Re: [h323plus] H323-SIP Gateway with H264 Support


Hi Simon, thanks for answering but I still have some doubts:
You said that this plugin will add the capability automatically. Actually,
as I said, I'm building a H323-SIP gateway so, for instance, when the SIP
endpoint is making a call I want to add the H264 capability only if the SIP
endpoint offers it. Will I be able to add the capability manually? For
instance, using localCapabilities.Add(new H323_H264Capability()). To
sumarize, I want to be able to add (or remove if it was automatically added
and the current call does not offer it) manualy the H264 capability.
Also I don't know if the H323_ExternalRTPChannel applies to my situation.
It's used to pass the RTP to another device. I don't want to handle the RTP
at all (to be clear: I don't want RTP arriving on the gateway's network
card). I want to send to h323 the RTP address/port SIP offered and
vice-versa, so the RTP will flow directly between the endpoints. Any
thoughts? Thanks in advance.
2012/3/13 Simon Horne &amp;lt;s.horne&amp;lt; at &amp;gt;packetizer.com&amp;gt;
Diego
 
H.264 is a video plugin in the plugin/video directory. You will need X264
and FFMPEG.  For Ubuntu they are libx264-dev  libavcodec-dev and
libavutil-dev.
 
You build the plugin .so and the helper (in the gpl subdirectory) and place
them both in the same directory as you app. The application will load them
at startup and automatically add the capability to the capabilityset etc
 
If you don't want to use the plugin for RTP then have a look at the
H323_ExternalRTPChannel. This will bypass the RTP handling in the codec to
whatever you want.
http://www.voxgratia.org/docs/external_rtp.html
(its from 2004 but still current)
 
Simon
 
 
From: h323plus-bounces&amp;lt; at &amp;gt;lists.packetizer.com
[mailto:h323plus-bounces&amp;lt; at &amp;gt;lists.packetizer.com] On Behalf Of Diego Carvalho
Sent: 14 March 2012 03:05
To: h323plus&amp;lt; at &amp;gt;lists.packetizer.com
Subject: [h323plus] H323-SIP Gateway with H264 Support
 
Hi all,
I'm working on a h323-sip gateway with video (H264) support and I'm facing
some problems. I'm new with H323plus and with h323 protocol itself (I'm
learning as I go) so excuse me if I say something stupid.
First of all, I believe that the stack can be used to build a gateway but it
seems that it's more focused on terminals. Am I right? So is it possible or
not to build a gateway using it?
Second, there is no native support for H264. The documentation shows the
class hierarchy. For audio we have, for instance, H323Cabability -&amp;gt;
H323RealTimeCapability -&amp;gt; H323AudioCapability -&amp;gt; H323_G711Cabability but we
don't have H323Cabability -&amp;gt; H323RealTimeCapability -&amp;gt; H323VideoCapability
-&amp;gt; H323_H264Cabability. I tried to create this one, extending from
H323Cabability -&amp;gt; H323RealTimeCapability -&amp;gt; H323VideoCapability -&amp;gt;
H323GenericVideoCabability and then I discovered that I would need to
override a function called CreateCodec to return a codec that handles the
video. But I don't want to handle the RTP media. I just want to put H264 in
the terminal capability set and establish a connection in a way that the
H323 and SIP terminals can exchange the media directly. I've heard about a
H264 plugin but it seems that it is for handling the media, so I don't know
if it fits my purpose. How can I achieve this? Is there any plan to support
H264 natively on H323plus? Also I need to get the remote RTP port. The only
way I found to do this is trough H323Connection::OnStartLocicalChannel but
this is called after a channel to handle the data is created and again, I
don't want to handle the RTP data. I appreciate any help. Thanks.

 

 

 

 

 

 

&lt;/pre&gt;</description>
    <dc:creator>Simon Horne</dc:creator>
    <dc:date>2012-05-01T01:15:52</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.telephony.h323plus/949">
    <title>Re: H323-SIP Gateway with H264 Support</title>
    <link>http://permalink.gmane.org/gmane.comp.telephony.h323plus/949</link>
    <description>&lt;pre&gt;No, it is part of a system that the company I work for is developing. But
I'm available to help anyone with the knowledge I'm getting here and while
I'm developing it.

Best regards,

2012/4/30 Jan Willamowius &amp;lt;jan&amp;lt; at &amp;gt;willamowius.de&amp;gt;

&lt;/pre&gt;</description>
    <dc:creator>Diego Carvalho</dc:creator>
    <dc:date>2012-05-01T00:17:33</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.telephony.h323plus/948">
    <title>Re: H323-SIP Gateway with H264 Support</title>
    <link>http://permalink.gmane.org/gmane.comp.telephony.h323plus/948</link>
    <description>&lt;pre&gt;Hi Simon,
I am very grateful for the version of the H264 plugin with the _SGINAL_ONLY
option. After using it I finally could make video work on my application.
Now I have 2 more challenges:
1 - Link the H264 and G722 plugins statically. How can I do this?
2 - I still have problems with capability negotiation. You said me to
override H323Connection::OnSetLocalCapabilities to remove the codecs that
SIP doesn't support. But this function is called in the very beginning of a
call, when I don't have SIP info yet. So I answer the call with
H323Connection::AnswerCallPending and then start the SIP call. So I will
have the SIP info only before sending the Connect PDU (e.g before calling
H323Connection::AnswerCallNow). Is there another way to modify the local
capabilities with this constraint?
I appreciate any help. Thanks in advance.

2012/4/10 Simon Horne &amp;lt;s.horne&amp;lt; at &amp;gt;packetizer.com&amp;gt;

&lt;/pre&gt;</description>
    <dc:creator>Diego Carvalho</dc:creator>
    <dc:date>2012-04-30T19:38:30</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.telephony.h323plus/947">
    <title>Re: H323plus Problem Reg G722 plugin loading.</title>
    <link>http://permalink.gmane.org/gmane.comp.telephony.h323plus/947</link>
    <description>&lt;pre&gt;Hi All,

I saw h323plus G722 plugin code, h323plus/plugins/audio/G722/g722codec.c
*
// TODO: will never be loaded by H323Plus with this description!
static const char L16Desc[]  = "PCM-16-16kHz"; // Cannot use "L16" as
usual, force 16kHz PCM
static const char g722[]     = "G.722-64k";
static const char sdpG722[]  = "G722"; *


does any one tried G722 plugin in H323plus?




Thanks in Advance
Ashwani


On Wed, Apr 11, 2012 at 6:16 PM, Ashwani Kumar &amp;lt;ash1412&amp;lt; at &amp;gt;gmail.com&amp;gt; wrote:

&lt;/pre&gt;</description>
    <dc:creator>Ashwani Kumar</dc:creator>
    <dc:date>2012-04-12T06:27:51</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.telephony.h323plus/946">
    <title>Re: H323plus support for UDP signalling</title>
    <link>http://permalink.gmane.org/gmane.comp.telephony.h323plus/946</link>
    <description>&lt;pre&gt;Just FYI: there is H.323 over UDP implementation in Acme Packet SBCs.

//wbr ojab


On 11.04.2012 09:29, Simon Horne wrote:



&lt;/pre&gt;</description>
    <dc:creator>ojab</dc:creator>
    <dc:date>2012-04-12T04:21:56</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.telephony.h323plus/945">
    <title>Re: H323plus support for UDP signalling</title>
    <link>http://permalink.gmane.org/gmane.comp.telephony.h323plus/945</link>
    <description>&lt;pre&gt;Thanks Simon,

I will definitely look into what you suggested and go from there.

Josh

On Wed, Apr 11, 2012 at 1:29 AM, Simon Horne &amp;lt;s.horne&amp;lt; at &amp;gt;packetizer.com&amp;gt; wrote:

&lt;/pre&gt;</description>
    <dc:creator>J.C Mercier</dc:creator>
    <dc:date>2012-04-12T03:56:13</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.telephony.h323plus/944">
    <title>Does H323Plus support Intra-frame Request?</title>
    <link>http://permalink.gmane.org/gmane.comp.telephony.h323plus/944</link>
    <description>&lt;pre&gt;Hi Simon,

Does H323Plus signaling support Intra-frame Request for Video?



&lt;/pre&gt;</description>
    <dc:creator>Ashwani Kumar</dc:creator>
    <dc:date>2012-04-11T12:51:27</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.telephony.h323plus/943">
    <title>H323plus Problem Reg G722 plugin loading.</title>
    <link>http://permalink.gmane.org/gmane.comp.telephony.h323plus/943</link>
    <description>&lt;pre&gt;Hi All,

I am not able to see G722 support in H323plus, When I am using simph323
application. I have also copied  all the " *g7221_audio_pwplugin.so
g7222_audio_pwplugin.so g722_audio_pwplugin.so* to the simph323 dir. I am
only able to see  *G.722.1-24k{sw} &amp;lt;3&amp;gt; G.722.1-32k{sw} &amp;lt;4&amp;gt;* support in
Codec table.

Below is the few line of log;

Codecs (in preference order):
 Table:
   G.711-uLaw-64k &amp;lt;2&amp;gt;
   G.711-ALaw-64k &amp;lt;1&amp;gt;
   G.722.1-24k{sw} &amp;lt;3&amp;gt;
   G.722.1-32k{sw} &amp;lt;4&amp;gt;
   H.264-720{sw} &amp;lt;5&amp;gt;
   H.264-CIF{sw} &amp;lt;6&amp;gt;
   H.239(H.264{sw} &amp;lt;1&amp;gt;) &amp;lt;7&amp;gt;
   H.239 Control &amp;lt;8&amp;gt;



Please find pointers to solve the problem.



&lt;/pre&gt;</description>
    <dc:creator>Ashwani Kumar</dc:creator>
    <dc:date>2012-04-11T12:46:57</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.telephony.h323plus/942">
    <title>Re: H323plus support for UDP signalling</title>
    <link>http://permalink.gmane.org/gmane.comp.telephony.h323plus/942</link>
    <description>&lt;pre&gt;Josh

 

All call signaling is via TCP. Although there is support for transmission
over UDP in the standard AFAIK no-one has implemented it. 

 

There are pro's and con's either way

TCP is reliable and as you say you can have large message sizes however as
it's a persistent connection and can and does break (for instance with NAT)
and calls do drop.  Just finished a major commit to resolve that issue in
the h323plus stack and if the connection does break then there is an attempt
to reconnect and the call does not drop. UDP signaling guys have been
throwing that around for years to justify using UDP for signaling. 

 

You can add custom messages via the H460_Feature interface. There is a H460
factory loader subsystem which loads your derived class into the signaling.
The H460_Feature class contains message overrides for each signaling
message. You would want to look at deriving you class from H460_FeatureOID
or H460_FeatureNonStd.  To get an idea what to do, have a look at
H460_FeatureStd19 it has most of the structure you need there. 

 

Simon

 

 

 

From: h323plus-bounces&amp;lt; at &amp;gt;lists.packetizer.com
[mailto:h323plus-bounces&amp;lt; at &amp;gt;lists.packetizer.com] On Behalf Of J.C Mercier
Sent: 11 April 2012 15:06
To: h323plus
Subject: [h323plus] H323plus support for UDP signalling

 

Hi all,

Just curious, does H323plus support signalling via UDP? If not, what are the
advantages of using TCP signalling over UDP, aside from it being reliable
(considering UDP packets doesn't exceed the UDP size limit for each message
sent, if it's even possible with H323 messages) ?

Another question, is it possible to include generic messages within the
signalling messages (setup, process, alert, connect, facility etc) just as
we can with the h.245 OLC messages?

Thanks in advance for your help and suggestions.

Josh C. M

&lt;/pre&gt;</description>
    <dc:creator>Simon Horne</dc:creator>
    <dc:date>2012-04-11T05:29:59</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.telephony.h323plus/941">
    <title>H323plus support for UDP signalling</title>
    <link>http://permalink.gmane.org/gmane.comp.telephony.h323plus/941</link>
    <description>&lt;pre&gt;Hi all,

Just curious, does H323plus support signalling via UDP? If not, what are
the advantages of using TCP signalling over UDP, aside from it being
reliable (considering UDP packets doesn't exceed the UDP size limit for
each message sent, if it's even possible with H323 messages) ?

Another question, is it possible to include generic messages within the
signalling messages (setup, process, alert, connect, facility etc) just as
we can with the h.245 OLC messages?

Thanks in advance for your help and suggestions.

Josh C. M
&lt;/pre&gt;</description>
    <dc:creator>J.C Mercier</dc:creator>
    <dc:date>2012-04-11T05:05:49</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.telephony.h323plus/940">
    <title>Re: does H323Plus support H,239? Thanks!</title>
    <link>http://permalink.gmane.org/gmane.comp.telephony.h323plus/940</link>
    <description>&lt;pre&gt;Bo

 

GnuGk fully supports H.239 (most gatekeepers do) and can be used with
H323plus to do H.239. You can do H.239 with or without a gatekeeper.

 

Simon

 

From: h323plus-bounces&amp;lt; at &amp;gt;lists.packetizer.com
[mailto:h323plus-bounces&amp;lt; at &amp;gt;lists.packetizer.com] On Behalf Of Bo Xu
Sent: 11 April 2012 05:41
To: h323plus&amp;lt; at &amp;gt;lists.packetizer.com
Subject: Re: [h323plus] does H323Plus support H,239? Thanks!

 

Hello Simon,

 

Thanks! 

 

could you also tell me if I want to make a H.239-enabled call with H323Plus
terminal, do I also need a H.239-enabled gate-keeper? or I can use one
H323Plus to make a H.239-enabled call to another H323plus directly?  Thanks!

 

also could you tell me if GnuGK supports H.239? Thanks!

 

Regards,

Bo

 

 

 

 

 

 

 

 

On Wed, Apr 4, 2012 at 7:48 PM, Simon Horne &amp;lt;s.horne&amp;lt; at &amp;gt;packetizer.com&amp;gt; wrote:

Yes

 

From: h323plus-bounces&amp;lt; at &amp;gt;lists.packetizer.com
[mailto:h323plus-bounces&amp;lt; at &amp;gt;lists.packetizer.com] On Behalf Of Bo Xu
Sent: 05 April 2012 00:52
To: h323plus&amp;lt; at &amp;gt;lists.packetizer.com
Subject: [h323plus] does H323Plus support H,239? Thanks!

 

Hello,

 

could you tell me id H323Plus support H,239? Thanks!

 

Regards,

Bo

 

 

 

&lt;/pre&gt;</description>
    <dc:creator>Simon Horne</dc:creator>
    <dc:date>2012-04-11T02:07:34</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.telephony.h323plus/939">
    <title>Re: does H323Plus support H,239? Thanks!</title>
    <link>http://permalink.gmane.org/gmane.comp.telephony.h323plus/939</link>
    <description>&lt;pre&gt;Hello Simon,

Thanks!

could you also tell me if I want to make a H.239-enabled call with H323Plus
terminal, do I also need a H.239-enabled gate-keeper? or I can use one
H323Plus to make a H.239-enabled call to another H323plus directly?  Thanks!

also could you tell me if GnuGK supports H.239? Thanks!

Regards,
Bo









On Wed, Apr 4, 2012 at 7:48 PM, Simon Horne &amp;lt;s.horne&amp;lt; at &amp;gt;packetizer.com&amp;gt; wrote:

&lt;/pre&gt;</description>
    <dc:creator>Bo Xu</dc:creator>
    <dc:date>2012-04-10T19:40:53</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.telephony.h323plus/938">
    <title>Re: H323-SIP Gateway with H264 Support</title>
    <link>http://permalink.gmane.org/gmane.comp.telephony.h323plus/938</link>
    <description>&lt;pre&gt;Diego

 

Today I checked into the CVS a compile directive _SIGNAL_ONLY which will
compile the plugin without dependencies on FFMPEG or X264.  You only need
h264-x264.h/.cxx. You can use this in conjunction with _STATIC_LINK to build
a static library to statically link the codec into the h323plus library.

http://h323plus.cvs.sourceforge.net/viewvc/h323plus/h323plus/plugins/video/H
.264/

You will need to configure the makefile.in with these switches (not done
yet)

 

Also G.722 has serious interop issues. Mainly due to IMHO an error in the
RFC. Although the codec is a 16k codec the RTP timestamps are incremented as
8k in the RFC. On the H.323 side they almost always use a 16k timestamp
while on the SIP side it's mostly 8k. 

 

Simon

 

From: h323plus-bounces&amp;lt; at &amp;gt;lists.packetizer.com
[mailto:h323plus-bounces&amp;lt; at &amp;gt;lists.packetizer.com] On Behalf Of Diego Carvalho
Sent: 10 April 2012 04:41
To: h323plus&amp;lt; at &amp;gt;lists.packetizer.com
Subject: Re: [h323plus] H323-SIP Gateway with H264 Support

 

Hi Simon, thanks a lot for you help, but I will have to bother you again.
Now I could compile the H264 plugin after remove the code you told me but I
couldn't make my program load it. I tried 3 different things: first I put
the .so and the help in the same folder as my app, second I tried to install
the plugins in the default folder (/usr/local/lib/opal-1.24.0/) and finally
I tried to set PWLIBPLUGINDIR. None of these worked. I also tried to load
the G722 plugin and at least this one should work because I didn't change
it. Am I missing something?
I also tried to enable the stack's log. At first glance, it didn't show
anything about plugins. Then I used the following code, from Simple app:

PDirectory DefaultDir = PProcess::Current().GetFile().GetDirectory();
PPluginManager &amp;amp; pluginMgr = PPluginManager::GetPluginManager();
pluginMgr.LoadPluginDirectory(DefaultDir);

This makes the app loads the plugins from the current directory. After this
the log shows:

2012/04/09 11:08:17.701    4       pluginmgr.cxx(96)    PLUGIN
Enumerating plugin directory /home/diego/H323Gateway/bin/Debug/
2012/04/09 11:08:17.701    5       pluginmgr.cxx(106)    PLUGIN    Checking
/home/diego/H323Gateway/bin/Debug/g722_audio_pwplugin.so against suffix
_ptplugin
2012/04/09 11:08:17.701    5       pluginmgr.cxx(106)    PLUGIN    Checking
/home/diego/H323Gateway/bin/Debug/g722_audio_pwplugin.so against suffix
_pwplugin
2012/04/09 11:08:17.702    3    h323pluginmgr.cxx(2529)    H323PLUGIN
Loading plugin codec g722_audio_pwplugin
2012/04/09 11:08:17.702    5       pluginmgr.cxx(106)    PLUGIN    Checking
/home/diego/H323Gateway/bin/Debug/h264_video_pwplugin_helper against suffix
_ptplugin
2012/04/09 11:08:17.702    5       pluginmgr.cxx(106)    PLUGIN    Checking
/home/diego/H323Gateway/bin/Debug/h264_video_pwplugin_helper against suffix
_pwplugin
2012/04/09 11:08:17.702    5       pluginmgr.cxx(106)    PLUGIN    Checking
/home/diego/H323Gateway/bin/Debug/h264_video_pwplugin.so against suffix
_ptplugin
2012/04/09 11:08:17.702    5       pluginmgr.cxx(106)    PLUGIN    Checking
/home/diego/H323Gateway/bin/Debug/h264_video_pwplugin.so against suffix
_pwplugin
2012/04/09 11:08:18.053    3    h323pluginmgr.cxx(2525)    H323PLUGIN
Plugin Codec DLL h264_video_pwplugin contains no codec definitions
2012/04/09 11:08:18.058    5       pluginmgr.cxx(106)    PLUGIN    Checking
/home/diego/H323Gateway/bin/Debug/H323Gateway against suffix _ptplugin
2012/04/09 11:08:18.058    5       pluginmgr.cxx(106)    PLUGIN    Checking
/home/diego/H323Gateway/bin/Debug/H323Gateway against suffix _pwplugin

So it seems that it loaded G722 correctly and encontered an error while
loading H264. But when the app starts, there is no G722 on capabilities
table. I also tried to use the G722 plugin in the Simple app and got the
same result. The app shows this in its start up:

Codecs (in preference order):
 Table:
   G.711-ALaw-64k &amp;lt;1&amp;gt;
   G.711-uLaw-64k &amp;lt;2&amp;gt;
   UserInput/hookflash &amp;lt;3&amp;gt;
   UserInput/basicString &amp;lt;4&amp;gt;
   UserInput/dtmf &amp;lt;5&amp;gt;
   UserInput/RFC2833 &amp;lt;6&amp;gt;
   UserInput/Navigation &amp;lt;7&amp;gt;
   UserInput/Softkey &amp;lt;8&amp;gt;
   UserInput/PointDevice &amp;lt;9&amp;gt;
   UserInput/Modal &amp;lt;10&amp;gt;

So, no G722.

A last thing is how to link the plugins statically. You said something about
the CVS. Does it mean that the option to load the plugins statically is not
available in the current version (1.24.0)?
Thanks in advance.

2012/4/3 Simon Horne &amp;lt;s.horne&amp;lt; at &amp;gt;packetizer.com&amp;gt;

Diego

 

There are 2 functions to load the plugin.

PLUGIN_CODEC_IMPLEMENT(H264)  

PLUGIN_CODEC_DLL_API struct PluginCodec_Definition *
PLUGIN_CODEC_GET_CODEC_FN(unsigned * count, unsigned version)

These are left as they are (including all the macro associated with them)

 

All Encryption/Decryption is handled by the H264Encoder/H264Decoder classes.
Simple remove these classes and everything referenced by the classes.

Where they are instanced.

static void * create_encoder(const struct PluginCodec_Definition *
/*codec*/)

static void * create_decoder(const struct PluginCodec_Definition *
/*codec*/)

return NULL.

 

That's it. It should compile without needing FFMPEG or X264.

 

Simon

 

 

From: h323plus-bounces&amp;lt; at &amp;gt;lists.packetizer.com
[mailto:h323plus-bounces&amp;lt; at &amp;gt;lists.packetizer.com] On Behalf Of Diego Carvalho
Sent: 04 April 2012 03:57


To: h323plus&amp;lt; at &amp;gt;lists.packetizer.com
Subject: Re: [h323plus] H323-SIP Gateway with H264 Support

 

Hi Simon.
Again, I would like to thank you because you helped me to solve two
problems: make SIP and H323 endpoints exchange media directly and set
capabilities by call basis. Actually, the code you showed me didn't work in
my tests (remove all capabilities and then add the ones I want) but I could
at least remove the capabilities I don't want. Anyway, now my last big
problem is the H264 support. I'm totally lost. You said: "Simply supply the
codec definitions and the codec will be available in h323plus. ". But supply
where? I don't know where to define the PluginCodec_Definition or the other
things you mentioned. Since I'm not an expert on H264 (I know enough to make
things work, lol) I would like to use what is already done, I mean, is it
possible to make some changes in the H264 plugin to make it work only for
signaling or I need to make something from the scratch? Regardless the
answer, give me some instructions, please. Thanks in advance.

2012/3/27 Simon Horne &amp;lt;s.horne&amp;lt; at &amp;gt;packetizer.com&amp;gt;

Diego

 

Sorry for delay in replying

With Reference to the document you linked to

The plugin codec exports 2 functions for capability registration

unsigned int PWLibPlugin_GetAPIVersion()

PluginCodec_Definition
&amp;lt;http://www.voxgratia.org/docs/codec_plugins.html#PluginCodec_Definition&amp;gt;  *
OpalCodecPlugin_GetCodecs(unsigned * count, unsigned version)

 

The OpalCodecPlugin_GetCodecs function returns all the information you need
on the signaling side. Simply supply the codec definitions and the codec
will be available in h323plus. 

You DO NOT need to create the Codec Methods which link to FFMPEG/x264.

 

For only supplying the codecs you need rather than removing them for the
call. Clone the Capability List then remove all the orginal and add back the
ones you want.

In your derived 

void H323Connection::OnSetLocalCapabilities()

 

H323Capabilities * myCapabilities(localCapabilities);

localCapabilities.RemoveAll();

 

H323Capability * cap = myCapabilities.FindCapability("H.264*");

If (cap)

  LocalCapabilities.Add(cap);

 

 

Simon

 

From: Diego Carvalho [mailto:diego.cdomingos2010&amp;lt; at &amp;gt;gmail.com] 
Sent: 28 March 2012 06:37
To: Simon Horne


Subject: [h323plus] H323-SIP Gateway with H264 Support

 

Hi Simon, thanks for answering again. Today I could establish SIP -&amp;gt; H323
audio calls. So now I only need to deal with the 2 points below.

I'm really interested in being able to add H.264 in the capability set
without having to link the library with FFMPEG/X264, but I couldn't
understand what you explained. I searched on the internet and found this:
http://www.voxgratia.org/docs/codec_plugins.html
that I believe is related to what you explained but even with this page I
couldn't realize what I have to do. Is it possible to configure the plugin
that comes with the source in this way? I mean, use the plugin in
h323plus/plugin/video/H.264 for only signaling, without have to link with
FFMPEG/X264.
Another question is again about the capabilities. You said that I can remove
the capabilities that aren't supported by the SIP endpoint. But this way, I
will have to add all possible capabilities to my gateway and them remove the
ones that SIP doesn't support. It would be much easier if my gateway could
start without any capabilities and then I add the ones that SIP supports. Is
that possible? If not, I will have to do what you explained but when I will
add all the capabilities again to be ready to handle the next call?
Again, thanks for all the help. 

 

2012/3/23 Simon Horne &amp;lt;s.horne&amp;lt; at &amp;gt;packetizer.com&amp;gt;

Diego

 

There is some issues with changes in FFMPEG v54 and a number of function
names changed and others were depreciated recommend v52. I am currently
working through issues with v54. Again X264 is a moving target but last I
looked it compiled on Linux. On Windows is a whole different story
unfortunately.

 

If you are only using the codec for signaling there should be no need to
link to either FFMPEG or X264 and you can gut the plugins and only define
the PluginCodec_Definitions,  Plugin_Codec_Implementation() and
PLUGIN_CODEC_GET_CODEC_FN. These are the signaling parts of the codec. The
Encoder/Decoder contexts can be removed. There is some changes in the CVS to
also allow you to load these plugins statically see the
openh323buildopt.h.in.

 

To filter capabilities on a call by call basis you can do this by overriding
H323Capabilities::OnSetLocalCapabilities() and use the
localCapabilities.Remove() function to remove the capabilities not used on
the SIP side.

 

Simon

 

From: h323plus-bounces&amp;lt; at &amp;gt;lists.packetizer.com
[mailto:h323plus-bounces&amp;lt; at &amp;gt;lists.packetizer.com] On Behalf Of Diego Carvalho
Sent: 23 March 2012 22:44
To: h323plus&amp;lt; at &amp;gt;lists.packetizer.com


Subject: Re: [h323plus] H323-SIP Gateway with H264 Support

 

Hi Simon and "chr_cb". First of all, thanks for your help. Today I was able
to establish an audio only call between H323 and SIP using the gateway I'm
developing. This is great but I still have some problems and I appreciate
any help on this:
1) Like I said, it was an audio only call. I was able to compile the plugins
with the packages from Ubuntu repositories (libx264-dev, libavcodec-dev and
libavutil-dev) but my project also uses ffmpeg and x264 so I would like to
compile with the latest source code from git we use. The config.log shows
some errors and on the internet I saw somebody saying that only a specific
version of ffmpeg allows the compilation. Is that true? If so, what would be
the version of ffmpeg and x264 I should use? Again, I would like to
reiterate that I only want to have H264 on my capabilities list (I don't
want to capture/render video). Do I indeed need the plugin? Is there another
way?
2) If I set the gateway capabilities in the beginning it works but I want so
set them in a later time. Specifically, I receive the call and send an
invite on hold to SIP. Then it will answer with 200 OK with SDP. In this
moment, when I have the SIP SDP, I want to set the gateway capabilities
based on what the SIP side supports. How can I do this? If I try to add in
this moment it simply doesn't add them.
Thanks in advance.

2012/3/13 Simon Horne &amp;lt;s.horne&amp;lt; at &amp;gt;packetizer.com&amp;gt;

Diego

The plugins load default capability instances into the H323Endpoint.
When the H323Connection is created these capabilities are cloned
In H323Connection::OnSetLocalCapabilities()
Simply remove the unmatched capabilities
localCapabilities.Remove("H.264*");

The H323_ExternalRTPChannel does not handle RTP but can be used to not use
the internal RTP system. You can have your own external RTP stack or not
have one at all.
You needed to read and populate H245_H2250LogicalChannelParameters in the
send and receive message of the class with those of the SIP Client.

I do have serious doubts what you are planning will work not because it
can't technically work but because of the differences in H.323 and SIP with
Video. H.323 is very strict on rules while SIP is very loose on
interpretations.
Here are the problems
1. RTP packetization H.323 says strictly single NAL SIP is undefined 2
options (Single NAL/Fragmented units) . You will get video on the H.323 side
just fine but your SIP side with some devices may not be able to decode.
2. Payload Type for H.264 is specified as being flexible but a lot of SIP
implementations have them fixed (usually 96 or 97) so H.323 requests 103
SIP always ends 97  no video on the H.323 side. There is no way you can fix
this with signaling as SIP tells the other party what it is going to send
and H.323 tells the party what it wants to receive. You have to proxy the
media to fix the payload type number.

Good luck.

Simon

============================================================================
=============================================

From: Diego Carvalho [mailto:diego.cdomingos2010&amp;lt; at &amp;gt;gmail.com]
Sent: 14 March 2012 06:09
To: Simon Horne
Subject: Re: [h323plus] H323-SIP Gateway with H264 Support


Hi Simon, thanks for answering but I still have some doubts:
You said that this plugin will add the capability automatically. Actually,
as I said, I'm building a H323-SIP gateway so, for instance, when the SIP
endpoint is making a call I want to add the H264 capability only if the SIP
endpoint offers it. Will I be able to add the capability manually? For
instance, using localCapabilities.Add(new H323_H264Capability()). To
sumarize, I want to be able to add (or remove if it was automatically added
and the current call does not offer it) manualy the H264 capability.
Also I don't know if the H323_ExternalRTPChannel applies to my situation.
It's used to pass the RTP to another device. I don't want to handle the RTP
at all (to be clear: I don't want RTP arriving on the gateway's network
card). I want to send to h323 the RTP address/port SIP offered and
vice-versa, so the RTP will flow directly between the endpoints. Any
thoughts? Thanks in advance.
2012/3/13 Simon Horne &amp;lt;s.horne&amp;lt; at &amp;gt;packetizer.com&amp;gt;
Diego
 
H.264 is a video plugin in the plugin/video directory. You will need X264
and FFMPEG.  For Ubuntu they are libx264-dev  libavcodec-dev and
libavutil-dev.
 
You build the plugin .so and the helper (in the gpl subdirectory) and place
them both in the same directory as you app. The application will load them
at startup and automatically add the capability to the capabilityset etc
 
If you don't want to use the plugin for RTP then have a look at the
H323_ExternalRTPChannel. This will bypass the RTP handling in the codec to
whatever you want.
http://www.voxgratia.org/docs/external_rtp.html
(its from 2004 but still current)
 
Simon
 
 
From: h323plus-bounces&amp;lt; at &amp;gt;lists.packetizer.com
[mailto:h323plus-bounces&amp;lt; at &amp;gt;lists.packetizer.com] On Behalf Of Diego Carvalho
Sent: 14 March 2012 03:05
To: h323plus&amp;lt; at &amp;gt;lists.packetizer.com
Subject: [h323plus] H323-SIP Gateway with H264 Support
 
Hi all,
I'm working on a h323-sip gateway with video (H264) support and I'm facing
some problems. I'm new with H323plus and with h323 protocol itself (I'm
learning as I go) so excuse me if I say something stupid.
First of all, I believe that the stack can be used to build a gateway but it
seems that it's more focused on terminals. Am I right? So is it possible or
not to build a gateway using it?
Second, there is no native support for H264. The documentation shows the
class hierarchy. For audio we have, for instance, H323Cabability -&amp;gt;
H323RealTimeCapability -&amp;gt; H323AudioCapability -&amp;gt; H323_G711Cabability but we
don't have H323Cabability -&amp;gt; H323RealTimeCapability -&amp;gt; H323VideoCapability
-&amp;gt; H323_H264Cabability. I tried to create this one, extending from
H323Cabability -&amp;gt; H323RealTimeCapability -&amp;gt; H323VideoCapability -&amp;gt;
H323GenericVideoCabability and then I discovered that I would need to
override a function called CreateCodec to return a codec that handles the
video. But I don't want to handle the RTP media. I just want to put H264 in
the terminal capability set and establish a connection in a way that the
H323 and SIP terminals can exchange the media directly. I've heard about a
H264 plugin but it seems that it is for handling the media, so I don't know
if it fits my purpose. How can I achieve this? Is there any plan to support
H264 natively on H323plus? Also I need to get the remote RTP port. The only
way I found to do this is trough H323Connection::OnStartLocicalChannel but
this is called after a channel to handle the data is created and again, I
don't want to handle the RTP data. I appreciate any help. Thanks.

 

 

 

 

 

&lt;/pre&gt;</description>
    <dc:creator>Simon Horne</dc:creator>
    <dc:date>2012-04-10T12:03:46</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.telephony.h323plus/937">
    <title>Re: H323-SIP Gateway with H264 Support</title>
    <link>http://permalink.gmane.org/gmane.comp.telephony.h323plus/937</link>
    <description>&lt;pre&gt;Hi Simon, thanks a lot for you help, but I will have to bother you again.
Now I could compile the H264 plugin after remove the code you told me but I
couldn't make my program load it. I tried 3 different things: first I put
the .so and the help in the same folder as my app, second I tried to
install the plugins in the default folder (/usr/local/lib/opal-1.24.0/) and
finally I tried to set PWLIBPLUGINDIR. None of these worked. I also tried
to load the G722 plugin and at least this one should work because I didn't
change it. Am I missing something?
I also tried to enable the stack's log. At first glance, it didn't show
anything about plugins. Then I used the following code, from Simple app:

PDirectory DefaultDir = PProcess::Current().GetFile().GetDirectory();
PPluginManager &amp;amp; pluginMgr = PPluginManager::GetPluginManager();
pluginMgr.LoadPluginDirectory(DefaultDir);

This makes the app loads the plugins from the current directory. After this
the log shows:

2012/04/09 11:08:17.701    4       pluginmgr.cxx(96)    PLUGIN
Enumerating plugin directory /home/diego/H323Gateway/bin/Debug/
2012/04/09 11:08:17.701    5       pluginmgr.cxx(106)    PLUGIN    Checking
/home/diego/H323Gateway/bin/Debug/g722_audio_pwplugin.so against suffix
_ptplugin
2012/04/09 11:08:17.701    5       pluginmgr.cxx(106)    PLUGIN    Checking
/home/diego/H323Gateway/bin/Debug/g722_audio_pwplugin.so against suffix
_pwplugin
2012/04/09 11:08:17.702    3    h323pluginmgr.cxx(2529)    H323PLUGIN
Loading plugin codec g722_audio_pwplugin
2012/04/09 11:08:17.702    5       pluginmgr.cxx(106)    PLUGIN    Checking
/home/diego/H323Gateway/bin/Debug/h264_video_pwplugin_helper against suffix
_ptplugin
2012/04/09 11:08:17.702    5       pluginmgr.cxx(106)    PLUGIN    Checking
/home/diego/H323Gateway/bin/Debug/h264_video_pwplugin_helper against suffix
_pwplugin
2012/04/09 11:08:17.702    5       pluginmgr.cxx(106)    PLUGIN    Checking
/home/diego/H323Gateway/bin/Debug/h264_video_pwplugin.so against suffix
_ptplugin
2012/04/09 11:08:17.702    5       pluginmgr.cxx(106)    PLUGIN    Checking
/home/diego/H323Gateway/bin/Debug/h264_video_pwplugin.so against suffix
_pwplugin
2012/04/09 11:08:18.053    3    h323pluginmgr.cxx(2525)    H323PLUGIN
Plugin Codec DLL h264_video_pwplugin contains no codec definitions
2012/04/09 11:08:18.058    5       pluginmgr.cxx(106)    PLUGIN    Checking
/home/diego/H323Gateway/bin/Debug/H323Gateway against suffix _ptplugin
2012/04/09 11:08:18.058    5       pluginmgr.cxx(106)    PLUGIN    Checking
/home/diego/H323Gateway/bin/Debug/H323Gateway against suffix _pwplugin

So it seems that it loaded G722 correctly and encontered an error while
loading H264. But when the app starts, there is no G722 on capabilities
table. I also tried to use the G722 plugin in the Simple app and got the
same result. The app shows this in its start up:

Codecs (in preference order):
 Table:
   G.711-ALaw-64k &amp;lt;1&amp;gt;
   G.711-uLaw-64k &amp;lt;2&amp;gt;
   UserInput/hookflash &amp;lt;3&amp;gt;
   UserInput/basicString &amp;lt;4&amp;gt;
   UserInput/dtmf &amp;lt;5&amp;gt;
   UserInput/RFC2833 &amp;lt;6&amp;gt;
   UserInput/Navigation &amp;lt;7&amp;gt;
   UserInput/Softkey &amp;lt;8&amp;gt;
   UserInput/PointDevice &amp;lt;9&amp;gt;
   UserInput/Modal &amp;lt;10&amp;gt;

So, no G722.

A last thing is how to link the plugins statically. You said something
about the CVS. Does it mean that the option to load the plugins statically
is not available in the current version (1.24.0)?
Thanks in advance.

2012/4/3 Simon Horne &amp;lt;s.horne&amp;lt; at &amp;gt;packetizer.com&amp;gt;

&lt;/pre&gt;</description>
    <dc:creator>Diego Carvalho</dc:creator>
    <dc:date>2012-04-09T18:40:41</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.telephony.h323plus/936">
    <title>Re: H323plus problem : Use of non IP transport address:" "</title>
    <link>http://permalink.gmane.org/gmane.comp.telephony.h323plus/936</link>
    <description>&lt;pre&gt;


&lt;/pre&gt;</description>
    <dc:creator>Ashwani Kumar</dc:creator>
    <dc:date>2012-04-09T09:57:26</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.telephony.h323plus/935">
    <title>H323plus problem : Use of non IP transport address: " "</title>
    <link>http://permalink.gmane.org/gmane.comp.telephony.h323plus/935</link>
    <description>&lt;pre&gt;Hi Simon,

I have implemented the code to read remote parameters as given in h323con.h
+1517



*         H323Channel * MyConnection::CreateRealTimeLogicalChannel(
                                        const H323Capability &amp;amp; capability,
                                        H323Channel::Directions dir,
                                        unsigned sessionID,
                                        const
H245_H2250LogicalChannelParameters * param,
                                        RTP_QOS * rtpqos)
         {
           return new H323_ExternalRTPChannel(*this, capability, dir,
sessionID,
                                              externalIpAddress,
externalPort);
         }

         PBoolean OnStartLogicalChannel(H323Channel &amp;amp; channel)
         {
           H323_ExternalRTPChannel &amp;amp; external = (H323_ExternalRTPChannel
&amp;amp;)channel;
           external.GetRemoteAddress(remoteIpAddress, remotePort);
         }


*I am able to read remote end ip and port numbers.

But After implementation of the above code, I am not able to set my local
Ip and port numbers.
Both IP and port number in H.245 message are showing 0 value. Below is the
h323 message:


*2012/04/07 18:24:40.873 4               h323.cxx(4253)  H323
OnOpenLogicalChannel
2012/04/07 18:24:40.873 3           channels.cxx(1042)  H323RTP
OnSendOpenAck
2012/04/07 18:24:40.873 2         transports.cxx(433)   H323    Use of non
IP transport address: ""
2012/04/07 18:24:40.873 2         transports.cxx(433)   H323    Use of non
IP transport address: ""
2012/04/07 18:24:40.873 2           channels.cxx(1064)  H323RTP Sending
open logical channel ACK: sessionID=1
2012/04/07 18:24:40.873 2             h323ep.cxx(2321)  H323    Started
receiving logical channel: G.711-uLaw-64k &amp;lt;2&amp;gt;
2012/04/07 18:24:40.874 3            h323pdu.cxx(630)   H245    Sending PDU
[ip$192.168.7.87:5500/ip$192.168.7.63:63622] :
  response openLogicalChannelAck {
    forwardLogicalChannelNumber = 4
    forwardMultiplexAckParameters = h2250LogicalChannelAckParameters {
      sessionID = 1
      mediaChannel = unicastAddress iPAddress {
        network =  4 octets {
          00 00 00 00                                        ....
        }
        tsapIdentifier = 0
      }
      mediaControlChannel = unicastAddress iPAddress {
        network =  4 octets {
          00 00 00 00                                        ....
        }
        tsapIdentifier = 0
      }
      flowControlToZero = false
    }
  }


*
Please help to solve above problem.



Regards,
Ashwani
&lt;/pre&gt;</description>
    <dc:creator>Ashwani Kumar</dc:creator>
    <dc:date>2012-04-07T13:05:57</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.telephony.h323plus/934">
    <title>Re: Need help to read Remote Port numbers in simph323</title>
    <link>http://permalink.gmane.org/gmane.comp.telephony.h323plus/934</link>
    <description>&lt;pre&gt;Hi Simon,


My Compilation problem has solved.

I have implement the code same way as explained in h323con.h +1528 file.

modified main.cxx (simph323) code is given below:

PBoolean SimpleH323Connection::OnStartLogicalChannel(H323Channel &amp;amp; channel)
{
  if (!H323Connection::OnStartLogicalChannel(channel))
    return FALSE;

  cout &amp;lt;&amp;lt; "I am on Started logical channel: \n";

        PIPSocket::Address ip;
        WORD dataPort;

  switch (channel.GetDirection()) {
    case H323Channel::IsTransmitter :
     cout &amp;lt;&amp;lt; "sending ";
      break;

    case H323Channel::IsReceiver :
      cout &amp;lt;&amp;lt; "AK:receiving ";
      break;

    default :
      break;
  }

  cout &amp;lt;&amp;lt; channel.GetCapability() &amp;lt;&amp;lt; endl;

*
  H323_ExternalRTPChannel &amp;amp; external = (H323_ExternalRTPChannel &amp;amp;)channel;

  cout &amp;lt;&amp;lt; "H323_ExternalRTPChannel params**\n";

        if(external.GetSessionID()==1) {
         external.GetRemoteAddress(ip, dataPort);
        }
*
   *cout &amp;lt;&amp;lt; "***********Remote IP =\n" &amp;lt;&amp;lt; ip;**
   cout &amp;lt;&amp;lt; "***********Remote dataPort=\n" &amp;lt;&amp;lt; dataPort;
*  return TRUE;
}

But simph323 application stop at *H323_ExternalRTPChannel params*  message
and getting segmentation fault problem.

Regards
Ashwani

On Thu, Apr 5, 2012 at 7:44 PM, Ashwani Kumar &amp;lt;ash1412&amp;lt; at &amp;gt;gmail.com&amp;gt; wrote:



&lt;/pre&gt;</description>
    <dc:creator>Ashwani Kumar</dc:creator>
    <dc:date>2012-04-05T18:49:51</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.telephony.h323plus/933">
    <title>Re: Need help to read Remote Port numbers in simph323</title>
    <link>http://permalink.gmane.org/gmane.comp.telephony.h323plus/933</link>
    <description>&lt;pre&gt;
&lt;/pre&gt;</description>
    <dc:creator>Ashwani Kumar</dc:creator>
    <dc:date>2012-04-05T14:14:16</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.telephony.h323plus/932">
    <title>Re: does H323Plus support H,239? Thanks!</title>
    <link>http://permalink.gmane.org/gmane.comp.telephony.h323plus/932</link>
    <description>&lt;pre&gt;Yes

 

From: h323plus-bounces&amp;lt; at &amp;gt;lists.packetizer.com
[mailto:h323plus-bounces&amp;lt; at &amp;gt;lists.packetizer.com] On Behalf Of Bo Xu
Sent: 05 April 2012 00:52
To: h323plus&amp;lt; at &amp;gt;lists.packetizer.com
Subject: [h323plus] does H323Plus support H,239? Thanks!

 

Hello,

 

could you tell me id H323Plus support H,239? Thanks!

 

Regards,

Bo

 

 

&lt;/pre&gt;</description>
    <dc:creator>Simon Horne</dc:creator>
    <dc:date>2012-04-04T23:48:04</dc:date>
  </item>
  <textinput rdf:about="http://search.gmane.org/?group=$group=gmane.comp.telephony.h323plus">
    <title>Search Engine</title>
    <description>Search the mailing list at Gmane</description>
    <name>query</name>
    <link>http://search.gmane.org/?group=$group=gmane.comp.telephony.h323plus</link>
  </textinput>
</rdf:RDF>

