aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDaniil Cherednik <dan.cherednik@gmail.com>2022-02-21 23:41:33 +0300
committerDaniil Cherednik <dan.cherednik@gmail.com>2022-02-21 23:53:07 +0300
commitb232396d25bd2eaef3fcaa536dd506a3b5da2c99 (patch)
tree26dfe6714fc280d820fa852e10bf8591a8c49569 /src
parenta77b9fc9b53463bb7aace9773faf136538b9f19b (diff)
downloadatracdenc-b232396d25bd2eaef3fcaa536dd506a3b5da2c99.tar.gz
Fix some CodeQL warnings
Diffstat (limited to 'src')
-rw-r--r--src/atrac/atrac3_bitstream.cpp11
-rw-r--r--src/pcmengin.h27
2 files changed, 25 insertions, 13 deletions
diff --git a/src/atrac/atrac3_bitstream.cpp b/src/atrac/atrac3_bitstream.cpp
index 5343579..da4d294 100644
--- a/src/atrac/atrac3_bitstream.cpp
+++ b/src/atrac/atrac3_bitstream.cpp
@@ -283,13 +283,13 @@ uint8_t TAtrac3BitStreamWriter::GroupTonalComponents(const std::vector<TTonalBlo
uint8_t tcsgn = 0;
//for each group
for (uint8_t i = 0; i < 64; ++i) {
- uint8_t start_pos;
- uint8_t cur_pos = 0;
+ size_t start_pos;
+ size_t cur_pos = 0;
//scan tonal components
while (cur_pos < groups[i].SubGroupPtr.size()) {
start_pos = cur_pos;
++tcsgn;
- groups[i].SubGroupMap.push_back(cur_pos);
+ groups[i].SubGroupMap.push_back(static_cast<uint8_t>(cur_pos));
uint8_t groupLimiter = 0;
//allow not grather than 8 components in one subgroup limited by 64 specs
do {
@@ -354,7 +354,7 @@ uint16_t TAtrac3BitStreamWriter::EncodeTonalComponents(const TSingleChannelEleme
}
assert(curGroup.SubGroupMap.size());
assert(curGroup.SubGroupMap.size() < UINT8_MAX);
- for (uint8_t subgroup = 0; subgroup < curGroup.SubGroupMap.size(); ++subgroup) {
+ for (size_t subgroup = 0; subgroup < curGroup.SubGroupMap.size(); ++subgroup) {
const uint8_t subGroupStartPos = curGroup.SubGroupMap[subgroup];
const uint8_t subGroupEndPos = (subgroup < curGroup.SubGroupMap.size() - 1) ?
curGroup.SubGroupMap[subgroup+1] : (uint8_t)curGroup.SubGroupPtr.size();
@@ -410,7 +410,7 @@ uint16_t TAtrac3BitStreamWriter::EncodeTonalComponents(const TSingleChannelEleme
bitsUsed += 3;
if (bitStream)
bitStream->Write(codedComponents, 3);
- uint8_t k = lastPos;
+ uint16_t k = lastPos;
for (; k < lastPos + codedComponents; ++k) {
assert(curGroup.SubGroupPtr[k]->ValPtr->Pos >= j * 64);
uint16_t relPos = curGroup.SubGroupPtr[k]->ValPtr->Pos - j * 64;
@@ -438,7 +438,6 @@ uint16_t TAtrac3BitStreamWriter::EncodeTonalComponents(const TSingleChannelEleme
assert(i);
bitsUsed += VLCEnc(i>>3, mantisas, curGroup.SubGroupPtr[k]->ScaledBlock.Values.size(), bitStream);
-
}
lastPos = k;
checkPos = lastPos;
diff --git a/src/pcmengin.h b/src/pcmengin.h
index b2523ca..dcf7d44 100644
--- a/src/pcmengin.h
+++ b/src/pcmengin.h
@@ -51,15 +51,18 @@ template <class T>
class TPCMBuffer {
std::vector<T> Buf_;
uint16_t NumChannels;
+
public:
- TPCMBuffer(const int32_t bufSize, const uint32_t numChannels)
+ TPCMBuffer(uint16_t bufSize, uint8_t numChannels)
: NumChannels(numChannels)
{
- Buf_.resize(bufSize*numChannels);
+ Buf_.resize((size_t)bufSize * numChannels);
}
+
size_t Size() {
return Buf_.size() / NumChannels;
}
+
T* operator[](size_t pos) {
size_t rpos = pos * NumChannels;
if (rpos >= Buf_.size()) {
@@ -68,6 +71,7 @@ public:
}
return &Buf_[rpos];
}
+
const T* operator[](size_t pos) const {
size_t rpos = pos * NumChannels;
if (rpos >= Buf_.size()) {
@@ -76,9 +80,11 @@ public:
}
return &Buf_[rpos];
}
+
uint16_t Channels() const {
return NumChannels;
}
+
void Zero(size_t pos, size_t len) {
assert((pos + len) * NumChannels <= Buf_.size());
memset(&Buf_[pos*NumChannels], 0, len*NumChannels);
@@ -115,45 +121,52 @@ private:
TReaderPtr Reader;
uint64_t Processed = 0;
public:
- TPCMEngine(const int32_t bufSize, const int32_t numChannels)
+ TPCMEngine(uint16_t bufSize, uint8_t numChannels)
: Buffer(bufSize, numChannels) {
}
- TPCMEngine(const int32_t bufSize, const int32_t numChannels, TWriterPtr&& writer)
+
+ TPCMEngine(uint16_t bufSize, uint8_t numChannels, TWriterPtr&& writer)
: Buffer(bufSize, numChannels)
, Writer(std::move(writer)) {
}
- TPCMEngine(const int32_t bufSize, const int32_t numChannels, TReaderPtr&& reader)
+
+ TPCMEngine(uint16_t bufSize, uint8_t numChannels, TReaderPtr&& reader)
: Buffer(bufSize, numChannels)
, Reader(std::move(reader)) {
}
- TPCMEngine(const int32_t bufSize, const int32_t numChannels, TWriterPtr&& writer, TReaderPtr&& reader)
+
+ TPCMEngine(uint16_t bufSize, uint8_t numChannels, TWriterPtr&& writer, TReaderPtr&& reader)
: Buffer(bufSize, numChannels)
, Writer(std::move(writer))
, Reader(std::move(reader)) {
}
+
typedef std::function<void(T* data, const ProcessMeta& meta)> TProcessLambda;
uint64_t ApplyProcess(size_t step, TProcessLambda lambda) {
if (step > Buffer.Size()) {
throw TPCMBufferTooSmall();
}
+
if (Reader) {
const uint32_t sizeToRead = Buffer.Size();
Reader->Read(Buffer, sizeToRead);
}
+
size_t lastPos = 0;
ProcessMeta meta = {Buffer.Channels()};
for (size_t i = 0; i + step <= Buffer.Size(); i+=step) {
lambda(Buffer[i], meta);
lastPos = i + step;
}
+
assert(lastPos == Buffer.Size());
if (Writer) {
Writer->Write(Buffer, lastPos);
}
+
Processed += lastPos;
return Processed;
-
}
};