ESPHome 2026.1.0-dev
Loading...
Searching...
No Matches
camera.h
Go to the documentation of this file.
1#pragma once
2
7
8namespace esphome {
9namespace camera {
10
17
24
26inline const char *to_string(PixelFormat format) {
27 switch (format) {
29 return "PIXEL_FORMAT_GRAYSCALE";
31 return "PIXEL_FORMAT_RGB565";
33 return "PIXEL_FORMAT_BGR888";
34 }
35 return "PIXEL_FORMAT_UNKNOWN";
36}
37
38// Forward declaration
39class CameraImage;
40
47 public:
48 virtual void on_camera_image(const std::shared_ptr<CameraImage> &image) {}
49 virtual void on_stream_start() {}
50 virtual void on_stream_stop() {}
51};
52
58 public:
59 virtual uint8_t *get_data_buffer() = 0;
60 virtual size_t get_data_length() = 0;
61 virtual bool was_requested_by(CameraRequester requester) const = 0;
62 virtual ~CameraImage() {}
63};
64
72 public:
73 virtual void set_image(std::shared_ptr<CameraImage> image) = 0;
74 virtual size_t available() const = 0;
75 virtual uint8_t *peek_data_buffer() = 0;
76 virtual void consume_data(size_t consumed) = 0;
77 virtual void return_image() = 0;
78 virtual ~CameraImageReader() {}
79};
80
85 uint16_t width;
86 uint16_t height;
88 size_t bytes_per_pixel() {
89 switch (format) {
91 return 1;
93 return 2;
95 return 3;
96 }
97
98 return 1;
99 }
100 size_t bytes_per_row() { return bytes_per_pixel() * width; }
101 size_t bytes_per_image() { return bytes_per_pixel() * width * height; }
102};
103
115class Camera : public EntityBase, public Component {
116 public:
117 Camera();
119 virtual void add_listener(CameraListener *listener) = 0;
122 // Connection, camera or web server requests one new JPEG image.
123 virtual void request_image(CameraRequester requester) = 0;
124 // Connection, camera or web server requests a stream of images.
125 virtual void start_stream(CameraRequester requester) = 0;
126 // Connection or web server stops the previously started stream.
127 virtual void stop_stream(CameraRequester requester) = 0;
128 virtual ~Camera() {}
130 static Camera *instance();
131
132 protected:
133 // NOLINTNEXTLINE(cppcoreguidelines-avoid-non-const-global-variables)
135};
136
137} // namespace camera
138} // namespace esphome
Abstract camera base class.
Definition camera.h:115
virtual CameraImageReader * create_image_reader()=0
Returns a new camera image reader that keeps track of the JPEG data in the camera image.
virtual void start_stream(CameraRequester requester)=0
virtual void stop_stream(CameraRequester requester)=0
virtual void add_listener(CameraListener *listener)=0
Add a listener to receive camera events.
virtual void request_image(CameraRequester requester)=0
static Camera * instance()
The singleton instance of the camera implementation.
Definition camera.cpp:19
static Camera * global_camera
Definition camera.h:134
Abstract camera image base class.
Definition camera.h:57
virtual uint8_t * get_data_buffer()=0
virtual size_t get_data_length()=0
virtual bool was_requested_by(CameraRequester requester) const =0
Abstract image reader base class.
Definition camera.h:71
virtual void set_image(std::shared_ptr< CameraImage > image)=0
virtual void consume_data(size_t consumed)=0
virtual size_t available() const =0
virtual uint8_t * peek_data_buffer()=0
Listener interface for camera events.
Definition camera.h:46
virtual void on_stream_stop()
Definition camera.h:50
virtual void on_stream_start()
Definition camera.h:49
virtual void on_camera_image(const std::shared_ptr< CameraImage > &image)
Definition camera.h:48
const char * to_string(PixelFormat format)
Returns string name for a given PixelFormat.
Definition camera.h:26
CameraRequester
Different sources for filtering.
Definition camera.h:16
PixelFormat
Enumeration of different pixel formats.
Definition camera.h:19
@ PIXEL_FORMAT_RGB565
16-bit RGB (5-6-5).
Definition camera.h:21
@ PIXEL_FORMAT_GRAYSCALE
8-bit grayscale.
Definition camera.h:20
@ PIXEL_FORMAT_BGR888
RGB pixel data in 8-bit format, stored as B, G, R (1 byte each).
Definition camera.h:22
Providing packet encoding functions for exchanging data with a remote host.
Definition a01nyub.cpp:7
Specification of a caputured camera image.
Definition camera.h:84