카메라 장치 API¶
헤더 파일¶
OasisMedia.h
함수¶
int32_t
configCameras
(
key_value_map_t &
parameters
)
OasisMedia.h
카메라 장치들을 등록합니다.
매개변수
parameters
카메라 장치 등록에 필요한 key-value map 입니다.
리턴값
- 0: 성공
- -1: 실패
oasis::configCameras 함수의 매개변수로 전달할 수 있는 key-value map은 아래와 같습니다.
키
기본값
필수
설명
source-count
○
등록할 카메라 장치 개수를 지정합니다.
각 카메라 장치별 설정할 키값은 source<N>-<키 이름> 와 같은 형식으로 지정합니다. <N>은 1번부터 시작하여 1씩 증가합니다.
각 카메라 장치별 key-value map은 아래와 같습니다.
키
기본값
필수
설명
source<N>-camera-id
○
카메라 장치의 ID를 지정합니다. 0번부터 지정할 수 있으며, camera id가 필요한 API에서 매개변수로 사용됩니다. /dev/videoN 을 지원하는 기기인 경우, N 값을 ID로 사용할 수 있습니다.
source<N>-capture-format
YUV420
○
카메라 이미지 센서가 지원하는 캡춰 포맷을 지정합니다.
source<N>-capture-buffers
3
○
카메라 이미지 센서 캡춰 버퍼 개수를 지정합니다.
source<N>-fps
30
○
카메라 이미지 센서 FPS를 지정합니다. 장치에 따라 지원안 될 수도 있습니다.
source<N>-loc
front
카메라 장치가 부착된 위치를 지정합니다. front, rear, left, right, center, any 중 하나 값으로 지정할 수 있습니다.
source<N>-capture-resolution
1080p
○
카메라 장치 이미지 센서 캡춰 크기를 지정합니다. 2160p, 1440p, 1080p, 720p, 720i, 480p, 480i 중 하나 값으로 지정할 수 있습니다.
source<N>-capture-width
카메라 장치 이미지 센서 캡춰 너비를 지정합니다. capture-resolution 대신 사용할 수 있습니다.
source<N>-capture-height
카메라 장치 이미지 센서 캡춰 높이를 지정합니다. capture-resolution 대신 사용할 수 있습니다.
source<N>-subchannel-width
카메라 장치가 부가 이미지 생성을 지원할 경우, 부가 이미지 너비를 지정합니다.
source<N>-subchannel-height
카메라 장치가 부가 이미지 생성을 지원할 경우, 부가 이미지 높이를 지정합니다.
source<N>-subchannel-rotation
0
카메라 장치가 부가 이미지 생성을 지원할 경우, 회전 각도를 지정합니다. 장치에 따라 지원안 될 수도 있습니다. 0, 90, 180, 270 중 하나 값으로 지정할 수 있습니다.
Note
caputre-resolution 이나 capture-width, capture-height 중 하나는 지정해야 합니다. 같이 지정할 경우, capture-resolution 값을 사용합니다.
V4L2_PIX_FMT 에 대응되는 capture format 값은 아래와 같습니다.
| V4L2_PIX_FMT 값 | source |
|---|---|
| V4L2_PIX_FMT_YUYV | YUYV |
| V4L2_PIX_FMT_YVYU | YVYU |
| V4L2_PIX_FMT_UYVY | UYVY |
| V4L2_PIX_FMT_VYUY | VYUY |
| V4L2_PIX_FMT_NV16 | NV16 |
| V4L2_PIX_FMT_NV12 | NV12 |
| V4L2_PIX_FMT_NV12M | NV12M |
| V4L2_PIX_FMT_NV21 | NV21 |
| V4L2_PIX_FMT_P010 | P010 |
| V4L2_PIX_FMT_P010M | P010M |
| V4L2_PIX_FMT_YVU420 | YVU420 |
| V4L2_PIX_FMT_YUV420 | YUV420 |
| V4L2_PIX_FMT_YVU420M | YVU420M |
| V4L2_PIX_FMT_YUV420M | YUV420M |
| V4L2_PIX_FMT_YUV422M | YUV422M |
| V4L2_PIX_FMT_YUV444M | YUV444M |
| V4L2_PIX_FMT_ABGR32 | ABGR32 |
| V4L2_PIX_FMT_BGR32 | BGR4 |
| V4L2_PIX_FMT_RGB32 | RGB4 |
| V4L2_PIX_FMT_XBGR32 | XBGR32 |
| V4L2_PIX_FMT_ARGB32 | ARGB32 |
| V4L2_PIX_FMT_XRGB32 | XRGB32 |
| V4L2_PIX_FMT_GREY | GREY |
| V4L2_PIX_FMT_MJPEG | MJPEG |
| V4L2_PIX_FMT_H264 | H264 |
| V4L2_PIX_FMT_H265 | H265 |
| V4L2_PIX_FMT_VP8 | VP8 |
| V4L2_PIX_FMT_VP9 | VP9 |
| V4L2_PIX_FMT_SBGGR8 | SBGGR8 |
| V4L2_PIX_FMT_SGBRG8 | SGBRG8 |
| V4L2_PIX_FMT_SGRBG8 | SGRBG8 |
| V4L2_PIX_FMT_SRGGB8 | SRGGB8 |
| V4L2_PIX_FMT_SBGGR10 | SBGGR10 |
| V4L2_PIX_FMT_SGBRG10 | SGBRG10 |
| V4L2_PIX_FMT_SGRBG10 | SGRBG10 |
| V4L2_PIX_FMT_SRGGB10 | SRGGB10 |
| V4L2_PIX_FMT_SBGGR10P | SBGGR10P |
| V4L2_PIX_FMT_SGBRG10P | SGBRG10P |
| V4L2_PIX_FMT_SGRBG10P | SGRBG10P |
| V4L2_PIX_FMT_SRGGB10P | SRGGB10P |
| V4L2_PIX_FMT_SBGGR12 | SBGGR12 |
| V4L2_PIX_FMT_SGBRG12 | SGBRG12 |
| V4L2_PIX_FMT_SGRBG12 | SGRBG12 |
| V4L2_PIX_FMT_SRGGB12 | SRGGB12 |
| V4L2_PIX_FMT_SBGGR12P | SBGGR12P |
| V4L2_PIX_FMT_SGBRG12P | SGBRG12P |
| V4L2_PIX_FMT_SGRBG12P | SGRBG12P |
| V4L2_PIX_FMT_SRGGB12P | SRGGB12P |
| V4L2_PIX_FMT_SBGGR16 | SBGGR16 |
| V4L2_PIX_FMT_SGBRG16 | SGBRG16 |
| V4L2_PIX_FMT_SGRBG16 | SGRBG16 |
| V4L2_PIX_FMT_SRGGB16 | SRGGB16 |
AllWinner 칩셋에 추가로 적용되는 key-value map은 아래와 같습니다.
키
기본값
필수
설명
source<N>-isp-id
-1
카메라 장치에 바인딩할 ISP 장치 ID를 지정합니다.
source<N>-isp-wdr-mode
0
ISP Wide Dynamic Range(WDR;광역 역광 보정) 모드를 지정합니다. "0" Normal, "1" DOL, "2" Companding 중 하나의 값을 지정합니다.
KL730 칩셋에 추가로 적용되는 key-value map은 아래와 같습니다.
키
기본값
필수
설명
source<N>-sensor-config
○
카메라 장치의 sensor config 폴더 경로입니다.
source<N>-autoscene-config
○
카메라 장치의 autoscene config 폴더 경로입니다.
source<N>-resource-dir
○
카메라 장치의 resource 폴더 경로입니다.
RasberryPi 칩셋에 추가로 적용되는 key-value map은 아래와 같습니다.
키
기본값
필수
설명
source<N>-hflip
0
카메라 장치 영상의 수평 flip을 적용합니다.
source<N>-vflip
0
카메라 장치 영상의 수직 flip을 적용합니다.
예제¶
아래는 KL730 칩셋에서 oasis::initialize() 호출 후에 카메라 장치를 등록하는 예입니다.
oasis::key_value_map_t parameters;
parameters["source-count"] = "1";
parameters["source1-camera-id"] = "0";
parameters["source1-isp-id"] = "0";
parameters["source1-isp-wdr-mode"] = "0";
parameters["source1-capture-format"] = "YUV420";
parameters["source1-capture-buffers"] = "5";
parameters["source1-fps"] = "30";
parameters["source1-subchannel-rotation"] = "0";
parameters["source1-loc"] = "front";
parameters["source1-capture-resolution"] = "1080p";
parameters["source1-sensor-config"] = "./Resource_tp2863/VIC/0/tp2863_1920x1080_ch0.cfg";
parameters["source1-autoscene-config"] = "./Resource_tp2863/AutoScene/autoscene_conf.cfg";
parameters["source1-resource-dir"] = "./Resource_tp2863/";
oasis::configCameras(parameters);
아래는 AllWinner 칩셋에서 oasis::initialize() 호출 후에 카메라 장치를 등록하는 예입니다.
oasis::key_value_map_t parameters;
parameters["source-count"] = "1";
parameters["source1-camera-id"] = "0";
parameters["source1-isp-id"] = "0";
parameters["source1-isp-wdr-mode"] = "1";
parameters["source1-capture-buffers"] = "5";
parameters["source1-fps"] = "30";
parameters["source1-subchannel-rotation"] = "0";
parameters["source1-loc"] = "front";
parameters["source1-capture-resolution"] = "2160p";
oasis::configCameras(parameters);