diff --git a/daemon/src/Makefile.am b/daemon/src/Makefile.am index a41ef7488264d1570730e639641bdffb1921efad..94d57850f5cdb515472d468d568f56e1fe0b77ab 100644 --- a/daemon/src/Makefile.am +++ b/daemon/src/Makefile.am @@ -39,7 +39,6 @@ noinst_LTLIBRARIES = libsflphone.la noinst_HEADERS = \ global.h \ - codec.h \ conference.h \ voiplink.h \ preferences.h \ diff --git a/daemon/src/audio/codecs/alaw.cpp b/daemon/src/audio/codecs/alaw.cpp index da917e718288d176461722de130d9262776c77db..0fffb18a434773391378b80a174a55deb8740df7 100644 --- a/daemon/src/audio/codecs/alaw.cpp +++ b/daemon/src/audio/codecs/alaw.cpp @@ -123,13 +123,13 @@ class Alaw : public sfl::AudioCodec { // the class factories // cppcheck-suppress unusedFunction -extern "C" sfl::Codec* CODEC_ENTRY() +extern "C" sfl::AudioCodec* AUDIO_CODEC_ENTRY() { return new Alaw; } // cppcheck-suppress unusedFunction -extern "C" void destroy(sfl::Codec* a) +extern "C" void destroy(sfl::AudioCodec* a) { delete a; } diff --git a/daemon/src/audio/codecs/audiocodec.h b/daemon/src/audio/codecs/audiocodec.h index 004061bb5b18681fc6bbb18ee542ee1c8f401fee..8d5759d0bd97cb105b9e3821976d1932b9465bd5 100644 --- a/daemon/src/audio/codecs/audiocodec.h +++ b/daemon/src/audio/codecs/audiocodec.h @@ -36,11 +36,9 @@ #include "cc_config.h" #include <ccrtp/formats.h> // for ost::DynamicPayloadFormat -#include "codec.h" - /* bump when codec binary interface changes */ -#define CODEC_ENTRY create_1_2_0 -#define CODEC_ENTRY_SYMBOL "create_1_2_0" +#define AUDIO_CODEC_ENTRY create_1_2_0 +#define AUDIO_CODEC_ENTRY_SYMBOL "create_1_2_0" // We assume all decoders will be fed 20ms of audio or less // And we'll resample them to 44.1kHz or less @@ -49,7 +47,7 @@ namespace sfl { -class AudioCodec : public Codec { +class AudioCodec { public: AudioCodec(uint8 payload, const std::string &codecName, int clockRate, int frameSize, int channel); @@ -61,10 +59,7 @@ class AudioCodec : public Codec { virtual ~AudioCodec() {}; - /** - * @Override - */ - std::string getMimeSubtype() const; + virtual std::string getMimeSubtype() const; /** * Decode an input buffer and fill the output buffer with the decoded data @@ -80,14 +75,8 @@ class AudioCodec : public Codec { */ virtual int encode(unsigned char *dst, short *src, size_t buffer_size) = 0; - /** - * @Override - */ - uint8 getPayloadType() const ; + virtual uint8 getPayloadType() const; - /** - * @Override - */ void setPayloadType(uint8 pt) { payload_ = pt; } @@ -97,15 +86,9 @@ class AudioCodec : public Codec { */ bool hasDynamicPayload() const; - /** - * @Override - */ - uint32 getClockRate() const; + virtual uint32 getClockRate() const; - /** - * @Override - */ - double getBitRate() const; + virtual double getBitRate() const; /** * @return the framing size for this codec. @@ -139,4 +122,8 @@ protected: }; } // end namespace sfl + +typedef sfl::AudioCodec* create_t(); +typedef void destroy_t(sfl::AudioCodec* codec); + #endif diff --git a/daemon/src/audio/codecs/audiocodecfactory.cpp b/daemon/src/audio/codecs/audiocodecfactory.cpp index 5318b1cd721bb508ff29496a90d56fe519e2d85a..f38c3487b793cd964a2db6fbe107281ad558b9d4 100644 --- a/daemon/src/audio/codecs/audiocodecfactory.cpp +++ b/daemon/src/audio/codecs/audiocodecfactory.cpp @@ -50,13 +50,13 @@ AudioCodecFactory::AudioCodecFactory() : codecsMap_(), defaultCodecList_(), libCache_(), codecInMemory_() { - typedef std::vector<sfl::Codec*> CodecVector; - CodecVector codecDynamicList(scanCodecDirectory()); + typedef std::vector<sfl::AudioCodec*> AudioCodecVector; + AudioCodecVector codecDynamicList(scanCodecDirectory()); if (codecDynamicList.empty()) ERROR("No codecs available"); else { - for (CodecVector::const_iterator iter = codecDynamicList.begin(); + for (AudioCodecVector::const_iterator iter = codecDynamicList.begin(); iter != codecDynamicList.end() ; ++iter) { codecsMap_[(int)(*iter)->getPayloadType()] = *iter; DEBUG("Loaded codec %s" , (*iter)->getMimeSubtype().c_str()); @@ -64,17 +64,18 @@ AudioCodecFactory::AudioCodecFactory() : } } -void AudioCodecFactory::setDefaultOrder() +void +AudioCodecFactory::setDefaultOrder() { defaultCodecList_.clear(); - for (CodecsMap::const_iterator i = codecsMap_.begin(); i != codecsMap_.end(); ++i) + for (AudioCodecsMap::const_iterator i = codecsMap_.begin(); i != codecsMap_.end(); ++i) defaultCodecList_.push_back(i->first); } std::string AudioCodecFactory::getCodecName(int payload) const { - CodecsMap::const_iterator iter = codecsMap_.find(payload); + AudioCodecsMap::const_iterator iter = codecsMap_.find(payload); if (iter != codecsMap_.end()) return iter->second->getMimeSubtype(); @@ -83,10 +84,10 @@ AudioCodecFactory::getCodecName(int payload) const } std::vector<int32_t> -AudioCodecFactory::getAudioCodecList() const +AudioCodecFactory::getCodecList() const { std::vector<int32_t> list; - for (CodecsMap::const_iterator iter = codecsMap_.begin(); iter != codecsMap_.end(); ++iter) + for (AudioCodecsMap::const_iterator iter = codecsMap_.begin(); iter != codecsMap_.end(); ++iter) if (iter->second) list.push_back((int32_t) iter->first); @@ -96,7 +97,7 @@ AudioCodecFactory::getAudioCodecList() const sfl::AudioCodec* AudioCodecFactory::getCodec(int payload) const { - CodecsMap::const_iterator iter = codecsMap_.find(payload); + AudioCodecsMap::const_iterator iter = codecsMap_.find(payload); if (iter != codecsMap_.end()) return static_cast<sfl::AudioCodec *>(iter->second); @@ -106,9 +107,10 @@ AudioCodecFactory::getCodec(int payload) const } } -double AudioCodecFactory::getBitRate(int payload) const +double +AudioCodecFactory::getBitRate(int payload) const { - CodecsMap::const_iterator iter = codecsMap_.find(payload); + AudioCodecsMap::const_iterator iter = codecsMap_.find(payload); if (iter != codecsMap_.end()) return iter->second->getBitRate(); @@ -117,9 +119,10 @@ double AudioCodecFactory::getBitRate(int payload) const } -int AudioCodecFactory::getSampleRate(int payload) const +int +AudioCodecFactory::getSampleRate(int payload) const { - CodecsMap::const_iterator iter = codecsMap_.find(payload); + AudioCodecsMap::const_iterator iter = codecsMap_.find(payload); if (iter != codecsMap_.end()) return iter->second->getClockRate(); @@ -127,7 +130,8 @@ int AudioCodecFactory::getSampleRate(int payload) const return 0; } -void AudioCodecFactory::saveActiveCodecs(const std::vector<std::string>& list) +void +AudioCodecFactory::saveActiveCodecs(const std::vector<std::string>& list) { defaultCodecList_.clear(); // list contains the ordered payload of active codecs picked by the user @@ -144,14 +148,15 @@ void AudioCodecFactory::saveActiveCodecs(const std::vector<std::string>& list) AudioCodecFactory::~AudioCodecFactory() { - for (std::vector<CodecHandlePointer>::const_iterator iter = - codecInMemory_.begin(); iter != codecInMemory_.end(); ++iter) + for (std::vector<AudioCodecHandlePointer>::iterator iter = + codecInMemory_.begin(); iter != codecInMemory_.end(); ++iter) unloadCodec(*iter); } -std::vector<sfl::Codec*> AudioCodecFactory::scanCodecDirectory() +std::vector<sfl::AudioCodec*> +AudioCodecFactory::scanCodecDirectory() { - std::vector<sfl::Codec*> codecs; + std::vector<sfl::AudioCodec*> codecs; std::vector<std::string> dirToScan; dirToScan.push_back(std::string(HOMEDIR) + DIR_SEPARATOR_STR "." PACKAGE "/"); @@ -184,7 +189,7 @@ std::vector<sfl::Codec*> AudioCodecFactory::scanCodecDirectory() continue; if (seemsValid(file) && !alreadyInCache(file)) { - sfl::Codec* audioCodec = loadCodec(dirStr + file); + sfl::AudioCodec *audioCodec(loadCodec(dirStr + file)); if (audioCodec) { codecs.push_back(audioCodec); @@ -199,7 +204,8 @@ std::vector<sfl::Codec*> AudioCodecFactory::scanCodecDirectory() return codecs; } -sfl::AudioCodec *AudioCodecFactory::loadCodec(const std::string &path) +sfl::AudioCodec * +AudioCodecFactory::loadCodec(const std::string &path) { void * codecHandle = dlopen(path.c_str(), RTLD_NOW); @@ -208,7 +214,7 @@ sfl::AudioCodec *AudioCodecFactory::loadCodec(const std::string &path) return NULL; } - create_t* createCodec = (create_t*) dlsym(codecHandle, CODEC_ENTRY_SYMBOL); + create_t* createCodec = (create_t*) dlsym(codecHandle, AUDIO_CODEC_ENTRY_SYMBOL); const char *error = dlerror(); if (error) { @@ -218,15 +224,16 @@ sfl::AudioCodec *AudioCodecFactory::loadCodec(const std::string &path) sfl::AudioCodec *a = static_cast<sfl::AudioCodec *>(createCodec()); if (a) - codecInMemory_.push_back(CodecHandlePointer(a, codecHandle)); + codecInMemory_.push_back(AudioCodecHandlePointer(a, codecHandle)); return a; } -void AudioCodecFactory::unloadCodec(CodecHandlePointer p) +void +AudioCodecFactory::unloadCodec(AudioCodecHandlePointer &ptr) { - destroy_t* destroyCodec = (destroy_t*) dlsym(p.second , "destroy"); + destroy_t* destroyCodec = (destroy_t*) dlsym(ptr.second , "destroy"); const char *error = dlerror(); @@ -235,34 +242,37 @@ void AudioCodecFactory::unloadCodec(CodecHandlePointer p) return; } - if (p.first) - destroyCodec(p.first); + if (ptr.first) + destroyCodec(ptr.first); - if (p.second) - dlclose(p.second); + if (ptr.second) + dlclose(ptr.second); } -sfl::AudioCodec* AudioCodecFactory::instantiateCodec(int payload) const +sfl::AudioCodec* +AudioCodecFactory::instantiateCodec(int payload) const { - std::vector< CodecHandlePointer >::const_iterator iter; + std::vector<AudioCodecHandlePointer>::const_iterator iter; + sfl::AudioCodec *result = NULL; for (iter = codecInMemory_.begin(); iter != codecInMemory_.end(); ++iter) { if (iter->first->getPayloadType() == payload) { - create_t* createCodec = (create_t*) dlsym(iter->second , CODEC_ENTRY_SYMBOL); + create_t* createCodec = (create_t*) dlsym(iter->second , AUDIO_CODEC_ENTRY_SYMBOL); const char *error = dlerror(); if (error) ERROR("%s", error); else - return static_cast<sfl::AudioCodec *>(createCodec()); + result = static_cast<sfl::AudioCodec *>(createCodec()); } } - return NULL; + return result; } -bool AudioCodecFactory::seemsValid(const std::string &lib) +bool +AudioCodecFactory::seemsValid(const std::string &lib) { // The name of the shared library seems valid <==> it looks like libcodec_xxx.so // We check this @@ -312,9 +322,10 @@ AudioCodecFactory::alreadyInCache(const std::string &lib) return std::find(libCache_.begin(), libCache_.end(), lib) != libCache_.end(); } -bool AudioCodecFactory::isCodecLoaded(int payload) const +bool +AudioCodecFactory::isCodecLoaded(int payload) const { - CodecsMap::const_iterator iter; + AudioCodecsMap::const_iterator iter; for (iter = codecsMap_.begin(); iter != codecsMap_.end(); ++iter) if (iter->first == payload) diff --git a/daemon/src/audio/codecs/audiocodecfactory.h b/daemon/src/audio/codecs/audiocodecfactory.h index 0a98ae582675a02a9f8020d9b14ad77575890ade..137b7c2497254966a62a602bdd341c192b8add13 100644 --- a/daemon/src/audio/codecs/audiocodecfactory.h +++ b/daemon/src/audio/codecs/audiocodecfactory.h @@ -45,9 +45,6 @@ * @brief Handle audio codecs, load them in memory */ -/** Maps a pointer on an audiocodec object to a payload */ -typedef std::map<int, sfl::Codec*> CodecsMap; - class AudioCodecFactory { public: AudioCodecFactory(); @@ -62,7 +59,7 @@ class AudioCodecFactory { */ std::string getCodecName(int payload) const; - std::vector<int32_t > getAudioCodecList() const; + std::vector<int32_t > getCodecList() const; /** * Get the codec object associated with the payload * @param payload The payload looked for @@ -119,16 +116,18 @@ class AudioCodecFactory { bool isCodecLoaded(int payload) const; private: - /** Enable us to keep the handle pointer on the codec dynamicaly loaded so that we could destroy when we dont need it anymore */ - typedef std::pair<sfl::Codec* , void*> CodecHandlePointer; + /** Maps a pointer on an audiocodec object to a payload */ + typedef std::map<int, sfl::AudioCodec*> AudioCodecsMap; + /** Enable us to keep the handle pointer on the codec dynamicaly loaded so that we could destroy when we dont need it anymore */ + typedef std::pair<sfl::AudioCodec*, void*> AudioCodecHandlePointer; /** * Scan the installation directory ( --prefix configure option ) * And load the dynamic library * @return std::vector<AudioCodec*> The list of the codec object successfully loaded in memory */ - std::vector<sfl::Codec *> scanCodecDirectory(); + std::vector<sfl::AudioCodec *> scanCodecDirectory(); /** * Load a codec @@ -139,9 +138,9 @@ class AudioCodecFactory { /** * Unload a codec - * @param CodecHandlePointer The map containing the pointer on the object and the pointer on the handle function + * @param AudioCodecHandlePointer The map containing the pointer on the object and the pointer on the handle function */ - void unloadCodec(CodecHandlePointer); + void unloadCodec(AudioCodecHandlePointer &ptr); /** * Check if the files found in searched directories seems valid @@ -163,7 +162,7 @@ class AudioCodecFactory { /** * Map the payload of a codec and the object associated ( AudioCodec * ) */ - CodecsMap codecsMap_; + AudioCodecsMap codecsMap_; /** * Vector containing a default order for the codecs @@ -179,7 +178,7 @@ class AudioCodecFactory { * Vector containing pairs * Pair between pointer on function handle and pointer on audiocodec object */ - std::vector< CodecHandlePointer > codecInMemory_; + std::vector<AudioCodecHandlePointer> codecInMemory_; }; #endif // __CODEC_DESCRIPTOR_H__ diff --git a/daemon/src/audio/codecs/g722.cpp b/daemon/src/audio/codecs/g722.cpp index fb8d45fb29d42e9b7fd5e8b7220098d5ea1fe6a4..a6965718ed063c87143ac3e82843d8525d9e8f2f 100644 --- a/daemon/src/audio/codecs/g722.cpp +++ b/daemon/src/audio/codecs/g722.cpp @@ -758,13 +758,13 @@ class G722 : public sfl::AudioCodec { // the class factories // cppcheck-suppress unusedFunction -extern "C" sfl::Codec* CODEC_ENTRY() +extern "C" sfl::AudioCodec* AUDIO_CODEC_ENTRY() { return new G722; } // cppcheck-suppress unusedFunction -extern "C" void destroy(sfl::Codec* a) +extern "C" void destroy(sfl::AudioCodec* a) { delete a; } diff --git a/daemon/src/audio/codecs/g729.cpp b/daemon/src/audio/codecs/g729.cpp index 7f54dcacfdc47d145af69ac26eb614780e1f47a1..a263ceb1f38215d387e0cd0ca435b81f457ebc9c 100644 --- a/daemon/src/audio/codecs/g729.cpp +++ b/daemon/src/audio/codecs/g729.cpp @@ -92,7 +92,7 @@ void G729::loadError(const char *error) } // cppcheck-suppress unusedFunction -extern "C" sfl::Codec* CODEC_ENTRY() +extern "C" sfl::AudioCodec* AUDIO_CODEC_ENTRY() { try { return new G729; @@ -103,7 +103,7 @@ extern "C" sfl::Codec* CODEC_ENTRY() } // cppcheck-suppress unusedFunction -extern "C" void destroy(sfl::Codec* a) +extern "C" void destroy(sfl::AudioCodec* a) { delete a; } diff --git a/daemon/src/audio/codecs/gsmcodec.cpp b/daemon/src/audio/codecs/gsmcodec.cpp index ab1fdc2d26db482aaf2fafe7cfe5c833c05f0720..67280c593daf4813829de7e69fc419276c58b3da 100644 --- a/daemon/src/audio/codecs/gsmcodec.cpp +++ b/daemon/src/audio/codecs/gsmcodec.cpp @@ -86,13 +86,13 @@ class Gsm : public sfl::AudioCodec { }; // cppcheck-suppress unusedFunction -extern "C" sfl::Codec* CODEC_ENTRY() +extern "C" sfl::AudioCodec* AUDIO_CODEC_ENTRY() { return new Gsm; } // cppcheck-suppress unusedFunction -extern "C" void destroy(sfl::Codec* a) +extern "C" void destroy(sfl::AudioCodec* a) { delete a; } diff --git a/daemon/src/audio/codecs/ilbc.cpp b/daemon/src/audio/codecs/ilbc.cpp index f5c7f0fc22eb6f84142366ba3646d67a3982a375..53b1ad5d3af7b25d15a90c2af457fe3d1e9a0392 100644 --- a/daemon/src/audio/codecs/ilbc.cpp +++ b/daemon/src/audio/codecs/ilbc.cpp @@ -85,12 +85,12 @@ class Ilbc: public sfl::AudioCodec { }; // the class factories -extern "C" sfl::Codec* CODEC_ENTRY() +extern "C" sfl::AudioCodec* AUDIO_CODEC_ENTRY() { return new Ilbc; } -extern "C" void destroy(sfl::Codec* a) +extern "C" void destroy(sfl::AudioCodec* a) { delete a; } diff --git a/daemon/src/audio/codecs/opus.cpp b/daemon/src/audio/codecs/opus.cpp index 78bbaf1d88a43c7becc2ed0818f4c88fd2b4061e..4cbd83bafa90f54e2065574c946e55c52051d436 100644 --- a/daemon/src/audio/codecs/opus.cpp +++ b/daemon/src/audio/codecs/opus.cpp @@ -113,7 +113,7 @@ void Opus::loadError(const char *error) } // cppcheck-suppress unusedFunction -extern "C" sfl::Codec* CODEC_ENTRY() +extern "C" sfl::AudioCodec* AUDIO_CODEC_ENTRY() { try { return new Opus; @@ -124,7 +124,7 @@ extern "C" sfl::Codec* CODEC_ENTRY() } // cppcheck-suppress unusedFunction -extern "C" void destroy(sfl::Codec* a) +extern "C" void destroy(sfl::AudioCodec* a) { delete a; } diff --git a/daemon/src/audio/codecs/speexcodec_nb.cpp b/daemon/src/audio/codecs/speexcodec_nb.cpp index fb4171acf9a2aab538bfaa70bb0bc72bd0e1ce6f..03f8669dc7882c43abe6ac7657549c4d58076edb 100644 --- a/daemon/src/audio/codecs/speexcodec_nb.cpp +++ b/daemon/src/audio/codecs/speexcodec_nb.cpp @@ -33,13 +33,13 @@ #include "speexcodec.h" // cppcheck-suppress unusedFunction -extern "C" sfl::Codec* CODEC_ENTRY() +extern "C" sfl::AudioCodec* AUDIO_CODEC_ENTRY() { return new Speex(110, 8000, 160, 24, true, &speex_nb_mode); } // cppcheck-suppress unusedFunction -extern "C" void destroy(sfl::Codec* a) +extern "C" void destroy(sfl::AudioCodec* a) { delete a; } diff --git a/daemon/src/audio/codecs/speexcodec_ub.cpp b/daemon/src/audio/codecs/speexcodec_ub.cpp index 813057083664c709274dbedfcd1fe2bbcb22c862..a1b2fc6458df4434ad47f3f84266c309e89b6f81 100644 --- a/daemon/src/audio/codecs/speexcodec_ub.cpp +++ b/daemon/src/audio/codecs/speexcodec_ub.cpp @@ -33,13 +33,13 @@ #include "speexcodec.h" // cppcheck-suppress unusedFunction -extern "C" sfl::Codec* CODEC_ENTRY() +extern "C" sfl::AudioCodec* AUDIO_CODEC_ENTRY() { return new Speex(112, 32000, 640, 0, true, &speex_uwb_mode); } // cppcheck-suppress unusedFunction -extern "C" void destroy(sfl::Codec* a) +extern "C" void destroy(sfl::AudioCodec* a) { delete a; } diff --git a/daemon/src/audio/codecs/speexcodec_wb.cpp b/daemon/src/audio/codecs/speexcodec_wb.cpp index a57c39d3c3adc686f70993049bf2382741549d60..790c2776014432a5ed7e675b7ff11f27099277a3 100644 --- a/daemon/src/audio/codecs/speexcodec_wb.cpp +++ b/daemon/src/audio/codecs/speexcodec_wb.cpp @@ -33,13 +33,13 @@ #include "speexcodec.h" // cppcheck-suppress unusedFunction -extern "C" sfl::Codec* CODEC_ENTRY() +extern "C" sfl::AudioCodec* AUDIO_CODEC_ENTRY() { return new Speex(111, 16000, 320, 42, false, &speex_wb_mode); } // cppcheck-suppress unusedFunction -extern "C" void destroy(sfl::Codec* a) +extern "C" void destroy(sfl::AudioCodec* a) { delete a; } diff --git a/daemon/src/audio/codecs/ulaw.cpp b/daemon/src/audio/codecs/ulaw.cpp index 41c35bec16f90057213c77ec589aa2531c5a34c9..375eb3892a24b7fc2ea46b9f6300cc7ea28ffa24 100644 --- a/daemon/src/audio/codecs/ulaw.cpp +++ b/daemon/src/audio/codecs/ulaw.cpp @@ -115,13 +115,13 @@ class Ulaw : public sfl::AudioCodec { // the class factories // cppcheck-suppress unusedFunction -extern "C" sfl::Codec* CODEC_ENTRY() +extern "C" sfl::AudioCodec* AUDIO_CODEC_ENTRY() { return new Ulaw; } // cppcheck-suppress unusedFunction -extern "C" void destroy(sfl::Codec* a) +extern "C" void destroy(sfl::AudioCodec* a) { delete a; } diff --git a/daemon/src/codec.h b/daemon/src/codec.h deleted file mode 100644 index ab63a78ab309c3a5028d39eb180f09aae5b02e1f..0000000000000000000000000000000000000000 --- a/daemon/src/codec.h +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright (C) 2004-2012 Savoir-Faire Linux Inc. - * Author: Pierre-Luc Bacon <pierre-luc.bacon@savoirfairelinux.com> - * - * 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 3 of the License, or - * (at your option) 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. - * - * Additional permission under GNU GPL version 3 section 7: - * - * If you modify this program, or any covered work, by linking or - * combining it with the OpenSSL project's OpenSSL library (or a - * modified version of that library), containing parts covered by the - * terms of the OpenSSL or SSLeay licenses, Savoir-Faire Linux Inc. - * grants you additional permission to convey the resulting work. - * Corresponding Source for a non-source form of such a combination - * shall include the source code for the parts of OpenSSL used as well - * as that of the covered work. - */ - -#ifndef CODEC_H_ -#define CODEC_H_ - -#include "cc_config.h" // for types - -/** - * Interface for both audio codecs as well as video codecs. - */ -namespace sfl { -class Codec { - public: - virtual ~Codec() {} - /** - * @return The mimesubtype for this codec. Eg. : "theora" - */ - virtual std::string getMimeSubtype() const = 0; - - /** - * @return payload type numeric identifier. - */ - virtual uint8 getPayloadType() const = 0; - - /** - * @return RTP clock rate in Hz. - */ - virtual uint32 getClockRate() const = 0; - - /** - * @return The bitrate for which this codec is configured // TODO deal with VBR case. - */ - virtual double getBitRate() const = 0; -}; -} - -typedef sfl::Codec* create_t(); - -typedef void destroy_t (sfl::Codec*); - -#endif // CODEC_H_ diff --git a/daemon/src/dbus/configurationmanager.cpp b/daemon/src/dbus/configurationmanager.cpp index 0a5b8ff2696ccca79ef00ae71937a56a1f1c99b9..6bc898222385b9b794b5413e0d431d895ed2302d 100644 --- a/daemon/src/dbus/configurationmanager.cpp +++ b/daemon/src/dbus/configurationmanager.cpp @@ -183,7 +183,7 @@ std::vector<std::string> ConfigurationManager::getAccountList() */ std::vector<int32_t> ConfigurationManager::getAudioCodecList() { - std::vector<int32_t> list(Manager::instance().audioCodecFactory.getAudioCodecList()); + std::vector<int32_t> list(Manager::instance().audioCodecFactory.getCodecList()); if (list.empty()) errorAlert(CODECS_NOT_LOADED); diff --git a/daemon/src/iax/iaxvoiplink.cpp b/daemon/src/iax/iaxvoiplink.cpp index 12e4a95d012804c26fb4ae178d395f53a7f651dd..6a46ded739b5ad977ee5491e08ef4b26b25b5bce 100644 --- a/daemon/src/iax/iaxvoiplink.cpp +++ b/daemon/src/iax/iaxvoiplink.cpp @@ -478,7 +478,7 @@ std::string IAXVoIPLink::getCurrentAudioCodecNames(Call *c) const { IAXCall *call = static_cast<IAXCall*>(c); - sfl::Codec *audioCodec = Manager::instance().audioCodecFactory.getCodec(call->getAudioCodec()); + sfl::AudioCodec *audioCodec = Manager::instance().audioCodecFactory.getCodec(call->getAudioCodec()); return audioCodec ? audioCodec->getMimeSubtype() : ""; } diff --git a/daemon/src/managerimpl.cpp b/daemon/src/managerimpl.cpp index ebf59ebfb1aeb342f7d0535e64a300c09e5f7c8f..fa3557a06397ab86f462c7fcb0573e2a9a71bd6a 100644 --- a/daemon/src/managerimpl.cpp +++ b/daemon/src/managerimpl.cpp @@ -1783,7 +1783,7 @@ void ManagerImpl::ringtone(const std::string& accountID) if (ringchoice.find(".wav") != std::string::npos) audiofile_.reset(new WaveFile(ringchoice, audioLayerSmplr)); else { - sfl::Codec *codec; + sfl::AudioCodec *codec; if (ringchoice.find(".ul") != std::string::npos or ringchoice.find(".au") != std::string::npos) codec = audioCodecFactory.getCodec(PAYLOAD_CODEC_ULAW); else diff --git a/daemon/src/sip/sdp.cpp b/daemon/src/sip/sdp.cpp index 5df6c7be82160cb7b83edd63995d8416dfea9208..2d1ac6dee669b9989a876a7dee61e6d3a163a7d4 100644 --- a/daemon/src/sip/sdp.cpp +++ b/daemon/src/sip/sdp.cpp @@ -218,7 +218,7 @@ Sdp::setMediaDescriptorLines(bool audio) int payload; if (audio) { - sfl::Codec *codec = audio_codec_list_[i]; + sfl::AudioCodec *codec = audio_codec_list_[i]; payload = codec->getPayloadType(); enc_name = codec->getMimeSubtype(); clock_rate = codec->getClockRate(); @@ -288,7 +288,7 @@ void Sdp::addRTCPAttribute(pjmedia_sdp_media *med) std::ostringstream os; os << localIpAddr_ << ":" << (localAudioPort_ + 1); const std::string str(os.str()); - const pj_str_t input_str = {(char*) str.c_str(), str.size()}; + pj_str_t input_str = pj_str((char*) str.c_str()); pj_sockaddr outputAddr; pj_status_t status = pj_sockaddr_parse(PJ_AF_UNSPEC, 0, &input_str, &outputAddr); if (status != PJ_SUCCESS) { @@ -336,7 +336,7 @@ void Sdp::setLocalMediaAudioCapabilities(const vector<int> &selectedCodecs) audio_codec_list_.clear(); for (vector<int>::const_iterator i = selectedCodecs.begin(); i != selectedCodecs.end(); ++i) { - sfl::Codec *codec = Manager::instance().audioCodecFactory.getCodec(*i); + sfl::AudioCodec *codec = Manager::instance().audioCodecFactory.getCodec(*i); if (codec) audio_codec_list_.push_back(codec); diff --git a/daemon/src/sip/sdp.h b/daemon/src/sip/sdp.h index 5e1e133dc721a1089ec228dc985ba0fde3b1340f..78636d97dab94fda4ec7290e9be38b45ff1bffff 100644 --- a/daemon/src/sip/sdp.h +++ b/daemon/src/sip/sdp.h @@ -49,7 +49,6 @@ namespace sfl { class AudioCodec; -class Codec; } class SdpException : public std::runtime_error { @@ -293,7 +292,7 @@ class Sdp { /** * Codec Map used for offer */ - std::vector<sfl::Codec *> audio_codec_list_; + std::vector<sfl::AudioCodec *> audio_codec_list_; std::vector<std::map<std::string, std::string> > video_codec_list_; /**