Skip to content

Commit

Permalink
Audio codec is now configured at the reflector server
Browse files Browse the repository at this point in the history
- Which audio codec to use is now configured at the reflector server
  instead of in the client configuration. The new SvxReflector
  configuration variable CODECS is used to do that. The AUDIO_CODEC
  ReflectorLogic configuration variable is now obsolete.
- The svxlink.conf manual page now contain ReflectorLogic documentation.
- A new dummy audio endocer/decoder added.
  • Loading branch information
sm0svx committed Oct 28, 2017
1 parent 2e8afa9 commit f7b8a0b
Show file tree
Hide file tree
Showing 16 changed files with 682 additions and 150 deletions.
38 changes: 8 additions & 30 deletions src/async/audio/AsyncAudioDecoder.cpp
Expand Up @@ -49,6 +49,7 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
****************************************************************************/

#include "AsyncAudioDecoder.h"
#include "AsyncAudioDecoderDummy.h"
#include "AsyncAudioDecoderNull.h"
#include "AsyncAudioDecoderRaw.h"
#include "AsyncAudioDecoderS16.h"
Expand Down Expand Up @@ -121,14 +122,15 @@ using namespace Async;

bool AudioDecoder::isAvailable(const std::string &name)
{
return (name == "RAW") || (name == "S16") || (name == "GSM") ||
return (name == "NULL") || (name == "RAW") || (name == "S16") ||
(name == "GSM") ||
#ifdef SPEEX_MAJOR
(name == "SPEEX") ||
#endif
#ifdef OPUS_MAJOR
(name == "OPUS") ||
#endif
(name == "NULL");
(name == "DUMMY");
} /* AudioDecoder::isAvailable */


Expand All @@ -138,6 +140,10 @@ AudioDecoder *AudioDecoder::create(const std::string &name)
{
return new AudioDecoderNull;
}
else if (name == "DUMMY")
{
return new AudioDecoderDummy;
}
else if (name == "RAW")
{
return new AudioDecoderRaw;
Expand Down Expand Up @@ -169,40 +175,12 @@ AudioDecoder *AudioDecoder::create(const std::string &name)
}


#if 0
AudioDecoder::AudioDecoder(void)
{

} /* AudioDecoder::AudioDecoder */


AudioDecoder::~AudioDecoder(void)
{

} /* AudioDecoder::~AudioDecoder */


void AudioDecoder::resumeOutput(void)
{

} /* AudioDecoder::resumeOutput */
#endif



/****************************************************************************
*
* Protected member functions
*
****************************************************************************/

#if 0
void AudioDecoder::allSamplesFlushed(void)
{

} /* AudioDecoder::allSamplesFlushed */
#endif



/****************************************************************************
Expand Down
162 changes: 162 additions & 0 deletions src/async/audio/AsyncAudioDecoderDummy.h
@@ -0,0 +1,162 @@
/**
@file AsyncAudioDecoderDummy.h
@brief An audio "decoder" used when audio should just be thrown away
@author Tobias Blomberg / SM0SVX
@date 2017-10-28
\verbatim
Async - A library for programming event driven applications
Copyright (C) 2003-2017 Tobias Blomberg / SM0SVX
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 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
\endverbatim
*/

#ifndef ASYNC_AUDIO_DECODER_DUMMY_INCLUDED
#define ASYNC_AUDIO_DECODER_DUMMY_INCLUDED


/****************************************************************************
*
* System Includes
*
****************************************************************************/



/****************************************************************************
*
* Project Includes
*
****************************************************************************/

#include <AsyncAudioDecoder.h>


/****************************************************************************
*
* Local Includes
*
****************************************************************************/



/****************************************************************************
*
* Forward declarations
*
****************************************************************************/



/****************************************************************************
*
* Namespace
*
****************************************************************************/

namespace Async
{


/****************************************************************************
*
* Forward declarations of classes inside of the declared namespace
*
****************************************************************************/



/****************************************************************************
*
* Defines & typedefs
*
****************************************************************************/



/****************************************************************************
*
* Exported Global Variables
*
****************************************************************************/



/****************************************************************************
*
* Class definitions
*
****************************************************************************/

/**
@brief An audio "decoder" used when audio should just be thrown away
@author Tobias Blomberg / SM0SVX
@date 2017-10-28
This class implements an audio "decoder" that will just throw away incoming
encoded audio. It may be good to use as a placeholder before a real audio
codec has been chosen.
*/
class AudioDecoderDummy : public AudioDecoder
{
public:
/**
* @brief Default constuctor
*/
AudioDecoderDummy(void) {}

/**
* @brief Destructor
*/
virtual ~AudioDecoderDummy(void) {}

/**
* @brief Get the name of the codec
* @returns Return the name of the codec
*/
virtual const char *name(void) const { return "DUMMY"; }

/**
* @brief Write encoded samples into the decoder
* @param buf Buffer containing encoded samples
* @param size The size of the buffer
*
* This DUMMY decoder will just throw away incoming encoded samples.
*/
virtual void writeEncodedSamples(void*, int) {}

/**
* @brief Call this function when all encoded samples have been received
*
* This DUMMY decoder will just ignore the flush request.
*/
virtual void flushEncodedSamples(void) {}

private:
AudioDecoderDummy(const AudioDecoderDummy&);
AudioDecoderDummy& operator=(const AudioDecoderDummy&);

}; /* class AudioDecoderDummy */


} /* namespace */

#endif /* ASYNC_AUDIO_DECODER_DUMMY_INCLUDED */


/*
* This file has not been truncated
*/
26 changes: 8 additions & 18 deletions src/async/audio/AsyncAudioEncoder.cpp
Expand Up @@ -49,6 +49,7 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
****************************************************************************/

#include "AsyncAudioEncoder.h"
#include "AsyncAudioEncoderDummy.h"
#include "AsyncAudioEncoderNull.h"
#include "AsyncAudioEncoderRaw.h"
#include "AsyncAudioEncoderS16.h"
Expand Down Expand Up @@ -121,14 +122,15 @@ using namespace Async;

bool AudioEncoder::isAvailable(const std::string &name)
{
return (name == "RAW") || (name == "S16") || (name == "GSM") ||
return (name == "NULL") || (name == "RAW") || (name == "S16") ||
(name == "GSM") ||
#ifdef SPEEX_MAJOR
(name == "SPEEX") ||
#endif
#ifdef OPUS_MAJOR
(name == "OPUS") ||
#endif
(name == "NULL");
(name == "DUMMY");
} /* AudioEncoder::isAvailable */


Expand All @@ -138,6 +140,10 @@ AudioEncoder *AudioEncoder::create(const std::string &name)
{
return new AudioEncoderNull;
}
else if (name == "DUMMY")
{
return new AudioEncoderDummy;
}
else if (name == "RAW")
{
return new AudioEncoderRaw;
Expand Down Expand Up @@ -169,22 +175,6 @@ AudioEncoder *AudioEncoder::create(const std::string &name)
} /* AudioEncoder::create */



#if 0
AudioEncoder::AudioEncoder(void)
{

} /* AudioEncoder::AudioEncoder */


AudioEncoder::~AudioEncoder(void)
{

} /* AudioEncoder::~AudioEncoder */
#endif



/****************************************************************************
*
* Protected member functions
Expand Down

0 comments on commit f7b8a0b

Please sign in to comment.