IP Video Source: Compatibility Issues

I received a few emails recently with questions about compatibility issues between IP Video Source and other applications. The compatibility issues typically fall into classes:

  1. An application is sensitively expecting the device to be real camera, with specific requests, e.g. to be able to change resolution of video capture
  2. An application is explicitly requesting that video device is a device backed by kernel driver
  3. Inaccurate use of DirectShow API on application side, bugs and incorrect assumptions

For a DirectShow developer a reference video capture application is Windows SDK AMCap. If device works with AMCap, then application should basically be able to pick it up as well, or it has certain code issues. Then AMCap is available in source as SDK sample and its code is available.

Specific titles which had compatibility issues with IP Video Source were: Skype, Unity 3D, Open Broadcaster Software (OBS). I have no plans to investigate compatibility with Skype: something is really wrong on Skype side, and they prevent from attaching debugger to their application. Unity 3D was unreasonably assuming that a video device has to be a WDM Video Capture Filter backed device, ignoring it otherwise. OBS was attempting to blacklist certain group of devices (for specific reasons I am not aware of) and they way it was done was also blacklisting IP Video Source.

IP Video Source 1.0.3 works this around the way it can. If you are already Unity 3D/Open Broadcster Software user and you have IP Video Source installed, you want to re-add cameras in IP Video Source. The easiest is to open camera management dialog, copy everything into clipboard, then delete all cameras and then paste them back. New cameras get correct configuration right from the start.

Additionally, IP Video Source 1.0.3 updates include:

  • JpegVideoSourceFilterRegistry COM class which allows adding/managing cameras programmatically (no sample code, but COM interfaces on type library are self-describing)
  • Automatic conversions to YUY2, UYVY on application request in Windows Vista+, on application request and to better mimic real cameras, such as especially laptop webcams, that often deliver 4:2:2 YUV video
  • added EC_DYNAMICMEDIATYPECHANGE event to notify graph owner that filter hit necessity to change video resolution
  • added IQualityControl implementation on output pin (e.g. DeckLink SDK video renderer filter makes unreasonable assumption that this optional interface is implemented)
  • worked around a bug in parsing D-Link DCS-930LB1 camera (for the second time! there was a related issue a few years ago with a predecessor of this camera)

There is also some sample C++ and C# code published (rather code snippets) that demonstrate basic operations.

Download links

IP Video Source: Support for HTTPS protocol

This publishes a small update to IP Video Source tool to expose M-JPEG/JPEG video streams as DriectShow video devices. The utility now accepts https:// URL scheme and pulls video over secure connections. Not every camera has support for HTTPS, however many do including those from UDP Technology, Axis etc.

The update also includes other minor fixes including more reasonable memory allocation, and hotfix for D-Link DCS-930L model, which – to mention – is an excellent indication of quality of camera firmware nowadays (it has nothing to do with D-Link, most of vendors do things like this):

#pragma region D-Link DCS-930L Fix
// NOTE: This is just ridiculous, the camera sends boundary with space without quotes AND misuses -- prefix
if(sValue.Compare(L"multipart/x-mixed-replace;boundary=--video boundary--") == 0)
    sValue = L"multipart/x-mixed-replace;boundary=\"video boundary--\"";
#pragma endregion

Download links

IP Video Source: Pure JPEG URLs and Software Version

This does not update the software with new features, but there are a few simple things worth mentioning explicitly.

The first is that virtual DirectShow camera device can be set up with both M-JPEG and JPEG URLs. That is, IP cameras which do not implement M-JPEG, or implement it in a buggy way (there is a *huge* deal of such out there) can still be set up to send video as individual video frames/images as long as they implement JPEG snapshots. This is taking place often at a lower frame rate, but still works.

The driver will automatically detect type of URL (by response from the device) and will choose best access method for the given URL.

Second is that if you are looking for IP Video Source software version, such as to check against available updates, it is here on the UI (right click the caption):

IP Video Source: 64-bit version, resolution flexibility, Adobe FMLE

The IP Video Source update provides several improvements to the driver:

  • copy/paste feature to backup, restore, or synchronize installed devices between 32-bit and 64-bit versions
  • 64-bit version and .MSI
  • dynamic video resizing (via Video Resizer DSP)
  • Adobe FMLE compatibility

Updates in greater detail follow.

Device Copy/Paste Feature

The video device management window is providing Copy and Paste buttons, which let user transfer device information, including name and settings, through clipboard for various purposes:

  • save data in order to be able to restore devices later
  • restore devices from saved list, or re-create from a list saved on another machine
  • duplicate a device
  • synchronize devices between 32-bit and 64-bit versions

The device data is a text, one line per device, lines in comma-separated values (CSV) format.

(more…)

DirectShow Video Source Filter for JPEG and M-JPEG IP Cameras

This implements a DirectShow driver/wrapper over a HTTP based JPEG/M-JPEG streamed video, widely available with IP cameras. Once installed, it provides a Start Menu shortcut to manage video capture devices, where a user can add/remove devices. The devices are automatically registered with DriectShow and are available to applications.

The compatibility list includes:

  • Windows SDK AmCap Sample (reference)
  • VideoLan VLC
  • Skype (see below)
  • Google Talk Video Chat
  • Luxriot (as rather an example as Luxriot has its own generic JPEG/M-JPEG device driver, however this still demonstrates compatibility and interoperability of applications)
  • GraphEdit, GraphStudio and similar tools

(more…)

DHCP Server: Flexible IP address ranges, GUI improvements

Welcome update in Alax.Info DHCP Server to provide flexibility in IP address allocation ranges and more features.

The application does not require that IP address block is a single range of addresses. While this is still cool for simplicity, some guys out there have really huge networks with specific requirements. From now on, an “advanced” links opens an additional opportunity to:

  • define multiple blocks of IP addresses to get from
  • opportunity to provide exclusion addresses, ranges and even wildcards

The syntax is straightforward:

  • one range per line, x.x.x.x-y.y.y.y
  • optional exclusion list following in brackets
    • excluded items are separated by comma
    • excluded item may be a single address x.x.x.x, range x.x.x.x-y.y.y.y or a wildcarded address/range x.x.*.x-y.y.*.y

Additionally, it is possible to include DNS Domain Name (option 15) with the DHCP responses:

The GUI makes it clear that it is possible to provide multiple addresses using comma separation. While this was possible before UI did not make it clear enough.

More to this,it is possible to export lease list into clipboard in comma-separated value (CSV) format and transfer data into, e.g. Microsoft Excel:

Updated Alax.Info DHCP Server is cooler and fancier at the same unbelievable price: free for personal use, commercial license for premium features, non-personal use and technical support.