리눅스에서 카메라나, 영상을 보여주기위한 필수 라이브러리들에 대한 자료모음이다.
대략적인 아키텍쳐를 통해서 어떤식으로 엮이는지 알수있다.
해당 라이브러리에 대한 자료조사, 개념등을 이해하는것이 리눅스 시스템에서 DVRS나 카메라등의 기본 구현을 하는 첫걸음일듯 싶다.
GStreamer
대략적인 아키텍쳐
- 링크 : http://processors.wiki.ti.com/index.php/DM81xx_Gstreamer_Plugin
- 링크 : https://wiki.tizen.org/Porting_Guide/Multimedia
GStreamer 개요
...
- GStreamer는 Linux, Android, Windows, Max OS X, iOS와 같은 모든 주요 운영 체제와 대부분의 BSD, 상용 Unix, Solaris, Symbian에서 동작한다. 광범위한 운영 체제, 프로세서 및 컴파일러에 포팅되어 왔다.
- GStreamer는 32비트뿐만 아니라 64비트 및 작은 엔디안 또는 빅 엔디안에서도 x86, ARM, MIPS, SPARC 및 PowerPC를 포함한 모든 주요 하드웨어 아키텍처에서 실행된다.
- GStreamer는 기존 구성요소(예: 코덱)를 재사용하고 플랫폼 입력/출력 메커니즘을 사용하기 위해 다른 멀티미디어 프레임워크에 bridge 할 수 있다.
- Linux/Unix: OpenMAX-IL (via gst-omx)
- Windows: DirectShow
- Mac OS X: QuickTime
Comprehensive Core Library
- 그래프 기반 구조를 통해 임의 파이프라인 구성 가능
- 객체 지향 설계 및 상속을 위한 GLib 2.0 객체 모델 기반
- 500KB 미만의 컴팩트 코어 라이브러리, 약 65K 라인 코드
- 다중 스레드 파이프라인은 사소하고 구성하기에 투명함
- 플러그인 및 애플리케이션 개발자 모두를 위한 깨끗하고 단순하며 안정적인 API
- 매우 가벼운 데이터 전송은 매우 높은 성능/낮은 지연 시간을 갖는다.
- 코어 및 플러그인/애플리케이션 개발자 모두를 위한 완벽한 디버깅 시스템
- 글로벌 스트림 동기화(a/v 동기화)를 보장하기 위한 클러스터링
- 높은 CPU 부하에서 최상의 품질을 보장하는 서비스 품질(QO)
Intelligent Plugin Architecture
- 동적으로 로드된 플러그인은 ld.so.cache과 유사하게 레지스트리 캐시를 통해 요구 사항이 로드된 요소 및 미디어 유형을 제공한다.
- 요소 인터페이스는 알려진 모든 유형의 소스, 필터 및 싱크 처리
- 기능 시스템을 통해 MIME 유형 및 미디어별 속성을 사용하여 요소 호환성 검증 가능
- 기능 시스템을 사용하여 복잡한 경로를 자동으로 완료
- 파이프라인은 .dot 파일에 덤프하고 해당 파일에서 PNG 이미지를 생성하여 시각화할 수 있음
- 리소스 친화적인 플러그인은 메모리를 낭비하지 않음
Broad Coverage of Multimedia Technologies
GStreamers 기능은 새로운 플러그인을 통해 확장될 수 있다. 아래에 나열된 기능은 타사 제품을 계산하지 않고 GStreamers 자체 플러그인을 사용하여 사용할 수 있는 대략적인 개요일 뿐이다.
- streaming: http, mms, rtsp
- codecs: FFmpeg, various codec libraries, 3rd party codec packs
- metadata: native container formats with a common mapping between them
- video: various colorspaces, support for progressive and interlaced video
- audio: integer and float audio in various bit depths and multichannel configurations
Extensive Development Tools
- 신속한 시제품 제작 및 테스트를 위한 gst-launch 명령줄 도구(Ecasound와 유사)
- 부분적으로 완료된 설명서 및 플러그인 작성자 가이드를 포함한 많은 문서
- 각 모듈에서 다양한 테스트 프로그램 및 예제 코드 선택
- 다양한 프로그래밍 언어로 GStreamer API 액세스
gst-omx
이 모듈에는 사용 가능한 OpenMAX IL 구성 요소를 감싸고 표준 GStreamer 요소로 사용 가능한 플러그인이 포함되어 있습니다.
- 0.10.x 시리즈의 병렬 설치
- OpenMAX IL 구현에 대한 일반 지원
OpenMAX
OpenMAX 개요
The Standard for Media Library Portability
종종 "OMX"로 단축되는 OpenMAX는 비 독점적이고 로열티가없는 크로스 플랫폼 C 언어 프로그래밍 인터페이스 세트입니다. 오디오, 비디오 및 스틸 이미지 처리에 특히 유용한 루틴에 대한 추상화를 제공합니다.
OpenMAX™ 는 여러 운영 체제와 실리콘 플랫폼에 걸쳐 가속화된 멀티미디어 구성요소를 개발, 통합 및 프로그래밍할 수 있도록 하여 종합적인 스트리밍 미디어 코덱과 애플리케이션 이식성을 제공하는 로열티 없는 크로스 플랫폼 API이다. 더 OpenMAX™ API는 기본 하드웨어 아키텍처에 관계 없이 라이브러리 및 코덱 구현자가 새로운 실리콘의 최대 가속 가능성을 신속하고 효과적으로 활용할 수 있도록 프로세서와 함께 제공될 것이다.
스마트폰, 오디오 및 비디오 미디어 플레이어, 게임 콘솔 등 다양한 플랫폼에서 비디오, 오디오, 음성, 3D 등의 애플리케이션에서 향상된 기능을 요구하는 소비자 수요가 증가함에 따라 멀티미디어 하드웨어 플랫폼 개발이 가속화되고 있다. 일반적으로 이러한 종류의 제품은 고성능 프로세싱과 높은 데이터 처리 능력을 필요로 한다. 결과적으로, 다양한 해결책이 진화했고, 각각은 멀티미디어 응용을 가속화하도록 설계되었다. 예를 들면 다음과 같다.
- General purpose processors with specific multimedia extensions
- Low level hardware accelerators,
- Multiple processor architectures including DSPs
- Dedicated hardware video decoders
이러한 모든 아키텍처 변형에 대한 주요 과제 중 하나는 효율적인 코드를 개발하는 것이다. 일반적으로 컴파일러를 제공하더라도, 높은 수준의 프로그래밍 언어에서 전체 아키텍처의 잠재력을 최대한 활용할 수 있는 경우는 드물다. 그 결과 애플리케이션의 많은 부분이 하드웨어 플랫폼을 특별히 타겟으로 하는 조립 언어로 작성되는 경우가 많다. 서로 다른 멀티미디어 하드웨어 솔루션의 확산은 소프트웨어가 포팅된 각 새로운 플랫폼에 대해 다시 작성되고 최적화되어야 한다는 것을 의미한다.
이 비효율성이 구현에 미치는 영향은 신제품의 도입을 지연시키고, 개발 비용을 증가시키며, 제품 품질을 저하시키는 것이며, 이는 궁극적으로 시장 수요가 증가하고 있는 시점에서 멀티미디어 영역의 혁신을 둔화시키는 것이다.
An Open Standard
이 문제를 해결하기 위해, OpenMAX Working Group은 Khronos Group에 의해 구성되었고, 멀티미디어 애플리케이션을 위한 표준 개방형 APIs(API)를 정의하였다. 이 개방형 표준의 목표는 멀티미디어 소프트웨어를 새로운 프로세서와 아키텍처에 포팅하는 비용과 복잡성을 줄이는 것이다.
멀티미디어 코덱, 그래픽 라이브러리 및 비디오, 이미지, 오디오, 음성 및 음성용 기타 기능과 같은 미들웨어 애플리케이션에 대한 공통 규격에 합의함으로써 개발자 커뮤니티는 공통 기능의 반복적인 구현보다는 제품 차별화에 초점을 맞출 수 있을 것이다. 이것은 새로운 제품이 더 빨리 출시될 수 있도록 보장하고, 더 넓은 범위의 하드웨어 플랫폼을 지원할 것이다.
- openMAX AL (Application Layer)
- OpenMAX AL은 애플리케이션과 멀티미디어 미들웨어 사이에 표준화된 인터페이스를 제공하며, 여기서 멀티미디어 미들웨어는 기대되는 API 기능을 수행하는 데 필요한 서비스를 제공한다. OpenMAX AL은 멀티미디어 인터페이스에 관한 애플리케이션 이식성을 제공한다.
- OpenMAX IL (Integration Layer)
- OpenMAX IL은 임베디드 및/또는 모바일 장치에 사용되는 오디오, 비디오 및 이미징 코덱을 위한 저수준 인터페이스 역할을 한다. 애플리케이션과 미디어 프레임워크는 멀티미디어 코덱 및 지원 구성요소(즉, 소스 및 싱크)와 통일된 방식으로 인터페이스할 수 있는 능력을 제공한다. 코덱 자체는 하드웨어 또는 소프트웨어의 어떤 조합일 수 있으며 사용자에게 완전히 투명하다. 이러한 성격의 표준화된 인터페이스가 없으면 코덱 공급업체는 모바일 장치에 통합하기 위해 독점적 또는 폐쇄적 인터페이스에 글을 써야 한다. IL의 주된 목표는 코덱에게 매우 다양한 미디어 시스템의 휴대성 문제를 해결하기 위해 훈련된 특화된 무기고를 사용하여 시스템 추상화를 제공하는 것이다.
- OpenMAX DL (Development Layer)
- OpenMAX DL은 실리콘 벤더가 새로운 프로세서에 구현하고 최적화한 다음 코덱 벤더가 광범위한 코덱 기능을 코드화하는 데 사용할 수 있는 포괄적인 오디오, 비디오 및 이미징 기능 세트를 포함하는 API를 정의한다. MPEG-4, H.264, MP3, AAC, JPEG와 같은 코덱의 최적 구현을 가능하게 하기 위해 FFT와 필터와 같은 오디오 신호 처리 기능, 컬러 공간 변환과 비디오 처리 원료를 포함한다. OpenMAX는 OpenMAX IL 구조를 사용하는 iDL과 Open에 비동기 인터페이스를 추가하는 ADL 모두를 통해 가속 동시성을 지원한다.MAX DL API.
Driving Collaboration
OpenMAX는 비독점적이고 로열티가 없는 표준으로 주로 멀티미디어 코덱, 게임 엔진 및 그래픽 라이브러리를 생산하는 미들웨어 개발자를 대상으로 한다. OpenMAX는 스마트폰, 게임 콘솔, 디지털 텔레비전 및 셋톱 박스를 포함하여 멀티미디어 성능이 중요한 모든 애플리케이션에 광범위하게 적용된다. 점점 더 많은 주요 이해관계자들의 협력과 지원을 통해, 광범위한 산업 지원과 채택을 장려하면서, 표준이 개발되고 촉진될 것이다.
워킹그룹은 기존 크로노스 멤버들의 입력과 경험을 환영하며, 멀티미디어 지식을 가진 신규 멤버들이 동참하여 해당 사양이 업계 전체와 관련된 혜택을 제공할 수 있도록 돕도록 권장하고 있다. 여기에는 반도체 제조업체, 독립 소프트웨어 벤더, 지적 재산권 벤더, 운영 체제 회사 및 최종 사용자에게 공급하는 OEM 또는 제품 개발 회사가 포함된다.
V4L2
V4L2 대략적인 아키텍쳐
카메라연동시 V4L2 의 연동 layer 구성은 대략 다음과 같다. (인터넷자료)
- TI 자료이지만 대략적인 내용은 비슷할듯.
- Camera Applications:
- Camera 애플리케이션은 Camera Driver가 제공하는 장치 노드에 액세스하는 모든 애플리케이션을 가리킨다. 이러한 애플리케이션은 이 설계의 범위에 포함되지 않는다. 그들은 카메라 드라이버가 사용되는 환경을 보여주기 위해 이곳에 왔다.
- V4L2 Subsystem:
- Linux V4L2 서브시스템은 Camera Driver의 작동을 지원하는 인프라로 사용된다. 카메라 애플리케이션은 주로 V4L2 API를 사용하여 카메라 드라이버 기능에 액세스한다. Linux 2.6 V4L2 구현은 V4L2 규격에 정의된 표준 기능을 지원하기 위해 사용된다.
- Video Buffer Library:
- 이 라이브러에는 V4L2가 있다. 비디오 버퍼 대기열 개체를 통해 비디오 버퍼를 깨끗하게 관리할 수 있는 도우미 기능을 제공한다.
- Camera Driver:
- 카메라 드라이버는 외부 디코더를 통해 비디오를 캡처할 수 있다. AM3517 캡처 하드웨어 기능이 추가된 V4L2 호환 드라이버 입니다. 이 드라이버는 전원 관리를 위해 Linux 드라이버 모델을 준수한다. 카메라 드라이버는 V4L2 레이어에 마스터 장치 드라이버로 등록된다. V4L2 계층에 추가된 슬레이브 디코더 드라이버는 새로운 V4L2 마스터 슬레이브 인터페이스 계층을 통해 이 드라이버에 부착된다. 현재 구현은 하나의 슬레이브 장치만 지원한다.
- Decoder Driver:
- 카메라 드라이버는 AM3517에 의존하지만 플랫폼과 보드는 독립적으로 설계된다. 보드 연결을 관리하는 것은 디코더 드라이버다. 디코더 드라이버는 새로운 V4L2 마스터 슬레이브 인터페이스를 구현해야 한다. 슬레이브 장치로 V4L2 레이어에 등록해야 한다. 디코더를 변경하려면 새 디코더 드라이버를 구현해야 하며, 카메라 드라이버를 변경할 필요가 없다. 각 디코더 드라이버는 기능 포인터를 통해 일련의 IOCTL을 마스터 장치로 내보낸다.
- CCDC library:
- CCDC는 데이터 입력 포트 역할을 하는 HW 블록이다. 그것은 병렬 인터페이스를 통해 센서/디코더로부터 데이터를 수신한다. CCDC 라이브러리는 CCDC 모듈을 구성하기 위해 API를 내보낸다. 마스터 드라이버가 부착된 센서/디코더와 카메라 드라이버로부터의 원하는 출력을 기반으로 구성한다.
V4L 개요
Video4Linux, 줄여서 V4L은 기기 드라이버 모음이며 Linux 시스템에서 실시간 비디오 캡처를 지원하는 API이다. 그것은 많은 USB 웹캠, TV 튜너 및 관련 장치를 지원하여 출력을 표준화하므로 프로그래머들은 자신의 애플리케이션에 비디오 지원을 쉽게 추가할 수 있다. MythTV, TVtime 및 TVHeadend는 V4L 프레임워크를 사용하는 대표적인 애플리케이션이다.
Video4Linux는 Linux에서만 사용 가능하지만 FreeBSD에 사용할 수 있는 'Video4BSD'라고 불리는 호환성 계층이 있음. 이것은 V4L에 의존하는 많은 프로그램이 FreeBSD 에서도 컴파일되고 실행될 수 있는 방법을 제공한다
V4L Version 1
V4L had been introduced late into the 2.1.X development cycle of the Linux kernel. V4L1 support was dropped in kernel 2.6.38.
V4L Version 2 (V2L2)
V4L2 is the second version of V4L. Video4Linux2 fixed some design bugs and started appearing in the 2.5.x kernels. Video4Linux2 drivers include a compatibility mode for Video4Linux1 applications, though the support can be incomplete and it is recommended to use Video4Linux1 devices in V4L2 mode. The project DVB-Wiki is now hosted on LinuxTV web site.
Some programs support V4L2 through the media resource locator v4l2://.
V4L2sink
v4l2sink는 v4l2 장치에 비디오를 표시하는 데 사용할 수 있습니다 (그래픽 하드웨어, TV 출력 등에서 제공되는 화면 오버레이)
V4L2src
v4l2src는 웹캠 및 TV 카드와 같은 v4l2 장치에서 비디오를 캡처하는 데 사용할 수 있습니다.
ALSA
ALSA 개요
ALSA(Advanced Linux Sound Architecture)는 Linux 운영 체제에 오디오 및 MIDI 기능을 제공한다. ALSA에는 다음과 같은 중요한 특징이 있다.
- Efficient support for all types of audio interfaces, from consumer sound cards to professional multichannel audio interfaces.
- Fully modularized sound drivers.
- SMP and thread-safe design (PLEASE READ THIS).
- User space library (alsa-lib) to simplify application programming and provide higher level functionality.
- Support for the older Open Sound System (OSS) API, providing binary compatibility for most OSS programs.
ALSA Library API
ALSA 라이브러리 API는 ALSA 드라이버에 대한 인터페이스다. 개발자는 자신의 애플리케이션에 대한 기본 ALSA 지원을 얻기 위해 이 API의 기능을 사용할 필요가 있다. ALSA lib 설명서는 이용 가능한 기능에 대한 귀중한 개발자 참고자료다. 여러 가지 면에서 그것은 튜토리얼이다. 최신 온라인 문서는 Alsa-lib CVS 소스에서 생성된다.
- ALSA library API reference : http://www.alsa-project.org/alsa-doc/alsa-lib/
The currently designed interfaces are listed below:
- Information Interface (/proc/asound)
- Control Interface (/dev/snd/controlCX)
- Mixer Interface (/dev/snd/mixerCXDX)
- PCM Interface (/dev/snd/pcmCXDX)
- Raw MIDI Interface (/dev/snd/midiCXDX)
- Sequencer Interface (/dev/snd/seq)
- Timer Interface (/dev/snd/timer)
임베디드 장치인 SALSA-Library와 같은 소규모 시스템에 대한 ALSA-library의 strip 버전이 있다. 일반 ALSA 라이브러리와 호환되는 소스 레벨 API로 설계되었지만 이진 호환성은 없다.
openCV
openCV 개요
- 링크 : https://docs.opencv.org/master/d1/dfb/intro.html / https://delftswa.gitbooks.io/desosa2016/content/opencv/Chapter.html
OpenCV는 오픈 소스, 플랫폼 간, 언어 간 컴퓨터 비전 라이브러리로, 컴퓨터 비전 응용 프로그램을위한 공통 인프라를 만들고 상용 제품에서 컴퓨터 비전의 사용을 확장하기 위해 고안되었습니다. 라이브러리는 2500 개 이상의 최적화 된 알고리즘으로 구성되며 CUDA 및 SSE와 같은 하드웨어 가속기를 지원합니다.
OpenCV는 모듈 식 구조로되어있어 패키지에 여러 개의 공유 또는 정적 라이브러리가 포함되어 있습니다. 사용 가능한 모듈은 다음과 같습니다.
- Core functionality (core) - the dense multi-dimensional array Mat 및 기타 모든 모듈에서 사용하는 기본 기능을 포함하여 기본 데이터 구조를 정의하는 소형 모듈.
- Image Processing (imgproc) - 선형 및 비선형 이미지 필터링, 기하학적 이미지 변환 (크기 조정, 아핀 및 원근 뒤틀기, 일반 테이블 기반 리 맵핑), 색 공간 변환, 히스토그램 등을 포함하는 이미지 처리 모듈.
- Video Analysis (video) - 모션 추정, 배경 감산 및 객체 추적 알고리즘을 포함하는 비디오 분석 모듈.
- Camera Calibration and 3D Reconstruction (calib3d) - 기본 멀티 뷰 지오메트리 알고리즘, 단일 및 스테레오 카메라 보정, 객체 포즈 추정, 스테레오 대응 알고리즘 및 3D 재구성 요소.
- 2D Features Framework (features2d) -두드러진 특징 검출기, 디스크립터 및 디스크립터 매처.
- Object Detection (objdetect) - 사전 정의 된 클래스 (예 : 얼굴, 눈, 머그잔, 사람, 자동차 등)의 객체 및 인스턴스 감지
- High-level GUI (highgui) -간 단한 UI 기능에 대한 사용하기 쉬운 인터페이스.
- Video I/O (videoio) - 비디오 캡처 및 비디오 코덱에 사용하기 쉬운 인터페이스.
- ... FLANN 및 Google 테스트 래퍼, Python 바인딩 등과 같은 다른 도우미 모듈도 있습니다.
컴퓨터 비전은 이미지 수집, 처리 및 분석을 다루는 학문입니다. 이러한 기능을 바탕으로 컴퓨터 비전은 가능한 한 이미지에서 유용한 정보를 최대한 추출하여 결정을 내릴 수 있습니다. 컴퓨터를 통해 이미지를 이해하고 유용한 정보를 빼내는 데 인간과 유사한 기능을 컴퓨터에 제공 할 수있는 방법에 대한 검색이 널리 퍼져 있습니다. 컴퓨터 비전은 자율 주행, 물체 인식 및 제품 품질 관리에 자주 사용됩니다.
컴퓨터 비전은 지난 수십 년 동안 크게 성장했으며 현재는 컴퓨터 비전 응용 프로그램에 사용할 수있는 많은 라이브러리가 있습니다. 보다 강력한 알고리즘, 더 저렴하고 강력한 하드웨어 및 더 나은 카메라의 조합으로 컴퓨터 비전의 광범위한 사용이 가능해졌습니다. OpenCV (Open Source Computer Vision Library)는 주로 실시간 응용 프로그램을 대상으로하는 널리 사용되는 컴퓨터 비전 및 기계 학습 라이브러리입니다. 원래 러시아 연구 센터에서 인텔 직원이 개발했지만 2012 년 비영리 재단이이 프로젝트를 인수했습니다.
이 라이브러리는 C 및 C ++로 작성되었지만 크로스 플랫폼, 언어 간 라이브러리로 설계되었으므로 Python, Java와 같은 언어 및 Windows, Linux, Mac OS X, Android 및 iOS와 같은 운영 체제를 지원합니다. 알고리즘은 C로 최적화되었으며 멀티 코어 프로세서 및 GPU를 활용합니다.
OpenCV는 기업이 애플리케이션의 소스 코드를 제공하지 않고도 제품에서 사용할 수 있도록 라이센스를 받았습니다. 따라서 OpenCV는 Toyota, Google 및 IBM과 같은 많은 회사에서도 사용되었습니다.
카매라
LVDS 카메라
LVDS 개요
Low-Voltage Differential Signaling
오늘날 고속 데이터 생성 및 처리에 대한 요구가 증대됨에 따라, 한 지점에서 다른 지점으로 데이터를 전송하는 능력이 전체 시스템 성능을 판가름하는 척도가 되었습니다. 따라서, 이러한 고속 데이터 전송의 문제를 해결하기 위한 솔루션으로 LVDS가 각광받고 있습니다. 소프트웨어 정의 라디오(SDR), 고성능 데이터 컨버터, 고해상도 평면 패널 모니터 및 디지털 텔레비전 등과 같은 디바이스는 이미 LVDS 기술을 통해 탄생되었습니다. 더욱 자세한 정보는 NI 측정 기본 사항 메인 페이지에서 확인하십시오.
LVDS(Low-Voltage Differential Signaling)는 고속 디지털 인터페이스로, 고속 데이터 전송 속도를 위한 낮은 전력 소비 및 뛰어난 노이즈 내성의 특징을 가집니다. ANSI/TIA/EIA-644로 표준화된 이후, LVDS는 여러 다양한 어플리케이션 및 업계에서 응용되고 있습니다. ANSI/TIA/EIA-644 표준은 LVDS 인터페이스 드라이버 출력 및 수신기 입력의 전기적 특성에 대해서만 정의하고 있으며, 특정 통신 프로토콜, 요구되는 프로세스 기술, 매체, 전압 공급 등은 정의하고 있지 않습니다.
이와 같이 다목적이며 특정 어플리케이션에 특화되지 않았다는 특징 때문에 LVDS는 여러 분야의 상용 및 군사 어플리케이션에 채택되고 있습니다. 또한, 대역폭에 대한 요구가 높아짐에 따라 고속 LVDS 연결에 기반한 PCI Express, HyperTransport와 같은 고성능 기술이 등장하고 있습니다. 낮은 전력 소모, 뛰어난 노이즈 내성 및 다양한 상용(COTS) LVDS 컴포넌트가 사용 가능해짐에 따라 LVDS는 다양한 국방 및 우주항공 어플리케이션에서 고속 데이터 전송을 위한 안정적이고 장기적인 솔루션으로 각광받고 있습니다.
차량에서의 LVDS 카메라
대용량 이미지 전송에 LVDS를 채택하는 이유는 일반 환경에 비해 진동 및 온도 조건이 가혹한 차량 환경에서 차동방식에 따른 강한 노이즈 내성, 최대 3.125 Gbps을 보장하는 빠른 통신속도와 이러한 속도를 보장하기 위한 낮은 전압 스윙, 마지막으로 낮은 전력소비 등을 보장하기 때문이다.
MIFI 카메라
MIPI CSI-3SM은 UniPro 네트워크에서 디지털 스틸 카메라, 고해상도 및 높은 프레임 속도 센서, 전화 회의 및 캠코더 기능을 통합하는 데 사용할 수있는 카메라 하위 시스템 인터페이스입니다.
MIPI CSI-3은 MIPI Camera Working Group에 의해 개발되었습니다.
이 사양은 v1.1으로 제공되며 물리적 계층이 차례로 MIPI M-PHY v3.0 사양으로 정의 된 MIPI UniPro v1.6 멀티 레이어 네트워크 스택에 대한 MIPI 카메라 응용 프로그램 계층을 정의합니다. CSI-3 및 UniPro는 높은 이미지 데이터 전송 속도, 빠른 양방향 대역 내 카메라 제어, 장치 검색 기능, 확인을 통한 데이터 전달 및 가상 채널을 사용하여 여러 데이터 스트림 관리를 총괄적으로 지원합니다.
MIPI M-PHY 물리 계층은 한 쌍의 단방향 직렬 링크를 사용하여 양방향 전송을 지원하며 속도에 따라 최대 6 개의 사전 정의 된 고속 직렬 전송 속도 (또는 고정 기어)를 전진 또는 후진 방향으로 제공합니다. 각 링크 내에서 각 방향의 각 2 와이어 레인에는 8B10B 라인 코딩을 사용하여 구현 된 자체 내장 클록이 있습니다.
4 개의 순방향 레인과 1 개의 역방향 레인 (10 개의 총 와이어)을 사용하는 기본 CSI-3 v1.1 링크 구성은 순방향으로 최대 14.88Gbps (8B10B 및 UniPro 오버 헤드를 포함한 사용 가능한 비트 레이트)를 지원할 수 있으며 일반적으로 1Mbps 또는 반대 방향으로 더. UniPro 스택 자체는 수신기로의 안정적인 패킷 전달을 보장하기 위해 일부 링크 대역폭 (주로 역방향)을 사용합니다. 하나의 순방향 및 하나의 역방향 레인 (4 개의 총 와이어)으로 구성된 최소 MIPI CSI-3 구성을 구현하는 카메라는 약 40FPS에서 12 BPP 4K 비디오를 전송할 수 있습니다.
M-PHY
M-PHY는 MIPI Alliance, PHY 워킹 그룹에서 개발하고 모바일 멀티미디어 장치의 요구를 목표로하는 고속 데이터 통신 물리 계층 표준입니다. 이 사양의 세부 사항은 MIPI 회원 조직의 소유이지만 오픈 소스에서 상당한 지식을 수집 할 수 있습니다. 많은 업계 표준 설정 기관이 M-PHY를 Mobile PCI Express, Universal Flash Storage 및 SuperSpeed Inter-Chip USB의 물리적 계층을 포함한 사양에 통합했습니다.
M-PHY는 일반적으로 하나의 회로 카드 내 두 구성 요소 사이의 임피던스 제어 트레이스 또는 짧은 유연한 플랫 케이블을 통해 저전압 차동 신호 (LVDS와 유사하지만 LVDS와 유사)를 사용하여 전송되지만 M-PHY는 광 미디어 변환기를 지원하도록 설계되었습니다. 송신기와 수신기 사이의 거리를 넓히고 전자기 간섭 문제를 줄입니다.