camera3_stream 구조체 참조

camera3_stream 구조체 참조

#include < camera3.h >

데이터 필드

int  stream_type
 
uint32_t  너비
 
uint32_t  height
 
int  형식
 
uint32_t  사용
 
uint32_t  max_buffers
 
void *  priv
 
android_dataspace_t  data_space
 
int  회전
 
void *  reserved [7]
 

상세 설명

camera3_stream_t:

단일 카메라 입력 또는 출력 스트림의 핸들입니다. 스트림은 버퍼 해상도 및 형식에 따라 프레임워크에서 정의되며, gralloc 사용 플래그 및 최대 진행 중인 버퍼 수를 사용하여 HAL에서 추가로 정의됩니다.

스트림 구조체는 프레임워크에서 소유하지만 configure_streams()를 통해 HAL에 전달된 camera3_stream 포인터는 camera3_stream 을 인수로 포함하지 않는 첫 번째 후속 configure_streams() 호출이 끝날 때까지 또는 close() 호출이 끝날 때까지 유효합니다.

모든 camera3_stream 프레임워크 제어 멤버는 camera3_stream 이 configure_streams()에 전달된 후에는 변경할 수 없습니다. HAL은 비공개 포인터의 콘텐츠를 제외하고 configure_streams() 호출 중에만 HAL 제어 파라미터를 변경할 수 있습니다.

configure_streams() 호출이 심각하지 않은 오류를 반환하면 모든 활성 스트림은 configure_streams()가 호출되지 않은 것처럼 유효하게 유지됩니다.

스트림의 엔드포인트가 카메라 HAL 기기에 표시되지 않습니다. DEVICE_API_VERSION_3_1에서는 카메라가 생산자인 스트림 (OUTPUT 및 BIDIRECTIONAL 스트림 유형)에서 소비자 사용 플래그를 공유하도록 변경되었습니다. 아래의 사용 필드를 참고하세요.

camera3.h 파일의 1523 행에 정의되어 있습니다.

필드 문서

android_dataspace_t data_space

버퍼의 콘텐츠를 설명하는 필드입니다. 형식 및 버퍼 크기는 스트림 버퍼의 메모리 레이아웃과 구조를 정의하고 dataSpace는 버퍼 내 데이터의 의미를 정의합니다.

대부분의 형식의 경우 dataSpace는 이미지 데이터의 색상 공간을 정의합니다. 또한 일부 형식의 경우 dataSpace는 이미지 기반 데이터 또는 깊이 기반 데이터가 요청되는지 여부를 나타냅니다. 형식에 관한 세부정보와 각 형식의 유효한 dataSpace 값은 system/core/include/system/graphics.h를 참고하세요.

버전 정보:

< CAMERA_DEVICE_API_VERSION_3_3:

정의되지 않으며 액세스해서는 안 됩니다. dataSpace는 HAL_DATASPACE_UNKNOWN으로 가정해야 하며 적절한 색상 공간 등은 사용 플래그와 형식에서 결정해야 합니다.

= CAMERA_DEVICE_API_VERSION_3_3:

항상 카메라 서비스에서 설정합니다. HAL은 이 dataSpace를 사용하여 스트림을 올바른 색상 공간으로 구성하거나 지원되는 경우 색상 및 깊이 출력 간에 선택해야 합니다. 데이터 공간 값은 graphics.h의 기존 정의입니다.

>= CAMERA_DEVICE_API_VERSION_3_4:

항상 카메라 서비스에서 설정합니다. HAL은 이 dataSpace를 사용하여 스트림을 올바른 색상 공간으로 구성하거나 지원되는 경우 색상 및 깊이 출력 간에 선택해야 합니다. 데이터 공간 값은 graphics.h의 V0 데이터 공간 정의를 사용하여 설정됩니다.

camera3.h 파일의 1648 줄에 정의되어 있습니다.

int 형식

이 스트림의 버퍼에 대한 픽셀 형식입니다. 형식은 system/core/include/system/graphics.h의 HAL_PIXEL_FORMAT_* 목록 또는 기기별 헤더의 값입니다.

HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED가 사용되면 플랫폼 gralloc 모듈은 카메라 기기와 스트림의 다른 엔드포인트에서 제공하는 사용 플래그를 기반으로 형식을 선택합니다.

<= CAMERA_DEVICE_API_VERSION_3_1:

카메라 HAL 기기는 필요한 경우 후속 register_stream_buffers() 호출에서 전달된 버퍼를 검사하여 구현별 형식 세부정보를 가져와야 합니다.

