summaryrefslogtreecommitdiff
path: root/src/gstreamer/gstlibcameraprovider.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/gstreamer/gstlibcameraprovider.cpp')
-rw-r--r--src/gstreamer/gstlibcameraprovider.cpp14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/gstreamer/gstlibcameraprovider.cpp b/src/gstreamer/gstlibcameraprovider.cpp
index aee6f9a2..6eb0a0eb 100644
--- a/src/gstreamer/gstlibcameraprovider.cpp
+++ b/src/gstreamer/gstlibcameraprovider.cpp
@@ -132,6 +132,10 @@ gst_libcamera_device_new(const std::shared_ptr<Camera> &camera)
roles.push_back(StreamRole::VideoRecording);
std::unique_ptr<CameraConfiguration> config = camera->generateConfiguration(roles);
+ if (!config || config->size() != roles.size()) {
+ GST_ERROR("Failed to generate a default configuration for %s", name);
+ return nullptr;
+ }
for (const StreamConfiguration &stream_cfg : *config) {
GstCaps *sub_caps = gst_libcamera_stream_formats_to_caps(stream_cfg.formats());
@@ -189,8 +193,16 @@ gst_libcamera_provider_probe(GstDeviceProvider *provider)
for (const std::shared_ptr<Camera> &camera : cm->cameras()) {
GST_INFO_OBJECT(self, "Found camera '%s'", camera->id().c_str());
+
+ GstDevice *dev = gst_libcamera_device_new(camera);
+ if (!dev) {
+ GST_ERROR_OBJECT(self, "Failed to add camera '%s'",
+ camera->id().c_str());
+ return nullptr;
+ }
+
devices = g_list_append(devices,
- g_object_ref_sink(gst_libcamera_device_new(camera)));
+ g_object_ref_sink(dev));
}
return devices;