Skip to content

Commit 81091c1

Browse files
committed
fix Tx packets padding when I12 samples format is used
1 parent 86d6965 commit 81091c1

1 file changed

Lines changed: 6 additions & 12 deletions

File tree

src/streaming/TRXLooper.cpp

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1194,23 +1194,17 @@ static void TxPacketPadding(FPGA_TxDataPacket& packet, DataFormat linkFormat, ui
11941194
// in gateware data is transferred on 128 bit bus
11951195
// Tx data transfers have to be multiple of the bus size
11961196
constexpr uint16_t busWidthBytes = 16;
1197-
uint16_t minPayloadSize = busWidthBytes;
1197+
const int frameSize = (linkFormat == DataFormat::I12 ? 3 : 4) * channelCount;
1198+
1199+
uint16_t minPayloadSize = std::lcm(busWidthBytes, frameSize);
11981200

11991201
uint16_t payloadSize = packet.GetPayloadSize();
12001202

12011203
uint16_t paddingSize = 0;
1202-
uint16_t bytesRemainder = payloadSize % busWidthBytes;
1203-
if (bytesRemainder > 0)
1204-
{
1205-
paddingSize = busWidthBytes - bytesRemainder;
1206-
const int frameSize = (linkFormat == DataFormat::I12 ? 3 : 4) * channelCount;
1207-
minPayloadSize = std::lcm(busWidthBytes, frameSize);
1208-
}
1209-
if (payloadSize + paddingSize < minPayloadSize)
1210-
paddingSize = minPayloadSize - payloadSize;
1211-
1212-
if (paddingSize > 0)
1204+
uint16_t extraBytes = payloadSize % minPayloadSize;
1205+
if (extraBytes > 0)
12131206
{
1207+
paddingSize = minPayloadSize - extraBytes;
12141208
std::memset(&packet.data[payloadSize], 0, paddingSize); // pad with zeroes
12151209
packet.SetPayloadSize(payloadSize + paddingSize);
12161210
}

0 commit comments

Comments
 (0)