libcamera: v4l2_device: Move start of frame detection to V4L2Device
The V4L2_EVENT_FRAME_SYNC event may occur on both V4L2 video-devices (V4L2VideoDevice) and sub-devices (V4L2Subdevice). Move the start of frame detection to the common base class of the two, V4L2Device. There is no functional change. Signed-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>
This commit is contained in:
@@ -13,11 +13,15 @@
|
||||
|
||||
#include <linux/videodev2.h>
|
||||
|
||||
#include <libcamera/signal.h>
|
||||
|
||||
#include "libcamera/internal/log.h"
|
||||
#include "libcamera/internal/v4l2_controls.h"
|
||||
|
||||
namespace libcamera {
|
||||
|
||||
class EventNotifier;
|
||||
|
||||
class V4L2Device : protected Loggable
|
||||
{
|
||||
public:
|
||||
@@ -34,6 +38,9 @@ public:
|
||||
const std::string &deviceNode() const { return deviceNode_; }
|
||||
std::string devicePath() const;
|
||||
|
||||
int setFrameStartEnabled(bool enable);
|
||||
Signal<uint32_t> frameStart;
|
||||
|
||||
protected:
|
||||
V4L2Device(const std::string &deviceNode);
|
||||
~V4L2Device();
|
||||
@@ -51,11 +58,16 @@ private:
|
||||
const struct v4l2_ext_control *v4l2Ctrls,
|
||||
unsigned int count);
|
||||
|
||||
void eventAvailable(EventNotifier *notifier);
|
||||
|
||||
std::map<unsigned int, struct v4l2_query_ext_ctrl> controlInfo_;
|
||||
std::vector<std::unique_ptr<V4L2ControlId>> controlIds_;
|
||||
ControlInfoMap controls_;
|
||||
std::string deviceNode_;
|
||||
int fd_;
|
||||
|
||||
EventNotifier *fdEventNotifier_;
|
||||
bool frameStartEnabled_;
|
||||
};
|
||||
|
||||
} /* namespace libcamera */
|
||||
|
||||
@@ -207,9 +207,6 @@ public:
|
||||
int queueBuffer(FrameBuffer *buffer);
|
||||
Signal<FrameBuffer *> bufferReady;
|
||||
|
||||
int setFrameStartEnabled(bool enable);
|
||||
Signal<uint32_t> frameStart;
|
||||
|
||||
int streamOn();
|
||||
int streamOff();
|
||||
|
||||
@@ -243,8 +240,6 @@ private:
|
||||
void bufferAvailable(EventNotifier *notifier);
|
||||
FrameBuffer *dequeueBuffer();
|
||||
|
||||
void eventAvailable(EventNotifier *notifier);
|
||||
|
||||
V4L2Capability caps_;
|
||||
|
||||
enum v4l2_buf_type bufferType_;
|
||||
@@ -254,9 +249,6 @@ private:
|
||||
std::map<unsigned int, FrameBuffer *> queuedBuffers_;
|
||||
|
||||
EventNotifier *fdBufferNotifier_;
|
||||
EventNotifier *fdEventNotifier_;
|
||||
|
||||
bool frameStartEnabled_;
|
||||
};
|
||||
|
||||
class V4L2M2MDevice
|
||||
|
||||
Reference in New Issue
Block a user