차량 상태를 영상 데이터와 분리합니다
GEAR_SELECTION은 VHAL 차량 속성입니다. 이를 누가 구독하고 어느 화면을 시작할지는 OEM 설계입니다. AOSP Camera2 전환 안내는 기어를 감시해 OEM activity를 시작하던 CarEVSService를 선택적 서비스로 설명하며, 그 로직을 OEM 앱으로 옮기는 방향을 안내합니다. CarPropertyService → Parking View App → onResume()이 모든 제품에 고정된 호출 순서는 아닙니다.
센서·드라이버·HAL·클라이언트가 프레임을 주고받는 경로와 화면 합성·표시 경로를 따로 그립니다. 어느 쪽이 늦었는지는 이벤트와 프레임의 로그 한 줄만으로 정할 수 없습니다.
EVS의 초기 샘플과 실제 제품은 같지 않습니다
AOSP Vehicle Camera HAL의 EVS 참고 구현은 init에서 시작하는 C++ 앱, EVS Manager, camera/display HAL을 구분합니다. 이 경로가 Java CameraManager와 일반 Activity 수명 주기를 반드시 거치는 것은 아닙니다.
Android 8.0 샘플 드라이버는 V4L2와 SurfaceFlinger를 사용하지만, 문서는 그 SurfaceFlinger 의존성을 조기 표시가 필요한 실제 vendor 구현에 그대로 옮기지 말라고 경고합니다. 모든 OEM HAL이 같은 V4L2 ioctl이나 display 구성을 쓴다는 뜻도 아닙니다. 이 오래된 참고 구현을 최신 Camera2 전환 경로와 섞지 않습니다.
Camera2도 조건부로 부팅 완료 전에 접근합니다
Camera2는 CameraManager 또는 NDK API로 장치를 열고, 출력 Surface를 가진 capture session을 구성합니다. 현재 AOSP 전환 문서는 AID_AUTOMOTIVE_EVS UID의 특권 클라이언트가 부팅 완료 전 차량 외부의 system camera에 접근할 수 있다고 설명합니다. 따라서 “Camera2는 항상 부팅 후에만 가능하다”는 비교는 부정확합니다.
이것은 일반 앱이 임의로 얻는 권한이 아닙니다. User 0 서비스, system camera 지정, 권한과 개인정보 보호 정책, 사용자 전환에도 가려지지 않는 화면을 OEM 제품 설계에서 함께 검토해야 합니다. 조기 표시에는 ImageReader의 hardware buffer와 DRM 기반 display를 결합하는 선택지도 있습니다. 여기서는 어떤 기기의 권한이나 privacy 설정도 변경하지 않습니다.
프레임을 받았다고 화면에 표시된 것은 아닙니다
공유 버퍼 핸들이 있다고 센서부터 화면까지 항상 zero-copy인 것은 아닙니다. 포맷 변환·합성·HAL 구현에 따라 복사가 생길 수 있으며, ION이 모든 경로에 필수라는 결론도 나오지 않습니다. V4L2 버퍼 수명과 화면 버퍼·fence를 각 하위 경계에서 확인합니다.
EVS의 doneWithFrame()은 소비한 프레임을 카메라에 반환하는 계약입니다. 유한한 버퍼가 반환되지 않으면 후속 프레임 공급이 막힐 수 있습니다. 스트림 중지 호출 뒤에도 반환해야 할 프레임이 남는지 해당 인터페이스 버전을 확인합니다.
- 화면 전환이 없음
- 기어 값·가용 상태·구독자와 OEM 시작 로직을 구분합니다.
- 장치 열기 실패
- EVS/Camera2 선택, 서비스 신원·권한, HAL 상태를 확인합니다.
- 첫 장 뒤 정지
- 센서 스트림, 버퍼 반환, 포맷과 완료 동기화를 확인합니다.
- 부팅 때만 지연
- 카메라와 display 준비 시각, 조기 표시 의존성을 별도로 기록합니다.
출발점은 Sairamkrishna Mammahe의 경로 설명입니다. 원문 그림을 복제하지 않고 AOSP의 두 경로와 대조했습니다. 실제 차량 계측·HAL 실행·안전성 또는 규제 적합성 시험을 수행하지 않았습니다.
English summary. Gear events, camera frames and displayed images are different observations. EVS and Camera2 do not share one mandatory service chain. Privileged early Camera2 access has product-specific conditions; buffer sharing alone proves neither zero-copy nor display completion.