diff --git a/platforms/android/arm64-v8a/external.sh b/platforms/android/arm64-v8a/external.sh index 1e2b9a5d..d6496bf1 100755 --- a/platforms/android/arm64-v8a/external.sh +++ b/platforms/android/arm64-v8a/external.sh @@ -3,7 +3,7 @@ set -e CARGS_SHA=5949a20a926e902931de4a32adaad9f19c76f251 -LIBZEDMD_SHA=60fade98a01d0a4844a02abc413b8a93a7b9e78f +LIBZEDMD_SHA=d876b37587a6d53776a88f1b6822f2958b3df8a3 LIBSERUM_SHA=03ef7b5eeb4c2327b5a772f06634e487eb8ed0fc SOCKPP_SHA=e6c4688a576d95f42dd7628cefe68092f6c5cd0f LIBPUPDMD_SHA=124f45e5ddd59ceb339591de88fcca72f8c54612 diff --git a/platforms/ios-simulator/arm64/external.sh b/platforms/ios-simulator/arm64/external.sh index 96536cde..843f90a5 100755 --- a/platforms/ios-simulator/arm64/external.sh +++ b/platforms/ios-simulator/arm64/external.sh @@ -3,7 +3,7 @@ set -e CARGS_SHA=5949a20a926e902931de4a32adaad9f19c76f251 -LIBZEDMD_SHA=60fade98a01d0a4844a02abc413b8a93a7b9e78f +LIBZEDMD_SHA=d876b37587a6d53776a88f1b6822f2958b3df8a3 LIBSERUM_SHA=03ef7b5eeb4c2327b5a772f06634e487eb8ed0fc SOCKPP_SHA=e6c4688a576d95f42dd7628cefe68092f6c5cd0f LIBPUPDMD_SHA=124f45e5ddd59ceb339591de88fcca72f8c54612 diff --git a/platforms/ios/arm64/external.sh b/platforms/ios/arm64/external.sh index 4847293d..cd153e47 100755 --- a/platforms/ios/arm64/external.sh +++ b/platforms/ios/arm64/external.sh @@ -3,7 +3,7 @@ set -e CARGS_SHA=5949a20a926e902931de4a32adaad9f19c76f251 -LIBZEDMD_SHA=60fade98a01d0a4844a02abc413b8a93a7b9e78f +LIBZEDMD_SHA=d876b37587a6d53776a88f1b6822f2958b3df8a3 LIBSERUM_SHA=03ef7b5eeb4c2327b5a772f06634e487eb8ed0fc SOCKPP_SHA=e6c4688a576d95f42dd7628cefe68092f6c5cd0f LIBPUPDMD_SHA=124f45e5ddd59ceb339591de88fcca72f8c54612 diff --git a/platforms/linux/aarch64/external.sh b/platforms/linux/aarch64/external.sh index 94dba7cb..29bb07ec 100755 --- a/platforms/linux/aarch64/external.sh +++ b/platforms/linux/aarch64/external.sh @@ -3,7 +3,7 @@ set -e CARGS_SHA=5949a20a926e902931de4a32adaad9f19c76f251 -LIBZEDMD_SHA=60fade98a01d0a4844a02abc413b8a93a7b9e78f +LIBZEDMD_SHA=d876b37587a6d53776a88f1b6822f2958b3df8a3 LIBSERUM_SHA=03ef7b5eeb4c2327b5a772f06634e487eb8ed0fc SOCKPP_SHA=e6c4688a576d95f42dd7628cefe68092f6c5cd0f LIBPUPDMD_SHA=124f45e5ddd59ceb339591de88fcca72f8c54612 diff --git a/platforms/linux/x64/external.sh b/platforms/linux/x64/external.sh index 4cb5b2d4..a7e536ee 100755 --- a/platforms/linux/x64/external.sh +++ b/platforms/linux/x64/external.sh @@ -3,7 +3,7 @@ set -e CARGS_SHA=5949a20a926e902931de4a32adaad9f19c76f251 -LIBZEDMD_SHA=60fade98a01d0a4844a02abc413b8a93a7b9e78f +LIBZEDMD_SHA=d876b37587a6d53776a88f1b6822f2958b3df8a3 LIBSERUM_SHA=03ef7b5eeb4c2327b5a772f06634e487eb8ed0fc SOCKPP_SHA=e6c4688a576d95f42dd7628cefe68092f6c5cd0f LIBPUPDMD_SHA=124f45e5ddd59ceb339591de88fcca72f8c54612 diff --git a/platforms/macos/arm64/external.sh b/platforms/macos/arm64/external.sh index 8ebfb952..57b87068 100755 --- a/platforms/macos/arm64/external.sh +++ b/platforms/macos/arm64/external.sh @@ -3,7 +3,7 @@ set -e CARGS_SHA=5949a20a926e902931de4a32adaad9f19c76f251 -LIBZEDMD_SHA=60fade98a01d0a4844a02abc413b8a93a7b9e78f +LIBZEDMD_SHA=d876b37587a6d53776a88f1b6822f2958b3df8a3 LIBSERUM_SHA=03ef7b5eeb4c2327b5a772f06634e487eb8ed0fc SOCKPP_SHA=e6c4688a576d95f42dd7628cefe68092f6c5cd0f LIBPUPDMD_SHA=124f45e5ddd59ceb339591de88fcca72f8c54612 diff --git a/platforms/macos/x64/external.sh b/platforms/macos/x64/external.sh index ec132588..1af7f6fc 100755 --- a/platforms/macos/x64/external.sh +++ b/platforms/macos/x64/external.sh @@ -3,7 +3,7 @@ set -e CARGS_SHA=5949a20a926e902931de4a32adaad9f19c76f251 -LIBZEDMD_SHA=60fade98a01d0a4844a02abc413b8a93a7b9e78f +LIBZEDMD_SHA=d876b37587a6d53776a88f1b6822f2958b3df8a3 LIBSERUM_SHA=03ef7b5eeb4c2327b5a772f06634e487eb8ed0fc SOCKPP_SHA=e6c4688a576d95f42dd7628cefe68092f6c5cd0f LIBPUPDMD_SHA=124f45e5ddd59ceb339591de88fcca72f8c54612 diff --git a/platforms/tvos/arm64/external.sh b/platforms/tvos/arm64/external.sh index 6e485acd..de7385e8 100755 --- a/platforms/tvos/arm64/external.sh +++ b/platforms/tvos/arm64/external.sh @@ -3,7 +3,7 @@ set -e CARGS_SHA=5949a20a926e902931de4a32adaad9f19c76f251 -LIBZEDMD_SHA=60fade98a01d0a4844a02abc413b8a93a7b9e78f +LIBZEDMD_SHA=d876b37587a6d53776a88f1b6822f2958b3df8a3 LIBSERUM_SHA=03ef7b5eeb4c2327b5a772f06634e487eb8ed0fc SOCKPP_SHA=e6c4688a576d95f42dd7628cefe68092f6c5cd0f LIBPUPDMD_SHA=124f45e5ddd59ceb339591de88fcca72f8c54612 diff --git a/platforms/win/x64/external.sh b/platforms/win/x64/external.sh index a2492f65..190ea293 100755 --- a/platforms/win/x64/external.sh +++ b/platforms/win/x64/external.sh @@ -3,7 +3,7 @@ set -e CARGS_SHA=5949a20a926e902931de4a32adaad9f19c76f251 -LIBZEDMD_SHA=60fade98a01d0a4844a02abc413b8a93a7b9e78f +LIBZEDMD_SHA=d876b37587a6d53776a88f1b6822f2958b3df8a3 LIBSERUM_SHA=03ef7b5eeb4c2327b5a772f06634e487eb8ed0fc SOCKPP_SHA=e6c4688a576d95f42dd7628cefe68092f6c5cd0f LIBPUPDMD_SHA=124f45e5ddd59ceb339591de88fcca72f8c54612 diff --git a/platforms/win/x86/external.sh b/platforms/win/x86/external.sh index 0b9b683e..0ec5516e 100755 --- a/platforms/win/x86/external.sh +++ b/platforms/win/x86/external.sh @@ -3,7 +3,7 @@ set -e CARGS_SHA=5949a20a926e902931de4a32adaad9f19c76f251 -LIBZEDMD_SHA=60fade98a01d0a4844a02abc413b8a93a7b9e78f +LIBZEDMD_SHA=d876b37587a6d53776a88f1b6822f2958b3df8a3 LIBSERUM_SHA=03ef7b5eeb4c2327b5a772f06634e487eb8ed0fc SOCKPP_SHA=e6c4688a576d95f42dd7628cefe68092f6c5cd0f LIBPUPDMD_SHA=124f45e5ddd59ceb339591de88fcca72f8c54612 diff --git a/src/DMD.cpp b/src/DMD.cpp index aa739b06..f838ac7e 100644 --- a/src/DMD.cpp +++ b/src/DMD.cpp @@ -481,7 +481,7 @@ void DMD::FindDisplays() if (pConfig->IsZeDMDWiFiEnabled()) { - std::string WiFiAddr = pConfig->GetZeDMDWiFiAddr() ? pConfig->GetZeDMDWiFiAddr() : ""; + std::string WiFiAddr = pConfig->GetZeDMDWiFiAddr() ? pConfig->GetZeDMDWiFiAddr() : "zedmd-wifi.local"; uint16_t udpPortNumber = pConfig->GetZeDMDWiFiPort() > 0 ? pConfig->GetZeDMDWiFiPort() : 3333; if (WiFiAddr.empty()) @@ -622,9 +622,11 @@ void DMD::ZeDMDThread() uint8_t bufferPosition = 0; uint16_t width = 0; uint16_t height = 0; + uint16_t frameSize = 0; uint16_t segData1[128] = {0}; uint16_t segData2[128] = {0}; uint8_t palette[PALETTE_SIZE] = {0}; + uint8_t renderBuffer[256 * 64] = {0}; m_dmdFrameReady.load(std::memory_order_acquire); m_stopFlag.load(std::memory_order_acquire); @@ -664,6 +666,7 @@ void DMD::ZeDMDThread() m_pUpdateBufferQueue[bufferPosition]->width, m_pUpdateBufferQueue[bufferPosition]->height); width = m_pUpdateBufferQueue[bufferPosition]->width; height = m_pUpdateBufferQueue[bufferPosition]->height; + frameSize = width * height; // Activate the correct scaling mode. m_pZeDMD->SetFrameSize(width, height); } @@ -675,6 +678,7 @@ void DMD::ZeDMDThread() m_pUpdateBufferQueue[bufferPosition]->r, m_pUpdateBufferQueue[bufferPosition]->g, m_pUpdateBufferQueue[bufferPosition]->b); } + if (m_pUpdateBufferQueue[bufferPosition]->mode == Mode::RGB24) { // ZeDMD HD supports 256 * 64 pixels. @@ -682,50 +686,25 @@ void DMD::ZeDMDThread() AdjustRGB24Depth(m_pUpdateBufferQueue[bufferPosition]->data, rgb24Data, (size_t)width * height, palette, m_pUpdateBufferQueue[bufferPosition]->depth); - m_pZeDMD->DisablePreUpscaling(); - m_pZeDMD->RenderRgb24(rgb24Data); - m_pZeDMD->EnablePreUpscaling(); + m_pZeDMD->RenderRgb888(rgb24Data); } - else if (m_pUpdateBufferQueue[bufferPosition]->mode == Mode::RGB16) + else if (m_pUpdateBufferQueue[bufferPosition]->mode == Mode::RGB16 || + (m_pSerum && IsSerumV2Mode(m_pUpdateBufferQueue[bufferPosition]->mode))) { - m_pZeDMD->DisablePreUpscaling(); m_pZeDMD->RenderRgb565(m_pUpdateBufferQueue[bufferPosition]->segData); - m_pZeDMD->EnablePreUpscaling(); } - else if (m_pSerum && IsSerumMode(m_pUpdateBufferQueue[bufferPosition]->mode)) + else { - if (IsSerumV2Mode(m_pUpdateBufferQueue[bufferPosition]->mode)) - { - m_pZeDMD->RenderRgb565(m_pUpdateBufferQueue[bufferPosition]->segData); - } - else + if (m_pUpdateBufferQueue[bufferPosition]->mode == Mode::SerumV1) { - // Note that uint16_t segData is used to transport the uint8_t palette data to keep the dmdserver protocol - // stable. memcpy(palette, m_pUpdateBufferQueue[bufferPosition]->segData, PALETTE_SIZE); - m_pZeDMD->RenderColoredGray6(m_pUpdateBufferQueue[bufferPosition]->data, palette, nullptr); + memcpy(renderBuffer, m_pUpdateBufferQueue[bufferPosition]->data, frameSize); + update = true; } - } - else if (!m_pSerum) - { - if (m_pUpdateBufferQueue[bufferPosition]->mode == Mode::Data) + else if (!m_pSerum && m_pUpdateBufferQueue[bufferPosition]->mode == Mode::Data) { - m_pZeDMD->SetPalette(palette, m_pUpdateBufferQueue[bufferPosition]->depth == 2 ? 4 : 16); - - switch (m_pUpdateBufferQueue[bufferPosition]->depth) - { - case 2: - m_pZeDMD->RenderGray2(m_pUpdateBufferQueue[bufferPosition]->data); - break; - - case 4: - m_pZeDMD->RenderGray4(m_pUpdateBufferQueue[bufferPosition]->data); - break; - - default: - //@todo log error - break; - } + memcpy(renderBuffer, m_pUpdateBufferQueue[bufferPosition]->data, frameSize); + update = true; } else if (m_pUpdateBufferQueue[bufferPosition]->mode == Mode::AlphaNumeric) { @@ -744,19 +723,26 @@ void DMD::ZeDMDThread() if (update) { - // ZeDMD HD supports 256 * 64 pixels. - uint8_t renderBuffer[256 * 64]; - if (m_pUpdateBufferQueue[bufferPosition]->hasSegData2) m_pAlphaNumeric->Render(renderBuffer, m_pUpdateBufferQueue[bufferPosition]->layout, segData1, segData2); else m_pAlphaNumeric->Render(renderBuffer, m_pUpdateBufferQueue[bufferPosition]->layout, segData1); + } + } - m_pZeDMD->SetPalette(palette, 4); - m_pZeDMD->RenderGray2(renderBuffer); + if (update) + { + for (int i = 0; i < frameSize; i++) + { + int pos = renderBuffer[i] * 3; + uint32_t r = palette[pos]; + uint32_t g = palette[pos + 1]; + uint32_t b = palette[pos + 2]; } } } + + if (update) m_pZeDMD->RenderRgb888(renderBuffer); } } }