[prev in list] [next in list] [prev in thread] [next in thread] 

List:       asterisk-video
Subject:    [Asterisk-video] [patch] libh324m / app_h324m reversing bits
From:       Emmanuel BUU <emmanuel.buu () ives ! fr>
Date:       2009-08-21 10:36:24
Message-ID: 4A8E78A8.9080500 () ives ! fr
[Download RAW message or body]

Hello,

Here is a set of patches that enable reversing bits of the H.245 
bitstream per configuration. This enable the seamless installation of 
the h324m stack on both misdn and zaptel driver without digging and 
recompiling the code.

in /etc/asterisk/h324m.conf, there is a new parameter

[h245]
reversebits=0|1


by default it is set to 1.


Enjoy.

--- for libh324m


Index: include/h324m.h
===================================================================
--- include/h324m.h    (révision 269)
+++ include/h324m.h    (copie de travail)
@@ -18,7 +18,7 @@
 {
 #endif
 void     TIFFReverseBits(unsigned char* buffer,int length);
-
+void    H324MSetReverseBits(int reverse);
 void     H324MLoggerSetLevel(int level);
 
 void*    H324MSessionCreate(void);
Index: h324m.cpp
===================================================================
--- h324m.cpp    (révision 269)
+++ h324m.cpp    (copie de travail)
@@ -5,6 +5,8 @@
 
 #include "src/H324MSession.h"
 
+static bool _reverseBits = true;
+
 extern "C"
 {
 
@@ -13,6 +15,11 @@
     Logger::SetLevel(level);   
 }
 
+void H324MSetReverseBits(int reverse)
+{
+    _reverseBits = (bool) reverse;
+}
+
 void H324MLoggerSetCallback(int (*callback)  (const char *, va_list))
 {
     Logger::SetCallback(callback);
@@ -45,14 +52,14 @@
 
 int  H324MSessionRead(void * id,unsigned char *buffer,int len)
 {
-    TIFFReverseBits(buffer,len);
+    if (_reverseBits) TIFFReverseBits(buffer,len);
     return ((H324MSession*)id)->Read(buffer,len);
 }
 
 int  H324MSessionWrite(void * id,unsigned char *buffer,int len)
 {    
     int ret = ((H324MSession*)id)->Write(buffer,len);
-    TIFFReverseBits(buffer,len);
+    if (_reverseBits) TIFFReverseBits(buffer,len);
     return ret;
 }
 

--- for app_h324m

Index: app_h324m.c
===================================================================
--- app_h324m.c    (révision 690)
+++ app_h324m.c    (copie de travail)
@@ -129,7 +129,7 @@
   struct ast_config *cfg;
   struct ast_variable *var;
   char *tmp;
-  int level;
+  int level, reverse;
 
   cfg = (void *)ast_config_load(config);
   if (!cfg)
@@ -170,6 +170,7 @@
     level = 1;
   }
 
+
   tmp = (void *)ast_variable_retrieve(cfg, "general", "boardcodec");
   if ((tmp) && (strlen(tmp) < 9))
   {
@@ -194,12 +195,27 @@
     strcpy(boardcodec, DEFAULT_BOARDCODEC);
   }
 
-  ast_config_destroy(cfg);
 
+   tmp = (void *)ast_variable_retrieve(cfg, "h245", "reversebits");
+   if (tmp)
+   {
+      if (sscanf(tmp, "%d", &reverse) >=1 )
+      {
+          ast_verbose(VERBOSE_PREFIX_3 "H245 reverse bits : %s\n",
+            (reverse == 0)?"no":"yes");
+      H324MReverseBit(reverse);
+      }
+      else
+      {
+      ast_log(LOG_WARNING, "Invalid reverse bit flag %s. Bits will be 
reversed.\n", tmp);
+      }
+   }
+   ast_config_destroy(cfg);
+
   if (level > 0)
   {
-    ast_verbose(VERBOSE_PREFIX_3 "Debug level  : %d\n", level);
-    ast_verbose(VERBOSE_PREFIX_3 "Board codec  : %s\n", boardcodec);
+      ast_verbose(VERBOSE_PREFIX_3 "Debug level  : %d\n", level);
+      ast_verbose(VERBOSE_PREFIX_3 "Board codec  : %s\n", boardcodec);
   }
  




_______________________________________________
--Bandwidth and Colocation Provided by http://www.api-digital.com--

asterisk-video mailing list
To UNSUBSCRIBE or update options visit:
   http://lists.digium.com/mailman/listinfo/asterisk-video

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic