summaryrefslogtreecommitdiff
path: root/include/linux
AgeCommit message (Expand)Author
2021-03-03include: linux: Update Linux headers to v5.12-rc1Laurent Pinchart
2021-02-09uapi: raspberrypi: Update the bcm2835-isp header definitionNaushir Patuck
2021-02-05include: linux: Add ipu3 kernel header and format definitionsNiklas Söderlund
2020-10-19include: linux: Update V4L2_CID_USER_BCM2835_ISP_BASE to match upstream treeNaushir Patuck
2020-09-29include: linux: Update rkisp1 headerNiklas Söderlund
2020-07-27include: drm_fourcc: Add 16-bit Bayer FourCCNiklas Söderlund
2020-07-17libcamera: pipeline: ipa: raspberrypi: Use dma heap allocs for LS tablesNaushir Patuck
2020-07-17include: linux: Add dma-buf.h and dma-heap.h UAPI headersNaushir Patuck
2020-06-18include: linux: Remove drm.h and drm_mode.hLaurent Pinchart
2020-06-09libcamera: Add missing SPDX headers to miscellaneous small filesLaurent Pinchart
2020-05-21include: linux: Update v4l2 ctrls for propertiesJacopo Mondi
2020-05-11include: uapi: Add header definitions for BCM2835 Unicam and ISP blocksNaushir Patuck
2020-05-10include: linux: Extend VIDIOC_ENUM_FMT to support MC-centric devicesLaurent Pinchart
2020-03-27include: drm_fourcc: Add Bayer FourCC and modifiersNiklas Söderlund
2020-02-14include: linux: Update v4l2-controls.hJacopo Mondi
2019-12-08include: linux: Update Linux headers readme to v5.2Paul Elder
2019-10-28include: drm_fourcc: Add Motion-JPEG FourCCJacopo Mondi
2019-10-28include: linux: Import DRM/KMS headers from Linux v5.2Jacopo Mondi
2019-10-28include: linux: Update headers to Linux v5.2Jacopo Mondi
2019-10-11include: linux: Add rkisp1 kernel header and format definitionsNiklas Söderlund
2019-06-02include: linux: Update Linux headers to v5.1Jacopo Mondi
2019-01-17include: linux: Import V4L2 uAPI headers from Linux v4.19Kieran Bingham
2018-12-19libcamera: include: Import media.h from Linux v4.19Jacopo Mondi
ads and links. */ #ifndef __LIBCAMERA_INTERNAL_MEDIA_OBJECT_H__ #define __LIBCAMERA_INTERNAL_MEDIA_OBJECT_H__ #include <string> #include <vector> #include <linux/media.h> namespace libcamera { class MediaDevice; class MediaEntity; class MediaPad; class MediaObject { public: MediaDevice *device() { return dev_; } unsigned int id() const { return id_; } protected: friend class MediaDevice; MediaObject(MediaDevice *dev, unsigned int id) : dev_(dev), id_(id) { } virtual ~MediaObject() {} MediaDevice *dev_; unsigned int id_; }; class MediaLink : public MediaObject { public: MediaPad *source() const { return source_; } MediaPad *sink() const { return sink_; } unsigned int flags() const { return flags_; } int setEnabled(bool enable); private: friend class MediaDevice; MediaLink(const struct media_v2_link *link, MediaPad *source, MediaPad *sink); MediaLink(const MediaLink &) = delete; ~MediaLink() {} MediaPad *source_; MediaPad *sink_; unsigned int flags_; }; class MediaPad : public MediaObject { public: unsigned int index() const { return index_; } MediaEntity *entity() const { return entity_; } unsigned int flags() const { return flags_; } const std::vector<MediaLink *> &links() const { return links_; } void addLink(MediaLink *link); private: friend class MediaDevice; MediaPad(const struct media_v2_pad *pad, MediaEntity *entity); MediaPad(const MediaPad &) = delete; ~MediaPad(); unsigned int index_; MediaEntity *entity_; unsigned int flags_; std::vector<MediaLink *> links_; }; class MediaEntity : public MediaObject { public: const std::string &name() const { return name_; } unsigned int function() const { return function_; } unsigned int flags() const { return flags_; } const std::string &deviceNode() const { return deviceNode_; } unsigned int deviceMajor() const { return major_; } unsigned int deviceMinor() const { return minor_; } const std::vector<MediaPad *> &pads() const { return pads_; } const MediaPad *getPadByIndex(unsigned int index) const; const MediaPad *getPadById(unsigned int id) const; int setDeviceNode(const std::string &deviceNode); private: friend class MediaDevice; MediaEntity(MediaDevice *dev, const struct media_v2_entity *entity, unsigned int major = 0, unsigned int minor = 0); MediaEntity(const MediaEntity &) = delete; ~MediaEntity(); void addPad(MediaPad *pad); std::string name_; unsigned int function_; unsigned int flags_; std::string deviceNode_; unsigned int major_; unsigned int minor_; std::vector<MediaPad *> pads_; }; } /* namespace libcamera */ #endif /* __LIBCAMERA_INTERNAL_MEDIA_OBJECT_H__ */