[Asterisk-Users] Little patch for packetization in G729 in chan_h323

mawali at news.icns.com mawali at news.icns.com
Sat Aug 23 19:25:05 MST 2003


I dont check it, g729Frames would have either default value which is 8 or 
take the value which is in config file if "g729Frames=*" exists. The 
"extern int g729Frames" in ast_h323.cpp makes sure it is available in 
ast_h323 side of the code. You can see the "asterick -vvvc" output below 
after I put "g729Frames=4" in the h323.conf.


 [chan_h323.so] => (The NuFone Network's Open H.323 Channel Driver)
  == Creating H.323 Endpoint
setting g729Frames to 4 * 10  <<----- Here is my debug statement. 
  == H.323 listener started

Here you see that the value "4" in h323.conf is being passed correctly to 
the h323 side of the driver. As I mentioned it is a hack.

Regards


On Sat, 23 Aug 2003, Jeremy McNamara wrote:

> I cannot see how this code does anything at all.  There are two sides to 
> my channel driver, the Asterisk side and the H.323 side.   The 
> configuration is in the Asterisk side.  Since you defined the int 
> g729Frames =8 in the Asterisk side, you would need to pass that value to 
> the H.323 side.
> 
> Did you actually check the value of  g729Frames in ast_h323.cpp before 
> calling
> 
> g729aCap->SetTxFramesInPacket(g729Frames); ?
> 
> 
> Jeremy McNamara
> 
> 
> 
> 
> mawali at news.icns.com wrote:
> 
> >Hi
> >I have hacked this patch to make G729/chan_h323 work with most other 
> >platforms, all it does is let me set the packetization interval. It 
> >defaults to 24 which is way too high for me and even though it should
> >work but does not for some reason and after connecting the voice coming 
> >from asterisk is really bad (oversampled??). This lets you set the 
> >packetization to your choice (I use a value between 2 to 8) by putting 
> >"g729Frames=<number>" in the h323.conf. For me g729Frames=2 works pretty 
> >good.
> >
> >I am getting really good quality with G729 now, (this is the codec I 
> >bought from digium)> And it is a G729AnnexA codec.
> >
> >Apply it to latest CVS by (should apply fine to older ones too)
> >
> >$ gunzip mawali_patch_g729packets.gz
> >$ cd asterisk
> >$ patch -p1 < ../mawali_patch_g729packets
> >
> >The patch is below and also attached as gz, since it is tiny.
> >
> >diff -aurp asterisk/channels/chan_h323.c asterisk-cvs030823/channels/chan_h323.c
> >--- asterisk/channels/chan_h323.c       2003-08-16 12:00:22.000000000 -0500
> >+++ asterisk-cvs030823/channels/chan_h323.c     2003-08-23 14:16:51.000000000 -0500
> >@@ -74,6 +74,9 @@ static int  usingGk;
> > static int     port = 1720;
> > static int  gkroute = 0;
> >
> >+/* Added for G729 Packetization */
> >+int  g729Frames = 8;
> >+
> > /* Just about everybody seems to support ulaw, so make it a nice default */
> > static int capability = AST_FORMAT_ULAW;
> >
> >@@ -1365,6 +1368,10 @@ int reload_config()
> >
> >        v = ast_variable_browse(cfg, "general");
> >        while(v) {
> >+                /* Temporary hack to read G729 Packetization interval */
> >+                if (!strcasecmp(v->name, "g729Frames")) {
> >+                       g729Frames = (int)strtol(v->value, NULL, 10);
> >+                }
> >                /* Create the interface list */
> >                if (!strcasecmp(v->name, "port")) {
> >                        port = (int)strtol(v->value, NULL, 10);
> >diff -aurp asterisk/channels/h323/ast_h323.cpp asterisk-cvs030823/channels/h323/ast_h323.cpp
> >--- asterisk/channels/h323/ast_h323.cpp 2003-08-12 17:20:12.000000000 -0500
> >+++ asterisk-cvs030823/channels/h323/ast_h323.cpp       2003-08-23 14:13:31.000000000 -0500
> >@@ -34,6 +34,9 @@
> > #define BUILD_TYPE    ReleaseCode
> > #define BUILD_NUMBER  0
> >
> >+/* Temporary addition for G729 Packetization interval */
> >+extern int g729Frames;
> >+
> > /** Counter for the number of connections */
> > int channelsOpen;
> >
> >@@ -784,6 +787,9 @@ int h323_set_capability(int cap, int dtm
> >        if (cap & AST_FORMAT_G729A) {
> >                H323_G729ACapability *g729aCap;
> >                endPoint->SetCapability(0, 0, g729aCap = new H323_G729ACapability);
> >+                cout << "setting g729Frames to " << g729Frames << " * 10\n";
> >+                g729aCap->SetTxFramesInPacket(g729Frames);
> >+
> >        }
> > #endif
> >
> >
> >  
> >
> 
> 
> _______________________________________________
> Asterisk-Users mailing list
> Asterisk-Users at lists.digium.com
> http://lists.digium.com/mailman/listinfo/asterisk-users
> 





More information about the asterisk-users mailing list