Skip to content

Commit 92c8a29

Browse files
committed
fix: take skip bug in progress reports and output buffering
1 parent 89ff6e3 commit 92c8a29

File tree

5 files changed

+26
-24
lines changed

5 files changed

+26
-24
lines changed

src/hobbits-core/bitcontainer.cpp

+4-4
Original file line numberDiff line numberDiff line change
@@ -15,24 +15,24 @@ BitContainer::BitContainer() :
1515
setActionLineage(PluginActionLineage::actionlessLineage());
1616
}
1717

18-
QSharedPointer<BitContainer> BitContainer::create(QByteArray bytes, qint64 bitLen, QSharedPointer<BitInfo> bitInfo)
18+
QSharedPointer<BitContainer> BitContainer::create(QByteArray bytes, qint64 bitLen, QSharedPointer<const BitInfo> bitInfo)
1919
{
2020
QBuffer buffer(&bytes);
2121
buffer.open(QIODevice::ReadOnly);
2222
return create(&buffer, bitLen, bitInfo);
2323
}
2424

25-
QSharedPointer<BitContainer> BitContainer::create(QIODevice *readableBytes, qint64 bitLen, QSharedPointer<BitInfo> bitInfo)
25+
QSharedPointer<BitContainer> BitContainer::create(QIODevice *readableBytes, qint64 bitLen, QSharedPointer<const BitInfo> bitInfo)
2626
{
2727
return create(QSharedPointer<BitArray>(new BitArray(readableBytes, bitLen)), bitInfo);
2828
}
2929

30-
QSharedPointer<BitContainer> BitContainer::create(QSharedPointer<const BitArray> bits, QSharedPointer<BitInfo> bitInfo)
30+
QSharedPointer<BitContainer> BitContainer::create(QSharedPointer<const BitArray> bits, QSharedPointer<const BitInfo> bitInfo)
3131
{
3232
return create(QSharedPointer<BitArray>(new BitArray(*bits.data())), bitInfo);
3333
}
3434

35-
QSharedPointer<BitContainer> BitContainer::create(QSharedPointer<BitArray> bits, QSharedPointer<BitInfo> bitInfo)
35+
QSharedPointer<BitContainer> BitContainer::create(QSharedPointer<BitArray> bits, QSharedPointer<const BitInfo> bitInfo)
3636
{
3737
auto container = QSharedPointer<BitContainer>(new BitContainer());
3838
container->m_bits = bits;

src/hobbits-core/bitcontainer.h

+4-4
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,10 @@ class HOBBITSCORESHARED_EXPORT BitContainer : public QObject
2222
friend class OperatorActor;
2323

2424
public:
25-
static QSharedPointer<BitContainer> create(QByteArray bytes, qint64 bitLen = -1, QSharedPointer<BitInfo> info=QSharedPointer<BitInfo>());
26-
static QSharedPointer<BitContainer> create(QIODevice *readableBytes, qint64 bitLen = -1, QSharedPointer<BitInfo> info=QSharedPointer<BitInfo>());
27-
static QSharedPointer<BitContainer> create(QSharedPointer<const BitArray> bits, QSharedPointer<BitInfo> info=QSharedPointer<BitInfo>());
28-
static QSharedPointer<BitContainer> create(QSharedPointer<BitArray> bits, QSharedPointer<BitInfo> info=QSharedPointer<BitInfo>());
25+
static QSharedPointer<BitContainer> create(QByteArray bytes, qint64 bitLen = -1, QSharedPointer<const BitInfo> info=QSharedPointer<const BitInfo>());
26+
static QSharedPointer<BitContainer> create(QIODevice *readableBytes, qint64 bitLen = -1, QSharedPointer<const BitInfo> info=QSharedPointer<const BitInfo>());
27+
static QSharedPointer<BitContainer> create(QSharedPointer<const BitArray> bits, QSharedPointer<const BitInfo> info=QSharedPointer<const BitInfo>());
28+
static QSharedPointer<BitContainer> create(QSharedPointer<BitArray> bits, QSharedPointer<const BitInfo> info=QSharedPointer<const BitInfo>());
2929

3030
void setInfo(QSharedPointer<const BitInfo> info);
3131

src/hobbits-plugins/operators/QamRemapper/qamremapper.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@ QSharedPointer<const OperatorResult> QamRemapper::operateOnContainers(
187187
}
188188
}
189189

190-
QSharedPointer<BitContainer> container = BitContainer::create(outputArray);
190+
QSharedPointer<BitContainer> container = BitContainer::create(outputArray, inputContainers.at(0)->info());
191191
container->setName(QString("%1 <- %2").arg("QAM Remap").arg(inputContainers.at(0)->name()));
192192

193193
return OperatorResult::result({container}, pluginState);

src/hobbits-plugins/operators/TakeSkipOperator/skipop.cpp

+1-2
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,7 @@ void SkipOp::apply(
2525

2626
qint64 SkipOp::inputStep(qint64 inputBits) const
2727
{
28-
Q_UNUSED(inputBits)
29-
return m_value;
28+
return qMin(inputBits, m_value);
3029
}
3130

3231
qint64 SkipOp::outputStep(qint64 inputBits) const

src/hobbits-plugins/operators/TakeSkipOperator/takeskipoperator.cpp

+16-13
Original file line numberDiff line numberDiff line change
@@ -107,19 +107,20 @@ QSharedPointer<const OperatorResult> TakeSkipOperator::operateOnContainers(
107107
qint64 inputBitCount = 0;
108108
qint64 inputStepTotal = 0;
109109
qint64 outputStepTotal = 0;
110-
for (QSharedPointer<BitOp> op : ops) {
111-
for (auto input : inputs) {
112-
for (int i = 0; i < frameCount; i++) {
113-
Frame frame;
114-
if (frameBased) {
115-
frame = input.first->frameAt(i);
116-
}
117-
else {
118-
frame = {Frame(input.first->bits(), 0,
119-
input.first->bits()->sizeInBits() - 1)};
120-
}
121-
// need to check for integer overflow
122-
inputBitCount += frame.size();
110+
for (auto input : inputs) {
111+
for (int i = 0; i < frameCount; i++) {
112+
Frame frame;
113+
if (frameBased) {
114+
frame = input.first->frameAt(i);
115+
}
116+
else {
117+
frame = {Frame(input.first->bits(), 0,
118+
input.first->bits()->sizeInBits() - 1)};
119+
}
120+
// need to check for integer overflow
121+
inputBitCount += frame.size();
122+
123+
for (QSharedPointer<BitOp> op : ops) {
123124
qint64 frameStep = op->inputStep(frame.size());
124125
qint64 inTotal = frameStep + inputStepTotal;
125126
if (inTotal < frameStep || inTotal < inputStepTotal) {
@@ -222,6 +223,8 @@ QSharedPointer<const OperatorResult> TakeSkipOperator::operateOnContainers(
222223
if (progressTracker->getCancelled()) {
223224
return OperatorResult::error("Processing cancelled");
224225
}
226+
227+
bitsProcessed = 0;
225228
}
226229
}
227230

0 commit comments

Comments
 (0)