|
MayaFlux 1.0.0
Digital-First Multimedia Processing Framework
|
Platform-specific FFmpeg input format string for camera devices. More...
#include <FFmpegCameraReader.hpp>
Inheritance diagram for MayaFlux::IO::FFmpegCameraReader:
Collaboration diagram for MayaFlux::IO::FFmpegCameraReader:Public Member Functions | |
| void | close () override |
| Release device, decode, and scratch resources. | |
| std::shared_ptr< Kakshya::CameraContainer > | create_container () const override |
| Create a CameraContainer sized to the negotiated device resolution. | |
| std::vector< CameraConfig > | enumerate_configs () const override |
| Discover ready-to-open camera configurations without starting capture. | |
| FFmpegCameraReader () | |
| FFmpegCameraReader (const FFmpegCameraReader &)=delete | |
| FFmpegCameraReader (FFmpegCameraReader &&)=delete | |
| double | frame_rate () const override |
| Negotiated frame rate in fps. | |
| uint32_t | height () const override |
| Negotiated output height in pixels. | |
| bool | is_open () const override |
| True if the device is open and ready to deliver frames. | |
| const std::string & | last_error () const override |
| Last error string, empty if no error. | |
| bool | open (const CameraConfig &config) override |
| Open a camera device using the supplied config. | |
| FFmpegCameraReader & | operator= (const FFmpegCameraReader &)=delete |
| FFmpegCameraReader & | operator= (FFmpegCameraReader &&)=delete |
| std::vector< CameraMode > | preset_modes () const override |
| Capture modes this source offers as defaults, ordered from safest to most demanding. | |
| bool | pull_frame (const std::shared_ptr< Kakshya::CameraContainer > &container) override |
| Produce one frame into the container. | |
| void | pull_frame_all () override |
| Signal the source to pull one frame. | |
| void | set_container (const std::shared_ptr< Kakshya::CameraContainer > &container) override |
| Store a weak reference to the container for IOService dispatch. | |
| void | setup_io_service (uint64_t reader_id) override |
| Setup an IOService for this reader with the given reader_id. | |
| uint32_t | width () const override |
| Negotiated output width in pixels. | |
| ~FFmpegCameraReader () override | |
Public Member Functions inherited from MayaFlux::IO::CameraSource | |
| virtual | ~CameraSource ()=default |
Private Member Functions | |
| void | decode_thread_func () |
| void | start_decode_thread () |
| void | stop_decode_thread () |
Private Attributes | |
| std::weak_ptr< Kakshya::CameraContainer > | m_container_ref |
| std::shared_mutex | m_ctx_mutex |
| std::atomic< bool > | m_decode_active { false } |
| std::condition_variable | m_decode_cv |
| std::mutex | m_decode_mutex |
| std::atomic< bool > | m_decode_stop { false } |
| std::thread | m_decode_thread |
| std::shared_ptr< FFmpegDemuxContext > | m_demux |
| std::atomic< bool > | m_frame_requested { false } |
| std::string | m_last_error |
| bool | m_owns_service {} |
| int | m_requested_pixel_format { -1 } |
| Pixel format requested at open() time, as an AVPixelFormat int. | |
| bool | m_scaler_ready {} |
| uint64_t | m_standalone_reader_id {} |
| std::shared_ptr< Registry::Service::IOService > | m_standalone_service |
| std::vector< uint8_t > | m_sws_buf |
| std::shared_ptr< VideoStreamContext > | m_video |
Platform-specific FFmpeg input format string for camera devices.
FFmpeg device reader for live camera input with background decode.
Owns the FFmpeg demux and video codec contexts for a single camera device. Decodes frames on a dedicated thread signalled by IOService::request_frame, writing RGBA pixels directly into CameraContainer::mutable_frame_ptr() and marking the container READY. The graphics thread is never blocked by device I/O.
Implements CameraSource for discovery and the live-stream lifecycle; see CameraSource for the shared contract (demand-driven single-frame pulls, Managed/Standalone integration paths). IOManager and CameraContainer see this class through CameraSource once it is open.
IOManager::open_camera() drives the Managed path and calls avdevice_register_all() once via std::call_once. A Standalone caller is responsible for that call itself before open().
Definition at line 50 of file FFmpegCameraReader.hpp.