]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
freetdm: apply gain before dumping to file
authorMoises Silva <moy@sangoma.com>
Wed, 6 Apr 2011 22:42:01 +0000 (18:42 -0400)
committerMoises Silva <moy@sangoma.com>
Thu, 7 Apr 2011 15:22:36 +0000 (11:22 -0400)
libs/freetdm/src/ftdm_io.c

index 96fd235ad24d7207dc77ff63bfc800e100aa93fa..1ecd816658ecf6cced321a651b08b3d5e0831f51 100644 (file)
@@ -3565,6 +3565,14 @@ static FIO_READ_FUNCTION(ftdm_raw_read)
        ftdm_status_t  status = ftdmchan->fio->read(ftdmchan, data, datalen);
        if (status == FTDM_SUCCESS && ftdmchan->fds[FTDM_READ_TRACE_INDEX] > -1) {
                ftdm_size_t dlen = *datalen;
+               if (ftdm_test_flag(ftdmchan, FTDM_CHANNEL_USE_RX_GAIN) 
+                       && (ftdmchan->native_codec == FTDM_CODEC_ALAW || ftdmchan->native_codec == FTDM_CODEC_ULAW)) {
+                       int i = 0;
+                       unsigned char *rdata = data;
+                       for (i = 0; i < *datalen; i++) {
+                               rdata[i] = ftdmchan->rxgain_table[rdata[i]];
+                       }
+               }
                if ((ftdm_size_t)write(ftdmchan->fds[FTDM_READ_TRACE_INDEX], data, (int)dlen) != dlen) {
                        ftdm_log(FTDM_LOG_WARNING, "Raw input trace failed to write all of the %"FTDM_SIZE_FMT" bytes\n", dlen);
                }
@@ -3730,7 +3738,6 @@ FT_DECLARE(ftdm_status_t) ftdm_channel_read(ftdm_channel_t *ftdmchan, void *data
        ftdm_status_t status = FTDM_FAIL;
        fio_codec_t codec_func = NULL;
        ftdm_size_t max = *datalen;
-       unsigned i = 0;
 
        ftdm_assert_return(ftdmchan != NULL, FTDM_FAIL, "ftdmchan is null\n");
        ftdm_assert_return(ftdmchan->fio != NULL, FTDM_FAIL, "No I/O module attached to ftdmchan\n");
@@ -3769,13 +3776,6 @@ FT_DECLARE(ftdm_status_t) ftdm_channel_read(ftdm_channel_t *ftdmchan, void *data
                goto done;
        }
 
-       if (ftdm_test_flag(ftdmchan, FTDM_CHANNEL_USE_RX_GAIN) 
-               && (ftdmchan->native_codec == FTDM_CODEC_ALAW || ftdmchan->native_codec == FTDM_CODEC_ULAW)) {
-               unsigned char *rdata = data;
-               for (i = 0; i < *datalen; i++) {
-                       rdata[i] = ftdmchan->rxgain_table[rdata[i]];
-               }
-       }
        handle_tone_generation(ftdmchan);
 
        if (ftdm_test_flag(ftdmchan, FTDM_CHANNEL_TRANSCODE) && ftdmchan->effective_codec != ftdmchan->native_codec) {