I envy those who can pass this…
By the way going disabled way was of little help because the audio hint was hardly better recognizible…
// Oprogramowanie Roman Ryltsov
I envy those who can pass this…
By the way going disabled way was of little help because the audio hint was hardly better recognizible…
Recently it was the time to sort out an issue with a video DMO, which outputs YV12 video and in the same time is capable of supporting extended video strides in order to efficiently make a direct connection to Video Mixing Renderer Filters.
From past experience, I already knew that some bugs are definitely involved but their effect was yet unexplored. For a testbed application, I took good old FrameRateSample02 application, which generates multiple video feeds and routes it to video renderers:
With new source video choices the application is capable of constructing filter graphs that use a private DMO (that is hosted inside the executable) wrapped with DMO Wrapper Filter, with a graph topology shown below:
Once again, there was a need in Nokia software to backup phone contents before sending new phone to service. The new phone, new model, latest firmware has Bluetooth subsystem failing to connect to PC’s bluetooth, to bluetooth headset etc. – it’s worth a separate story itself.
So Nokia PC Suite, the latest the greatest version 7.1.18.0. An attempt to backup phone contents leads to infinite loop with 100% CPU consumption on a single thread and Next button (BTW it’s referred to as Next but has no text label in GUI, just for better user experience):
In order to obtain a reference audio source and especially useful for debugging purposes, including:
I added a new filter to the Media Tools library, a Tone Source Filter. The filter generates PCM Audio data, either infinite sine waveform, or interrupted signal of requested parameters:
The filter accepts connection on PCM media types with flexible sampling rates in range 8 KHz through 200 KHz, 8-bit audio and 1 channel. Media type is also configurable through or, if not configured this way, the first enumerated media type off the Output pin is also configurable through property page and/or persistent setting accessible via private IDispatch derived interface property.
Additionally, the filter may configured as a system-wide available audio input device, such as for example available to VLC Media Player or Media Player Classic:
In order to configure the filter as such device, the library exports function DoToneSourceFilterDevicePropertySheetModal, which can be called using rundll32 utility (“rundll32 Acquisition.dll,DoToneSourceFilterDevicePropertySheetModal” from command line):
A partial Visual C++ .NET 2008 source code is available from SVN, release binary included.
Acqusition.dll (download) hosts the following classes:
The filter generates uninterrupted or interrupted reference sine waveform in form of PCM audio data.
The hosting library (DLL) exposes DoToneSourceFilterDevicePropertySheetModal function which provides GUI to configure the filter as one or more audio capture source device, which can be enumerated by System Device Enumerator.
Alax.Info DHCP Server received more configuration options and allows customizable DHCP parameters, options 3, 4 and 6:
Registry: Data Tag Name Length Meaning Reference -------- ------------------------------- ------ ------------------------------------------------ --------- 3 Router N N/4 Router addresses [RFC2132] 4 Time Server N N/4 Timeserver addresses [RFC2132] 6 Domain Server N N/4 DNS Server addresses [RFC2132]
Application GUI allows configuration of the options, including multiple IP addresses per option and “this” placeholder to be replaced with selected network adapter’s IP address:
The DHCP Server application responds to the network device with a packet of the following kind (captured by WireShark):
Release information:
I don’t have any idea who makes software nowadays, but how can it expected to be reliable?
Intel DG33FBC motherboard, onboard Realtek ALC888 High Definition Audio. I am tracing AUDIO_STREAM_CONFIG_CAPS capabilities reported by onboard audio capture board, one of them:
majortype {73647561-0000-0010-8000-00AA00389B71}, subtype {00000001-0000-0010-8000-00AA00389B71}, pUnk 0x00000000 bFixedSizeSamples 1, bTemporalCompression 0, lSampleSize 4 formattype {05589F81-C356-11CE-BF01-00AA0055595A}, cbFormat 18, pbFormat 0x002911a8 pbFormat as WAVEFORMATEX: wFormatTag 1 nChannels 2 nSamplesPerSec 8000 nAvgBytesPerSec 32000 nBlockAlign 4 wBitsPerSample 16 cbSize 0
guid {73647561-0000-0010-8000-00AA00389B71}
MinimumChannels 1, MaximumChannels 2, ChannelsGranularity 1
MinimumBitsPerSample 8, MaximumBitsPerSample 16, BitsPerSampleGranularity 8
MinimumSampleFrequency 11025, MaximumSampleFrequency 44100, SampleFrequencyGranularity 11025
Media type sampling frequency is 8 KHz (correct) but associated capabilities structure still report different sampling rates and granularity (crap), it is in fact 11025..44100 Hz for all capabilities, including those with sampling frequencies from a different row.
While new NTFS Links propery page is looking for contained junction points, it shows an animated picture to indicate opertation in progress. The picture is a stock resource and is taken from shell32.dll resource type “AVI” name 150. It is an Audio Video Interleave (AVI) file embedded into binary resources as is.
What is however interesting is that being saved as a file and double-clicked, it appeared to be crashing the player process. What might go wrong with a stock resource, is it FFDShow again? This was the first guess and yes, it was FFDShow again. This is a “video only” file with video encoded with MS-RLE compression, FOURCC ‘RLE ‘. Microsoft provides a VCM codec for the format through msrle32.dll.
However, as already discovered, FFDShow register itself under extremely high merit and for this reason is preferred as a video decoder and attempts to handle the decompression itself. But it fails, and miserably enough to crash the hosting process.
The registration under unfairly high merit defeats the purpose of DirectShow’s powerful Intelligent Connect approach. “Why do you need a video decoder? You have FFDShow Video Decoder, forget about the others. Oops, sorry, I don’t like your file.”
Is there any way to stop the villain? Of course, there is.