mirror of https://github.com/g4klx/MMDVM.git
Fix sample packing
This commit is contained in:
parent
26d055a67b
commit
0bd79fa440
|
@ -20,7 +20,6 @@
|
||||||
#include "Config.h"
|
#include "Config.h"
|
||||||
#include "FMDownsampler.h"
|
#include "FMDownsampler.h"
|
||||||
|
|
||||||
|
|
||||||
CFMDownsampler::CFMDownsampler(uint16_t length) :
|
CFMDownsampler::CFMDownsampler(uint16_t length) :
|
||||||
m_ringBuffer(length),
|
m_ringBuffer(length),
|
||||||
m_samplePack(0U),
|
m_samplePack(0U),
|
||||||
|
@ -32,17 +31,17 @@ m_sampleIndex(0U)
|
||||||
|
|
||||||
void CFMDownsampler::addSample(q15_t sample)
|
void CFMDownsampler::addSample(q15_t sample)
|
||||||
{
|
{
|
||||||
uint16_t usample = uint16_t(sample + 2048);
|
uint32_t usample = uint32_t(int32_t(sample) + 2048);
|
||||||
//only take one of three samples
|
//only take one of three samples
|
||||||
switch(m_sampleIndex){
|
switch(m_sampleIndex){
|
||||||
case 0:
|
case 0:
|
||||||
m_samplePack = uint32_t(usample) << 12;
|
m_samplePack = usample << 12;
|
||||||
break;
|
break;
|
||||||
case 3:{
|
case 3:{
|
||||||
m_samplePack |= uint32_t(usample);
|
m_samplePack |= usample;
|
||||||
|
|
||||||
//we did not use MSB; skip it
|
//we did not use MSB; skip it
|
||||||
TSamplePairPack pair{m_samplePackPointer[1U], m_samplePackPointer[2U], m_samplePackPointer[3U]};
|
TSamplePairPack pair{m_samplePackPointer[0U], m_samplePackPointer[1U], m_samplePackPointer[2U]};
|
||||||
|
|
||||||
m_ringBuffer.put(pair);
|
m_ringBuffer.put(pair);
|
||||||
|
|
||||||
|
|
|
@ -23,6 +23,7 @@
|
||||||
#include "Config.h"
|
#include "Config.h"
|
||||||
#include "RingBuffer.h"
|
#include "RingBuffer.h"
|
||||||
#include "FMSamplePairPack.h"
|
#include "FMSamplePairPack.h"
|
||||||
|
#include "FMDirectForm1.h"
|
||||||
|
|
||||||
class CFMDownsampler {
|
class CFMDownsampler {
|
||||||
public:
|
public:
|
||||||
|
@ -34,11 +35,9 @@ public:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
CRingBuffer<TSamplePairPack> m_ringBuffer;
|
CRingBuffer<TSamplePairPack> m_ringBuffer;
|
||||||
|
uint32_t m_samplePack;
|
||||||
uint32_t m_samplePack;
|
uint8_t* m_samplePackPointer;
|
||||||
uint8_t *m_samplePackPointer;
|
uint8_t m_sampleIndex;
|
||||||
|
|
||||||
uint8_t m_sampleIndex;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue