Overview of Vehicle Camera Framework

Published on Slideshow
Static slideshow
Download PDF version
Download PDF version
Embed video
Share video
Ask about this video

Scene 1 (0s)

[Audio] 안녕하세요 멀티미디어 그룹 신성환입니다. 저는 미디어 프레임 워크 개발 담당하고 있습니다. 오늘 소개할 주제는 DVRS와 이미러 프로젝트 개발하면서 고안한 차량용 카메라 프레임워크 입니다..

Scene 2 (18s)

[Audio] 순서는 개발을 하게 된 배경 무엇 이었고, VCF란 무엇인지, 향후 계획에 대해서 설명 드리겠습니다..

Scene 3 (29s)

Development Background.

Scene 4 (34s)

[Audio] 프레임워크는 응용 프로그램 개발의 기본 구조 제공하는 소프트웨어 라이브러리입니다. DVRS 프로젝트와 같이 카메라 이용하는 프로그램을 고객사가 개발할 수 있도록 프레임워크 제공하고 있습니다. 그림은 퀄컴의 전통적인 리눅스 카메라 프레임 워크 구조 보여줍니다. 카메라를 쓰기 위해서 카메라 ISP, 커널 드라이버, V4L2, OMX, 멀티미디어 서버, 어플리케이션로 하위에서 상위로 레이어드 구조로 연결되어 있습니다. 텔레칩스에서도 동일한 구조로 개발하였습니다. 단일 파이프 라인으로 하나의 카메라 제어할 수 있습니다..

Scene 5 (1m 21s)

[Audio] 프레임워크로 DVRS 프로젝트와 이미러 과제 각각 지원하였습니다. 카메라 기능 요구사항이 다르지 않아서 문제가 없었습니다. 그러나, 두개 프로젝트를 하나의 SDK에 통합이 필요하였습니다. 이때 DVRS의 레코딩, 프리뷰와 이미러의 출력이 동시에 동작해야 하는 요구사항이 있었습니다. 기존 프레임워크에서는 카메라가 하나의 소스로 제공되었기 때문에, 최선의 방법이 스위치로 제어권 전달하는 방법 뿐이었습니다. 요구사항 만족하기 위해서 구조적으로 변경이 필요하였습니다. 여기서 디자인 목표 설정할 수 있었습니다. 카메라 프레임워크는 출력을 두개 어플리케이션에 공유할 수 있어야 한다..

Scene 6 (2m 16s)

[Audio] 새로운 구조 검토할 때 확정성을 생각하지 않을 수 없습니다. 오토모티브 개발 환경에서 카메라 응용에 대해서 생각 해보았습니다. 기능은 크게 뷰잉, 레코딩, 센싱으로 나뉘어 집니다. 위 그림은 테슬라의 FSD 유아이 인데 카메라 영상으로 자율 주행하면서 실시간 화면 출력합니다. 추가로 테슬라캠 어플이 동작하면 녹화까지 할 수 있습니다. 3가지 기능 모두 동시 사용할 수 있음을 보여줍니다. 카메라 이용한 비전 응용은 여러가지가 있습니다. 서라운드뷰, 신호 사인 인식, 비상 브레이크, 라인 이탈 감지 등 입니다. 아래 그림은 카메라 뷰에 따른 비전 응용보여줍니다. 같은 뷰에서 두개 기능이 동작하는 것도 있고, ROI가 겹치는 영역이 다수 보입니다. 카메라 개수를 최소화하려는 노력이 있다면 카메라 하나에서 여러가지 응용을 할 가능성이 있습니다. 여기서 디자인 목표를 업데이트할 필요가 생겼습니다. 카메라 프레임워크는 출력을 다수의 어플리케이션에 공유할 수 있어야 한다..

Scene 7 (3m 36s)

[Audio] 카메라 모듈은 하드웨어이고 Lens, Sensor, ISP로 이루어져 있습니다. ISP에서 해상도 변환 지원하지 않는 이상, 단일 해상도 제공합니다. 응용 프로그램에서는 용도에 따라 필요한 카메라 영상이 다릅니다. 대쉬캠에서는 녹화위해서 비디오 인코딩할 때 YUV420 포맷 사용하고, 디지털 이미러에서는 LCD 출력위해서 YUV422 쓸 수 있습니다. 트래픽 사인 감지위해서 GPU로 영상처리할 때 RGB 포맷 사용합니다. 여기서 디자인 목표를 업데이트할 필요가 생겼습니다. 카메라 프레임워크는 어플리케이션 요청에 따라 다양한 비디오 포맷 공유할 수 있어야 한다..

Scene 8 (4m 29s)

What is vehicle camera framework?.

Scene 9 (4m 35s)

[Audio] 디자인 목표 정리하면 세가지 도출할 수 있습니다. 첫째, 카메라 프레임워크는 출력을 다수의 어플리케이션에 공유할 수 있어야 한다. 둘째, 카메라 프레임워크는 어플리케이션 요청에 따라 다양한 비디오 포맷 공유할 수 있어야 한다. 마지막으로 임베디드 디바이스 기본 전제인 낮은 컴퓨팅 파워와 적은 메모리 사용해야 한다..

Scene 10 (5m 4s)

[Audio] 첫번째 목표는 여러 앱에 동시에 카메라 출력 공유하는 것입니다. 카메라 출력 공유 방법의 컨셉은 프레임버퍼에 여러 앱이 동시 접근할 수 있도록 하는 것입니다. 프레임 버퍼는 캡쳐된 카메라 프레임이 저장된 물리 메모리 영역입니다. 프레임을 가리키는 주소값를 VCF 통하여 각 앱에 공유합니다. 프레임버퍼를 일대다로 매핑해준다고 할 수 있습니다..

Scene 11 (5m 36s)

