본문 바로가기

Hello CE,Mobile

[Windows Mobile] Programming Camera Driver #5

[Windows Mobile] Programming Camera Driver #5

Camera Property Sets

   

Camera application DirectShow 통해, brightness, contrast, exposure, focus, flash 등의 미리 정의해 놓은 properties query 또는 set 있다. DirectShow property sets 상의 properties 이용하여, 미리 정의해놓은 camera features query 또는 set 있다.

   

Properties 자동 또는 수동으로 제어된다. 또한 Camera hardware features custom properties 구현 가능하다. 만약 camera driver 자신의 custom properties 구현한다면 반드시 그러한 properties document 해야 하며, end user에게 그러한 기능을 나타내기 위해, control panel application 제공해야 한다.

   

아래의 table camera driver 위한 default property sets 보여준다.

   

PROPSETID_VIDCAP_CAMERACONTROL

Camera devices 제어에 사용된다. 제공되는 제어는 ITU T.RDC standard 따른다. 이러한 property set 제공은 옵션 사항이며, 오직 camera control settings 제공하는 device 경우, 반드시 구현해야만 한다. set 포함된 property items CSPROPERTY_VIDCAP_CAMERACONTROL 목록에 열거되어있다.

   

PROPSETID_VIDCAP_VIDEOPROCAMP

property set analog 또는 digital domain상의 image color attributes 변경할 있다. property set brightness, contrast, hue 그리고 image quality settings 변경 가능한 device 위해 구현되어야 한다. 이러한 property set 지원은 옵션 사항이며, 오직 이러한 제어를 제공하는 device상에서 반드시 구현되어야 한다.

   

property set 포함된 property items CSPROPERTY_VIDCAP_VIDEOPROCAMP 목록에 열거되어 있다.

   

PROPSETID_VIDCAP_VIDEOPROCAMP property set IAMVideoProcAmp interface 구현함에 있어 필요한 properties 포함하고 있다.

   

PROPSETID_VIDCAP_VIDEOPROCAMP property set 상의 property 범위와 default 값을 포함하고 있다. Property set 범위는 parameters 프로그램적인 제어를 허용하는, 일상에서 사용하는 단위로 정의되어있다. device 이러한 범위의 부분 step size 정의할 있다. 이것은 sliders 또는 scroll bars 같은 controls step 맞추어 동작하는 것을 보여주기 위해 사용된다.

   

예를 들어, brightness 위한 이론적인 범위는 -100에서 100 IRE 단위로 정의되어있다. IRE NTSC에서 정의한 video levels 측정하는 단위로, 0 blanking 또는 full-black level 의미하며, 100 pure white 나타낸다. 만약 VideoProcAmp pure black input signal 변경하였다면(camera lens 완전히 덮어버리는 상황), 그것이 pure white 나타나도록 하는 원인이 되며, 그때 그것의 범위는 0에서 100 IRE 것이다.

   

대부분 VideoProcAmps 제한된 범위와 brightness 제어를 제공한다. 범위를 측정하는 하나의 방법은 camera lens 덮고, 조정 범위에 따른 output signal 결정하여, 값을 IRE 단위로 표준화 하면 된다. 범위가 측정된 이후에, 단계적인 값은 최대값과 최소값을 얻어 그것을 나눔으로써, 값을 결정할 있다. (max + min)/N

   

주의. Property set values 개선된 입상을 위해 100으로 나누어진다.

   

   

   

Adapter Properties for Cameras

   

Adapter properties 다음과 같은 두가지 categories 나누어진다: control-related and video-related. Control properties pan, tilt, zoom 같은 camera hardware 제어하는데 사용된다. Video properties brightness, sharpness 등의 video features 나타낸다.

   

모든 adapter properties CSPROPERTY structures 배열 안에 포함되어있다. Property set에서 지원되는 property CSPROPERTY_MEMBERSLIST structures 배열 안에 서술되어있다. 배열은 static array property 대한 모든 가능성 있는 범위와 default 값을 포함하고 있다.

   

Data structures formats 아래와 같다.

   

typedef struct {

const GUID* Set;

ULONG PropertiesCount;

const CSPROPERTY_ITEM* PropertyItem;

ULONG FastIoCount;

const CSFASTPROPERTY_ITEM* FastIoTable;

} CSPROPERTY_SET, *PCSPROPERTY_SET;

