Add global variable for Law encoded silence
authorAndreas Eversberg <jolly@eversberg.eu>
Sat, 28 Jul 2012 09:15:30 +0000 (11:15 +0200)
committerAndreas Eversberg <jolly@eversberg.eu>
Sun, 16 Dec 2012 09:10:33 +0000 (10:10 +0100)
alawulaw.c
alawulaw.h
mISDN.cpp

index 72fee4b..cafe1af 100644 (file)
@@ -10,6 +10,7 @@
 \*****************************************************************************/ 
 
 signed int *audio_law_to_s32;
 \*****************************************************************************/ 
 
 signed int *audio_law_to_s32;
+unsigned char silence;
 
 /* ulaw -> signed 16-bit */
 static signed int audio_ulaw_to_s32[] =
 
 /* ulaw -> signed 16-bit */
 static signed int audio_ulaw_to_s32[] =
@@ -229,6 +230,7 @@ void generate_tables(char law)
        int i, j;
 
        if (law == 'a') {
        int i, j;
 
        if (law == 'a') {
+               silence = 0x2a;
                audio_law_to_s32=audio_alaw_to_s32;
                /* generating alaw-table */
                i = j = 0;
                audio_law_to_s32=audio_alaw_to_s32;
                /* generating alaw-table */
                i = j = 0;
@@ -242,6 +244,7 @@ void generate_tables(char law)
                        i++;
                }
        } else {
                        i++;
                }
        } else {
+               silence = 0xff;
                audio_law_to_s32=audio_ulaw_to_s32;
                /* generating ulaw-table */
                i = j = 0;
                audio_law_to_s32=audio_ulaw_to_s32;
                /* generating ulaw-table */
                i = j = 0;
index a112361..970839e 100644 (file)
@@ -9,6 +9,7 @@
 **                                                                           **
 \*****************************************************************************/ 
 extern signed int *audio_law_to_s32;
 **                                                                           **
 \*****************************************************************************/ 
 extern signed int *audio_law_to_s32;
+extern unsigned char silence;
 extern unsigned char audio_s16_to_law[65536];
 extern short audio_alaw_relations[];
 void generate_tables(char law);
 extern unsigned char audio_s16_to_law[65536];
 extern short audio_alaw_relations[];
 void generate_tables(char law);
index 39ccc35..585ae82 100644 (file)
--- a/mISDN.cpp
+++ b/mISDN.cpp
@@ -2169,7 +2169,7 @@ int PmISDN::bridge_rx(unsigned char *data, int length)
        if (p_m_load == 0 && ISDN_LOAD > 0) {
                hh->prim = PH_DATA_REQ; 
                hh->id = 0;
        if (p_m_load == 0 && ISDN_LOAD > 0) {
                hh->prim = PH_DATA_REQ; 
                hh->id = 0;
-               memset(buf+MISDN_HEADER_LEN, (options.law=='a')?0x2a:0xff, ISDN_LOAD);
+               memset(buf+MISDN_HEADER_LEN, silence, ISDN_LOAD);
                ret = sendto(p_m_mISDNport->b_sock[p_m_b_index].fd, buf, MISDN_HEADER_LEN+ISDN_LOAD, 0, NULL, 0);
                if (ret <= 0)
                        PERROR("Failed to send to socket %d\n", p_m_mISDNport->b_sock[p_m_b_index].fd);
                ret = sendto(p_m_mISDNport->b_sock[p_m_b_index].fd, buf, MISDN_HEADER_LEN+ISDN_LOAD, 0, NULL, 0);
                if (ret <= 0)
                        PERROR("Failed to send to socket %d\n", p_m_mISDNport->b_sock[p_m_b_index].fd);