diff --git a/components/streams/include/ftl/streams/stream.hpp b/components/streams/include/ftl/streams/stream.hpp
index 2502f8b69c7566b6e94c8d7cacb11ebf7614a904..397d2f11771a76303f9b199529ddd157969b8e01 100644
--- a/components/streams/include/ftl/streams/stream.hpp
+++ b/components/streams/include/ftl/streams/stream.hpp
@@ -125,6 +125,8 @@ class Muxer : public Stream {
 
 	void reset() override;
 
+	int originStream(int fsid, int fid);
+
 	private:
 	struct StreamEntry {
 		Stream *stream;
diff --git a/components/streams/src/stream.cpp b/components/streams/src/stream.cpp
index 23cd0659884ed67200e0f06523feb3debe05b1d8..6e8c7770baa929bf207f5a61fca8f16eb45664fb 100644
--- a/components/streams/src/stream.cpp
+++ b/components/streams/src/stream.cpp
@@ -75,6 +75,13 @@ bool Muxer::onPacket(const std::function<void(const ftl::codecs::StreamPacket &,
 	return true;
 }
 
+int Muxer::originStream(int fsid, int fid) {
+	if (fid < revmap_.size()) {
+		return std::get<0>(revmap_[fid]);
+	}
+	return -1;
+}
+
 bool Muxer::post(const ftl::codecs::StreamPacket &spkt, const ftl::codecs::Packet &pkt) {
 	SHARED_LOCK(mutex_, lk);
 	available(spkt.frameSetID()) += spkt.channel;