typedef struct {

ULONG PropertyId;

BOOLEAN GetSupported;

ULONG MinProperty;

ULONG MinData;

BOOLEAN SetSupported;

const CSPROPERTY_VALUES* Values;

ULONG RelationsCount;

const CSPROPERTY* Relations;

LPVOID RESERVED1;

ULONG RESERVED2;

} CSPROPERTY_ITEM, *PCSPROPERTY_ITEM;

   

CSPROPERTY_SET table[] =

{

CSPROPERTY_SET set1,

CSPROPERTY_SET set2,

. . .

}

   

CSPROPERTY_ITEM set1_item_table[] =

{

CSPROPERTY_ITEM property1_in_set1,

CSPROPERTY_ITEM property2_in_set1,

CSPROPERTY_ITEM property3_in_set1,

. . .

}

   

. . .(arrays for each property. . .)

   

   

   

   

Adapters, Pins, and Streams

   

Pins

Pin object hardware adapter 의해 지원되는 video streams 나타낸다. adaptor multiple pins 지원한다. pin installable device driver이다. Windows Embedded CE-based camera drivers full streaming video drivers 아니기 때문에, pin 실행되는 하나의 stream 가지는 것으로 충분하다. adapter 아래에 보이는 모든 pin type 또는 어떤 type이라도 지원할 있다.

   

Pin Type

GUID

Preview

PINNAME_VIDEO_PREVIEW

Capture

PINNAME_VIDEO_CAPTURE

Still

PINNAME_VIDEO_STILL

   

Driver clients CSPROPERTY_PIN_CTYPES CSPROPERTY_PIN_CATEGORY properties (see CSPROPERTY_PIN) property set 사용함으로써, pins 수와 camera driver에서 지원하는 pin categories query 있다.

   

Streams

Stream capture device에서 data 처리하는 device 흐르는 captured data이다. Capture device 이용하여, preview, capture, 그리고 still 대한 multiple streams 통합할 있다.

   

CS_DATARANGE_VIDEO structures 배열은 camera driver에서 지원하는 pin format전체범위에 대한 상세한 내용을 제공하는데 사용된다. 배열은 pin으로부터 생성된 하나의 stream 대한 잠재적인 모든 formats 열거하고 있다. 예를 들어, stream RGB16, RGB24, YVU9 그리고 JPEG capture format 제공할 있다.

   

세개의 값은 하나의 stream 확인하는데 사용된다. 이러한 값들은 major type, subformat, 그리고 specifier 구별된다. Video capture stream 위한 major format CSDATAFORMAT_TYPE_VIDEO이며, specifier CSDATAFORMAT_SPECIFIER_VIDEOINFO이다. 하나의 stream 대한 subformat 값은 사용된 color space 같은 특별한 video data type 상세내용을 전달하는데 사용된다.

   

Subformat 개개의 low-order bytes BITMAPINFOHEADER structure biCompression MEMBER에서 사용된 FOURCC 값에 match 되어야 한다. 예를 들어, 아래의 GUID FOURCC (YVU9) video format 식별하고 있다.

39555659-0000-0010-8000-00AA00389B71

59 = 'Y'

56 = 'V'

55 = 'U'

39 = '9'

   

CS_DATARANGE_VIDEO structure 두개의 서로 다르지만 같은 용도로 제공된다. 첫째로, camera driver 초기화 , 모든 format 지원할 있음을 알리기 위해, CS_DATARANGE_VIDEO structures 배열을 return한다. 둘째, 특별한 format 선택되었을 , CS_DATARANGE_VIDEO structure 제안된 format 지원가능한지를 결정하기 위해, driver 문의하는데 사용된다. 협상 중에, clients 오직 VideoInfoHeader member 내용만 변경가능하며, CS_DATARANGE_VIDEO 모든 다른 member level 변경할 없다. Driver 요청된 parameters 검증하면, 적절한 members 값을 채워, CS_DATAFORMAT_VIDEOINFOHEADER structure return한다.

이러한 일을 하는 Properties CSPROPERTY_PIN_DATARANGES CSPROPERTY_PIN_DATAINTERSECTION (see CSPROPERTY_PIN)이다. property query 대한 property 값은 CSDATARANGE and CSDATAFORMAT이다.

   

October 10, 2007

from Hoya^^

   

원본 위치 <http://www.devpia.com/Maeul/Contents/Detail.aspx?BoardID=60&MAEULNO=23&no=268&page=2>