[This is preliminary documentation and subject to change.]
DirectShow provides a well defined architecture for handling all types of multimedia data using abstractions such as filters and pins. Best performance in DirectShow (and in general) is achieved by minimizing both data copies and thread-switches. These attributes served as the primary guidelines in developing an architecture for DirectShow RTP.
An important further optimization is to allow processing of multimedia data in kernel mode. This can be accomplished by using WDM streaming. In order to facilitate this migration of functionality from user to kernel mode, all data processing should be done within the DirectShow model. Thus, RTP packets are carried as DirectShow Media Samples, passed between filters that implement the various functions necessary to support RTP. These filters can later be migrated to the kernel as WDM streaming nodes, leaving proxies in their place to expose control functionality to applications.