camera_info 구조체 참조
#include <
camera_common.h
>
데이터 필드 |
|
int | facing |
int | 방향 |
uint32_t | device_version |
const camera_metadata_t * | static_camera_characteristics |
int | resource_cost |
char ** | conflicting_devices |
size_t | conflicting_devices_length |
상세 설명
camera_common.h FILE의 161 라인에 정의가 있습니다.
필드 문서
char** conflicting_devices |
이 카메라 기기가 사용 중일 때 동시에 열 수 없는 다른 기기를 나타내는 NULL 종료 문자열로 표시되는 카메라 기기 ID 배열입니다.
이 필드는 이 카메라 기기가 다른 여러 카메라 기기의 합성물임을 나타내거나 동시 사용을 금지하는 하드웨어 종속 항목이 있음을 나타내는 데 사용됩니다. 종속 항목이 없는 경우 이를 나타내기 위해 이 필드에 NULL이 반환될 수 있습니다.
이 카메라 기기가 열려 있는 동안 카메라 서비스는 이 목록에 있는 기기를 동시에 열지 않습니다.
이 필드에서 가리키는 문자열은 카메라 서비스에서 정리하지 않으며 이 기기가 연결되어 있는 동안 유지되어야 합니다.
버전 정보 (camera_module_t.common.module_api_version 기반):
CAMERA_MODULE_API_VERSION_2_3 이하:
유효하지 않습니다. NULL로 가정할 수 있습니다. 이 필드는 읽지 마세요.
CAMERA_MODULE_API_VERSION_2_4 이상:
항상 유효합니다.
camera_common.h FILE의 404 라인에 정의되어 있습니다.
size_t conflicting_devices_length |
conflicting_devices 필드에 지정된 배열의 길이입니다.
버전 정보 (camera_module_t.common.module_api_version 기반):
CAMERA_MODULE_API_VERSION_2_3 이하:
유효하지 않습니다. 0으로 가정할 수 있습니다. 이 필드는 읽지 마세요.
CAMERA_MODULE_API_VERSION_2_4 이상:
항상 유효합니다.
camera_common.h 파일의 419 줄에 정의되어 있습니다.
uint32_t device_version |
camera_device_t.common.version의 값입니다.
버전 정보 (camera_module_t.common.module_api_version 기반):
CAMERA_MODULE_API_VERSION_1_0:
유효하지 않습니다. CAMERA_DEVICE_API_VERSION_1_0으로 간주할 수 있습니다. 이 필드는 읽지 마세요.
CAMERA_MODULE_API_VERSION_2_0 이상:
항상 유효함
camera_common.h FILE의 219 라인에 정의되어 있습니다.
int facing |
카메라가 향하는 방향입니다. 카메라 방향 정의는 system/core/include/system/camera.h를 참고하세요.
버전 정보 (camera_module_t.common.module_api_version 기반):
CAMERA_MODULE_API_VERSION_2_3 이하:
CAMERA_FACING_BACK 또는 CAMERA_FACING_FRONT여야 합니다.
CAMERA_MODULE_API_VERSION_2_4 이상:
CAMERA_FACING_BACK, CAMERA_FACING_FRONT 또는 CAMERA_FACING_EXTERNAL이어야 합니다.
camera_common.h FILE의 177 행에 정의되어 있습니다.
int orientation |
카메라 이미지의 방향입니다. 이 값은 카메라 이미지가 자연스러운 방향으로 디스플레이에 올바르게 표시되도록 시계 방향으로 회전해야 하는 각도입니다. 0, 90, 180, 270이어야 합니다.
예를 들어 기기의 화면이 자연스럽게 길다고 가정해 보겠습니다. 후면 카메라 센서는 가로 모드로 장착되어 있습니다. 화면을 보고 있습니다. 카메라 센서의 상단이 자연스러운 방향에서 화면의 오른쪽 가장자리와 정렬된 경우 값은 90이어야 합니다. 전면 카메라 센서의 상단이 화면의 오른쪽과 정렬된 경우 값은 270이어야 합니다.
버전 정보 (camera_module_t.common.module_api_version 기반):
CAMERA_MODULE_API_VERSION_2_3 이하:
모든 camera_module 버전에서 유효합니다.
CAMERA_MODULE_API_VERSION_2_4 이상:
카메라 방향이 CAMERA_FACING_BACK 또는 CAMERA_FACING_FRONT인 경우 유효하고 카메라 방향이 CAMERA_FACING_EXTERNAL인 경우 유효하지 않습니다.
camera_common.h 파일의 202 번 행에 정의되어 있습니다.
int resource_cost |
이 카메라를 사용하는 데 드는 총 리소스 '비용'으로, [0, 100] 범위의 정숫값으로 표시됩니다. 여기서 100은 카메라 하위 시스템의 제한적인 병목 현상인 공유 리소스의 총 사용량을 나타냅니다. 이는 매우 대략적인 추정치일 수 있으며, 카메라 서비스에서 광고하는 여러 카메라를 여러 애플리케이션에서 동시에 열지 못하도록 할 시점을 결정하기 위한 카메라 서비스에 대한 힌트로 사용됩니다.
카메라 서비스는 HAL에서 노출하는 카메라 기기의 조합을 동시에 열고 사용할 수 있어야 하며, 이러한 카메라의 리소스 비용의 합계는 100 이하여야 합니다. 비용을 결정할 때는 각 카메라 기기가 카메라 메타데이터를 통해 해당 기기에 노출된 구성 설정에서 사용 가능한 최대 리소스 소모 프레임 속도 및 스트림 크기 설정으로 구성되고 작동한다고 가정해야 합니다.
카메라 서비스는 총 리소스 비용이 100을 초과하는 카메라 기기 조합을 동시에 열려고 시도할 수 있습니다. 성공 또는 실패할 수 있습니다. 이 작업이 성공하면 여러 기기가 열려 있어 리소스 제약으로 인해 지원되지 않는 구성 조합은 구성 호출 중에 실패해야 합니다. 총 리소스 비용이 100 이하인 경우, 스트림 구성 설정이나 기기가 유일한 열린 카메라 기기일 때 일반적으로 기기에서 성공하는 기타 기기 기능을 열고 구성하는 데 실패해서는 안 됩니다.
이 필드는 다른 애플리케이션이 다른 카메라 기기를 사용하는 동안 백그라운드 애플리케이션이 이 카메라 기기를 사용할 수 있는지 확인하는 데 사용됩니다. 참고: 카메라 서비스는 여러 애플리케이션이 동일한 카메라 기기를 동시에 열도록 허용하지 않습니다.
사용 사례 예:
예: 1: 카메라 기기 0 = 후면 카메라, 카메라 기기 1 = 전면 카메라
- 두 카메라 기기를 모두 사용하면 제한된 ISP 대역폭으로 인해 프레임 속도가 크게 느려집니다.
구성:
카메라 기기 0 - resource_cost = 51 conflicting_devices = null 카메라 기기 1 - resource_cost = 51 conflicting_devices = null
결과:
리소스 비용의 합계가 100을 초과하므로 우선순위가 더 높은 애플리케이션에서 두 기기 중 하나를 열면 카메라 서비스에서 우선순위가 더 낮은 애플리케이션이 두 기기 중 하나를 열지 못하도록 허용합니다. 우선순위가 낮은 애플리케이션이 우선순위가 높은 애플리케이션이 나중에 열려고 시도하는 기기를 사용하고 있는 경우 우선순위가 낮은 애플리케이션은 기기 연결을 해제해야 합니다.
우선순위가 가장 높은 애플리케이션이 선택하면 두 기기를 모두 열려고 시도할 수 있습니다 (이러한 기기는 conflicting_devices 필드에 충돌하는 것으로 나열되지 않음). 하지만 이러한 기기의 사용은 open 또는 configure 호출에서 실패할 수 있습니다.
예: 2: 카메라 기기 0 = 왼쪽 후면 카메라 카메라 기기 1 = 오른쪽 후면 카메라 카메라 기기 2 = 기기 0 및 1에서 사용하는 오른쪽 및 왼쪽 후면 카메라 센서를 모두 사용하는 결합형 스테레오 카메라 카메라 기기 3 = 전면 카메라
- 하드웨어 제약으로 인해 한 번에 최대 2대의 카메라가 열릴 수 있습니다. 결합된 스테레오 카메라는 두 개의 후면 카메라 기기 (기기 0, 1)와 동시에 사용되지 않을 수 있으며, 일반적으로 전면 카메라 (기기 3)와 동시에 사용하기에는 대역폭이 너무 많이 필요합니다.
구성:
카메라 기기 0 - resource_cost = 50 conflicting_devices = { 2 } 카메라 기기 1 - resource_cost = 50 conflicting_devices = { 2 } 카메라 기기 2 - resource_cost = 100 conflicting_devices = { 0, 1 } 카메라 기기 3 - resource_cost = 50 conflicting_devices = null
결과:
conflicting_devices 필드를 기반으로 카메라 서비스는 다음과 같은 열린 기기 세트가 허용되지 않도록 보장합니다. { 1, 2 }, { 0, 2 }.
resource_cost 필드를 기반으로 우선순위가 높은 포그라운드 애플리케이션이 카메라 기기 0을 사용하는 경우 백그라운드 애플리케이션은 카메라 기기 1 또는 3을 열 수 있습니다. 단, 포그라운드 애플리케이션이 다른 기기를 연 경우에는 다시 연결 해제해야 합니다.
가장 높은 우선순위의 애플리케이션은 여전히 기기 0, 2, 3을 동시에 열려고 시도할 수 있지만 HAL이 이 조합의 open 또는 configure 호출에서 실패할 수 있습니다.
예: 3: 카메라 기기 0 = 후면 카메라 카메라 기기 1 = 전면 카메라 카메라 기기 2 = 기기 1과 동일한 센서를 사용하지만 저전력 모드에서 사용할 수 있는 이미지 스트림 해상도만 노출하는 저전력 전면 카메라
-
공유된 물리적 센서로 인해 두 전면 카메라 (기기 1, 2)를 동시에 사용할 수 없습니다. 후면 및 '고전력' 전면 카메라 (기기 1)를 사용하는 것은 하드웨어 제한으로 인해 일부 스트림 구성에서는 불가능할 수 있지만, '저전력' 전면 카메라 옵션은 전용 하드웨어가 있으므로 항상 사용할 수 있습니다.
구성:
카메라 기기 0 - resource_cost = 100 conflicting_devices = null 카메라 기기 1 - resource_cost = 100 conflicting_devices = { 2 } 카메라 기기 2 - resource_cost = 0 conflicting_devices = { 1 } 결과:
conflicting_devices 필드를 기반으로 카메라 서비스는 다음과 같은 열린 기기 세트가 허용되지 않도록 보장합니다. { 1, 2 }.
resource_cost 필드를 기반으로 가장 높은 우선순위의 애플리케이션만 기기 0과 1을 동시에 열려고 시도할 수 있습니다. 우선순위가 높은 애플리케이션이 기기 1 또는 2를 사용하지 않는 경우 우선순위가 낮은 백그라운드 애플리케이션이 기기 2를 열 수 있습니다. 단, 우선순위가 높은 애플리케이션이 나중에 기기 1 또는 2를 열면 연결을 해제해야 합니다.
버전 정보 (camera_module_t.common.module_api_version 기반):
CAMERA_MODULE_API_VERSION_2_3 이하:
유효하지 않습니다. 100으로 가정할 수 있습니다. 이 필드는 읽지 마세요.
CAMERA_MODULE_API_VERSION_2_4 이상:
항상 유효합니다.
camera_common.h 파일의 376 번 라인에 정의가 있습니다.
const camera_metadata_t * static_camera_characteristics |
system/media/camera/docs/docs.html에 지정된 모든 정적 카메라 메타데이터를 포함하는 카메라의 고정된 특성입니다. 정렬된 메타데이터 버퍼여야 하며 호출자가 수정하거나 해제할 수 없습니다. 포인터는 카메라 모듈의 전체 기간 동안 유효해야 하며 get_camera_info()에서 반환된 후에는 값이 변경되지 않을 수 있습니다.
버전 정보 (camera_module_t.common.module_api_version 기반):
CAMERA_MODULE_API_VERSION_1_0:
유효하지 않습니다. 추가 특성은 사용할 수 없습니다. 이 필드는 읽지 마세요.
CAMERA_MODULE_API_VERSION_2_0 이상:
device_version이 CAMERA_DEVICE_API_VERSION_2_0 이상인 경우 유효합니다. 그 외에는 읽지 마세요.
camera_common.h FILE의 241 라인에 정의되어 있습니다.
이 구조체에 관한 문서는 다음 파일에서 생성되었습니다.
- hardware/libhardware/include/hardware/ camera_common.h