Camera_info 구조체 참조
#include < camera_common.h >
데이터 필드 | |
정수 | 깃 달기 |
정수 | 정위 |
uint32_t | 장치_버전 |
const 카메라_메타데이터_t * | static_camera_characteristics |
정수 | 리소스_비용 |
문자 ** | conflicting_devices |
size_t | conflicting_devices_length |
상세 설명
Camera_common.h 파일의 161 번째 줄에 정의되어 있습니다.
현장 문서
char** conflicting_devices |
이 카메라 장치가 사용 중인 동안 동시에 열 수 없는 다른 장치를 나타내는 NULL로 끝나는 문자열로 표시되는 카메라 장치 ID 배열입니다.
이 필드는 이 카메라 장치가 여러 다른 카메라 장치의 합성물이거나 동시 사용을 금지하는 하드웨어 종속성을 가지고 있음을 나타내는 데 사용됩니다. 종속성이 없으면 이를 나타내기 위해 이 필드에 NULL이 반환될 수 있습니다.
카메라 서비스는 이 카메라 장치가 열려 있는 동안 이 목록에 있는 장치를 동시에 열지 않습니다.
이 필드에서 가리키는 문자열은 카메라 서비스에 의해 정리되지 않으며 이 장치가 연결되어 있는 동안 남아 있어야 합니다.
버전 정보(cammon.module_api_version 기준):
CAMERA_MODULE_API_VERSION_2_3 이하:
유효하지. NULL로 가정할 수 있습니다. 이 필드를 읽지 마십시오.
CAMERA_MODULE_API_VERSION_2_4 이상:
항상 유효합니다.
Camera_common.h 파일의 404번째 줄에 정의되어 있습니다.
size_t conflicting_devices_length |
conflicting_devices 필드에 제공된 배열의 길이입니다.
버전 정보(cammon.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의 값입니다.
버전 정보(cammon.module_api_version 기준):
CAMERA_MODULE_API_VERSION_1_0:
유효하지. CAMERA_DEVICE_API_VERSION_1_0으로 가정할 수 있습니다. 이 필드를 읽지 마십시오.
CAMERA_MODULE_API_VERSION_2_0 이상:
항상 유효함
Camera_common.h 파일의 219 번째 줄에 정의되어 있습니다.
int 직면 |
카메라가 향하는 방향입니다. 카메라 방향 정의는 system/core/include/system/camera.h를 참조하세요.
버전 정보(cammon.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 파일의 177 번째 줄에 정의되어 있습니다.
정수 방향 |
카메라 이미지의 방향입니다. 값은 자연스러운 방향으로 디스플레이에 올바르게 표시되도록 카메라 이미지를 시계 방향으로 회전해야 하는 각도입니다. 0, 90, 180 또는 270이어야 합니다.
예를 들어 기기에 자연스럽게 긴 화면이 있다고 가정해 보겠습니다. 후면 카메라 센서는 가로 방향으로 장착됩니다. 당신은 화면을 보고 있습니다. 카메라 센서의 상단이 화면의 오른쪽 가장자리와 자연스럽게 정렬된 경우 값은 90이어야 합니다. 전면 카메라 센서의 상단이 화면의 오른쪽에 정렬된 경우 값은 90이어야 합니다. 270이요.
버전 정보(cammon.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번째 줄에 정의되어 있습니다.
정수 자원_비용 |
이 카메라를 사용하는 데 필요한 총 리소스 "비용"은 [0, 100] 범위의 정수 값으로 표시됩니다. 여기서 100은 카메라 하위 시스템의 병목 현상을 제한하는 공유 리소스의 총 사용량을 나타냅니다. 이는 매우 대략적인 추정일 수 있으며, 여러 응용 프로그램이 카메라 서비스에서 광고하는 서로 다른 카메라를 동시에 열지 못하게 할 시기를 결정하기 위해 카메라 서비스에 대한 힌트로 사용됩니다.
카메라 서비스는 이러한 카메라의 리소스 비용 합계가 <= 100인 HAL에 의해 노출된 카메라 장치 조합을 동시에 열고 사용할 수 있어야 합니다. 비용을 결정하려면 각 카메라 장치가 구성되고 작동되는 것으로 가정해야 합니다. 카메라 메타데이터를 통해 해당 장치에 대해 노출된 구성 설정에서 사용 가능한 최대 리소스 소모 프레임 속도 및 스트림 크기 설정으로.
카메라 서비스는 총 리소스 비용이 100보다 큰 카메라 장치 조합을 동시에 열려고 시도할 수 있습니다. 이는 성공할 수도 있고 실패할 수도 있습니다. 이것이 성공하면 여러 개의 열린 장치로 인한 리소스 제약으로 인해 지원되지 않는 구성 조합이 구성 호출 중에 실패해야 합니다. 총 리소스 비용이 <= 100인 경우, 열려 있는 유일한 카메라 장치일 때 장치에 대해 일반적으로 성공하는 스트림 구성 설정이나 기타 장치 기능에 대해 열기 및 구성이 실패해서는 안 됩니다.
이 필드는 다른 애플리케이션이 다른 카메라 장치를 사용하는 동안 백그라운드 애플리케이션이 이 카메라 장치를 사용할 수 있는지 여부를 결정하는 데 사용됩니다. 참고: 카메라 서비스에서는 여러 애플리케이션이 동일한 카메라 장치를 동시에 여는 것을 허용하지 않습니다.
사용 사례 예시:
전. 1: 카메라 장치 0 = 후면 카메라 카메라 장치 1 = 전면 카메라
- 두 카메라 장치를 모두 사용하면 제한된 ISP 대역폭으로 인해 프레임 속도가 크게 느려집니다.
구성:
카메라 장치 0 - resources_cost = 51 conflicting_devices = null 카메라 장치 1 - resources_cost = 51 conflicting_devices = null
결과:
리소스 비용의 합계가 100을 초과하므로 우선 순위가 높은 애플리케이션에 두 장치 중 하나가 열려 있으면 카메라 서비스에서는 우선 순위가 낮은 애플리케이션이 두 장치 중 하나를 열 수 없도록 허용합니다. 우선 순위가 낮은 응용 프로그램이 우선 순위가 높은 응용 프로그램이 이후에 열려고 시도하는 장치를 사용하는 경우 우선 순위가 낮은 응용 프로그램은 강제로 장치 연결을 끊습니다.
우선 순위가 가장 높은 응용 프로그램이 선택하는 경우 두 장치를 모두 열려고 시도할 수 있지만(이러한 장치는 conflicting_devices 필드에 충돌하는 것으로 나열되지 않으므로) 열기 또는 구성 호출에서 이러한 장치의 사용이 실패할 수 있습니다.
전. 2: 카메라 장치 0 = 왼쪽 후방 카메라 카메라 장치 1 = 오른쪽 후방 카메라 카메라 장치 2 = 장치 0과 1에서 사용하는 오른쪽 및 왼쪽 후방 카메라 센서를 모두 사용하는 결합된 스테레오 카메라 카메라 장치 3 = 전면 카메라
- 하드웨어 제약으로 인해 최대 두 대의 카메라가 동시에 열릴 수 있습니다. 결합된 스테레오 카메라는 두 개의 후면 카메라 장치(장치 0, 1) 중 하나와 동시에 사용할 수 없으며 일반적으로 전면 카메라(장치 3)와 동시에 사용하려면 너무 많은 대역폭이 필요합니다.
구성:
카메라 장치 0 - resources_cost = 50 conflicting_devices = { 2 } 카메라 장치 1 - resources_cost = 50 conflicting_devices = { 2 } 카메라 장치 2 - resources_cost = 100 conflicting_devices = { 0, 1 } 카메라 장치 3 - resources_cost = 50 conflicting_devices = null
결과:
conflicting_devices 필드를 기반으로 카메라 서비스는 다음과 같은 열린 장치 세트가 허용되지 않음을 보장합니다: { 1, 2 }, { 0, 2 }.
Resource_cost 필드에 따라 우선 순위가 높은 포그라운드 애플리케이션이 카메라 장치 0을 사용하는 경우 백그라운드 애플리케이션은 카메라 장치 1 또는 3을 열 수 있습니다(그러나 포그라운드 애플리케이션이 다른 장치를 열면 다시 연결을 끊어야 합니다).
우선순위가 가장 높은 애플리케이션은 여전히 장치 0, 2, 3을 동시에 열려고 시도할 수 있지만 HAL은 이 조합에 대한 호출 열기 또는 구성에 실패할 수 있습니다.
전. 3: 카메라 장치 0 = 후방 카메라 카메라 장치 1 = 전방 카메라 카메라 장치 2 = 장치 1과 동일한 센서를 사용하지만 저전력 모드에서 사용할 수 있는 이미지 스트림 해상도만 노출하는 저전력 전방 카메라
두 개의 전면 카메라(장치 1, 2)를 동시에 사용하는 것은 공유된 물리적 센서로 인해 불가능합니다. 하드웨어 제한으로 인해 일부 스트림 구성에서는 후면 및 "고전력" 전면 카메라(장치 1)를 사용하는 것이 불가능할 수 있지만 "저전력" 전면 카메라 옵션은 특별한 전용 하드웨어가 있으므로 항상 사용할 수 있습니다.
구성:
카메라 장치 0 - 리소스 비용 = 100 conflicting_devices = null 카메라 장치 1 - 리소스 비용 = 100 conflicting_devices = { 2 } 카메라 장치 2 - 리소스 비용 = 0 conflicting_devices = { 1 } 결과:
conflicting_devices 필드를 기반으로 카메라 서비스는 다음과 같은 열린 장치 세트가 허용되지 않음을 보장합니다: { 1, 2 }.
Resource_cost 필드에 따라 우선 순위가 가장 높은 애플리케이션만 장치 0과 1을 동시에 열려고 시도할 수 있습니다. 우선 순위가 높은 응용 프로그램이 장치 1 또는 2를 사용하지 않는 경우 우선 순위가 낮은 백그라운드 응용 프로그램이 장치 2를 열 수 있습니다(그러나 우선 순위가 높은 응용 프로그램이 이후에 장치 1 또는 2를 열면 강제로 연결이 끊어집니다).
버전 정보(cammon.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()에서 반환된 후에 변경되지 않을 수 있습니다.
버전 정보(cammon.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 파일의 241 번째 줄에 정의되어 있습니다.
이 구조체에 대한 문서는 다음 파일에서 생성되었습니다.
- hardware/libhardware/include/hardware/ camera_common.h