diff --git a/src/camera/CMakeLists.txt b/src/camera/CMakeLists.txt index ce5aa8a8..ee846929 100644 --- a/src/camera/CMakeLists.txt +++ b/src/camera/CMakeLists.txt @@ -11,8 +11,6 @@ set_property(TARGET CemuCamera PROPERTY MSVC_RUNTIME_LIBRARY "MultiThreaded$<$ +#include #include -#include #include #include diff --git a/src/camera/CameraManager.h b/src/camera/CameraManager.h index 54eaaede..b6181c0d 100644 --- a/src/camera/CameraManager.h +++ b/src/camera/CameraManager.h @@ -1,13 +1,18 @@ #pragma once +#include +#include +#include +#include +#include namespace CameraManager { - constexpr uint32 CAMERA_WIDTH = 640; - constexpr uint32 CAMERA_HEIGHT = 480; - constexpr uint32 CAMERA_PITCH = 768; + constexpr uint32_t CAMERA_WIDTH = 640; + constexpr uint32_t CAMERA_HEIGHT = 480; + constexpr uint32_t CAMERA_PITCH = 768; - constexpr uint32 CAMERA_NV12_BUFFER_SIZE = (CAMERA_HEIGHT * CAMERA_PITCH * 3) >> 1; - constexpr uint32 CAMERA_RGB_BUFFER_SIZE = CAMERA_HEIGHT * CAMERA_WIDTH * 3; + constexpr uint32_t CAMERA_NV12_BUFFER_SIZE = (CAMERA_HEIGHT * CAMERA_PITCH * 3) >> 1; + constexpr uint32_t CAMERA_RGB_BUFFER_SIZE = CAMERA_HEIGHT * CAMERA_WIDTH * 3; struct DeviceInfo { @@ -18,12 +23,12 @@ namespace CameraManager void Open(); void Close(); - void FillNV12Buffer(std::span nv12Buffer); - void FillRGBBuffer(std::span rgbBuffer); + void FillNV12Buffer(std::span nv12Buffer); + void FillRGBBuffer(std::span rgbBuffer); - void SetDevice(uint32 deviceNo); + void SetDevice(uint32_t deviceNo); void ResetDevice(); std::vector EnumerateDevices(); void SaveDevice(); - std::optional GetCurrentDevice(); + std::optional GetCurrentDevice(); } // namespace CameraManager diff --git a/src/camera/Rgb2Nv12.cpp b/src/camera/Rgb2Nv12.cpp index 7b599309..ab914f81 100644 --- a/src/camera/Rgb2Nv12.cpp +++ b/src/camera/Rgb2Nv12.cpp @@ -1,5 +1,7 @@ // Based on https://github.com/cohenrotem/Rgb2NV12 #include "Rgb2Nv12.h" +#include +#include constexpr static glm::mat3x3 COEFFICIENT_MATRIX = { @@ -13,12 +15,12 @@ constexpr static glm::mat4x3 OFFSET_MATRIX = { 16.0f + 0.5f, 128.0f + 2.0f, 128.0f + 2.0f, 16.0f + 0.5f, 128.0f + 2.0f, 128.0f + 2.0f}; -static void Rgb2Nv12TwoRows(const uint8* topLine, - const uint8* bottomLine, +static void Rgb2Nv12TwoRows(const uint8_t* topLine, + const uint8_t* bottomLine, unsigned imageWidth, - uint8* topLineY, - uint8* bottomLineY, - uint8* uv) + uint8_t* topLineY, + uint8_t* bottomLineY, + uint8_t* uv) { auto* topIn = reinterpret_cast(topLine); auto* botIn = reinterpret_cast(bottomLine); @@ -44,13 +46,12 @@ static void Rgb2Nv12TwoRows(const uint8* topLine, } } -void Rgb2Nv12(const uint8* rgbImage, +void Rgb2Nv12(const uint8_t* rgbImage, unsigned imageWidth, unsigned imageHeight, - uint8* outNv12Image, + uint8_t* outNv12Image, unsigned nv12Pitch) { - cemu_assert_debug(!((imageWidth | imageHeight) & 1)); unsigned char* UV = outNv12Image + nv12Pitch * imageHeight; for (auto row = 0u; row < imageHeight; row += 2) diff --git a/src/camera/Rgb2Nv12.h b/src/camera/Rgb2Nv12.h index d0e01d01..ea73a3f1 100644 --- a/src/camera/Rgb2Nv12.h +++ b/src/camera/Rgb2Nv12.h @@ -1,7 +1,8 @@ #pragma once +#include -void Rgb2Nv12(const uint8* rgbImage, +void Rgb2Nv12(const uint8_t* rgbImage, unsigned imageWidth, unsigned imageHeight, - uint8* outNv12Image, + uint8_t* outNv12Image, unsigned nv12Pitch); \ No newline at end of file