Skip to content

Commit e4d11d6

Browse files
committed
Fix receiving of uncompressed tiles
1 parent dd473f7 commit e4d11d6

File tree

3 files changed

+40
-0
lines changed

3 files changed

+40
-0
lines changed

deflect/server/ServerWorker.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -322,6 +322,7 @@ void ServerWorker::_handlePixelStreamMessage(const QByteArray& message)
322322

323323
const auto data = message.data();
324324
const auto params = reinterpret_cast<const SegmentParameters*>(data);
325+
tile.format = params->format;
325326
tile.x = params->x;
326327
tile.y = params->y;
327328
tile.width = params->width;

doc/Changelog.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ Changelog {#Changelog}
44
## Deflect 1.0
55

66
### 1.0.1 (master)
7+
* [199](https://github.com/BlueBrain/Deflect/pull/199):
8+
Fix receiving of uncompressed tiles
79
* [198](https://github.com/BlueBrain/Deflect/pull/198):
810
Fix unreliable server-side stream close.
911

tests/cpp/ServerTests.cpp

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -408,4 +408,41 @@ BOOST_AUTO_TEST_CASE(compressionErrorForBigNullImage)
408408
SAFE_BOOST_CHECK_THROW(stream.send(bigImage).get(), std::invalid_argument);
409409
}
410410

411+
BOOST_AUTO_TEST_CASE(uncompressedImages)
412+
{
413+
const unsigned int width = 4;
414+
const unsigned int height = 4;
415+
const unsigned int byte = width * height * 4;
416+
std::unique_ptr<uint8_t[]> pixels(new uint8_t[byte]);
417+
::memset(pixels.get(), 0, byte);
418+
deflect::ImageWrapper image(pixels.get(), width, height, deflect::RGBA);
419+
image.compressionPolicy = deflect::COMPRESSION_OFF;
420+
421+
const size_t expectedFrames = 5;
422+
423+
setFrameReceivedCallback([&](deflect::server::FramePtr frame) {
424+
SAFE_BOOST_REQUIRE_EQUAL(frame->tiles.size(), 1);
425+
SAFE_BOOST_CHECK(frame->tiles[0].format == deflect::Format::rgba);
426+
const auto dim = frame->computeDimensions();
427+
SAFE_BOOST_CHECK_EQUAL(dim.width(), width);
428+
SAFE_BOOST_CHECK_EQUAL(dim.height(), height);
429+
});
430+
431+
deflect::Stream stream(testStreamId.toStdString(), "localhost",
432+
serverPort());
433+
BOOST_REQUIRE(stream.isConnected());
434+
435+
for (size_t i = 0; i < expectedFrames; ++i)
436+
{
437+
stream.sendAndFinish(image).wait();
438+
requestFrame(testStreamId);
439+
440+
waitForMessage();
441+
442+
BOOST_CHECK_EQUAL(getReceivedFrames(), i + 1);
443+
}
444+
445+
BOOST_CHECK_EQUAL(getReceivedFrames(), expectedFrames);
446+
}
447+
411448
BOOST_AUTO_TEST_SUITE_END()

0 commit comments

Comments
 (0)