diff --git a/components/operators/src/aruco.cpp b/components/operators/src/aruco.cpp
index 2608ca1bbd6f881fc5c316c2332f36e80fed5a5a..34fcfca33463238cda25e3469e57ca98c6f1112e 100644
--- a/components/operators/src/aruco.cpp
+++ b/components/operators/src/aruco.cpp
@@ -66,7 +66,7 @@ bool ArUco::apply(Frame &in, Frame &out, cudaStream_t stream) {
 	Frame *inptr = ∈
 	Frame *outptr = &out;
 
-	estimate_pose_ = config()->value("estimate_pose", false);
+	estimate_pose_ = config()->value("estimate_pose", true);
 	debug_ = config()->value("debug", false);
 	marker_size_ = config()->value("marker_size",0.1f);
 
diff --git a/components/operators/src/clipping.cpp b/components/operators/src/clipping.cpp
index 9d392b4f93e8be872a9cfce578662f15e56fbb92..b3c5d9072ddc9864c31bc9ba7af3d7346beddd4b 100644
--- a/components/operators/src/clipping.cpp
+++ b/components/operators/src/clipping.cpp
@@ -76,7 +76,10 @@ bool ClipScene::apply(ftl::rgbd::FrameSet &in, ftl::rgbd::FrameSet &out, cudaStr
 
 			auto sclip = clip;
 			sclip.origin = sclip.origin.getInverse() * pose;
-			if (!no_clip) ftl::cuda::clipping(f.createTexture<float>(Channel::Depth), f.getLeftCamera(), sclip, stream);
+			if (!no_clip) {
+				f.create<cv::cuda::GpuMat>(Channel::Depth);  // Force reset.
+				ftl::cuda::clipping(f.createTexture<float>(Channel::Depth), f.getLeftCamera(), sclip, stream);
+			}
 		}
 	}
 
diff --git a/components/operators/src/poser.cpp b/components/operators/src/poser.cpp
index 0ed962f9585a2cfcd49345073b52f82ae90736d3..0c60db87ba7e1dceb8737f3e19cc95ea8f0531f0 100644
--- a/components/operators/src/poser.cpp
+++ b/components/operators/src/poser.cpp
@@ -24,6 +24,8 @@ bool Poser::apply(ftl::rgbd::FrameSet &in, ftl::rgbd::FrameSet &out, cudaStream_
         std::vector<ftl::codecs::Shape3D> transforms;
         in.get(Channel::Shapes3D, transforms);
 
+		//LOG(INFO) << "Found shapes 3D global: " << (int)transforms.size();
+
         //for (auto &t : transforms) {
             //LOG(INFO) << "Have FS transform: " << t.id;
         //}
@@ -37,6 +39,8 @@ bool Poser::apply(ftl::rgbd::FrameSet &in, ftl::rgbd::FrameSet &out, cudaStream_
                 std::vector<ftl::codecs::Shape3D> transforms;
                 f.get(Channel::Shapes3D, transforms);
 
+				//LOG(INFO) << "Found shapes 3D: " << (int)transforms.size();
+
                 for (auto &t : transforms) {
                     std::string idstr;
                     switch(t.type) {
@@ -58,6 +62,7 @@ bool Poser::apply(ftl::rgbd::FrameSet &in, ftl::rgbd::FrameSet &out, cudaStream_
                     } else {
                         // TODO: Merge poses
                         if (!(*p).second.locked) (*p).second.pose = pose;
+						//LOG(INFO) << "POSE ID: " << idstr;
                     }
                 }
             }
diff --git a/components/streams/include/ftl/streams/filestream.hpp b/components/streams/include/ftl/streams/filestream.hpp
index bd6a580ea03d7358b8254ae5f4ad7cce76814466..92d0a8afe8b1757da9b682354f16bff25a5dfe44 100644
--- a/components/streams/include/ftl/streams/filestream.hpp
+++ b/components/streams/include/ftl/streams/filestream.hpp
@@ -29,6 +29,8 @@ class File : public Stream {
 	bool end() override;
 	bool active() override;
 
+	void reset() override;
+
 	/**
 	 * Automatically tick through the frames using a timer. Threads are used.
 	 */
diff --git a/components/streams/src/filestream.cpp b/components/streams/src/filestream.cpp
index 5650862dd34834cd8e14966a620ba5ef9f3cbee3..5ae915fdf71c225fbff48ab920f53026ee1a297b 100644
--- a/components/streams/src/filestream.cpp
+++ b/components/streams/src/filestream.cpp
@@ -364,6 +364,17 @@ bool File::end() {
 	return true;
 }
 
+void File::reset() {
+	UNIQUE_LOCK(mutex_, lk);
+	data_.clear();
+	buffer_in_.reset();
+	buffer_in_.remove_nonparsed_buffer();
+	_open();
+
+	timestart_ = (ftl::timer::get_time() / ftl::timer::getInterval()) * ftl::timer::getInterval();
+	timestamp_ = timestart_;
+}
+
 bool File::active() {
 	return active_;
 }