camera_module 구조체 참조

camera_module 구조체 참조

#include < camera_common.h >

데이터 필드

hw_module_t   일반적인
 
int(*  get_number_of_cameras )(void)
 
int(*  get_camera_info )(int camera_id, struct camera_info *info)
 
int(*  set_callbacks )(const camera_module_callbacks_t *callbacks)
 
void(*  get_vendor_tag_ops )(vendor_tag_ops_t *ops)
 
int(*  open_legacy )(const struct hw_module_t *module, const char *id, uint32_t halVersion, struct hw_device_t **device)
 
int(*  set_torch_mode )(const char *camera_id, bool enabled)
 
int(*  init )()
 
void *  reserved [5]
 

상세 설명

camera_common.h 파일의 646 번 째 줄에 정의되어 있습니다.

필드 문서

카메라 모듈의 일반적인 메서드입니다. 이 구조체의 사용자는 hw_module_t hw_module_t camera_module 을 참조하는 것으로 알려진 컨텍스트에서 camera_module 포인터로 변환하므로 이 구조체는 camera_module 의 첫 번째 구성원이어야 합니다(MUST).

camera_module 의 common.methods->open 반환 값은 다음과 같습니다.

0: 카메라 기기를 성공적으로 연 경우

-ENODEV: 내부 오류로 인해 카메라 기기를 열 수 없습니다.

-EINVAL: 입력 인수가 잘못되었습니다. 즉, ID가 잘못되었거나 모듈이 잘못되었습니다.

-EBUSY: 이 메서드 또는 open_legacy를 사용하여 이 카메라 ID에 대해 카메라 기기가 이미 열렸습니다 (열린 기기 HAL 버전에 관계 없음).

-EUSERS: 동시에 열 수 있는 최대 카메라 기기 수가 이 메서드 또는 open_legacy 메서드에 의해 이미 열렸습니다.

common.methods->open의 다른 모든 반환 값은 -ENODEV로 처리됩니다.

camera_common.h FILE의 674 행에 정의가 있습니다.

int(* get_camera_info)(int camera_id, struct camera_info *info)

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 FILE의 727 행에 정의되어 있습니다.

int(* get_number_of_cameras)(void)

get_number_of_cameras:

카메라 모듈을 통해 액세스할 수 있는 카메라 기기 수를 반환합니다. 카메라 기기의 번호는 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 행에 정의되어 있습니다.

void(* 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 줄에 정의되어 있습니다.

int(* init)()

init:

이 메서드는 다른 메서드가 호출되기 전에 카메라 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 **device)

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: 이 카메라 ID에 대해 카메라 기기가 이미 열려 있습니다 (이 메서드 또는 common.methods->open 메서드를 사용하여 열림). 열려 있는 기기 HAL 버전에 관계없습니다.

-EUSERS: 이 메서드 또는 common.methods->open 메서드에 의해 이미 동시에 열 수 있는 최대 개수의 카메라 기기가 열려 있습니다.

camera_common.h 파일의 824 번 줄에 정의되어 있습니다.

void* reserved[5]

camera_common.h FILE의 912 라인에 정의가 있습니다.

int(* set_callbacks)(const camera_module_callbacks_t *callbacks)

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 모듈에서 제공하지 않습니다. 프레임워크가 이 함수를 호출하지 않을 수 있습니다.

CAMERA_MODULE_API_VERSION_2_1:

프레임워크에서 호출할 수 있습니다.

반환 값:

0: 작업 성공 시

-ENODEV: 내부 오류로 인해 작업을 완료할 수 없습니다.

-EINVAL: 입력 인수가 잘못되었습니다(즉, 콜백이 null임).

camera_common.h FILE의 758 행에 정의가 있습니다.

int(* set_torch_mode)(const char *camera_id, bool enabled)

set_torch_mode:

지정된 카메라 ID와 연결된 플래시 장치의 토치 모드를 켜거나 끕니다. 작업이 성공하면 HAL은 새 상태를 사용하여 camera_module_callbacks.torch_mode_status_change() 를 호출하여 프레임워크 토치 상태를 알려야 합니다.

카메라 기기는 플래시 장치에 더 우선적으로 액세스합니다. open()이 호출되어 카메라 기기를 여는 경우와 같이 리소스 충돌이 있는 경우 HAL 모듈은 camera_module_callbacks.torch_mode_status_change() 를 통해 토치 모드가 사용 중지되었고 토치 모드 상태가 TORCH_MODE_STATUS_NOT_AVAILABLE가 되었음을 프레임워크에 알려야 합니다. 토치 모드를 사용 설정하는 리소스를 다시 사용할 수 있게 되면 HAL 모듈은 set_torch_mode() 가 호출되도록 camera_module_callbacks.torch_mode_status_change() 를 통해 토치 모드 상태가 TORCH_MODE_STATUS_AVAILABLE_OFF가 되었음을 프레임워크에 알려야 합니다.

프레임워크가 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: 카메라 기기가 이미 사용 중입니다.

-사용자: 플래시 모드를 사용 설정하는 데 필요한 리소스를 사용할 수 없습니다. 일반적으로 다른 카메라 기기가 플래시 장치를 사용할 수 없도록 리소스를 보유하고 있기 때문입니다.

-EINVAL: camera_id가 잘못되었습니다.

camera_common.h FILE의 878 행에 정의가 있습니다.


이 구조체에 관한 문서는 다음 파일에서 생성되었습니다.