[Audio] 리눅스에서 카메라 기능 사용할 수 있도록 비디오 포 리눅스 인프라 스트럭쳐 제공합니다. 카메라 출력 공유하기위해서 확장하려고 하면 문제가 발생합니다. 하나의 프로세스에서 디바이스 선점하면 다른 프로세스들에서 접근할 수 없습니다. 이를 개선하기 위해서 VCF에서 공유할 메모리 주소 관리하고 이를 각 프로세스에 IPC 통해서 전달합니다..

Scene 12 (6m 6s)

[Audio] 그림은 VCF에서 공유 메모리 관리하는 방법 보여줍니다. FIFO 큐는 V4L2 카메라로 부터 프레임 버퍼 메모리 주소 받아와서 가지고 있습니다. 큐의 크기는 카메라 프레임버퍼 크기와 동일하게 사용합니다. 버퍼가 실시간으로 제공될 수 있도록 큐는 항상 최신 프레임으로 유지합니다. 주기적으로 캡쳐하고 큐의 가장 오래된 버퍼를 반납합니다. 최신 버퍼는 어플리케이션에게 전달합니다. 앱은 버퍼를 받으면 사용만 하고, 프레임워크에게 사용했음을 알릴 필요가 없습니다. 버퍼 만료 문제는 버퍼가 일정 주기로 교체되어서 앱에서 버퍼를 오래 가지고 있을 경우 최초 받았던 프레임이 아니게 됩니다. 버퍼 만료 시간은 큐의 크기가 4개이고 캡쳐 속도가 30 FPS 인 경우 120 밀리세컨드가 됩니다. 큐의 크기와 캡쳐 속도에 따라 달라질 수 있어서, 앱에서 운용하기 충분한 시간 확보할 필요가 있습니다..

Scene 13 (7m 18s)

[Audio] 두번째 목표는 앱의 요청에 따라 다양한 비디오 포맷 제공할 수 있어야 합니다. 비디오 포맷별로 별도 프레임 버퍼 만들고, 비디오 포맷 변환하여 프레임 버퍼에 복사해줍니다. 앱에게 원하는 포맷에 맞는 프레임버퍼 공유해 줍니다. 그림은 앱에서 3가지 포맷 사용하고자 합니다. 프레임버퍼 3개가 필요하고 변환이 2번 이루어 집니다..

Scene 14 (7m 49s)

[Audio] 세번째 목표는 낮은 컴퓨팅 파워와 적은 메모리 사용하도록 최적화하는 것 입니다. 비디오 컨버터는 많은 컴퓨팅 리소스 사용합니다. 여러 포맷 출력하게 되면 많은 부하가 발생합니다. 첫번째 방법은 처리 속도 최적화하기 위해서 트리 구조로 비디오 컨버터 스케쥴링 합니다. 아이디어는 비디오 해상도가 작을 수록 처리 속도가 빨라집니다. 1080 피에서 480피로 변환하는 것보다 720피에서 480피로 변환하는 것이 면적에 비례하여 빠릅니다. 트리의 최상단 노드에는 카메라 입력을 하위로 해상도가 낮은 순서로 연결합니다. 두번째 방법은 비디오 컨버터 개수 최소화하기 위해서 시분할 방식 적용합니다. 실시간 처리가 가능한 범위 내에서 하나의 컨버터에 여러 변환 슬롯을 배치합니다. 그림은 네가지 포맷에 대해서 두개의 컨버터로 스케쥴링한 모습을 보여줍니다..

Scene 15 (9m 0s)

[Audio] 블록다이어그램은 하나의 비디오 입력에 대한 7개의 어플리케이션에 각기 다른 포맷을 전달할 때 보여줍니다. 비디오 컨버터로 트리 구조로 배치된 것을 확인할 수 있습니다..

Scene 16 (9m 15s)

[Audio] ㅅㅂ ㅅㅂ. Architecture. Ostreamer plugin : camera source Applications Sessül Framework HAL KERNEL OMX component : Source e«Server»» Camera Server Scnter Streæn Camera Canera HAL-3 Kernel (Camera, V4L2) Curæra ISP Custorn application Sessbn Carnaa [kvee JPEG Encoder.

Scene 17 (9m 25s)

Future Plans.

Scene 18 (9m 30s)

[Audio] 현재 구현은 카메라 공유가 가능하며, 캡쳐 동작 지원합니다. 포맷 변환은 미 구현된 상태입니다. 첫 번째는 DVRS와 이미러 조합으로 동시 동작 테스트합니다. TCC8050 EVB 보드에서 두개 어플리케이션 실행합니다. LCD에 같은 카메라에 대해서 두개 프리뷰 출력합니다 DVRS 어플리케이션은 프리뷰에 추가로 4개 카메라 영상 레코딩합니다. 두 번째는 다수 어플리케이션이 동작하는지 테스트합니다. 결과는 20개 어플리케이션이 동시 수행되는 것 보여줍니다. 안정적으로 캡쳐되는 것을 확인할 수 있었습니다..

Scene 19 (10m 29s)

[Audio] 향후 계획은 VCF 완성을 위하여 비디오 컨버터 기능 추가가 필요합니다. 이를 그래픽 라이브러리 벌칸을 통해서 구현하려고 합니다. 컨버터의 기능은 DVRS와 이미러 과제에서 사용하는 컬러 변환, 스케일링, 크롭핑, 플립이 있습니다. 추가 연구할 주제로는 외부 비전 이미지 프로세싱과 연동할 수 있는 방법을 찾는 것입니다. 예를 들면 프레임워크이 드와핑이 적용된 카메라 프레임을 직접 제공하는 것입니다..

Scene 20 (11m 6s)

[Audio] 준비한 자료 발표 완료하였는데, 질문 있으십니까?.