ProtoLink was contracted to analyze and fix problems with the video
broadcasting and video e-mail software components of an internet appliance
set-top box. This appliance contains custom video hardware capable of
real-time capture and MPEG2 decoding.
In their original form, the broadcasting component (Video Cast) and the e-mail
component (Video Mail) used the automation interface of the Microsoft Windows
Media Encoder to capture and stream video either over the network in the case
of Video Cast or to a file for Video Mail. Both components suffered from
unacceptable delays in their respective video preview windows. The video
showing in the preview window lagged the real-time video by
approximately ten seconds, making it difficult to monitor what was being
broadcast or recorded.
After analyzing the applications' source code, ProtoLink determined the cause
of the problem. The Video Cast and Video Mail applications each
used a Windows Media Player control embedded on their respective forms to
display the video encoded by Windows Media Encoder. The substantial delay
between the live video and the displayed video was due to the fact that
both Windows Media Encoder and Windows Media Player were buffering the
streaming video.
After researching Microsoft's available multimedia technologies, including
Video for Windows and DirectShow, ProtoLink developed a custom DLL in C++. The
DLL captures live video using the Video for Windows API and uses COM
interfaces implemented in the Windows Media Format SDK to encode and stream
video over the network or to a file.