The purpose of this library is to allow access to Windows Media Format functionality from within .NET. Additionally, it provides definitions for the waveIn*, waveOut*, mixer* and MMIO* methods of the Windows Multimedia SDK.
Reviewing the source code in this library will show that there is very little executable code in this library. There are a few helper functions (mostly in WMUtils.cs), but everything else in the library is just definitions. Although there are ~106 interfaces defined in the source code, only some of them have been tested to ensure that they are working (see below).
This is the current list of samples along with a short description. See the readme.txt in the individual samples for more details. Note that these samples should not be considered commercial quality, but can form the basis of your own code.
AsfCreate - Creates an Asf or WMV file from a collection of bitmaps
AsfNet - Sends the output of DirectShow capture graphs to a network port to be read by Windows Media Player
AudioPlayer - Play the audio portion of a windows media file
DESCombine- Join and split files, outputting data to a WM file.
DrmHeader - Show the DRM attributes of a file
GenerateLa - Builds (and plays) a wave buffer that contains a beep.
ReadFromStream - Walk the samples in a file where the source is an IStream
RecordWav - Record audio data from a microphone to a .wav file
WMProp - Show file properties for WM files
WMVCopy - Code to copy a file
Tested interfaces ready to use:
IConfigAsfWriter | IWMMetadataEditor | IWMReaderTypeNegotiation |
INSNetSourceCreator | IWMMetadataEditor2 | IWMRegisterCallback |
INSSBuffer | IWMMutualExclusion | IWMSInternalAdminNetSource |
INSSBuffer2 | IWMMutualExclusion2 | IWMSInternalAdminNetSource2 |
INSSBuffer3 | IWMOutputMediaProps | IWMSInternalAdminNetSource3 |
INSSBuffer4 | IWMPacketSize | IWMStatusCallback |
IWMAddressAccess | IWMPacketSize2 | IWMStreamConfig |
IWMAddressAccess2 | IWMPlayerHook | IWMStreamConfig2 |
IWMBackupRestoreProps | IWMProfile | IWMStreamConfig3 |
IWMBandwidthSharing | IWMProfile2 | IWMStreamList |
IWMClientConnections | IWMProfile3 | IWMStreamPrioritization |
IWMClientConnections2 | IWMProfileManager | IWMSyncReader |
IWMCodecInfo | IWMProfileManager2 | IWMSyncReader2 |
IWMCodecInfo2 | IWMProfileManagerLanguage | IWMVideoMediaProps |
IWMCodecInfo3 | IWMPropertyVault | IWMWriter |
IWMCredentialCallback | IWMReader | IWMWriterAdvanced |
IWMDRMEditor | IWMReaderAdvanced | IWMWriterAdvanced2 |
IWMHeaderInfo | IWMReaderAdvanced2 | IWMWriterAdvanced3 |
IWMHeaderInfo2 | IWMReaderAdvanced3 | IWMWriterFileSink |
IWMHeaderInfo3 | IWMReaderAdvanced4 | IWMWriterFileSink2 |
IWMIndexer | IWMReaderAdvanced5 | IWMWriterFileSink3 |
IWMIndexer2 | IWMReaderAllocatorEx | IWMWriterNetworkSink |
IWMInputMediaProps | IWMReaderCallback | IWMWriterPostView |
IWMIStreamProps | IWMReaderCallbackAdvanced | IWMWriterPostViewCallback |
IWMLanguageList | IWMReaderNetworkConfig | IWMWriterPreprocess |
IWMLicenseBackup | IWMReaderNetworkConfig2 | IWMWriterPushSink |
IWMLicenseRestore | IWMReaderPlaylistBurn | IWMWriterSink |
IWMMediaProps | IWMReaderStreamClock |
These methods are also defined in the library:
WMCreateBackupRestorer | mmioAdvance | waveInAddBuffer | waveOutBreakLoop | mixerClose |
WMCreateEditor | mmioAscend | waveInClose | waveOutClose | mixerGetControlDetails |
WMCreateIndexer | mmioClose | waveInGetDevCaps | waveOutGetDevCaps | mixerGetDevCaps |
WMCreateProfileManager | mmioCreateChunk | waveInGetErrorText | waveOutGetErrorText | mixerGetID |
WMCreateReader | mmioDescend | waveInGetNumDevs | waveOutGetNumDevs | mixerGetLineControls |
WMCreateSyncReader | mmioFlush | waveInGetPosition | waveOutGetPitch | mixerGetLineInfo |
WMCreateWriter | mmioGetInfo | waveInMessage | waveOutGetPlaybackRate | mixerGetNumDevs |
WMCreateWriterFileSink | mmioOpen | waveInOpen | waveOutGetPosition | mixerMessage |
WMCreateWriterNetworkSink | mmioRead | waveInPrepareHeader | waveOutGetVolume | mixerOpen |
WMCreateWriterPushSink | mmioRename | waveInReset | waveOutMessage | mixerSetControlDetails |
WMIsAvailableOffline | mmioSeek | waveInStart | waveOutOpen | |
WMIsContentProtected | mmioSendMessage | waveInStop | waveOutOpen | |
WMCheckURLExtension | mmioSetBuffer | waveInUnprepareHeader | waveOutPause | |
WMCheckURLScheme | mmioSetInfo | waveOutPrepareHeader | ||
WMValidateData | mmioWrite | waveOutReset | ||
waveOutRestart | ||||
waveOutSetPitch | ||||
waveOutSetPlaybackRate | ||||
waveOutSetVolume | ||||
waveOutUnprepareHeader | ||||
waveOutWrite |
These interfaces are in the source code, but are deprecated, undocumented or otherwise untestable:
These 3 interfaces are only useful when writing a DirectShow filter (see http://msdn.microsoft.com/en-us/library/dd798058.aspx). Since you can't do that in c#, there's no reason (in fact, no way) to test these.