diff options
| author | 2011-01-01 20:19:56 +0000 | |
|---|---|---|
| committer | 2011-01-01 20:19:56 +0000 | |
| commit | c601b5a27f74b16158adafe429faefbe573e64a2 (patch) | |
| tree | a3cde3206a45628f8ac86e8dfbdab70b20c3a831 /src/modules/dcc/gsmcodec.cpp | |
| parent | probable compilation fix for rijndaled/crypto++ (diff) | |
| download | KVIrc-c601b5a27f74b16158adafe429faefbe573e64a2.tar.gz KVIrc-c601b5a27f74b16158adafe429faefbe573e64a2.tar.bz2 KVIrc-c601b5a27f74b16158adafe429faefbe573e64a2.zip | |
The big rename for modules. Still some details remaining.
git-svn-id: https://svn.kvirc.de/svn/trunk/kvirc@5284 17fca916-40b9-46aa-a4ea-0a15b648b75c
Diffstat (limited to 'src/modules/dcc/gsmcodec.cpp')
| -rw-r--r-- | src/modules/dcc/gsmcodec.cpp | 148 |
1 files changed, 0 insertions, 148 deletions
diff --git a/src/modules/dcc/gsmcodec.cpp b/src/modules/dcc/gsmcodec.cpp deleted file mode 100644 index 21635ebd9..000000000 --- a/src/modules/dcc/gsmcodec.cpp +++ /dev/null @@ -1,148 +0,0 @@ -//============================================================================= -// -// File : gsmcodec.cpp -// Creation date : Wed Aug 22 19:12:55 2001 GMT by Szymon Stefanek -// -// This file is part of the KVIrc irc client distribution -// Copyright (C) 2001-2010 Szymon Stefanek (pragma at kvirc dot net) -// -// This program is FREE software. You can redistribute it and/or -// modify it under the terms of the GNU General Public License -// as published by the Free Software Foundation; either version 2 -// of the License, or (at your opinion) any later version. -// -// This program is distributed in the HOPE that it will be USEFUL, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -// See the GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program. If not, write to the Free Software Foundation, -// Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -// -//============================================================================= - -#define _GSMCODEC_CPP_ - -#include "gsmcodec.h" - -#ifdef COMPILE_USE_GSM - #include <dlfcn.h> - - #define GSM_PACKED_FRAME_SIZE_IN_BYTES 33 - #define GSM_UNPACKED_FRAME_SIZE_IN_BYTES 320 - #define GSM_UNPACKED_FRAME_SIZE_IN_SHORTS 160 - - void * (*gsm_session_create)() = 0; - void (*gsm_session_destroy)(void *) = 0; - void (*gsm_session_encode)(void *,short *,unsigned char *) = 0; - int (*gsm_session_decode)(void *,unsigned char *,short *) = 0; - - void * g_pGSMCodecLibraryHandle = 0; - - bool kvi_gsm_codec_init() - { - if(g_pGSMCodecLibraryHandle)return true; // Already initialized - - g_pGSMCodecLibraryHandle = dlopen("libgsm.so",RTLD_NOW | RTLD_GLOBAL); - if(!g_pGSMCodecLibraryHandle)return false; // no way to open it - - gsm_session_create = (void * (*)()) dlsym(g_pGSMCodecLibraryHandle,"gsm_create"); - gsm_session_destroy = (void (*)(void *)) dlsym(g_pGSMCodecLibraryHandle,"gsm_destroy"); - gsm_session_encode = (void (*)(void *,short *,unsigned char *)) dlsym(g_pGSMCodecLibraryHandle,"gsm_encode"); - gsm_session_decode = (int (*)(void *,unsigned char *,short *)) dlsym(g_pGSMCodecLibraryHandle,"gsm_decode"); - - if(! (gsm_session_create && gsm_session_destroy && gsm_session_encode && gsm_session_decode)) - { - dlclose(g_pGSMCodecLibraryHandle); - g_pGSMCodecLibraryHandle = 0; - return false; - } - return true; - } - - void kvi_gsm_codec_done() - { - if(g_pGSMCodecLibraryHandle) - { - dlclose(g_pGSMCodecLibraryHandle); - g_pGSMCodecLibraryHandle = 0; - } - } - - - KviDccVoiceGsmCodec::KviDccVoiceGsmCodec() - : KviDccVoiceCodec() - { - m_pEncodeState = gsm_session_create(); - m_pDecodeState = gsm_session_create(); - m_szName = "gsm (compression 33:320)"; - } - - KviDccVoiceGsmCodec::~KviDccVoiceGsmCodec() - { - gsm_session_destroy(m_pEncodeState); - gsm_session_destroy(m_pDecodeState); - } - - void KviDccVoiceGsmCodec::encode(KviDataBuffer * signal,KviDataBuffer * stream) - { - if(signal->size() < GSM_UNPACKED_FRAME_SIZE_IN_BYTES)return; // nothing to encode - - unsigned char * ptr = signal->data(); - - int uFrames = signal->size() / GSM_UNPACKED_FRAME_SIZE_IN_BYTES; - int uTotalDataCompressed = uFrames * GSM_UNPACKED_FRAME_SIZE_IN_BYTES; - int uFrameOffset = stream->size(); - unsigned char * endPtr = ptr + uTotalDataCompressed; - - stream->addSize(GSM_PACKED_FRAME_SIZE_IN_BYTES * uFrames); - - while(ptr != endPtr) - { - gsm_session_encode(m_pEncodeState,(short *)ptr,stream->data() + uFrameOffset); - ptr += GSM_UNPACKED_FRAME_SIZE_IN_BYTES; - uFrameOffset += GSM_PACKED_FRAME_SIZE_IN_BYTES; - } - signal->remove(uTotalDataCompressed); - } - - void KviDccVoiceGsmCodec::decode(KviDataBuffer * stream,KviDataBuffer * signal) - { - if(stream->size() < GSM_PACKED_FRAME_SIZE_IN_BYTES)return; // nothing to decode - - unsigned char * ptr = stream->data(); - - // Gsm codec - int uFrames = stream->size() / GSM_PACKED_FRAME_SIZE_IN_BYTES; - int uTotalDataDecompressed = uFrames * GSM_PACKED_FRAME_SIZE_IN_BYTES; - int uSignalOffset = signal->size(); - unsigned char * endPtr = ptr + (uTotalDataDecompressed); - - signal->addSize(GSM_UNPACKED_FRAME_SIZE_IN_BYTES * uFrames); - - while(ptr != endPtr) - { - // We don't check the return value here - // Well..it is either an unrecoverable internal error - // or a broken frame... - // but if we receive broken frames over DCC...well....better - // check the hardware...or the remote codec as well... - gsm_session_decode(m_pDecodeState,ptr,(short *)(signal->data() + uSignalOffset)); - ptr += GSM_PACKED_FRAME_SIZE_IN_BYTES; - uSignalOffset += GSM_UNPACKED_FRAME_SIZE_IN_BYTES; - } - stream->remove(uTotalDataDecompressed); - } - - int KviDccVoiceGsmCodec::encodedFrameSize() - { - return GSM_PACKED_FRAME_SIZE_IN_BYTES; - } - - int KviDccVoiceGsmCodec::decodedFrameSize() - { - return GSM_UNPACKED_FRAME_SIZE_IN_BYTES; - } - -#endif // COMPILE_USE_GSM |
