So the whole "StreamRole" thing in libcamera is a bit strange, IMHO. Really these roles don't generally belong to streams, they pertain more to the configuration as a whole because it may have an effect on some of the default processing options that get chosen (for example colour spaces, default framerates, or the amount of denoise that's performed on older platforms, or the number of buffers that are allocated) and which apply globally. But in the main it's best not to think too much about them because whatever role you pick, you can subsequently configure what you really want.
The only exception is the StreamRole::Raw. This is different, because it says you want to get raw images straight from the sensor, by-passing all the ISP processing. But this is distinct from the main and low resolution streams. So you can actually have up to *three* streams: the main, the low resolution and a raw stream. But only two of these are "processed" streams. The diagram of page 15 of the manual is the one to look at.
I'd encourage you to have a play with Picamera2 just to see how things work. That's a pretty direct implementation of the capabilities that our libcamera implementation exposes. There's also quite a lot in the manual about configuring those various streams, which will map onto what you can specify directly in the C++ API.
The only exception is the StreamRole::Raw. This is different, because it says you want to get raw images straight from the sensor, by-passing all the ISP processing. But this is distinct from the main and low resolution streams. So you can actually have up to *three* streams: the main, the low resolution and a raw stream. But only two of these are "processed" streams. The diagram of page 15 of the manual is the one to look at.
I'd encourage you to have a play with Picamera2 just to see how things work. That's a pretty direct implementation of the capabilities that our libcamera implementation exposes. There's also quite a lot in the manual about configuring those various streams, which will map onto what you can specify directly in the C++ API.
Statistics: Posted by therealdavidp — Fri Jan 16, 2026 4:35 pm