diff --git a/src/content/sdl_video_frame_stream2.cpp b/src/content/sdl_video_frame_stream2.cpp index b127064..d7c82f7 100644 --- a/src/content/sdl_video_frame_stream2.cpp +++ b/src/content/sdl_video_frame_stream2.cpp @@ -1,5 +1,4 @@ #include "./sdl_video_frame_stream2.hpp" -#include "SDL3/SDL_pixels.h" #include #include @@ -41,9 +40,12 @@ SDLVideoCameraContent::SDLVideoCameraContent(void) { { SDL_CameraSpec spec { // FORCE a diffrent pixel format - SDL_PIXELFORMAT_RGBA8888, - //SDL_COLORSPACE_SRGB, - SDL_COLORSPACE_UNKNOWN, + //SDL_PIXELFORMAT_RGBA8888, + //SDL_PIXELFORMAT_UNKNOWN, + SDL_PIXELFORMAT_IYUV, + + SDL_COLORSPACE_SRGB, + //SDL_COLORSPACE_UNKNOWN, //1280, 720, //640, 360, diff --git a/src/content/sdl_video_frame_stream2.hpp b/src/content/sdl_video_frame_stream2.hpp index e28100b..c36ff0d 100644 --- a/src/content/sdl_video_frame_stream2.hpp +++ b/src/content/sdl_video_frame_stream2.hpp @@ -28,11 +28,12 @@ struct SDLVideoFrame { SDLVideoFrame(const SDLVideoFrame& other) { timestampNS = other.timestampNS; if (static_cast(other.surface)) { + // TODO: use SDL_DuplicateSurface() surface = { SDL_CreateSurface( other.surface->w, other.surface->h, - SDL_PIXELFORMAT_RGBA8888 // meh + other.surface->format ), &SDL_DestroySurface }; diff --git a/src/main.cpp b/src/main.cpp index 0cc58b8..0036d1d 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -84,7 +84,7 @@ int main(int argc, char** argv) { auto writer = SDLAudioOutputDeviceDefaultFactory{}.create(); - for (size_t i = 0; i < 20; i++) { + for (size_t i = 0; i < 100; i++) { std::this_thread::sleep_for(std::chrono::milliseconds(10)); auto new_frame_opt = reader->pop(); if (new_frame_opt.has_value()) { @@ -108,7 +108,7 @@ int main(int argc, char** argv) { std::this_thread::sleep_for(std::chrono::milliseconds(50)); auto new_frame_opt = reader->pop(); if (new_frame_opt.has_value()) { - std::cout << "video frame was " << new_frame_opt.value().surface->w << "x" << new_frame_opt.value().surface->h << " " << new_frame_opt.value().timestampNS << "ns\n"; + std::cout << "video frame was " << new_frame_opt.value().surface->w << "x" << new_frame_opt.value().surface->h << " " << new_frame_opt.value().timestampNS << "ns " << new_frame_opt.value().surface->format << "sf\n"; } } vcc.releaseSubStream(reader); @@ -119,6 +119,7 @@ int main(int argc, char** argv) { ImGui::CreateContext(); // TODO: test android behaviour + // -> its too big, dpi does not take eye-screen-distance into account float display_scale = SDL_GetWindowDisplayScale(window.get()); if (display_scale < 0.001f) { // error?