단일 생산자 다중 소비자 카메라 버퍼 전송

이 기능에는 캡처 세션이 활성화되고 카메라 스트리밍이 진행되는 동안 카메라 클라이언트가 출력 노출 영역을 동적으로 추가 및 삭제할 수 있도록 하는 메서드가 도입되었습니다. 새로운 출력은 사용자가 선택한 특정 공유 카메라 스트림에 매핑될 수 있습니다. 노출 영역은 추가한 후에 언제든지 삭제할 수 있습니다.

일반적인 개념은 특정 카메라 스트림과 연결된 버퍼를 여러 출력 노출 영역에서 공유하는 것입니다. 내부 참조 카운터는 소비자 측에서 추가 처리를 위해 준비되는 과정 중에 있는 버퍼를 추적합니다. 모든 소비자가 각각의 작업을 완료하면 버퍼는 대기열에서 제외되고 카메라에서 사용 가능합니다.

버퍼 공유

그림 1. 버퍼 공유

그림 1은 카메라 스트림 2에 의해 처리된 버퍼가 카메라 서비스에 있는 전용 공유 출력 스트림 내부의 스트림 분배기 구성요소에 의해 동적으로 연결되고, 분리되고, 참조 계수되고, 관리되는 시나리오의 한 예를 보여줍니다.

예시 및 소스

이 기능의 핵심 구현은 Camera3StreamSplitter 모듈에서 확인할 수 있습니다. 이 기능에 관한 문서는 개발자 참조에서 확인할 수 있습니다.

구현

이 기능은 프레임워크 측에서 구현되므로 카메라 HAL 측에서는 구현할 필요가 없습니다.

유효성 검사

구현은 MultiViewTest 모듈 및 네이티브 API용 네이티브 JNI 라이브러리에서 이 기능을 지원하는 CTS 사례를 전달해야 합니다.