summaryrefslogtreecommitdiff
path: root/meson_options.txt
diff options
context:
space:
mode:
authorNaushir Patuck <naush@raspberrypi.com>2021-03-02 15:11:10 +0000
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2021-03-04 04:15:07 +0200
commita52eebed200fff5eec65942eb3b2b87073645c97 (patch)
treeeb4ee2645e6dbb37bee2b198c3c4eaa76e8ef229 /meson_options.txt
parent9d4431d62140ce64f8020b18e47eabd3cc1d870c (diff)
pipeline: raspberrypi: Only enable embedded stream when available
The pipeline handler would enable and use the Unicam embedded data stream even if the sensor did not support it. This was to allow a means to pass exposure and gain values for the frame to the IPA in a synchronised way. The recent changes to get the pipeline handler to pass a ControlList with exposure and gain values means this is no longer required. Disable the use of the embedded data stream when a sensor does not support it. This change also removes the mappedEmbeddedBuffers_ map as it is no longer used. Signed-off-by: Naushir Patuck <naush@raspberrypi.com> Tested-by: David Plowman <david.plowman@raspberrypi.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Diffstat (limited to 'meson_options.txt')
0 files changed, 0 insertions, 0 deletions
able_if<!std::is_same<Object, T>::value>::type * = nullptr> bool match(T *obj) { return obj == obj_; } bool match(Object *object) { return object == object_; } Object *object() const { return object_; } void activatePack(void *pack); virtual void invokePack(void *pack) = 0; protected: void *obj_; Object *object_; }; template<typename... Args> class BoundMethodArgs : public BoundMethodBase { private: #ifndef __DOXYGEN__ /* * This is a cheap partial implementation of std::integer_sequence<> * from C++14. */ template<int...> struct sequence { }; template<int N, int... S> struct generator : generator<N-1, N-1, S...> { }; template<int... S> struct generator<0, S...> { typedef sequence<S...> type; }; #endif using PackType = std::tuple<typename std::remove_reference<Args>::type...>; template<int... S> void invokePack(void *pack, sequence<S...>) { PackType *args = static_cast<PackType *>(pack); invoke(std::get<S>(*args)...); delete args; } public: BoundMethodArgs(void *obj, Object *object) : BoundMethodBase(obj, object) {} void invokePack(void *pack) override { invokePack(pack, typename generator<sizeof...(Args)>::type()); } virtual void activate(Args... args) = 0; virtual void invoke(Args... args) = 0; }; template<typename T, typename... Args> class BoundMemberMethod : public BoundMethodArgs<Args...> { public: using PackType = std::tuple<typename std::remove_reference<Args>::type...>; BoundMemberMethod(T *obj, Object *object, void (T::*func)(Args...)) : BoundMethodArgs<Args...>(obj, object), func_(func) {} bool match(void (T::*func)(Args...)) const { return func == func_; } void activate(Args... args) { if (this->object_) BoundMethodBase::activatePack(new PackType{ args... }); else (static_cast<T *>(this->obj_)->*func_)(args...); } void invoke(Args... args) { (static_cast<T *>(this->obj_)->*func_)(args...); } private: void (T::*func_)(Args...); }; template<typename... Args> class BoundStaticMethod : public BoundMethodArgs<Args...> { public: BoundStaticMethod(void (*func)(Args...)) : BoundMethodArgs<Args...>(nullptr, nullptr), func_(func) {} bool match(void (*func)(Args...)) const { return func == func_; } void activate(Args... args) { (*func_)(args...); } void invoke(Args... args) {} private: void (*func_)(Args...); }; }; /* namespace libcamera */ #endif /* __LIBCAMERA_BOUND_METHOD_H__ */