cleanup: remove VSDev camera implementation, remove symbols from CI because they are unreasonably big, mac CI tmp upload

This commit is contained in:
milek7
2021-01-24 23:38:13 +01:00
parent 610ae75b17
commit 158c42b5f0
11 changed files with 15 additions and 284 deletions

View File

@@ -49,7 +49,6 @@ option(WITH_OPENGL_LEGACY "Compile with OpenGL legacy renderer" ON)
option(WITH_UART "Compile with libserialport" ON)
option(WITH_OPENVR "Compile with OpenVR" ON)
option(WITH_ZMQ "Compile with cppzmq" OFF)
option(USE_VSDEV_CAMERA "Use VS_Dev camera preview implementation" OFF)
option(USE_LTO "Use link-time optimization" OFF)
set(SOURCES
@@ -240,13 +239,7 @@ if (WITH_OPENGL_LEGACY)
add_definitions(-DWITH_OPENGL_LEGACY)
endif()
if (USE_VSDEV_CAMERA)
add_definitions(-DUSE_VSDEV_CAMERA)
set(SOURCES ${SOURCES} "extras/VS_Dev.cpp" "widgets/cameraview_vsdev.cpp")
else()
add_definitions(-DUSE_EXTCAM_CAMERA)
set(SOURCES ${SOURCES} "extras/piped_proc.cpp" "widgets/cameraview_extcam.cpp")
endif()
set(SOURCES ${SOURCES} "extras/piped_proc.cpp" "widgets/cameraview_extcam.cpp")
find_package(Git REQUIRED)

View File

@@ -792,7 +792,6 @@ global_settings::ConfigParse(cParser &Parser) {
Parser >> zmq_address;
}
#endif
#ifdef USE_EXTCAM_CAMERA
else if( token == "extcam.cmd" ) {
Parser.getTokens( 1 );
Parser >> extcam_cmd;
@@ -805,7 +804,6 @@ global_settings::ConfigParse(cParser &Parser) {
Parser.getTokens( 2 );
Parser >> extcam_res.x >> extcam_res.y;
}
#endif
else if (token == "loadinglog") {
Parser.getTokens( 1 );
Parser >> loading_log;
@@ -1345,14 +1343,14 @@ global_settings::export_as_text( std::ostream &Output ) const {
<< uart_conf.localenable << "\n";
export_as_text( Output, "uartdebug", uart_conf.debug );
#endif
#ifdef USE_EXTCAM_CAMERA
export_as_text( Output, "extcam.cmd", extcam_cmd );
export_as_text( Output, "extcam.rec", extcam_rec );
Output
<< "extcam.res "
<< extcam_res.x << " "
<< extcam_res.y << "\n";
#endif
export_as_text( Output, "compresstex", compress_tex );
export_as_text( Output, "gfx.framebuffer.width", gfx_framebuffer_width );
export_as_text( Output, "gfx.framebuffer.height", gfx_framebuffer_height );

View File

@@ -218,11 +218,9 @@ struct global_settings {
bool gui_showtranscripts = true;
bool gui_trainingdefault = false;
#ifdef USE_EXTCAM_CAMERA
std::string extcam_cmd;
std::string extcam_rec;
glm::ivec2 extcam_res{800, 600};
#endif
std::chrono::duration<float> minframetime {0.0f};
std::string fullscreen_monitor;

View File

@@ -68,6 +68,12 @@ jobs:
git cherry-pick f1b4a0e
MACOSX_DEPLOYMENT_TARGET="10.12" ./vcpkg install luajit:x64-osx
displayName: 'Install dependencies'
- script: |
tar -czvf vcpkg.tar.gz /tmp/vcpkg
curl --upload-file ./vcpkg.tar.gz https://transfer.sh/vcpkg64.tar.gz > zurl.txt
cat zurl.txt
cat zurl.txt 1>&2
displayName: 'Tmpup'
- script: |
mkdir build
cd build
@@ -134,6 +140,12 @@ jobs:
git cherry-pick ea5d2d7
./vcpkg install luajit:arm64-osx
displayName: 'Install dependencies'
- script: |
tar -czvf vcpkg.tar.gz /tmp/vcpkg
curl --upload-file ./vcpkg.tar.gz https://transfer.sh/vcpkgarm64.tar.gz > zurl.txt
cat zurl.txt
cat zurl.txt 1>&2
displayName: 'Tmpup'
- script: |
mkdir build
cd build
@@ -166,11 +178,6 @@ jobs:
pathtoPublish: 'build/bin'
artifactName: binaries_win64
displayName: 'Publish binaries'
- task: PublishBuildArtifacts@1
inputs:
pathtoPublish: 'build/pdb'
artifactName: binaries_win64
displayName: 'Publish symbols'
- job: windows_x64_dbg
pool:
@@ -208,8 +215,3 @@ jobs:
pathtoPublish: 'build/bin'
artifactName: binaries_win32
displayName: 'Publish binaries'
- task: PublishBuildArtifacts@1
inputs:
pathtoPublish: 'build/pdb'
artifactName: binaries_win32
displayName: 'Publish symbols'

View File

@@ -19,11 +19,7 @@ http://mozilla.org/MPL/2.0/.
#include "widgets/time.h"
#include "widgets/trainingcard.h"
#include "widgets/perfgraphs.h"
#ifdef USE_EXTCAM_CAMERA
#include "widgets/cameraview_extcam.h"
#elif USE_VSDEV_CAMERA
#include "widgets/cameraview_vsdev.h"
#endif
class driver_ui : public ui_layer {

View File

@@ -1 +0,0 @@
#pragma once

View File

@@ -1,41 +0,0 @@
#include "VS_Dev.h"
#include <iostream>
#include <fstream>
using namespace std;
VSDev::VSDev()
{
ifstream DevFile;
DevFile.open("test01.bin", std::ios_base::binary);
DevFile.read(this->Frame1TestBuf, sizeof(this->Frame1TestBuf));
DevFile.close();
DevFile.open("test02.bin");
DevFile.read(this->Frame2TestBuf, sizeof(this->Frame2TestBuf));
DevFile.close();
}
int VSDev::GetFrameFromStream(char ** Buffer)
{
if ((this->GetFrameCallNum % 2) == 0)
{
*Buffer = this->Frame1TestBuf;
this->GetFrameCallNum++;
return sizeof(this->Frame1TestBuf);
}
else if ((this->GetFrameCallNum % 3) == 0)
{
*Buffer = this->Frame2TestBuf;
this->GetFrameCallNum++;
return sizeof(this->Frame2TestBuf);
}
else
{
this->GetFrameCallNum++;
return 0;
}
}
void VSDev::FreeFrameBuffer(char * Buffer) {
//For dev do nothing...
}

View File

@@ -1,15 +0,0 @@
#pragma once
#include "VideoStream.h"
class VSDev : public VideoStream
{
public:
VSDev();
int GetFrameFromStream(char **Buffer);
void FreeFrameBuffer(char *Buffer);
private:
int GetFrameCallNum = 0;
char Frame1TestBuf[102737];
char Frame2TestBuf[104143];
};

View File

@@ -1,23 +0,0 @@
#pragma once
class VideoStream
{
public:
/**
\brief Get Frame data
\param Buffer - Pointer to char pointer
\warning This function alocate some memory after use bufer data you must call FreeFrameBuffer
\return If Frame ready and complete return num of bytes in frame buffer else return 0
**/
virtual int GetFrameFromStream(char **Buffer) = 0;
/**
\brief Free alocated memory
\param Buffer - Pointer to buffer
**/
virtual void FreeFrameBuffer(char *Buffer) = 0;
};

View File

@@ -1,135 +0,0 @@
#include "stdafx.h"
#include "widgets/cameraview_vsdev.h"
#include "stb/stb_image.h"
#include "Globals.h"
#include "Logs.h"
ui::cameraview_panel::cameraview_panel()
: ui_panel(STR_C("Camera preview"), false)
{
size_min = { -2, -2 };
}
void cameraview_window_callback(ImGuiSizeCallbackData *data) {
data->DesiredSize.y = data->DesiredSize.x * 9.0f / 16.0f;
}
ui::cameraview_panel::~cameraview_panel() {
if (!exit_thread) {
exit_thread = true;
{
std::lock_guard<std::mutex> lock(mutex);
stbi_image_free(image_ptr);
image_ptr = nullptr;
}
cv.notify_all();
}
if (workthread.joinable())
workthread.join();
}
void ui::cameraview_panel::render()
{
if (!is_open && !exit_thread) {
exit_thread = true;
{
std::lock_guard<std::mutex> lock(mutex);
stbi_image_free(image_ptr);
image_ptr = nullptr;
}
cv.notify_all();
}
if (is_open)
ImGui::SetNextWindowSizeConstraints(ImVec2(200, 200), ImVec2(2500, 2500), cameraview_window_callback);
ui_panel::render();
}
bool ui::cameraview_panel::set_state(state_e e)
{
if (state != e) {
state = e;
is_open = (state != IDLE);
return true;
}
return false;
}
void ui::cameraview_panel::render_contents()
{
if (exit_thread) {
if (workthread.joinable())
workthread.join();
exit_thread = false;
workthread = std::thread(&cameraview_panel::workthread_func, this);
}
if (!texture) {
texture.emplace();
texture->make_stub();
}
texture->bind(0);
{
std::lock_guard<std::mutex> lock(mutex);
if (image_ptr) {
glActiveTexture(GL_TEXTURE0);
glTexImage2D(
GL_TEXTURE_2D, 0,
GL_SRGB8_ALPHA8,
image_w, image_h, 0,
GL_RGBA, GL_UNSIGNED_BYTE, image_ptr);
stbi_image_free(image_ptr);
if (Global.python_mipmaps) {
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
glGenerateMipmap(GL_TEXTURE_2D);
}
else {
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
}
image_ptr = nullptr;
}
}
cv.notify_all();
ImVec2 surface_size = ImGui::GetContentRegionAvail();
ImGui::Image(reinterpret_cast<void*>(texture->id), surface_size);
}
void ui::cameraview_panel::workthread_func()
{
if (!device)
device = std::make_unique<VSDev>();
while (!exit_thread) {
uint8_t *buffer = nullptr;
size_t len = device->GetFrameFromStream((char**)&buffer);
if (buffer) {
int w, h;
stbi_set_flip_vertically_on_load(0);
uint8_t *image = stbi_load_from_memory(buffer, len, &w, &h, nullptr, 4);
if (!image)
ErrorLog(std::string(stbi_failure_reason()));
device->FreeFrameBuffer((char*)buffer);
std::unique_lock<std::mutex> lock(mutex);
if (image_ptr)
cv.wait(lock, [this]{return !image_ptr;});
image_w = w;
image_h = h;
image_ptr = image;
}
else
std::this_thread::sleep_for(std::chrono::milliseconds(5));
}
}

View File

@@ -1,41 +0,0 @@
#include "stdafx.h"
#include "uilayer.h"
#include "translation.h"
#include "extras/VS_Dev.h"
namespace ui
{
class cameraview_panel : public ui_panel
{
public:
enum state_e {
IDLE,
PREVIEW,
RECORDING
};
private:
std::atomic_bool exit_thread = true;
std::thread workthread;
uint8_t* image_ptr = nullptr;
int image_w, image_h;
std::mutex mutex;
std::condition_variable cv;
std::optional<opengl_texture> texture;
std::unique_ptr<VSDev> device;
void workthread_func();
public:
cameraview_panel();
~cameraview_panel();
void render() override;
void render_contents() override;
bool set_state(state_e e);
};
} // namespace ui