<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Fooling Around</title>
	<atom:link href="http://alax.info/blog/feed" rel="self" type="application/rss+xml" />
	<link>http://alax.info/blog</link>
	<description>// Software Production Line</description>
	<lastBuildDate>Sun, 19 May 2013 06:23:03 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>DeckLinkCapabilities: A Printout of Capabilities of Blackmagic Design/DeckLink Hardware</title>
		<link>http://alax.info/blog/1454</link>
		<comments>http://alax.info/blog/1454#comments</comments>
		<pubDate>Sun, 12 May 2013 20:35:11 +0000</pubDate>
		<dc:creator>Roman</dc:creator>
				<category><![CDATA[Utilities]]></category>
		<category><![CDATA[Video]]></category>
		<category><![CDATA[blackmagic]]></category>
		<category><![CDATA[capture]]></category>
		<category><![CDATA[decklink]]></category>
		<category><![CDATA[tool]]></category>
		<category><![CDATA[utility]]></category>

		<guid isPermaLink="false">http://alax.info/blog/?p=1454</guid>
		<description><![CDATA[The tool provides a user- (well, actually a developer-) friendly printout of capabilities accessible via Blackmagic Design DeckLink SDK for DeckLink series of hardware. This covers features of DeckLink and Intensity series of hardware for video/audio capture, accessible via vendor&#8217;s SDK. The data is printed out in Markdown format, easy to read on its own [...]]]></description>
				<content:encoded><![CDATA[<p>The tool provides a user- (well, actually a developer-) friendly printout of capabilities accessible via <a href="http://www.blackmagicdesign.com/support/detail/register?sid=3945&amp;fid=0&amp;did=36652&amp;alt=true&amp;sdk=true">Blackmagic Design DeckLink SDK</a> for DeckLink series of hardware. This covers features of DeckLink and Intensity series of hardware for video/audio capture, accessible via vendor&#8217;s SDK. The data is printed out in Markdown format, easy to read on its own and even nicer on <a href="http://markdownpad.com/">Markdown Pad</a>.</p>
<p><img src="http://alax.info/blog/wp-content/uploads/2013/05/Image001.png" alt="Alax.Info DeckLinkCapabilities" width="541" height="314" class="alignnone size-full wp-image-1455" /></p>
<p><img src="http://alax.info/blog/wp-content/uploads/2013/05/Image002.png" alt="Alax.Info DeckLinkCapabilities Output on MarkdownPad" width="967" height="581" class="alignnone size-full wp-image-1456" /></p>
<p>The hardware is good, and the SDK is designed nicely as well, however the product range is wide and capabilities vary. So do driver and SDK versions, and the tool is handy to quick check the information out. One might want to use SDK for many reasons, including the following ideas I am sharing off the top of my head:</p>
<ul>
<li>wanting to leverage the full feature set of the hardware</li>
<li>operate at minimal overhead</li>
<li>user a simpler API compared to generic media APIs</li>
<li>being unsatisfied with DirectShow interface provided by Blackmagic Design</li>
</ul>
<p><span id="more-1454"></span></p>
<p>The buttons work as follows:</p>
<ul>
<li>Update button refreshes the list, hold Control while pressing to enable edit control, e.g. to type in a comment or otherwise a message</li>
<li>Submit posts the data to this website, hardware models vary so why not post me something rare (so you can add your &#8220;Hi&#8221; via Refresh button &#8211; see above)</li>
</ul>
<p>The application will display the following items:</p>
<ol>
<li>Iterates over enumerator and list the devices, and exposed well known interfaces</li>
<li>Lists available attributes and configuration</li>
<li>Lists inputs (9.5 or 9.2 versions) and outputs (9.5 version)</li>
<li>Lists details of supported formats on the devices</li>
</ol>
<p>For Intensity Pro the details include:</p>
<h2>Intensity Pro (Intensity Pro)</h2>
<ul>
<li>Model Name: Intensity Pro</li>
<li>Display Name: Intensity Pro</li>
<li>Interfaces:
<ul>
<li><code>IDeckLink</code></li>
<li><code>IDeckLink_v8_0</code></li>
<li><code>IDeckLinkInput</code></li>
<li><code>IDeckLinkInput_v7_1</code></li>
<li><code>IDeckLinkInput_v7_3</code></li>
<li><code>IDeckLinkInput_v7_6</code></li>
<li><code>IDeckLinkInput_v9_2</code></li>
<li><code>IDeckLinkOutput</code></li>
<li><code>IDeckLinkOutput_v7_1</code></li>
<li><code>IDeckLinkOutput_v7_3</code></li>
<li><code>IDeckLinkOutput_v7_6</code></li>
<li><code>IDeckLinkConfiguration</code></li>
<li><code>IDeckLinkAttributes</code></li>
<li><code>IDeckLinkDeckControl</code></li>
</ul>
</li>
<li>Attributes:
<ul>
<li>Flag (32-Bit Integer) <code>BMDDeckLinkSupportsInternalKeying</code>: &#8220; (<code>0x0</code>)</li>
<li>Flag (32-Bit Integer) <code>BMDDeckLinkSupportsExternalKeying</code>: &#8220; (<code>0x0</code>)</li>
<li>Flag (32-Bit Integer) <code>BMDDeckLinkSupportsHDKeying</code>: &#8220; (<code>0x0</code>)</li>
<li>Flag (32-Bit Integer) <code>BMDDeckLinkSupportsInputFormatDetection</code>: &#8220; (<code>0x0</code>)</li>
<li>Flag (32-Bit Integer) <code>BMDDeckLinkHasSerialPort</code>: &#8220; (<code>0x0</code>)</li>
<li>Flag (32-Bit Integer) <code>BMDDeckLinkHasAnalogVideoOutputGain</code>: <code>1</code> (<code>0x1</code>)</li>
<li>Flag (32-Bit Integer) <code>BMDDeckLinkCanOnlyAdjustOverallVideoOutputGain</code>: <code>1</code> (<code>0x1</code>)</li>
<li>Flag (32-Bit Integer) <code>BMDDeckLinkHasVideoInputAntiAliasingFilter</code>: &#8220; (<code>0x0</code>)</li>
<li>Flag (32-Bit Integer) <code>BMDDeckLinkHasBypass</code>: &#8220; (<code>0x0</code>)</li>
<li>Flag (32-Bit Integer) <code>BMDDeckLinkSupportsDesktopDisplay</code>: &#8220; (<code>0x0</code>)</li>
<li>Flag (32-Bit Integer) <code>BMDDeckLinkDeviceIsPlaybackOnly</code>: &#8220; (<code>0x0</code>)</li>
<li>Flag (32-Bit Integer) <code>BMDDeckLinkDeviceIsCaptureOnly</code>: &#8220; (<code>0x0</code>)</li>
<li>64-Bit Integer <code>BMDDeckLinkMaximumAudioChannels</code>: <code>2</code> (<code>0x2</code>)</li>
<li>64-Bit Integer <code>BMDDeckLinkNumberOfSubDevices</code>: <code>1</code> (<code>0x1</code>)</li>
<li>64-Bit Integer <code>BMDDeckLinkSubDeviceIndex</code>: &#8220; (<code>0x0</code>)</li>
<li>64-Bit Integer <code>BMDDeckLinkVideoOutputConnections</code>: <code>58</code> (<code>0x3A</code>) &#8211; <code>bmdVideoConnectionHDMI | bmdVideoConnectionComponent | bmdVideoConnectionComposite | bmdVideoConnectionSVideo</code></li>
<li>64-Bit Integer <code>BMDDeckLinkVideoInputConnections</code>: <code>58</code> (<code>0x3A</code>) &#8211; <code>bmdVideoConnectionHDMI | bmdVideoConnectionComponent | bmdVideoConnectionComposite | bmdVideoConnectionSVideo</code></li>
<li>64-Bit Integer <code>BMDDeckLinkDeviceBusyState</code>: &#8220; (<code>0x0</code>)</li>
<li>Float <code>BMDDeckLinkVideoInputGainMinimum</code>: <code>-1.800</code></li>
<li>Float <code>BMDDeckLinkVideoInputGainMaximum</code>: <code>1.800</code></li>
</ul>
</li>
<li>Configuration:
<ul>
<li>Flag (32-Bit Integer) <code>bmdDeckLinkConfigUse1080pNotPsF</code>: <code>1</code> (<code>0x1</code>)</li>
<li>Flag (32-Bit Integer) <code>bmdDeckLinkConfigFieldFlickerRemoval</code>: <code>1</code> (<code>0x1</code>)</li>
<li>Flag (32-Bit Integer) <code>bmdDeckLinkConfigHD1080p24ToHD1080i5994Conversion</code>: &#8220; (<code>0x0</code>)</li>
<li>Flag (32-Bit Integer) <code>bmdDeckLinkConfigLowLatencyVideoOutput</code>: &#8220; (<code>0x0</code>)</li>
<li>64-Bit Integer <code>bmdDeckLinkConfigVideoOutputConnection</code>: <code>10</code> (<code>0xA</code>) &#8211; <code>bmdVideoConnectionHDMI | bmdVideoConnectionComponent</code></li>
<li>64-Bit Integer <code>bmdDeckLinkConfigVideoOutputConversionMode</code>: <code>1852796517</code> (<code>0x6E6F6E65</code> &#8211; <code>none</code>) &#8211; <code>bmdNoVideoOutputConversion</code></li>
<li>64-Bit Integer <code>bmdDeckLinkConfigAnalogVideoOutputFlags</code>: <code>1</code> (<code>0x1</code>) &#8211; <code>bmdAnalogVideoFlagCompositeSetup75</code></li>
<li>64-Bit Integer <code>bmdDeckLinkConfigVideoOutputIdleOperation</code>: <code>1651269987</code> (<code>0x626C6163</code> &#8211; <code>blac</code>)</li>
<li>64-Bit Integer <code>bmdDeckLinkConfigDefaultVideoOutputMode</code>: <code>1853125475</code> (<code>0x6E747363</code> &#8211; <code>ntsc</code>)</li>
<li>64-Bit Integer <code>bmdDeckLinkConfigDefaultVideoOutputModeFlags</code>: &#8220; (<code>0x0</code>)</li>
<li>Float <code>bmdDeckLinkConfigVideoOutputComponentLumaGain</code>: <code>0.000</code></li>
<li>Float <code>bmdDeckLinkConfigVideoOutputCompositeLumaGain</code>: <code>0.000</code></li>
<li>Float <code>bmdDeckLinkConfigVideoOutputSVideoLumaGain</code>: <code>0.000</code></li>
<li>64-Bit Integer <code>bmdDeckLinkConfigVideoInputConnection</code>: <code>2</code> (<code>0x2</code>) &#8211; <code>bmdVideoConnectionHDMI</code></li>
<li>64-Bit Integer <code>bmdDeckLinkConfigAnalogVideoInputFlags</code>: <code>1</code> (<code>0x1</code>) &#8211; <code>bmdAnalogVideoFlagCompositeSetup75</code></li>
<li>64-Bit Integer <code>bmdDeckLinkConfigVideoInputConversionMode</code>: <code>1852796517</code> (<code>0x6E6F6E65</code> &#8211; <code>none</code>) &#8211; <code>bmdNoVideoInputConversion</code></li>
<li>64-Bit Integer <code>bmdDeckLinkConfig32PulldownSequenceInitialTimecodeFrame</code>: &#8220; (<code>0x0</code>)</li>
<li>64-Bit Integer <code>bmdDeckLinkConfigVANCSourceLine1Mapping</code>: &#8220; (<code>0x0</code>)</li>
<li>64-Bit Integer <code>bmdDeckLinkConfigVANCSourceLine2Mapping</code>: &#8220; (<code>0x0</code>)</li>
<li>64-Bit Integer <code>bmdDeckLinkConfigVANCSourceLine3Mapping</code>: &#8220; (<code>0x0</code>)</li>
<li>Float <code>bmdDeckLinkConfigVideoInputComponentLumaGain</code>: <code>0.000</code></li>
<li>Float <code>bmdDeckLinkConfigVideoInputComponentChromaBlueGain</code>: <code>0.000</code></li>
<li>Float <code>bmdDeckLinkConfigVideoInputComponentChromaRedGain</code>: <code>0.000</code></li>
<li>Float <code>bmdDeckLinkConfigVideoInputCompositeLumaGain</code>: <code>0.000</code></li>
<li>Float <code>bmdDeckLinkConfigVideoInputCompositeChromaGain</code>: <code>0.000</code></li>
<li>Float <code>bmdDeckLinkConfigVideoInputSVideoLumaGain</code>: <code>0.000</code></li>
<li>Float <code>bmdDeckLinkConfigVideoInputSVideoChromaGain</code>: <code>0.000</code></li>
<li>64-Bit Integer <code>bmdDeckLinkConfigAudioInputConnection</code>: <code>1634626663</code> (<code>0x616E6C67</code> &#8211; <code>anlg</code>) &#8211; <code>bmdAudioConnectionAnalog</code></li>
</ul>
</li>
</ul>
<h3>Input Display Modes</h3>
<ul>
<li>NTSC:
<ul>
<li>Mode: <code>bmdModeNTSC</code> (<code>ntsc</code>)</li>
<li>Resolution: <code>720</code> x <code>486</code></li>
<li>Frame Duration: <code>1001</code> / <code>30000</code> (<code>29.970</code> fps, <code>33 3666</code> per frame)</li>
<li>Field Dominance: <code>bmdLowerFieldFirst</code> (<code>lowr</code>)</li>
<li>Flags: <code>bmdDisplayModeColorspaceRec601</code></li>
<li>Pixel Formats: <code>bmdFormat8BitYUV</code> (<code>2vuy</code>), <code>bmdFormat10BitYUV</code> (<code>v210</code>)</li>
</ul>
</li>
<li>NTSC 23.98:
<ul>
<li>Mode: <code>bmdModeNTSC2398</code> (<code>nt23</code>)</li>
<li>Resolution: <code>720</code> x <code>486</code></li>
<li>Frame Duration: <code>1001</code> / <code>24000</code> (<code>23.976</code> fps, <code>41 7083</code> per frame)</li>
<li>Field Dominance: <code>bmdProgressiveFrame</code> (<code>prog</code>)</li>
<li>Flags: <code>bmdDisplayModeColorspaceRec601</code></li>
<li>Pixel Formats: <code>bmdFormat8BitYUV</code> (<code>2vuy</code>), <code>bmdFormat10BitYUV</code> (<code>v210</code>)</li>
</ul>
</li>
<li>PAL:
<ul>
<li>Mode: <code>bmdModePAL</code> (<code>pal</code>)</li>
<li>Resolution: <code>720</code> x <code>576</code></li>
<li>Frame Duration: <code>1000</code> / <code>25000</code> (<code>25.000</code> fps, <code>40 0000</code> per frame)</li>
<li>Field Dominance: <code>bmdUpperFieldFirst</code> (<code>uppr</code>)</li>
<li>Flags: <code>bmdDisplayModeColorspaceRec601</code></li>
<li>Pixel Formats: <code>bmdFormat8BitYUV</code> (<code>2vuy</code>), <code>bmdFormat10BitYUV</code> (<code>v210</code>)</li>
</ul>
</li>
<li>NTSC Progressive:
<ul>
<li>Mode: <code>bmdModeNTSCp</code> (<code>ntsp</code>)</li>
<li>Resolution: <code>720</code> x <code>486</code></li>
<li>Frame Duration: <code>1001</code> / <code>60000</code> (<code>59.940</code> fps, <code>16 6833</code> per frame)</li>
<li>Field Dominance: <code>bmdProgressiveFrame</code> (<code>prog</code>)</li>
<li>Flags: <code>bmdDisplayModeColorspaceRec601</code></li>
<li>Pixel Formats: <code>bmdFormat8BitYUV</code> (<code>2vuy</code>), <code>bmdFormat10BitYUV</code> (<code>v210</code>)</li>
</ul>
</li>
<li>PAL Progressive:
<ul>
<li>Mode: <code>bmdModePALp</code> (<code>palp</code>)</li>
<li>Resolution: <code>720</code> x <code>576</code></li>
<li>Frame Duration: <code>1000</code> / <code>50000</code> (<code>50.000</code> fps, <code>20 0000</code> per frame)</li>
<li>Field Dominance: <code>bmdProgressiveFrame</code> (<code>prog</code>)</li>
<li>Flags: <code>bmdDisplayModeColorspaceRec601</code></li>
<li>Pixel Formats: <code>bmdFormat8BitYUV</code> (<code>2vuy</code>), <code>bmdFormat10BitYUV</code> (<code>v210</code>)</li>
</ul>
</li>
<li>HD 1080p 23.98:
<ul>
<li>Mode: <code>bmdModeHD1080p2398</code> (<code>23ps</code>)</li>
<li>Resolution: <code>1920</code> x <code>1080</code></li>
<li>Frame Duration: <code>1001</code> / <code>24000</code> (<code>23.976</code> fps, <code>41 7083</code> per frame)</li>
<li>Field Dominance: <code>bmdProgressiveFrame</code> (<code>prog</code>)</li>
<li>Flags: <code>bmdDisplayModeColorspaceRec709</code></li>
<li>Pixel Formats: <code>bmdFormat8BitYUV</code> (<code>2vuy</code>)</li>
</ul>
</li>
<li>HD 1080p 24:
<ul>
<li>Mode: <code>bmdModeHD1080p24</code> (<code>24ps</code>)</li>
<li>Resolution: <code>1920</code> x <code>1080</code></li>
<li>Frame Duration: <code>1000</code> / <code>24000</code> (<code>24.000</code> fps, <code>41 6666</code> per frame)</li>
<li>Field Dominance: <code>bmdProgressiveFrame</code> (<code>prog</code>)</li>
<li>Flags: <code>bmdDisplayModeColorspaceRec709</code></li>
<li>Pixel Formats: <code>bmdFormat8BitYUV</code> (<code>2vuy</code>)</li>
</ul>
</li>
<li>HD 1080p 25:
<ul>
<li>Mode: <code>bmdModeHD1080p25</code> (<code>Hp25</code>)</li>
<li>Resolution: <code>1920</code> x <code>1080</code></li>
<li>Frame Duration: <code>1000</code> / <code>25000</code> (<code>25.000</code> fps, <code>40 0000</code> per frame)</li>
<li>Field Dominance: <code>bmdProgressiveFrame</code> (<code>prog</code>)</li>
<li>Flags: <code>bmdDisplayModeColorspaceRec709</code></li>
<li>Pixel Formats: <code>bmdFormat8BitYUV</code> (<code>2vuy</code>)</li>
</ul>
</li>
<li>HD 1080p 29.97:
<ul>
<li>Mode: <code>bmdModeHD1080p2997</code> (<code>Hp29</code>)</li>
<li>Resolution: <code>1920</code> x <code>1080</code></li>
<li>Frame Duration: <code>1001</code> / <code>30000</code> (<code>29.970</code> fps, <code>33 3666</code> per frame)</li>
<li>Field Dominance: <code>bmdProgressiveFrame</code> (<code>prog</code>)</li>
<li>Flags: <code>bmdDisplayModeColorspaceRec709</code></li>
<li>Pixel Formats: <code>bmdFormat8BitYUV</code> (<code>2vuy</code>)</li>
</ul>
</li>
<li>HD 1080p 30:
<ul>
<li>Mode: <code>bmdModeHD1080p30</code> (<code>Hp30</code>)</li>
<li>Resolution: <code>1920</code> x <code>1080</code></li>
<li>Frame Duration: <code>1000</code> / <code>30000</code> (<code>30.000</code> fps, <code>33 3333</code> per frame)</li>
<li>Field Dominance: <code>bmdProgressiveFrame</code> (<code>prog</code>)</li>
<li>Flags: <code>bmdDisplayModeColorspaceRec709</code></li>
<li>Pixel Formats: <code>bmdFormat8BitYUV</code> (<code>2vuy</code>)</li>
</ul>
</li>
<li>HD 1080i 50:
<ul>
<li>Mode: <code>bmdModeHD1080i50</code> (<code>Hi50</code>)</li>
<li>Resolution: <code>1920</code> x <code>1080</code></li>
<li>Frame Duration: <code>1000</code> / <code>25000</code> (<code>25.000</code> fps, <code>40 0000</code> per frame)</li>
<li>Field Dominance: <code>bmdUpperFieldFirst</code> (<code>uppr</code>)</li>
<li>Flags: <code>bmdDisplayModeColorspaceRec709</code></li>
<li>Pixel Formats: <code>bmdFormat8BitYUV</code> (<code>2vuy</code>)</li>
</ul>
</li>
<li>HD 1080i 59.94:
<ul>
<li>Mode: <code>bmdModeHD1080i5994</code> (<code>Hi59</code>)</li>
<li>Resolution: <code>1920</code> x <code>1080</code></li>
<li>Frame Duration: <code>1001</code> / <code>30000</code> (<code>29.970</code> fps, <code>33 3666</code> per frame)</li>
<li>Field Dominance: <code>bmdUpperFieldFirst</code> (<code>uppr</code>)</li>
<li>Flags: <code>bmdDisplayModeColorspaceRec709</code></li>
<li>Pixel Formats: <code>bmdFormat8BitYUV</code> (<code>2vuy</code>)</li>
</ul>
</li>
<li>HD 1080i 60:
<ul>
<li>Mode: <code>bmdModeHD1080i6000</code> (<code>Hi60</code>)</li>
<li>Resolution: <code>1920</code> x <code>1080</code></li>
<li>Frame Duration: <code>1000</code> / <code>30000</code> (<code>30.000</code> fps, <code>33 3333</code> per frame)</li>
<li>Field Dominance: <code>bmdUpperFieldFirst</code> (<code>uppr</code>)</li>
<li>Flags: <code>bmdDisplayModeColorspaceRec709</code></li>
<li>Pixel Formats: <code>bmdFormat8BitYUV</code> (<code>2vuy</code>)</li>
</ul>
</li>
<li>HD 720p 50:
<ul>
<li>Mode: <code>bmdModeHD720p50</code> (<code>hp50</code>)</li>
<li>Resolution: <code>1280</code> x <code>720</code></li>
<li>Frame Duration: <code>1000</code> / <code>50000</code> (<code>50.000</code> fps, <code>20 0000</code> per frame)</li>
<li>Field Dominance: <code>bmdProgressiveFrame</code> (<code>prog</code>)</li>
<li>Flags: <code>bmdDisplayModeColorspaceRec709</code></li>
<li>Pixel Formats: <code>bmdFormat8BitYUV</code> (<code>2vuy</code>)</li>
</ul>
</li>
<li>HD 720p 59.94:
<ul>
<li>Mode: <code>bmdModeHD720p5994</code> (<code>hp59</code>)</li>
<li>Resolution: <code>1280</code> x <code>720</code></li>
<li>Frame Duration: <code>1001</code> / <code>60000</code> (<code>59.940</code> fps, <code>16 6833</code> per frame)</li>
<li>Field Dominance: <code>bmdProgressiveFrame</code> (<code>prog</code>)</li>
<li>Flags: <code>bmdDisplayModeColorspaceRec709</code></li>
<li>Pixel Formats: <code>bmdFormat8BitYUV</code> (<code>2vuy</code>)</li>
</ul>
</li>
<li>HD 720p 60:
<ul>
<li>Mode: <code>bmdModeHD720p60</code> (<code>hp60</code>)</li>
<li>Resolution: <code>1280</code> x <code>720</code></li>
<li>Frame Duration: <code>1000</code> / <code>60000</code> (<code>60.000</code> fps, <code>16 6666</code> per frame)</li>
<li>Field Dominance: <code>bmdProgressiveFrame</code> (<code>prog</code>)</li>
<li>Flags: <code>bmdDisplayModeColorspaceRec709</code></li>
<li>Pixel Formats: <code>bmdFormat8BitYUV</code> (<code>2vuy</code>)</li>
</ul>
</li>
</ul>
<h3>Output Display Modes</h3>
<ul>
<li>NTSC:
<ul>
<li>Mode: <code>bmdModeNTSC</code> (<code>ntsc</code>)</li>
<li>Resolution: <code>720</code> x <code>486</code></li>
<li>Frame Duration: <code>1001</code> / <code>30000</code> (<code>29.970</code> fps, <code>33 3666</code> per frame)</li>
<li>Field Dominance: <code>bmdLowerFieldFirst</code> (<code>lowr</code>)</li>
<li>Flags: <code>bmdDisplayModeColorspaceRec601</code></li>
<li>Pixel Formats: <code>bmdFormat8BitYUV</code> (<code>2vuy</code>), <code>bmdFormat10BitYUV</code> (<code>v210</code>)</li>
</ul>
</li>
<li>NTSC 23.98:
<ul>
<li>Mode: <code>bmdModeNTSC2398</code> (<code>nt23</code>)</li>
<li>Resolution: <code>720</code> x <code>486</code></li>
<li>Frame Duration: <code>1001</code> / <code>24000</code> (<code>23.976</code> fps, <code>41 7083</code> per frame)</li>
<li>Field Dominance: <code>bmdProgressiveFrame</code> (<code>prog</code>)</li>
<li>Flags: <code>bmdDisplayModeColorspaceRec601</code></li>
<li>Pixel Formats: <code>bmdFormat8BitYUV</code> (<code>2vuy</code>), <code>bmdFormat10BitYUV</code> (<code>v210</code>)</li>
</ul>
</li>
<li>PAL:
<ul>
<li>Mode: <code>bmdModePAL</code> (<code>pal</code>)</li>
<li>Resolution: <code>720</code> x <code>576</code></li>
<li>Frame Duration: <code>1000</code> / <code>25000</code> (<code>25.000</code> fps, <code>40 0000</code> per frame)</li>
<li>Field Dominance: <code>bmdUpperFieldFirst</code> (<code>uppr</code>)</li>
<li>Flags: <code>bmdDisplayModeColorspaceRec601</code></li>
<li>Pixel Formats: <code>bmdFormat8BitYUV</code> (<code>2vuy</code>), <code>bmdFormat10BitYUV</code> (<code>v210</code>)</li>
</ul>
</li>
<li>NTSC Progressive:
<ul>
<li>Mode: <code>bmdModeNTSCp</code> (<code>ntsp</code>)</li>
<li>Resolution: <code>720</code> x <code>486</code></li>
<li>Frame Duration: <code>1001</code> / <code>60000</code> (<code>59.940</code> fps, <code>16 6833</code> per frame)</li>
<li>Field Dominance: <code>bmdProgressiveFrame</code> (<code>prog</code>)</li>
<li>Flags: <code>bmdDisplayModeColorspaceRec601</code></li>
<li>Pixel Formats: <code>bmdFormat8BitYUV</code> (<code>2vuy</code>), <code>bmdFormat10BitYUV</code> (<code>v210</code>)</li>
</ul>
</li>
<li>PAL Progressive:
<ul>
<li>Mode: <code>bmdModePALp</code> (<code>palp</code>)</li>
<li>Resolution: <code>720</code> x <code>576</code></li>
<li>Frame Duration: <code>1000</code> / <code>50000</code> (<code>50.000</code> fps, <code>20 0000</code> per frame)</li>
<li>Field Dominance: <code>bmdProgressiveFrame</code> (<code>prog</code>)</li>
<li>Flags: <code>bmdDisplayModeColorspaceRec601</code></li>
<li>Pixel Formats: <code>bmdFormat8BitYUV</code> (<code>2vuy</code>), <code>bmdFormat10BitYUV</code> (<code>v210</code>)</li>
</ul>
</li>
<li>HD 1080p 23.98:
<ul>
<li>Mode: <code>bmdModeHD1080p2398</code> (<code>23ps</code>)</li>
<li>Resolution: <code>1920</code> x <code>1080</code></li>
<li>Frame Duration: <code>1001</code> / <code>24000</code> (<code>23.976</code> fps, <code>41 7083</code> per frame)</li>
<li>Field Dominance: <code>bmdProgressiveFrame</code> (<code>prog</code>)</li>
<li>Flags: <code>bmdDisplayModeColorspaceRec709</code></li>
<li>Pixel Formats: <code>bmdFormat8BitYUV</code> (<code>2vuy</code>)</li>
</ul>
</li>
<li>HD 1080p 24:
<ul>
<li>Mode: <code>bmdModeHD1080p24</code> (<code>24ps</code>)</li>
<li>Resolution: <code>1920</code> x <code>1080</code></li>
<li>Frame Duration: <code>1000</code> / <code>24000</code> (<code>24.000</code> fps, <code>41 6666</code> per frame)</li>
<li>Field Dominance: <code>bmdProgressiveFrame</code> (<code>prog</code>)</li>
<li>Flags: <code>bmdDisplayModeColorspaceRec709</code></li>
<li>Pixel Formats: <code>bmdFormat8BitYUV</code> (<code>2vuy</code>)</li>
</ul>
</li>
<li>HD 1080p 25:
<ul>
<li>Mode: <code>bmdModeHD1080p25</code> (<code>Hp25</code>)</li>
<li>Resolution: <code>1920</code> x <code>1080</code></li>
<li>Frame Duration: <code>1000</code> / <code>25000</code> (<code>25.000</code> fps, <code>40 0000</code> per frame)</li>
<li>Field Dominance: <code>bmdProgressiveFrame</code> (<code>prog</code>)</li>
<li>Flags: <code>bmdDisplayModeColorspaceRec709</code></li>
<li>Pixel Formats: <code>bmdFormat8BitYUV</code> (<code>2vuy</code>)</li>
</ul>
</li>
<li>HD 1080p 29.97:
<ul>
<li>Mode: <code>bmdModeHD1080p2997</code> (<code>Hp29</code>)</li>
<li>Resolution: <code>1920</code> x <code>1080</code></li>
<li>Frame Duration: <code>1001</code> / <code>30000</code> (<code>29.970</code> fps, <code>33 3666</code> per frame)</li>
<li>Field Dominance: <code>bmdProgressiveFrame</code> (<code>prog</code>)</li>
<li>Flags: <code>bmdDisplayModeColorspaceRec709</code></li>
<li>Pixel Formats: <code>bmdFormat8BitYUV</code> (<code>2vuy</code>)</li>
</ul>
</li>
<li>HD 1080p 30:
<ul>
<li>Mode: <code>bmdModeHD1080p30</code> (<code>Hp30</code>)</li>
<li>Resolution: <code>1920</code> x <code>1080</code></li>
<li>Frame Duration: <code>1000</code> / <code>30000</code> (<code>30.000</code> fps, <code>33 3333</code> per frame)</li>
<li>Field Dominance: <code>bmdProgressiveFrame</code> (<code>prog</code>)</li>
<li>Flags: <code>bmdDisplayModeColorspaceRec709</code></li>
<li>Pixel Formats: <code>bmdFormat8BitYUV</code> (<code>2vuy</code>)</li>
</ul>
</li>
<li>HD 1080i 50:
<ul>
<li>Mode: <code>bmdModeHD1080i50</code> (<code>Hi50</code>)</li>
<li>Resolution: <code>1920</code> x <code>1080</code></li>
<li>Frame Duration: <code>1000</code> / <code>25000</code> (<code>25.000</code> fps, <code>40 0000</code> per frame)</li>
<li>Field Dominance: <code>bmdUpperFieldFirst</code> (<code>uppr</code>)</li>
<li>Flags: <code>bmdDisplayModeColorspaceRec709</code></li>
<li>Pixel Formats: <code>bmdFormat8BitYUV</code> (<code>2vuy</code>)</li>
</ul>
</li>
<li>HD 1080i 59.94:
<ul>
<li>Mode: <code>bmdModeHD1080i5994</code> (<code>Hi59</code>)</li>
<li>Resolution: <code>1920</code> x <code>1080</code></li>
<li>Frame Duration: <code>1001</code> / <code>30000</code> (<code>29.970</code> fps, <code>33 3666</code> per frame)</li>
<li>Field Dominance: <code>bmdUpperFieldFirst</code> (<code>uppr</code>)</li>
<li>Flags: <code>bmdDisplayModeColorspaceRec709</code></li>
<li>Pixel Formats: <code>bmdFormat8BitYUV</code> (<code>2vuy</code>)</li>
</ul>
</li>
<li>HD 1080i 60:
<ul>
<li>Mode: <code>bmdModeHD1080i6000</code> (<code>Hi60</code>)</li>
<li>Resolution: <code>1920</code> x <code>1080</code></li>
<li>Frame Duration: <code>1000</code> / <code>30000</code> (<code>30.000</code> fps, <code>33 3333</code> per frame)</li>
<li>Field Dominance: <code>bmdUpperFieldFirst</code> (<code>uppr</code>)</li>
<li>Flags: <code>bmdDisplayModeColorspaceRec709</code></li>
<li>Pixel Formats: <code>bmdFormat8BitYUV</code> (<code>2vuy</code>)</li>
</ul>
</li>
<li>HD 720p 50:
<ul>
<li>Mode: <code>bmdModeHD720p50</code> (<code>hp50</code>)</li>
<li>Resolution: <code>1280</code> x <code>720</code></li>
<li>Frame Duration: <code>1000</code> / <code>50000</code> (<code>50.000</code> fps, <code>20 0000</code> per frame)</li>
<li>Field Dominance: <code>bmdProgressiveFrame</code> (<code>prog</code>)</li>
<li>Flags: <code>bmdDisplayModeColorspaceRec709</code></li>
<li>Pixel Formats: <code>bmdFormat8BitYUV</code> (<code>2vuy</code>)</li>
</ul>
</li>
<li>HD 720p 59.94:
<ul>
<li>Mode: <code>bmdModeHD720p5994</code> (<code>hp59</code>)</li>
<li>Resolution: <code>1280</code> x <code>720</code></li>
<li>Frame Duration: <code>1001</code> / <code>60000</code> (<code>59.940</code> fps, <code>16 6833</code> per frame)</li>
<li>Field Dominance: <code>bmdProgressiveFrame</code> (<code>prog</code>)</li>
<li>Flags: <code>bmdDisplayModeColorspaceRec709</code></li>
<li>Pixel Formats: <code>bmdFormat8BitYUV</code> (<code>2vuy</code>)</li>
</ul>
</li>
<li>HD 720p 60:
<ul>
<li>Mode: <code>bmdModeHD720p60</code> (<code>hp60</code>)</li>
<li>Resolution: <code>1280</code> x <code>720</code></li>
<li>Frame Duration: <code>1000</code> / <code>60000</code> (<code>60.000</code> fps, <code>16 6666</code> per frame)</li>
<li>Field Dominance: <code>bmdProgressiveFrame</code> (<code>prog</code>)</li>
<li>Flags: <code>bmdDisplayModeColorspaceRec709</code></li>
<li>Pixel Formats: <code>bmdFormat8BitYUV</code> (<code>2vuy</code>)</li>
</ul>
</li>
</ul>
<h3>Download links</h3>
<ul>
<li>Binaries: Win32 – <a href="http://www.alax.info/svn/public/trunk/Toolbox/DeckLinkCapabilities-Win32.exe">DeckLinkCapabilities-Win32.exe</a>, x64 – <a href="http://www.alax.info/svn/public/trunk/Toolbox/DeckLinkCapabilities-x64.exe">DeckLinkCapabilities-x64.exe</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://alax.info/blog/1454/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RotView: What is on ROT?</title>
		<link>http://alax.info/blog/1444</link>
		<comments>http://alax.info/blog/1444#comments</comments>
		<pubDate>Fri, 04 Jan 2013 20:27:29 +0000</pubDate>
		<dc:creator>Roman</dc:creator>
				<category><![CDATA[Utilities]]></category>
		<category><![CDATA[COM]]></category>
		<category><![CDATA[GetRunningObjectTable]]></category>
		<category><![CDATA[irotview]]></category>
		<category><![CDATA[IRunningObjectTable]]></category>
		<category><![CDATA[RegisterActiveObject]]></category>
		<category><![CDATA[rot]]></category>
		<category><![CDATA[rotview]]></category>

		<guid isPermaLink="false">http://alax.info/blog/?p=1444</guid>
		<description><![CDATA[Once upon a time Windows SDK (or it was Visual Studio) had a tool named IROTVIEW which enumerated Running Object Table (ROT). Running Object Table Viewer IROTVIEW displays information about ActiveX and OLE objects currently existing in memory. People ask &#8220;Where is IROTVIEW?&#8221; and there is no answer. The API is really simple, but if [...]]]></description>
				<content:encoded><![CDATA[<p>Once upon a time Windows SDK (or it was Visual Studio) had a tool named <a href="http://msdn.microsoft.com/en-us/library/aa271760%28v=vs.60%29.aspx"><code>IROTVIEW</code></a> which enumerated <a href="http://msdn.microsoft.com/en-us/library/windows/desktop/ms695276%28v=vs.85%29.aspx">Running Object Table (ROT)</a>.</p>
<blockquote>
<h4>Running Object Table Viewer</h4>
<p>IROTVIEW displays information about ActiveX and OLE objects currently existing in memory.</p>
</blockquote>
<p>People ask <a href="http://social.msdn.microsoft.com/Forums/en-US/vsx/thread/ccccc9bd-f21a-4f74-a3f0-64a594fa1b16/">&#8220;Where is IROTVIEW?&#8221;</a> and there is no answer.</p>
<p>The API is really simple, but if you want a quick check what&#8217;s on your ROT you still want a handy tool. In particular, you might want to check ROT if your app is using <a href="http://msdn.microsoft.com/en-us/library/windows/desktop/ms221551%28v=vs.85%29.aspx"><code>RegisterActiveObject</code></a> API to publish active COM objects. Here we go, this <code>RotView</code> application lists the ROT contents:</p>
<p><img src="http://alax.info/blog/wp-content/uploads/2013/01/Image0012.png" alt="RotView UI" width="639" height="283" class="alignnone size-full wp-image-1445" /></p>
<p>Available in both <code>Win32</code> and <code>x64</code> versions, it also shows OS marshaling of ROT entries and their availability to &#8220;both worlds&#8221;. The application does more:</p>
<ul>
<li>Shows COM class descriptions for active COM objects, path to binary that hosts COM class</li>
<li>&#8220;Probes&#8221; COM objects by trying to query <code>IUnknown</code> of a ROT entry</li>
</ul>
<p>Hint: Hold Ctrl+Shift to have a tool tip popping up duplicate its content onto clipboard.</p>
<h3>Download links</h3>
<ul>
<li>Partial Visual C++ 2012 source code: <a href="http://www.alax.info/trac/public/browser/trunk/Utilities/RotView">Trac</a>, <a href="http://www.alax.info/svn/public/trunk/Utilities/RotView">Subversion</a></li>
<li>Binaries: Win32 – <a href="http://www.alax.info/svn/public/trunk/Utilities/RotView/_Bin/RotView-Win32.exe">RotView-Win32.exe</a>, x64 – <a href="http://www.alax.info/svn/public/trunk/Utilities/RotView/_Bin/RotView-x64.exe">RotView-x64.exe</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://alax.info/blog/1444/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CaptureClock: Utility to Check Video/Audio Capture Rates</title>
		<link>http://alax.info/blog/1441</link>
		<comments>http://alax.info/blog/1441#comments</comments>
		<pubDate>Fri, 04 Jan 2013 19:36:12 +0000</pubDate>
		<dc:creator>Roman</dc:creator>
				<category><![CDATA[ATL]]></category>
		<category><![CDATA[Utilities]]></category>
		<category><![CDATA[WTL]]></category>
		<category><![CDATA[Audio]]></category>
		<category><![CDATA[capture]]></category>
		<category><![CDATA[DirectShow]]></category>
		<category><![CDATA[frame rate]]></category>
		<category><![CDATA[live]]></category>
		<category><![CDATA[rate matching]]></category>
		<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://alax.info/blog/?p=1441</guid>
		<description><![CDATA[Someone discovered the utility while browsing my public repository (the app prompts to post data back to the website, and the anonymous user accepted the offer and posted the report from this unpublished application), so I have to drop a few lines about the tool. The idea is basically straightforward: live capture involves attaching time [...]]]></description>
				<content:encoded><![CDATA[<p>Someone discovered the utility while browsing my public repository (the app prompts to post data back to the website, and the anonymous user accepted the offer and posted the report from this unpublished application), so I have to drop a few lines about the tool.</p>
<p>The idea is basically straightforward: live capture involves attaching time stamps to media samples, and there is a chance that the time stamps slide away causing unwanted effects on captured clip. The application captures video and audio simultaneously and tracks media sample time stamps, and compares them against system clock as well. Having it simply run for a few minutes one can see how the capture is doing and if any of the timings drift away. Being stopped it puts report onto clipboard and optionally posts it back to me online (no actually specific intent about this data, however if you want to share data for a device that does drift away, you are to only click once to send me the details).</p>
<p><a href="http://alax.info/blog/wp-content/uploads/2013/01/Image0011.png"><img src="http://alax.info/blog/wp-content/uploads/2013/01/Image0011.png" alt="CaptureClock operation" width="692" height="379" class="alignnone size-full wp-image-1442" /></a></p>
<p>The output is on clipboard in tab-separated values (TSV) format:</p>
<pre><code>Computer Name   PSI
Windows Version 6.1.7601 Service Pack 1
Video Device    Conexant's BtPCI Capture    @device:pnp:\\?\pci#ven_109e&amp;dev_036e&amp;subsys_18511851&amp;rev_02#4&amp;39c3dd91&amp;0&amp;08f0#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global
Audio Device    Stereo Mix (Realtek High Defini @device:cm:{33D9A762-90C8-11D0-BD43-00A0C911CE86}\Stereo Mix (Realtek High Defini

System Time Video Sample Count  Video Sample Time   Relative Video Sample Time  Audio Sample Count  Audio Sample Time   Relative Audio Sample Time
30439   907 30381   -57 304 30291   -147
</code></pre>
<p>Or you might prefer pasting it onto Excel:</p>
<p><a href="http://alax.info/blog/wp-content/uploads/2013/01/Image002.png"><img src="http://alax.info/blog/wp-content/uploads/2013/01/Image002-320x70.png" alt="CapptureClock Output on Excel" width="320" height="70" class="alignnone size-medium wp-image-1443" /></a></p>
<p>By the way, this is also an easy way to ensure devices are operational and check effective video frame rate.</p>
<h3>Download links:</h3>
<ul>
<li>Partial Visual C++ .NET 2010 source code: <a href="http://www.alax.info/trac/public/browser/trunk/Utilities/CaptureClock">Trac</a>, <a href="http://www.alax.info/svn/public/trunk/Utilities/CaptureClock">Subversion</a></li>
<li>Binaries: Win32 – <a href="http://www.alax.info/svn/public/trunk/Utilities/CaptureClock/_Bin/Release%20Trace/CaptureClock.exe">CaptureClock.exe</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://alax.info/blog/1441/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DirectShow Spy: ROT fix and evrprop.dll</title>
		<link>http://alax.info/blog/1438</link>
		<comments>http://alax.info/blog/1438#comments</comments>
		<pubDate>Fri, 04 Jan 2013 18:14:12 +0000</pubDate>
		<dc:creator>Roman</dc:creator>
				<category><![CDATA[ATL]]></category>
		<category><![CDATA[Utilities]]></category>
		<category><![CDATA[COM]]></category>
		<category><![CDATA[DirectShow]]></category>
		<category><![CDATA[directshowspy]]></category>

		<guid isPermaLink="false">http://alax.info/blog/?p=1438</guid>
		<description><![CDATA[A small issue appears to be affecting DirectShow applications with DirectShow Spy installed. As underlying COM base is non-standard, the spy implements a few hacks to run smoothly and to keep reference counting correct in particular. Under certain conditions, DirectShow-enabled ActiveX control hosted by Internet Explorer seems to be unable to put its graph onto [...]]]></description>
				<content:encoded><![CDATA[<p>A small issue appears to be affecting DirectShow applications with <a href="http://alax.info/blog/1430">DirectShow Spy</a> installed. As underlying COM base is non-standard, the spy implements a few hacks to run smoothly and to keep reference counting correct in particular. Under certain conditions, DirectShow-enabled ActiveX control hosted by Internet Explorer seems to be unable to put its graph onto <a href="http://msdn.microsoft.com/en-us/library/windows/desktop/ms695276%28v=vs.85%29.aspx">Running Object Table (ROT)</a>. What happened next is that Spy assumed ROT operation to succeed, and compensated reference counting, which under bad assumption could cause <code>E_UNEXPECTED</code> error while creating a filter graph. This updated fixes the issue.</p>
<p>Another small improvement is that similarly to SDK <code>proppage.dll</code>, Spy registration UI also assists in registering another DLL &#8211; <code>evrprop.dll</code>, should it be there near the spy module.</p>
<p><img src="http://alax.info/blog/wp-content/uploads/2013/01/Image001.png" alt="Evrprop.dll registration" width="377" height="432" class="alignnone size-full wp-image-1439" /></p>
<h3>Download links</h3>
<ul>
<li>Binaries: Win32 – <a href="http://www.alax.info/svn/public/trunk/DirectShowSpy/_Bin/Win32/Release%20Trace/DirectShowSpy.dll">DirectShowSpy.dll</a> (1.0.0.829), x64 &#8211; <a href="http://www.alax.info/svn/public/trunk/DirectShowSpy/_Bin/x64/Release%20Trace/DirectShowSpy.dll">DirectShowSpy.dll</a> (1.0.0.828)</li>
<li>License: This software is free to use</li>
<li>Instructions: <a href="http://alax.info/blog/777">original post</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://alax.info/blog/1438/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bringing virtual DirectShow devices back to life with Skype 6</title>
		<link>http://alax.info/blog/1433</link>
		<comments>http://alax.info/blog/1433#comments</comments>
		<pubDate>Tue, 27 Nov 2012 22:16:11 +0000</pubDate>
		<dc:creator>Roman</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Video]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[devicepath]]></category>
		<category><![CDATA[DirectShow]]></category>
		<category><![CDATA[skype]]></category>

		<guid isPermaLink="false">http://alax.info/blog/?p=1433</guid>
		<description><![CDATA[As mentioned before, new Skype 6 broke compatibility with all virtual DirectShow devices out there. Just oops, nothing works any longer if only it is not a full driver exposing virtual device through WDM. Since quite some people are interested in details (Skype 6 Virtual Camera issues, Skype Client for Windows &#8211; SCW-3881 &#8211; Virtual [...]]]></description>
				<content:encoded><![CDATA[<p>As <a href="http://alax.info/blog/1421">mentioned before</a>, new Skype 6 broke compatibility with all virtual DirectShow devices out there. Just oops, nothing works any longer if only it is not a full driver exposing virtual device through WDM.</p>
<p>Since quite some people are interested in details (<a href="http://community.skype.com/t5/Windows/Skype-6-Virtual-Camera-issues/td-p/1161130">Skype 6 Virtual Camera issues</a>, <a href="https://jira.skype.com/browse/SCW-3881">Skype Client for Windows &#8211; SCW-3881 &#8211; Virtual cameras no longer work with Skype 6</a>), here goes a bit of relevant information on the problem.</p>
<p>New Skype still uses DirectShow as API to interface capture devices and to discover such it enumerates them the way all decent applications do: <a href="http://msdn.microsoft.com/en-us/library/windows/desktop/dd375615%28v=vs.85%29.aspx">Enumerating Devices and Filters</a>. Presumably, there was a good reason to touch the video capture code and from moderately terrible it started being even worse. Skype guys decided that if a video device does not have a <a href="http://msdn.microsoft.com/en-us/library/windows/desktop/dd377566%28v=vs.85%29.aspx"><code>DevicePath</code> property</a> then it is not good enough for them.</p>
<blockquote><p>
  The &#8220;DevicePath&#8221; property is not a human-readable string, but is guaranteed to be unique for each video capture device on the system. You can use this property to distinguish between two or more instances of the same model of device.</p>
</blockquote>
<p>The documentation is unfortunately confusing in this part and perhaps developers thought they were doing the right thing, nevertheless multiple discussions online suggest a different approach.</p>
<p>Unfortunately, <code>DevicePath</code> is not a mandatory property. And it does not exist in virtual devices, and you cannot use it to distinguish between them. And Skype started &#8211; supposedly &#8211; skipping devices without it. And this is why all virtual devices were left overboard.</p>
<p>Virtual devices are not that rare. It might not only be a gate into IP camera, instead it might be a device that splits exclusive use type video camera device between applications, or something that adds an overlay onto captured image. That is, the whole class of devices failed to work with Skype from there. Including, of course, <a href="http://alax.info/blog/1223">IP Video Source</a> which is a virtual DirectShow device with the backend network connection into an IP camera or video encoder.</p>
<p>Adding missing <code>DevicePath</code> is the key to fix the problem and give Skype what it thinks is a must. Let&#8217;s hope we have a fix from Skype soon and there is no need in working things around any longer, but if someone needs a quick solution &#8211; it also exists (apart from rewriting everything into kernel mode driver, and other hackery).</p>
<p>Since the properties an application reads from <code>IPropertyBag</code> interface (which is in turn obtained from <code>IMoniker</code> when enumerating devices) are [partially] backed by system registry, it is sufficient to add &#8220;DevicePath&#8221; value into specific key of the registry and make the fake property available for those devices that don&#8217;t have kernel path.</p>
<p>The registry key is located under <code>HKLM</code>, <code>SOFTWARE\Classes\CLSID\{860BB310-5D01-11d0-BD3B-00A0C911CE86}\Instance</code> (note it&#8217;s <code>SOFTWARE\Classes\Wow6432Node\CLSID...</code> in 64-bit OS for 32-bit app space), where every subkey corresponds to a registered device (find yours there). Note that CLSID above is actually <code>CLSID_VideoInputDeviceCategory</code>.</p>
<p>Adding new value there will create a fake property on the property bag and improve compatibility with such picky software as Skype. Note that the value will be destroyed with re-registration of the device filter, and will have to be created once again.</p>
<p><a href="http://alax.info/blog/wp-content/uploads/2012/11/VW31j.png"><img src="http://alax.info/blog/wp-content/uploads/2012/11/VW31j-320x126.png" alt="" title="Fake DevicePath Registry Value on Regedit" width="320" height="126" class="alignnone size-medium wp-image-1434" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://alax.info/blog/1433/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>DirectShow Spy: Easier Registration</title>
		<link>http://alax.info/blog/1430</link>
		<comments>http://alax.info/blog/1430#comments</comments>
		<pubDate>Sat, 24 Nov 2012 08:31:43 +0000</pubDate>
		<dc:creator>Roman</dc:creator>
				<category><![CDATA[ATL]]></category>
		<category><![CDATA[Utilities]]></category>
		<category><![CDATA[WTL]]></category>
		<category><![CDATA[COM]]></category>
		<category><![CDATA[DirectShow]]></category>
		<category><![CDATA[directshowspy]]></category>
		<category><![CDATA[registration]]></category>
		<category><![CDATA[regsvr32]]></category>
		<category><![CDATA[rundll32]]></category>
		<category><![CDATA[spy]]></category>

		<guid isPermaLink="false">http://alax.info/blog/?p=1430</guid>
		<description><![CDATA[Because DirectShow Spy is often a troubleshooting tool, one of its use scenarios is its being a drop-in module to quickly install on a system of interest in order to connect to graphs for troubleshooting purposes, such as to check topology and media types. Its installation requires COM registration, and over time it changed gradually [...]]]></description>
				<content:encoded><![CDATA[<p>Because <a href="http://alax.info/blog/1385">DirectShow Spy</a> is often a troubleshooting tool, one of its use scenarios is its being a drop-in module to quickly install on a system of interest in order to connect to graphs for troubleshooting purposes, such as to check topology and media types.</p>
<p>Its installation requires COM registration, and over time it changed gradually from simple to more and more complex step. Why? In Windows XP one had to open command prompt and <code>regsvr32</code>. With Vista&#8217;s UAC one needs a prompt, with privilege elevation, which opens typically in wrong directory, then <a href="http://en.wikipedia.org/wiki/User_Account_Control">UAC prompt</a>. A relatively easy step became annoying multi-step operation. Then proxy/stub classes were moved into Windows SDK DLL&#8230;</p>
<p>Things are getting back to be easier with DirectShow Spy. It is given a special property sheet right there withing the DLL, to take care of all the important things:</p>
<ul>
<li>checks registration status</li>
<li>buttons to Unregister/Register</li>
<li>per-user registration (not recommended though due to system wide class hooking)</li>
<li>automatically takes care of UAC prompt</li>
<li>place Windows SDK <code>proppage.dll</code> into the same directory near spy, and additional property page will help you to register this additional dependency</li>
</ul>
<p><img src="http://alax.info/blog/wp-content/uploads/2012/11/DirectShowSpy.dll-reg-ui.png" alt="" title="DirectShowSpy.dll Registration UI" width="377" height="432" class="alignnone size-full wp-image-1431" /></p>
<p>To invoke registration UI, start:</p>
<blockquote><p>
  <code>rundll32 DirectShowSpy.dll,DoRegistrationPropertySheetModal</code></p>
</blockquote>
<p>from command line, or just have a <a href="http://www.alax.info/trac/public/browser/trunk/DirectShowSpy/_Bin/Win32/Release%20Trace/DirectShowSpy.dll-reg-ui.bat"><code>.BAT</code> file</a> ready to do it for you.</p>
<h3>Download links</h3>
<ul>
<li>Binaries: Win32 – <a href="http://www.alax.info/svn/public/trunk/DirectShowSpy/_Bin/Win32/Release%20Trace/DirectShowSpy.dll">DirectShowSpy.dll</a> (1.0.0.807), x64 &#8211; <a href="http://www.alax.info/svn/public/trunk/DirectShowSpy/_Bin/x64/Release%20Trace/DirectShowSpy.dll">DirectShowSpy.dll</a> (1.0.0.806)</li>
<li>License: This software is free to use</li>
<li>Instructions: <a href="http://alax.info/blog/777">original post</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://alax.info/blog/1430/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>dlinkddns.com@ and unique email addresses</title>
		<link>http://alax.info/blog/1426</link>
		<comments>http://alax.info/blog/1426#comments</comments>
		<pubDate>Fri, 23 Nov 2012 17:29:41 +0000</pubDate>
		<dc:creator>Roman</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[spam]]></category>

		<guid isPermaLink="false">http://alax.info/blog/?p=1426</guid>
		<description><![CDATA[This is a spam email. There is not so much special about, just the recipient address. &#8220;Single use&#8221; email addresses have an advantage of trackability of spam sources, because once you start receiving messages onto this alias you immediately know the source. Not to say that you can block them easily. Google Mail offers a [...]]]></description>
				<content:encoded><![CDATA[<p><img src="http://alax.info/blog/wp-content/uploads/2012/11/Image0032.png" alt="" title="Spam via dlinkddns.com" width="573" height="623" class="alignnone size-full wp-image-1428" /></p>
<p>This is a spam email. There is not so much special about, just the recipient address. &#8220;Single use&#8221; email addresses have an advantage of trackability of spam sources, because once you start receiving messages onto this alias you immediately know the source. Not to say that you can block them easily.</p>
<p>Google Mail offers a similarly useful option of an optional suffix on the email address which is automatically stripped on message delivery: <code>foo+bar@gmail.com</code> is delivered to <code>foo@gmail.com</code> and one can add <code>bar</code>s to help oneself sorting and tracking messages.</p>
<p>I am not the one receiving spam onto registration email with dlinkddns.com: <a href="http://forums.dlink.com/index.php?topic=51093.0">dlinkddns email details leaked?</a>.</p>
<p>Bonus reading: <a href="http://productforums.google.com/forum/#!topic/gmail/_-pas2cI2U0">Use of the &#8220;+&#8221; to track email abuse: Using gmail filters</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://alax.info/blog/1426/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Skype 6.0.0.126: improved support for video devices for richer user experience</title>
		<link>http://alax.info/blog/1421</link>
		<comments>http://alax.info/blog/1421#comments</comments>
		<pubDate>Sat, 17 Nov 2012 10:53:59 +0000</pubDate>
		<dc:creator>Roman</dc:creator>
				<category><![CDATA[Utilities]]></category>
		<category><![CDATA[DirectShow]]></category>
		<category><![CDATA[ip video source]]></category>
		<category><![CDATA[skype]]></category>
		<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://alax.info/blog/?p=1421</guid>
		<description><![CDATA[A new release of Skype is out there, version 6.0.0.126: Metro look on the main (roster) window &#8211; good job! Broken compatibility with software (virtual) video capture devices &#8211; good job! Broken compatibility with some of hardware capture devices &#8211; good job! While stripping virtual video devices in favor of true cameras, to avoid issues, [...]]]></description>
				<content:encoded><![CDATA[<p>A new release of Skype is out there, version 6.0.0.126:</p>
<ul>
<li>Metro look on the main (roster) window &#8211; good job!</li>
<li>Broken compatibility with software (virtual) video capture devices &#8211; good job!</li>
<li>Broken compatibility with some of hardware capture devices &#8211; good job!</li>
</ul>
<p><img src="http://alax.info/blog/wp-content/uploads/2012/11/Image003.png" alt="" title="Skype Version" width="501" height="454" class="alignnone size-full wp-image-1422" /></p>
<p>While stripping virtual video devices in favor of true cameras, to avoid issues, might be intentional (though it would still be hard to justify anyway), the update also screwed the operation with a true hardware WDM driver backed PCI video capture board&#8230; Nice &#8211; with a dozen of cameras around the table I no longer have a single one compatible with Skype.</p>
<p>A little bit of hackery brings virtual DirectShow sources back to life, including those created by <a href="http://alax.info/blog/1223">IP Video Source</a>, however the issue is clearly Skype&#8217;s: I have no intention to work it around, let&#8217;s hope Skype guys are given some piece of mind to fix that soon.</p>
<p>Be aware and <strong>DO NOT UPGRADE</strong> if operation of virtual video source in Skype is is essential!</p>
<p>NOTE: There is an open <a href="https://jira.skype.com/browse/SCW-3881">issue</a> on Skype&#8217;s tracker for the virtual camera compatibility.</p>
<p><img src="http://alax.info/blog/wp-content/uploads/2012/11/Image002.png" alt="" title="StartDot IP Camera on Skype via IP Video Source" width="716" height="612" class="alignnone size-full wp-image-1423" /></p>
]]></content:encoded>
			<wfw:commentRss>http://alax.info/blog/1421/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IP Video Source: Support for HTTPS protocol</title>
		<link>http://alax.info/blog/1416</link>
		<comments>http://alax.info/blog/1416#comments</comments>
		<pubDate>Mon, 22 Oct 2012 20:31:36 +0000</pubDate>
		<dc:creator>Roman</dc:creator>
				<category><![CDATA[Utilities]]></category>
		<category><![CDATA[Video]]></category>
		<category><![CDATA[camera]]></category>
		<category><![CDATA[DirectShow]]></category>
		<category><![CDATA[HTTPS]]></category>
		<category><![CDATA[ip]]></category>
		<category><![CDATA[ipvideosource]]></category>
		<category><![CDATA[JPEG]]></category>
		<category><![CDATA[M-JPEG]]></category>
		<category><![CDATA[virtual]]></category>

		<guid isPermaLink="false">http://alax.info/blog/?p=1416</guid>
		<description><![CDATA[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 [...]]]></description>
				<content:encoded><![CDATA[<p>This publishes a small update to <a href="http://alax.info/blog/1223">IP Video Source</a> tool to expose M-JPEG/JPEG video streams as DriectShow video devices. The utility now accepts <code>https://</code> URL scheme and pulls video over secure connections. Not every camera has support for HTTPS, however many do including those from <a href="http://www.udptechnology.com/">UDP Technology</a>, Axis etc.</p>
<p>The update also includes other minor fixes including more reasonable memory allocation, and hotfix for D-Link DCS-930L model, which &#8211; to mention &#8211; 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):</p>
<pre><code>#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
</code></pre>
<h3>Download links</h3>
<ul>
<li>Version: 1.0.2</li>
<li>Binaries: Win32 – <a href="http://www.alax.info/svn/public/trunk/IpVideoSource/IpVideoSourceSetup-Win32.msi">IpVideoSourceSetup-Win32.msi</a>, x64 &#8211; <a href="http://www.alax.info/svn/public/trunk/IpVideoSource/IpVideoSourceSetup-x64.msi">IpVideoSourceSetup-x64.msi</a></li>
<li>License: This software is free to use</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://alax.info/blog/1416/feed</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Log Process Exceptions: Filters and Email Notification</title>
		<link>http://alax.info/blog/1409</link>
		<comments>http://alax.info/blog/1409#comments</comments>
		<pubDate>Sun, 07 Oct 2012 23:08:32 +0000</pubDate>
		<dc:creator>Roman</dc:creator>
				<category><![CDATA[ATL]]></category>
		<category><![CDATA[Source]]></category>
		<category><![CDATA[Utilities]]></category>
		<category><![CDATA[WTL]]></category>
		<category><![CDATA[debug]]></category>
		<category><![CDATA[exception]]></category>
		<category><![CDATA[log]]></category>
		<category><![CDATA[troubleshooting]]></category>

		<guid isPermaLink="false">http://alax.info/blog/?p=1409</guid>
		<description><![CDATA[Moving on with LogProcessExceptions tool which externally monitors (debugs, to be more specific) an application of interest and captures its exceptions writing minidump files for further analysis. This updates adds two features: Ability to filter out the exceptions of interest An email notification on exception, with or without minidump file Filter A new property page [...]]]></description>
				<content:encoded><![CDATA[<p>Moving on with <a href="http://alax.info/blog/1359">LogProcessExceptions</a> tool which externally monitors (debugs, to be more specific) an application of interest and captures its exceptions writing <a href="http://msdn.microsoft.com/en-us/library/windows/desktop/ms680369%28v=vs.85%29.aspx">minidump files</a> for further analysis.</p>
<p>This updates adds two features:</p>
<ol>
<li>Ability to filter out the exceptions of interest</li>
<li>An email notification on exception, with or without minidump file</li>
</ol>
<h2>Filter</h2>
<p>A new property page in the wizard provides one with an option to specify filters/rules to identify exceptions of interest. One rule per line, once exception occurred its codes are compared against rules top to bottom. The first matching rule results in decision whether to log the minidump (and issue a notification) or not. If no filter/rule applicable found, or the entire filter is empty, the exception is logged (positive).</p>
<p><img src="http://alax.info/blog/wp-content/uploads/2012/10/Image0051.png" alt="" title="Filter Property Page" width="513" height="400" class="alignnone size-full wp-image-1412" /></p>
<p>The rule syntax is the following:</p>
<ul>
<li>empty lines are ignored</li>
<li>anything to the right from <code>//</code> is considered to be a comment</li>
<li>meaningful line has one or more items separated by spaces</li>
<li>first item on the line is either <code>-</code> or <code>+</code> to indicate whether the rule will result in skipping the exception (minus sign) or logging in (plus sign)</li>
<li>second item is exception code, e.g. <code>0xC0000005</code> for memory access violation, <a href="http://blogs.msdn.com/b/oldnewthing/archive/2010/07/30/10044061.aspx"><code>0xE06D7363</code></a> for native C++ exception (this constant has a dedicated alias &#8220;C++&#8221;</li>
<li>third item applies to C++ exceptions and matches ATL <code>CAtlException</code> codes, and this allows to filter out specific <code>HRESULT</code>s; it is also possible to specify a range of codes as shown on the screenshot above</li>
</ul>
<h2>Email Notification</h2>
<p>Why? Some issues are long to wait, so you don&#8217;t want to have it in front of you until the issue takes place. This is when a friendly email from the application would be so much appreciated.</p>
<p><img src="http://alax.info/blog/wp-content/uploads/2012/10/Image0061.png" alt="" title="Email Notification Property Page" width="513" height="400" class="alignnone size-full wp-image-1413" /></p>
<p>The application gets you that by queuing an email once exception of interest takes place. The email settings are basically those of class described on an <a href="http://alax.info/blog/1357">earlier EmailTools.dll post</a>. The whole SMTP email class is embedded into this application, and it actually deserves a dedicated post on explaining how to embed ATL COM class with persistence based on COM map, which in turn depends on type library expected to be registered, into another application which additionally runs without registration.</p>
<p>There is a default preset tuned for Google Mail, but there are other options as well. Note that both filter and email settings are saved into registry under <code>HKCU</code> to be reused in next runs of the application.</p>
<p>Small minidump files are attached right to the emails. Larger ones (typically those with Full Memory option checked) are only mentioned. There is a threshold setting that defines how many megabytes is OK to attach the most.</p>
<p><img src="http://alax.info/blog/wp-content/uploads/2012/10/Image007.png" alt="" title="Email Sample" width="575" height="324" class="alignnone size-full wp-image-1414" /></p>
<p>Download links:</p>
<ul>
<li>Partial Visual C++ .NET 2010 source code: <a href="http://www.alax.info/trac/public/browser/trunk/Utilities/LogProcessExceptions">Trac</a>, <a href="http://www.alax.info/svn/public/trunk/Utilities/LogProcessExceptions/">Subversion</a></li>
<li>Binaries: Win32 – <a href="http://www.alax.info/svn/public/trunk/Utilities/LogProcessExceptions/_Bin/Win32/Release/LogProcessExceptions.exe">LogProcessExceptions.exe</a>, x64 – <a href="http://www.alax.info/svn/public/trunk/Utilities/LogProcessExceptions/_Bin/x64/Release/LogProcessExceptions.exe">LogProcessExceptions.exe</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://alax.info/blog/1409/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
