summaryrefslogtreecommitdiff
path: root/utils
AgeCommit message (Expand)Author
2021-09-02libcamera: Drop emitter object pointer from signal argumentsLaurent Pinchart
2021-09-02libcamera: Don't use emitter object pointer argument to slotLaurent Pinchart
2021-08-27utils: checkstyle.py: Use single-quoted strings when possibleLaurent Pinchart
2021-08-19ipa: Use FileDescriptor instead of int in layers above IPC payloadPaul Elder
2021-08-18utils: ipc: ipa_proxy_worker: Log IPCUnixSocket::send() failuresLaurent Pinchart
2021-08-05utils: ipc: Initialise ThreadProxyKieran Bingham
2021-08-03utils: raspberrypi: ctt: Fix namespace for sklearn NearestCentroid functionDavid Plowman
2021-08-02utils: raspberrypi: ctt: Fix usage of findHomography functionDavid Plowman
2021-07-27utils: ipc: Assign a new gid to proxy workerUmang Jain
2021-07-09utils: ipc: proxy: Reset ControlSerializer during IPA configureUmang Jain
2021-06-25libcamera/base: Move extended base functionalityKieran Bingham
2021-06-01utils: ipc: mojo: Error if ControlInfoMap/List doesn't prefix libcameraPaul Elder
2021-05-31utils: ipc: extract-docs: Extract the SPDX headerPaul Elder
2021-05-27utils: ipc: Add script to extract doxygen docs from mojom filesPaul Elder
2021-05-26utils: ipc: Update mojoPaul Elder
2021-05-26utils: update-mojo.sh: Add script for updating mojoPaul Elder
2021-05-24ipa: Move core IPA interface documentation to a .cpp fileUmang Jain
2021-04-27utils: ipc: Use the proper namespace for mojom structsPaul Elder
2021-03-29utils: ipc: proxy: Track IPA with a state machineKieran Bingham
2021-03-24utils: ipc: proxy: Process pending messagesLaurent Pinchart
2021-03-24utils: ipc: proxy: Assert asynchronous calls execute in the running stateLaurent Pinchart
2021-03-12utils: raspberrypi: Add a DelayedControls log parserNaushir Patuck
2021-03-09utils: ipc: Make first output parameter direct return if int32Paul Elder
2021-03-09utils: ipc: Support custom parameters to init()Paul Elder
2021-03-08utils: Add kernel headers update scriptLaurent Pinchart
2021-03-04utils: ipc: templates: Drop unused variableLaurent Pinchart
2021-02-16utils: checkstyle.py: Handle renamed files in header add checkerLaurent Pinchart
2021-02-16utils: checkstyle.py: Restore checks of renamed filesLaurent Pinchart
2021-02-16meson: ipa, proxy: Generate headers and proxy with mojoPaul Elder
2021-02-16utils: ipc: add parser scriptPaul Elder
2021-02-16utils: ipc: add generator scriptPaul Elder
2021-02-16utils: ipc: add templates for code generation for IPC mechanismPaul Elder
2021-02-01utils: gen-formats: Support big-endian DRM formatsLaurent Pinchart
2021-01-21utils: checkstyle.py: Fix "protected" members in Commit classLaurent Pinchart
2020-12-29utils: checkstyle.py: Drop astyle supportLaurent Pinchart
2020-12-29utils: checkstyle.py: Add header add checkerLaurent Pinchart
2020-12-29utils: checkstyle.py: Add commit checkersLaurent Pinchart
2020-12-29utils: checkstyle.py: Move diff parsing to Commit classLaurent Pinchart
2020-12-29utils: checkstyle.py: Add ability to filter files by status in a commitLaurent Pinchart
2020-12-29utils: checkstyle.py: Make title and files properties of commit classLaurent Pinchart
2020-12-29utils: checkstyle.py: Move commit handling to a separate sectionLaurent Pinchart
2020-12-29utils: checkstyle.py: Factor out automatic class registryLaurent Pinchart
2020-12-29utils: checkstyle.py: Drop arguments to super() when possibleLaurent Pinchart
2020-12-27utils: gen-controls: Fix enumerators documentationLaurent Pinchart
2020-11-20src: ipa: raspberrypi: Change 'sport' exposure mode name to 'short'David Plowman
2020-11-11README, meson: Add dependency on ply and jinja2 for IPA interface generationPaul Elder
2020-11-11utils: ipc: import mojoPaul Elder
2020-11-08utils: checkstyle.py: Add d-pointer formatterLaurent Pinchart
2020-11-03utils: tracepoints: Add simple statistics scriptPaul Elder
2020-11-03libcamera: tracing: Implement tracing infrastructurePaul Elder
} } static gboolean gst_libcamera_pad_query(GstPad *pad, GstObject *parent, GstQuery *query) { auto *self = GST_LIBCAMERA_PAD(pad); if (query->type != GST_QUERY_LATENCY) return gst_pad_query_default(pad, parent, query); /* TRUE here means live, we assumes that max latency is the same as min * as we have no idea that duration of frames. */ gst_query_set_latency(query, TRUE, self->latency, self->latency); return TRUE; } static void gst_libcamera_pad_init(GstLibcameraPad *self) { GST_PAD_QUERYFUNC(self) = gst_libcamera_pad_query; } static GType gst_libcamera_stream_role_get_type() { static GType type = 0; static const GEnumValue values[] = { { StillCapture, "libcamera::StillCapture", "still-capture" }, { VideoRecording, "libcamera::VideoRecording", "video-recording" }, { Viewfinder, "libcamera::Viewfinder", "view-finder" }, { 0, NULL, NULL } }; if (!type) type = g_enum_register_static("GstLibcameraStreamRole", values); return type; } static void gst_libcamera_pad_class_init(GstLibcameraPadClass *klass) { auto *object_class = G_OBJECT_CLASS(klass); object_class->set_property = gst_libcamera_pad_set_property; object_class->get_property = gst_libcamera_pad_get_property; auto *spec = g_param_spec_enum("stream-role", "Stream Role", "The selected stream role", gst_libcamera_stream_role_get_type(), VideoRecording, (GParamFlags)(GST_PARAM_MUTABLE_READY | G_PARAM_CONSTRUCT | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property(object_class, PROP_STREAM_ROLE, spec); } StreamRole gst_libcamera_pad_get_role(GstPad *pad) { auto *self = GST_LIBCAMERA_PAD(pad); GLibLocker lock(GST_OBJECT(self)); return self->role; } GstLibcameraPool * gst_libcamera_pad_get_pool(GstPad *pad) { auto *self = GST_LIBCAMERA_PAD(pad); return self->pool; } void gst_libcamera_pad_set_pool(GstPad *pad, GstLibcameraPool *pool) { auto *self = GST_LIBCAMERA_PAD(pad); if (self->pool) g_object_unref(self->pool); self->pool = pool; } Stream * gst_libcamera_pad_get_stream(GstPad *pad) { auto *self = GST_LIBCAMERA_PAD(pad); if (self->pool) return gst_libcamera_pool_get_stream(self->pool); return nullptr; } void gst_libcamera_pad_queue_buffer(GstPad *pad, GstBuffer *buffer) { auto *self = GST_LIBCAMERA_PAD(pad); GLibLocker lock(GST_OBJECT(self)); g_queue_push_head(&self->pending_buffers, buffer); } GstFlowReturn gst_libcamera_pad_push_pending(GstPad *pad) { auto *self = GST_LIBCAMERA_PAD(pad); GstBuffer *buffer; { GLibLocker lock(GST_OBJECT(self)); buffer = GST_BUFFER(g_queue_pop_tail(&self->pending_buffers)); } if (!buffer) return GST_FLOW_OK; return gst_pad_push(pad, buffer); } bool gst_libcamera_pad_has_pending(GstPad *pad) { auto *self = GST_LIBCAMERA_PAD(pad); GLibLocker lock(GST_OBJECT(self)); return self->pending_buffers.length > 0; } void gst_libcamera_pad_set_latency(GstPad *pad, GstClockTime latency) { auto *self = GST_LIBCAMERA_PAD(pad); GLibLocker lock(GST_OBJECT(self)); self->latency = latency; }