카메라 장치 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-capture-format
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);