From c5e8cb7ea33a99755824b6af5aa6504fbdeaffc0 Mon Sep 17 00:00:00 2001 From: Jan David Mol <mol@astron.nl> Date: Sat, 27 Aug 2016 20:45:34 +0000 Subject: [PATCH] Task #9522: Fix CorrelatedData::size. Introduced CorrelatedData::nrBytesPerNrValidSamples. --- RTCP/Cobalt/CoInterface/src/CorrelatedData.cc | 17 +++++++++-------- RTCP/Cobalt/CoInterface/src/CorrelatedData.h | 2 ++ 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/RTCP/Cobalt/CoInterface/src/CorrelatedData.cc b/RTCP/Cobalt/CoInterface/src/CorrelatedData.cc index 83ec3a1c148..c207e63c260 100644 --- a/RTCP/Cobalt/CoInterface/src/CorrelatedData.cc +++ b/RTCP/Cobalt/CoInterface/src/CorrelatedData.cc @@ -76,8 +76,7 @@ namespace LOFAR itsAlignment, allocator, true), - itsNrBytesPerNrValidSamples( - maxNrValidSamples < 256 ? 1 : maxNrValidSamples < 65536 ? 2 : 4) + itsNrBytesPerNrValidSamples(nrBytesPerNrValidSamples(maxNrValidSamples)) { init(nrChannels, allocator); } @@ -100,8 +99,7 @@ namespace LOFAR [NR_POLARIZATIONS], visibilities, false), - itsNrBytesPerNrValidSamples( - maxNrValidSamples < 256 ? 1 : maxNrValidSamples < 65536 ? 2 : 4) + itsNrBytesPerNrValidSamples(nrBytesPerNrValidSamples(maxNrValidSamples)) { ASSERT(this->visibilities.num_elements() == nrVisibilities); init(nrChannels, allocator); @@ -114,11 +112,14 @@ namespace LOFAR unsigned alignment) { const size_t nrBaselines = nrStations * (nrStations + 1) / 2; - const size_t nrBytesPerNrValidSamples = - maxNrValidSamples < 256 ? 1 : maxNrValidSamples < 65536 ? 2 : 4; - return nrBaselines * nrChannels * NR_POLARIZATIONS * NR_POLARIZATIONS * sizeof(float) + alignment - + nrBaselines * nrChannels * nrBytesPerNrValidSamples + 2 * alignment; + return nrBaselines * nrChannels * NR_POLARIZATIONS * NR_POLARIZATIONS * sizeof (fcomplex) + alignment + + nrBaselines * nrChannels * nrBytesPerNrValidSamples(maxNrValidSamples) + 2 * alignment; // nrValidSamples are aligned and padded + } + + + size_t CorrelatedData::nrBytesPerNrValidSamples(size_t maxNrValidSamples) { + return maxNrValidSamples < 256 ? 1 : maxNrValidSamples < 65536 ? 2 : 4; } diff --git a/RTCP/Cobalt/CoInterface/src/CorrelatedData.h b/RTCP/Cobalt/CoInterface/src/CorrelatedData.h index b0f177da676..0efe2c42eee 100644 --- a/RTCP/Cobalt/CoInterface/src/CorrelatedData.h +++ b/RTCP/Cobalt/CoInterface/src/CorrelatedData.h @@ -93,6 +93,8 @@ namespace LOFAR Matrix<uint32_t> itsNrValidSamples4; // [nrBaselines][nrChannels] Matrix<uint16_t> itsNrValidSamples2; // [nrBaselines][nrChannels] Matrix<uint8_t> itsNrValidSamples1; // [nrBaselines][nrChannels] + + static size_t nrBytesPerNrValidSamples(size_t maxNrValidSamples); }; -- GitLab