Skip to content
Snippets Groups Projects
Commit d6ecd6c5 authored by Nicolas Pope's avatar Nicolas Pope
Browse files

Fix for bad comparison

parent 59b64735
No related branches found
No related tags found
1 merge request!311Resolves #296 removal of NvPipe
...@@ -66,6 +66,7 @@ NvPipeEncoder::~NvPipeEncoder() { ...@@ -66,6 +66,7 @@ NvPipeEncoder::~NvPipeEncoder() {
std::vector<std::vector<uint8_t>> tmp; std::vector<std::vector<uint8_t>> tmp;
nvenc_->EndEncode(tmp); nvenc_->EndEncode(tmp);
nvenc_->DestroyEncoder(); nvenc_->DestroyEncoder();
delete nvenc_;
nvenc_ = nullptr; nvenc_ = nullptr;
} }
} }
...@@ -145,8 +146,10 @@ bool NvPipeEncoder::encode(const cv::cuda::GpuMat &in, ftl::codecs::Packet &pkt) ...@@ -145,8 +146,10 @@ bool NvPipeEncoder::encode(const cv::cuda::GpuMat &in, ftl::codecs::Packet &pkt)
return false; return false;
} }
if (in.type() == CV_32F) pkt.flags |= kFlagFloat;
// Correct for mising flag // Correct for mising flag
if (pkt.codec == codec_t::HEVC && (pkt.flags & ftl::codecs::kFlagFloat) && in.type() == CV_8UC4) { if (pkt.codec == codec_t::HEVC && (pkt.flags & ftl::codecs::kFlagFloat)) {
pkt.flags |= ftl::codecs::kFlagMappedDepth; pkt.flags |= ftl::codecs::kFlagMappedDepth;
} }
...@@ -264,8 +267,10 @@ bool NvPipeEncoder::encode(const cv::cuda::GpuMat &in, ftl::codecs::Packet &pkt) ...@@ -264,8 +267,10 @@ bool NvPipeEncoder::encode(const cv::cuda::GpuMat &in, ftl::codecs::Packet &pkt)
cudaSafeCall(cudaMemcpy2D(f->inputPtr, f->pitch, in.data, in.step, width * 4, height, cudaMemcpyDeviceToDevice)); cudaSafeCall(cudaMemcpy2D(f->inputPtr, f->pitch, in.data, in.step, width * 4, height, cudaMemcpyDeviceToDevice));
} else if (!islossless) { } else if (!islossless) {
// Do colour conversion here. // Do colour conversion here.
ftl::cuda::depth_to_nv12(in, (uchar*)f->inputPtr, ((uchar*)f->inputPtr)+(height*f->pitch), f->pitch, 16.0f, cv::cuda::Stream::Null()); LOG(INFO) << "Lossy depth encode";
//ftl::cuda::depth_to_nv12(in, (uchar*)f->inputPtr, ((uchar*)f->inputPtr)+(height*f->pitch), f->pitch, 16.0f, cv::cuda::Stream::Null());
} else { } else {
LOG(INFO) << "Lossless depth encode";
// Lossless conversion // Lossless conversion
} }
...@@ -287,6 +292,8 @@ bool NvPipeEncoder::encode(const cv::cuda::GpuMat &in, ftl::codecs::Packet &pkt) ...@@ -287,6 +292,8 @@ bool NvPipeEncoder::encode(const cv::cuda::GpuMat &in, ftl::codecs::Packet &pkt)
pkt.data.resize(cs); pkt.data.resize(cs);
was_reset_ = false; was_reset_ = false;
LOG(INFO) << "Encoded frame: " << cs;
if (cs == 0 || cs >= ftl::codecs::kVideoBufferSize) { if (cs == 0 || cs >= ftl::codecs::kVideoBufferSize) {
LOG(ERROR) << "Could not encode video frame"; LOG(ERROR) << "Could not encode video frame";
return false; return false;
...@@ -322,7 +329,7 @@ static NvPipe_Format selectFormat(const Packet &pkt, format_t fmt) { ...@@ -322,7 +329,7 @@ static NvPipe_Format selectFormat(const Packet &pkt, format_t fmt) {
}*/ }*/
bool NvPipeEncoder::_encoderMatch(const ftl::codecs::Packet &pkt) { bool NvPipeEncoder::_encoderMatch(const ftl::codecs::Packet &pkt) {
return was_float_ == (pkt.flags & kFlagFloat) && return was_float_ == bool(pkt.flags & kFlagFloat) &&
codec_ == pkt.codec && last_bitrate_ == pkt.bitrate; codec_ == pkt.codec && last_bitrate_ == pkt.bitrate;
} }
...@@ -349,9 +356,11 @@ bool NvPipeEncoder::_createEncoder(const ftl::codecs::Packet &pkt, format_t fmt) ...@@ -349,9 +356,11 @@ bool NvPipeEncoder::_createEncoder(const ftl::codecs::Packet &pkt, format_t fmt)
cuCtxGetCurrent(&cudaContext); cuCtxGetCurrent(&cudaContext);
if (nvenc_) { if (nvenc_) {
LOG(INFO) << "Destroying NVENC encoder : " << (uint64_t)nvenc_;
std::vector<std::vector<uint8_t>> tmp; std::vector<std::vector<uint8_t>> tmp;
nvenc_->EndEncode(tmp); nvenc_->EndEncode(tmp);
nvenc_->DestroyEncoder(); nvenc_->DestroyEncoder();
delete nvenc_;
nvenc_ = nullptr; nvenc_ = nullptr;
} }
...@@ -364,7 +373,7 @@ bool NvPipeEncoder::_createEncoder(const ftl::codecs::Packet &pkt, format_t fmt) ...@@ -364,7 +373,7 @@ bool NvPipeEncoder::_createEncoder(const ftl::codecs::Packet &pkt, format_t fmt)
NV_ENC_BUFFER_FORMAT bufferFormat; // = (this->format == NVPIPE_RGBA32) ? NV_ENC_BUFFER_FORMAT_ABGR : NV_ENC_BUFFER_FORMAT_NV12; NV_ENC_BUFFER_FORMAT bufferFormat; // = (this->format == NVPIPE_RGBA32) ? NV_ENC_BUFFER_FORMAT_ABGR : NV_ENC_BUFFER_FORMAT_NV12;
if (!isfloat) bufferFormat = NV_ENC_BUFFER_FORMAT_ABGR; if (!isfloat) bufferFormat = NV_ENC_BUFFER_FORMAT_ABGR;
else if (islossless) bufferFormat = NV_ENC_BUFFER_FORMAT_ABGR; else if (islossless) bufferFormat = NV_ENC_BUFFER_FORMAT_ABGR;
else bufferFormat = NV_ENC_BUFFER_FORMAT_AYUV; else bufferFormat = NV_ENC_BUFFER_FORMAT_YUV420_10BIT;
/*switch(this->format) { /*switch(this->format) {
case NVPIPE_RGBA32 : bufferFormat = NV_ENC_BUFFER_FORMAT_ABGR; break; case NVPIPE_RGBA32 : bufferFormat = NV_ENC_BUFFER_FORMAT_ABGR; break;
...@@ -428,7 +437,7 @@ bool NvPipeEncoder::_createEncoder(const ftl::codecs::Packet &pkt, format_t fmt) ...@@ -428,7 +437,7 @@ bool NvPipeEncoder::_createEncoder(const ftl::codecs::Packet &pkt, format_t fmt)
LOG(ERROR) << "Could not create video encoder: "; // << NvPipe_GetError(NULL); LOG(ERROR) << "Could not create video encoder: "; // << NvPipe_GetError(NULL);
return false; return false;
} else { } else {
LOG(INFO) << "NvPipe encoder created"; LOG(INFO) << "NvPipe encoder created : " << (uint64_t)nvenc_;
// TODO: SetIOCudaStreams // TODO: SetIOCudaStreams
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment