summaryrefslogtreecommitdiff
path: root/src/gstreamer
AgeCommit message (Expand)Author
2020-05-13licenses: License all meson files under CC0-1.0Laurent Pinchart
2020-03-18libcamera: framebuffer_allocator: Lift camera restrictions on allocatorLaurent Pinchart
2020-03-18libcamera: PixelFormat: Make constructor explicitLaurent Pinchart
2020-03-18libcamera: Use PixelFormat instead of unsigned int where appropriateNiklas Söderlund
2020-03-07gst: Fix GLib detectionLaurent Pinchart
2020-03-07gst: Turn the top-level plugin file gstlibcamera.c into a C++ fileLaurent Pinchart
2020-03-07gst: libcamerasrc: Prevent src task deadlock on exhausted buffer poolJakub Adam
2020-03-07gst: utils: Factor-out the task resume helperJakub Adam
2020-03-07gst: libcamerasrc: Add a TODO commentNicolas Dufresne
2020-03-07gst: libcamerasrc: Implement timestamp supportNicolas Dufresne
2020-03-07gst: libcamerasrc: Implement initial streamingNicolas Dufresne
2020-03-07gst: pad: Add method to store retrieve pending buffersNicolas Dufresne
2020-03-07gst: Add getters for Stream and FrameBufferNicolas Dufresne
2020-03-07gst: libcamerasrc: Allocate and release buffersNicolas Dufresne
2020-03-07gst: libcamerapad: Allow storing a poolNicolas Dufresne
2020-03-07gst: Add a pool and an allocator implementationNicolas Dufresne
2020-03-07gst: libcamerasrc: Push segment eventNicolas Dufresne
2020-03-07gst: libcamerasrc: Implement minimal caps negotiationNicolas Dufresne
2020-03-07gst: utils: Add StreamConfiguration helpersNicolas Dufresne
2020-03-07gst: libcamerasrc: Send stream start eventNicolas Dufresne
2020-03-07gst: libcamerasrc: Store the srcpad in a vectorNicolas Dufresne
2020-03-07gst: libcamerapad: Add a method to access the roleNicolas Dufresne
2020-03-07gst: libcamerasrc: Add a task for the streaming threadNicolas Dufresne
2020-03-07gst: libcamerasrc: Implement selection and acquisitionNicolas Dufresne
2020-03-07gst: libcamerasrc: Add a debug categoryNicolas Dufresne
2020-03-07gst: libcamerasrc: Add camera-name propertyNicolas Dufresne
2020-03-07gst: libcamerasrc: Allocate and add static padNicolas Dufresne
2020-03-07gst: Add pads to the sourceNicolas Dufresne
2020-03-07gst: utils: Add simple scoped lockers for GMutex and GRectMutexNicolas Dufresne
2020-03-07gst: Add initial device providerNicolas Dufresne
2020-03-07gst: Add utility to convert StreamFormats to GstCapsNicolas Dufresne
2020-03-07Add GStreamer plugin and element skeletonNicolas Dufresne
klass * \param klass The name of the class * * Example usage: * \code{.cpp} * class NonCopyableNonMoveable * { * public: * NonCopyableNonMoveable(); * ... * * private: * LIBCAMERA_DISABLE_COPY_AND_MOVE(NonCopyableNonMoveable) * }; * \endcode */ /** * \def LIBCAMERA_DECLARE_PRIVATE * \brief Declare private data for a public class * * The LIBCAMERA_DECLARE_PRIVATE() macro plumbs the infrastructure necessary to * make a class manage its private data through a d-pointer. It shall be used at * the very top of the class definition. */ /** * \def LIBCAMERA_DECLARE_PUBLIC * \brief Declare public data for a private class * \param klass The public class name * * The LIBCAMERA_DECLARE_PUBLIC() macro is the counterpart of * LIBCAMERA_DECLARE_PRIVATE() to be used in the private data class. It shall be * used at the very top of the private class definition, with the public class * name passed as the \a klass parameter. */ /** * \def LIBCAMERA_D_PTR() * \brief Retrieve the private data pointer * * This macro can be used in any member function of a class that inherits, * directly or indirectly, from the Extensible class, to create a local * variable named 'd' that points to the class' private data instance. */ /** * \def LIBCAMERA_O_PTR() * \brief Retrieve the public instance corresponding to the private data * * This macro is the counterpart of LIBCAMERA_D_PTR() for private data classes. * It can be used in any member function of the private data class to create a * local variable named 'o' that points to the public class instance * corresponding to the private data. */ /** * \class Extensible * \brief Base class to manage private data through a d-pointer * * The Extensible class provides a base class to implement the * <a href="https://wiki.qt.io/D-Pointer">d-pointer</a> design pattern (also * known as <a href="https://en.wikipedia.org/wiki/Opaque_pointer">opaque pointer</a> * or <a href="https://en.cppreference.com/w/cpp/language/pimpl">pImpl idiom</a>). * It helps creating public classes that can be extended without breaking their * ABI. Such classes store their private data in a separate private data object, * referenced by a pointer in the public class (hence the name d-pointer). * * Classes that follow this design pattern are referred herein as extensible * classes. To be extensible, a class PublicClass shall: * * - inherit from the Extensible class or from another extensible class * - invoke the LIBCAMERA_DECLARE_PRIVATE() macro at the very top of the class * definition * - define a private data class named PublicClass::Private that inherits from * the Private data class of the base class * - invoke the LIBCAMERA_DECLARE_PUBLIC() macro at the very top of the Private * data class definition * - pass a pointer to a newly allocated Private data object to the constructor * of the base class * * Additionally, if the PublicClass is not final, it shall expose one or more * constructors that takes a pointer to a Private data instance, to be used by * derived classes. * * The Private class is fully opaque to users of the libcamera public API. * Internally, it can be kept private to the implementation of PublicClass, or * be exposed to other classes. In the latter case, the members of the Private * class need to be qualified with appropriate access specifiers. The * PublicClass and Private classes always have full access to each other's * protected and private members. */ /** * \brief Construct an instance of an Extensible class * \param[in] d Pointer to the private data instance */ Extensible::Extensible(Extensible::Private *d) : d_(d) { } /** * \var Extensible::d_ * \brief Pointer to the private data instance */ /** * \class Extensible::Private * \brief Base class for private data managed through a d-pointer */ /** * \brief Construct an instance of an Extensible class private data * \param[in] o Pointer to the public class object */ Extensible::Private::Private(Extensible *o) : o_(o) { } Extensible::Private::~Private() { } /** * \var Extensible::Private::o_ * \brief Pointer to the public class object */ } /* namespace libcamera */