Proxying Broadcast Streams

A broadcast is a shared experience. All of the clients connected to a broadcast receive the same content at approximately the same time, depending on network latency. To minimize network bandwidth, a Windows Media proxy server can split a stream by making a single connection to the upstream server and copying the incoming packets to multiple downstream clients.

A Windows Media proxy server uses a cache proxy broadcast publishing point to proxy a splittable broadcast. The WMS_DATA_CONTAINER_VERSION_ALLOW_STREAM_SPLITTING flag from the WMS_DATA_CONTAINER_VERSION_CACHE_FLAGS enumeration must be set by the upstream server, and the content must not require that the user be authenticated. The flags are stored in a context that is downloaded with the content. Your plug-in can retrieve the flags by using the GetCacheFlags method on the IWMSDataContainerVersion interface. The WMS_CACHE_CONTENT_INFORMATION_DATA_CONTAINER_VERSION value in the Cache Content Information Context contains a pointer to the IWMSDataContainerVersion interface.

To avoid unauthorized access, a Windows Media proxy server does not split or cache content from any upstream server that issues an authentication challenge. If the cache plug-in requests that the content be cached, the cache proxy server rejects the request. If the plug-in requests that the content be split, the server forces the request for content to be proxied on demand.

To determine whether the content requested by the client is a broadcast, a cache plug-in can call the GetContentInformation method on the IWMSCacheProxyServer interface. The Windows Media server queries the origin server for information about the requested content and sends the plug-in a pointer to the content information context by callingOnGetContentInformation on the IWMSCacheProxyServerCallback interface. If the WMS_CACHE_CONTENT_INFORMATION_CONTENT_TYPE field in the content information context contains WMS_CACHE_CONTENT_TYPE_BROADCAST, the content is a broadcast.


   The WMS_CACHE_CONTENT_INFORMATION_CONTENT_TYPE field can contain any combination of the flags in the WMS_CACHE_CONTENT_TYPE_FLAGS enumeration type.

See Also (General)

See Also (Visual Basic .NET)

See Also (C#)

See Also (C++)