본문 바로가기

Tech/linux

linux media subsystem [2]

V4l2의 capture 의 경우 다음과 같은 로직이다.

 

1. device cap을 보아서 capture와 streaming이 지원하는지 본다.

2. device를 열고 format을 설정한다.

3. streaming 방식을 설정한다.

 

https://docs.kernel.org/userspace-api/media/v4l/capture.c.html 

요 부분을 참고하면 좋다.

 

그리고 libv4l이라는 라이브러리가 있고 보통 v4l2_open, v4l2_close등의 기능을 제공하는데,

이를 이용하면 기존 단순 v4l2 API + convert까지 한번에 할 수 있는 효과가 있다.

예를 들어 기존 카메라는 MJPEG포맷만 지원하는데 RGB를 하려고하면 user가 MMAP으로 가져온 데이터를 userspace에서 따로 rgb로 convert해야한다. 하지만 libv4l은 이 부분을 알아서 해주는 방식이다. (물론 zero-copy는 아니다)

 

사용하면서 조금 명확하지 않은 부분은

buffer를 왜 여러개 준비를 할까? (아마 추측은 fps에 따라서 다른 버퍼들이 열심히 채워지고 비우지 않으면 그냥 기다리는 듯 하다.)

나중에 더 자세히 알게되면 추가하려고 한다.

'Tech > linux' 카테고리의 다른 글

linux media subsystem [4]  (0) 2022.04.07
linux media subsystem [3]  (0) 2022.04.07
linux media subsystem [1]  (0) 2022.04.01
linux media subsystem [0]  (0) 2022.03.30
리눅스 하드웨어  (0) 2021.11.01