I was wondering how hard would it be to port the Touchless SDK to Windows CE. Could you please tell me what are the main features (libs from the .Net Framework and such) that the SDK uses? I want to map what is not covered by the compact framework and
maybe contribute to it.
Thanks a lot in advance,
Feb 15, 2009 at 11:14 PM
I have no experiece with the compact framework, but I'll try to assist you anyway.
Here is a list of the namespaces and their objects employed by TouchlessLib:
System; (Comparison, DateTime, EventArgs, EventHandler, IDisposable, IntPtr)
System.Collections.Generic; (Dictionary, IList, List)
System.Drawing; (Bitmap, Color, Point, Rectangle, RotateFlipType)
System.Drawing.Imaging; (BitmapData, ImageLockMode, PixelFormat)
System.Runtime.InteropServices; (MarshalAs, MarshalAsAttribute, UnmanagedType)
Here is a list of the resources employed by WebCamLib:
Note that these might change as we're planning to update WebCamLib to C#.
using namespace System; (IntPtr, String)
using namespace System::Runtime::InteropServices; (COMException, GCHandle, Marshal, MarshalAsAttribute, UnmanagedType)
#include <dshow.h> (CLSID_CaptureGraphBuilder2, CLSID_FilterGraph, CLSID_SystemDeviceEnum, CLSID_VideoInputDeviceCategory, FORMAT_VideoInfo, IBaseFilter, ICaptureGraphBuilder2, IGraphBuilder, IID_IMediaControl, IMediaControl, LPSTR, LPWSTR, MEDIASUBTYPE_RGB24, MEDIATYPE_Video,
#include <strsafe.h> (hmm, I'm not sure we actaully use anything from this header)
#include <qedit.h> (ISampleGrabberCB, CLSID_SampleGrabber, CLSID_NullRenderer, IID_ISampleGrabber)
Please share any advice you might have on maximizing compatibility with the compact framework.
I'd be happy to see Touchless usable on mobile devices, although I'm dubious of the performance.
Perhaps we could collaborate on a 'light' version of the library.
I don't think "System.Runtime.InteropServices; (MarshalAs, MarshalAsAttribute, UnmanagedType)" is supported at Compact Framework
Also to get Camera images not sure if there's standard API on those devices, maybe some PocketPC OS call (could make a separate executable that you call with appropriate params and it saves a file that you then grab - could be fast since those devices use memory
and not a disk, not sure if fast enough though - else could talk to it using TCP/IP or Pipes maybe if they're supported)