54 void on_attach(
const std::shared_ptr<SignalSourceContainer>& container)
override;
60 void on_detach(
const std::shared_ptr<SignalSourceContainer>& container)
override;
72 void process(
const std::shared_ptr<SignalSourceContainer>& container)
override;
78 [[nodiscard]]
bool is_processing()
const override {
return m_is_processing.load(); }
88 void set_frames_per_batch(uint64_t
count);
129 std::atomic<bool> m_is_processing {
false };
131 bool m_auto_advance {
true };
137 uint64_t m_current_frame {};
138 uint64_t m_frames_per_batch { 1 };
140 uint64_t m_total_frames {};
142 uint64_t m_height {};
143 uint64_t m_channels {};
144 uint64_t m_frame_byte_size {};
145 double m_global_fps { 60.0 };
147 bool m_looping_enabled {};
150 std::chrono::steady_clock::time_point m_last_process_time {};
158 double m_frame_accumulator {};
164 double m_frame_rate {};
170 void store_metadata(
const std::shared_ptr<SignalSourceContainer>& container);
181 void advance_frame(uint64_t frames_to_advance);