More optimalizations and multithreading - 1FPS

This commit is contained in:
Adam Prochazka
2023-04-09 23:48:05 +02:00
parent ae0f8749b5
commit 374a63bc0c
12 changed files with 436 additions and 270 deletions

View File

@ -1,5 +1,5 @@
CC = g++
CFLAGS = -pthread -std=c++11 -Wall -Wextra -pedantic
CFLAGS = -pthread -std=c++11 -Wall -Wextra -pedantic -O3
LDLIBS = -lSDL2 -lSDL2_image
SRCS = $(wildcard *.cpp)

View File

@ -64,7 +64,6 @@ int Receiver::readCdcData(uint8_t (*character)[CDC_FRAME_SIZE]) {
std::cerr << "Error in read" << std::endl;
return -1;
}
#if 0 // PRINT WHAT IS RECEIVED
for(int i = 0; i<CDC_FRAME_SIZE; i++)
@ -77,7 +76,6 @@ int Receiver::readCdcData(uint8_t (*character)[CDC_FRAME_SIZE]) {
#endif
return 0;
}
@ -124,8 +122,6 @@ int Receiver::fillBuffer(){
unsigned char character[CDC_FRAME_SIZE];
std::vector<uint8_t> tempVec{};
Receiver::readCdcData(&character);
int i = -1;
do {
Receiver::readCdcData(&character);
@ -186,15 +182,17 @@ void Receiver::bufferToDisplay(){
currentBufferIndexMutex.lock();
int buffIdx = currentBufferIndex;
currentBufferIndexMutex.unlock();
std::cout << buffIdx << std::endl;
switch(buffIdx){
case 0:
std::cout << buffer1.size() << std::endl;
dis->vectorToTexture(&buffer1);
break;
case 1:
std::cout << buffer2.size() << std::endl;
dis->vectorToTexture(&buffer2);
break;
case 2:
std::cout << buffer3.size() << std::endl;
dis->vectorToTexture(&buffer3);
break;
default:

View File

@ -32,11 +32,18 @@ void windowFlipThread(Displayer * displayerPtr){
displayerPtr->flipThroughTextures();
}
void WrapperBufferToDisplay(Receiver ** receiverPtr){
(*receiverPtr)->bufferToDisplay();
}
void receiverLoop(Receiver ** receiverPtr){
std::vector<std::thread> displayThreads;
while(1){
(*receiverPtr)->fillBuffer();
(*receiverPtr)->bufferToDisplay();
std::this_thread::sleep_for(std::chrono::milliseconds(3));
std::thread t2(WrapperBufferToDisplay, receiverPtr);
t2.detach();
}
}

View File

@ -15,4 +15,5 @@
#include <mutex>
#include <fstream>
#define CDC_FRAME_SIZE 50
#define CDC_FRAME_SIZE 64
#define CDC_FRAME_DELAY 1