use rlsl::outlet::StreamOutlet;
use rlsl::stream_info::StreamInfo;
use rlsl::types::ChannelFormat;
pub struct MarkerOutlet {
outlet: StreamOutlet,
count: u64,
}
impl MarkerOutlet {
pub fn new(name: &str) -> Self {
let info = StreamInfo::new(
name,
"Markers",
1,
0.0, ChannelFormat::String,
&format!("marker_{}", uuid::Uuid::new_v4()),
);
let outlet = StreamOutlet::new(&info, 0, 360);
MarkerOutlet { outlet, count: 0 }
}
pub fn push(&mut self, label: &str) {
self.count += 1;
self.outlet.push_sample_str(&[label.to_string()], 0.0, true);
}
pub fn push_at(&mut self, label: &str, timestamp: f64) {
self.count += 1;
self.outlet
.push_sample_str(&[label.to_string()], timestamp, true);
}
pub fn count(&self) -> u64 {
self.count
}
pub fn info(&self) -> &StreamInfo {
self.outlet.info()
}
}