a GPL multiplatform live visual software. I have one universe reading in a thread, but i need more universes. I have now 8 layers with 64 channels each, but i would test how it works with 16 video layers. The hardcoded source maximun are 125 now and i plan implement support for all, so i will need a lot of universes. I don not know one application of having 125 sources and surely i have not the hardware required for that, but i want test the most layers possible, the bottlenecks are easiest to see it when there is a lot of use.
I am on Linux in C++/Qt. I start the connection with:
// set up ola connection
m_client = new OlaCallbackClientWrapper;
if (!m_client->Setup()) {qErrnoWarning("olaInterface::open: m_client.Setup:");}
m_clientpointer = m_client->GetClient();
m_clientpointer->SetDmxCallback(ola::NewCallback(this, &olaWorker::NewDmx));
m_clientpointer->RegisterUniverse(m_universe,ola::REGISTER,ola::NewSingleCallback(this, &olaWorker::RegisterComplete));
m_client->GetSelectServer()->RegisterRepeatingTimeout(4000,ola::NewCallback(this, &olaWorker::CheckDataLoss));
qDebug()<< "olaWorker: Init complete.";
m_client->GetSelectServer()->Run();
and receives the data in the Callback NewDMX where the data is processed. I have several ideas but i do not know what are the best in perfomance and clean code. My questions:
- Should i create a new OlaCallbackClientWrapper or i can use the same? if yes, each OlaCallbackclientWrapper it should be in a new thread or can be in the same?
- Should i only Register a new universe and expects the DmxBuffer in NewDmx with the universe variable set to the universe being sent?
All the code is in
git clone https://code.google.com/p/libremediaserver.glmixer-dmx/
if any of you are interested. olaInterface.cpp and olaInterface.h are the related files.
Regards.
Santi Noreña.