From 7fe8f4447bae1005e9d107fdb168bdd2381a66d6 Mon Sep 17 00:00:00 2001 From: Nicolas Pope <nwpope@utu.fi> Date: Sun, 26 Jul 2020 18:22:28 +0300 Subject: [PATCH] Fix for missing RGB flip in opencv decoder --- components/codecs/src/opencv_decoder.cpp | 4 +--- components/streams/src/filestream.cpp | 13 ++++++++++++- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/components/codecs/src/opencv_decoder.cpp b/components/codecs/src/opencv_decoder.cpp index 13f47f19b..f4b3c0a20 100644 --- a/components/codecs/src/opencv_decoder.cpp +++ b/components/codecs/src/opencv_decoder.cpp @@ -30,14 +30,12 @@ bool OpenCVDecoder::decode(const ftl::codecs::Packet &pkt, cv::cuda::GpuMat &out cv::Rect roi(cx,cy,chunk_width,chunk_height); cv::cuda::GpuMat chunkHead = out(roi); - //LOG(INFO) << "DECODE JPEG " << (int)pkt.block_number << "/" << chunk_dim; - cv::Mat tmp2_, tmp_; // Decode in temporary buffers to prevent long locks cv::imdecode(pkt.data, cv::IMREAD_UNCHANGED, &tmp2_); if (tmp2_.type() == CV_8UC3) { - cv::cvtColor(tmp2_, tmp_, cv::COLOR_BGR2BGRA); + cv::cvtColor(tmp2_, tmp_, cv::COLOR_RGB2BGRA); } else { tmp_ = tmp2_; } diff --git a/components/streams/src/filestream.cpp b/components/streams/src/filestream.cpp index 102d05890..ad94a6f09 100644 --- a/components/streams/src/filestream.cpp +++ b/components/streams/src/filestream.cpp @@ -55,6 +55,8 @@ bool File::_checkFile() { int min_ts_diff = 1000; first_ts_ = 10000000000000ll; + std::unordered_set<ftl::codecs::codec_t> codecs_found; + while (count > 0) { std::tuple<ftl::codecs::StreamPacket,ftl::codecs::Packet> data; if (!readPacket(data)) { @@ -62,7 +64,9 @@ bool File::_checkFile() { } auto &spkt = std::get<0>(data); - //auto &pkt = std::get<1>(data); + auto &pkt = std::get<1>(data); + + codecs_found.emplace(pkt.codec); if (spkt.timestamp < first_ts_) first_ts_ = spkt.timestamp; @@ -89,6 +93,13 @@ bool File::_checkFile() { LOG(INFO) << " -- Frame rate = " << (1000 / min_ts_diff); if (!is_video_) LOG(INFO) << " -- Static image"; + + std::string codec_str = ""; + for (auto c : codecs_found) { + codec_str += std::string(" ") + std::to_string(int(c)); + } + LOG(INFO) << " -- Codecs:" << codec_str; + interval_ = min_ts_diff; return true; } -- GitLab