diff --git a/applications/player/src/main.cpp b/applications/player/src/main.cpp
index 8d96c54adec1cf856089b9b28666546f2609435b..dc176ed03cff73170f639961e5d328cdf71fac18 100644
--- a/applications/player/src/main.cpp
+++ b/applications/player/src/main.cpp
@@ -26,6 +26,17 @@ static void createDecoder(const ftl::codecs::Packet &pkt) {
 	decoder = ftl::codecs::allocateDecoder(pkt);
 }
 
+static void visualizeDepthMap(	const cv::Mat &depth, cv::Mat &out,
+								const float max_depth)
+{
+	depth.convertTo(out, CV_8U, 255.0f / max_depth);
+	out = 255 - out;
+	//cv::Mat mask = (depth >= 39.0f); // TODO (mask for invalid pixels)
+	
+	applyColorMap(out, out, cv::COLORMAP_JET);
+	//out.setTo(cv::Scalar(255, 255, 255), mask);
+}
+
 int main(int argc, char **argv) {
     std::string filename(argv[1]);
     LOG(INFO) << "Playing: " << filename;
@@ -72,6 +83,9 @@ int main(int argc, char **argv) {
             }
 
             if (!frame.empty()) {
+                if (spkt.channel == 1) {
+                    visualizeDepthMap(frame, frame, 8.0f);
+                }
                 double time = (double)(spkt.timestamp - r.getStartTime()) / 1000.0;
                 cv::putText(frame, std::string("Time: ") + std::to_string(time) + std::string("s"), cv::Point(10,20), cv::FONT_HERSHEY_PLAIN, 1, cv::Scalar(0,0,255));
                 cv::imshow("Player", frame);
diff --git a/components/rgbd-sources/src/streamer.cpp b/components/rgbd-sources/src/streamer.cpp
index 40cd7d71074fd3bb051a21792ace496b5963cde6..9d8f68898dc29dfc2d285a63a1c1daea7e26381e 100644
--- a/components/rgbd-sources/src/streamer.cpp
+++ b/components/rgbd-sources/src/streamer.cpp
@@ -424,6 +424,7 @@ void Streamer::_process(ftl::rgbd::FrameSet &fs) {
 				// Receiver only waits for channel 1 by default
 				// TODO: Each encode could be done in own thread
 				if (hasChan2) {
+					// TODO: Stagger the reset between nodes... random phasing
 					if (fs.timestamp % (10*ftl::timer::getInterval()) == 0) enc2->reset();
 					enc2->encode(fs.frames[j].get<cv::Mat>(fs.sources[j]->getChannel()), src->hq_bitrate, [this,src,hasChan2](const ftl::codecs::Packet &blk){
 						_transmitPacket(src, blk, 1, hasChan2, Quality::High);
@@ -432,6 +433,7 @@ void Streamer::_process(ftl::rgbd::FrameSet &fs) {
 					if (enc2) enc2->reset();
 				}
 
+				// TODO: Stagger the reset between nodes... random phasing
 				if (fs.timestamp % (10*ftl::timer::getInterval()) == 0) enc1->reset();
 				enc1->encode(fs.frames[j].get<cv::Mat>(Channel::Colour), src->hq_bitrate, [this,src,hasChan2](const ftl::codecs::Packet &blk){
 					_transmitPacket(src, blk, 0, hasChan2, Quality::High);