diff --git a/components/codecs/src/nvidia_decoder.cpp b/components/codecs/src/nvidia_decoder.cpp index 0e59596d06aa6241176617bbb176b87047824521..3bda2c25b253f402d900956a089e6ffab2b49875 100644 --- a/components/codecs/src/nvidia_decoder.cpp +++ b/components/codecs/src/nvidia_decoder.cpp @@ -184,7 +184,7 @@ bool NvidiaDecoder::decode(const ftl::codecs::Packet &pkt, cv::cuda::GpuMat &out // OpenCV GpuMat for YCbCr 4:2:0 cv::cuda::GpuMat surface; if (is_float_frame && !islossless) surface = cv::cuda::GpuMat(height_+height_/2, width_, CV_16U, decodedPtr, width_*2); - else if (is_float_frame && islossless) surface = cv::cuda::GpuMat(height_+height_/2, width_*2, CV_8U, decodedPtr, width_*2); + else if (is_float_frame && islossless) surface = cv::cuda::GpuMat(height_+height_/2, width_, CV_8U, decodedPtr, width_); else surface = cv::cuda::GpuMat(height_+height_/2, width_, CV_8U, decodedPtr, width_); auto cvstream = cv::cuda::StreamAccessor::wrapStream(stream_); @@ -196,7 +196,7 @@ bool NvidiaDecoder::decode(const ftl::codecs::Packet &pkt, cv::cuda::GpuMat &out ftl::cuda::vuya_to_depth(out, sroi, csroi, 16.0f, cvstream); } else { - ftl::cuda::nv12_to_float(decodedPtr, width_*2, (float*)out.data, out.step1(), width_, height_, stream_); + ftl::cuda::nv12_to_float(decodedPtr, width_, (float*)out.data, out.step1(), width_/2, height_, stream_); } } else { // Flag 0x1 means frame is in RGB so needs conversion to BGR diff --git a/components/codecs/src/nvidia_encoder.cpp b/components/codecs/src/nvidia_encoder.cpp index a0b3677c060c96ab22ba225251dabdcd2d83037a..3aaad2e7ca0f6bc1325a8e93ec99ab0bcf5692d2 100644 --- a/components/codecs/src/nvidia_encoder.cpp +++ b/components/codecs/src/nvidia_encoder.cpp @@ -203,7 +203,7 @@ bool NvidiaEncoder::encode(const cv::cuda::GpuMat &in, ftl::codecs::Packet &pkt) } else if (params_.isLossy()) { ftl::cuda::depth_to_nv12_10(in, (ushort*)f->inputPtr, (ushort*)(((uchar*)f->inputPtr)+(nvenc_->GetEncodeHeight()*f->pitch)), f->pitch/2, 16.0f, stream_); } else { - ftl::cuda::float_to_nv12_16bit((float*)in.data, in.step1(), (uchar*)f->inputPtr, f->pitch, nvenc_->GetEncodeWidth(), nvenc_->GetEncodeHeight(), cv::cuda::StreamAccessor::getStream(stream_)); + ftl::cuda::float_to_nv12_16bit((float*)in.data, in.step1(), (uchar*)f->inputPtr, f->pitch, nvenc_->GetEncodeWidth()/2, nvenc_->GetEncodeHeight(), cv::cuda::StreamAccessor::getStream(stream_)); } // TODO: Use page locked memory?