MayaFlux 1.0.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches
MayaFlux::IO::CameraSource Class Referenceabstract

Abstract interface for a live camera backend hosted by IOManager. More...

#include <CameraSource.hpp>

+ Inheritance diagram for MayaFlux::IO::CameraSource:
+ Collaboration diagram for MayaFlux::IO::CameraSource:

Public Member Functions

virtual void close ()=0
 Release device, decode, and scratch resources.
 
virtual std::shared_ptr< Kakshya::CameraContainer > create_container () const =0
 Create a CameraContainer sized to the negotiated device resolution.
 
virtual std::vector< CameraConfig > enumerate_configs () const =0
 Discover ready-to-open camera configurations without starting capture.
 
virtual double frame_rate () const =0
 Negotiated frame rate in fps.
 
virtual uint32_t height () const =0
 Negotiated output height in pixels.
 
virtual bool is_open () const =0
 True if the device is open and ready to deliver frames.
 
virtual const std::string & last_error () const =0
 Last error string, empty if no error.
 
virtual bool open (const CameraConfig &config)=0
 Open a configuration returned by enumerate_configs().
 
virtual std::vector< CameraMode > preset_modes () const =0
 Capture modes this source offers as defaults, ordered from safest to most demanding.
 
virtual bool pull_frame (const std::shared_ptr< Kakshya::CameraContainer > &container)=0
 Produce one frame into the container.
 
virtual void pull_frame_all ()=0
 Signal the source to pull one frame.
 
virtual void set_container (const std::shared_ptr< Kakshya::CameraContainer > &container)=0
 Store a weak reference to the container for IOService dispatch.
 
virtual void setup_io_service (uint64_t reader_id)=0
 Wire this source into an IOService under the given reader_id.
 
virtual uint32_t width () const =0
 Negotiated output width in pixels.
 
virtual ~CameraSource ()=default
 

Detailed Description

Abstract interface for a live camera backend hosted by IOManager.

Enumerates configurations, opens a selected device, then provides negotiated parameters, frame delivery, and IOService wiring.

A camera source is a live, unbounded stream: no ring buffer, no seek, no batch decode. One frame is pulled per process cycle, demand-driven by CameraContainer::process_default(), never pushed speculatively ahead of the consumer.

Two integration paths apply to any implementation:

  • Managed: IOManager owns construction and opening (backend-specific), then calls register_camera_source(), which assigns a reader_id and wires the container's IOService callback.
  • Standalone: the caller drives the same sequence manually — create_container() → setup_io_service(id) → set_container() → close() — without IOManager.

FFmpegCameraReader is the first concrete implementation.

Definition at line 81 of file CameraSource.hpp.


The documentation for this class was generated from the following file: