[PATCH v2 7/7] gstreamer: Replace NULL with nullptr

Barnabás Pőcze barnabas.pocze at ideasonboard.com
Wed Jun 4 15:23:45 CEST 2025


Hi

2025. 06. 04. 15:07 keltezéssel, Laurent Pinchart írta:
> Usage of NULL has slowly crept in the libcamerasrc sources. Replace it
> with nullptr.

I think we should set up clang-tidy in the CI. It has:
https://clang.llvm.org/extra/clang-tidy/checks/modernize/use-nullptr.html
and many more useful things. Unfortunately every time I run it I am faced
with the fact that it runs quite slowly when using a number of checks, so
it would probably have to be limited to the changed source files.

Reviewed-by: Barnabás Pőcze <barnabas.pocze at ideasonboard.com>


> 
> Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> ---
>   src/gstreamer/gstlibcamera-controls.cpp.in |  2 +-
>   src/gstreamer/gstlibcamerapad.cpp          |  2 +-
>   src/gstreamer/gstlibcamerasrc.cpp          | 23 +++++++++++-----------
>   3 files changed, 14 insertions(+), 13 deletions(-)
> 
> diff --git a/src/gstreamer/gstlibcamera-controls.cpp.in b/src/gstreamer/gstlibcamera-controls.cpp.in
> index 89c530da0b4a..2a16b39a93d9 100644
> --- a/src/gstreamer/gstlibcamera-controls.cpp.in
> +++ b/src/gstreamer/gstlibcamera-controls.cpp.in
> @@ -68,7 +68,7 @@ static const GEnumValue {{ ctrl.name|snake_case }}_types[] = {
>   		"{{ enum.gst_name }}"
>   	},
>   {%- endfor %}
> -	{0, NULL, NULL}
> +	{0, nullptr, nullptr}
>   };
>   
>   #define TYPE_{{ ctrl.name|snake_case|upper }} \
> diff --git a/src/gstreamer/gstlibcamerapad.cpp b/src/gstreamer/gstlibcamerapad.cpp
> index 3bc2bc87e773..81a0ef44cc6f 100644
> --- a/src/gstreamer/gstlibcamerapad.cpp
> +++ b/src/gstreamer/gstlibcamerapad.cpp
> @@ -102,7 +102,7 @@ gst_libcamera_stream_role_get_type()
>   			"libcamera::Viewfinder",
>   			"view-finder",
>   		},
> -		{ 0, NULL, NULL }
> +		{ 0, nullptr, nullptr }
>   	};
>   
>   	if (!type)
> diff --git a/src/gstreamer/gstlibcamerasrc.cpp b/src/gstreamer/gstlibcamerasrc.cpp
> index eec8163e88e7..16b1d08b3053 100644
> --- a/src/gstreamer/gstlibcamerasrc.cpp
> +++ b/src/gstreamer/gstlibcamerasrc.cpp
> @@ -367,10 +367,10 @@ int GstLibcameraSrcState::processRequest()
>   
>   		if (video_pool) {
>   			/* Only set video pool when a copy is needed. */
> -			GstBuffer *copy = NULL;
> +			GstBuffer *copy = nullptr;
>   			const GstVideoInfo info = gst_libcamera_pad_get_video_info(srcpad);
>   
> -			ret = gst_buffer_pool_acquire_buffer(video_pool, &copy, NULL);
> +			ret = gst_buffer_pool_acquire_buffer(video_pool, &copy, nullptr);
>   			if (ret != GST_FLOW_OK) {
>   				gst_buffer_unref(buffer);
>   				GST_ELEMENT_ERROR(src_, RESOURCE, SETTINGS,
> @@ -541,8 +541,8 @@ static std::tuple<GstBufferPool *, int>
>   gst_libcamera_create_video_pool(GstLibcameraSrc *self, GstPad *srcpad,
>   				GstCaps *caps, const GstVideoInfo *info)
>   {
> -	g_autoptr(GstQuery) query = NULL;
> -	g_autoptr(GstBufferPool) pool = NULL;
> +	g_autoptr(GstQuery) query = nullptr;
> +	g_autoptr(GstBufferPool) pool = nullptr;
>   	const gboolean need_pool = true;
>   
>   	/*
> @@ -554,8 +554,8 @@ gst_libcamera_create_video_pool(GstLibcameraSrc *self, GstPad *srcpad,
>   
>   	if (!gst_pad_peer_query(srcpad, query))
>   		GST_DEBUG_OBJECT(self, "Didn't get downstream ALLOCATION hints");
> -	else if (gst_query_find_allocation_meta(query, GST_VIDEO_META_API_TYPE, NULL))
> -		return { NULL, 0 };
> +	else if (gst_query_find_allocation_meta(query, GST_VIDEO_META_API_TYPE, nullptr))
> +		return { nullptr, 0 };
>   
>   	GST_WARNING_OBJECT(self, "Downstream doesn't support video meta, need to copy frame.");
>   
> @@ -564,7 +564,8 @@ gst_libcamera_create_video_pool(GstLibcameraSrc *self, GstPad *srcpad,
>   	 * create a new pool.
>   	 */
>   	if (gst_query_get_n_allocation_pools(query) > 0)
> -		gst_query_parse_nth_allocation_pool(query, 0, &pool, NULL, NULL, NULL);
> +		gst_query_parse_nth_allocation_pool(query, 0, &pool, nullptr,
> +						    nullptr, nullptr);
>   
>   	if (!pool) {
>   		GstStructure *config;
> @@ -583,7 +584,7 @@ gst_libcamera_create_video_pool(GstLibcameraSrc *self, GstPad *srcpad,
>   		GST_ELEMENT_ERROR(self, RESOURCE, SETTINGS,
>   				  ("Failed to active buffer pool"),
>   				  ("gst_libcamera_src_negotiate() failed."));
> -		return { NULL, -EINVAL };
> +		return { nullptr, -EINVAL };
>   	}
>   
>   	return { reinterpret_cast<GstBufferPool *>(g_steal_pointer(&pool)), 0 };
> @@ -660,7 +661,7 @@ gst_libcamera_src_negotiate(GstLibcameraSrc *self)
>   	for (gsize i = 0; i < state->srcpads_.size(); i++) {
>   		GstPad *srcpad = state->srcpads_[i];
>   		const StreamConfiguration &stream_cfg = state->config_->at(i);
> -		GstBufferPool *video_pool = NULL;
> +		GstBufferPool *video_pool = nullptr;
>   		GstVideoInfo info;
>   
>   		g_autoptr(GstCaps) caps = gst_libcamera_stream_configuration_to_caps(stream_cfg, transfer[i]);
> @@ -1065,7 +1066,7 @@ gst_libcamera_src_request_new_pad(GstElement *element, GstPadTemplate *templ,
>   				  const gchar *name, [[maybe_unused]] const GstCaps *caps)
>   {
>   	GstLibcameraSrc *self = GST_LIBCAMERA_SRC(element);
> -	g_autoptr(GstPad) pad = NULL;
> +	g_autoptr(GstPad) pad = nullptr;
>   
>   	GST_DEBUG_OBJECT(self, "new request pad created");
>   
> @@ -1079,7 +1080,7 @@ gst_libcamera_src_request_new_pad(GstElement *element, GstPadTemplate *templ,
>   		GST_ELEMENT_ERROR(element, STREAM, FAILED,
>   				  ("Internal data stream error."),
>   				  ("Could not add pad to element"));
> -		return NULL;
> +		return nullptr;
>   	}
>   
>   	gst_child_proxy_child_added(GST_CHILD_PROXY(self), G_OBJECT(pad), GST_OBJECT_NAME(pad));



More information about the libcamera-devel mailing list