IMFByteStreamBuffering interface (mfidl.h)

Controls how a byte stream buffers data from a network.

To get a pointer to this interface, call QueryInterface on the byte stream object.

Inheritance

The IMFByteStreamBuffering interface inherits from the IUnknown interface. IMFByteStreamBuffering also has these types of members:

Methods

The IMFByteStreamBuffering interface has these methods.

 
IMFByteStreamBuffering::EnableBuffering

Enables or disables buffering.
IMFByteStreamBuffering::SetBufferingParams

Sets the buffering parameters.
IMFByteStreamBuffering::StopBuffering

Stops any buffering that is in progress.

Remarks

If a byte stream implements this interface, a media source can use it to control how the byte stream buffers data. This interface is designed for byte streams that read data from a network.

A byte stream that implements this interface should also implement the IMFMediaEventGenerator interface. When the byte stream starts buffering, it sends an MEBufferingStarted event. When it stops buffering, it sends an MEBufferingStopped event.

The byte stream must send a matching MEBufferingStopped event for every MEBufferingStarted event. The byte stream must not send MEBufferingStarted events unless the media source has enabled buffering by calling EnableBuffering with the value TRUE.

After the byte stream sends an MEBufferingStarted event, it should send MEBufferingStopped if any of the following occur:

  • The byte stream finishes buffering data.
  • The byte stream reaches the end of the stream.
  • The media source calls EnableBuffering with the value FALSE.
  • The media source calls StopBuffering.
The byte stream should not send any more buffering events after it reaches the end of the file.

If buffering is disabled, the byte stream does not send any buffering events. Internally, however, it might still buffer data while it waits for I/O requests to complete. Therefore, IMFByteStream methods might take an indefinite length of time to complete.

If the byte stream is buffering data internally and the media source calls EnableBuffering with the value TRUE, the byte stream can send MEBufferingStarted immediately.

After the presentation has started, the media source should forward and MEBufferingStarted and MEBufferingStopped events that it receives while started. The Media Session will pause the presentation clock while buffering is progress and restart the presentation clock when buffering completes. The media source should only forward these events while the presentation is playing. The purpose of sending these events to the Media Session is to pause the presentation time while the source buffers data.

Requirements

Requirement Value
Minimum supported client Windows Vista [desktop apps | UWP apps]
Minimum supported server Windows Server 2008 [desktop apps | UWP apps]
Target Platform Windows
Header mfidl.h

See also

IMFByteStream

IMFByteStreamCacheControl

Media Foundation Interfaces