Ref T730, OPUS de/encoder namespace

This commit is contained in:
Klaus Basan
2019-09-19 01:44:28 +02:00
committed by Mat Sutcliffe
parent 9809acd98c
commit 34d1e8268c
7 changed files with 169 additions and 105 deletions

View File

@@ -27,7 +27,6 @@
#include <QTimer> #include <QTimer>
#include <QDateTime> #include <QDateTime>
namespace BlackCore namespace BlackCore
{ {
namespace Afv namespace Afv
@@ -91,7 +90,7 @@ namespace BlackCore
BufferedWaveProvider *audioInput; BufferedWaveProvider *audioInput;
QTimer m_timer; QTimer m_timer;
COpusDecoder m_decoder; BlackSound::Codecs::COpusDecoder m_decoder;
bool m_lastPacketLatch = false; bool m_lastPacketLatch = false;
QDateTime m_lastSamplesAddedUtc; QDateTime m_lastSamplesAddedUtc;
bool m_underflow = false; bool m_underflow = false;

View File

@@ -90,7 +90,7 @@ namespace BlackCore
static constexpr qint64 c_frameSize = 960; static constexpr qint64 c_frameSize = 960;
int m_sampleRate = 0; int m_sampleRate = 0;
COpusEncoder m_encoder; BlackSound::Codecs::COpusEncoder m_encoder;
QScopedPointer<QAudioInput> m_audioInput; QScopedPointer<QAudioInput> m_audioInput;
bool m_started = false; bool m_started = false;

View File

@@ -16,16 +16,16 @@ DEPENDPATH += . ..
DEFINES += LOG_IN_FILE BUILD_BLACKSOUND_LIB DEFINES += LOG_IN_FILE BUILD_BLACKSOUND_LIB
HEADERS += *.h HEADERS += *.h
HEADERS += wav/wavfile.h HEADERS += $$PWD/wav/wavfile.h
HEADERS += dsp/*.h HEADERS += $$PWD/dsp/*.h
HEADERS += codecs/*.h HEADERS += $$PWD/codecs/*.h
HEADERS += samplesprovider/*.h HEADERS += $$PWD/sampleprovider/*.h
SOURCES += *.cpp SOURCES += *.cpp
SOURCES += wav/wavfile.cpp SOURCES += $$PWD/wav/wavfile.cpp
SOURCES += dsp/*.cpp SOURCES += $$PWD/dsp/*.cpp
SOURCES += codecs/*.cpp SOURCES += $$PWD/codecs/*.cpp
SOURCES += samplesprovider/*.cpp SOURCES += $$PWD/sampleprovider/*.cpp
LIBS *= -lopus LIBS *= -lopus

View File

@@ -1,5 +1,17 @@
/* Copyright (C) 2019
* swift project Community / Contributors
*
* This file is part of swift project. It is subject to the license terms in the LICENSE file found in the top-level
* directory of this distribution. No part of swift project, including this file, may be copied, modified, propagated,
* or distributed except according to the terms contained in the LICENSE file.
*/
#include "opusdecoder.h" #include "opusdecoder.h"
namespace BlackSound
{
namespace Codecs
{
COpusDecoder::COpusDecoder(int sampleRate, int channels) : COpusDecoder::COpusDecoder(int sampleRate, int channels) :
m_sampleRate(sampleRate), m_sampleRate(sampleRate),
m_channels(channels) m_channels(channels)
@@ -38,3 +50,5 @@ void COpusDecoder::resetState()
{ {
opus_decoder_ctl(opusDecoder, OPUS_RESET_STATE); opus_decoder_ctl(opusDecoder, OPUS_RESET_STATE);
} }
} // ns
} // ns

View File

@@ -1,16 +1,33 @@
#ifndef OPUSDECODER_H /* Copyright (C) 2019
#define OPUSDECODER_H * swift project Community / Contributors
*
* This file is part of swift project. It is subject to the license terms in the LICENSE file found in the top-level
* directory of this distribution. No part of swift project, including this file, may be copied, modified, propagated,
* or distributed except according to the terms contained in the LICENSE file.
*/
//! \file
#ifndef BLACKSOUND_OPUSDECODER_H
#define BLACKSOUND_OPUSDECODER_H
#include "blacksound/blacksoundexport.h" #include "blacksound/blacksoundexport.h"
#include "opus/opus.h" #include "opus/opus.h"
#include <QVector> #include <QVector>
namespace BlackSound
{
namespace Codecs
{
//! OPUS decoder
class BLACKSOUND_EXPORT COpusDecoder class BLACKSOUND_EXPORT COpusDecoder
{ {
public: public:
//! Ctor
COpusDecoder(int sampleRate, int channels); COpusDecoder(int sampleRate, int channels);
//! Dtor
~COpusDecoder(); ~COpusDecoder();
int frameCount(int bufferSize); int frameCount(int bufferSize);
@@ -26,5 +43,7 @@ private:
static constexpr int maxDataBytes = 4000; static constexpr int maxDataBytes = 4000;
}; };
} // ns
} // ns
#endif // OPUSDECODER_H #endif // guard

View File

@@ -1,5 +1,17 @@
/* Copyright (C) 2019
* swift project Community / Contributors
*
* This file is part of swift project. It is subject to the license terms in the LICENSE file found in the top-level
* directory of this distribution. No part of swift project, including this file, may be copied, modified, propagated,
* or distributed except according to the terms contained in the LICENSE file.
*/
#include "opusencoder.h" #include "opusencoder.h"
namespace BlackSound
{
namespace Codecs
{
COpusEncoder::COpusEncoder(int sampleRate, int channels, int application) : COpusEncoder::COpusEncoder(int sampleRate, int channels, int application) :
m_sampleRate(sampleRate), m_sampleRate(sampleRate),
m_channels(channels) m_channels(channels)
@@ -26,5 +38,5 @@ QByteArray COpusEncoder::encode(const QVector<qint16> pcmSamples, int samplesLen
encoded.truncate(length); encoded.truncate(length);
return encoded; return encoded;
} }
} // ns
} // ns

View File

@@ -1,5 +1,15 @@
#ifndef OPUSENCODER_H /* Copyright (C) 2019
#define OPUSENCODER_H * swift project Community / Contributors
*
* This file is part of swift project. It is subject to the license terms in the LICENSE file found in the top-level
* directory of this distribution. No part of swift project, including this file, may be copied, modified, propagated,
* or distributed except according to the terms contained in the LICENSE file.
*/
//! \file
#ifndef BLACKSOUND_OPUSENCODER_H
#define BLACKSOUND_OPUSENCODER_H
#include "blacksound/blacksoundexport.h" #include "blacksound/blacksoundexport.h"
#include "opus/opus.h" #include "opus/opus.h"
@@ -7,10 +17,18 @@
#include <QByteArray> #include <QByteArray>
#include <QVector> #include <QVector>
namespace BlackSound
{
namespace Codecs
{
//! OPUS encoder
class BLACKSOUND_EXPORT COpusEncoder class BLACKSOUND_EXPORT COpusEncoder
{ {
public: public:
//! Ctor
COpusEncoder(int sampleRate, int channels, int application = OPUS_APPLICATION_VOIP); COpusEncoder(int sampleRate, int channels, int application = OPUS_APPLICATION_VOIP);
//! Dtor
~COpusEncoder(); ~COpusEncoder();
void setBitRate(int bitRate); void setBitRate(int bitRate);
@@ -30,5 +48,7 @@ private:
static constexpr int maxDataBytes = 4000; static constexpr int maxDataBytes = 4000;
}; };
} // ns
} // ns
#endif // guard #endif // guard