- Symbolizer is Processor::Block
- removed ISymbolizer git-svn-id: http://moon:8086/svn/software/trunk/libsrc/cpp@1069 b431acfa-c32f-4a4a-93f1-934dc6c82436
This commit is contained in:
+27
-18
@@ -5,11 +5,11 @@
|
||||
#include "Symbolizer.hpp"
|
||||
|
||||
|
||||
Symbolizer::Symbolizer(ISymbolizer *pSymbolHandler)
|
||||
: m_pSymbolHandler(pSymbolHandler)
|
||||
, m_symbolBitCount(0)
|
||||
, m_lastSymbol(0)
|
||||
, m_symbolMask(0)
|
||||
Symbolizer::Symbolizer()
|
||||
: Processor::Block(1, 1)
|
||||
, m_symbolBitCount(0)
|
||||
, m_lastSymbol(0)
|
||||
, m_symbolMask(0)
|
||||
{
|
||||
setNumBitsPerSymbol(8);
|
||||
}
|
||||
@@ -35,7 +35,8 @@ void Symbolizer::process(uint8_t src)
|
||||
// Speed up
|
||||
if (m_nBitsPerSym == SIZEOF_DATA_BITS)
|
||||
{
|
||||
m_pSymbolHandler->onSymbol(differentialEncode((uint32_t)src));
|
||||
symbol_t symbol_encoded = differentialEncode((uint32_t)src);
|
||||
m_buf_out->write(&symbol_encoded, 1);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -48,7 +49,8 @@ void Symbolizer::process(uint8_t src)
|
||||
m_symbolBitCount++;
|
||||
if (m_symbolBitCount == m_nBitsPerSym)
|
||||
{
|
||||
m_pSymbolHandler->onSymbol(differentialEncode(dst));
|
||||
symbol_t symbol_encoded = differentialEncode(dst);
|
||||
m_buf_out->write(&symbol_encoded, 1);
|
||||
m_symbolBitCount = 0;
|
||||
dst = 0;
|
||||
}
|
||||
@@ -67,6 +69,24 @@ void Symbolizer::process(void *pSrc, uint32_t len)
|
||||
}
|
||||
}
|
||||
|
||||
void Symbolizer::prepare()
|
||||
{
|
||||
// Get buffers
|
||||
m_buf_in = buffer_in<uint8_t>();
|
||||
m_buf_out = buffer_out<symbol_t>();
|
||||
}
|
||||
|
||||
void Symbolizer::process()
|
||||
{
|
||||
// Process input
|
||||
while(m_buf_in->len())
|
||||
{
|
||||
uint8_t data;
|
||||
m_buf_in->read(&data, 1);
|
||||
process(data);
|
||||
}
|
||||
}
|
||||
|
||||
uint32_t Symbolizer::differentialEncode(uint32_t symbol)
|
||||
{
|
||||
// Differential encode
|
||||
@@ -75,15 +95,4 @@ uint32_t Symbolizer::differentialEncode(uint32_t symbol)
|
||||
return m_lastSymbol;
|
||||
}
|
||||
|
||||
void Symbolizer::onFrame(void *pFrame, uint32_t size)
|
||||
{
|
||||
data_t *pData = (data_t*)pFrame;
|
||||
|
||||
while(size)
|
||||
{
|
||||
process(*(pData++));
|
||||
size -= sizeof(data_t);
|
||||
}
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------
|
||||
|
||||
+8
-12
@@ -7,31 +7,27 @@
|
||||
#include "Formatter.hpp"
|
||||
|
||||
|
||||
class ISymbolizer
|
||||
class Symbolizer : public Processor::Block
|
||||
{
|
||||
public:
|
||||
ISymbolizer() {}
|
||||
virtual ~ISymbolizer() = default;
|
||||
virtual void onSymbol(symbol_t symbol) = 0;
|
||||
};
|
||||
|
||||
class Symbolizer : public IFormatter
|
||||
{
|
||||
public:
|
||||
Symbolizer(ISymbolizer *pSymbolHandler);
|
||||
Symbolizer();
|
||||
virtual ~Symbolizer() = default;
|
||||
void process(data_t src);
|
||||
void process(void *pSrc, uint32_t len);
|
||||
void setNumBitsPerSymbol(uint32_t nBitsPerSym);
|
||||
|
||||
// Processor::Block
|
||||
void prepare() override;
|
||||
void process();
|
||||
|
||||
private:
|
||||
uint32_t m_nBitsPerSym;
|
||||
ISymbolizer *m_pSymbolHandler;
|
||||
uint32_t m_symbolBitCount;
|
||||
symbol_t m_lastSymbol;
|
||||
symbol_t m_symbolMask;
|
||||
Processor::Buffer<uint8_t> *m_buf_in;
|
||||
Processor::Buffer<symbol_t> *m_buf_out;
|
||||
symbol_t differentialEncode(symbol_t symbol);
|
||||
void onFrame(void *pFrame, uint32_t size) override;
|
||||
};
|
||||
|
||||
// --------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user