3.1 Overview
이 문서는 Video For Linux 2를 사용하는 ISP 소프트웨어 Application Programming Interface (API)에 대해 설명한다. ISP 소프트웨어 V4L2 API는 Linux 표준 API에서 ISP 하드웨어, 센서 하드웨어와 보정 데이터를 컨트롤한다. 커널 V4L2 드라이버는 V4L2 사용자 애플리케이션의 API 명령과 요청을 처리한다. ISP 소프트웨어 스택과 통신하고 V4L2 사용자 애플리케이션에 이미지 버퍼를 전달한다.
현재, 이 API에는 더 이상 사용되지 않는 함수가 없다.
3.1.1 Requirements/dependencies
- Linux 환경은 V4L2와 호환된다.
3.1.2 Supported features
Table 7에 나열된 ISP 기능은 현재 ISP V4L2 API에서 지원된다.
Table 7. ISP features
Feature | Abbreviation |
Auto Focus | AF |
Auto Exposure | AE |
Auto White Balance | AWB |
Auto Video Stabilization | AVS |
Black Level Subtraction | BLS |
Chromatic Aberration Correction | CAC |
Color Noise Reduction | CNR |
Color Processing | CPROC |
Demosaic | -- |
Defect Pixel Cluster Correction | DPCC |
De-noising Pre-filter | DPF |
High Dynamic Range | HDR |
Image Effect | IE |
Lens Shade Correction | LSC |
Noise Reduce 2D | 2DNR |
Noise Reduce 3D | 3DNR |
Wide Dynamic Range | WDR |
센서 기능: 추가 기능은 향후 릴리스에서 제공된다.
3.2 V4L2 API components
ISP 소프트웨어 V4L2 API는 ANSI C++ 코드로 작성되었으며, v4l2/video/sub 폴더에 정의되어 있다. 모든 명령은 커널 공간 작업을 직접 호출하는 IOCTL 인터페이스를 사용하여 사용자 공간에서 수행된다. IOCTL 컨트롤 용어는 IOCTL Interface and Commands에 설명되어 있다.
ISP 소프트웨어 V4L2 API 컴포넌트는 다음 섹션에 정의되어 있다:
- Buffer API
- Event API
- Feature control API
3.2.1 IOCTL interface and commands
Table 8. Key video IOTCLs
IOCTL | Type | Description |
VIDIOC_QUERYCAP | .vidioc_querycap | V4L2_CAP_STREAMING와 같은 드라이버의 기능을 쿼리 |
VIDIOC_ENUM_FRAMESIZES | vidioc_enum_framesizes | 지원 해상도 열거형 |
VIDIOC_S_FMT | .vidioc_s_fmt_* | 형식 정보 설정 |
VIDIOC_REQBUFS | .vidioc_reqbufs | 요청 버퍼. 버퍼 유형: DMA, MMAP, USER_PTR |
VIDIOC_QBUF | .vidioc_qbuf | 버퍼를 커널에 있는 큐에 넣으면, 드라이버에서 이 버퍼를 채운다. |
VIDIOC_QUERYBUF | .vidioc_querybuf | 커널과 mmap에서 버퍼 정보 가져오기 |
VIDIOC_DQBUF | .vidioc_dqbuf | 커널에 있는 큐에서 버퍼를 가져온다. 사용자는 프레임 데이터를 가져온다. |
VIDIOC_STREAMON | .vidioc_streamon | 스트리밍 시작 |
VIDIOC_STREAMOFF | .vidioc_streamoff | 스트리밍 종료 |
VIDIOC_G_EXT_CTRLS | .vidioc_g_ext_ctrls | 기능 컨트롤 명령 가져오기 |
VIDIOC_S_EXT_CTRLS | .vidioc_s_ext_ctrls | 기능 컨트롤 명령 설정 |
3.2.2 IOCTL call flow
IOCTL 호출 흐름은 Figure 10에 설명되어 있고 ISP 레퍼런스 코드는 이 구현을 기반으로 한다.
이 흐름은 앞으로 확장될 것이다.
3.2.3 Buffer API
버퍼에는 메모리 매핑 I/O를 사용하여 애플리케이션과 드라이버가 교환하는 데이터가 포함된다. 데이터 자체는 복사되지 않고, 버퍼에 대한 포인터만 교환된다. 메모리 매핑의 주요 목적은 디바이스 메모리의 버퍼를 애플리케이션의 주소 공간에 매핑하는 것이다.
V4L2 드라이버는 다음 버퍼 IOCTL을 지원한다:
- VIDIOC_REQBUFS
- VIDIOC_QUERYBUF
- VIDIOC_QBUF
- VIDIOC_DQBUF
- VIDIOC_STREAMON
- VIDIOC_STREAMOFF
또한, 다음과 같은 함수가 지원되고 있다.
- mmap()
- munmap()
- select()
- poll()
3.2.3.1 Buffer IOCTL control words
- VIDIOC_REQBUFS
링크: https://www.kernel.org/doc/html/v5.15/userspace-api/media/v4l/vidioc-reqbufs.html - VIDIOC_QUERYBUF
링크: https://www.kernel.org/doc/html/v5.15/userspace-api/media/v4l/vidioc-querybuf.html - VIDIOC_QBUF
링크: https://www.kernel.org/doc/html/v5.15/userspace-api/media/v4l/vidioc-qbuf.html - VIDIOC_DQBUF
링크: https://www.kernel.org/doc/html/v5.15/userspace-api/media/v4l/vidioc-qbuf.html - VIDIOC_STREAMON
링크: https://www.kernel.org/doc/html/v5.15/userspace-api/media/v4l/vidioc-streamon.html - VIDIOC_STREAMOFF
링크: https://www.kernel.org/doc/html/v5.15/userspace-api/media/v4l/vidioc-streamon.html
3.2.3.2 Buffer functions
- mmap
링크: https://www.kernel.org/doc/html/v5.15/userspace-api/media/v4l/func-mmap.html - munmap
링크: https://www.kernel.org/doc/html/v5.15/userspace-api/media/v4l/func-munmap.html - poll
링크: https://www.kernel.org/doc/html/v5.15/userspace-api/media/v4l/func-poll.html
3.2.4 Event API
V4L2 이벤트 인터페이스는 디바이스에서 발생하는 특정 조건에 대해 즉시 알림을 받을 수 있는 방법을 사용자에게 제공한다.
이벤트를 수신하려면, 먼저 사용자가 VIDIOC_SUBSCRIBE_EVENT와 VIDIOC_UNSUBSCRIBE_EVENT IOCTL을 사용하여 이벤트를 승인(subscribe)해야 한다. 이벤트가 승인되면, 승인된 유형의 이벤트는 VIDIOC_DQEVENT IOCTL을 사용하여 큐에서 가져올 수 있다. 이벤트는 VIDIOC_UNSUBSCRIBE_EVENT IOCTL을 사용하여 승인을 취소할 수 있다. 큐에서 가져올 수 있는 이벤트 정보는 비디오 디바이스에서 poll() 시스템 호출을 사용하여 얻는다. V4L2 이벤트는 poll 시스템 호출에서 POLLPRI 이벤트를 사용한다.
V4L2 드라이버는 다음 이벤트 IOCTL을 지원한다:
- VIDIOC_SUBSCRIBE_EVENT
- VIDIOC_UNSUBSCRIBE_EVENT
- VIDIOC_DQEVENT
추가로 다음 함수가 지원되고 있다.
- poll()
3.2.4.1 Event IOCTL control words
- VIDIOC_SUBSCRIBE_EVENT
링크: https://www.kernel.org/doc/html/v5.4/media/uapi/v4l/vidioc-subscribe-event.html - VIDIOC_UNSUBSCRIBE_EVENT
링크: https://www.kernel.org/doc/html/v5.4/media/uapi/v4l/vidioc-subscribe-event.html - VIDIOC_DQEVENT
링크: https://www.kernel.org/doc/html/v5.4/media/uapi/v4l/vidioc-dqevent.html
3.2.4.2 Event functions
3.2.4.3 Private event
전용 이벤트는 V4L2_EVENT_PRIVATE_START를 기반으로 하는 확장이다. 전용 이벤트 소스의 ID를 정의하고, struct v4l2_event.u.data[64]를 기반으로 이벤트 데이터 struct knl_v4l2_event_data를 정의한다.
전용 이벤트 유형:
- KNL_VIVCAM_V4L2_EVENT_TYPE
ID:
- KNL_VIVCAM_NOTIFY
구조체 정의:
- 구조체 knl_v4l2_event_data, 64 바이트
Table 9. Private event
Structure member | Type | Description |
command | unsigned int | V4L2_CID_PRIVATE_BASE 기반의 확장 |
status | unsigned int | |
session_id | unsigned int | |
stream_id | unsigned int | |
nop1 | unsigned int | 향후 확장을 위해 예약됨 |
... | ... | ... |
nop12 | unsigned int |
3.2.5 Feature control API
기능 컨트롤 API는 사용자 애플리케이션 스레드에서 JavaScript Object Notation (JSON) 개체를 사용한다. 그리고 공유 메모리 메소드를 사용하여 개체를 데몬과 직접 공유한다.
ISP 데몬은 JSON 파라미터를 사용하여 ISPCore 기능 컨트롤 명칭를 직접 설정한다. 사용자 공간과 커널 공간 전송에서 Json::Value 개체는 char 문자열로 변환된다. 그런 다음 Figure 11과 같이 사용자와 커널 공간 사이에 전송된다.
3.2.5.1 String parser
API와 문자열 전송에 사용되는 JSON 형식은 오픈 소스 코드를 사용하여 처리할 수 있다.
예를 들어:
- Json::Value를 char 문자열로:
String Json::Value::toStyledString(Json::Value)
- char 문자열을 Json::Value로:
Json::CharReaderBuilder::parse(const char* beginDoc, const char* endDoc, Value& root, bool collectComments = true);
3.2.5.2 String transfer
모든 기능과 관련된 JSON-String 엔터티는 다음 IOCTL을 사용하여 전송되고 있다:
- VIDIOC_G_EXT_CTRLS
링크: https://www.kernel.org/doc/html/v5.4/media/uapi/v4l/vidioc-g-ext-ctrls.html - VIDIOC_S_EXT_CTRLS
링크: https://www.kernel.org/doc/html/v5.4/media/uapi/v4l/vidioc-g-ext-ctrls.html
자세한 예제는 appshell/vvext/vvext.cpp 코드를 참조한다.
Table 10과 같이 v4l2_ext_control 구조체를 사용하여 char 문자열 메모리 블록을 교환한다.
Table 10. v4l2_ext_control Structure
v4l2_ext_control structure member | Type | Description |
id | __u32 | V4L2 ISP SW 기능 컨트롤 명칭 |
size | __u32 | 문자열 길이 |
reserved2[1] | __u32 | |
value | union of __s32 | |
value64 | union of __s64 | |
string | union of char * | 문자열 전송 포인터 |
p_u8 | union of __u8 * | |
p_u16 | union of __u16 * | |
p_u32 | union of __u32 * | |
ptr | union of void* |
3.2.5.3 Feature control words
인터페이스 헤더 파일: mediacontrol/include_api/ioctl_cmds.h.
- IF_AE_G_CFG
이 매크로 정의는 "ae.g.cfg" 문자열과 동일하다.
설명: Auto Exposure 컨트롤에 대한 구성 값을 가져온다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 11. Control words for IF_AE_G_CFG
Control Word | Description | Valid Values |
mode | 구성 모드 | 1: Disabled evaluation(비활성화 평가) 2: Fix evaluation(고정 평가) 3: Adaptive evaluation(적응 평가) |
damp.over | 제동의 상한 한도 | [0.0 … 1.0] |
damp.under | 제동의 하한 한도 | [0.0 … 1.0] |
set.point | 포인트 설정 | [0 … 255] |
clm.tolerance | 계산 정확도 | [0 … 100] |
- IF_AE_S_CFG
이 매크로 정의는 "ae.s.cfg" 문자열과 동일하다.
설명: Auto Exposure 컨트롤에 대한 구성 값을 설정한다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 12. Control words for IF_AE_S_CFG
Control Word | Description | Valid Values |
mode | 구성 모드 | 1: Disabled evaluation(비활성화 평가) 2: Fix evaluation(고정 평가) 3: Adaptive evaluation(적응 평가) |
damp.over | 제동의 상한 한도 | [0.0 … 1.0] |
damp.under | 제동의 하한 한도 | [0.0 … 1.0] |
set.point | 포인트 설정 | [0 … 255] |
clm.tolerance | 계산 정확도 | [0 … 100] |
- IF_AE_G_ECM
이 매크로 정의는 "ae.g.ecm" 문자열과 동일하다.
설명: Auto Exposure 컨트롤에 대한 ECM(Exposure Control Module) 값을 가져온다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 13. Control words for IF_AE_G_ECM
Control word | Description | Valid Values |
flicker.period | Auto Exposure 플리커 주기의 플래그 | [0 ... 2] - 0: 플리커 주기 끄기 - 1: 100 Hz - 2: 120 Hz |
afps | Auto FPS 컨트롤 값 | true false |
- IF_AE_S_ECM
이 매크로 정의는 "ae.s.ecm" 문자열과 동일하다.
설명: Auto Exposure 컨트롤에 대한 ECM(Exposure Control Module) 값을 설정한다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 14. Control words for IF_AE_S_ECM
Control word | Description | Valid Values |
flicker.period | Auto Exposure 플리커 주기의 플래그 | [0 ... 2] - 0: 플리커 주기 끄기 - 1: 100 Hz - 2: 120 Hz |
afps | Auto FPS 컨트롤 값 | true false |
- IF_AE_G_EN
이 매크로 정의는 "ae.g.en" 문자열과 동일하다.
설명: Auto Exposure 컨트롤의 활성화/비활성화 상태를 가져온다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 15. Control words for IF_AE_G_EN
Control word | Description | Valid Values |
enable | Auto Exposure의 상태 | true false |
- IF_AE_S_EN
이 매크로 정의는 "ae.s.en" 문자열과 동일하다.
설명: Auto Exposure 컨트롤의 활성화/비활성화 상태를 설정한다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 16. Control words for IF_AE_S_EN
Control word | Description | Valid Values |
enable | Auto Exposure의 활성화/비활성화 | true false |
- IF_AE_RESET
이 매크로 정의는 "ae.reset" 문자열과 동일하다.
설명: Auto Exposure 컨트롤의 재설정
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 17. Control words for IF_AE_RESET
Control word | Description | Valid Values |
N/A | - | - |
- IF_AF_G_CFG
이 매크로 정의는 "af.g.cfg" 문자열과 동일하다.
설명: Auto Focus 컨트롤의 구성을 가져온다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 18. Control words for IF_AF_G_CFG
Control word | Description | Valid Values |
algorithm | Algorithm 유형 | - 1: 전체 영역 - 2: 적응 영역 - 3: hill climbing (최대 값 찾기) |
oneshot | 원샷 트리거 모드 | true false |
- IF_AF_S_CFG
이 매크로 정의는 "af.s.cfg" 문자열과 동일하다.
설명: Auto Focus 컨트롤의 구성을 설정한다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 19. Control words for IF_AF_S_CFG
Control word | Description | Valid Values |
algorithm | Algorithm 유형 | - 1: 전체 영역 - 2: 적응 영역 - 3: hill climbing (최대 값 찾기) |
oneshot | 원샷 트리거 모드 | true false |
- IF_AF_G_EN
이 매크로 정의는 "af.g.en" 문자열과 동일하다.
설명: Auto Focus 컨트롤의 활성화/비활성화 상태를 가져온다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 20. Control words for IF_AF_G_EN
Control word | Description | Valid Values |
enable | Auto Focus의 상태 | true false |
- IF_AF_S_EN
이 매크로 정의는 "af.s.en" 문자열과 동일하다.
설명: Auto Focus 컨트롤의 활성화/비활성화 상태를 설정한다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 21. Control words for IF_AF_S_EN
Control word | Description | Valid Values |
enable | Auto Focus의 활성화/비활성화 | true false |
- IF_AWB_G_CFG
이 매크로 정의는 "awb.g.cfg" 문자열과 동일하다.
설명: Auto White Balance 컨트롤의 구성을 가져온다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 22. Control Words for IF_AWB_G_CFG
Control word | Description | Valid Values |
mode | AWB 모드 | - 1: 수동 - 2: 자동 |
index | 데이터베이스에 있는 교정 데이터 색인 | [0 ... 32] |
damping | 댐핑 데이터를 있는지 | true flase |
- IF_AWB_S_CFG
이 매크로 정의는 "awb.s.cfg" 문자열과 동일하다.
설명: Auto White Balance 컨트롤의 모드와 인덱스를 설정한다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 23. Control Words for IF_AWB_S_CFG
Control word | Description | Valid Values |
mode | AWB 모드 | - 1: 수동 - 2: 자동 |
index | 데이터베이스에 있는 교정 데이터 색인 | [0 ... 32] |
damping | 댐핑 데이터 | true flase |
- IF_AWB_G_EN
이 매크로 정의는 "awb.g.en" 문자열과 동일하다.
설명: Auto White Balance 컨트롤의 활성화/비활성화 상태를 가져온다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 24. Control words for IF_AWB_G_EN
Control word | Description | Valid Values |
enable | AWB 컨트롤의 상태 | true false |
- IF_AWB_S_EN
이 매크로 정의는 "awb.s.en" 문자열과 동일하다.
설명: Auto White Balance 컨트롤의 활성화/비활성화 상태를 설정한다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 25. Control words for IF_AWB_S_EN
Control word | Description | Valid Values |
enable | Auto White Balance의 활성화/비활성화 | true false |
- IF_AWB_RESET
이 매크로 정의는 "awb.reset" 문자열과 동일하다.
설명: Auto White Balance의 재설정
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 26. Control words for IF_AWB_RESET
Control word | Description | Valid Values |
N/A | - | - |
- IF_AWB_S_GAIN
이 매크로 정의는 ""awb.s.gain" 문자열과 동일하다.
설명: Auto White Balance의 게인을 설정한다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 27. Control words for IF_AWB_S_GAIN
Control word | Description | Valid Values |
red | Red 게인 | [0.000, 3.999] |
green.r | Gr 게인 | [0.000, 3.999] |
green.b | Gb 게인 | [0.000, 3.999] |
blue | Blue 게인 | [0.000, 3.999] |
- IF_AWB_S_MEASWIN
이 매크로 정의는 "awb.s.measwin" 문자열과 동일하다.
설명: Auto White Balance의 측정 윈도우를 설정한다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 28. Control words for IF_AWB_S_MEASWIN
Control word | Description | Valid Values |
left | 측정 윈도우의 왼쪽 시작 위치 | Sensor-specific |
top | 측정 윈도우의 상위 시작 위치 | Sensor-specific |
width | 측정 윈도우의 너비 | Sensor-specific |
height | 측정 윈도우의 높이 | Sensor-specific |
- IF_AVS_G_CFG
이 매크로 정의는 "avs.g.cfg" 문자열과 동일하다.
설명: Auto Video Stabilization 컨트롤에 대한 구성 값을 가져온다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 29. Control words for IF_AVS_G_CFG
Control word | Description | Valid Values |
use.params | AVS 사용 파라미터 | true false |
acceleration | AVS 가속 (AVS has acceleration) | [0.0 … 100.0] |
base.gain | AVS의 기본 게인 | [0.00 … 1.00] |
fall.off | AVS 감소 (AVS has fallen off) | [0.00 … 1.00] |
num.itp.points | ITP 포인트의 수 | [1 … 65536] |
theta | Theta | [0.0 … 1.0] |
- IF_AVS_S_CFG
이 매크로 정의는 "avs.s.cfg" 문자열과 동일하다.
설명: Auto Video Stabilization 컨트롤에 대한 구성 값을 설정한다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 30. Control words IF_AVS_S_CFG
Control word | Description | Valid Values |
use.params | AVS 사용 파라미터 | true false |
acceleration | AVS 가속 (AVS has acceleration) | [0.0 … 100.0] |
base.gain | AVS의 기본 게인 | [0.00 … 1.00] |
fall.off | AVS 감소 (AVS has fallen off) | [0.00 … 1.00] |
num.itp.points | ITP 포인트의 수 | [1 … 65536] |
theta | Theta | [0.0 … 1.0] |
- IF_AVS_G_EN
이 매크로 정의는 "avs.g.en" 문자열과 동일하다.
설명: Auto Video Stabilization 컨트롤의 활성화/비활성화 상태를 가져온다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 31. Control words for IF_AVS_G_EN
Control word | Description | Valid Values |
enable | AVS의 상태 | true false |
- IF_AVS_S_EN
이 매크로 정의는 "avs.s.en" 문자열과 동일하다.
설명: Auto Video Stabilization 컨트롤의 활성화/비활성화 상태를 설정한다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 32. Control words for IF_AVS_S_EN
Control word | Description | Valid Values |
enable | AVS의 활성화/비활성화 | true false |
- IF_BLS_G_CFG
이 매크로 정의는 "bls.g.cfg" 문자열과 동일하다.
설명: Black Level Subtraction 컨트롤에 대한 구성 값을 가져온다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 33. Control words for IF_BLS_G_CFG
Control word | Description | Valid Values |
red | Red 데이터 정보 | Sensor-specific |
green.r | Gr 데이터 정보 | Sensor-specific |
green.b | Gb 데이터 정보 | Sensor-specific |
blue | Blue 데이터 정보 | Sensor-specific |
- IF_BLS_S_CFG
이 매크로 정의는 "bls.s.cfg" 문자열과 동일하다.
설명: Black Level Subtraction 컨트롤에 대한 구성 값을 설정한다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 34. Control words for IF_BLS_S_CFG
Control word | Description | Valid Values |
red | Red 데이터 정보 | Sensor-specific |
green.r | Gr 데이터 정보 | Sensor-specific |
green.b | Gb 데이터 정보 | Sensor-specific |
blue | Blue 데이터 정보 | Sensor-specific |
- IF_CAC_G_EN
이 매크로 정의는 "cac.g.en" 문자열과 동일하다.
설명: Chromatic Aberration Correction 컨트롤의 활성화/비활성화 상태를 가져온다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 35. Control words for IF_CAC_G_EN
Control word | Description | Valid Values |
enable | Chromatic Aberration Correction의 상태 | true false |
- IF_CAC_S_EN
이 매크로 정의는 "cac.s.en" 문자열과 동일하다.
설명: Chromatic Aberration Correction 컨트롤의 활성화/비활성화 상태를 설정한다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 36. Control words for IF_CAC_S_EN
Control word | Description | Valid Values |
enable | Chromatic Aberration Correction의 활성화/비활성화 | true false |
- IF_CNR_G_CFG
이 매크로 정의는 "cnr.g.cfg" 문자열과 동일하다.
설명: Chroma Noise Reduction 컨트롤에 대한 구성 값을 가져온다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 37. Control words for IF_CNR_G_CFG
Control word | Description | Valid Values |
tc1 | Cb 채널의 CNR 임계값 | [0 … 32767] |
tc2 | Cr 채널의 CNR 임계값 | [0 … 32767] |
- IF_CNR_S_CFG
이 매크로 정의는 "cnr.s.cfg" 문자열과 동일하다.
설명: Chroma Noise Reduction 컨트롤에 대한 구성 값을 설정한다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 38. Control words for IF_CNR_S_CFG
Control word | Description | Valid Values |
tc1 | Cb 채널의 CNR 임계값 | [0 … 32767] |
tc2 | Cr 채널의 CNR 임계값 | [0 … 32767] |
- IF_CNR_G_EN
이 매크로 정의는 "cnr.s.en" 문자열과 동일하다.
설명: Chroma Noise Reduction 컨트롤의 활성화/비활성화 상태를 가져온다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 39. Control Words for IF_CNR_G_EN
Control word | Description | Valid Values |
enable | Chroma Noise Reduction의 상태 | true false |
- IF_CNR_S_EN
이 매크로 정의는 "cnr.s.en" 문자열과 동일하다.
설명: Chroma Noise Reduction 컨트롤의 활성화/비활성화 상태를 설정한다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 40. Control Words for IF_CNR_S_EN
Control word | Description | Valid Values |
enable | Chroma Noise Reduction의 활성화/비활성화 | true false |
- IF_CPROC_G_CFG
이 매크로 정의는 "cproc.g.cfg" 문자열과 동일하다.
설명: Color Processing 컨트롤에 대한 구성 값을 가져온다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 41. Control words for IF_CPROC_G_CFG
Control Word | Description | Valid Values |
brightness | 밝기 값 | [-128 … 127] - 기본 값: -15 - 1보다 크면 밝기가 증가 - 1보다 작으면 밝기가 감소 |
chroma.out | 출력시 CPROC 색차 픽셀 클리핑 범위 | - 1: ITU-R BT.601 표준에 따른 CbCr_out 클리핑 범위 [16 … 240] - 2: 전체 UV_out 클리핑 범위 [0 … 255] |
contrast | 대비 값 | [0 … 1.9921875] - 기본 값 : 1.1 - 1보다 크면 대비 증가 - 1보다 작으면 대비 감소 |
hue | 색조 값 | [-90 … 89] - 기본 값: 0 - 1보다 크면 색조 증가 - 1보다 작으면 색조 감소 |
luma.in | CPROC 휘도 입력 범위 (오프셋 처리) | - 1: ITU-R BT.601 표준에 따른 Y_in 범위 [64 … 940], Y_in에서 오프셋 64를 뺀다. - 2: Y_in 전체 범위 [0 ... 1023], Y_in에서 오프셋을 빼지 않는다. |
luma.out | CPROC 휘도 출력 클리핑 범위 | - 1: Y_out 클리핑 범위 [16 … 235], ITU-R BT.601 표준에 따라 16의 오프셋을 Y_out에 더한다. - 2: Y_out 클리핑 범위 [0 … 255], Y_out에서 오프셋을 더하지 않는다. |
saturation | 채도 값 | [0 … 1.9921875] - 기본 값: 1 - 1보다 크면 채도 증가 - 1보다 작으면 채도 감소 |
- IF_CPROC_S_CFG
이 매크로 정의는 "cproc.s.cfg" 문자열과 동일하다.
설명: Color Processing 컨트롤에 대한 구성 값을 설정한다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 42. Control words for IF_CPROC_S_CFG
Control Word | Description | Valid Values |
brightness | 밝기 값 | [-128 … 127] - 기본 값: -15 - 1보다 크면 밝기가 증가 - 1보다 작으면 밝기가 감소 |
chroma.out | 출력시 CPROC 색차 픽셀 클리핑 범위 | - 1: ITU-R BT.601 표준에 따른 CbCr_out 클리핑 범위 [16 … 240] - 2: 전체 UV_out 클리핑 범위 [0 … 255] |
contrast | 대비 값 | [0 … 1.9921875] - 기본 값 : 1.1 - 1보다 크면 대비 증가 - 1보다 작으면 대비 감소 |
hue | 색조 값 | [-90 … 89] - 기본 값: 0 - 1보다 크면 색조 증가 - 1보다 작으면 색조 감소 |
luma.in | CPROC 휘도 입력 범위 (오프셋 처리) | - 1: ITU-R BT.601 표준에 따른 Y_in 범위 [64 … 940], Y_in에서 오프셋 64를 뺀다. - 2: Y_in 전체 범위 [0 ... 1023], Y_in에서 오프셋을 빼지 않는다. |
luma.out | CPROC 휘도 출력 클리핑 범위 | - 1: Y_out 클리핑 범위 [16 … 235], ITU-R BT.601 표준에 따라 16의 오프셋을 Y_out에 더한다. - 2: Y_out 클리핑 범위 [0 … 255], Y_out에서 오프셋을 더하지 않는다. |
saturation | 채도 값 | [0 … 1.9921875] - 기본 값: 1 - 1보다 크면 채도 증가 - 1보다 작으면 채도 감소 |
- IF_CPROC_G_EN
이 매크로 정의는 "cproc.g.en" 문자열과 동일하다.
설명: Color Processing 컨트롤의 활성화/비활성화 상태를 가져온다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 43. Control words for IF_CPROC_G_EN
Control word | Description | Valid Values |
enable | CPROC의 상태 | true false |
- IF_CPROC_S_EN
이 매크로 정의는 "cproc.s.en" 문자열과 동일하다.
설명: Color Processing 컨트롤의 활성화/비활성화 상태를 설정한다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 44. Control words for IF_CPROC_S_EN
Control word | Description | Valid Values |
enable | CPROC의 활성화/비활성화 | true false |
- IF_DEMOSAIC_G_CFG
이 매크로 정의는 "dmsc.g.cfg" 문자열과 동일하다.
설명: Demosaic 컨트롤에 대한 구성 값을 가져온다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 45. Control words for IF_DEMOSAIC_G_CFG
Control word | Description | Valid Values |
mode | Demosaic 모드 | 1: normal 2: bypass |
threshold | Demosaic 임계값 | [0 ... 255] |
- IF_DEMOSAIC_S_CFG
이 매크로 정의는 "dmsc.s.cfg" 문자열과 동일하다.
설명: Demosaic 컨트롤에 대한 구성 값을 설정한다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 46. Control words for IF_DEMOSAIC_S_CFG
Control word | Description | Valid Values |
mode | Demosaic 모드 | 1: normal 2: bypass |
threshold | Demosaic 임계값 | [0 ... 255] |
- IF_DEMOSAIC_G_EN
이 매크로 정의는 "demosaic.g.en" 문자열과 동일하다.
설명: Demosaic 컨트롤의 활성화/비활성화 상태를 가져온다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 47. Control words for IF_DEMOSAIC_G_EN
Control word | Description | Valid Values |
enable | Demosaic 컨트롤의 상태 | true false |
- IF_DEMOSAIC_S_EN
이 매크로 정의는 "demosaic.s.en" 문자열과 동일하다.
설명: Demosaic 컨트롤의 활성화/비활성화 상태를 설정한다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 48. Control words for IF_DEMOSAIC_S_EN
Control word | Description | Valid Values |
enable | Demosaic 컨트롤의 활성화/비활성화 | true false |
- IF_DPCC_G_EN
이 매크로 정의는 "dpcc.g.en" 문자열과 동일하다.
설명: Defect Pixel Cluster Correction 컨트롤의 활성화/비활성화 상태를 가져온다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 49. Control words for IF_DPCC_G_EN
Control word | Description | Valid Values |
enable | Defect Pixel Cluster Correction의 상태 | true false |
- IF_DPCC_S_EN
이 매크로 정의는 "dpcc.s.en" 문자열과 동일하다.
설명: Defect Pixel Cluster Correction 컨트롤의 활성화/비활성화 상태를 설정한다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 50. Control words for IF_DPCC_S_EN
Control word | Description | Valid Values |
enable | Defect Pixel Cluster Correction의 활성화/비활성화 | true false |
- IF_DPF_G_CFG
이 매크로 정의는 "dpf.g.cfg" 문자열과 동일하다.
설명: De-noising Pre-Filter 컨트롤에 대한 구성 값을 가져온다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 51. Control words for IF_DPF_G_CFG
Control word | Description | Valid Values |
gradient | 동적 강도 계산을 위한 기눌기 값 | [0 … 128] |
offset | 동적 강도 계산을 위한 오프셋 값 | [-128 … 128] |
min | 동적 강도 계산을 위한 상한선 | [0 … 128] |
div | 동적 강도 계산을 위한 분할 계수 | [0 … 64] |
sigma.green | GREEN 픽셀의 시그마 값 | [1 … 255] |
sigma.red.blue | RED/BLUE 픽셀의 시그마 값 | [1 … 255] |
- IF_DPF_S_CFG
이 매크로 정의는 "dpf.s.cfg" 문자열과 동일하다.
설명: De-noising Pre-Filter 컨트롤에 대한 구성 값을 설정한다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 52. Control words for IF_DPF_S_CFG
Control word | Description | Valid Values |
gradient | 동적 강도 계산을 위한 기눌기 값 | [0 … 128] |
offset | 동적 강도 계산을 위한 오프셋 값 | [-128 … 128] |
min | 동적 강도 계산을 위한 상한선 | [0 … 128] |
div | 동적 강도 계산을 위한 분할 계수 | [0 … 64] |
sigma.green | GREEN 픽셀의 시그마 값 | [1 … 255] |
sigma.red.blue | RED/BLUE 픽셀의 시그마 값 | [1 … 255] |
- IF_DPF_G_EN
이 매크로 정의는 "dpf.g.en" 문자열과 동일하다.
설명: De-noising Pre-Filter 컨트롤의 활성화/비활성화 상태를 가져온다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 53. Control words for IF_DPF_G_EN
Control word | Description | Valid Values |
enable | De-noising Pre-Filter의 상태 | true false |
- IF_DPF_S_EN
이 매크로 정의는 "dpf.s.en" 문자열과 동일하다.
설명: De-noising Pre-Filter 컨트롤의 활성화/비활성화 상태를 설정한다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 54. Control words for IF_DPF_S_EN
Control word | Description | Valid Values |
enable | De-noising Pre-Filter의 활성화/비활성화 | true false |
- IF_EC_G_CFG
이 매크로 정의는 "ec.g.cfg" 문자열과 동일하다.
설명: Exposure Control에 대한 구성 값을 가져온다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 55. Control words for IF_EC_G_CFG
Control Word | Description | Valid Values |
gain | 노출 게인 | sensor-specific |
gain.min |
최소 게인 | sensor-specific |
gain.max | 최대 게인 | sensor-specific |
time | 노출 시간 | sensor-specific |
inte.min | 최소 노출 시간 | sensor-specific |
inte.max | 최대 노출 시간 | sensor-specific |
- IF_EC_S_CFG
이 매크로 정의는 "ec.s.cfg" 문자열과 동일하다.
설명: Exposure Control에 대한 구성 값을 설정한다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 56. Control words for IF_EC_S_CFG
Control word | Description | Valid Values |
gain | 노출 게인 | sensor-specific |
time | 노출 시간 | sensor-specific |
- IF_EE_G_CFG
이 매크로 정의는 ""ee.g.cfg" 문자열과 동일하다.
설명: Edge Enhancement 컨트롤에 대한 구성 값을 가져온다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 57. Control words for IF_EE_G_CFG
Control Word | Description | Valid Values |
auto | EE 모드 | true false |
config | EE 구성 파라미터 | Edge gain: [0 … 65535] Strength: [0 … 128] UV gain: [0 … 65535] Y gain down: [0 … 65535] Y gain up: [0 … 65535] |
- IF_EE_S_CFG
이 매크로 정의는 "ee.s.cfg" 문자열과 동일하다.
설명: Edge Enhancement 컨트롤에 대한 구성 값을 설정한다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 58. Control words for IF_EE_S_CFG
Control Word | Description | Valid Values |
auto | EE 모드 | true false |
config | EE 구성 파라미터 | Edge gain: [0 … 65535] Strength: [0 … 128] UV gain: [0 … 65535] Y gain down: [0 … 65535] Y gain up: [0 … 65535] |
- IF_EE_G_EN
이 매크로 정의는 ""ee.g.en" 문자열과 동일하다.
설명: Edge Enhancement 컨트롤의 활성화/비활성화 상태를 가져온다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 59. Control words for IF_EE_G_EN
Control word | Description | Valid Values |
enable | Edge Enhancement 컨트롤의 상태 | true false |
- IF_EE_S_EN
이 매크로 정의는 "ee.s.en" 문자열과 동일하다.
설명: Edge Enhancement 컨트롤의 활성화/비활성화 상태를 설정한다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 60. Control words for IF_EE_S_EN
Control word | Description | Valid Values |
enable | Edge Enhancement 컨트롤의 활성화/비활성화 | true false |
- IF_EE_RESET
이 매크로 정의는 "ee.reset" 문자열과 동일하다.
설명: Edge Enhancement 컨트롤의 재설정
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 61. Control words for IF_EE_RESET
Control word | Description | Valid Values |
N/A | - | - |
- IF_EE_S_TBL
이 매크로 정의는 "ee.s.tbl" 문자열과 동일하다.
설명: EE 컨트롤을 설정한다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 62. Control words for IF_EE_S_TBL
Control word | Description | Valid Values |
table | EE 테이블 | 설명 문자열 |
- IF_FILTER_G_CFG
이 매트로 정의는 "filter.g.cfg" 문자열과 동일하다.
설명: Filter 컨트롤에 대한 구성 값을 가져온다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 63. Control words for IF_FILTER_G_CFG
Control word | Description | Valid Values |
auto | 자동 컨트롤 | true false |
denoise | 노이즈 제거 | [0..10] |
sharpen | 선명도 | [0..10] |
- IF_FILTER_S_CFG
이 매크로 정의는 "filter.s.cfg" 문자열과 같다.
설명: Filter 컨트롤에 대한 구성 값을 설정한다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 64. Control words for IF_FILTER_S_CFG
Control word | Description | Valid Values |
auto | 자동 컨트롤 | true false |
denoise | 노이즈 제거 | [0..10] |
sharpen | 선명도 | [0..10] |
- IF_FILTER_G_EN
이 매크로 정의는 "filter.g.en" 문자열과 동일하다.
설명: Filter 컨트롤의 활성화/비활성화 상태를 가져온다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 65. Control words for IF_FILTER_G_EN
Control word | Description | Valid Values |
enable | Filter 컨트롤의 상태 | true false |
- IF_FILTER_S_EN
이 매크로 정의는 "filter.s.en" 문자열과 동일하다.
설명: Filter 컨트롤의 활성화/비활성화 상태
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 66. Control words for IF_FILTER_S_EN
Control word | Description | Valid Values |
enable | Filter 컨트롤의 활성화/비활성화 | true false |
- IF_FILTER_S_TBL
이 매크로 정의는 "filter.s.tbl" 문자열과 동일하다.
설명: Filter 컨트롤 테이블을 설정한다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 67. Control words for IF_FILTER_S_TBL
Control word | Description | Valid Values |
table | Filter 테이블 | 설명 문자열 |
- IF_GC_G_CURVE
이 매크로 정의는 "gc.g.curve" 문자열과 동일하다.
설명: Gamma 컨트롤에 대한 구성 값을 가져온다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 68. Control words for IF_GC_G_CURVE
Control word | Description | Valid Values |
curve | Gamma 커브 | [0 … 1023] |
- IF_GC_S_CURVE
이 매크로 정의는 "gc.s.curve" 문자열과 동일하다.
설명: Gamma 컨트롤에 대한 구성 값을 설정한다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 69. Control words for IF_GC_S_CURVE
Control word | Description | Valid Values |
curve | Gamma 커브 | [0 … 1023] |
- IF_GC_G_CFG
이 매크로 정의는 "gc.g.cfg" 문자열과 동일하다.
설명: Gamma 컨트롤에 대한 구성 값을 가져온다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 70. Control words for IF_GC_G_CFG
Control word | Description | Valid Values |
gc.mode | Gamma Control의 모드 | - 1: logarithmic 모드 - 2: equidistant 모드 |
- IF_GC_S_CFG
이 매크로 정의는 "gc.s.cfg" 문자열과 동일하다.
설명: Gamma 컨트롤에 대한 구성 값을 설정한다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 71. Control words for IF_GC_G_CFG
Control word | Description | Valid Values |
gc.mode | Gamma Control의 모드 | - 1: logarithmic 모드 - 2: equidistant 모드 |
- IF_GC_G_EN
이 매크로 정의는 "gc.g.en" 문자열과 동일하다.
설명: Gamma Control의 활성화/비활성화 상태를 가져온다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 72. Control words for IF_GC_G_EN
Control word | Description | Valid Values |
enable | Gamma Control의 상태 | true false |
- IF_GC_S_EN
이 매크로 정의는 "gc.s.en" 문자열과 동일하다.
설명: Gamma Control의 활성화/비활성화 상태를 설정한다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 73. Control words for IF_GC_S_EN
Control word | Description | Valid Values |
enable | Gamma Control의 활성화/비활성화 | true false |
- IF_HDR_G_CFG
이 매크로 정의는 "hdr.g.cfg" 문자열과 동일하다.
설명: High Dynamic Range 컨트롤의 구성을 가져온다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 74. Control words for IF_HDR_G_CFG
Control word | Description | Valid Values |
extension.bit | 확장 비트 | [0..4] |
exposure.ratio | 노출 비율 | [0..16] |
- IF_HDR_S_CFG
이 매크로 정의는 "hdr.s.cfg" 문자열과 동일하다.
설명: High Dynamic Range 컨트롤의 구성을 설정한다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 75. Control words for IF_HDR_S_CFG
Control word | Description | Valid Values |
extension.bit | 확장 비트 | [0..4] |
exposure.ratio | 노출 비율 | [0..16] |
- IF_HDR_G_EN
이 매크로 정의는 "hdr.g.en" 문자열과 동일하다.
설명: High Dynamic Range 컨트롤의 활성화/비활성화 상태를 가져온다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 76. Control words for IF_HDR_G_EN
Control word | Description | Valid Values |
enable | High Dynamic Range의 상태 | true false |
- IF_HDR_S_EN
이 매크로 정의는 "hdr.s.en" 문자열과 동일하다.
설명: High Dynamic Range 컨트롤의 활성화/비활성화 상태를 설정한다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 77. Control words for IF_HDR_S_EN
Control word | Description | Valid Values |
enable | High Dynamic Range의 활성화/비활성화 | true false |
- IF_HDR_RESET
이 매크로 정의는 "hdr.reset" 문자열과 동일하다.
설명: High Dynamic Range 컨트롤 재설정
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 78. Control words for IF_HDR_RESET
Control word | Description | Valid Values |
N/A | - | - |
- IF_IE_G_CFG
이 매크로 정의는 "ie.g.cfg" 문자열과 동일하다.
설명: Image Effects 컨트롤에 대한 구성 값을 가져온다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 79. Control words for IF_IE_G_CFG
Control Word | Description | Valid Values |
mode | IE 작동 모드 | 1: 128(neutral gray)의 고정 색차를 설정한다. 2: 휘도와 색차 데이터가 반전되어 있다. 3: 색차가 변화되어 브라운 계열 이미지 컬러와 고전적인 이미지를 연출한다. 4: 하나의 색상 컴포넌트를 유지하면서 그림을 회색조로 변환한다. 5: 에지 검출, 금속으로 만든 양각처럼 보인다. 6: 에지 검출, 연필 그림처럼 보인다. 7: 에지 검출, 선명한 그림처럼 보인다. |
range | Image Effects 구성 범위 | 1: BT.601에 따른 픽셀 값의 범위 2: YCbCr 전체 범위 [0 … 255] |
config | Image Effects 구성 | -- |
tint.cb | 세피아 모드의 Sepia Tint Cb | [0 … 255] |
tint.cr | 세피아 모드의 Sepia Tint Cr | [0 … 255] |
selection | 색상 모드의 색상 선택 | 1: red, green, blue 2: blue 3: green 4: green, blue 5: red 6: red, blue 7: red, green |
threshold | 색상 모드의 색상 임계값 | [0 … 255] |
emboss:coeff | 엠보싱 모드의 계수 | [-128 … 127] |
sketch:coeff | 스케치 모드의 계수 | [-128 … 127] |
sharpen:factor | 선명 모드의 인수 | [0 … 255] |
sharpen:threshold | 선명 모드의 임계값 | [0 … 255] |
sharpen:coeff | 선명 모드의 계수 | [-128 … 127] |
- IF_IE_S_CFG
이 매크로 정의는 "ie.s.cfg" 문자열과 동일하다.
설명: Image Effects 컨트롤에 대한 구성 값을 설정한다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 80. Control words for IF_IE_S_CFG
Control Word | Description | Valid Values |
mode | IE 작동 모드 | 1: 128(neutral gray)의 고정 색차를 설정한다. 2: 휘도와 색차 데이터가 반전되어 있다. 3: 색차가 변화되어 브라운 계열 이미지 컬러와 고전적인 이미지를 연출한다. 4: 하나의 색상 컴포넌트를 유지하면서 그림을 회색조로 변환한다. 5: 에지 검출, 금속으로 만든 양각처럼 보인다. 6: 에지 검출, 연필 그림처럼 보인다. 7: 에지 검출, 선명한 그림처럼 보인다. |
range | Image Effects 구성 범위 | 1: BT.601에 따른 픽셀 값의 범위 2: YCbCr 전체 범위 [0 … 255] |
config | Image Effects 구성 | -- |
tint.cb | 세피아 모드의 Sepia Tint Cb | [0 … 255] |
tint.cr | 세피아 모드의 Sepia Tint Cr | [0 … 255] |
selection | 색상 모드의 색상 선택 | 1: red, green, blue 2: blue 3: green 4: green, blue 5: red 6: red, blue 7: red, green |
threshold | 색상 모드의 색상 임계값 | [0 … 255] |
emboss:coeff | 엠보싱 모드의 계수 | [-128 … 127] |
sketch:coeff | 스케치 모드의 계수 | [-128 … 127] |
sharpen:factor | 선명 모드의 인수 | [0 … 255] |
sharpen:threshold | 선명 모드의 임계값 | [0 … 255] |
sharpen:coeff | 선명 모드의 계수 | [-128 … 127] |
- IF_IE_G_EN
이 매크로 정의는 "ie.g.en" 문자열과 동일하다.
설명: Image Effects 컨트롤의 활성화/비활성화 상태를 가져온다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 81. Control words for IF_IE_G_EN
Control word | Description | Valid Values |
enable | Image Effects 컨트롤의 상태 | true false |
- IF_IE_S_EN
이 매크로 정의는 "ie.s.en" 문자열과 동일하다.
설명: Image Effects 컨트롤의 활성화/비활성화 상태를 설정한다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 82. Control words for IF_IE_S_EN
Control word | Description | Valid Values |
enable | Image Effects 컨트롤의 활성화/비활성화 | true false |
- IF_LSC_G_EN
이 매크로 정의는 "lsc.g.en" 문자열과 동일하다.
설명: Lens Shade Correction 컨트롤의 활성화/비활성화 상태를 가져온다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 83. Control words for IF_LSC_G_EN
Control word | Description | Valid Values |
enable | Lens Shade Correction의 상태 | true false |
- IF_LSC_S_EN
이 매크로 정의는 "lsc.s.en" 문자열과 동일하다.
설명: Lens Shade Correction 컨트롤의 활성화/비활성화 상태를 설정한다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 84. Control words for IF_LSC_S_EN
Control word | Description | Valid Values |
enable | Lens Shade Correction의 활성화/비활성화 | true false |
- IF_2DNR_G_CFG
이 매크로 정의는 "2dnr.g.cfg" 문자열과 동일하다.
설명: 2DNR 컨트롤에 대한 구성 값을 가져온다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 85. Control words for IF_2DNR_G_CFG
Control Word | Description | Valid Values |
generation | 2DNR 생성 | [0 … 2] |
auto |
3DNR(?:2DNR 일수도) 실행 모드 | true false |
denoise.pregama.strength | 잡음 제거 사전 강도 | [0, 1] |
denoise.strength | 강도 구성 | [0 … 100] |
sigma | 시그마 강도 | [0 … 100] |
- IF_2DNR_S_CFG
이 매크로 정의는 "2dnr.s.cfg" 문자열과 동일하다.
설명: 2DNR 컨트롤에 대한 구성 값을 설정한다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 86. Control words for IF_2DNR_S_CFG
Control Word | Description | Valid Values |
generation | 2DNR 생성 | [0 … 2] |
auto |
3DNR(?:2DNR 일수도) 실행 모드 | true false |
denoise.pregama.strength | 잡음 제거 사전 강도 | [0, 1] |
denoise.strength | 강도 구성 | [0 … 100] |
sigma | 시그마 강도 | [0 … 100] |
- IF_2DNR_G_EN
이 매크로 정의는 "2dnr.g.en" 문자열과 동일하다.
설명: 2DNR 컨트롤의 활성화/비활성화 상태를 가져온다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 87. Control words for IF_2DNR_G_EN
Control Word | Description | Valid Values |
enable | 2DNR의 상태 | true false |
generation | 2DNR 생성 | [0 … 2] |
- IF_2DNR_S_EN
이 매크로 정의는 "2dnr.s.en" 문자열과 동일하다.
설명: 2DNR 컨트롤의 활성화/비활성화 상태를 설정한다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 88. Control words for IF_2DNR_S_EN
Control Word | Description | Valid Values |
enable | 2DNR의 활성화/비활성화 | true false |
generation | 2DNR 생성 | [0 … 2] |
- IF_2DNR_RESET
이 매크로 정의는 "2dnr.reset" 문자열과 동일하다.
설명: 2DNR 컨트롤 재설정
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 89. Control words for IF_2DNR_RESET
Control word | Description | Valid Values |
generation | NR2D 생성 | [0 … 2] |
- IF_2DNR_S_TBL
이 매크로 정의는 "2dnr.s.tbl" 문자열과 동일하다.
설명: 2DNR 컨트롤의 테이블 설정
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 90. Control words for IF_2DNR_S_TBL
Control word | Description | Valid Values |
table | 2DNR 테이블 | 설명 문자열 |
- IF_3DNR_G_CFG
이 매크로 정의는 "3dnr.g.cfg" 문자열과 동일하다.
설명: 3DNR 컨트롤에 대한 구성 값을 가져온다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 91. Control words for IF_3DNR_G_CFG
Control Word | Description | Valid Values |
generation | 3DNR 생성 | [0 … 2] |
auto | 3DNR 실행 모드 | true false |
strength | 3DNR 강도 | [0 … 128] |
delta.factor | 델타 팩터 값 | [0 … 1023] |
motion.factor | 모션 팩터 값 | [0 … 1000000] |
- IF_3DNR_S_CFG
이 매크로 정의는 "3dnr.s.cfg" 문자열과 동일하다.
설명: 3DNR 컨트롤에 대한 구성 값을 설정한다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 92. Control words for IF_3DNR_S_CFG
Control Word | Description | Valid Values |
generation | 3DNR 생성 | [0 … 2] |
auto | 3DNR 실행 모드 | true false |
strength | 3DNR 강도 | [0 … 128] |
delta.factor | 델타 팩터 값 | [0 … 1023] |
motion.factor | 모션 팩터 값 | [0 … 1000000] |
- IF_3DNR_G_EN
이 매크로 정의는 "3dnr.g.en" 문자열과 동일하다.
설명: 3DNR 컨트롤의 활성화/비활성화 상태를 가져온다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 93. Control words for IF_3DNR_G_EN
Control Word | Description | Valid Values |
enable | 3DNR의 상태 | true false |
generation | 3DNR 생성 | [0 … 2] |
- IF_3DNR_S_EN
이 매크로 정의는 "3dnr.s.en" 문자열과 동일하다.
설명: 3DNR 컨트롤의 활성화/비활성화 상태를 설정한다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 94. Control words for IF_3DNR_S_EN
Control Word | Description | Valid Values |
enable | 3DNR의 활성화/비활성화 | true false |
generation | 3DNR 생성 | [0 … 2] |
- IF_3DNR_RESET
이 매크로 정의는 "3dnr.reset" 문자열과 동일하다.
설명: 3DNR 컨트롤 재설정
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 95. Control words for IF_3DNR_RESET
Control word | Description | Valid Values |
generation | NR3D 생성 | [0 … 2] |
- IF_3DNR_S_TBL
이 매크로 정의는 "3dnr.s.tbl" 문자열과 동일하다.
설명: 3DNR 컨트롤의 테이블 설정
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 96. Control words for IF_3DNR_S_TBL
Control word | Description | Valid Values |
table | 3DNR 테이블 | 설명 문자열 |
generation | 3DNR 생성 | [0 … 2] |
- IF_WDR_G_CFG
이 매크로 정의는 "wdr.g.cfg" 문자열과 동일하다.
설명: WDR 컨트롤에 대한 구성 값을 가져온다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 97. Control words for IF_WDR_G_CFG
Control Word | Description | Valid Values |
generation | WDR 생성 | [0 … 2] |
curve | WDR1 커브 값 | [tone mapping curve values] |
auto | WDR3 실행 모드 | true false |
strength | WDR2나 WDR3의 강도 | [0, 128] |
gain.max | WDR3 최대 게인 | [0, 128] |
strength.global | WDR3 전역 강도 | [0, 128] |
- IF_WDR_S_CFG
이 매크로 정의는 "wdr.s.cfg" 문자열과 동일하다.
설명: WDR 컨트롤에 대한 구성 값을 설정한다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 98. Control words for IF_WDR_S_CFG
Control Word | Description | Valid Values |
generation | WDR 생성 | [0 … 2] |
curve | WDR1 커브 값 | [tone mapping curve values] |
auto | WDR3 실행 모드 | true false |
strength | WDR2나 WDR3의 강도 | [0, 128] |
gain.max | WDR3 최대 게인 | [0, 128] |
strength.global | WDR3 전역 강도 | [0, 128] |
- IF_WDR_G_EN
이 매크로 정의는 "wdr.g.en" 문자열과 동일하다.
설명: WDR 컨트롤의 활성화/비활성화 상태를 가져온다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 99. Control words for IF_WDR_G_EN
Control Word | Description | Valid Values |
enable | WDR의 상태 | true false |
generation | WDR 생성 | [0 … 2] |
- IF_WDR_S_EN
이 매크로 정의는 "wdr.s.en" 문자열과 동일하다.
설명: WDR 컨트롤의 활성화/비활성화 상태를 설정한다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 100. Control words for IF_WDR_S_EN
Control Word | Description | Valid Values |
enable | WDR의 활성화/비활성화 | true false |
generation | WDR 생성 | [0 … 2] |
- IF_WDR_RESET
이 매크로 정의는 "wdr.reset" 문자열과 동일하다.
설명: WDR 컨트롤 재설정
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 101. Control words for IF_WDR_RESET
Control word | Description | Valid Values |
generation | WDR 생성 | [0 … 2] |
- IF_WDR_S_TBL
이 매크로 정의는 "wdr.s.tbl" 문자열과 동일하다.
설명: WDR 컨트롤의 테이블 설정
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 102. Control words for IF_WDR_S_TBL
Control word | Description | Valid Values |
table | WDR 테이블 | 설명 문자열 |
generation | WDR 생성 | [0 … 2] |
- IF_WB_G_CFG
이 매크로 정의는 "wb.g.cfg" 문자열과 동일하다.
설명: WB 컨트롤에 대한 구성 값을 가져온다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 103. Control words for IF_WB_G_CFG
Control Word | Description | Valid Values |
matrix | 매트릭스 | [<matrix values>] |
offset | 오프셋 | [-2048, 2047] |
red | Cc offset red | [-2048, 2047] |
green | Cc offset green | [-2048, 2047] |
blue | Cc offset blue | [-2048, 2047] |
red | WB gains red | [0.000, 3.999] |
green.r | WB gains green.r | [0.000, 3.999] |
green.b | WB gains green.b | [0.000, 3.999] |
blue | WB gains blue | [0.000, 3.999] |
wb.gains | WB gains | [0.000, 3.999] |
- IF_WB_S_CFG
이 매크로 정의는 "wb.s.cfg" 문자열과 동일하다.
설명: WB 컨트롤에 대한 구성 값을 설정한다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 104. Control words for IF_WB_S_CFG
Control Word | Description | Valid Values |
matrix | 매트릭스 | [<matrix values>] |
offset | 오프셋 | [-2048, 2047] |
red | Cc offset red | [-2048, 2047] |
green | Cc offset green | [-2048, 2047] |
blue | Cc offset blue | [-2048, 2047] |
red | WB gains red | [0.000, 3.999] |
green.r | WB gains green.r | [0.000, 3.999] |
green.b | WB gains green.b | [0.000, 3.999] |
blue | WB gains blue | [0.000, 3.999] |
wb.gains | WB gains | [0.000, 3.999] |
3.2.5.4 Dewarp control words
참고
디워프 기능이 있는 하드웨어가 필요하다.
- IF_DWE_S_PARAMS
이 매크로 정의는 "dwe.s.params" 문자열과 동일하다.
설명: 디워프 파라미터를 설정한다. 입력 형식, 출력 형식, ROI, 스케일, 분할, 디워프 유형 등이 있다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 105. Control Words for IF_DWE_S_PARAMS
Control Word | Description | Valid Values |
dwe | 디워프 노드 가져오기 | 노드 설명 문자열 |
mode | 디워프 유형 | 1: 렌즈 왜곡 2: 어안(fisheye) 확장 3: 분할 화면 4: 어안 디워프 |
hflip | 수평 플립 설정 | true false |
vflip | 수직 플립 설정 | true false |
bypass | 우회 디워프 | true false |
mat | 카메라 매트릭스 [0-8] 왜곡 계수 [9-16] |
보정 필요 |
- IF_DWE_G_PARAMS
이 매크로 정의는 "dwe.g.params" 문자열과 동일하다.
설명: 디워프 파라미터를 가져온다. 입력 형식, 출력 형식, ROI, 스케일, 분할, 디워프 유형 등이 있다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 106. Control words for IF_DWE_G_PARAMS
Control Word | Description | Valid Values |
dwe | 디워프 노드 가져오기 | 노드 설명 문자열 |
mode | 디워프 유형 | 1: 렌즈 왜곡 2: 어안(fisheye) 확장 3: 분할 화면 4: 어안 디워프 |
hflip | 수평 플립 설정 | true false |
vflip | 수직 플립 설정 | true false |
bypass | 우회 디워프 | true false |
mat | 카메라 매트릭스 [0-8] 왜곡 계수 [9-16] |
보정 필요 |
- IF_DWE_S_HFLIP
이 매크로 정의는 "dwe.s.hflip" 문자열과 동일하다.
설명: 이미지의 수평 플립 파라미터를 설정한다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 107. Control words for IF_DWE_S_HFLIP
Control Word | Description | Valid Values |
dwe | 디워프 노드 가져오기 | 노드 설명 문자열 |
hflip |
수평 플립 설정 | true false |
- IF_DWE_S_VFLIP
이 매크로 정의는 "dwe.s.vflip" 문자열과 동일하다.
설명: 이미지 수직 플립 파라미터를 설정한다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 108. Control words for IF_DWE_S_VFLIP
Control Word | Description | Valid Values |
dwe | 디워프 노드 가져오기 | 노드 설명 문자열 |
vflip |
수직 플립 설정 | true false |
- IF_DWE_S_BYPASS
이 매크로 정의는 "dwe.s.bypass" 문자열과 동일하다.
설명: 드워프 우회를 설정한다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 109. Control words for IF_DWE_S_BYPASS
Control Word | Description | Valid Values |
dwe | 디워프 노드 가져오기 | 노드 설명 문자열 |
bypass | 드워프 우회 | true false |
- IF_DWE_S_MODE
이 매크로 정의는 "dwe.s.mode" 문자열과 동일하다.
설명: 드워프 모드 인덱스를 설정한다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 110. Control words for IF_DWE_S_MODE
Control Word | Description | Valid Values |
mode | 센서 모드 인덱스 | Sensor-specific |
dwe | 디워프 노드 가져오기 | true false |
- IF_DWE_S_MAT
이 매크로 정의는 "dwe.s.mat" 문자열과 동일하다.
설명: 카메라 매트릭스와 왜곡 계수를 설정한다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 111. Control words for IF_DWE_S_MAT
Control Word | Description | Valid Values |
dwe | 디워프 노드 가져오기 | 노드 설명 문자열 |
mat | 카메라 매트릭스 [0-8] 왜곡 계수 [9-16] |
보정 필요 |
- IF_DWE_S_TYPE
이 매크로 정의는 "dwe.s.type" 문자열과 동일하다.
설명: 디워프 유형을 설정한다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 112. Control words for IF_DWE_S_TYPE
Control Word | Description | Valid Values |
type | 디워프 유형 | 1: 렌즈 왜곡 2: 어안(fisheye) 확장 3: 분할 화면 4: 어안 디워프 |
dwe | 디워프 노드 가져오기 | 노드 설명 문자열 |
- VIV_V4L_DWE_SET_CROP
설명: 이미지를 크롭한다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 113. Control words for VIV_V4L_DWE_SET_CROP
Control Word | Description | Valid Values |
crop | 크롭 노드 가져오기 | 노드 설명 문자열 |
start_x | X 축의 시작 위치 | Sensor-specific |
start_y | Y 축의 시작 위치 | Sensor-specific |
width | 크롭 너비 | Sensor-specific |
height | 크롭 높이 | Sensor-specific |
- VIV_V4L_DWE_SET_SCALE
설명: 이미지를 스케일한다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 114. Control words for VIV_V4L_DWE_SET_SCALE
Control Word | Description | Valid Values |
scale | 스케일 노드 가져오기 | 노드 설명 문자열 |
start_x | X 축의 시작 위치 | Sensor-specific |
start_y | Y 축의 시작 위치 | Sensor-specific |
width | 스케일 너비 | Sensor-specific |
height | 스케일 높이 | Sensor-specific |
3.2.5.5 Sensor Control Words
- IF_SENSOR_QUERY
이 매크로 정의는 "sensor.query" 문자열과 동일하다.
설명: 센서 정보를 쿼리한다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 115. Control words for Sensor Control Words
Control Word | Description | Valid Values |
current | 센서의 현재 모드 | Sensor-specific |
default | 센서의 기본 모드 | Sensor-specific |
index | 센서 인덱스 | Sensor-specific |
width | 해상도 너비 | Sensor-specific |
height | 해상도 높이 | Sensor-specific |
fps | 센서에서 지원하는 최대 프레임 속도 | Sensor-specific |
hdr_mode | 모드는 센서 인덱스에 해당 | Sensor-specific |
bit_width | 센서에서 지원하는 비트 너비 | Sensor-specific |
bayer_pattern | 센서에서 지원하는 Bayer 패턴 | Sensor-specific |
stitching_mode | 센서에서 지원하는 스티칭 모드 | Sensor-specific |
- IF_SENSOR_G_MODE
이 매크로 정의는 "sensor.g.mode" 문자열과 동일하다.
설명: 센서의 현재 모드를 가져온다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 116. Control words for IF_SENSOR_G_MODE
Control word | Description | Valid Values |
mode | 센서의 현재 모드 | Sensor-specific |
- IF_SENSOR_S_MODE
이 매크로 정의는 "sensor.s.mode" 문자열과 동일하다.
설명: 센서 모드를 설정한다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 117. Control words for IF_SENSOR_S_MODE
Control word | Description | Valid Values |
mode | 센서의 모드 인덱스 | Sensor-specific |
CalibXmlName | 보정 파일 이름 | Sensor-specific |
- IF_SENSOR_G_RESW
이 매크로 정의는 "sensor.g.resw" 문자열과 동일하다.
설명: 센서 해상도의 너비를 가져온다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 118. Control words for IF_SENSOR_G_RESW
Control word | Description | Valid Values |
resw | 해상도 너비 | Sensor-specific |
- IF_SENSOR_G_RESH
이 매크로 정의는 "sensor.g.resh" 문자열과 동일하다.
설명: 센서 해상도의 높이를 가져온다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 119. Control words for IF_SENSOR_G_RESH
Control word | Description | Valid Values |
resh | 해상도 높이 | Sensor-specific |
- IF_SENSOR_G_REG
이 매크로 정의는 "sensor.g.reg" 문자열과 동일하다.
설명: 센서 레지스터 값을 가져온다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 120. Control words for IF_SENSOR_G_REG
Control word | Description | Valid Values |
value | 레지스터 값 | Sensor-specific |
address | 레지스터 주소 | Sensor-specific |
- IF_SENSOR_S_REG
이 매크로 정의는 "sensor.s.reg" 문자열과 동일하다.
설명: 센서 레지스터 값을 설정한다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 121. Control words for IF_SENSOR_S_REG
Control word | Description | Valid Values |
value | 레지스터 값 | Sensor-specific |
address | 레지스터 주소 | Sensor-specific |
- IF_S_FPS
이 매크로 정의는 "s.fps" 문자열과 동일하다.
설명: 센서 프레임 속도를 설정한다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 122. Control words for IF_S_FPS
Control word | Description | Valid Values |
fps | 센서 프레임 속도 | Sensor-specific |
- IF_SENSOR_LIB_PRELOAD
이 매크로 정의는 "sensor.lib.preload" 문자열과 동일하다.
설명: 센서 보정 파일을 로드한다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 123. Control words for IF_SENSOR_LIB_PRELOAD
Control word | Description | Valid Values |
N/A | - | - |
- IF_SENSOR_G_SEC
이 매크로 정의는 "sensor.g.sec" 파일과 동일하다.
설명: 센서 노출 시작을 가져온다(IntegrationTime x Gain).
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 124. Control words for IF_SENSOR_G_SEC
Control word | Description | Valid Values |
exposure | AE 노출 시작 = IntegrationTime x Gain | 실수 값 |
- IF_SENSOR_S_SEC
이 매크로 정의는 "sensor.s.sec" 문자열과 동일하다.
참고 : 이 함수를 호출하느 것은 스트림이 켜지기 전에만 유효하다.
설명: 센서 노출 시작을 설정한다(IntegrationTime x Gain).
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 125. Control words for IF_SENSOR_S_SEC
Control word | Description | Valid Values |
exposure | AE 노출 시작 = IntegrationTime x Gain | 실수 값 |
- IF_SENSOR_S_TESTPAT
이 매크로 정의는 "sensor.s.testpat" 문자열과 동일하다.
설명: 센서 테스트 패턴을 설정한다.
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 126. Control words for IF_SENSOR_S_TESTPAT
Control word | Description | Valid Values |
test.pattern | 센서 테스트 패턴 모드 | 0: 일반 모드 다른 값: 테스트 패턴 모드 값 |
3.2.5.6 Pipeline Control Words
- IF_PIPELINE_S_WARM_UP
이 매크로 정의는 "pipeline.s.warm.up" 문자열과 동일하다.
설명: 파이프라인 워밍업
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 127. Control words for IF_PIPELINE_S_WARM_UP
Control word | Description | Valid Values |
N/A | - | - |
- IF_PIPELINE_S_SMP_MODE
이 매크로 정의는 "pipeline.s.smp.mode" 문자열과 동일하다.
설명: 향후를 의해 예약됨 - IF_PIPELINE_S_DWE_ONOFF
이 매크로 정의는 "pipeline.s.dwe.onoff" 문자열과 동일하다.
설명: DEWARP 활성화/비활성화
파라미터:
- Json::Value &jRequest
- Json::Value &jResponse
Table 128. Control words for IF_PIPELINE_S_DWE_ONOFF
Control word | Description | Valid Values |
enable | 디워프 활성화/비활성화 | true false |
- IF_PIPELINE_S_TESTPAT
이 매크로 정의는 "pipeline.s.testpat" 문자열과 동일하다.
설명: 향후를 위해 예약됨 - IF_PIPELINE_S_RES_IS_OUT
이 매크로 정의는 "pipeline.s.res.is.out" 문자열과 동일하다.
설명: 향후를 위해 예약됨 - IF_PIPELINE_S_RES_MP_OUT
이 매크로 정의는 "pipeline.s.res.mp.out" 문자열과 동일하다.
설명: 향후를 위해 예약됨 - IF_PIPELINE_S_MP_FMT
이 매크로 정의는 "pipeline.s.mp.fmt" 문자열과 동일하다.
설명: 향후를 위해 예약됨 - IF_PIPELINE_QUERY
이 매크로 정의는 "pipeline.query" 문자열과 동일하다.
설명: 향후를 위해 예약됨 - IF_PIPELINE_CFG_STATUS
이 매크로 정의는 "pipeline.cfg.status" 문자열과 동일하다.
설명: 향후를 위해 예약됨
3.3 ISP software V4L2 programming overview
3.3.1 General concept
ISP V4L2 소프트웨어 스택의 상위 수준 다이어그램은 Figure 12에 나와 있다.
3.3.2 V4L2 kernel driver block diagram
ISP는 파일 구조에 일부 디바이스 노드를 제공한다. 사용자는 해당 디바이스 노드를 통해 해당 디바이스를 작동할 수 있다.
Table 129. ISP device nodes
Device node/driver | Description |
---|---|
/dev/mediax | 비디오 디바이스와 하위 디바이스를 열거한다. |
/dev/videox |
enqueue/dequeue 버퍼 및 enqueue/dequeue 이벤트와 같은 스트림 관련 작업과 이벤트를 관리한다. |
/dev/v4l2-subdevx | 버퍼 관리와 MIPI/Sensor와 같은 카메라 관련 하드웨어를 제어한다. |
/dev/xx | 비공개 인터페이스를 제어하고 명령, 이벤트 등을 디스패치한다. |
V4L2 kernel driver | V4L2_device와 video_device를 등록하고 video_device와 vb2_queue에서 작동 함수를 구현한다. |
ISP kernel driver | ISP 커널 드라이버 레지스터 읽기/쓰기 등을 구현한다. |
3.3.3 V4L2 third-party user application and ISP stack communication
V4L2 타사 사용자 애플리케이션은 V4L2 표준 컨트롤 단어(문자열)와 V4L2 확장 컨트롤 커맨드를 사용하여 커널과 직접 통신한다. 모든 사용자 애플리케이션의 컨트롤은 V4L2 커널 드라이버가 있는 커널 공간으로 전달된다.
V4L2 커널 드라이버는 V4L2 사용자 애플리케이션의 API 명령과 요청을 처리한다. ISP 소프트웨어 스택과 통신하고 V4L2 사용자 애플리케이션에 이미지 버퍼를 전달한다.
이벤트와 버퍼를 처리하는 서브 모듈:
- Event Queue: ISP 독점 소프트웨어와 이벤트 보내기/받기
- Buffer Queue: vb2 버퍼를 관리
3.3.4 ISP V4L2 buffer management
Table 130과 Figure 15에 설명된 세 가지 메모리 유형이 있다.
Table 130. Memory types and buffer allocation
Memory type | Buffer allocation | Behavior |
---|---|---|
USERPTR | 사용자 공간 | 사용자 공간과 커널 공간은 버퍼 포인터로 메모리를 공유한다. |
MMAP | 커널 공간 | 커널 공간에서 포인터를 가져오기 위해 사용자 공간에서 mmap을 호출한다. |
DMABUF | 커널 공간 | 사용자 공간은 파일 디스크립터를 사용하여 버퍼를 가져온다. |
참고
USERPTR 모드는 지원되지 않는다.
3.3.5 ISP proprietary software stack
카메라 매니저는 커널에 대한 메세지를 수신하고 처리를 위해 해당 서브 모듈에 이러한 이벤트를 디스패치한다.
3.4 Arbitrary Resolution Control
3.4.1 Introduction to Arbitrary Resolution
모든 해상도는 최소 해상도가 176x144이고 최대 해상도가 센서 출력 해상도로 제한된다(센서 사양 참조). 형식 정보를 설정하는 VIDIOC_S_FMT IOCTL은 너비 16, 높이 8로 정렬되어야 한다.
이미지의 출력 흐름은 위에 있는 그림과 같다. Dewarp 출력을 사용하면, ISP Scale Down 이후의 데이터를 Dewarp 모듈의 입력으로 사용한다. 따라서 Dewarp 보정 파라미터는 Dewarp 입력 이미지의 크기에 따라 보정되어야 한다. 해당하는 해상도의 보정 파라미터가 없는 경우, 시스템은 기존 보정 파라미터에 따라 현재 해상도의 보정 파라미터를 조정한다. 이 경우 변환된 보정 데이터는 원래의 보정 데이터만큼 정확하지 않다. 따라서 사용되는 모든 해상도를 보정하고 보정 데이터의 결과를 Dewarp 구성 파일에 추가하는 것이 좋다.
3.4.2 Dewarp Calibration
이 섹션에서는 ISP + Dewarp IP 구성에 대한 Dewarp 보정에 대해 설명한다. ISP 전용의 경우에는 적용되지 않는다.
Dewarp Calibration을 위해 다음 단계를 수행한다:
- 기본 구성 세트를 사용하고 Dewarp 바이패스를 활성화한다.
{ "dewarpConfigArray" :[ { "source_image":{ "width" : 1920, "height" : 1080 }, "?dewarpType": "LENS_CORRECTION, FISHEYE_EXPAND, SPLIT_SCREEN", "dewarpType": "FISHEYE_DEWARP", "scale": { "roix" : 0, "roiy" : 0, "factor" : 1.0 }, "split": { "horizon_line" : 540, "vertical_line_up" : 960, "vertical_line_down": 960 }, "bypass" : true, "hflip" : false, "vflip" : false, "camera_matrix" : [6.5516074404594690e+002,0.0, 9.6420599053623062e+002, 0.0,6.5552406676868952e+002,5.3203601317192908e+002,0.0,0.0,1.0], "distortion_coeff": [-2.2095698671518085e-002,3.8543889520066955e-003,- 5.9060355970132873e-003,1.9007362178503509e-003,0.0,0.0,0.0,0.0], "perspective" : [1.0, 0, 0, 0, 1, 0, 0, 0, 1] } ]
- YUV 이미지를 캡처한다. 예를 들어 비디오 테스트는 720p YUYV 이미지를 캡처하는 데 사용된다:
./isp_media_server CAMERA0 & ./video_test -w 1280 -h 720 -f YUYV -t 2 -m0 -d0
- 온라인에서 YUV to JPEG 이미지 변환 도구를 사용하여 YUV 이미지를 JPEG 이미지로 변환한다.
- JPEG 이미지와 Dewarp Calibration Tool를 사용하여, Dewarp 보정 데이터를 가져온다. 자세한 정보는 Vivante.DW.Calibration.Tool 문서를 참조한다.
- Dewarp 구성 파일에 Dewarp 보정 데이터를 추가한다.
{ "dewarpConfigArray" :[ { "source_image":{ "width" : 1920, "height" : 1080 }, "?dewarpType": "LENS_CORRECTION, FISHEYE_EXPAND, SPLIT_SCREEN", "dewarpType": "FISHEYE_DEWARP", "scale": { "roix" : 0, "roiy" : 0, "factor" : 1.0 }, "split": { "horizon_line" : 540, "vertical_line_up" : 960, "vertical_line_down": 960 }, "bypass" : false, "hflip" : false, "vflip" : false, "camera_matrix" : [6.5516074404594690e+002,0.0, 9.6420599053623062e+002, 0.0,6.5552406676868952e+002,5.3203601317192908e+002,0.0,0.0,1.0], "distortion_coeff": [-2.2095698671518085e-002,3.8543889520066955e-003,- 5.9060355970132873e-003,1.9007362178503509e-003,0.0,0.0,0.0,0.0], "perspective" : [1.0, 0, 0, 0, 1, 0, 0, 0, 1] } { "source_image":{ "width" : 1280, "height" : 720 }, "?dewarpType": "LENS_CORRECTION, FISHEYE_EXPAND, SPLIT_SCREEN", "dewarpType": "FISHEYE_DEWARP", "scale": { "roix" : 0, "roiy" : 0, "factor" : 1.0 }, "split": { "horizon_line" : 540, "vertical_line_up" : 960, "vertical_line_down": 960 }, "bypass" : false, "hflip" : false, "vflip" : false, "camera_matrix" : [4.367738293639646e+002,0.0, 6.4280399369082041e+002, 0.0,4.3701604451245968e+002,3.5469067544795272e+002,0.0,0.0,1.0], "distortion_coeff": [-2.2095698671518085e-002,3.8543889520066955e-003, -5.9060355970132873e-003,1.9007362178503509e-003,0.0,0.0,0.0,0.0], "perspective" : [1.0, 0, 0, 0, 1, 0, 0, 0, 1] } ] }