diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index c771cb97f3b906fd2b90be23ca4826236b943ea2..93966ccf5d060acde6e8445b46d8ad940fbeb19a 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -6,7 +6,7 @@ variables: GIT_SUBMODULE_STRATEGY: recursive - CMAKE_ARGS_WINDOWS: '-DCMAKE_GENERATOR_PLATFORM=x64 -DPORTAUDIO_DIR="D:/Build/portaudio" -DNVPIPE_DIR="D:/Build/NvPipe" -DEigen3_DIR="C:/Program Files (x86)/Eigen3/share/eigen3/cmake" -DOpenCV_DIR="D:/Build/opencv-4.1.1" -DCUDA_TOOLKIT_ROOT_DIR="C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v10.1" -DWITH_OPENVR=TRUE -DOPENVR_DIR="D:/Build/OpenVRSDK" -DWITH_CERES=FALSE' + CMAKE_ARGS_WINDOWS: '-DCMAKE_GENERATOR_PLATFORM=x64 -DPORTAUDIO_DIR="D:/Build/portaudio" -DEigen3_DIR="C:/Program Files (x86)/Eigen3/share/eigen3/cmake" -DOpenCV_DIR="D:/Build/opencv-4.1.1" -DCUDA_TOOLKIT_ROOT_DIR="C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v10.1" -DWITH_OPENVR=TRUE -DOPENVR_DIR="D:/Build/OpenVRSDK" -DWITH_CERES=FALSE' stages: - all diff --git a/CMakeLists.txt b/CMakeLists.txt index 2df48b827beecf653859ec2f4451ad1953f93e25..90be9db69602b1ba5c3bb3633e6e0d3400a31f12 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -10,7 +10,6 @@ include(GNUInstallDirs) include(CTest) enable_testing() -option(WITH_NVPIPE "Use NvPipe for compression if available" ON) option(WITH_OPTFLOW "Use NVIDIA Optical Flow if available" OFF) option(WITH_OPENVR "Build with OpenVR support" OFF) option(WITH_OPUS "Use Opus audio compression" ON) diff --git a/components/codecs/src/opencv_encoder.cpp b/components/codecs/src/opencv_encoder.cpp index 6cf2a3183ded4e3090dbcd9cb89f4b3574b4fe90..313d1e9b90c5f42748f65675eb14fb1e671ca2be 100644 --- a/components/codecs/src/opencv_encoder.cpp +++ b/components/codecs/src/opencv_encoder.cpp @@ -28,10 +28,12 @@ bool OpenCVEncoder::supports(ftl::codecs::codec_t codec) { } bool OpenCVEncoder::encode(const cv::cuda::GpuMat &in, ftl::codecs::Packet &pkt) { - bool is_colour = !(pkt.flags & ftl::codecs::kFlagFloat); + bool is_colour = in.type() == CV_8UC4 || in.type() == CV_8UC1; - if (is_colour && in.type() != CV_8UC4 && in.type() != CV_8UC1) return false; - if (!is_colour && in.type() == CV_8UC4) { + if (pkt.codec == codec_t::Any) pkt.codec = (is_colour && in.type() != CV_8UC1) ? codec_t::JPG : codec_t::PNG; + if (!supports(pkt.codec)) return false; + + if (!is_colour && pkt.codec == codec_t::JPG) { LOG(ERROR) << "OpenCV Encoder doesn't support lossy depth"; return false; } @@ -43,39 +45,23 @@ bool OpenCVEncoder::encode(const cv::cuda::GpuMat &in, ftl::codecs::Packet &pkt) return false; } - /*pkt.definition = (pkt.definition == definition_t::Any) ? ftl::codecs::findDefinition(in.cols, in.rows) : pkt.definition; - - if (pkt.definition == definition_t::Invalid || pkt.definition == definition_t::Any) { - LOG(ERROR) << "Invalid definition"; - return false; - }*/ - // Ensure definition does not exceed max current_definition_ = pkt.definition; //((int)pkt.definition < (int)max_definition) ? max_definition : pkt.definition; in.download(tmp_); - //CHECK(cv::Size(ftl::codecs::getWidth(definition), ftl::codecs::getHeight(definition)) == in.size()); - //if (!is_colour) { - //tmp_.convertTo(tmp_, CV_16U, 1000.0f); - //} + if (!is_colour) { + tmp_.convertTo(tmp_, CV_16U, 1000.0f); + } int width = ftl::codecs::getWidth(current_definition_); int height = ftl::codecs::getHeight(current_definition_); - // Scale down image to match requested definition... - /*if (ftl::codecs::getHeight(current_definition_) < in.rows) { - cv::resize(tmp_, tmp_, cv::Size(ftl::codecs::getWidth(current_definition_), ftl::codecs::getHeight(current_definition_)), 0, 0, (is_colour) ? 1 : cv::INTER_NEAREST); - } else { - - }*/ if (tx*width != in.cols || ty*height != in.rows) { LOG(ERROR) << "Input does not match requested definition"; return false; } - if (pkt.codec == codec_t::Any) pkt.codec = (is_colour && in.type() != CV_8UC1) ? codec_t::JPG : codec_t::PNG; - //for (int i=0; i<chunk_count_; ++i) { // Add chunk job to thread pool //ftl::pool.push([this,i,cb,is_colour,bitrate](int id) {