camera_module 구조체 참조
#include < camera_common.h >
데이터 필드 | |
hw_module_t | 흔한 |
정수(* | get_number_of_cameras )(무효) |
정수(* | get_camera_info )(int camera_id, struct camera_info *정보) |
정수(* | set_callbacks )(const camera_module_callbacks_t *콜백) |
무효의(* | get_vendor_tag_ops )(vendor_tag_ops_t *ops) |
정수(* | open_legacy )(const struct hw_module_t *module, const char *id, uint32_t halVersion, struct hw_device_t **장치) |
정수(* | set_torch_mode )(const char *camera_id, bool 활성화됨) |
정수(* | 초기화 )() |
무효의 * | 예약됨 [5] |
상세 설명
camera_common.h 파일의 646 행에 정의.
현장 문서
hw_module_t 공통 |
카메라 모듈의 일반적인 방법. 이 구조의 사용자는 hw_module_t 가 camera_module 을 참조하는 것으로 알려진 컨텍스트에서 hw_module_t 를 camera_module 포인터로 캐스트하므로 이것은 camera_module 의 첫 번째 멤버 여야 합니다 .
camera_module 에 대한 common.methods->open의 반환 값은 다음과 같습니다.
0: 카메라 장치가 성공적으로 열렸을 때.
-ENODEV: 내부 오류로 인해 카메라 장치를 열 수 없습니다.
-EINVAL: 입력 인수가 유효하지 않습니다. 즉, ID가 유효하지 않거나 모듈이 유효하지 않습니다.
-EBUSY: 카메라 장치는 열렸던 장치 HAL 버전에 관계없이 이 카메라 ID에 대해 이미 열렸습니다(이 방법 또는 open_legacy 사용).
-EUSERS: 동시에 열 수 있는 카메라 장치의 최대 수는 이미 이 방법 또는 open_legacy 방법으로 열렸습니다.
common.methods->open의 다른 모든 반환 값은 -ENODEV로 처리됩니다.
camera_common.h 파일의 674 번째 줄에 정의가 있습니다.
int(* get_camera_info )(int 카메라 ID, 구조 카메라 정보 *정보) |
get_camera_info:
주어진 카메라 장치에 대한 정적 카메라 정보를 반환합니다. 이 정보는 카메라 장치에 대해 변경되지 않을 수 있습니다.
반환 값:
0: 성공적인 작업 시
-ENODEV: 내부 오류로 인해 정보를 제공할 수 없습니다.
-EINVAL: 입력 인수가 유효하지 않습니다. 즉, ID가 유효하지 않거나 모듈이 유효하지 않습니다.
버전 정보(camera_module_t.common.module_api_version 기반):
CAMERA_MODULE_API_VERSION_2_4 이상:
카메라 연결이 끊어지면 카메라 ID가 무효가 됩니다. 이 유효하지 않은 카메라 ID로 이 메서드를 호출하면 -EINVAL 및 NULL 카메라 정적 메타데이터( camera_info.static_camera_characteristics )를 가져옵니다.
camera_common.h 파일의 727 행에 정의되어 있습니다.
int(* get_number_of_cameras)(무효) |
get_number_of_camera:
카메라 모듈을 통해 액세스할 수 있는 카메라 장치의 수를 반환합니다. 카메라 장치는 0부터 N-1까지 번호가 지정됩니다. 여기서 N은 이 호출에서 반환된 값입니다. open()에 대한 카메라 장치의 이름은 단순히 문자열로 변환된 숫자입니다. 즉, 카메라 ID 0은 "0", 카메라 ID 1은 "1"입니다.
버전 정보(camera_module_t.common.module_api_version 기반):
CAMERA_MODULE_API_VERSION_2_3 이하:
여기서 값은 정적이어야 하며 이 메서드를 처음 호출한 후에는 변경할 수 없습니다.
CAMERA_MODULE_API_VERSION_2_4 이상:
여기서 값은 정적이어야 하며 CAMERA_FACING_BACK 또는 CAMERA_FACING_FRONT 카메라 대면 값( camera_info.facing )이 있는 내장 카메라만 계산해야 합니다. HAL은 이 호출의 반환 값에 외부 카메라( camera_info.facing == CAMERA_FACING_EXTERNAL)를 포함하지 않아야 합니다. 프레임워크는 camera_device_status_change 콜백을 사용하여 외부 카메라의 수를 관리합니다.
camera_common.h 파일의 701 행에 정의
무효(* get_vendor_tag_ops)(vendor_tag_ops_t *ops) |
get_vendor_tag_ops:
공급업체 확장 메타데이터 태그 정보를 쿼리하는 메서드를 가져옵니다. HAL은 모든 공급업체 태그 작업 방법을 채우거나 공급업체 태그가 정의되지 않은 경우 작업을 변경하지 않은 상태로 두어야 합니다.
여기에 사용된 vendor_tag_ops 구조는 system/media/camera/include/system/vendor_tags.h에 정의되어 있습니다.
버전 정보(camera_module_t.common.module_api_version 기반):
CAMERA_MODULE_API_VERSION_1_x/2_0/2_1: HAL 모듈에서 제공하지 않습니다. 프레임워크는 이 함수를 호출하지 않을 수 있습니다.
CAMERA_MODULE_API_VERSION_2_2: 프레임워크에서 호출할 수 있습니다.
camera_common.h 파일의 778 번째 줄에 정의가 있습니다.
정수(* 초기화)() |
초기화:
이 메서드는 카메라 HAL 라이브러리가 성공적으로 로드된 직후, 다른 메서드가 호출되기 전에 카메라 서비스에서 호출됩니다. 초기화가 필요하지 않은 경우 HAL 모듈에 의해 NULL로 남을 수 있습니다.
HAL 구현에서 초기화 및 기타 일회성 작업을 수행하는 데 사용할 수 있습니다.
버전 정보(camera_module_t.common.module_api_version 기반):
CAMERA_MODULE_API_VERSION_1_x/2_0/2_1/2_2/2_3: HAL 모듈에서 제공하지 않습니다. 프레임워크는 이 함수를 호출하지 않습니다.
CAMERA_MODULE_API_VERSION_2_4: NULL이 아니면 HAL 모듈이 로드된 후 다른 HAL 모듈 메서드가 호출되기 전에 프레임워크에서 항상 한 번 호출됩니다.
반환 값:
0: 성공적인 작업에서.
-ENODEV: 내부 오류로 인해 초기화를 완료할 수 없습니다. HAL은 작동하지 않는 상태로 가정해야 합니다.
camera_common.h 파일의 909 번째 줄에 정의되어 있습니다.
int(* open_legacy)(const struct hw_module_t *module, const char *id, uint32_t halVersion, struct hw_device_t **장치) |
open_legacy:
이 카메라 HAL 모듈에서 여러 기기 HAL API 버전을 지원하는 경우 특정 레거시 카메라 HAL 기기를 엽니다. 예를 들어 카메라 모듈이 동일한 카메라 ID에 대해 CAMERA_DEVICE_API_VERSION_1_0 및 CAMERA_DEVICE_API_VERSION_3_2 장치 API를 모두 지원하는 경우 프레임워크는 이 함수를 호출하여 카메라 장치를 CAMERA_DEVICE_API_VERSION_1_0 장치로 열 수 있습니다.
이것은 선택적 방법입니다. 카메라 HAL 모듈은 장치당 둘 이상의 장치 HAL 버전을 지원할 필요가 없으며 이러한 모듈은 이 메서드에 대한 모든 호출에 대해 -ENOSYS를 반환할 수 있습니다. 지원되지 않는 모든 이전 HAL 장치 API 버전의 경우 -EOPNOTSUPP를 반환할 수 있습니다. 위의 경우가 발생하면 프레임워크에서 일반 open() 메서드(common.methods->open)를 대신 사용합니다.
버전 정보(camera_module_t.common.module_api_version 기반):
CAMERA_MODULE_API_VERSION_1_x/2_0/2_1/2_2: HAL 모듈에서 제공하지 않습니다. 프레임워크는 이 함수를 호출하지 않습니다.
CAMERA_MODULE_API_VERSION_2_3: 프레임워크에서 호출할 수 있습니다.
반환 값:
0: 카메라 장치가 성공적으로 열렸을 때.
-ENOSYS 지원하지 않는 방식입니다.
-EOPNOTSUPP: 요청된 HAL 버전은 이 방법에서 지원되지 않습니다.
-EINVAL: 입력 인수가 유효하지 않습니다. 즉, ID가 유효하지 않거나 모듈이 유효하지 않습니다.
-EBUSY: 카메라 장치가 열린 장치 HAL 버전에 관계없이 이 카메라 ID에 대해 이미 열려 있었습니다(이 방법 또는 common.methods->open 방법 사용).
-EUSERS: 이 방법 또는 common.methods->open 방법으로 동시에 열 수 있는 카메라 장치의 최대 수가 이미 열려 있습니다.
camera_common.h 파일의 824 번째 줄에 정의가 있습니다.
무효* 예약됨[5] |
camera_common.h 파일의 912 번째 줄에 정의가 있습니다.
int(* set_callbacks)(const camera_module_callbacks_t *콜백) |
set_callbacks:
프레임워크에 비동기 카메라 모듈 이벤트를 알리기 위해 HAL 모듈에 대한 콜백 함수 포인터를 제공합니다. 프레임워크는 초기 카메라 HAL 모듈 로드 후, get_number_of_cameras() 메서드가 처음으로 호출된 후, 그리고 모듈에 대한 다른 호출 전에 이 함수를 한 번 호출합니다.
버전 정보(camera_module_t.common.module_api_version 기반):
CAMERA_MODULE_API_VERSION_1_0, CAMERA_MODULE_API_VERSION_2_0:
HAL 모듈에서 제공하지 않습니다. 프레임워크는 이 함수를 호출하지 않을 수 있습니다.
카메라_MODULE_API_VERSION_2_1:
프레임워크에서 호출할 수 있습니다.
반환 값:
0: 성공적인 작업 시
-ENODEV: 내부 오류로 인해 작업을 완료할 수 없습니다.
-EINVAL: 입력 인수가 유효하지 않습니다. 즉, 콜백이 null입니다.
camera_common.h 파일의 758 번째 줄에 정의가 있습니다.
int(* set_torch_mode)(const char *camera_id, bool 활성화됨) |
set_torch_mode:
주어진 카메라 ID와 연결된 플래시의 토치 모드를 켜거나 끕니다. 작업이 성공하면 HAL은 새 상태로 camera_module_callbacks.torch_mode_status_change() 를 호출하여 프레임워크 토치 상태를 알려야 합니다.
카메라 장치는 플래시 장치에 액세스하는 우선 순위가 더 높습니다. 카메라 장치를 열기 위해 open()이 호출되는 것과 같은 리소스 충돌이 있는 경우 HAL 모듈은 카메라 _module_callbacks.torch_mode_status_change() 를 통해 프레임워크에 토치 모드가 꺼져 있고 토치 모드 상태가 TORCH_MODE_STATUS_NOT_AVAILABLE이 되었음을 알려야 합니다. 토치 모드를 켜는 리소스를 다시 사용할 수 있게 되면 HAL 모듈은 set_torch_mode() 를 호출하기 위해 토치 모드 상태가 TORCH_MODE_STATUS_AVAILABLE_OFF가 되었음을 camera_module_callbacks.torch_mode_status_change() 를 통해 프레임워크에 알려야 합니다.
프레임워크가 플래시 장치의 토치 모드를 켜기 위해 set_torch_mode() 를 호출할 때 HAL이 여러 토치 모드를 동시에 켜진 상태로 유지할 수 없는 경우 HAL은 이전 set_torch_mode() 호출에 의해 켜진 토치 모드를 끄고 프레임워크에 알려야 합니다. 해당 플래시의 토치 모드 상태가 TORCH_MODE_STATUS_AVAILABLE_OFF가 되었음을 나타냅니다.
버전 정보(camera_module_t.common.module_api_version 기반):
CAMERA_MODULE_API_VERSION_1_x/2_0/2_1/2_2/2_3: HAL 모듈에서 제공하지 않습니다. 프레임워크는 이 함수를 호출하지 않습니다.
CAMERA_MODULE_API_VERSION_2_4: 프레임워크에서 호출할 수 있습니다.
반환 값:
0: 성공적인 작업에서.
-ENOSYS: 카메라 장치가 이 작업을 지원하지 않습니다. android.flash.info.available이 false인 경우에만 반환됩니다.
-EBUSY: 카메라 장치가 이미 사용 중입니다.
-EUSERS: 토치 모드를 켜는 데 필요한 리소스를 사용할 수 없습니다. 일반적으로 다른 카메라 장치가 플래시 장치를 사용할 수 없도록 리소스를 보유하고 있기 때문입니다.
-EINVAL: 카메라 ID가 잘못되었습니다.
camera_common.h 파일의 878 번째 줄에 정의가 있습니다.
이 구조체에 대한 문서는 다음 파일에서 생성되었습니다.