>= CAMERA_DEVICE_API_VERSION_3_2:

register_stream_buffers()는 프레임워크에서 호출되지 않으므로 HAL은 구성된 스트림의 크기, 사용 플래그, 형식만을 기반으로 ISP 및 센서 파이프라인을 구성해야 합니다.

camera3.h FILE의 1565 라인에 정의되어 있습니다.

uint32_t height

이 스트림의 버퍼 높이(단위: 픽셀)입니다.

camera3.h 파일의 1542 줄에 정의되어 있습니다.

uint32_t max_buffers

HAL 기기가 동시에 큐에서 삭제해야 할 수 있는 최대 버퍼 수입니다. HAL 기기에는 이 스트림에서 이 값보다 많은 버퍼가 전송 중일 수 없습니다.

camera3.h 파일의 1608 줄에 정의되어 있습니다.

void* priv

스트림의 HAL 비공개 정보 핸들입니다. 프레임워크 코드에서 검사하지 않습니다.

camera3.h 파일의 1614 줄에 정의되어 있습니다.

void* reserved[7]

camera3.h 파일의 1677 줄에 정의되어 있습니다.

int rotation

스트림의 필수 출력 회전으로, camera3_stream_rotation_t 값 중 하나입니다. 이는 스트림 너비 및 높이와 함께 HAL에서 검사해야 합니다. 예를 들어 회전이 90도이고 스트림 너비와 높이가 각각 720과 1280인 경우 카메라 서비스는 크기가 720x1280인 버퍼를 제공하고 HAL은 1280x720 이미지를 캡처한 후 이미지를 시계 반대 방향으로 90도 회전해야 합니다. 스트림 유형이 입력인 경우 순환 필드는 무작위로 선택됩니다. 카메라 HAL은 입력 스트림의 회전 필드를 무시해야 합니다.

<= CAMERA_DEVICE_API_VERSION_3_2:

정의되지 않으며 액세스해서는 안 됩니다. HAL은 출력 이미지에 회전을 적용해서는 안 됩니다.

>= CAMERA_DEVICE_API_VERSION_3_3:

항상 카메라 서비스에서 설정합니다. HAL은 스트림 구성 중에 이 필드를 검사해야 하며 HAL이 이러한 회전을 실행할 수 없는 경우 -EINVAL을 반환합니다. HAL은 항상 CAMERA3_STREAM_ROTATION_0을 지원해야 하므로 모든 스트림의 회전 필드가 CAMERA3_STREAM_ROTATION_0인 경우 지원되지 않는 회전으로 인해 configure_streams() 호출이 실패해서는 안 됩니다.

camera3.h 파일의 1674 줄에 정의되어 있습니다.

int stream_type

스트림 유형입니다. camera3_stream_type_t 값 중 하나입니다.

camera3.h 파일의 1532 번 행에 정의되어 있습니다.

uint32_t 사용

HAL에 필요한 이 스트림의 gralloc 사용 플래그입니다. 사용 플래그는 gralloc.h (GRALLOC_USAGE_*) 또는 기기별 헤더에 정의되어 있습니다.

출력 스트림의 경우 HAL의 생산자 사용 플래그입니다. 입력 스트림의 경우 HAL의 소비자 사용 플래그입니다. 생산자와 소비자의 사용 플래그가 결합된 후 플랫폼 gralloc HAL 모듈에 전달되어 각 스트림의 gralloc 버퍼를 할당합니다.

버전 정보:

== CAMERA_DEVICE_API_VERSION_3_0:

configure_streams()를 통해 전달될 때 보장되는 초깃값은 없습니다. HAL은 이 필드를 입력으로 사용하지 않을 수 있으며 사용 플래그를 사용하여 이 필드에 덮어써야 합니다.

>= CAMERA_DEVICE_API_VERSION_3_1:

stream_type OUTPUT 및 BIDIRECTIONAL의 경우 configure_streams()를 통해 전달되면 이 값의 초기 값은 소비자의 사용 플래그입니다. HAL은 이러한 소비자 플래그를 사용하여 스트림 구성을 결정할 수 있습니다. stream_type INPUT의 경우 configure_streams()를 통해 전달되면 초기 값은 0입니다. configure_streams()를 통해 전달된 모든 스트림의 경우 HAL은 사용 플래그를 사용하여 이 필드에 덮어쓰기해야 합니다.

camera3.h FILE의 1601 행에 정의가 있습니다.

uint32_t width

이 스트림의 버퍼 너비(단위: 픽셀)

camera3.h 파일의 1537 행에 정의되어 있습니다.


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