DirectShow OS Design Development (Windows Embedded CE 6.0)
1/6/2010
DirectShow for Windows Embedded CE is an architecture for streaming media.
Microsoft DirectShow® provides high-quality playback of multimedia streams. It supports a variety of formats, including the following:
- Advanced Streaming Format (ASF)
- Motion Picture Experts Group (MPEG)
- Audio-Video Interleaved (AVI)
- WAV
DirectShow is integrated with other Microsoft DirectX® technologies.
It detects and uses video and audio acceleration hardware when available, but also supports systems without acceleration hardware.
DirectShow provides an OS design with the underlying infrastructure to support the capabilities of DirectShow.
It does not provide media codecs or filter graphs to support playback of media.
The DirectShow Audio and DirectShow Video Catalog items provide the codecs and rendering support for playback.
OS Design Information
The following table shows operating system design information for DirectShow.
Concept | Description |
---|---|
Dependencies |
Requires DirectDraw. Requires Urlmon for OS designs without full browser support. |
Hardware considerations |
None. |
DirectShow simplifies media playback and format conversion. It also provides access to the underlying stream control architecture for applications that require custom solutions. You can also create your own DirectShow components to support new formats or custom effects.
Examples of the types of applications you can write with DirectShow include:
- DVD players
- video editing applications
- AVI to ASF converters
DirectShow is based on the Component Object Model (COM). To write a DirectShow application, you must understand COM client programming.
For most applications, you do not need to implement your own COM objects. DirectShow provides the components you need.
However, to extend DirectShow by writing your own components, you must implement them as COM objects.
Modules and Components
The following table components and modules implement DirectShow.
Item | Module | Component |
---|---|---|
DirectShow URL Reader |
urlrdr |
urlmon |
Multimedia streaming support |
amstream |
amstream |
Video compression manager support |
icm |
icm |
Fraunhofer MP3 codec support |
l3codec |
l3filter |
ACM driver used by DirectShow |
msacmce |
msacmce |
Microsoft ADPCM audio codec support |
msadpcm |
msadpcm |
G.711 audio codec support |
msg711 |
msg711 |
GSM 6.10 audio codec support |
msgsm610 |
msgsm610 |
RLE8 video codec support |
msrle32 |
msrle32 |
A PCM bit/sample rate ACM conversion codec |
pcmconv |
pcmconv |
DirectShow core functionality |
quartz |
quartz |
A windowless video control |
vrctl |
vrctl |
Microsoft Windows Media® audio support |
wmadmod |
wmadmod |
Windows Media video support for v7-v9. MPEG-4 v2, MPEG-4 v3, ISO MPEG-4 v1 support. These legacy MPEG-4 codecs pre-date the publication of the MPEG-4 specification. They do not support all aspects of the current specification, and are provided only to support playback of media encoded using these legacy formats. |
wmvdmod |
wmvdmod |
To use the URL Reader module of DirectShow urlrdr in an OS design that does not have full browser support, the OS design must contain the Microsoft Internet Explorer urlmon component.
If you are creating your OS design from the command line, be sure the urlmon component is included in the IE_MODULES setting in Cesysgen.bat. This dependency is handled automatically for OS designs created using the Microsoft Platform Builder IDE.
Implementation Considerations
The following table shows the relevant Sysgen variables.
Sysgen variable | Description |
---|---|
SYSGEN_DSHOW |
DirectShow Core |
SYSGEN_DSHOW_ACMWRAP |
ACM Wrapper Filter |
SYSGEN_DSHOW_AVI |
AVI Filter |
SYSGEN_DSHOW_DISPLAY |
DirectShow Display |
SYSGEN_DSHOW_DMO |
DirectX Media Object wrapper filter |
SYSGEN_DSHOW_ERRORS |
DirectShow Error Messages |
SYSGEN_DSHOW_ICM |
Video/Image Compression Manager |
SYSGEN_DSHOW_IMAADPCM |
IMA ADPCM Audio Codec |
SYSGEN_DSHOW_MP3 |
MP3 Codec |
SYSGEN_DSHOW_MP3DMOD |
MP3 Decoder DMO |
SYSGEN_DSHOW_MPEGA |
MPEG-1 Layer 1 & 2 Audio Codec |
SYSGEN_DSHOW_MPEGSPLITTER |
MPEG-1 Parser/Splitter |
SYSGEN_DSHOW_MPEGV |
MPEG-1 Video Codec |
SYSGEN_DSHOW_MSADPCM |
MS ADPCM Audio Codec |
SYSGEN_DSHOW_MSG711 |
G.711 Audio Codec |
SYSGEN_DSHOW_MSGSM610 |
GSM 6.10 Audio Codec |
SYSGEN_DSHOW_MSRLE |
MS RLE Video Codec |
SYSGEN_DSHOW_OVMIXER |
Overlay Mixer |
SYSGEN_DSHOW_SAMPLE |
Sample filters, codecs, and applications for DirectShow |
SYSGEN_DSHOW_VIDREND |
DirectShow Video Renderer |
SYSGEN_DSHOW_WAV |
Wave/AIFF/au/snd File Parser |
SYSGEN_DSHOW_WAVEOUT |
Waveform Audio Renderer |
SYSGEN_DSHOW_WMA |
WMA Codec |
SYSGEN_DSHOW_WMA_VOICE |
WMA Voice Codec |
SYSGEN_DSHOW_WMV |
WMV v7-v9 / Legacy MPEG-4 Video Codec |
MP3 codec optimizations for XScale-based platforms
If you are developing an XScale-based platform to support MP3 decoding, you can take advantage of some optimizations in the MP3 codec that are only available for XScale processors by including the following code in your %_WINCEROOT%\Platforms\<Hardware platform name>\<Hardware platform name>.bat file:
set _TGTCPUVARIANT=XSC
This optimized codec is only available for OS designs based on Windows CE .NET 4.2 or later.
Application Development Topics
DirectShow Application Development