Udostępnij za pośrednictwem


Here is a consolidated list of changes that we can expect for DirectShow Windows 7

Potentially Breaking Change (*IMPORTANT*):

Intelligent Connect adds a level of indirection on Win 7 that may have a major impact to DirectShow developers. Starting in Windows 7, DirectShow has a list of preferred filters for certain media subtypes. If there is a preferred filter for the media type that is being rendered, the Filter Graph Manager tries that filter first. An application can modify the list of preferred filters by using the IAMPluginControl interface. Changes to the list affect the application's current process, and are discarded after the process ends. Also in Win 7 DirectShow has a list of blocked filters for certain media subtypes. The Filter Graph Manager skips filters on this list. An application can modify the list of blocked filters by using the IAMPluginControl interface. Changes to this list affect the application's current process, and are discarded after the process ends. See the IAMPluginControl interface entry below for more detailed information.

Updated filters:
Microsoft MPEG-1/DD/AAC Audio Decoder (Microsoft DTV-DVD Audio Decoder) – This filter is compatible with almost all MPEG audio formats available today including MPEG-1 and MPEG-2 Layer 1 and 2, AAC, DTS and Dolby Digital. The Microsoft implementation of the Dolby Digital technology is restricted under terms of the Dolby Digital licensing program to use by Microsoft applications. This means that just like on Windows Vista 3rd party developers still can’t use the filter to decode Dolby Digital content. This makes is very difficult to develop a DVD playback application using MS only components. Also keep in mind that this filter is not available on IA-64 platforms.

Microsoft MPEG-2 Video Decoder (Microsoft DTV-DVD Video Decoder) – This filter is compatible with MPEG-1, 2 and 4 video playback. MPEG 4 is new for Win 7. This decoder supports decoding h.264 and x.264 MPEG 4 content as well as AVC content. MS MPEG 4 variants are not supported by this filter. All of the decoder’s capabilities should be available for use by 3rd party developers. DVD decryption is not currently part of Microsoft’s MPEG-2 decoder implementation. 3rd party decrypter can plug into the Microsoft MPEG-2 decoder using the “DVD Copy Protection Property Set”.

Added Interfaces:
IAMAsyncReaderTimestampScaling – This interface is implemented by pull source filters to enable large file support. Large file support is any media file over 860 GB. This interface is used by filters that implement the IASyncReader  interface. This limits the use of this interface to pull-mode source filters only. The in box “File Source (Async)” and the “File Source (URL)” filters implement this interface by default. Parser filters that connect to the pull-mode source can use this interface to enable large file support. Luckily if you are just writing a simple file playback application you don’t need to worry about this interface. You only need to use this if you are writing a pull-mode parser / demux filter. I would HIGHLY discourage anyone from trying to write their own pull-mode parser filter. I’ve been doing DirectShow for years and the last time I tried to implement a pull-mode parser I failed miserably. I ran into so many complex threading issues that it just wasn’t worth the effort. Just write your own push source filter and incorporate the parser / demux functionality in the source filter itself.

IAMPluginControl – This interface controls the preferred and blocked filter lists for the new intelligent connect functionality added in Win 7 (see “important” above). You can use this interface to add or remove GUIDs from the preferred and blocked lists. This interface allows your application to get around the requirements of the preferred and blocked lists. If you have a specific filter arrangement that your application requires and you see that other filters are being added to the graph unexpectedly, then you will probably need to implement this interface and make sure that you update the lists accordingly. The major problem with using this interface is that you CANNOT use it to modify the preferred and blocked list on a system wide basis. This interface only allows you to modify the list for the current process (your process). You can’t modify the lists for other processes. The changes are discarded when your process ends. This can be a real problem if you expect your filter to be loaded into a graph within Windows Media Player (WMP). Your filter will not be on the preferred list and probably won’t get loaded into the WMP graph as you expect. At this time there is no way to change this behavior. There is currently no way to force your filter to be loaded into a graph in an application that you do not control if the graph is satisfied by filters on the preferred list. There is no supported way to modify the preferred list on a system wide level, since the list is under system file protection. If you attempt to hack the preferred list you may cause the installer / application that changes the values in the list to be detected as malware and quarantined.

Intelligent Connect in Windows 7
https://msdn.microsoft.com/en-us/library/dd390342(VS.85).aspx

Microsoft MPEG-1/DD/AAC Audio Decoder
https://msdn.microsoft.com/en-us/library/dd390676(VS.85).aspx

Microsoft MPEG-2 Video Decoder
https://msdn.microsoft.com/en-us/library/dd390679(VS.85).aspx

H.264 Video Types
https://msdn.microsoft.com/en-us/library/dd757808(VS.85).aspx

DVD Copy Protection Property Set
https://msdn.microsoft.com/en-us/library/dd388585(VS.85).aspx

IAMAsyncReaderTimestampScaling Interface
https://msdn.microsoft.com/en-us/library/dd389120(VS.85).aspx

IAMPluginControl Interface
https://msdn.microsoft.com/en-us/library/dd319756(VS.85).aspx

Comments