diff --git a/src/libcamera/pipeline/virtual/image_frame_generator.cpp b/src/libcamera/pipeline/virtual/image_frame_generator.cpp
index d1545b5d9..5ba76507a 100644
--- a/src/libcamera/pipeline/virtual/image_frame_generator.cpp
+++ b/src/libcamera/pipeline/virtual/image_frame_generator.cpp
@@ -136,8 +136,9 @@ int ImageFrameGenerator::generateFrame(const Size &size, const FrameBuffer *buff
 
 	/* Write the scaledY and scaledUV to the mapped frame buffer */
 	libyuv::NV12Copy(scaledFrameDatas_[frameIndex_].Y.get(), size.width,
-			 scaledFrameDatas_[frameIndex_].UV.get(), size.width, planes[0].begin(),
-			 size.width, planes[1].begin(), size.width,
+			 scaledFrameDatas_[frameIndex_].UV.get(), size.width,
+			 planes[0].data(), size.width,
+			 planes[1].data(), size.width,
 			 size.width, size.height);
 
 	/* Proceed to the next image every 4 frames */
diff --git a/src/libcamera/pipeline/virtual/test_pattern_generator.cpp b/src/libcamera/pipeline/virtual/test_pattern_generator.cpp
index 745be83b9..12cce9f7e 100644
--- a/src/libcamera/pipeline/virtual/test_pattern_generator.cpp
+++ b/src/libcamera/pipeline/virtual/test_pattern_generator.cpp
@@ -53,8 +53,8 @@ int TestPatternGenerator::generateFrame(const Size &size,
 
 	/* Convert the template_ to the frame buffer */
 	int ret = libyuv::ARGBToNV12(template_.get(), size.width * kARGBSize,
-				     planes[0].begin(), size.width,
-				     planes[1].begin(), size.width,
+				     planes[0].data(), size.width,
+				     planes[1].data(), size.width,
 				     size.width, size.height);
 	if (ret != 0)
 		LOG(Virtual, Error) << "ARGBToNV12() failed with " << ret;
