PDA

View Full Version : Display Special Property Dialog



diram
May 23, 2007, 11:50:37
Hello,

I am working with some OEM USB camera now. There is WDM driver. I need to display some extra property page as seen at attached image5.jpg. Pages at image5.jpg was captured from AverMedia's EZCapture simple application working probably in old VfW mode. Second picture image6.jpg is IC Control's 3.0.3 embedded dialog for Device source and Device properties but there is no any special page avaiable. I need this page to manually setup exposure time. Is there any chance to detect and invoke "Video Image" property page?

Jarda Jedlinsky

Stefan Geissler
May 23, 2007, 13:50:38
Hello,

The "auto exposure level" shown on the camera driver's dialog should be the same as as "Auto Exposure Reference Value" of IC Imaging Control. This property is not standard DirectShow property, thus it is not listed on the IC Imaging Control built in property dialog. The "Auto Exposure Level" property is provided by an own interface of the camera and I can not predict, whether this interface is provided to third party programmers

Thus the only way is to query the interface to the driver's dialogs in your application and show the dialog pages on your own. Sorry for not having a better idea.

diram
May 28, 2007, 14:43:21
Hello,

I am not so low level programmer, but I think there is some mechanism how to enumerate some added property sheet that the device driver offers. Here is some fragment from driver inf file:

; ICustomCameraProp
HKCR,CLSID\{85548EFB-86C8-4e57-B2FA-802B1B86C2AA},,,%CustomPlugIn%
HKCR,CLSID\{85548EFB-86C8-4e57-B2FA-802B1B86C2AA}\InprocServer32,,,etProp.ax
HKCR,CLSID\{85548EFB-86C8-4e57-B2FA-802B1B86C2AA}\InprocServer32,ThreadingModel,,Both
; This IID is aggregated for the filter given the CLSID of the property set
HKLM,System\CurrentControlSet\Control\MediaInterfa ces\{85548EFB-86C8-4e57-B2FA-802B1B86C2AA},,,%CustomPlugIn%
HKLM,System\CurrentControlSet\Control\MediaInterfa ces\{85548EFB-86C8-4e57-B2FA-802B1B86C2AA},IID,1, FB, 8E, 54, 85, C8, 86, 57, 4e, 0xb2, 0xfa, 0x80, 0x2b, 0x1b, 0x86, 0xc2, 0xaa

; CustomCamera Property Page
HKCR,CLSID\{3607A27C-2A4E-4437-A8D5-D273689A04BC},,,%CustomPropPage%
HKCR,CLSID\{3607A27C-2A4E-4437-A8D5-D273689A04BC}\InprocServer32,,,etProp.ax
HKCR,CLSID\{3607A27C-2A4E-4437-A8D5-D273689A04BC}\InprocServer32,ThreadingModel,,Both

; Associate property set with property page
HKLM,System\CurrentControlSet\Control\MediaSets\{8 5548EFB-86C8-4e57-B2FA-802B1B86C2AA}\PropertyPages\{3607A27C-2A4E-4437-A8D5-D273689A04BC},,,%CustomPropPage%

I think there is some chance to get these sheets generally and add them to your Device dialog.

Jarda Jedlinsky

Stefan Geissler
May 29, 2007, 11:49:21
Hi Jarda,

Thank you for posting this code. These properties are camera specific and proprietary. IC Imaging Control is hardware independent, thus is it hard to implement proprietary functionality. If the driver exposes its special properties through an own KSProperty set and it is published, then an adapter could be built.

diram
June 6, 2007, 11:19:58
Hello,

I did some research with these results (working in Delphi):

There is no problem to list PropertyPages available for selected device. I used QueryInterface(IID_ISpecifyPropertyPages, ...), GetPages(...), create IPropertyPage instance for every page and use Activate and Show methods. Content of every property page is linked to my custom TTabSheet via its Handle. So I have my own PageControl with a number of TabSheets with properties of selected device.

I think there is two ways how to solve my problem:

1) ICImagingControl component gives me IUnknown pointer of selected device and I will create my own dialog with listed property pages of this device. It is fastest way.

2) ICImagingControl adds these property pages to its own ShowDeviceSettingDialog, after last tab for example. Small problem is that the list of property pages include also standard pages not only added by driver, maybe some filtering of standard or known and unwanted pages (via GUIDS ?) should solve this. See attached image. First Tab is provided by Windows, there are standard controls like Brightnes, Contrast etc., second Tab is property page added by device driver (etProp.ax). Also SaveDeviceState probably don't know anything about params provided by the added property pages, but this is not so big problem and is acceptable.

Both ways are universal for every connected video device. So I think there is possibility to enhance your product.

Jarda Jedlinsky

Johannes Vogel
June 7, 2007, 17:40:16
Hi,

2) will not work because of the problems you already mentioned (2 pages with controls for the same properties, no way for Imaging Control to read an write back the proprietary properties).

1) Seems to be a promising approach. Could you post working Delphi code that uses a IUnknown pointer to display the driver's property pages?

diram
June 14, 2007, 11:53:27
I prepared fragment of code (ftp://tis_ftp:Imaging199@ftp.theimagingsource.com/Imaging/101abc/camproperty.rar). It is Delphi 6 project. I attached whole project files include compiled code, hope it will work. There is one main dialog where the video devices are enumerated and one dialog for showing property sheets. Enumeration gives me IMonikers list, IBaseFilter (the interface object that I want to get from IC [or maybe IMoniker is better to get]) is binded from IMoniker of selected device and after that is used to build property sheets dialog. All is very simple.

Jarda Jedlinsky

Stefan Geissler
June 14, 2007, 14:52:31
Hello Jarda,

Thank you very much for your sample code!

diram
July 11, 2007, 09:40:24
Any results or solutions for this problem ?

Stefan Geissler
July 11, 2007, 09:45:32
Diram,


Any results or solutions for this problem ?

I thought so from your previous posts. We did not do any changes on IC Imaging Control do display the driver's property pages right now.