diff --git a/CMakeLists.txt b/CMakeLists.txt index 330ce2b..4b61caf 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -31,7 +31,7 @@ if(NOT EXISTS "${SLANG_LICENSE_FILE}") endif() set(APP_SOURCES - "${APP_DIR}/DeckLinkAPI_i.c" + "${APP_DIR}/videoio/decklink/DeckLinkAPI_i.c" "${APP_DIR}/control/ControlServer.cpp" "${APP_DIR}/control/ControlServer.h" "${APP_DIR}/control/OscServer.cpp" @@ -40,50 +40,51 @@ set(APP_SOURCES "${APP_DIR}/control/RuntimeControlBridge.h" "${APP_DIR}/control/RuntimeServices.cpp" "${APP_DIR}/control/RuntimeServices.h" - "${APP_DIR}/decklink/DeckLinkDisplayMode.cpp" - "${APP_DIR}/decklink/DeckLinkDisplayMode.h" - "${APP_DIR}/decklink/DeckLinkFrameTransfer.cpp" - "${APP_DIR}/decklink/DeckLinkFrameTransfer.h" - "${APP_DIR}/decklink/DeckLinkSession.cpp" - "${APP_DIR}/decklink/DeckLinkSession.h" - "${APP_DIR}/decklink/DeckLinkVideoIOFormat.cpp" - "${APP_DIR}/decklink/DeckLinkVideoIOFormat.h" - "${APP_DIR}/gl/GLExtensions.cpp" - "${APP_DIR}/gl/GLExtensions.h" - "${APP_DIR}/gl/GlobalParamsBuffer.cpp" - "${APP_DIR}/gl/GlobalParamsBuffer.h" - "${APP_DIR}/gl/GlRenderConstants.h" - "${APP_DIR}/gl/GlScopedObjects.h" - "${APP_DIR}/gl/GlShaderSources.cpp" - "${APP_DIR}/gl/GlShaderSources.h" + "${APP_DIR}/videoio/decklink/DeckLinkAPI_h.h" + "${APP_DIR}/videoio/decklink/DeckLinkDisplayMode.cpp" + "${APP_DIR}/videoio/decklink/DeckLinkDisplayMode.h" + "${APP_DIR}/videoio/decklink/DeckLinkFrameTransfer.cpp" + "${APP_DIR}/videoio/decklink/DeckLinkFrameTransfer.h" + "${APP_DIR}/videoio/decklink/DeckLinkSession.cpp" + "${APP_DIR}/videoio/decklink/DeckLinkSession.h" + "${APP_DIR}/videoio/decklink/DeckLinkVideoIOFormat.cpp" + "${APP_DIR}/videoio/decklink/DeckLinkVideoIOFormat.h" + "${APP_DIR}/gl/renderer/GLExtensions.cpp" + "${APP_DIR}/gl/renderer/GLExtensions.h" + "${APP_DIR}/gl/shader/GlobalParamsBuffer.cpp" + "${APP_DIR}/gl/shader/GlobalParamsBuffer.h" + "${APP_DIR}/gl/renderer/GlRenderConstants.h" + "${APP_DIR}/gl/renderer/GlScopedObjects.h" + "${APP_DIR}/gl/shader/GlShaderSources.cpp" + "${APP_DIR}/gl/shader/GlShaderSources.h" "${APP_DIR}/gl/OpenGLComposite.cpp" "${APP_DIR}/gl/OpenGLComposite.h" "${APP_DIR}/gl/OpenGLCompositeRuntimeControls.cpp" - "${APP_DIR}/gl/OpenGLRenderPass.cpp" - "${APP_DIR}/gl/OpenGLRenderPass.h" - "${APP_DIR}/gl/OpenGLRenderPipeline.cpp" - "${APP_DIR}/gl/OpenGLRenderPipeline.h" - "${APP_DIR}/gl/OpenGLRenderer.cpp" - "${APP_DIR}/gl/OpenGLRenderer.h" - "${APP_DIR}/gl/OpenGLVideoIOBridge.cpp" - "${APP_DIR}/gl/OpenGLVideoIOBridge.h" - "${APP_DIR}/gl/OpenGLShaderPrograms.cpp" - "${APP_DIR}/gl/OpenGLShaderPrograms.h" - "${APP_DIR}/gl/PngScreenshotWriter.cpp" - "${APP_DIR}/gl/PngScreenshotWriter.h" - "${APP_DIR}/gl/ShaderProgramCompiler.cpp" - "${APP_DIR}/gl/ShaderProgramCompiler.h" - "${APP_DIR}/gl/ShaderBuildQueue.cpp" - "${APP_DIR}/gl/ShaderBuildQueue.h" - "${APP_DIR}/gl/ShaderTextureBindings.cpp" - "${APP_DIR}/gl/ShaderTextureBindings.h" - "${APP_DIR}/gl/Std140Buffer.h" - "${APP_DIR}/gl/TextRasterizer.cpp" - "${APP_DIR}/gl/TextRasterizer.h" - "${APP_DIR}/gl/TextureAssetLoader.cpp" - "${APP_DIR}/gl/TextureAssetLoader.h" - "${APP_DIR}/gl/TemporalHistoryBuffers.cpp" - "${APP_DIR}/gl/TemporalHistoryBuffers.h" + "${APP_DIR}/gl/pipeline/OpenGLRenderPass.cpp" + "${APP_DIR}/gl/pipeline/OpenGLRenderPass.h" + "${APP_DIR}/gl/pipeline/OpenGLRenderPipeline.cpp" + "${APP_DIR}/gl/pipeline/OpenGLRenderPipeline.h" + "${APP_DIR}/gl/renderer/OpenGLRenderer.cpp" + "${APP_DIR}/gl/renderer/OpenGLRenderer.h" + "${APP_DIR}/gl/pipeline/OpenGLVideoIOBridge.cpp" + "${APP_DIR}/gl/pipeline/OpenGLVideoIOBridge.h" + "${APP_DIR}/gl/shader/OpenGLShaderPrograms.cpp" + "${APP_DIR}/gl/shader/OpenGLShaderPrograms.h" + "${APP_DIR}/gl/pipeline/PngScreenshotWriter.cpp" + "${APP_DIR}/gl/pipeline/PngScreenshotWriter.h" + "${APP_DIR}/gl/shader/ShaderProgramCompiler.cpp" + "${APP_DIR}/gl/shader/ShaderProgramCompiler.h" + "${APP_DIR}/gl/shader/ShaderBuildQueue.cpp" + "${APP_DIR}/gl/shader/ShaderBuildQueue.h" + "${APP_DIR}/gl/shader/ShaderTextureBindings.cpp" + "${APP_DIR}/gl/shader/ShaderTextureBindings.h" + "${APP_DIR}/gl/shader/Std140Buffer.h" + "${APP_DIR}/gl/shader/TextRasterizer.cpp" + "${APP_DIR}/gl/shader/TextRasterizer.h" + "${APP_DIR}/gl/shader/TextureAssetLoader.cpp" + "${APP_DIR}/gl/shader/TextureAssetLoader.h" + "${APP_DIR}/gl/pipeline/TemporalHistoryBuffers.cpp" + "${APP_DIR}/gl/pipeline/TemporalHistoryBuffers.h" "${APP_DIR}/LoopThroughWithOpenGLCompositing.cpp" "${APP_DIR}/LoopThroughWithOpenGLCompositing.h" "${APP_DIR}/LoopThroughWithOpenGLCompositing.rc" @@ -118,12 +119,15 @@ add_executable(LoopThroughWithOpenGLCompositing WIN32 ${APP_SOURCES}) target_include_directories(LoopThroughWithOpenGLCompositing PRIVATE "${APP_DIR}" "${APP_DIR}/control" - "${APP_DIR}/decklink" "${APP_DIR}/gl" + "${APP_DIR}/gl/pipeline" + "${APP_DIR}/gl/renderer" + "${APP_DIR}/gl/shader" "${APP_DIR}/platform" "${APP_DIR}/runtime" "${APP_DIR}/shader" "${APP_DIR}/videoio" + "${APP_DIR}/videoio/decklink" ) target_link_libraries(LoopThroughWithOpenGLCompositing PRIVATE @@ -204,6 +208,7 @@ add_executable(Std140BufferTests target_include_directories(Std140BufferTests PRIVATE "${APP_DIR}" "${APP_DIR}/gl" + "${APP_DIR}/gl/shader" ) if(MSVC) @@ -252,15 +257,15 @@ endif() add_test(NAME OscServerTests COMMAND OscServerTests) add_executable(VideoIOFormatTests - "${APP_DIR}/decklink/DeckLinkVideoIOFormat.cpp" + "${APP_DIR}/videoio/decklink/DeckLinkVideoIOFormat.cpp" "${APP_DIR}/videoio/VideoIOFormat.cpp" "${CMAKE_CURRENT_SOURCE_DIR}/tests/VideoIOFormatTests.cpp" ) target_include_directories(VideoIOFormatTests PRIVATE "${APP_DIR}" - "${APP_DIR}/decklink" "${APP_DIR}/videoio" + "${APP_DIR}/videoio/decklink" ) if(MSVC) @@ -276,8 +281,8 @@ add_executable(VideoPlayoutSchedulerTests target_include_directories(VideoPlayoutSchedulerTests PRIVATE "${APP_DIR}" - "${APP_DIR}/decklink" "${APP_DIR}/videoio" + "${APP_DIR}/videoio/decklink" ) if(MSVC) @@ -293,8 +298,8 @@ add_executable(VideoIODeviceFakeTests target_include_directories(VideoIODeviceFakeTests PRIVATE "${APP_DIR}" - "${APP_DIR}/decklink" "${APP_DIR}/videoio" + "${APP_DIR}/videoio/decklink" ) if(MSVC) diff --git a/README.md b/README.md index 3efe5d1..9e3313c 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,14 @@ The app loads shader packages from `shaders/`, compiles Slang to GLSL at runtime - `tests/`: focused native tests for pure runtime logic. - `.gitea/workflows/ci.yml`: Gitea Actions CI for Windows native tests and Ubuntu UI build. +Native app internals are grouped by boundary: + +- `videoio/`: backend-neutral video I/O contracts, formats, and playout timing. +- `videoio/decklink/`: DeckLink-specific device adapter, callbacks, and SDK bindings. +- `gl/renderer/`: low-level OpenGL resources and extension helpers. +- `gl/pipeline/`: frame pipeline, render passes, video I/O bridge, preview/readback, and screenshots. +- `gl/shader/`: shader compilation, texture/text assets, UBO packing, and shader program ownership. + ## Requirements - Windows with Visual Studio 2022 C++ tooling. @@ -238,7 +246,7 @@ If `SLANG_ROOT` is not set, the workflow falls back to the repo-local default un - Genlock. - Find a better UI library for react. - Logs. -- Continue source cleanup/refactoring. Pass 2 done +- Continue source cleanup/refactoring. Pass 3 done - Support a separate sound shader `.slang` file in shader packages. (https://www.shadertoy.com/view/XsBXWt) - Add WebView2 - move to MSDF, typography rasterisation diff --git a/apps/LoopThroughWithOpenGLCompositing/LoopThroughWithOpenGLCompositing.vcxproj b/apps/LoopThroughWithOpenGLCompositing/LoopThroughWithOpenGLCompositing.vcxproj index c0a8fef..65a2b9c 100644 --- a/apps/LoopThroughWithOpenGLCompositing/LoopThroughWithOpenGLCompositing.vcxproj +++ b/apps/LoopThroughWithOpenGLCompositing/LoopThroughWithOpenGLCompositing.vcxproj @@ -1,4 +1,4 @@ - + @@ -89,7 +89,7 @@ Disabled - .;control;decklink;gl;videoio;%(AdditionalIncludeDirectories) + .;control;gl;gl\pipeline;gl\renderer;gl\shader;videoio;videoio\decklink;%(AdditionalIncludeDirectories) WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL @@ -111,7 +111,7 @@ Disabled - .;control;decklink;gl;videoio;%(AdditionalIncludeDirectories) + .;control;gl;gl\pipeline;gl\renderer;gl\shader;videoio;videoio\decklink;%(AdditionalIncludeDirectories) WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL @@ -131,7 +131,7 @@ MaxSpeed true - .;control;decklink;gl;videoio;%(AdditionalIncludeDirectories) + .;control;gl;gl\pipeline;gl\renderer;gl\shader;videoio;videoio\decklink;%(AdditionalIncludeDirectories) WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) MultiThreadedDLL true @@ -156,7 +156,7 @@ MaxSpeed true - .;control;decklink;gl;videoio;%(AdditionalIncludeDirectories) + .;control;gl;gl\pipeline;gl\renderer;gl\shader;videoio;videoio\decklink;%(AdditionalIncludeDirectories) WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) MultiThreadedDLL true @@ -175,49 +175,49 @@ - + - - - - - - - - + + + + + + + + Create Create Create Create - + - - + + - + - - - - - - - - + + + + + + + + - - + + diff --git a/apps/LoopThroughWithOpenGLCompositing/LoopThroughWithOpenGLCompositing.vcxproj.filters b/apps/LoopThroughWithOpenGLCompositing/LoopThroughWithOpenGLCompositing.vcxproj.filters index 31018c1..151acb1 100644 --- a/apps/LoopThroughWithOpenGLCompositing/LoopThroughWithOpenGLCompositing.vcxproj.filters +++ b/apps/LoopThroughWithOpenGLCompositing/LoopThroughWithOpenGLCompositing.vcxproj.filters @@ -1,4 +1,4 @@ - + @@ -18,7 +18,7 @@ - + Source Files @@ -27,43 +27,43 @@ Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files Source Files - + DeckLink API Source Files - + Source Files - + Source Files @@ -77,7 +77,7 @@ - + Header Files @@ -86,28 +86,28 @@ Header Files - + Header Files - + Header Files - + Header Files - + Header Files - + Header Files - + Header Files - + Header Files - + Header Files @@ -122,10 +122,10 @@ Header Files - + Header Files - + Header Files diff --git a/apps/LoopThroughWithOpenGLCompositing/gl/OpenGLRenderPass.cpp b/apps/LoopThroughWithOpenGLCompositing/gl/pipeline/OpenGLRenderPass.cpp similarity index 100% rename from apps/LoopThroughWithOpenGLCompositing/gl/OpenGLRenderPass.cpp rename to apps/LoopThroughWithOpenGLCompositing/gl/pipeline/OpenGLRenderPass.cpp diff --git a/apps/LoopThroughWithOpenGLCompositing/gl/OpenGLRenderPass.h b/apps/LoopThroughWithOpenGLCompositing/gl/pipeline/OpenGLRenderPass.h similarity index 100% rename from apps/LoopThroughWithOpenGLCompositing/gl/OpenGLRenderPass.h rename to apps/LoopThroughWithOpenGLCompositing/gl/pipeline/OpenGLRenderPass.h diff --git a/apps/LoopThroughWithOpenGLCompositing/gl/OpenGLRenderPipeline.cpp b/apps/LoopThroughWithOpenGLCompositing/gl/pipeline/OpenGLRenderPipeline.cpp similarity index 100% rename from apps/LoopThroughWithOpenGLCompositing/gl/OpenGLRenderPipeline.cpp rename to apps/LoopThroughWithOpenGLCompositing/gl/pipeline/OpenGLRenderPipeline.cpp diff --git a/apps/LoopThroughWithOpenGLCompositing/gl/OpenGLRenderPipeline.h b/apps/LoopThroughWithOpenGLCompositing/gl/pipeline/OpenGLRenderPipeline.h similarity index 100% rename from apps/LoopThroughWithOpenGLCompositing/gl/OpenGLRenderPipeline.h rename to apps/LoopThroughWithOpenGLCompositing/gl/pipeline/OpenGLRenderPipeline.h diff --git a/apps/LoopThroughWithOpenGLCompositing/gl/OpenGLVideoIOBridge.cpp b/apps/LoopThroughWithOpenGLCompositing/gl/pipeline/OpenGLVideoIOBridge.cpp similarity index 100% rename from apps/LoopThroughWithOpenGLCompositing/gl/OpenGLVideoIOBridge.cpp rename to apps/LoopThroughWithOpenGLCompositing/gl/pipeline/OpenGLVideoIOBridge.cpp diff --git a/apps/LoopThroughWithOpenGLCompositing/gl/OpenGLVideoIOBridge.h b/apps/LoopThroughWithOpenGLCompositing/gl/pipeline/OpenGLVideoIOBridge.h similarity index 100% rename from apps/LoopThroughWithOpenGLCompositing/gl/OpenGLVideoIOBridge.h rename to apps/LoopThroughWithOpenGLCompositing/gl/pipeline/OpenGLVideoIOBridge.h diff --git a/apps/LoopThroughWithOpenGLCompositing/gl/PngScreenshotWriter.cpp b/apps/LoopThroughWithOpenGLCompositing/gl/pipeline/PngScreenshotWriter.cpp similarity index 100% rename from apps/LoopThroughWithOpenGLCompositing/gl/PngScreenshotWriter.cpp rename to apps/LoopThroughWithOpenGLCompositing/gl/pipeline/PngScreenshotWriter.cpp diff --git a/apps/LoopThroughWithOpenGLCompositing/gl/PngScreenshotWriter.h b/apps/LoopThroughWithOpenGLCompositing/gl/pipeline/PngScreenshotWriter.h similarity index 100% rename from apps/LoopThroughWithOpenGLCompositing/gl/PngScreenshotWriter.h rename to apps/LoopThroughWithOpenGLCompositing/gl/pipeline/PngScreenshotWriter.h diff --git a/apps/LoopThroughWithOpenGLCompositing/gl/TemporalHistoryBuffers.cpp b/apps/LoopThroughWithOpenGLCompositing/gl/pipeline/TemporalHistoryBuffers.cpp similarity index 100% rename from apps/LoopThroughWithOpenGLCompositing/gl/TemporalHistoryBuffers.cpp rename to apps/LoopThroughWithOpenGLCompositing/gl/pipeline/TemporalHistoryBuffers.cpp diff --git a/apps/LoopThroughWithOpenGLCompositing/gl/TemporalHistoryBuffers.h b/apps/LoopThroughWithOpenGLCompositing/gl/pipeline/TemporalHistoryBuffers.h similarity index 100% rename from apps/LoopThroughWithOpenGLCompositing/gl/TemporalHistoryBuffers.h rename to apps/LoopThroughWithOpenGLCompositing/gl/pipeline/TemporalHistoryBuffers.h diff --git a/apps/LoopThroughWithOpenGLCompositing/gl/GLExtensions.cpp b/apps/LoopThroughWithOpenGLCompositing/gl/renderer/GLExtensions.cpp similarity index 100% rename from apps/LoopThroughWithOpenGLCompositing/gl/GLExtensions.cpp rename to apps/LoopThroughWithOpenGLCompositing/gl/renderer/GLExtensions.cpp diff --git a/apps/LoopThroughWithOpenGLCompositing/gl/GLExtensions.h b/apps/LoopThroughWithOpenGLCompositing/gl/renderer/GLExtensions.h similarity index 100% rename from apps/LoopThroughWithOpenGLCompositing/gl/GLExtensions.h rename to apps/LoopThroughWithOpenGLCompositing/gl/renderer/GLExtensions.h diff --git a/apps/LoopThroughWithOpenGLCompositing/gl/GlRenderConstants.h b/apps/LoopThroughWithOpenGLCompositing/gl/renderer/GlRenderConstants.h similarity index 100% rename from apps/LoopThroughWithOpenGLCompositing/gl/GlRenderConstants.h rename to apps/LoopThroughWithOpenGLCompositing/gl/renderer/GlRenderConstants.h diff --git a/apps/LoopThroughWithOpenGLCompositing/gl/GlScopedObjects.h b/apps/LoopThroughWithOpenGLCompositing/gl/renderer/GlScopedObjects.h similarity index 100% rename from apps/LoopThroughWithOpenGLCompositing/gl/GlScopedObjects.h rename to apps/LoopThroughWithOpenGLCompositing/gl/renderer/GlScopedObjects.h diff --git a/apps/LoopThroughWithOpenGLCompositing/gl/OpenGLRenderer.cpp b/apps/LoopThroughWithOpenGLCompositing/gl/renderer/OpenGLRenderer.cpp similarity index 100% rename from apps/LoopThroughWithOpenGLCompositing/gl/OpenGLRenderer.cpp rename to apps/LoopThroughWithOpenGLCompositing/gl/renderer/OpenGLRenderer.cpp diff --git a/apps/LoopThroughWithOpenGLCompositing/gl/OpenGLRenderer.h b/apps/LoopThroughWithOpenGLCompositing/gl/renderer/OpenGLRenderer.h similarity index 100% rename from apps/LoopThroughWithOpenGLCompositing/gl/OpenGLRenderer.h rename to apps/LoopThroughWithOpenGLCompositing/gl/renderer/OpenGLRenderer.h diff --git a/apps/LoopThroughWithOpenGLCompositing/gl/GlShaderSources.cpp b/apps/LoopThroughWithOpenGLCompositing/gl/shader/GlShaderSources.cpp similarity index 100% rename from apps/LoopThroughWithOpenGLCompositing/gl/GlShaderSources.cpp rename to apps/LoopThroughWithOpenGLCompositing/gl/shader/GlShaderSources.cpp diff --git a/apps/LoopThroughWithOpenGLCompositing/gl/GlShaderSources.h b/apps/LoopThroughWithOpenGLCompositing/gl/shader/GlShaderSources.h similarity index 100% rename from apps/LoopThroughWithOpenGLCompositing/gl/GlShaderSources.h rename to apps/LoopThroughWithOpenGLCompositing/gl/shader/GlShaderSources.h diff --git a/apps/LoopThroughWithOpenGLCompositing/gl/GlobalParamsBuffer.cpp b/apps/LoopThroughWithOpenGLCompositing/gl/shader/GlobalParamsBuffer.cpp similarity index 100% rename from apps/LoopThroughWithOpenGLCompositing/gl/GlobalParamsBuffer.cpp rename to apps/LoopThroughWithOpenGLCompositing/gl/shader/GlobalParamsBuffer.cpp diff --git a/apps/LoopThroughWithOpenGLCompositing/gl/GlobalParamsBuffer.h b/apps/LoopThroughWithOpenGLCompositing/gl/shader/GlobalParamsBuffer.h similarity index 100% rename from apps/LoopThroughWithOpenGLCompositing/gl/GlobalParamsBuffer.h rename to apps/LoopThroughWithOpenGLCompositing/gl/shader/GlobalParamsBuffer.h diff --git a/apps/LoopThroughWithOpenGLCompositing/gl/OpenGLShaderPrograms.cpp b/apps/LoopThroughWithOpenGLCompositing/gl/shader/OpenGLShaderPrograms.cpp similarity index 100% rename from apps/LoopThroughWithOpenGLCompositing/gl/OpenGLShaderPrograms.cpp rename to apps/LoopThroughWithOpenGLCompositing/gl/shader/OpenGLShaderPrograms.cpp diff --git a/apps/LoopThroughWithOpenGLCompositing/gl/OpenGLShaderPrograms.h b/apps/LoopThroughWithOpenGLCompositing/gl/shader/OpenGLShaderPrograms.h similarity index 100% rename from apps/LoopThroughWithOpenGLCompositing/gl/OpenGLShaderPrograms.h rename to apps/LoopThroughWithOpenGLCompositing/gl/shader/OpenGLShaderPrograms.h diff --git a/apps/LoopThroughWithOpenGLCompositing/gl/ShaderBuildQueue.cpp b/apps/LoopThroughWithOpenGLCompositing/gl/shader/ShaderBuildQueue.cpp similarity index 100% rename from apps/LoopThroughWithOpenGLCompositing/gl/ShaderBuildQueue.cpp rename to apps/LoopThroughWithOpenGLCompositing/gl/shader/ShaderBuildQueue.cpp diff --git a/apps/LoopThroughWithOpenGLCompositing/gl/ShaderBuildQueue.h b/apps/LoopThroughWithOpenGLCompositing/gl/shader/ShaderBuildQueue.h similarity index 100% rename from apps/LoopThroughWithOpenGLCompositing/gl/ShaderBuildQueue.h rename to apps/LoopThroughWithOpenGLCompositing/gl/shader/ShaderBuildQueue.h diff --git a/apps/LoopThroughWithOpenGLCompositing/gl/ShaderProgramCompiler.cpp b/apps/LoopThroughWithOpenGLCompositing/gl/shader/ShaderProgramCompiler.cpp similarity index 100% rename from apps/LoopThroughWithOpenGLCompositing/gl/ShaderProgramCompiler.cpp rename to apps/LoopThroughWithOpenGLCompositing/gl/shader/ShaderProgramCompiler.cpp diff --git a/apps/LoopThroughWithOpenGLCompositing/gl/ShaderProgramCompiler.h b/apps/LoopThroughWithOpenGLCompositing/gl/shader/ShaderProgramCompiler.h similarity index 100% rename from apps/LoopThroughWithOpenGLCompositing/gl/ShaderProgramCompiler.h rename to apps/LoopThroughWithOpenGLCompositing/gl/shader/ShaderProgramCompiler.h diff --git a/apps/LoopThroughWithOpenGLCompositing/gl/ShaderTextureBindings.cpp b/apps/LoopThroughWithOpenGLCompositing/gl/shader/ShaderTextureBindings.cpp similarity index 100% rename from apps/LoopThroughWithOpenGLCompositing/gl/ShaderTextureBindings.cpp rename to apps/LoopThroughWithOpenGLCompositing/gl/shader/ShaderTextureBindings.cpp diff --git a/apps/LoopThroughWithOpenGLCompositing/gl/ShaderTextureBindings.h b/apps/LoopThroughWithOpenGLCompositing/gl/shader/ShaderTextureBindings.h similarity index 100% rename from apps/LoopThroughWithOpenGLCompositing/gl/ShaderTextureBindings.h rename to apps/LoopThroughWithOpenGLCompositing/gl/shader/ShaderTextureBindings.h diff --git a/apps/LoopThroughWithOpenGLCompositing/gl/Std140Buffer.h b/apps/LoopThroughWithOpenGLCompositing/gl/shader/Std140Buffer.h similarity index 100% rename from apps/LoopThroughWithOpenGLCompositing/gl/Std140Buffer.h rename to apps/LoopThroughWithOpenGLCompositing/gl/shader/Std140Buffer.h diff --git a/apps/LoopThroughWithOpenGLCompositing/gl/TextRasterizer.cpp b/apps/LoopThroughWithOpenGLCompositing/gl/shader/TextRasterizer.cpp similarity index 100% rename from apps/LoopThroughWithOpenGLCompositing/gl/TextRasterizer.cpp rename to apps/LoopThroughWithOpenGLCompositing/gl/shader/TextRasterizer.cpp diff --git a/apps/LoopThroughWithOpenGLCompositing/gl/TextRasterizer.h b/apps/LoopThroughWithOpenGLCompositing/gl/shader/TextRasterizer.h similarity index 100% rename from apps/LoopThroughWithOpenGLCompositing/gl/TextRasterizer.h rename to apps/LoopThroughWithOpenGLCompositing/gl/shader/TextRasterizer.h diff --git a/apps/LoopThroughWithOpenGLCompositing/gl/TextureAssetLoader.cpp b/apps/LoopThroughWithOpenGLCompositing/gl/shader/TextureAssetLoader.cpp similarity index 100% rename from apps/LoopThroughWithOpenGLCompositing/gl/TextureAssetLoader.cpp rename to apps/LoopThroughWithOpenGLCompositing/gl/shader/TextureAssetLoader.cpp diff --git a/apps/LoopThroughWithOpenGLCompositing/gl/TextureAssetLoader.h b/apps/LoopThroughWithOpenGLCompositing/gl/shader/TextureAssetLoader.h similarity index 100% rename from apps/LoopThroughWithOpenGLCompositing/gl/TextureAssetLoader.h rename to apps/LoopThroughWithOpenGLCompositing/gl/shader/TextureAssetLoader.h diff --git a/apps/LoopThroughWithOpenGLCompositing/DeckLinkAPI_h.h b/apps/LoopThroughWithOpenGLCompositing/videoio/decklink/DeckLinkAPI_h.h similarity index 100% rename from apps/LoopThroughWithOpenGLCompositing/DeckLinkAPI_h.h rename to apps/LoopThroughWithOpenGLCompositing/videoio/decklink/DeckLinkAPI_h.h diff --git a/apps/LoopThroughWithOpenGLCompositing/DeckLinkAPI_i.c b/apps/LoopThroughWithOpenGLCompositing/videoio/decklink/DeckLinkAPI_i.c similarity index 100% rename from apps/LoopThroughWithOpenGLCompositing/DeckLinkAPI_i.c rename to apps/LoopThroughWithOpenGLCompositing/videoio/decklink/DeckLinkAPI_i.c diff --git a/apps/LoopThroughWithOpenGLCompositing/decklink/DeckLinkDisplayMode.cpp b/apps/LoopThroughWithOpenGLCompositing/videoio/decklink/DeckLinkDisplayMode.cpp similarity index 100% rename from apps/LoopThroughWithOpenGLCompositing/decklink/DeckLinkDisplayMode.cpp rename to apps/LoopThroughWithOpenGLCompositing/videoio/decklink/DeckLinkDisplayMode.cpp diff --git a/apps/LoopThroughWithOpenGLCompositing/decklink/DeckLinkDisplayMode.h b/apps/LoopThroughWithOpenGLCompositing/videoio/decklink/DeckLinkDisplayMode.h similarity index 100% rename from apps/LoopThroughWithOpenGLCompositing/decklink/DeckLinkDisplayMode.h rename to apps/LoopThroughWithOpenGLCompositing/videoio/decklink/DeckLinkDisplayMode.h diff --git a/apps/LoopThroughWithOpenGLCompositing/decklink/DeckLinkFrameTransfer.cpp b/apps/LoopThroughWithOpenGLCompositing/videoio/decklink/DeckLinkFrameTransfer.cpp similarity index 100% rename from apps/LoopThroughWithOpenGLCompositing/decklink/DeckLinkFrameTransfer.cpp rename to apps/LoopThroughWithOpenGLCompositing/videoio/decklink/DeckLinkFrameTransfer.cpp diff --git a/apps/LoopThroughWithOpenGLCompositing/decklink/DeckLinkFrameTransfer.h b/apps/LoopThroughWithOpenGLCompositing/videoio/decklink/DeckLinkFrameTransfer.h similarity index 100% rename from apps/LoopThroughWithOpenGLCompositing/decklink/DeckLinkFrameTransfer.h rename to apps/LoopThroughWithOpenGLCompositing/videoio/decklink/DeckLinkFrameTransfer.h diff --git a/apps/LoopThroughWithOpenGLCompositing/decklink/DeckLinkSession.cpp b/apps/LoopThroughWithOpenGLCompositing/videoio/decklink/DeckLinkSession.cpp similarity index 100% rename from apps/LoopThroughWithOpenGLCompositing/decklink/DeckLinkSession.cpp rename to apps/LoopThroughWithOpenGLCompositing/videoio/decklink/DeckLinkSession.cpp diff --git a/apps/LoopThroughWithOpenGLCompositing/decklink/DeckLinkSession.h b/apps/LoopThroughWithOpenGLCompositing/videoio/decklink/DeckLinkSession.h similarity index 100% rename from apps/LoopThroughWithOpenGLCompositing/decklink/DeckLinkSession.h rename to apps/LoopThroughWithOpenGLCompositing/videoio/decklink/DeckLinkSession.h diff --git a/apps/LoopThroughWithOpenGLCompositing/decklink/DeckLinkVideoIOFormat.cpp b/apps/LoopThroughWithOpenGLCompositing/videoio/decklink/DeckLinkVideoIOFormat.cpp similarity index 100% rename from apps/LoopThroughWithOpenGLCompositing/decklink/DeckLinkVideoIOFormat.cpp rename to apps/LoopThroughWithOpenGLCompositing/videoio/decklink/DeckLinkVideoIOFormat.cpp diff --git a/apps/LoopThroughWithOpenGLCompositing/decklink/DeckLinkVideoIOFormat.h b/apps/LoopThroughWithOpenGLCompositing/videoio/decklink/DeckLinkVideoIOFormat.h similarity index 100% rename from apps/LoopThroughWithOpenGLCompositing/decklink/DeckLinkVideoIOFormat.h rename to apps/LoopThroughWithOpenGLCompositing/videoio/decklink/DeckLinkVideoIOFormat.h