diff --git a/include/libcamera/ipa/ipa_controls.h b/include/libcamera/ipa/ipa_controls.h
index da1a759618e0..e5da1946ce1d 100644
--- a/include/libcamera/ipa/ipa_controls.h
+++ b/include/libcamera/ipa/ipa_controls.h
@@ -10,6 +10,8 @@
 #include <stdint.h>
 
 #ifdef __cplusplus
+namespace libcamera {
+
 extern "C" {
 #endif
 
@@ -48,5 +50,7 @@ struct ipa_control_info_entry {
 };
 
 #ifdef __cplusplus
+} /* namespace libcamera */
+
 }
 #endif
diff --git a/src/libcamera/ipa_controls.cpp b/src/libcamera/ipa_controls.cpp
index c3489bbff646..870a443b0f38 100644
--- a/src/libcamera/ipa_controls.cpp
+++ b/src/libcamera/ipa_controls.cpp
@@ -131,6 +131,8 @@
  * shall be ignored when parsing the packet.
  */
 
+namespace libcamera {
+
 /**
  * \def IPA_CONTROLS_FORMAT_VERSION
  * \brief The current control serialization format version
@@ -224,3 +226,5 @@ static_assert(sizeof(ipa_control_value_entry) == 16,
 
 static_assert(sizeof(ipa_control_info_entry) == 16,
 	      "Invalid ABI size change for struct ipa_control_info_entry");
+
+} /* namespace libcamera */
