본문 바로가기
Education/Bit 18th

[Windows Mobile] Programming Camera Driver #1

by ★용호★ 2009. 12. 6.

Windows Mobile을 이용한 Pocket PC 및 Smart Phone에서 Multimedia 기능 중 하나로 Camera가 있습니다.

일반 Phone을 포함하여, Mobile Device 상의 Camera 사용 범위 및 정도는 다들 알고 계시리라 생각됩니다.

요즘은 Video Call을 위해 Mobile Device 상의 Camera가 두개 (Main Camera and VTCall Camera) 장착되고 있으며, 그 쓰임 또한 일반적인 촬영 넘어 Multi-media App와 연동 등 다양해지고 있습니다.

 

 User Interface Conference 등에서는 Camera를 이용한 사용자의 모션 인식을 통해 특정 어플리케이션 실행 및 기능 제어등에 관한 내용이 나오고 있으며, 화소가 높은 Camera Sensor를 Mobile Device에 장착함으로써, Camera 검증을 위한 비교 시료를 일반 Digital Camera와 비교하는 등 Camera와 관련된 부분은 앞으로도 많은 발전이 있을 것으로 보입니다. (개인적인 생각입니다. ^^;)

 

 많은 분들이 Mobile Device상의 System 개발에 대한 부분에 접근이 힘들어 (Hardware 부재등의 이유), 일반적으로 Application 개발을 먼저 시작하며, 기회가 되거나 현업에 근무할 경우, System 개발의 기회를 가지게 됩니다.

따라서 Camera Application 개발에 대한 부분을 먼저 다루어야 하나 Camera Application의 경우, DirectShow에 대한 방대한 내용이 함께 들어가는 부분이라 글을 올리기에 쉬운 부분은 아니라 생각하여, Camera Driver 개발 부분을 먼저 다루도록 하겠습니다.

 

 "Programming Camera Driver"에 대한 내용은 Microsoft에서 제공하는 Document를 기반으로 작성되었으며, 해당 Document상의 포함된 Camera관련 모든 내용(아마도 Camera Driver 개발에 참고가 될만한 내용 정도)을 올리도록 하겠습니다.

덧붙여, Camera Driver 관련 내용이 강좌&팁 게시판에 모두 마무리 될 수 있도록 하겠습니다.

 

 Camera Driver에 대한 내용은 현업에서 해당 드라이버를 개발하시는 분들께는 참고 정도가 될만한 내용 정도이며, Driver 개발에 관심이 있으신 분들께는 Camera Driver를 개발함에 있어 고려되어야 할 부분이나 전체 구조에 대한 이해 정도가 될것으로 보입니다.

 

너무나 미비한 글이지만 혹 Camera를 개발해 보고 싶어 하시는 분들게 참고가 될만한 내용이 되었으면 하는 바램입니다.

그럼 내용은 아래와 같습니다.

 

 

[Windows Mobile] Programming Camera Driver #1

Camera Driver Overview

Windows Embedded CE Video Camera Device Driver Interface video and still image capture devices를 위한 기본적인 지원을 제공한다. 이 문서는 camera driver를 개발하는 개발자를 위해 계획되었다. Camera applications 개발자들이 Embedded CE camera hardware가 어떤 방식으로 통신을 하는지를 알기 위해, 이 문서를 이용할 수는 있지만, camera applications camera driver와 직접적인 통신을 할 수 없다. Camera applications camera control 하고 통신하기 위해서는, DirectShow video capture infrastructure가 제공하는 middleware layer를 사용해야만 한다. Camera device driver interface를 주로 사용하는 것은 DirectShow video capture filter이다. Camera driver documentation client 또는 applications에 초점을 맞추고 있다면, 그것은 실제로 DirectShow components를 의미하는 것이다. Application camera’s device driver interface를 직접적으로 참조가 필요한 부분들은 아래와 같다.

Device enumeration routines

Test and diagnostic software

 

Camera Characteristics

아래의 리스트는 Windows Embedded CE camera driver model을 위해 디자인된 capture device type에 대한 특징을 보여주고 있다. Device는 압축 또는 압축되지 않은 video stream segments를 하나의 파일로 capture한다. Capture에 필요한 정확한 시간은 디바이스상의 processing power 및 저장영역에 달려있다. 아주 짧은 시간에 작업이 이루어지는 것이 일반적임에도 불구하고, driver architecture는 정해지지 않은 길이의 recording도 가능하도록 하고 있다. Device video capture preview할 수 있도록 viewfinder를 제공한다. Full motion video 외에도 device still image capture를 지원한다. Windows Embedded CE camera driver model camera가 장착된 cell phone 또는 PDA와 같은 일반적은 사용자 디바이스를 위해 작고 편리하며, 실제 camera와 같은 시나리오를 가지고 디자인된다. Driver model full-featured digital camera 또는 video conferencing과 같은 앞선 capture 시나리오는 제공하고 있지 않다. 정확하고, 높은 Quality still image 기능은 digital camera와 같은 다른 디바이스들의 앞선 기술을 취한다. Camera device driver model은 하나의 디바이스에 multiple camera를 위한 특정한 시나리오를 제공하지 않음에도 불구하고, 앞으로는 multiple camera 뿐만 아니라 pluggable camera까지 지원할 것이다.

 

Hardware Design

아래의 table은 공통의 camera hardware 기술을 위한 일반적인 design goals를 요약한 것이다.

Hardware

Description

DMA capability

Camera driver platform상의 DMA capabilities등 필요한 장점을 사용해야 한다.

DSP support for encoding

Small devices 상의 실시간 encoding 하기 위해, camera driver hardware-based encodingdecoding을 지원하는 interfaces를 제공한다.

Asynchronous I/O operation

Camera driver CPU camera hardware 사이의 video frame의 효과적인 streaming과 최대의 parallelism을 제공하기 위해, 동기화된 I/O operation을 제공해야 한다.

Camera control properties

Camera driver hue(), saturation(채도)등과 같은 기본적인 camera properties를 나열하기 위한, 하나의 interface application에 제공해야 한다. Driver는 또한 camera devices를 위해, custom property sets를 알리기 위한, 한가지 방법을 제공해야 한다.

Camera driver model video ports는 제공하지 않는다.

 

Performance Terms

아래의 table camera performance metrics를 논의시, 일반적으로 사용되는 다양한 용어를 기술하고 있다.

 

Metric

Description

Lag time

Shutter가 눌러지고, camera가 사진을 실제로 가져올 때까지의 시간

Shutter Lag (pre-focused)

Shutter가 눌러지고, 이미지가 auto-focus 없이 획득될 때까지의 시간

Shutter Lag (auto focus)

Shutter가 눌러지고 이미지가 auto-focus와 함께 획득될 때까지의 시간

Image file acquisition delay

Shutter가 눌러지고 이미지 파일 만들기 및 닫기까지의 시간

Preview startup latency

Preview window가 시작되고 이미지가 화면상에 나타날 때까지의 시간

Preview latency

실제 상황에서 이벤트가 발생하고 그 이벤트가 preview window상에 등록될 때까지의 시간

Memory Limitations

System memory 양이 encoding process사이에 요구된다.

Video Encoding speed

Video clip을 레코딩 하는데 필요한 시간으로, 이벤트가 발생하고 그 이벤트 이후에 encoding까지의 시간

Inter-frame delay

두장 연속 촬영 사이의 최소의 시간.

Rendering times for frames

아래와 같은 conditions을 바탕으로, 디스플레이 상에 하나의 프레임을 그리는데 필요한 시간의 양:

Color conversion needed

Decoding needed

Uncompressed RGB

 

 

댓글