diff options
-rw-r--r-- | src/DabModulator.cpp | 6 | ||||
-rw-r--r-- | src/EtiReader.cpp | 3 | ||||
-rw-r--r-- | src/FrameMultiplexer.cpp | 12 | ||||
-rw-r--r-- | src/FrameMultiplexer.h | 16 | ||||
-rw-r--r-- | src/SubchannelSource.cpp | 18 | ||||
-rw-r--r-- | src/SubchannelSource.h | 18 |
6 files changed, 41 insertions, 32 deletions
diff --git a/src/DabModulator.cpp b/src/DabModulator.cpp index f63ecd7..6c28a2e 100644 --- a/src/DabModulator.cpp +++ b/src/DabModulator.cpp @@ -157,7 +157,7 @@ int DabModulator::process(Buffer* const dataIn, Buffer* dataOut) //////////////////////////////////////////////////////////////// auto cifPrbs = make_shared<PrbsGenerator>(864 * 8, 0x110); auto cifMux = make_shared<FrameMultiplexer>( - myFicSizeOut + 864 * 8, &myEtiReader.getSubchannels()); + myFicSizeOut + 864 * 8, myEtiReader.getSubchannels()); auto cifPart = make_shared<BlockPartitioner>(mode, myEtiReader.getFp()); @@ -269,9 +269,7 @@ int DabModulator::process(Buffer* const dataIn, Buffer* dataOut) //////////////////////////////////////////////////////////////// // Configuring subchannels //////////////////////////////////////////////////////////////// - std::vector<shared_ptr<SubchannelSource> > subchannels = - myEtiReader.getSubchannels(); - for (const auto& subchannel : subchannels) { + for (const auto& subchannel : myEtiReader.getSubchannels()) { //////////////////////////////////////////////////////////// // Data initialisation diff --git a/src/EtiReader.cpp b/src/EtiReader.cpp index e841f03..010124c 100644 --- a/src/EtiReader.cpp +++ b/src/EtiReader.cpp @@ -173,7 +173,8 @@ int EtiReader::process(const Buffer* dataIn) mySources.clear(); for (unsigned i = 0; i < eti_fc.NST; ++i) { - mySources.push_back(make_shared<SubchannelSource>(eti_stc[i])); + mySources.push_back( + make_shared<SubchannelSource>(eti_stc[i])); PDEBUG("Sstc %u:\n", i); PDEBUG(" Stc%i.scid: %i\n", i, eti_stc[i].SCID); PDEBUG(" Stc%i.sad: %u\n", i, eti_stc[i].getStartAddress()); diff --git a/src/FrameMultiplexer.cpp b/src/FrameMultiplexer.cpp index 0bea1d1..c8ee299 100644 --- a/src/FrameMultiplexer.cpp +++ b/src/FrameMultiplexer.cpp @@ -1,6 +1,11 @@ /* Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011 Her Majesty the Queen in Right of Canada (Communications Research Center Canada) + + Copyright (C) 2016 + Matthias P. Braendli, matthias.braendli@mpb.li + + http://opendigitalradio.org */ /* This file is part of ODR-DabMod. @@ -33,7 +38,7 @@ typedef std::complex<float> complexf; FrameMultiplexer::FrameMultiplexer( size_t framesize, - const std::vector<std::shared_ptr<SubchannelSource> >* subchannels) : + const std::vector<std::shared_ptr<SubchannelSource> >& subchannels) : ModMux(), d_frameSize(framesize), mySubchannels(subchannels) @@ -77,12 +82,11 @@ int FrameMultiplexer::process(std::vector<Buffer*> dataIn, Buffer* dataOut) memcpy(out, (*in)->getData(), (*in)->getLength()); ++in; // Write subchannel - if (mySubchannels->size() != dataIn.size() - 1) { + if (mySubchannels.size() != dataIn.size() - 1) { throw std::out_of_range( "FrameMultiplexer detected subchannel size change!"); } - std::vector<std::shared_ptr<SubchannelSource> >::const_iterator subchannel = - mySubchannels->begin(); + auto subchannel = mySubchannels.begin(); while (in != dataIn.end()) { if ((*subchannel)->framesizeCu() * 8 != (*in)->getLength()) { throw std::out_of_range( diff --git a/src/FrameMultiplexer.h b/src/FrameMultiplexer.h index b1dd971..e01f4bf 100644 --- a/src/FrameMultiplexer.h +++ b/src/FrameMultiplexer.h @@ -1,6 +1,11 @@ /* Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011 Her Majesty the Queen in Right of Canada (Communications Research Center Canada) + + Copyright (C) 2016 + Matthias P. Braendli, matthias.braendli@mpb.li + + http://opendigitalradio.org */ /* This file is part of ODR-DabMod. @@ -36,11 +41,12 @@ class FrameMultiplexer : public ModMux { public: - FrameMultiplexer(size_t frameSize, - const std::vector<std::shared_ptr<SubchannelSource> >* subchannels); + FrameMultiplexer( + size_t frameSize, + const std::vector<std::shared_ptr<SubchannelSource> >& subchannels); virtual ~FrameMultiplexer(); - FrameMultiplexer(const FrameMultiplexer&); - FrameMultiplexer& operator=(const FrameMultiplexer&); + FrameMultiplexer(const FrameMultiplexer&) = delete; + FrameMultiplexer& operator=(const FrameMultiplexer&) = delete; int process(std::vector<Buffer*> dataIn, Buffer* dataOut); @@ -48,7 +54,7 @@ public: protected: size_t d_frameSize; - const std::vector<std::shared_ptr<SubchannelSource> >* mySubchannels; + const std::vector<std::shared_ptr<SubchannelSource> >& mySubchannels; }; diff --git a/src/SubchannelSource.cpp b/src/SubchannelSource.cpp index f4b6b55..7632de5 100644 --- a/src/SubchannelSource.cpp +++ b/src/SubchannelSource.cpp @@ -59,7 +59,7 @@ #define P24 0xffffffff -const std::vector<PuncturingRule>& SubchannelSource::get_rules() +const std::vector<PuncturingRule>& SubchannelSource::get_rules() const { return d_puncturing_rules; } @@ -635,18 +635,18 @@ SubchannelSource::SubchannelSource(eti_STC &stc) : } } -size_t SubchannelSource::startAddress() +size_t SubchannelSource::startAddress() const { return d_start_address; } -size_t SubchannelSource::framesize() +size_t SubchannelSource::framesize() const { return d_framesize; } -size_t SubchannelSource::framesizeCu() +size_t SubchannelSource::framesizeCu() const { size_t framesizeCu = 0; @@ -1003,25 +1003,25 @@ size_t SubchannelSource::framesizeCu() } -size_t SubchannelSource::bitrate() +size_t SubchannelSource::bitrate() const { return d_framesize / 3; } -size_t SubchannelSource::protection() +size_t SubchannelSource::protection() const { return d_protection; } -size_t SubchannelSource::protectionForm() +size_t SubchannelSource::protectionForm() const { return (d_protection >> 5) & 1; } -size_t SubchannelSource::protectionLevel() +size_t SubchannelSource::protectionLevel() const { if (protectionForm()) { // Long form return (d_protection & 0x3) + 1; @@ -1030,7 +1030,7 @@ size_t SubchannelSource::protectionLevel() } -size_t SubchannelSource::protectionOption() +size_t SubchannelSource::protectionOption() const { if (protectionForm()) { // Long form return (d_protection >> 2) & 0x7; diff --git a/src/SubchannelSource.h b/src/SubchannelSource.h index f2f261b..a38c281 100644 --- a/src/SubchannelSource.h +++ b/src/SubchannelSource.h @@ -43,15 +43,15 @@ class SubchannelSource : public ModInput public: SubchannelSource(eti_STC &stc); - size_t startAddress(); - size_t framesize(); - size_t framesizeCu(); - size_t bitrate(); - size_t protection(); - size_t protectionForm(); - size_t protectionLevel(); - size_t protectionOption(); - const std::vector<PuncturingRule>& get_rules(); + size_t startAddress() const; + size_t framesize() const; + size_t framesizeCu() const; + size_t bitrate() const; + size_t protection() const; + size_t protectionForm() const; + size_t protectionLevel() const; + size_t protectionOption() const; + const std::vector<PuncturingRule>& get_rules() const; void loadSubchannelData(const Buffer& data); int process(Buffer* outputData); |