Newer
Older
MuebReceiver::MuebReceiver(QObject *parent)
: QObject(parent), d_ptr_(new MuebReceiverPrivate(this)) {}
MuebReceiver::~MuebReceiver() { delete d_ptr_; }
MuebReceiver &MuebReceiver::Instance() {
static MuebReceiver instance;
return instance;
}
inline void datagram_uncompress_error() {
qWarning() << "[MuebReceiver] Processed packet is invalid! Check the header "
"or packet contents(size)";
}
while (d->socket_.hasPendingDatagrams()) {
if (d->socket_.pendingDatagramSize() == d->configuration_.packet_size()) {
const QNetworkDatagram &datagram = d->socket_.receiveDatagram();
QByteArray data = datagram.data();
// Packet header check
// Check protocol
datagram_uncompress_error();
return;
}
packet_number < 0) {
datagram_uncompress_error();
return;
}
data.remove(0, d->configuration_.packet_header_size());
auto frame_begin =
d->frame_.bits() +
packet_number * d->configuration_.frame_fragment_size();
// Uncompress 1 byte into 2 color components
*frame_begin = (i & 0xf0) << (Configuration::kFactor -
d->configuration_.color_depth());
*frame_begin = (i & 0x0f)
<< (Configuration::kFactor + Configuration::kFactor -
d->configuration_.color_depth());
frame_begin++;
}
// No compression
} else {
}
// Drop invalid packet
else {
qWarning() << "[MuebReceiver] Packet has invalid size!"