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