SharpDX.MediaFoundation The assembly provides managed MediaFoundation API. MediaFoundation MediaFoundation ByteStream class used

Applies to: desktop apps | Metro style apps

Represents a byte stream from some data source, which might be a local file, a network file, or some other source. The interface supports the typical stream operations, such as reading, writing, and seeking.

The following functions return references for local files:

  • MFBeginCreateFile
  • MFCreateFile
  • MFCreateTempFile

A byte stream for a media souce can be opened with read access. A byte stream for an archive media sink should be opened with both read and write access. (Read access may be required, because the archive sink might need to read portions of the file as it writes.)

Some implementations of this interface also expose one or more of the following interfaces:

  • IMFGetService

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms698720 IMFByteStream IMFByteStream

Applies to: desktop apps | Metro style apps

Represents a byte stream from some data source, which might be a local file, a network file, or some other source. The interface supports the typical stream operations, such as reading, writing, and seeking.

The following functions return references for local files:

  • MFBeginCreateFile
  • MFCreateFile
  • MFCreateTempFile

A byte stream for a media souce can be opened with read access. A byte stream for an archive media sink should be opened with both read and write access. (Read access may be required, because the archive sink might need to read portions of the file as it writes.)

Some implementations of this interface also expose one or more of the following interfaces:

  • IMFGetService

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms698720 IMFByteStream IMFByteStream

Applies to: desktop apps | Metro style apps

Reads data from the stream.

Pointer to a buffer that receives the data. The caller must allocate the buffer.

Size of the buffer in bytes.

The number of bytes that are copied into the buffer

This method reads at most cb bytes from the current position in the stream and copies them into the buffer provided by the caller. The number of bytes that were read is returned in the pcbRead parameter. The method does not return an error code on reaching the end of the file, so the application should check the value in pcbRead after the method returns.

This method is synchronous. It blocks until the read operation completes.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms698913 HRESULT IMFByteStream::Read([Out, Buffer] unsigned char* pb,[In] unsigned int cb,[Out] unsigned int* pcbRead) IMFByteStream::Read

Applies to: desktop apps | Metro style apps

Begins an asynchronous read operation from the stream.

Pointer to a buffer that receives the data. The caller must allocate the buffer.

Size of the buffer in bytes.

Pointer to the interface of a callback object. The caller must implement this interface.

Pointer to the interface of a state object, defined by the caller. This parameter can be null. You can use this object to hold state information. The object is returned to the caller when the callback is invoked.

If this method succeeds, it returns . Otherwise, it returns an error code.

When all of the data has been read into the buffer, the callback object's method is called. At that point, the application should call to complete the asynchronous request.

Do not read from, write to, free, or reallocate the buffer while an asynchronous read is pending.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms704810 HRESULT IMFByteStream::BeginRead([Out, Buffer] unsigned char* pb,[In] unsigned int cb,[In] IMFAsyncCallback* pCallback,[In] IUnknown* punkState) IMFByteStream::BeginRead

Applies to: desktop apps | Metro style apps

Completes an asynchronous read operation.

Pointer to the interface. Pass in the same reference that your callback object received in the method.

The number of bytes that were read

Call this method after the method completes asynchronously.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms704042 HRESULT IMFByteStream::EndRead([In] IMFAsyncResult* pResult,[Out] unsigned int* pcbRead) IMFByteStream::EndRead

Applies to: desktop apps | Metro style apps

Writes data to the stream.

Pointer to a buffer that contains the data to write.

Size of the buffer in bytes.

Receives the number of bytes that are written.

If this method succeeds, it returns . Otherwise, it returns an error code.

This method writes the contents of the pb buffer to the stream, starting at the current stream position. The number of bytes that were written is returned in the pcbWritten parameter.

This method is synchronous. It blocks until the write operation completes.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms703843 HRESULT IMFByteStream::Write([In, Buffer] const unsigned char* pb,[In] unsigned int cb,[Out] unsigned int* pcbWritten) IMFByteStream::Write

Applies to: desktop apps | Metro style apps

Begins an asynchronous write operation to the stream.

Pointer to a buffer containing the data to write.

Size of the buffer in bytes.

Pointer to the interface of a callback object. The caller must implement this interface.

Pointer to the interface of a state object, defined by the caller. This parameter can be null. You can use this object to hold state information. The object is returned to the caller when the callback is invoked.

If this method succeeds, it returns . Otherwise, it returns an error code.

When all of the data has been written to the stream, the callback object's method is called. At that point, the application should call to complete the asynchronous request.

Do not reallocate, free, or write to the buffer while an asynchronous write is still pending.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms694005 HRESULT IMFByteStream::BeginWrite([In, Buffer] const unsigned char* pb,[In] unsigned int cb,[In] IMFAsyncCallback* pCallback,[In] IUnknown* punkState) IMFByteStream::BeginWrite

Applies to: desktop apps | Metro style apps

Completes an asynchronous write operation.

Pointer to the interface. Pass in the same reference that your callback object received in the method.

The number of bytes that were written

Call this method when the method completes asynchronously.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms703863 HRESULT IMFByteStream::EndWrite([In] IMFAsyncResult* pResult,[Out] unsigned int* pcbWritten) IMFByteStream::EndWrite

Applies to: desktop apps | Metro style apps

Moves the current position in the stream by a specified offset.

Specifies the origin of the seek as a member of the enumeration. The offset is calculated relative to this position.

Specifies the new position, as a byte offset from the seek origin.

Specifies zero or more flags. The following flags are defined.

ValueMeaning
MFBYTESTREAM_SEEK_FLAG_CANCEL_PENDING_IO

All pending I/O requests are canceled after the seek request completes successfully.

?

The new position after the seek

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms697053 HRESULT IMFByteStream::Seek([In] MFBYTESTREAM_SEEK_ORIGIN SeekOrigin,[In] longlong llSeekOffset,[In] unsigned int dwSeekFlags,[Out] unsigned longlong* pqwCurrentPosition) IMFByteStream::Seek

Applies to: desktop apps | Metro style apps

Clears any internal buffers used by the stream. If you are writing to the stream, the buffered data is written to the underlying file or device.

If this method succeeds, it returns . Otherwise, it returns an error code.

If the byte stream is read-only, this method has no effect.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms694833 HRESULT IMFByteStream::Flush() IMFByteStream::Flush

Applies to: desktop apps | Metro style apps

Closes the stream and releases any resources associated with the stream, such as sockets or file handles. This method also cancels any pending asynchronous I/O requests.

If this method succeeds, it returns . Otherwise, it returns an error code.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms703909 HRESULT IMFByteStream::Close() IMFByteStream::Close

Applies to: desktop apps | Metro style apps

Retrieves the characteristics of the byte stream.

The capabilities of the stream.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms698962 HRESULT IMFByteStream::GetCapabilities([Out] unsigned int* pdwCapabilities) IMFByteStream::GetCapabilities

Applies to: desktop apps | Metro style apps

Retrieves the length of the stream.

The length of the stream, in bytes. If the length is unknown, this value is -1.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms698941 HRESULT IMFByteStream::GetLength([Out] unsigned longlong* pqwLength) IMFByteStream::GetLength

Applies to: desktop apps | Metro style apps

Retrieves the current read or write position in the stream.

The current position, in bytes.

The methods that update the current position are Read, BeginRead, Write, BeginWrite, SetCurrentPosition, and Seek.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms704059 HRESULT IMFByteStream::GetCurrentPosition([Out] unsigned longlong* pqwPosition) IMFByteStream::GetCurrentPosition

Applies to: desktop apps | Metro style apps

Queries whether the current position has reached the end of the stream.

true if the end of the stream has been reached

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms697369 HRESULT IMFByteStream::IsEndOfStream([Out] BOOL* pfEndOfStream) IMFByteStream::IsEndOfStream
Instantiates a new instance from a . hh162754 HRESULT MFCreateMFByteStreamOnStreamEx([In] IUnknown* punkStream,[Out] IMFByteStream** ppByteStream) MFCreateMFByteStreamOnStreamEx

Applies to: desktop apps | Metro style apps

Reads data from the stream.

Pointer to a buffer that receives the data. The caller must allocate the buffer.

Offset into the buffer.

Size of the buffer in bytes.

The number of bytes that are copied into the buffer

This method reads at most cb bytes from the current position in the stream and copies them into the buffer provided by the caller. The number of bytes that were read is returned in the pcbRead parameter. The method does not return an error code on reaching the end of the file, so the application should check the value in pcbRead after the method returns.

This method is synchronous. It blocks until the read operation completes.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms698913 HRESULT IMFByteStream::Read([Out, Buffer] unsigned char* pb,[In] unsigned int cb,[Out] unsigned int* pcbRead) IMFByteStream::Read

Applies to: desktop apps | Metro style apps

Begins an asynchronous read operation from the stream.

Pointer to a buffer that receives the data. The caller must allocate the buffer.

Size of the buffer in bytes.

Pointer to the interface of a callback object. The caller must implement this interface.

Pointer to the interface of a state object, defined by the caller. This parameter can be null. You can use this object to hold state information. The object is returned to the caller when the callback is invoked.

If this method succeeds, it returns . Otherwise, it returns an error code.

When all of the data has been read into the buffer, the callback object's method is called. At that point, the application should call to complete the asynchronous request.

Do not read from, write to, free, or reallocate the buffer while an asynchronous read is pending.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms704810 HRESULT IMFByteStream::BeginRead([Out, Buffer] unsigned char* pb,[In] unsigned int cb,[In] IMFAsyncCallback* pCallback,[In] IUnknown* punkState) IMFByteStream::BeginRead

Applies to: desktop apps | Metro style apps

Completes an asynchronous read operation.

Pointer to the interface. Pass in the same reference that your callback object received in the method.

The number of bytes that were read

Call this method after the method completes asynchronously.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms704042 HRESULT IMFByteStream::EndRead([In] IMFAsyncResult* pResult,[Out] unsigned int* pcbRead) IMFByteStream::EndRead

Applies to: desktop apps | Metro style apps

Writes data to the stream.

Pointer to a buffer that contains the data to write.

Size of the buffer in bytes.

The number of bytes that are written.

This method writes the contents of the pb buffer to the stream, starting at the current stream position. The number of bytes that were written is returned in the pcbWritten parameter.

This method is synchronous. It blocks until the write operation completes.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms703843 HRESULT IMFByteStream::Write([In, Buffer] const unsigned char* pb,[In] unsigned int cb,[Out] unsigned int* pcbWritten) IMFByteStream::Write

Applies to: desktop apps | Metro style apps

Begins an asynchronous write operation to the stream.

Pointer to a buffer containing the data to write.

Size of the buffer in bytes.

Pointer to the interface of a callback object. The caller must implement this interface.

Pointer to the interface of a state object, defined by the caller. This parameter can be null. You can use this object to hold state information. The object is returned to the caller when the callback is invoked.

If this method succeeds, it returns . Otherwise, it returns an error code.

When all of the data has been written to the stream, the callback object's method is called. At that point, the application should call to complete the asynchronous request.

Do not reallocate, free, or write to the buffer while an asynchronous write is still pending.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms694005 HRESULT IMFByteStream::BeginWrite([In, Buffer] const unsigned char* pb,[In] unsigned int cb,[In] IMFAsyncCallback* pCallback,[In] IUnknown* punkState) IMFByteStream::BeginWrite

Applies to: desktop apps | Metro style apps

Completes an asynchronous write operation.

Pointer to the interface. Pass in the same reference that your callback object received in the method.

The number of bytes that were written

Call this method when the method completes asynchronously.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms703863 HRESULT IMFByteStream::EndWrite([In] IMFAsyncResult* pResult,[Out] unsigned int* pcbWritten) IMFByteStream::EndWrite

Applies to: desktop apps | Metro style apps

Moves the current position in the stream by a specified offset.

Specifies the origin of the seek as a member of the enumeration. The offset is calculated relative to this position.

Specifies the new position, as a byte offset from the seek origin.

Specifies zero or more flags. The following flags are defined.

ValueMeaning
MFBYTESTREAM_SEEK_FLAG_CANCEL_PENDING_IO

All pending I/O requests are canceled after the seek request completes successfully.

?

The new position after the seek

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms697053 HRESULT IMFByteStream::Seek([In] MFBYTESTREAM_SEEK_ORIGIN SeekOrigin,[In] longlong llSeekOffset,[In] unsigned int dwSeekFlags,[Out] unsigned longlong* pqwCurrentPosition) IMFByteStream::Seek

Applies to: desktop apps | Metro style apps

Clears any internal buffers used by the stream. If you are writing to the stream, the buffered data is written to the underlying file or device.

If this method succeeds, it returns . Otherwise, it returns an error code.

If the byte stream is read-only, this method has no effect.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms694833 HRESULT IMFByteStream::Flush() IMFByteStream::Flush

Applies to: desktop apps | Metro style apps

Closes the stream and releases any resources associated with the stream, such as sockets or file handles. This method also cancels any pending asynchronous I/O requests.

If this method succeeds, it returns . Otherwise, it returns an error code.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms703909 HRESULT IMFByteStream::Close() IMFByteStream::Close
Initializes a new instance of the class. The native pointer. Performs an explicit conversion from to . (This method is a shortcut to ) The native pointer. The result of the conversion.

Applies to: desktop apps | Metro style apps

Retrieves the characteristics of the byte stream.

Receives a bitwise OR of zero or more flags. The following flags are defined.

ValueMeaning
MFBYTESTREAM_IS_READABLE
0x00000001

The byte stream can be read.

MFBYTESTREAM_IS_WRITABLE
0x00000002

The byte stream can be written to.

MFBYTESTREAM_IS_SEEKABLE
0x00000004

The byte stream can be seeked.

MFBYTESTREAM_IS_REMOTE
0x00000008

The byte stream is from a remote source, such as a network.

MFBYTESTREAM_IS_DIRECTORY
0x00000080

The byte stream represents a file directory.

MFBYTESTREAM_HAS_SLOW_SEEK
0x00000100

Seeking within this stream might be slow. For example, the byte stream might download from a network.

MFBYTESTREAM_IS_PARTIALLY_DOWNLOADED
0x00000200

The byte stream is currently downloading data to a local cache. Read operations on the byte stream might take longer until the data is completely downloaded.

This flag is cleared after all of the data has been downloaded.

If the MFBYTESTREAM_HAS_SLOW_SEEK flag is also set, it means the byte stream must download the entire file sequentially. Otherwise, the byte stream can respond to seek requests by restarting the download from a new point in the stream.

MFBYTESTREAM_SHARE_WRITE
0x00000400

Another thread or process can open this byte stream for writing. If this flag is present, the length of thebyte stream could change while it is being read.

This flag can affect the behavior of byte-stream handlers. For more information, see MF_BYTESTREAMHANDLER_ACCEPTS_SHARE_WRITE.

Note??Requires Windows?7 or later.

?

If this method succeeds, it returns . Otherwise, it returns an error code.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms698962 HRESULT IMFByteStream::GetCapabilities([Out] unsigned int* pdwCapabilities) IMFByteStream::GetCapabilities

Applies to: desktop apps | Metro style apps

Retrieves the length of the stream.

Receives the length of the stream, in bytes. If the length is unknown, this value is -1.

If this method succeeds, it returns . Otherwise, it returns an error code.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms698941 HRESULT IMFByteStream::GetLength([Out] unsigned longlong* pqwLength) IMFByteStream::GetLength

Applies to: desktop apps | Metro style apps

Sets the length of the stream.

Length of the stream in bytes.

If this method succeeds, it returns . Otherwise, it returns an error code.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms697225 HRESULT IMFByteStream::SetLength([In] unsigned longlong qwLength) IMFByteStream::SetLength

Applies to: desktop apps | Metro style apps

Retrieves the current read or write position in the stream.

Receives the current position, in bytes.

If this method succeeds, it returns . Otherwise, it returns an error code.

The methods that update the current position are Read, BeginRead, Write, BeginWrite, SetCurrentPosition, and Seek.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms704059 HRESULT IMFByteStream::GetCurrentPosition([Out] unsigned longlong* pqwPosition) IMFByteStream::GetCurrentPosition

Applies to: desktop apps | Metro style apps

Sets the current read or write position.

New position in the stream, as a byte offset from the start of the stream.

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

E_INVALIDARG

Invalid argument.

?

If the new position is larger than the length of the stream, the method returns E_INVALIDARG.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms695238 HRESULT IMFByteStream::SetCurrentPosition([In] unsigned longlong qwPosition) IMFByteStream::SetCurrentPosition

Applies to: desktop apps | Metro style apps

Queries whether the current position has reached the end of the stream.

Receives the value TRUE if the end of the stream has been reached, or otherwise.

If this method succeeds, it returns . Otherwise, it returns an error code.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms697369 HRESULT IMFByteStream::IsEndOfStream([Out] BOOL* pfEndOfStream) IMFByteStream::IsEndOfStream

Applies to: desktop apps | Metro style apps

Reads data from the stream.

Pointer to a buffer that receives the data. The caller must allocate the buffer.

Size of the buffer in bytes.

Receives the number of bytes that are copied into the buffer. This parameter cannot be null.

If this method succeeds, it returns . Otherwise, it returns an error code.

This method reads at most cb bytes from the current position in the stream and copies them into the buffer provided by the caller. The number of bytes that were read is returned in the pcbRead parameter. The method does not return an error code on reaching the end of the file, so the application should check the value in pcbRead after the method returns.

This method is synchronous. It blocks until the read operation completes.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms698913 HRESULT IMFByteStream::Read([In] void* pb,[In] unsigned int cb,[Out] unsigned int* pcbRead) IMFByteStream::Read

Applies to: desktop apps | Metro style apps

Begins an asynchronous read operation from the stream.

Pointer to a buffer that receives the data. The caller must allocate the buffer.

Size of the buffer in bytes.

Pointer to the interface of a callback object. The caller must implement this interface.

Pointer to the interface of a state object, defined by the caller. This parameter can be null. You can use this object to hold state information. The object is returned to the caller when the callback is invoked.

If this method succeeds, it returns . Otherwise, it returns an error code.

When all of the data has been read into the buffer, the callback object's method is called. At that point, the application should call to complete the asynchronous request.

Do not read from, write to, free, or reallocate the buffer while an asynchronous read is pending.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms704810 HRESULT IMFByteStream::BeginRead([In] void* pb,[In] unsigned int cb,[In] IMFAsyncCallback* pCallback,[In] void* punkState) IMFByteStream::BeginRead

Applies to: desktop apps | Metro style apps

Completes an asynchronous read operation.

Pointer to the interface. Pass in the same reference that your callback object received in the method.

Receives the number of bytes that were read.

If this method succeeds, it returns . Otherwise, it returns an error code.

Call this method after the method completes asynchronously.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms704042 HRESULT IMFByteStream::EndRead([In] IMFAsyncResult* pResult,[Out] unsigned int* pcbRead) IMFByteStream::EndRead

Applies to: desktop apps | Metro style apps

Writes data to the stream.

Pointer to a buffer that contains the data to write.

Size of the buffer in bytes.

Receives the number of bytes that are written.

If this method succeeds, it returns . Otherwise, it returns an error code.

This method writes the contents of the pb buffer to the stream, starting at the current stream position. The number of bytes that were written is returned in the pcbWritten parameter.

This method is synchronous. It blocks until the write operation completes.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms703843 HRESULT IMFByteStream::Write([In] const void* pb,[In] unsigned int cb,[Out] unsigned int* pcbWritten) IMFByteStream::Write

Applies to: desktop apps | Metro style apps

Begins an asynchronous write operation to the stream.

Pointer to a buffer containing the data to write.

Size of the buffer in bytes.

Pointer to the interface of a callback object. The caller must implement this interface.

Pointer to the interface of a state object, defined by the caller. This parameter can be null. You can use this object to hold state information. The object is returned to the caller when the callback is invoked.

If this method succeeds, it returns . Otherwise, it returns an error code.

When all of the data has been written to the stream, the callback object's method is called. At that point, the application should call to complete the asynchronous request.

Do not reallocate, free, or write to the buffer while an asynchronous write is still pending.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms694005 HRESULT IMFByteStream::BeginWrite([In] const void* pb,[In] unsigned int cb,[In] IMFAsyncCallback* pCallback,[In] void* punkState) IMFByteStream::BeginWrite

Applies to: desktop apps | Metro style apps

Completes an asynchronous write operation.

Pointer to the interface. Pass in the same reference that your callback object received in the method.

Receives the number of bytes that were written.

If this method succeeds, it returns . Otherwise, it returns an error code.

Call this method when the method completes asynchronously.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms703863 HRESULT IMFByteStream::EndWrite([In] IMFAsyncResult* pResult,[Out] unsigned int* pcbWritten) IMFByteStream::EndWrite

Applies to: desktop apps | Metro style apps

Moves the current position in the stream by a specified offset.

Specifies the origin of the seek as a member of the enumeration. The offset is calculated relative to this position.

Specifies the new position, as a byte offset from the seek origin.

Specifies zero or more flags. The following flags are defined.

ValueMeaning
MFBYTESTREAM_SEEK_FLAG_CANCEL_PENDING_IO

All pending I/O requests are canceled after the seek request completes successfully.

?

Receives the new position after the seek.

If this method succeeds, it returns . Otherwise, it returns an error code.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms697053 HRESULT IMFByteStream::Seek([In] MFBYTESTREAM_SEEK_ORIGIN SeekOrigin,[In] longlong llSeekOffset,[In] unsigned int dwSeekFlags,[Out] unsigned longlong* pqwCurrentPosition) IMFByteStream::Seek

Applies to: desktop apps | Metro style apps

Clears any internal buffers used by the stream. If you are writing to the stream, the buffered data is written to the underlying file or device.

If this method succeeds, it returns . Otherwise, it returns an error code.

If the byte stream is read-only, this method has no effect.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms694833 HRESULT IMFByteStream::Flush() IMFByteStream::Flush

Applies to: desktop apps | Metro style apps

Closes the stream and releases any resources associated with the stream, such as sockets or file handles. This method also cancels any pending asynchronous I/O requests.

If this method succeeds, it returns . Otherwise, it returns an error code.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms703909 HRESULT IMFByteStream::Close() IMFByteStream::Close

Applies to: desktop apps | Metro style apps

Retrieves the characteristics of the byte stream.

The capabilities of the stream.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms698962 HRESULT IMFByteStream::GetCapabilities([Out] unsigned int* pdwCapabilities) IMFByteStream::GetCapabilities

Applies to: desktop apps | Metro style apps

Retrieves the length of the stream.

The length of the stream, in bytes. If the length is unknown, this value is -1.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms698941 HRESULT IMFByteStream::GetLength([Out] unsigned longlong* pqwLength) IMFByteStream::GetLength

Applies to: desktop apps | Metro style apps

Retrieves the current read or write position in the stream.

The current position, in bytes.

The methods that update the current position are Read, BeginRead, Write, BeginWrite, SetCurrentPosition, and Seek.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms704059 HRESULT IMFByteStream::GetCurrentPosition([Out] unsigned longlong* pqwPosition) IMFByteStream::GetCurrentPosition

Applies to: desktop apps | Metro style apps

Queries whether the current position has reached the end of the stream.

true if the end of the stream has been reached

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms697369 HRESULT IMFByteStream::IsEndOfStream([Out] BOOL* pfEndOfStream) IMFByteStream::IsEndOfStream
The namespace provides a managed MediaFoundation for DirectX integration API. MediaFoundation MediaFoundation

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Gives the caller exclusive access to the Microsoft Direct3D device.

When you are done using the Direct3D device, call to unlock the device.

If the method returns MF_E_DXGI_NEW_VIDEO_DEVICE, call to close the handle and then call OpenDeviceHandle again to get a new handle. The method invalidates all open device handles.

If fBlock is TRUE, this method can potentially deadlock. For example, it will deadlock if a thread calls LockDevice and then waits on another thread that calls LockDevice. It will also deadlock if a thread calls LockDevice twice without calling UnlockDevice in between.

hh447909 IMFDXGIDeviceManager IMFDXGIDeviceManager

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Creates an instance of the Microsoft DirectX Graphics Infrastructure (DXGI) Device Manager.

hh162750 HRESULT MFCreateDXGIDeviceManager([Out] unsigned int* resetToken,[Out] IMFDXGIDeviceManager** ppDeviceManager) MFCreateDXGIDeviceManager

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Sets the Microsoft Direct3D device or notifies the device manager that the Direct3D device was reset.

A reference to the interface of the DXGI device.

When you first create the DXGI Device Manager, call this method with a reference to the Direct3D device. (The device manager does not create the device; the caller must provide the device reference initially.) Also call this method if the Direct3D device becomes lost and you need to reset the device or create a new device.

The resetToken parameter ensures that only the component that originally created the device manager can invalidate the current device.

If this method succeeds, all open device handles become invalid.

hh447911 HRESULT IMFDXGIDeviceManager::ResetDevice([In] IUnknown* pUnkDevice,[In] unsigned int resetToken) IMFDXGIDeviceManager::ResetDevice

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Unlocks the Microsoft Direct3D device.

A handle to the Direct3D device. To get the device handle, call .

Call this method to release the device after calling .

hh447913 HRESULT IMFDXGIDeviceManager::UnlockDevice([In] void* hDevice,[In] BOOL fSaveState) IMFDXGIDeviceManager::UnlockDevice
Initializes a new instance of the class. The native pointer. Performs an explicit conversion from to . (This method is a shortcut to ) The native pointer. The result of the conversion.

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Closes a Microsoft Direct3D device handle.

A handle to the Direct3D device.

This method can return one of these values.

Return codeDescription

Success.

E_HANDLE

The specified handle is not a Direct3D device handle.

?

Call this method to release a device handle that was retrieved by the method.

hh447907 HRESULT IMFDXGIDeviceManager::CloseDeviceHandle([In] void* hDevice) IMFDXGIDeviceManager::CloseDeviceHandle

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Queries the Microsoft Direct3D device for an interface.

A handle to the Direct3D device. To get the device handle, call .

The interface identifier (IID) of the requested interface. The Direct3D device supports the following interfaces:

Receives a reference to the requested interface. The caller must release the interface.

If the method returns MF_E_DXGI_NEW_VIDEO_DEVICE, call to close the handle and then call OpenDeviceHandle again to get a new handle. The method invalidates all open device handles.

hh447908 HRESULT IMFDXGIDeviceManager::GetVideoService([In] void* hDevice,[In] const GUID& riid,[Out] void** ppService) IMFDXGIDeviceManager::GetVideoService

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Gives the caller exclusive access to the Microsoft Direct3D device.

A handle to the Direct3D device. To get the device handle, call .

The interface identifier (IID) of the requested interface. The Direct3D device will support the following interfaces:

Specifies whether to wait for the device lock. If the device is already locked and this parameter is TRUE, the method blocks until the device is unlocked. Otherwise, if the device is locked and this parameter is , the method returns immediately with the error code DXVA2_E_VIDEO_DEVICE_LOCKED.

Receives a reference to the requested interface. The caller must release the interface.

When you are done using the Direct3D device, call to unlock the device.

If the method returns MF_E_DXGI_NEW_VIDEO_DEVICE, call to close the handle and then call OpenDeviceHandle again to get a new handle. The method invalidates all open device handles.

If fBlock is TRUE, this method can potentially deadlock. For example, it will deadlock if a thread calls LockDevice and then waits on another thread that calls LockDevice. It will also deadlock if a thread calls LockDevice twice without calling UnlockDevice in between.

hh447909 HRESULT IMFDXGIDeviceManager::LockDevice([In] void* hDevice,[In] const GUID& riid,[Out] void** ppUnkDevice,[In] BOOL fBlock) IMFDXGIDeviceManager::LockDevice

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Gets a handle to the Microsoft Direct3D device.

Receives the device handle.

hh447910 HRESULT IMFDXGIDeviceManager::OpenDeviceHandle([Out] void** phDevice) IMFDXGIDeviceManager::OpenDeviceHandle

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Sets the Microsoft Direct3D device or notifies the device manager that the Direct3D device was reset.

A reference to the interface of the DXGI device.

The token that was received in the pResetToken parameter of the function.

If this method succeeds, it returns . Otherwise, it returns an error code.

When you first create the DXGI Device Manager, call this method with a reference to the Direct3D device. (The device manager does not create the device; the caller must provide the device reference initially.) Also call this method if the Direct3D device becomes lost and you need to reset the device or create a new device.

The resetToken parameter ensures that only the component that originally created the device manager can invalidate the current device.

If this method succeeds, all open device handles become invalid.

hh447911 HRESULT IMFDXGIDeviceManager::ResetDevice([In] IUnknown* pUnkDevice,[In] unsigned int resetToken) IMFDXGIDeviceManager::ResetDevice

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Tests whether a Microsoft Direct3D device handle is valid.

A handle to the Direct3D device. To get the device handle, call .

This method can return one of these values.

Return codeDescription

Success.

E_HANDLE

The specified handle is not a Direct3D device handle.

MF_E_DXGI_NEW_VIDEO_DEVICE

The device handle is invalid.

?

If the method returns MF_E_DXGI_NEW_VIDEO_DEVICE, call to close the handle and then call OpenDeviceHandle again to get a new handle. The method invalidates all open device handles.

hh447912 HRESULT IMFDXGIDeviceManager::TestDevice([In] void* hDevice) IMFDXGIDeviceManager::TestDevice

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Unlocks the Microsoft Direct3D device.

A handle to the Direct3D device. To get the device handle, call .

Reserved.

If this method succeeds, it returns . Otherwise, it returns an error code.

Call this method to release the device after calling .

hh447913 HRESULT IMFDXGIDeviceManager::UnlockDevice([In] void* hDevice,[In] BOOL fSaveState) IMFDXGIDeviceManager::UnlockDevice

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Creates an instance of the Media Engine.

Before using this interface, call CoInitializeEx and .

To get a reference to this interface, call CoCreateInstance. The class identifier is .

hh447919 IMFMediaEngineClassFactory IMFMediaEngineClassFactory
Initializes a new instance of the class. The native pointer. Performs an explicit conversion from to . (This method is a shortcut to ) The native pointer. The result of the conversion. Constant ClsidMFMediaEngineClassFactory. CLSID_MFMediaEngineClassFactory

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Creates a new instance of the Media Engine.

A bitwise OR of zero or more flags from the enumeration.

A reference to the interface of an attribute store.

This parameter specifies configuration attributes for the Media Engine. Call to create the attribute store. Then, set one or more attributes from the list of Media Engine Attributes. For details, see Remarks.

Receives a reference to the interface. The caller must release the interface.

This method can return one of these values.

Return codeDescription

Success.

MF_E_ATTRIBUTENOTFOUND

A required attribute was missing from pAttr, or an invalid combination of attributes was used.

?

Before calling this method, call .

The Media Engine supports three distinct modes:

ModeDescription
Frame-server mode

In this mode, the Media Engine delivers uncompressed video frames to the application. The application is responsible for displaying each frame, using Microsoft Direct3D or any other rendering technique.

The Media Engine renders the audio; the application is not responsible for audio rendering.

Frame-server mode is the default mode.

Rendering mode

In this mode, the Media Engine renders both audio and video. The video is rendered to a window or Microsoft DirectComposition visual provided by the application.

To enable rendering mode, set either the MF_MEDIA_ENGINE_PLAYBACK_HWND attribute or the MF_MEDIA_ENGINE_PLAYBACK_VISUAL attribute.

Audio mode

In this mode, the Media Engine renders audio only, with no video.

To enable audio mode, set the flag in the dwFlags parameter.

?

Intialization Attributes

The following attributes are defined for the pAttr parameter. Some are required, and some are optional, depending on the mode you want.

FeatureAttributesFrame Server ModeRendering ModeAudio Mode
Event callback Required.Required.Required.
Render target

One of the following:

MF_MEDIA_ENGINE_PLAYBACK_HWND
MF_MEDIA_ENGINE_PLAYBACK_VISUAL

These attributes are mutually exclusive. Setting either of these attributes puts the Media Engine into rendering mode.

Do not set.Required. Do not set.
Direct3D format Required.Optional.Do not set.
Microsoft DirectX Graphics Infrastructure (DXGI) device manager Optional.Optional.Do not set.
Media Engine extensions Optional.Optional.Optional.
Content protection

Any of the following:

MF_MEDIA_ENGINE_OPM_HWND
Optional.Optional.Optional.
Audio playback

Any of the following:

Optional.Optional.Optional.

?

hh447921 HRESULT IMFMediaEngineClassFactory::CreateInstance([In] MF_MEDIA_ENGINE_CREATEFLAGS dwFlags,[In] IMFAttributes* pAttr,[Out, Fast] IMFMediaEngine** ppPlayer) IMFMediaEngineClassFactory::CreateInstance

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Creates a time range object.

Receives a reference to the interface. The caller must release the interface.

If this method succeeds, it returns . Otherwise, it returns an error code.

hh447922 HRESULT IMFMediaEngineClassFactory::CreateTimeRange([Out, Fast] IMFMediaTimeRange** ppTimeRange) IMFMediaEngineClassFactory::CreateTimeRange

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Creates a media error object.

Receives a reference to the interface. The caller must release the interface.

If this method succeeds, it returns . Otherwise, it returns an error code.

hh447920 HRESULT IMFMediaEngineClassFactory::CreateError([Out, Fast] IMFMediaError** ppError) IMFMediaEngineClassFactory::CreateError

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Extends the interface.

The interface contains methods that map to the HTML5 media elements. The provides additional functionality that does not correspond directly to HTML5.

hh447923 IMFMediaEngineEx IMFMediaEngineEx

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Copies the current video frame to a DXGI surface or WIC bitmap.

In frame-server mode, call this method to blit the video frame to a DXGI or WIC surface. The application can call this method at any time after the Media Engine loads a video resource. Typically, however, the application calls first, to determine whether a new frame is available. If OnVideoStreamTick returns , the application then calls TransferVideoFrame.

The Media Engine scales and letterboxes the video to fit the destination rectangle. It fills the letterbox area with the border color.

For protected content, call the IMFMediaEngineProtectedContent::TransferVideoFrame method instead of this method.

hh448021 IMFMediaEngine IMFMediaEngine
Initializes a new instance of the class. The native pointer. Performs an explicit conversion from to . (This method is a shortcut to ) The native pointer. The result of the conversion.

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Gets the most recent error status.

Receives either a reference to the interface, or the value null. If the value is non-null, the caller must release the interface.

If this method succeeds, it returns . Otherwise, it returns an error code.

This method returns the last error status, if any, that resulted from loading the media source. If there has not been an error, ppError receives the value null.

This method corresponds to the error attribute of the HTMLMediaElement interface in HTML5.

hh447985 HRESULT IMFMediaEngine::GetError([Out] IMFMediaError** ppError) IMFMediaEngine::GetError

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Sets the current error code.

The error code, as an value.

If this method succeeds, it returns . Otherwise, it returns an error code.

hh448012 HRESULT IMFMediaEngine::SetErrorCode([In] MF_MEDIA_ENGINE_ERR error) IMFMediaEngine::SetErrorCode

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Sets a list of media sources.

A reference to the interface. The caller must implement this interface.

If this method succeeds, it returns . Otherwise, it returns an error code.

This method corresponds to adding a list of source elements to a media element in HTML5.

The Media Engine tries to load each item in the pSrcElements list, until it finds one that loads successfully. After this method is called, the application can use the interface to update the list at any time. To reload the list, call .

This method completes asynchronously. When the operation starts, the Media Engine sends an event. If no errors occur during the Load operation, several other events are generated, including the following.

If the Media Engine is unable to load a URL, it sends an event.

For more information about event handling in the Media Engine, see .

If the application also calls , the URL passed to SetSource takes precedence over the list given to SetSourceElements.

hh448018 HRESULT IMFMediaEngine::SetSourceElements([In] IMFMediaEngineSrcElements* pSrcElements) IMFMediaEngine::SetSourceElements

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Sets the URL of a media resource.

The URL of the media resource.

If this method succeeds, it returns . Otherwise, it returns an error code.

This method corresponds to setting the src attribute of the HTMLMediaElement interface in HTML5.

The URL specified by this method takes precedence over media resources specified in the method. To load the URL, call .

This method asynchronously loads the URL. When the operation starts, the Media Engine sends an event. If no errors occur during the Load operation, several other events are generated, including the following.

If the Media Engine is unable to load the URL, the Media Engine sends an event.

For more information about event handling in the Media Engine, see .

hh448017 HRESULT IMFMediaEngine::SetSource([In] wchar_t* pUrl) IMFMediaEngine::SetSource

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Gets the URL of the current media resource, or an empty string if no media resource is present.

Receives a BSTR that contains the URL of the current media resource. If there is no media resource, ppUrl receives an empty string. The caller must free the BSTR by calling SysFreeString.

If this method succeeds, it returns . Otherwise, it returns an error code.

This method corresponds to the currentSrc attribute of the HTMLMediaElement interface in HTML5.

Initially, the current media resource is empty. It is updated when the Media Engine performs the resource selection algorithm.

hh447981 HRESULT IMFMediaEngine::GetCurrentSource([Out] wchar_t** ppUrl) IMFMediaEngine::GetCurrentSource

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Gets the current network state of the media engine.

Returns an enumeration value.

This method corresponds to the networkState attribute of the HTMLMediaElement interface in HTML5.

hh447989 unsigned short IMFMediaEngine::GetNetworkState() IMFMediaEngine::GetNetworkState

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Gets the preload flag.

Returns an enumeration value.

This method corresponds to the preload attribute of the HTMLMediaElement interface in HTML5. The value is a hint to the user-agent whether to preload the media resource.

hh447992 MF_MEDIA_ENGINE_PRELOAD IMFMediaEngine::GetPreload() IMFMediaEngine::GetPreload

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Sets the preload flag.

An value equal to the preload flag.

If this method succeeds, it returns . Otherwise, it returns an error code.

This method corresponds to setting the preload attribute of the HTMLMediaElement interface in HTML5. The value is a hint to the user-agent whether to preload the media resource.

hh448016 HRESULT IMFMediaEngine::SetPreload([In] MF_MEDIA_ENGINE_PRELOAD Preload) IMFMediaEngine::SetPreload

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Queries how much resource data the media engine has buffered.

Receives a reference to the interface. The caller must release the interface.

If this method succeeds, it returns . Otherwise, it returns an error code.

This method corresponds to the buffered attribute of the HTMLMediaElement interface in HTML5.

The returned interface represents a list of time ranges. The time ranges indicate which portions of the media resource have been downloaded. The time range list can be empty.

hh447980 HRESULT IMFMediaEngine::GetBuffered([Out] IMFMediaTimeRange** ppBuffered) IMFMediaEngine::GetBuffered

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Loads the current media source.

If this method succeeds, it returns . Otherwise, it returns an error code.

The main purpose of this method is to reload a list of source elements after updating the list. For more information, see SetSourceElements. Otherwise, calling this method is generally not required. To load a new media source, call or .

The Load method explictly invokes the Media Engine's media resource loading algorithm. Before calling this method, you must set the media resource by calling or .

This method completes asynchronously. When the Load operation starts, the Media Engine sends an event. If no errors occur during the Load operation, several other events are generated, including the following.

If the Media Engine is unable to load the file, the Media Engine sends an event.

For more information about event handling in the Media Engine, see .

This method corresponds to the load method of the HTMLMediaElement interface in HTML5.

hh448005 HRESULT IMFMediaEngine::Load() IMFMediaEngine::Load

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Queries how likely it is that the Media Engine can play a specified type of media resource.

A string that contains a MIME type with an optional codecs parameter, as defined in RFC 4281.

Receives an enumeration value.

If this method succeeds, it returns . Otherwise, it returns an error code.

This method corresponds to the canPlayType attribute of the HTMLMediaElement interface in HTML5.

The canPlayType attribute defines the following values.

ValueDescription
"" (empty string)The user-agent cannot play the resource, or the resource type is "application/octet-stream".
"probably"The user-agent probably can play the resource.
"maybe"Neither of the previous values applies.

?

The value "probably" is used because a MIME type for a media resource is generally not a complete description of the resource. For example, "video/mp4" specifies an MP4 file with video, but does not describe the codec. Even with the optional codecs parameter, the MIME type omits some information, such as the actual coded bit rate. Therefore, it is usually impossible to be certain that playback is possible until the actual media resource is opened.

hh447978 HRESULT IMFMediaEngine::CanPlayType([In] wchar_t* type,[Out] MF_MEDIA_ENGINE_CANPLAY* pAnswer) IMFMediaEngine::CanPlayType

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Gets the ready state, which indicates whether the current media resource can be rendered.

Returns an enumeration value.

This method corresponds to the readyState attribute of the HTMLMediaElement interface in HTML5.

hh447993 unsigned short IMFMediaEngine::GetReadyState() IMFMediaEngine::GetReadyState

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Queries whether the Media Engine is currently seeking to a new playback position.

Returns TRUE if the Media Engine is seeking, or otherwise.

This method corresponds to the seeking attribute of the HTMLMediaElement interface in HTML5.

hh448004 BOOL IMFMediaEngine::IsSeeking() IMFMediaEngine::IsSeeking

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Gets the current playback position.

Returns the playback position, in seconds.

This method corresponds to the currentTime attribute of the HTMLMediaElement interface in HTML5.

hh447982 double IMFMediaEngine::GetCurrentTime() IMFMediaEngine::GetCurrentTime

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Seeks to a new playback position.

The new playback position, in seconds.

If this method succeeds, it returns . Otherwise, it returns an error code.

This method corresponds to setting the currentTime attribute of the HTMLMediaElement interface in HTML5.

The method completes asynchronously. When the seek operation starts, the Media Engine sends an event. When the seek operation completes, the Media Engine sends an event. See IMFMediaEventNotify::EventNotify.

hh448010 HRESULT IMFMediaEngine::SetCurrentTime([In] double seekTime) IMFMediaEngine::SetCurrentTime

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Gets the initial playback position.

Returns the initial playback position, in seconds.

This method corresponds to the initialTime attribute of the HTMLMediaElement interface in HTML5.

hh447995 double IMFMediaEngine::GetStartTime() IMFMediaEngine::GetStartTime

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Gets the duration of the media resource.

Returns the duration, in seconds. If no media data is available, the method returns not-a-number (NaN). If the duration is unbounded, the method returns an infinite value.

This method corresponds to the duration attribute of the HTMLMediaElement interface in HTML5.

If the duration changes, the Media Engine sends an event. See .

hh447984 double IMFMediaEngine::GetDuration() IMFMediaEngine::GetDuration

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Queries whether playback is currently paused.

Returns TRUE if playback is paused, or otherwise.

This method corresponds to the paused attribute of the HTMLMediaElement interface in HTML5.

hh448003 BOOL IMFMediaEngine::IsPaused() IMFMediaEngine::IsPaused

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Gets the default playback rate.

Returns the default playback rate, as a multiple of normal (1?) playback. A negative value indicates reverse playback.

This method corresponds to getting the defaultPlaybackRate attribute of the HTMLMediaElement interface in HTML5.

The default playback rate is used for the next call to the method. To change the current playback rate, call .

hh447983 double IMFMediaEngine::GetDefaultPlaybackRate() IMFMediaEngine::GetDefaultPlaybackRate

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Sets the default playback rate.

The default playback rate, as a multiple of normal (1?) playback. A negative value indicates reverse playback.

If this method succeeds, it returns . Otherwise, it returns an error code.

This method corresponds to setting the defaultPlaybackRate attribute of the HTMLMediaElement interface in HTML5.

hh448011 HRESULT IMFMediaEngine::SetDefaultPlaybackRate([In] double Rate) IMFMediaEngine::SetDefaultPlaybackRate

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Gets the current playback rate.

Returns the playback rate, as a multiple of normal (1?) playback. A negative value indicates reverse playback.

This method corresponds to getting the playbackRate attribute of the HTMLMediaElement interface in HTML5.

hh447990 double IMFMediaEngine::GetPlaybackRate() IMFMediaEngine::GetPlaybackRate

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Sets the current playback rate.

The playback rate, as a multiple of normal (1?) playback. A negative value indicates reverse playback.

If this method succeeds, it returns . Otherwise, it returns an error code.

This method corresponds to setting the playbackRate attribute of the HTMLMediaElement interface in HTML5.

hh448015 HRESULT IMFMediaEngine::SetPlaybackRate([In] double Rate) IMFMediaEngine::SetPlaybackRate

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Gets the time ranges that have been rendered.

Receives a reference to the interface. The caller must release the interface.

If this method succeeds, it returns . Otherwise, it returns an error code.

This method corresponds to the played attribute of the HTMLMediaElement interface in HTML5.

hh447991 HRESULT IMFMediaEngine::GetPlayed([Out] IMFMediaTimeRange** ppPlayed) IMFMediaEngine::GetPlayed

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Gets the time ranges to which the Media Engine can currently seek.

Receives a reference to the interface. The caller must release the interface.

If this method succeeds, it returns . Otherwise, it returns an error code.

This method corresponds to the seekable attribute of the HTMLMediaElement interface in HTML5.

To find out whether the media source supports seeking, call .

hh447994 HRESULT IMFMediaEngine::GetSeekable([Out] IMFMediaTimeRange** ppSeekable) IMFMediaEngine::GetSeekable

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Queries whether playback has ended.

Returns TRUE if the direction of playback is forward and playback has reached the end of the media resource. Returns otherwise.

This method corresponds to the ended attribute of the HTMLMediaElement interface in HTML5.

hh448002 BOOL IMFMediaEngine::IsEnded() IMFMediaEngine::IsEnded

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Queries whether the Media Engine automatically begins playback.

Returns TRUE if the Media Engine automatically begins playback, or otherwise.

This method corresponds to the autoplay attribute of the HTMLMediaElement interface in HTML5.

If this method returns TRUE, playback begins automatically after the method completes. Otherwise, playback begins when the application calls .

hh447979 BOOL IMFMediaEngine::GetAutoPlay() IMFMediaEngine::GetAutoPlay

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Specifies whether the Media Engine automatically begins playback.

If TRUE, the Media Engine automatically begins playback after it loads a media source. Otherwise, playback does not begin until the application calls .

If this method succeeds, it returns . Otherwise, it returns an error code.

This method corresponds to setting the autoplay attribute of the HTMLMediaElement interface in HTML5.

hh448009 HRESULT IMFMediaEngine::SetAutoPlay([In] BOOL AutoPlay) IMFMediaEngine::SetAutoPlay

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Queries whether the Media Engine will loop playback.

Returns TRUE if looping is enabled, or otherwise.

This method corresponds to getting the loop attribute of the HTMLMediaElement interface in HTML5.

If looping is enabled, the Media Engine seeks to the start of the content when playback reaches the end.

hh447986 BOOL IMFMediaEngine::GetLoop() IMFMediaEngine::GetLoop

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Specifies whether the Media Engine loops playback.

Specify TRUE to enable looping, or to disable looping.

If this method succeeds, it returns . Otherwise, it returns an error code.

If Loop is TRUE, playback loops back to the beginning when it reaches the end of the source.

This method corresponds to setting the loop attribute of the HTMLMediaElement interface in HTML5.

hh448013 HRESULT IMFMediaEngine::SetLoop([In] BOOL Loop) IMFMediaEngine::SetLoop

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Starts playback.

If this method succeeds, it returns . Otherwise, it returns an error code.

This method corresponds to the play method of the HTMLMediaElement interface in HTML5.

The method completes asynchronously. When the operation starts, the Media Engine sends an event. When playback is under way, the Media Engine sends an event. See IMFMediaEventNotify::EventNotify.

hh448008 HRESULT IMFMediaEngine::Play() IMFMediaEngine::Play

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Pauses playback.

If this method succeeds, it returns . Otherwise, it returns an error code.

This method corresponds to the pause method of the HTMLMediaElement interface in HTML5.

The method completes asynchronously. When the transition to paused is complete, the Media Engine sends an event. See IMFMediaEventNotify::EventNotify.

hh448007 HRESULT IMFMediaEngine::Pause() IMFMediaEngine::Pause

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Queries whether the audio is muted.

Returns TRUE if the audio is muted, or otherwise.

hh447987 BOOL IMFMediaEngine::GetMuted() IMFMediaEngine::GetMuted

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Mutes or unmutes the audio.

Specify TRUE to mute the audio, or to unmute the audio.

If this method succeeds, it returns . Otherwise, it returns an error code.

hh448014 HRESULT IMFMediaEngine::SetMuted([In] BOOL Muted) IMFMediaEngine::SetMuted

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Gets the audio volume level.

Returns the volume level. Volume is expressed as an attenuation level, where 0.0 indicates silence and 1.0 indicates full volume (no attenuation).

hh447997 double IMFMediaEngine::GetVolume() IMFMediaEngine::GetVolume

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Sets the audio volume level.

The volume level. Volume is expressed as an attenuation level, where 0.0 indicates silence and 1.0 indicates full volume (no attenuation).

If this method succeeds, it returns . Otherwise, it returns an error code.

When the audio balance changes, the Media Engine sends an event. See IMFMediaEventNotify::EventNotify.

hh448019 HRESULT IMFMediaEngine::SetVolume([In] double Volume) IMFMediaEngine::SetVolume

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Queries whether the current media resource contains a video stream.

Returns TRUE if the current media resource contains a video stream. Returns if there is no media resource or the media resource does not contain a video stream.

hh448001 BOOL IMFMediaEngine::HasVideo() IMFMediaEngine::HasVideo

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Queries whether the current media resource contains an audio stream.

Returns TRUE if the current media resource contains an audio stream. Returns if there is no media resource or the media resource does not contain an audio stream.

hh447998 BOOL IMFMediaEngine::HasAudio() IMFMediaEngine::HasAudio

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Gets the size of the video frame, adjusted for aspect ratio.

Receives the width in pixels.

Receives the height in pixels.

If this method succeeds, it returns . Otherwise, it returns an error code.

This method adjusts for the correct picture aspect ratio. For example, if the encoded frame is 720 ? 420 and the picture aspect ratio is 4:3, the method will return a size equal to 640 ? 480 pixels.

hh447988 HRESULT IMFMediaEngine::GetNativeVideoSize([Out, Optional] unsigned int* cx,[Out, Optional] unsigned int* cy) IMFMediaEngine::GetNativeVideoSize

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Gets the picture aspect ratio of the video stream.

Receives the x component of the aspect ratio.

Receives the y component of the aspect ratio.

If this method succeeds, it returns . Otherwise, it returns an error code.

The Media Engine automatically converts the pixel aspect ratio to 1:1 (square pixels).

hh447996 HRESULT IMFMediaEngine::GetVideoAspectRatio([Out, Optional] unsigned int* cx,[Out, Optional] unsigned int* cy) IMFMediaEngine::GetVideoAspectRatio

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Shuts down the Media Engine and releases the resources it is using.

If this method succeeds, it returns . Otherwise, it returns an error code.

hh448020 HRESULT IMFMediaEngine::Shutdown() IMFMediaEngine::Shutdown

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Copies the current video frame to a DXGI surface or WIC bitmap.

A reference to the interface of the destination surface.

A reference to an structure that specifies the source rectangle.

A reference to a structure that specifies the destination rectangle.

A reference to an structure that specifies the border color.

If this method succeeds, it returns . Otherwise, it returns an error code.

In frame-server mode, call this method to blit the video frame to a DXGI or WIC surface. The application can call this method at any time after the Media Engine loads a video resource. Typically, however, the application calls first, to determine whether a new frame is available. If OnVideoStreamTick returns , the application then calls TransferVideoFrame.

The Media Engine scales and letterboxes the video to fit the destination rectangle. It fills the letterbox area with the border color.

For protected content, call the IMFMediaEngineProtectedContent::TransferVideoFrame method instead of this method.

hh448021 HRESULT IMFMediaEngine::TransferVideoFrame([In] IUnknown* pDstSurf,[In, Optional] const MFVideoNormalizedRect* pSrc,[In] const RECT* pDst,[In, Optional] const MFARGB* pBorderClr) IMFMediaEngine::TransferVideoFrame

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Queries the Media Engine to find out whether a new video frame is ready.

If a new frame is ready, receives the presentation time of the frame.

This method can return one of these values.

Return codeDescription
S_FALSE

The method succeeded, but the Media Engine does not have a new frame.

A new video frame is ready for display.

?

In frame-server mode, the application should call this method whenever a vertical blank occurs in the display device. If the method returns , call to blit the frame to the render target. If the method returns S_FALSE, wait for the next vertical blank and call the method again.

Do not call this method in rendering mode or audio-only mode.

hh448006 HRESULT IMFMediaEngine::OnVideoStreamTick([Out] longlong* pPts) IMFMediaEngine::OnVideoStreamTick
Initializes an instance of the class.

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Queries the Media Engine to find out whether a new video frame is ready.

If a new frame is ready, receives the presentation time of the frame.

true if new video frame is ready for display.

In frame-server mode, the application should call this method whenever a vertical blank occurs in the display device. If the method returns , call to blit the frame to the render target. If the method returns S_FALSE, wait for the next vertical blank and call the method again.

Do not call this method in rendering mode or audio-only mode.

hh448006 HRESULT IMFMediaEngine::OnVideoStreamTick([Out] longlong* pPts) IMFMediaEngine::OnVideoStreamTick

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Gets the most recent error status.

This method returns the last error status, if any, that resulted from loading the media source. If there has not been an error, ppError receives the value null.

This method corresponds to the error attribute of the HTMLMediaElement interface in HTML5.

hh447985 GetError GetError HRESULT IMFMediaEngine::GetError([Out] IMFMediaError** ppError)

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Sets the current error code.

hh448012 SetErrorCode SetErrorCode HRESULT IMFMediaEngine::SetErrorCode([In] MF_MEDIA_ENGINE_ERR error)

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Sets a list of media sources.

This method corresponds to adding a list of source elements to a media element in HTML5.

The Media Engine tries to load each item in the pSrcElements list, until it finds one that loads successfully. After this method is called, the application can use the interface to update the list at any time. To reload the list, call .

This method completes asynchronously. When the operation starts, the Media Engine sends an event. If no errors occur during the Load operation, several other events are generated, including the following.

If the Media Engine is unable to load a URL, it sends an event.

For more information about event handling in the Media Engine, see .

If the application also calls , the URL passed to SetSource takes precedence over the list given to SetSourceElements.

hh448018 SetSourceElements SetSourceElements HRESULT IMFMediaEngine::SetSourceElements([In] IMFMediaEngineSrcElements* pSrcElements)

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Sets the URL of a media resource.

This method corresponds to setting the src attribute of the HTMLMediaElement interface in HTML5.

The URL specified by this method takes precedence over media resources specified in the method. To load the URL, call .

This method asynchronously loads the URL. When the operation starts, the Media Engine sends an event. If no errors occur during the Load operation, several other events are generated, including the following.

If the Media Engine is unable to load the URL, the Media Engine sends an event.

For more information about event handling in the Media Engine, see .

hh448017 SetSource SetSource HRESULT IMFMediaEngine::SetSource([In] wchar_t* pUrl)

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Gets the current network state of the media engine.

This method corresponds to the networkState attribute of the HTMLMediaElement interface in HTML5.

hh447989 GetNetworkState GetNetworkState unsigned short IMFMediaEngine::GetNetworkState()

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Gets the preload flag.

This method corresponds to the preload attribute of the HTMLMediaElement interface in HTML5. The value is a hint to the user-agent whether to preload the media resource.

hh447992 GetPreload / SetPreload GetPreload MF_MEDIA_ENGINE_PRELOAD IMFMediaEngine::GetPreload()

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Queries how much resource data the media engine has buffered.

This method corresponds to the buffered attribute of the HTMLMediaElement interface in HTML5.

The returned interface represents a list of time ranges. The time ranges indicate which portions of the media resource have been downloaded. The time range list can be empty.

hh447980 GetBuffered GetBuffered HRESULT IMFMediaEngine::GetBuffered([Out] IMFMediaTimeRange** ppBuffered)

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Gets the ready state, which indicates whether the current media resource can be rendered.

This method corresponds to the readyState attribute of the HTMLMediaElement interface in HTML5.

hh447993 GetReadyState GetReadyState unsigned short IMFMediaEngine::GetReadyState()

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Queries whether the Media Engine is currently seeking to a new playback position.

This method corresponds to the seeking attribute of the HTMLMediaElement interface in HTML5.

hh448004 IsSeeking IsSeeking BOOL IMFMediaEngine::IsSeeking()

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Gets the current playback position.

This method corresponds to the currentTime attribute of the HTMLMediaElement interface in HTML5.

hh447982 GetCurrentTime / SetCurrentTime GetCurrentTime double IMFMediaEngine::GetCurrentTime()

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Gets the initial playback position.

This method corresponds to the initialTime attribute of the HTMLMediaElement interface in HTML5.

hh447995 GetStartTime GetStartTime double IMFMediaEngine::GetStartTime()

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Gets the duration of the media resource.

This method corresponds to the duration attribute of the HTMLMediaElement interface in HTML5.

If the duration changes, the Media Engine sends an event. See .

hh447984 GetDuration GetDuration double IMFMediaEngine::GetDuration()

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Queries whether playback is currently paused.

This method corresponds to the paused attribute of the HTMLMediaElement interface in HTML5.

hh448003 IsPaused IsPaused BOOL IMFMediaEngine::IsPaused()

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Gets the default playback rate.

This method corresponds to getting the defaultPlaybackRate attribute of the HTMLMediaElement interface in HTML5.

The default playback rate is used for the next call to the method. To change the current playback rate, call .

hh447983 GetDefaultPlaybackRate / SetDefaultPlaybackRate GetDefaultPlaybackRate double IMFMediaEngine::GetDefaultPlaybackRate()

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Gets the current playback rate.

This method corresponds to getting the playbackRate attribute of the HTMLMediaElement interface in HTML5.

hh447990 GetPlaybackRate / SetPlaybackRate GetPlaybackRate double IMFMediaEngine::GetPlaybackRate()

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Gets the time ranges that have been rendered.

This method corresponds to the played attribute of the HTMLMediaElement interface in HTML5.

hh447991 GetPlayed GetPlayed HRESULT IMFMediaEngine::GetPlayed([Out] IMFMediaTimeRange** ppPlayed)

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Gets the time ranges to which the Media Engine can currently seek.

This method corresponds to the seekable attribute of the HTMLMediaElement interface in HTML5.

To find out whether the media source supports seeking, call .

hh447994 GetSeekable GetSeekable HRESULT IMFMediaEngine::GetSeekable([Out] IMFMediaTimeRange** ppSeekable)

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Queries whether playback has ended.

This method corresponds to the ended attribute of the HTMLMediaElement interface in HTML5.

hh448002 IsEnded IsEnded BOOL IMFMediaEngine::IsEnded()

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Queries whether the Media Engine automatically begins playback.

This method corresponds to the autoplay attribute of the HTMLMediaElement interface in HTML5.

If this method returns TRUE, playback begins automatically after the method completes. Otherwise, playback begins when the application calls .

hh447979 GetAutoPlay / SetAutoPlay GetAutoPlay BOOL IMFMediaEngine::GetAutoPlay()

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Queries whether the Media Engine will loop playback.

This method corresponds to getting the loop attribute of the HTMLMediaElement interface in HTML5.

If looping is enabled, the Media Engine seeks to the start of the content when playback reaches the end.

hh447986 GetLoop / SetLoop GetLoop BOOL IMFMediaEngine::GetLoop()

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Queries whether the audio is muted.

hh447987 GetMuted / SetMuted GetMuted BOOL IMFMediaEngine::GetMuted()

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Gets the audio volume level.

hh447997 GetVolume / SetVolume GetVolume double IMFMediaEngine::GetVolume()
Media engine playback event.

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Notifies the application when a playback event occurs.

hh447963 IMFMediaEngineNotify IMFMediaEngineNotify

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Notifies the application when a playback event occurs.

A member of the enumeration that specifies the event.

The first event parameter. The meaning of this parameter depends on the event code.

The second event parameter. The meaning of this parameter depends on the event code.

If this method succeeds, it returns . Otherwise, it returns an error code.

hh447963 HRESULT IMFMediaEngineNotify::EventNotify([In] unsigned int event,[In] ULONG_PTR param1,[In] unsigned int param2) IMFMediaEngineNotify::EventNotify

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Opens a media resource from a byte stream.

A reference to the interface of the byte stream.

The URL of the byte stream.

If this method succeeds, it returns . Otherwise, it returns an error code.

hh447956 HRESULT IMFMediaEngineEx::SetSourceFromByteStream([In] IMFByteStream* pByteStream,[In] wchar_t* pURL) IMFMediaEngineEx::SetSourceFromByteStream
Initializes a new instance of the class. The native pointer. Performs an explicit conversion from to . (This method is a shortcut to ) The native pointer. The result of the conversion.

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Opens a media resource from a byte stream.

A reference to the interface of the byte stream.

The URL of the byte stream.

If this method succeeds, it returns . Otherwise, it returns an error code.

hh447956 HRESULT IMFMediaEngineEx::SetSourceFromByteStream([In] IMFByteStream* pByteStream,[In] void* pURL) IMFMediaEngineEx::SetSourceFromByteStream

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Gets a playback statistic from the Media Engine.

A member of the enumeration that identifies the statistic to get.

A reference to a that receives the statistic. The data type and meaning of this value depends on the value of StatisticID. The caller must free the by calling PropVariantClear.

If this method succeeds, it returns . Otherwise, it returns an error code.

hh447940 HRESULT IMFMediaEngineEx::GetStatistics([In] MF_MEDIA_ENGINE_STATISTIC StatisticID,[Out] PROPVARIANT* pStatistic) IMFMediaEngineEx::GetStatistics

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Updates the source rectangle, destination rectangle, and border color for the video.

A reference to an structure that specifies the source rectangle. The source rectangle defines the area of the video frame that is displayed. If this parameter is null, the entire video frame is displayed.

A reference to a structure that specifies the destination rectangle. The destination rectangle defines the area of the window or DirectComposition visual where the video is drawn.

A reference to an structure that specifies the border color.

If this method succeeds, it returns . Otherwise, it returns an error code.

In rendering mode, call this method to reposition the video, update the border color, or repaint the video frame. If all of the parameters are null, the method repaints the most recent video frame.

In frame-server mode, this method has no effect.

hh447961 HRESULT IMFMediaEngineEx::UpdateVideoStream([In, Optional] const MFVideoNormalizedRect* pSrc,[In, Optional] const RECT* pDst,[In, Optional] const MFARGB* pBorderClr) IMFMediaEngineEx::UpdateVideoStream

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Gets the audio balance.

Returns the balance. The value can be any number in the following range (inclusive).

Return valueDescription
-1

The left channel is at full volume; the right channel is silent.

1

The right channel is at full volume; the left channel is silent.

?

If the value is zero, the left and right channels are at equal volumes. The default value is zero.

hh447934 double IMFMediaEngineEx::GetBalance() IMFMediaEngineEx::GetBalance

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Sets the audio balance.

The audio balance. The value can be any number in the following range (inclusive).

ValueMeaning
-1

The left channel is at full volume; the right channel is silent.

1

The right channel is at full volume; the left channel is silent.

?

If the value is zero, the left and right channels are at equal volumes. The default value is zero.

If this method succeeds, it returns . Otherwise, it returns an error code.

When the audio balance changes, the Media Engine sends an event. See IMFMediaEventNotify::EventNotify.

hh447954 HRESULT IMFMediaEngineEx::SetBalance([In] double balance) IMFMediaEngineEx::SetBalance

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Queries whether the Media Engine can play at a specified playback rate.

The requested playback rate.

Returns TRUE if the playback rate is supported, or otherwise.

Playback rates are expressed as a ratio of the current rate to the normal rate. For example, 1.0 is normal playback speed, 0.5 is half speed, and 2.0 is 2? speed. Positive values mean forward playback, and negative values mean reverse playback.

The results of this method can vary depending on the media resource that is currently loaded. Some media formats might support faster playback rates than others. Also, some formats might not support reverse play.

hh447949 BOOL IMFMediaEngineEx::IsPlaybackRateSupported([In] double rate) IMFMediaEngineEx::IsPlaybackRateSupported

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Steps forward or backward one frame.

Specify TRUE to step forward or to step backward.

If this method succeeds, it returns . Otherwise, it returns an error code.

The frame-step direction is independent of the current playback direction.

This method completes asynchronously. When the operation completes, the Media Engine sends an event and enters the paused state.

hh447933 HRESULT IMFMediaEngineEx::FrameStep([In] BOOL Forward) IMFMediaEngineEx::FrameStep

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Gets various flags that describe the media resource.

Receives a bitwise OR of zero or more flags. The following flags are defined.

ValueMeaning
0x00000001

The media resource represents a live data source, such as a video camera. If playback is stopped and then restarted, there will be a gap in the content.

0x00000002

The media resource supports seeking. To get the seekable range, call .

0x00000003

The media resource can be paused.

0x00000004

Seeking this resource can take a long time. For example, it might download through HTTP.

?

If this method succeeds, it returns . Otherwise, it returns an error code.

hh447939 HRESULT IMFMediaEngineEx::GetResourceCharacteristics([Out] RESOURCE_CHARACTERISTICS* pCharacteristics) IMFMediaEngineEx::GetResourceCharacteristics

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Gets a presentation attribute from the media resource.

The attribute to query. For a list of presentation attributes, see Presentation Descriptor Attributes.

A reference to a that receives the value. The method fills the with a copy of the stored value. The caller must free the by calling PropVariantClear.

If this method succeeds, it returns . Otherwise, it returns an error code.

hh447938 HRESULT IMFMediaEngineEx::GetPresentationAttribute([In] const GUID& guidMFAttribute,[Out] PROPVARIANT* pvValue) IMFMediaEngineEx::GetPresentationAttribute

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Gets the number of streams in the media resource.

Receives the number of streams.

If this method succeeds, it returns . Otherwise, it returns an error code.

hh447937 HRESULT IMFMediaEngineEx::GetNumberOfStreams([Out] unsigned int* pdwStreamCount) IMFMediaEngineEx::GetNumberOfStreams

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Gets a stream-level attribute from the media resource.

The zero-based index of the stream. To get the number of streams, call .

The attribute to query. Possible values are listed in the following topics:

  • Stream Descriptor Attributes
  • Media Type Attributes

A reference to a that receives the value. The method fills the with a copy of the stored value. Call PropVariantClear to free the memory allocated by the method.

If this method succeeds, it returns . Otherwise, it returns an error code.

hh447943 HRESULT IMFMediaEngineEx::GetStreamAttribute([In] unsigned int dwStreamIndex,[In] const GUID& guidMFAttribute,[Out] PROPVARIANT* pvValue) IMFMediaEngineEx::GetStreamAttribute

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Queries whether a stream is selected to play.

The zero-based index of the stream. To get the number of streams, call .

Receives a Boolean value.

ValueMeaning
TRUE

The stream is selected. During playback, this stream will play.

The stream is not selected. During playback, this stream will not play.

?

If this method succeeds, it returns . Otherwise, it returns an error code.

hh447944 HRESULT IMFMediaEngineEx::GetStreamSelection([In] unsigned int dwStreamIndex,[Out] BOOL* pEnabled) IMFMediaEngineEx::GetStreamSelection

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Selects or deselects a stream for playback.

The zero-based index of the stream. To get the number of streams, call .

Specifies whether to select or deselect the stream.

ValueMeaning
TRUE

The stream is selected. During playback, this stream will play.

The stream is not selected. During playback, this stream will not play.

?

If this method succeeds, it returns . Otherwise, it returns an error code.

hh447959 HRESULT IMFMediaEngineEx::SetStreamSelection([In] unsigned int dwStreamIndex,[In] BOOL Enabled) IMFMediaEngineEx::SetStreamSelection
No documentation. No documentation. HRESULT IMFMediaEngineEx::ApplyStreamSelections() IMFMediaEngineEx::ApplyStreamSelections

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Queries whether the media resource contains protected content.

Receives the value TRUE if the media resource contains protected content, or otherwise.

If this method succeeds, it returns . Otherwise, it returns an error code.

hh447950 HRESULT IMFMediaEngineEx::IsProtected([Out] BOOL* pProtected) IMFMediaEngineEx::IsProtected

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Inserts a video effect.

One of the following:

  • A reference to the interface of a Media Foundation transform (MFT) that implements the video effect.
  • A reference to the interface of an activation object. The activation object must create an MFT for the video effect.

Specifies whether the effect is optional.

ValueMeaning
TRUE

The effect is optional. If the Media Engine cannot add the effect, it ignores the effect and continues playback.

The effect is required. If the Media Engine object cannot add the effect, a playback error occurs.

?

This method can return one of these values.

Return codeDescription

Success.

MF_E_INVALIDREQUEST

The maximum number of video effects was reached.

?

The effect is applied when the next media resource is loaded.

hh447948 HRESULT IMFMediaEngineEx::InsertVideoEffect([In] IUnknown* pEffect,[In] BOOL fOptional) IMFMediaEngineEx::InsertVideoEffect

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Inserts an audio effect.

One of the following:

  • A reference to the interface of a Media Foundation transform (MFT) that implements the audio effect.
  • A reference to the interface of an activation object. The activation object must create an MFT for the audio effect.

Specifies whether the effect is optional.

ValueMeaning
TRUE

The effect is optional. If the Media Engine cannot add the effect, it ignores the effect and continues playback.

The effect is required. If the Media Engine object cannot add the effect, a playback error occurs.

?

This method can return one of these values.

Return codeDescription

Success.

MF_E_INVALIDREQUEST

The maximum number of audio effects was reached.

?

The effect is applied when the next media resource is loaded.

hh447947 HRESULT IMFMediaEngineEx::InsertAudioEffect([In] IUnknown* pEffect,[In] BOOL fOptional) IMFMediaEngineEx::InsertAudioEffect

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Removes all audio and effects.

If this method succeeds, it returns . Otherwise, it returns an error code.

Call this method to remove all of the effects that were added with the IMFMediaEngineEx::InsertEffect method.

hh447952 HRESULT IMFMediaEngineEx::RemoveAllEffects() IMFMediaEngineEx::RemoveAllEffects

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Specifies a presentation time when the Media Engine will send a marker event.

The presentation time for the marker event, in seconds.

If this method succeeds, it returns . Otherwise, it returns an error code.

When playback reaches the time specified by timeToFire, the Media Engine sends an event through the method. Calling this method cancels any previous marker that is still pending.

If the application seeks past the marker point, the Media Engine cancels the marker and does not send the event.

During forward playback, set timeToFire to a value greater than the current playback position. During reverse playback, set timeToFire to a value less than the playback position.

To cancel a marker, call .

hh447960 HRESULT IMFMediaEngineEx::SetTimelineMarkerTimer([In] double timeToFire) IMFMediaEngineEx::SetTimelineMarkerTimer

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Gets the time of the next timeline marker, if any.

Receives the marker time, in seconds. If no marker is set, this parameter receives the value NaN.

If this method succeeds, it returns . Otherwise, it returns an error code.

hh447945 HRESULT IMFMediaEngineEx::GetTimelineMarkerTimer([Out] double* pTimeToFire) IMFMediaEngineEx::GetTimelineMarkerTimer

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Cancels the next pending timeline marker.

If this method succeeds, it returns . Otherwise, it returns an error code.

Call this method to cancel the method.

hh447929 HRESULT IMFMediaEngineEx::CancelTimelineMarkerTimer() IMFMediaEngineEx::CancelTimelineMarkerTimer

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Queries whether the media resource contains stereoscopic 3D video.

Returns TRUE if the media resource contains 3D video, or otherwise.

hh447951 BOOL IMFMediaEngineEx::IsStereo3D() IMFMediaEngineEx::IsStereo3D

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

For stereoscopic 3D video, gets the layout of the two views within a video frame.

Receives a member of the enumeration.

If this method succeeds, it returns . Otherwise, it returns an error code.

hh447941 HRESULT IMFMediaEngineEx::GetStereo3DFramePackingMode([Out] MF_MEDIA_ENGINE_S3D_PACKING_MODE* packMode) IMFMediaEngineEx::GetStereo3DFramePackingMode

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

For stereoscopic 3D video, sets the layout of the two views within a video frame.

A member of the enumeration that specifies the layout. The two views can be arranged side-by-side, or top-to-bottom.

If this method succeeds, it returns . Otherwise, it returns an error code.

hh447957 HRESULT IMFMediaEngineEx::SetStereo3DFramePackingMode([In] MF_MEDIA_ENGINE_S3D_PACKING_MODE packMode) IMFMediaEngineEx::SetStereo3DFramePackingMode

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

For stereoscopic 3D video, queries how the Media Engine renders the 3D video content.

Receives a member of the enumeration.

If this method succeeds, it returns . Otherwise, it returns an error code.

hh447942 HRESULT IMFMediaEngineEx::GetStereo3DRenderMode([Out] MF3DVideoOutputType* outputType) IMFMediaEngineEx::GetStereo3DRenderMode

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

For stereoscopic 3D video, specifies how the Media Engine renders the 3D video content.

A member of the enumeration that specifies the 3D video rendering mode.

If this method succeeds, it returns . Otherwise, it returns an error code.

hh447958 HRESULT IMFMediaEngineEx::SetStereo3DRenderMode([In] MF3DVideoOutputType outputType) IMFMediaEngineEx::SetStereo3DRenderMode

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps only

Enables or disables windowless swap-chain mode.

If TRUE, windowless swap-chain mode is enabled.

If this method succeeds, it returns . Otherwise, it returns an error code.

In windowless swap-chain mode, the Media Engine creates a windowless swap chain and presents video frames to the swap chain. To render the video, call to get a handle to the swap chain, and then associate the handle with a Microsoft DirectComposition visual.

hh447932 HRESULT IMFMediaEngineEx::EnableWindowlessSwapchainMode([In] BOOL fEnable) IMFMediaEngineEx::EnableWindowlessSwapchainMode

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps only

Gets a handle to the windowless swap chain.

Receives a handle to the swap chain.

If this method succeeds, it returns . Otherwise, it returns an error code.

To enable windowless swap-chain mode, call .

hh447946 HRESULT IMFMediaEngineEx::GetVideoSwapchainHandle([Out] void** phSwapchain) IMFMediaEngineEx::GetVideoSwapchainHandle

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps only

Enables or disables mirroring of the video.

If TRUE, the video is mirrored horizontally. Otherwise, the video is displayed normally.

If this method succeeds, it returns . Otherwise, it returns an error code.

hh447931 HRESULT IMFMediaEngineEx::EnableHorizontalMirrorMode([In] BOOL fEnable) IMFMediaEngineEx::EnableHorizontalMirrorMode
No documentation. No documentation. No documentation. HRESULT IMFMediaEngineEx::GetAudioStreamCategory([Out] unsigned int* pCategory) IMFMediaEngineEx::GetAudioStreamCategory No documentation. No documentation. No documentation. HRESULT IMFMediaEngineEx::SetAudioStreamCategory([In] unsigned int category) IMFMediaEngineEx::SetAudioStreamCategory No documentation. No documentation. No documentation. HRESULT IMFMediaEngineEx::GetAudioEndpointRole([Out] unsigned int* pRole) IMFMediaEngineEx::GetAudioEndpointRole No documentation. No documentation. No documentation. HRESULT IMFMediaEngineEx::SetAudioEndpointRole([In] unsigned int role) IMFMediaEngineEx::SetAudioEndpointRole No documentation. No documentation. No documentation. HRESULT IMFMediaEngineEx::GetRealTimeMode([Out] BOOL* pfEnabled) IMFMediaEngineEx::GetRealTimeMode No documentation. No documentation. No documentation. HRESULT IMFMediaEngineEx::SetRealTimeMode([In] BOOL fEnable) IMFMediaEngineEx::SetRealTimeMode No documentation. No documentation. No documentation. No documentation. HRESULT IMFMediaEngineEx::SetCurrentTimeEx([In] double seekTime,[In] MF_MEDIA_ENGINE_SEEK_MODE seekMode) IMFMediaEngineEx::SetCurrentTimeEx No documentation. No documentation. No documentation. HRESULT IMFMediaEngineEx::EnableTimeUpdateTimer([In] BOOL fEnableTimer) IMFMediaEngineEx::EnableTimeUpdateTimer

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Gets the audio balance.

hh447934 GetBalance / SetBalance GetBalance double IMFMediaEngineEx::GetBalance()

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Gets various flags that describe the media resource.

hh447939 GetResourceCharacteristics GetResourceCharacteristics HRESULT IMFMediaEngineEx::GetResourceCharacteristics([Out] RESOURCE_CHARACTERISTICS* pCharacteristics)

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Gets the number of streams in the media resource.

hh447937 GetNumberOfStreams GetNumberOfStreams HRESULT IMFMediaEngineEx::GetNumberOfStreams([Out] unsigned int* pdwStreamCount)

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Queries whether the media resource contains protected content.

hh447950 IsProtected IsProtected HRESULT IMFMediaEngineEx::IsProtected([Out] BOOL* pProtected)

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Gets the time of the next timeline marker, if any.

hh447945 GetTimelineMarkerTimer / SetTimelineMarkerTimer GetTimelineMarkerTimer HRESULT IMFMediaEngineEx::GetTimelineMarkerTimer([Out] double* pTimeToFire)

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Queries whether the media resource contains stereoscopic 3D video.

hh447951 IsStereo3D IsStereo3D BOOL IMFMediaEngineEx::IsStereo3D()

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

For stereoscopic 3D video, gets the layout of the two views within a video frame.

hh447941 GetStereo3DFramePackingMode / SetStereo3DFramePackingMode GetStereo3DFramePackingMode HRESULT IMFMediaEngineEx::GetStereo3DFramePackingMode([Out] MF_MEDIA_ENGINE_S3D_PACKING_MODE* packMode)

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

For stereoscopic 3D video, queries how the Media Engine renders the 3D video content.

hh447942 GetStereo3DRenderMode / SetStereo3DRenderMode GetStereo3DRenderMode HRESULT IMFMediaEngineEx::GetStereo3DRenderMode([Out] MF3DVideoOutputType* outputType)

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps only

Gets a handle to the windowless swap chain.

To enable windowless swap-chain mode, call .

hh447946 GetVideoSwapchainHandle GetVideoSwapchainHandle HRESULT IMFMediaEngineEx::GetVideoSwapchainHandle([Out] void** phSwapchain)
No documentation. GetAudioStreamCategory / SetAudioStreamCategory GetAudioStreamCategory HRESULT IMFMediaEngineEx::GetAudioStreamCategory([Out] unsigned int* pCategory) No documentation. GetAudioEndpointRole / SetAudioEndpointRole GetAudioEndpointRole HRESULT IMFMediaEngineEx::GetAudioEndpointRole([Out] unsigned int* pRole) No documentation. GetRealTimeMode / SetRealTimeMode GetRealTimeMode HRESULT IMFMediaEngineEx::GetRealTimeMode([Out] BOOL* pfEnabled) Internal MediaEngineNotify Callback Return a pointer to the unamanged version of this callback. The callback. A pointer to a shadow c++ callback HRESULT IMFMediaEngineNotify::EventNotify([In] unsigned int event,[In] ULONG_PTR param1,[In] unsigned int param2)

Applies to: desktop apps only

Defines flags for serializing and deserializing attribute stores.

ms704675 MF_ATTRIBUTE_SERIALIZE_OPTIONS MF_ATTRIBUTE_SERIALIZE_OPTIONS

If this flag is set, references in the attribute store are marshaled to and from the stream. If this flag is absent, references in the attribute store are not marshaled or serialized.

ms704675 MF_ATTRIBUTE_SERIALIZE_UNKNOWN_BYREF MF_ATTRIBUTE_SERIALIZE_UNKNOWN_BYREF

Applies to: desktop apps | Metro style apps

Specifies how to compare the attributes on two objects.

ms703793 MF_ATTRIBUTES_MATCH_TYPE MF_ATTRIBUTES_MATCH_TYPE

Check whether all the attributes in pThis exist in pTheirs and have the same data, where pThis is the object whose Compare method is being called and pTheirs is the object given in the pTheirs parameter.

ms703793 MF_ATTRIBUTES_MATCH_OUR_ITEMS MF_ATTRIBUTES_MATCH_OUR_ITEMS

Check whether all the attributes in pTheirs exist in pThis and have the same data, where pThis is the object whose Compare method is being called and pTheirs is the object given in the pTheirs parameter.

ms703793 MF_ATTRIBUTES_MATCH_THEIR_ITEMS MF_ATTRIBUTES_MATCH_THEIR_ITEMS

Check whether both objects have identical attributes with the same data.

ms703793 MF_ATTRIBUTES_MATCH_ALL_ITEMS MF_ATTRIBUTES_MATCH_ALL_ITEMS

Check whether the attributes that exist in both objects have the same data.

ms703793 MF_ATTRIBUTES_MATCH_INTERSECTION MF_ATTRIBUTES_MATCH_INTERSECTION

Find the object with the fewest number of attributes, and check if those attributes exist in the other object and have the same data.

ms703793 MF_ATTRIBUTES_MATCH_SMALLER MF_ATTRIBUTES_MATCH_SMALLER

Applies to: desktop apps | Metro style apps

Defines the data type for a key/value pair.

ms694854 MF_ATTRIBUTE_TYPE MF_ATTRIBUTE_TYPE

Unsigned 32-bit integer.

ms694854 MF_ATTRIBUTE_UINT32 MF_ATTRIBUTE_UINT32

Unsigned 64-bit integer.

ms694854 MF_ATTRIBUTE_UINT64 MF_ATTRIBUTE_UINT64

Floating-point number.

ms694854 MF_ATTRIBUTE_DOUBLE MF_ATTRIBUTE_DOUBLE

value.

ms694854 MF_ATTRIBUTE_GUID MF_ATTRIBUTE_GUID

null-terminated wide-character string.

ms694854 MF_ATTRIBUTE_STRING MF_ATTRIBUTE_STRING

Byte array.

ms694854 MF_ATTRIBUTE_BLOB MF_ATTRIBUTE_BLOB

reference.

ms694854 MF_ATTRIBUTE_IUNKNOWN MF_ATTRIBUTE_IUNKNOWN

Applies to: desktop apps only

Specifies how the credential manager should obtain user credentials.

The application implements the credential manager, which must expose the IMFNetCredentialManager interface. If the REQUIRE_PROMPT flag is set, the credential manager should prompt the user for his or her name and password.

The credential cache object sets the REQUIRE_PROMPT flag if the cache does not yet contain valid credentials. It also sets this flag if the credentials will be sent as plain text, unless the credential manager previously set the MFNET_CREDENTIAL_ALLOW_CLEAR_TEXT option. (See IMFNetCredentialCache::SetUserOptions.)

ms700813 MF2DBuffer_LockFlags MF2DBuffer_LockFlags

The credential manager should prompt the user to provide the credentials.

ms700813 MF2DBuffer_LockFlags_LockTypeMask MF2DBuffer_LockFlags_LockTypeMask

Note??Requires Windows?7 or later.

The credentials are saved to persistent storage. This flag acts as a hint for the application's UI. If the application prompts the user for credentials, the UI can indicate that the credentials have already been saved.

ms700813 MF2DBuffer_LockFlags_Read MF2DBuffer_LockFlags_Read
No documentation. MF2DBuffer_LockFlags_Write MF2DBuffer_LockFlags_Write No documentation. MF2DBuffer_LockFlags_ReadWrite MF2DBuffer_LockFlags_ReadWrite

Applies to: desktop apps | Metro style apps

Specifies the origin for a seek request.

ms702091 MFBYTESTREAM_SEEK_ORIGIN MFBYTESTREAM_SEEK_ORIGIN

The seek position is specified relative to the start of the stream.

ms702091 msoBegin msoBegin

The seek position is specified relative to the current read/write position in the stream.

ms702091 msoCurrent msoCurrent
No documentation. _DMO_INPUT_DATA_BUFFER_FLAGS _DMO_INPUT_DATA_BUFFER_FLAGS No documentation. DMO_INPUT_DATA_BUFFERF_SYNCPOINT DMO_INPUT_DATA_BUFFERF_SYNCPOINT No documentation. DMO_INPUT_DATA_BUFFERF_TIME DMO_INPUT_DATA_BUFFERF_TIME No documentation. DMO_INPUT_DATA_BUFFERF_TIMELENGTH DMO_INPUT_DATA_BUFFERF_TIMELENGTH No documentation. DMO_INPUT_DATA_BUFFERF_DISCONTINUITY DMO_INPUT_DATA_BUFFERF_DISCONTINUITY None. None None

Media Foundation transforms (MFTs) are an evolution of the transform model first introduced with DirectX Media Objects (DMOs). This topic summarizes the main ways in which MFTs differ from DMOs. Read this topic if you are already familiar with the DMO interfaces, or if you want to convert an existing DMO into an MFT.

This topic contains the following sections:

  • Number
  • Format
  • Streaming
    • Allocating Resources
    • Processing Data
    • Flushing
    • Stream Discontinuities
  • Miscellaneous
  • Flags
    • ProcessInput Flags
    • ProcessOutput Flags
    • GetInputStatus Flags
    • GetOutputStatus Flags
    • GetInputStreamInfo Flags
    • GetOutputStreamInfo Flags
    • SetInputType/SetOutputType Flags
  • Error
  • Creating
  • Related
bb250374 _DMO_INPUT_STATUS_FLAGS _DMO_INPUT_STATUS_FLAGS
No documentation. DMO_INPUT_STATUSF_ACCEPT_DATA DMO_INPUT_STATUSF_ACCEPT_DATA None. None None No documentation. _DMO_INPUT_STREAM_INFO_FLAGS _DMO_INPUT_STREAM_INFO_FLAGS No documentation. DMO_INPUT_STREAMF_WHOLE_SAMPLES DMO_INPUT_STREAMF_WHOLE_SAMPLES No documentation. DMO_INPUT_STREAMF_SINGLE_SAMPLE_PER_BUFFER DMO_INPUT_STREAMF_SINGLE_SAMPLE_PER_BUFFER No documentation. DMO_INPUT_STREAMF_FIXED_SAMPLE_SIZE DMO_INPUT_STREAMF_FIXED_SAMPLE_SIZE No documentation. DMO_INPUT_STREAMF_HOLDS_BUFFERS DMO_INPUT_STREAMF_HOLDS_BUFFERS None. None None No documentation. _DMO_OUTPUT_DATA_BUFFER_FLAGS _DMO_OUTPUT_DATA_BUFFER_FLAGS No documentation. DMO_OUTPUT_DATA_BUFFERF_SYNCPOINT DMO_OUTPUT_DATA_BUFFERF_SYNCPOINT No documentation. DMO_OUTPUT_DATA_BUFFERF_TIME DMO_OUTPUT_DATA_BUFFERF_TIME No documentation. DMO_OUTPUT_DATA_BUFFERF_TIMELENGTH DMO_OUTPUT_DATA_BUFFERF_TIMELENGTH No documentation. DMO_OUTPUT_DATA_BUFFERF_DISCONTINUITY DMO_OUTPUT_DATA_BUFFERF_DISCONTINUITY No documentation. DMO_OUTPUT_DATA_BUFFERF_INCOMPLETE DMO_OUTPUT_DATA_BUFFERF_INCOMPLETE None. None None No documentation. _DMO_OUTPUT_STREAM_INFO_FLAGS _DMO_OUTPUT_STREAM_INFO_FLAGS No documentation. DMO_OUTPUT_STREAMF_WHOLE_SAMPLES DMO_OUTPUT_STREAMF_WHOLE_SAMPLES No documentation. DMO_OUTPUT_STREAMF_SINGLE_SAMPLE_PER_BUFFER DMO_OUTPUT_STREAMF_SINGLE_SAMPLE_PER_BUFFER No documentation. DMO_OUTPUT_STREAMF_FIXED_SAMPLE_SIZE DMO_OUTPUT_STREAMF_FIXED_SAMPLE_SIZE No documentation. DMO_OUTPUT_STREAMF_DISCARDABLE DMO_OUTPUT_STREAMF_DISCARDABLE No documentation. DMO_OUTPUT_STREAMF_OPTIONAL DMO_OUTPUT_STREAMF_OPTIONAL None. None None No documentation. _DMO_PROCESS_OUTPUT_FLAGS _DMO_PROCESS_OUTPUT_FLAGS No documentation. DMO_PROCESS_OUTPUT_DISCARD_WHEN_NO_BUFFER DMO_PROCESS_OUTPUT_DISCARD_WHEN_NO_BUFFER None. None None No documentation. _DMO_SET_TYPE_FLAGS _DMO_SET_TYPE_FLAGS No documentation. DMO_SET_TYPEF_TEST_ONLY DMO_SET_TYPEF_TEST_ONLY No documentation. DMO_SET_TYPEF_CLEAR DMO_SET_TYPEF_CLEAR None. None None

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Queries how likely it is that the Media Engine can play a specified type of media resource.

This method corresponds to the canPlayType attribute of the HTMLMediaElement interface in HTML5.

The canPlayType attribute defines the following values.

ValueDescription
"" (empty string)The user-agent cannot play the resource, or the resource type is "application/octet-stream".
"probably"The user-agent probably can play the resource.
"maybe"Neither of the previous values applies.

?

The value "probably" is used because a MIME type for a media resource is generally not a complete description of the resource. For example, "video/mp4" specifies an MP4 file with video, but does not describe the codec. Even with the optional codecs parameter, the MIME type omits some information, such as the actual coded bit rate. Therefore, it is usually impossible to be certain that playback is possible until the actual media resource is opened.

hh447978 MF_MEDIA_ENGINE_CANPLAY MF_MEDIA_ENGINE_CANPLAY

A string that contains a MIME type with an optional codecs parameter, as defined in RFC 4281.

hh447978 MF_MEDIA_ENGINE_CANPLAY_NOT_SUPPORTED MF_MEDIA_ENGINE_CANPLAY_NOT_SUPPORTED

Receives an enumeration value.

hh447978 MF_MEDIA_ENGINE_CANPLAY_MAYBE MF_MEDIA_ENGINE_CANPLAY_MAYBE
No documentation. MF_MEDIA_ENGINE_CANPLAY_PROBABLY MF_MEDIA_ENGINE_CANPLAY_PROBABLY

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps only

Contains flags for the method.

hh162839 MF_MEDIA_ENGINE_CREATEFLAGS MF_MEDIA_ENGINE_CREATEFLAGS
No documentation. MF_MEDIA_ENGINE_AUDIOONLY MF_MEDIA_ENGINE_AUDIOONLY No documentation. MF_MEDIA_ENGINE_WAITFORSTABLE_STATE MF_MEDIA_ENGINE_WAITFORSTABLE_STATE No documentation. MF_MEDIA_ENGINE_FORCEMUTE MF_MEDIA_ENGINE_FORCEMUTE No documentation. MF_MEDIA_ENGINE_REAL_TIME_MODE MF_MEDIA_ENGINE_REAL_TIME_MODE No documentation. MF_MEDIA_ENGINE_DISABLE_LOCAL_PLUGINS MF_MEDIA_ENGINE_DISABLE_LOCAL_PLUGINS No documentation. MF_MEDIA_ENGINE_CREATEFLAGS_MASK MF_MEDIA_ENGINE_CREATEFLAGS_MASK None. None None

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Defines error status codes for the Media Engine.

The values greater than zero correspond to error codes defined for the MediaError object in HTML5.

hh162841 MF_MEDIA_ENGINE_ERR MF_MEDIA_ENGINE_ERR

No error.

hh162841 MF_MEDIA_ENGINE_ERR_NOERROR MF_MEDIA_ENGINE_ERR_NOERROR

The process of fetching the media resource was stopped at the user's request.

hh162841 MF_MEDIA_ENGINE_ERR_ABORTED MF_MEDIA_ENGINE_ERR_ABORTED

A network error occurred while fetching the media resource.

hh162841 MF_MEDIA_ENGINE_ERR_NETWORK MF_MEDIA_ENGINE_ERR_NETWORK

An error occurred while decoding the media resource.

hh162841 MF_MEDIA_ENGINE_ERR_DECODE MF_MEDIA_ENGINE_ERR_DECODE

The media resource is not supported.

hh162841 MF_MEDIA_ENGINE_ERR_SRC_NOT_SUPPORTED MF_MEDIA_ENGINE_ERR_SRC_NOT_SUPPORTED

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps only

Defines event codes for the Media Engine.

The application receives Media Engine events through the method. The EventNotify method includes two event parameters, param1 and param2. The meaning of the parameters depends on the event code. If the event description does not list any parameters, ignore the values of param1 and param2.

Values below 1000 correspond to events defined in HTML 5 for media elements.

hh162842 MF_MEDIA_ENGINE_EVENT MF_MEDIA_ENGINE_EVENT

The Media Engine has started to load the source. See .

hh162842 MF_MEDIA_ENGINE_EVENT_LOADSTART MF_MEDIA_ENGINE_EVENT_LOADSTART

The Media Engine is loading the source.

hh162842 MF_MEDIA_ENGINE_EVENT_PROGRESS MF_MEDIA_ENGINE_EVENT_PROGRESS

The Media Engine has suspended a load operation.

hh162842 MF_MEDIA_ENGINE_EVENT_SUSPEND MF_MEDIA_ENGINE_EVENT_SUSPEND

The Media Engine cancelled a load operation that was in progress.

hh162842 MF_MEDIA_ENGINE_EVENT_ABORT MF_MEDIA_ENGINE_EVENT_ABORT

An error occurred.

Event ParameterDescription
param1A member of the enumeration.
param2An error code, or zero.

?

hh162842 MF_MEDIA_ENGINE_EVENT_ERROR MF_MEDIA_ENGINE_EVENT_ERROR

The Media Engine has switched to the state. This can occur when the method is called, or if an error occurs during the Load method. See .

hh162842 MF_MEDIA_ENGINE_EVENT_EMPTIED MF_MEDIA_ENGINE_EVENT_EMPTIED

The Load algorithm is stalled, waiting for data.

hh162842 MF_MEDIA_ENGINE_EVENT_STALLED MF_MEDIA_ENGINE_EVENT_STALLED

The Media Engine is switching to the playing state. See .

hh162842 MF_MEDIA_ENGINE_EVENT_PLAY MF_MEDIA_ENGINE_EVENT_PLAY

The media engine has paused. See .

hh162842 MF_MEDIA_ENGINE_EVENT_PAUSE MF_MEDIA_ENGINE_EVENT_PAUSE

The Media Engine has loaded enough source data to determine the duration and dimensions of the source.

hh162842 MF_MEDIA_ENGINE_EVENT_LOADEDMETADATA MF_MEDIA_ENGINE_EVENT_LOADEDMETADATA

The Media Engine has loaded enough data to render some content (for example, a video frame).

hh162842 MF_MEDIA_ENGINE_EVENT_LOADEDDATA MF_MEDIA_ENGINE_EVENT_LOADEDDATA

Playback has stopped because the next frame is not available.

hh162842 MF_MEDIA_ENGINE_EVENT_WAITING MF_MEDIA_ENGINE_EVENT_WAITING

Playback has started. See .

hh162842 MF_MEDIA_ENGINE_EVENT_PLAYING MF_MEDIA_ENGINE_EVENT_PLAYING

Playback can start, but the Media Engine might need to stop to buffer more data.

hh162842 MF_MEDIA_ENGINE_EVENT_CANPLAY MF_MEDIA_ENGINE_EVENT_CANPLAY

The Media Engine can probably play through to the end of the resource, without stopping to buffer data.

hh162842 MF_MEDIA_ENGINE_EVENT_CANPLAYTHROUGH MF_MEDIA_ENGINE_EVENT_CANPLAYTHROUGH

The Media Engine has started seeking to a new playback position. See .

hh162842 MF_MEDIA_ENGINE_EVENT_SEEKING MF_MEDIA_ENGINE_EVENT_SEEKING

The Media Engine has seeked to a new playback position. See .

hh162842 MF_MEDIA_ENGINE_EVENT_SEEKED MF_MEDIA_ENGINE_EVENT_SEEKED

The playback position has changed. See .

hh162842 MF_MEDIA_ENGINE_EVENT_TIMEUPDATE MF_MEDIA_ENGINE_EVENT_TIMEUPDATE

Playback has reached the end of the source. This event is not sent if the GetLoopis TRUE.

hh162842 MF_MEDIA_ENGINE_EVENT_ENDED MF_MEDIA_ENGINE_EVENT_ENDED

The playback rate has changed. See .

hh162842 MF_MEDIA_ENGINE_EVENT_RATECHANGE MF_MEDIA_ENGINE_EVENT_RATECHANGE

The duration of the media source has changed. See .

hh162842 MF_MEDIA_ENGINE_EVENT_DURATIONCHANGE MF_MEDIA_ENGINE_EVENT_DURATIONCHANGE

The audio volume changed. See .

hh162842 MF_MEDIA_ENGINE_EVENT_VOLUMECHANGE MF_MEDIA_ENGINE_EVENT_VOLUMECHANGE

The output format of the media source has changed.

Event ParameterDescription
param1Zero if the video format changed, 1 if the audio format changed.
param2Zero.

?

hh162842 MF_MEDIA_ENGINE_EVENT_FORMATCHANGE MF_MEDIA_ENGINE_EVENT_FORMATCHANGE

The Media Engine flushed any pending events from its queue.

hh162842 MF_MEDIA_ENGINE_EVENT_PURGEQUEUEDEVENTS MF_MEDIA_ENGINE_EVENT_PURGEQUEUEDEVENTS

The playback position reached a timeline marker. See .

hh162842 MF_MEDIA_ENGINE_EVENT_TIMELINE_MARKER MF_MEDIA_ENGINE_EVENT_TIMELINE_MARKER

The audio balance changed. See .

hh162842 MF_MEDIA_ENGINE_EVENT_BALANCECHANGE MF_MEDIA_ENGINE_EVENT_BALANCECHANGE

The Media Engine has finished downloading the source data.

hh162842 MF_MEDIA_ENGINE_EVENT_DOWNLOADCOMPLETE MF_MEDIA_ENGINE_EVENT_DOWNLOADCOMPLETE

The media source has started to buffer data.

hh162842 MF_MEDIA_ENGINE_EVENT_BUFFERINGSTARTED MF_MEDIA_ENGINE_EVENT_BUFFERINGSTARTED

The media source has stopped buffering data.

hh162842 MF_MEDIA_ENGINE_EVENT_BUFFERINGENDED MF_MEDIA_ENGINE_EVENT_BUFFERINGENDED

The method completed.

hh162842 MF_MEDIA_ENGINE_EVENT_FRAMESTEPCOMPLETED MF_MEDIA_ENGINE_EVENT_FRAMESTEPCOMPLETED

The Media Engine's Load algorithm is waiting to start.

Event ParameterDescription
param1A handle to a waitable event, of type HANDLE.
param2Zero.

?

If Media Engine is created with the flag, the Media Engine sends the event at the start of the Load algorithm. The param1 parameter is a handle to a waitable event. The Load thread waits for the application to signal the event by calling SetEvent.

If the Media Engine is not created with the , it does not send this event, and the Load thread does not wait to be signalled.

hh162842 MF_MEDIA_ENGINE_EVENT_NOTIFYSTABLESTATE MF_MEDIA_ENGINE_EVENT_NOTIFYSTABLESTATE
No documentation. MF_MEDIA_ENGINE_EVENT_FIRSTFRAMEREADY MF_MEDIA_ENGINE_EVENT_FIRSTFRAMEREADY

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Gets the current network state of the media engine.

This method corresponds to the networkState attribute of the HTMLMediaElement interface in HTML5.

hh447989 MF_MEDIA_ENGINE_NETWORK MF_MEDIA_ENGINE_NETWORK
No documentation. MF_MEDIA_ENGINE_NETWORK_EMPTY MF_MEDIA_ENGINE_NETWORK_EMPTY No documentation. MF_MEDIA_ENGINE_NETWORK_IDLE MF_MEDIA_ENGINE_NETWORK_IDLE No documentation. MF_MEDIA_ENGINE_NETWORK_LOADING MF_MEDIA_ENGINE_NETWORK_LOADING No documentation. MF_MEDIA_ENGINE_NETWORK_NO_SOURCE MF_MEDIA_ENGINE_NETWORK_NO_SOURCE

Applies to: desktop apps only

Describes the conversion matrices between Y'PbPr (component video) and studio R'G'B'. These flags are used in the DXVA2_ExtendedFormat structure.

The transfer matrices are defined as follows.

BT.709 transfer matrices:

Y' 0.212600 0.715200 0.072200 R' Pb = -0.114572 -0.385428 0.500000 x G' Pr 0.500000 -0.454153 -0.045847 B' R' 1.000000 0.000000 1.574800 Y' G' = 1.000000 -0.187324 -0.468124 x Pb B' 1.000000 1.855600 0.000000 Pr

BT.601 transfer matrices:

Y' 0.299000 0.587000 0.114000 R' Pb = -0.168736 -0.331264 0.500000 x G' Pr 0.500000 -0.418688 -0.081312 B' R' 1.000000 0.000000 1.402000 Y' G' = 1.000000 -0.344136 -0.714136 x Pb B' 1.000000 1.772000 0.000000 Pr

SMPTE 240M (SMPTE RP 145) transfer matrices:

Y' 0.212000 0.701000 0.087000 R' Pb = -0.116000 -0.384000 0.500000 x G' Pr 0.500000 -0.445000 -0.055000 B' R' 1.000000 -0.000000 1.576000 Y' G' = 1.000000 -0.227000 -0.477000 x Pb B' 1.000000 1.826000 0.000000 Pr

This enumeration is equivalent to the DXVA_VideoTransferMatrix enumeration used in DXVA 1.0.

If you are using the interface to describe the video format, the video transfer matrix is specified in the attribute.

ms698715 MF_MEDIA_ENGINE_PRELOAD MF_MEDIA_ENGINE_PRELOAD
No documentation. MF_MEDIA_ENGINE_PRELOAD_MISSING MF_MEDIA_ENGINE_PRELOAD_MISSING No documentation. MF_MEDIA_ENGINE_PRELOAD_EMPTY MF_MEDIA_ENGINE_PRELOAD_EMPTY No documentation. MF_MEDIA_ENGINE_PRELOAD_NONE MF_MEDIA_ENGINE_PRELOAD_NONE No documentation. MF_MEDIA_ENGINE_PRELOAD_METADATA MF_MEDIA_ENGINE_PRELOAD_METADATA No documentation. MF_MEDIA_ENGINE_PRELOAD_AUTOMATIC MF_MEDIA_ENGINE_PRELOAD_AUTOMATIC

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps only

Contains flags that specify whether the Media Engine will play protected content, and whether the Media Engine will use the Protected Media Path (PMP).

These flags are used with the attribute.

hh162852 MF_MEDIA_ENGINE_PROTECTION_FLAGS MF_MEDIA_ENGINE_PROTECTION_FLAGS
No documentation. MF_MEDIA_ENGINE_ENABLE_PROTECTED_CONTENT MF_MEDIA_ENGINE_ENABLE_PROTECTED_CONTENT No documentation. MF_MEDIA_ENGINE_USE_PMP_FOR_ALL_CONTENT MF_MEDIA_ENGINE_USE_PMP_FOR_ALL_CONTENT No documentation. MF_MEDIA_ENGINE_USE_UNPROTECTED_PMP MF_MEDIA_ENGINE_USE_UNPROTECTED_PMP None. None None

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps only

Defines ready-state values for the Media Engine.

These values correspond to constants defined for the HTMLMediaElement.readyState attribute in HTML5.

hh162853 MF_MEDIA_ENGINE_READY MF_MEDIA_ENGINE_READY

No data is available.

hh162853 MF_MEDIA_ENGINE_READY_HAVE_NOTHING MF_MEDIA_ENGINE_READY_HAVE_NOTHING

Some metadata is available, including the duration and, for video files, the video dimensions. No media data is available.

hh162853 MF_MEDIA_ENGINE_READY_HAVE_METADATA MF_MEDIA_ENGINE_READY_HAVE_METADATA

There is media data for the current playback position, but not enough data for playback or seeking.

hh162853 MF_MEDIA_ENGINE_READY_HAVE_CURRENT_DATA MF_MEDIA_ENGINE_READY_HAVE_CURRENT_DATA

There is enough media data to enable some playback or seeking. The amount of data might be a little as the next video frame.

hh162853 MF_MEDIA_ENGINE_READY_HAVE_FUTURE_DATA MF_MEDIA_ENGINE_READY_HAVE_FUTURE_DATA

There is enough data to play the resource, based on the current rate at which the resource is being fetched.

hh162853 MF_MEDIA_ENGINE_READY_HAVE_ENOUGH_DATA MF_MEDIA_ENGINE_READY_HAVE_ENOUGH_DATA

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Specifies the layout for a packed 3D video frame.

hh162854 MF_MEDIA_ENGINE_S3D_PACKING_MODE MF_MEDIA_ENGINE_S3D_PACKING_MODE

None.

hh162854 MF_MEDIA_ENGINE_S3D_PACKING_MODE_NONE MF_MEDIA_ENGINE_S3D_PACKING_MODE_NONE

The views are packed side-by-side in a single frame.

hh162854 MF_MEDIA_ENGINE_S3D_PACKING_MODE_SIDE_BY_SIDE MF_MEDIA_ENGINE_S3D_PACKING_MODE_SIDE_BY_SIDE

The views are packed top-to-bottom in a single frame.

hh162854 MF_MEDIA_ENGINE_S3D_PACKING_MODE_TOP_BOTTOM MF_MEDIA_ENGINE_S3D_PACKING_MODE_TOP_BOTTOM
No documentation. MF_MEDIA_ENGINE_SEEK_MODE MF_MEDIA_ENGINE_SEEK_MODE No documentation. MF_MEDIA_ENGINE_SEEK_MODE_NORMAL MF_MEDIA_ENGINE_SEEK_MODE_NORMAL No documentation. MF_MEDIA_ENGINE_SEEK_MODE_APPROXIMATE MF_MEDIA_ENGINE_SEEK_MODE_APPROXIMATE

Applies to: desktop apps only

Describes the conversion matrices between Y'PbPr (component video) and studio R'G'B'. These flags are used in the DXVA2_ExtendedFormat structure.

The transfer matrices are defined as follows.

BT.709 transfer matrices:

Y' 0.212600 0.715200 0.072200 R' Pb = -0.114572 -0.385428 0.500000 x G' Pr 0.500000 -0.454153 -0.045847 B' R' 1.000000 0.000000 1.574800 Y' G' = 1.000000 -0.187324 -0.468124 x Pb B' 1.000000 1.855600 0.000000 Pr

BT.601 transfer matrices:

Y' 0.299000 0.587000 0.114000 R' Pb = -0.168736 -0.331264 0.500000 x G' Pr 0.500000 -0.418688 -0.081312 B' R' 1.000000 0.000000 1.402000 Y' G' = 1.000000 -0.344136 -0.714136 x Pb B' 1.000000 1.772000 0.000000 Pr

SMPTE 240M (SMPTE RP 145) transfer matrices:

Y' 0.212000 0.701000 0.087000 R' Pb = -0.116000 -0.384000 0.500000 x G' Pr 0.500000 -0.445000 -0.055000 B' R' 1.000000 -0.000000 1.576000 Y' G' = 1.000000 -0.227000 -0.477000 x Pb B' 1.000000 1.826000 0.000000 Pr

This enumeration is equivalent to the DXVA_VideoTransferMatrix enumeration used in DXVA 1.0.

If you are using the interface to describe the video format, the video transfer matrix is specified in the attribute.

ms698715 MF_MEDIA_ENGINE_STATISTIC MF_MEDIA_ENGINE_STATISTIC
No documentation. MF_MEDIA_ENGINE_STATISTIC_FRAMES_RENDERED MF_MEDIA_ENGINE_STATISTIC_FRAMES_RENDERED No documentation. MF_MEDIA_ENGINE_STATISTIC_FRAMES_DROPPED MF_MEDIA_ENGINE_STATISTIC_FRAMES_DROPPED No documentation. MF_MEDIA_ENGINE_STATISTIC_BYTES_DOWNLOADED MF_MEDIA_ENGINE_STATISTIC_BYTES_DOWNLOADED No documentation. MF_MEDIA_ENGINE_STATISTIC_BUFFER_PROGRESS MF_MEDIA_ENGINE_STATISTIC_BUFFER_PROGRESS No documentation. MF_MEDIA_ENGINE_STATISTIC_FRAMES_PER_SECOND MF_MEDIA_ENGINE_STATISTIC_FRAMES_PER_SECOND No documentation. __MIDL___MIDL_itf_mfobjects_0000_0012_0001 __MIDL___MIDL_itf_mfobjects_0000_0012_0001 No documentation. MEUnknown MEUnknown No documentation. MEError MEError No documentation. MEExtendedType MEExtendedType No documentation. MENonFatalError MENonFatalError No documentation. MEGenericV1Anchor MEGenericV1Anchor No documentation. MESessionUnknown MESessionUnknown No documentation. MESessionTopologySet MESessionTopologySet No documentation. MESessionTopologiesCleared MESessionTopologiesCleared No documentation. MESessionStarted MESessionStarted No documentation. MESessionPaused MESessionPaused No documentation. MESessionStopped MESessionStopped No documentation. MESessionClosed MESessionClosed No documentation. MESessionEnded MESessionEnded No documentation. MESessionRateChanged MESessionRateChanged No documentation. MESessionScrubSampleComplete MESessionScrubSampleComplete No documentation. MESessionCapabilitiesChanged MESessionCapabilitiesChanged No documentation. MESessionTopologyStatus MESessionTopologyStatus No documentation. MESessionNotifyPresentationTime MESessionNotifyPresentationTime No documentation. MENewPresentation MENewPresentation No documentation. MELicenseAcquisitionStart MELicenseAcquisitionStart No documentation. MELicenseAcquisitionCompleted MELicenseAcquisitionCompleted No documentation. MEIndividualizationStart MEIndividualizationStart No documentation. MEIndividualizationCompleted MEIndividualizationCompleted No documentation. MEEnablerProgress MEEnablerProgress No documentation. MEEnablerCompleted MEEnablerCompleted No documentation. MEPolicyError MEPolicyError No documentation. MEPolicyReport MEPolicyReport No documentation. MEBufferingStarted MEBufferingStarted No documentation. MEBufferingStopped MEBufferingStopped No documentation. MEConnectStart MEConnectStart No documentation. MEConnectEnd MEConnectEnd No documentation. MEReconnectStart MEReconnectStart No documentation. MEReconnectEnd MEReconnectEnd No documentation. MERendererEvent MERendererEvent No documentation. MESessionStreamSinkFormatChanged MESessionStreamSinkFormatChanged No documentation. MESessionV1Anchor MESessionV1Anchor No documentation. MESourceUnknown MESourceUnknown No documentation. MESourceStarted MESourceStarted No documentation. MEStreamStarted MEStreamStarted No documentation. MESourceSeeked MESourceSeeked No documentation. MEStreamSeeked MEStreamSeeked No documentation. MENewStream MENewStream No documentation. MEUpdatedStream MEUpdatedStream No documentation. MESourceStopped MESourceStopped No documentation. MEStreamStopped MEStreamStopped No documentation. MESourcePaused MESourcePaused No documentation. MEStreamPaused MEStreamPaused No documentation. MEEndOfPresentation MEEndOfPresentation No documentation. MEEndOfStream MEEndOfStream No documentation. MEMediaSample MEMediaSample No documentation. MEStreamTick MEStreamTick No documentation. MEStreamThinMode MEStreamThinMode No documentation. MEStreamFormatChanged MEStreamFormatChanged No documentation. MESourceRateChanged MESourceRateChanged No documentation. MEEndOfPresentationSegment MEEndOfPresentationSegment No documentation. MESourceCharacteristicsChanged MESourceCharacteristicsChanged No documentation. MESourceRateChangeRequested MESourceRateChangeRequested No documentation. MESourceMetadataChanged MESourceMetadataChanged No documentation. MESequencerSourceTopologyUpdated MESequencerSourceTopologyUpdated No documentation. MESourceV1Anchor MESourceV1Anchor No documentation. MESinkUnknown MESinkUnknown No documentation. MEStreamSinkStarted MEStreamSinkStarted No documentation. MEStreamSinkStopped MEStreamSinkStopped No documentation. MEStreamSinkPaused MEStreamSinkPaused No documentation. MEStreamSinkRateChanged MEStreamSinkRateChanged No documentation. MEStreamSinkRequestSample MEStreamSinkRequestSample No documentation. MEStreamSinkMarker MEStreamSinkMarker No documentation. MEStreamSinkPrerolled MEStreamSinkPrerolled No documentation. MEStreamSinkScrubSampleComplete MEStreamSinkScrubSampleComplete No documentation. MEStreamSinkFormatChanged MEStreamSinkFormatChanged No documentation. MEStreamSinkDeviceChanged MEStreamSinkDeviceChanged No documentation. MEQualityNotify MEQualityNotify No documentation. MESinkInvalidated MESinkInvalidated No documentation. MEAudioSessionNameChanged MEAudioSessionNameChanged No documentation. MEAudioSessionVolumeChanged MEAudioSessionVolumeChanged No documentation. MEAudioSessionDeviceRemoved MEAudioSessionDeviceRemoved No documentation. MEAudioSessionServerShutdown MEAudioSessionServerShutdown No documentation. MEAudioSessionGroupingParamChanged MEAudioSessionGroupingParamChanged No documentation. MEAudioSessionIconChanged MEAudioSessionIconChanged No documentation. MEAudioSessionFormatChanged MEAudioSessionFormatChanged No documentation. MEAudioSessionDisconnected MEAudioSessionDisconnected No documentation. MEAudioSessionExclusiveModeOverride MEAudioSessionExclusiveModeOverride No documentation. MESinkV1Anchor MESinkV1Anchor No documentation. MECaptureAudioSessionVolumeChanged MECaptureAudioSessionVolumeChanged No documentation. MECaptureAudioSessionDeviceRemoved MECaptureAudioSessionDeviceRemoved No documentation. MECaptureAudioSessionFormatChanged MECaptureAudioSessionFormatChanged No documentation. MECaptureAudioSessionDisconnected MECaptureAudioSessionDisconnected No documentation. MECaptureAudioSessionExclusiveModeOverride MECaptureAudioSessionExclusiveModeOverride No documentation. MECaptureAudioSessionServerShutdown MECaptureAudioSessionServerShutdown No documentation. MESinkV2Anchor MESinkV2Anchor No documentation. METrustUnknown METrustUnknown No documentation. MEPolicyChanged MEPolicyChanged No documentation. MEContentProtectionMessage MEContentProtectionMessage No documentation. MEPolicySet MEPolicySet No documentation. METrustV1Anchor METrustV1Anchor No documentation. MEWMDRMLicenseBackupCompleted MEWMDRMLicenseBackupCompleted No documentation. MEWMDRMLicenseBackupProgress MEWMDRMLicenseBackupProgress No documentation. MEWMDRMLicenseRestoreCompleted MEWMDRMLicenseRestoreCompleted No documentation. MEWMDRMLicenseRestoreProgress MEWMDRMLicenseRestoreProgress No documentation. MEWMDRMLicenseAcquisitionCompleted MEWMDRMLicenseAcquisitionCompleted No documentation. MEWMDRMIndividualizationCompleted MEWMDRMIndividualizationCompleted No documentation. MEWMDRMIndividualizationProgress MEWMDRMIndividualizationProgress No documentation. MEWMDRMProximityCompleted MEWMDRMProximityCompleted No documentation. MEWMDRMLicenseStoreCleaned MEWMDRMLicenseStoreCleaned No documentation. MEWMDRMRevocationDownloadCompleted MEWMDRMRevocationDownloadCompleted No documentation. MEWMDRMV1Anchor MEWMDRMV1Anchor No documentation. METransformUnknown METransformUnknown No documentation. METransformNeedInput METransformNeedInput No documentation. METransformHaveOutput METransformHaveOutput No documentation. METransformDrainComplete METransformDrainComplete No documentation. METransformMarker METransformMarker No documentation. MEByteStreamCharacteristicsChanged MEByteStreamCharacteristicsChanged No documentation. MEVideoCaptureDeviceRemoved MEVideoCaptureDeviceRemoved No documentation. MEVideoCaptureDevicePreempted MEVideoCaptureDevicePreempted No documentation. MEReservedMax MEReservedMax

Applies to: desktop apps only

Defines messages for an enhanced video renderer (EVR) presenter. This enumeration is used with the IMFVideoPresenter::ProcessMessage method.

ms698964 _MFT_DRAIN_TYPE _MFT_DRAIN_TYPE
No documentation. MFT_DRAIN_PRODUCE_TAILS MFT_DRAIN_PRODUCE_TAILS No documentation. MFT_DRAIN_NO_TAILS MFT_DRAIN_NO_TAILS

Applies to: desktop apps only

Defines flags for the method.

The values in this enumeration are not bit flags, so they should not be combined with a bitwise OR. Also, the caller should test for these flags with the equality operator, not a bitwise AND:

// Correct. if (Buffer.dwStatus == ) { ... } // Incorrect. if ((Buffer.dwStatus & ) != 0) { ... }
ms702281 _MFT_INPUT_DATA_BUFFER_FLAGS _MFT_INPUT_DATA_BUFFER_FLAGS
No documentation. MFT_INPUT_DATA_BUFFER_PLACEHOLDER MFT_INPUT_DATA_BUFFER_PLACEHOLDER None. None None

Applies to: desktop apps | Metro style apps

Describes the current status of a call to the IMFShutdown::Shutdown method.

ms701630 _MFT_INPUT_STATUS_FLAGS _MFT_INPUT_STATUS_FLAGS
No documentation. MFT_INPUT_STATUS_ACCEPT_DATA MFT_INPUT_STATUS_ACCEPT_DATA None. None None

Applies to: desktop apps only

Defines flags for the method.

The values in this enumeration are not bit flags, so they should not be combined with a bitwise OR. Also, the caller should test for these flags with the equality operator, not a bitwise AND:

// Correct. if (Buffer.dwStatus == ) { ... } // Incorrect. if ((Buffer.dwStatus & ) != 0) { ... }
ms702281 _MFT_INPUT_STREAM_INFO_FLAGS _MFT_INPUT_STREAM_INFO_FLAGS
No documentation. MFT_INPUT_STREAM_WHOLE_SAMPLES MFT_INPUT_STREAM_WHOLE_SAMPLES No documentation. MFT_INPUT_STREAM_SINGLE_SAMPLE_PER_BUFFER MFT_INPUT_STREAM_SINGLE_SAMPLE_PER_BUFFER No documentation. MFT_INPUT_STREAM_FIXED_SAMPLE_SIZE MFT_INPUT_STREAM_FIXED_SAMPLE_SIZE No documentation. MFT_INPUT_STREAM_HOLDS_BUFFERS MFT_INPUT_STREAM_HOLDS_BUFFERS No documentation. MFT_INPUT_STREAM_DOES_NOT_ADDREF MFT_INPUT_STREAM_DOES_NOT_ADDREF No documentation. MFT_INPUT_STREAM_REMOVABLE MFT_INPUT_STREAM_REMOVABLE No documentation. MFT_INPUT_STREAM_OPTIONAL MFT_INPUT_STREAM_OPTIONAL No documentation. MFT_INPUT_STREAM_PROCESSES_IN_PLACE MFT_INPUT_STREAM_PROCESSES_IN_PLACE None. None None

Applies to: desktop apps only

Defines flags for the method.

The values in this enumeration are not bit flags, so they should not be combined with a bitwise OR. Also, the caller should test for these flags with the equality operator, not a bitwise AND:

// Correct. if (Buffer.dwStatus == ) { ... } // Incorrect. if ((Buffer.dwStatus & ) != 0) { ... }
ms702281 _MFT_OUTPUT_DATA_BUFFER_FLAGS _MFT_OUTPUT_DATA_BUFFER_FLAGS
No documentation. MFT_OUTPUT_DATA_BUFFER_INCOMPLETE MFT_OUTPUT_DATA_BUFFER_INCOMPLETE No documentation. MFT_OUTPUT_DATA_BUFFER_FORMAT_CHANGE MFT_OUTPUT_DATA_BUFFER_FORMAT_CHANGE No documentation. MFT_OUTPUT_DATA_BUFFER_STREAM_END MFT_OUTPUT_DATA_BUFFER_STREAM_END No documentation. MFT_OUTPUT_DATA_BUFFER_NO_SAMPLE MFT_OUTPUT_DATA_BUFFER_NO_SAMPLE None. None None

Applies to: desktop apps only

Indicates whether a Media Foundation transform (MFT) can produce output data.

ms701553 _MFT_OUTPUT_STATUS_FLAGS _MFT_OUTPUT_STATUS_FLAGS

There is a sample available for at least one output stream. To retrieve the available output samples, call .

ms701553 MFT_OUTPUT_STATUS_SAMPLE_READY MFT_OUTPUT_STATUS_SAMPLE_READY
None. None None

Applies to: desktop apps only

Describes an output stream on a Media Foundation transform (MFT).

Before the client sets the media types on the MFT, the only flag guaranteed to be accurate is the flag. For all other flags, the client should first set the media type on every non-optional stream.

The and flags define different behaviors for how the MFT can discard output data.

  • MFT_OUTPUT_STREAM_DISCARDABLE: The MFT discards output data only if the client calls ProcessOutput with the flag. The MFT never discards data when the client calls ProcessInput.

  • MFT_OUTPUT_STREAM_LAZY_READ: If the client continues to call ProcessInput without collecting the output from this stream, the MFT eventually discards the output. If all output streams have the flag, the MFT never refuses more input data.

If neither of these flags is set, the MFT never discards output data.

ms705618 _MFT_OUTPUT_STREAM_INFO_FLAGS _MFT_OUTPUT_STREAM_INFO_FLAGS

Each media sample ( interface) of output data from the MFT contains complete, unbroken units of data. The definition of a unit of data depends on the media type: For uncompressed video, a video frame; for compressed data, a compressed packet; for uncompressed audio, a single audio frame.

For uncompressed audio formats, this flag is always implied. (It is valid to set the flag, but not required.) An uncompressed audio frame should never span more than one media sample.

ms705618 MFT_OUTPUT_STREAM_WHOLE_SAMPLES MFT_OUTPUT_STREAM_WHOLE_SAMPLES

Each output sample contains exactly one unit of data, as defined for the flag.

If this flag is present, the flag must also be present.

An MFT that outputs uncompressed audio should not set this flag. For efficiency, it should output more than one audio frame at a time.

ms705618 MFT_OUTPUT_STREAM_SINGLE_SAMPLE_PER_BUFFER MFT_OUTPUT_STREAM_SINGLE_SAMPLE_PER_BUFFER

All output samples are the same size.

ms705618 MFT_OUTPUT_STREAM_FIXED_SAMPLE_SIZE MFT_OUTPUT_STREAM_FIXED_SAMPLE_SIZE

The MFT can discard the output data from this output stream, if requested by the client. To discard the output, set the flag in the method.

ms705618 MFT_OUTPUT_STREAM_DISCARDABLE MFT_OUTPUT_STREAM_DISCARDABLE

This output stream is optional. The client can deselect the stream by not setting a media type or by setting a null media type. When an optional stream is deselected, it does not produce any output data.

ms705618 MFT_OUTPUT_STREAM_OPTIONAL MFT_OUTPUT_STREAM_OPTIONAL

The MFT provides the output samples for this stream, either by allocating them internally or by operating directly on the input samples. The MFT cannot use output samples provided by the client for this stream.

If this flag is not set, the MFT must set cbSize to a nonzero value in the structure, so that the client can allocate the correct buffer size. For more information, see . This flag cannot be combined with the flag.

ms705618 MFT_OUTPUT_STREAM_PROVIDES_SAMPLES MFT_OUTPUT_STREAM_PROVIDES_SAMPLES

The MFT can either provide output samples for this stream or it can use samples that the client allocates. This flag cannot be combined with the flag.

If the MFT does not set this flag or the flag, the client must allocate the samples for this output stream. The MFT will not provide its own samples.

ms705618 MFT_OUTPUT_STREAM_CAN_PROVIDE_SAMPLES MFT_OUTPUT_STREAM_CAN_PROVIDE_SAMPLES

The MFT does not require the client to process the output for this stream. If the client continues to send input data without getting the output from this stream, the MFT simply discards the previous input.

ms705618 MFT_OUTPUT_STREAM_LAZY_READ MFT_OUTPUT_STREAM_LAZY_READ

The MFT might remove this output stream during streaming. This flag typically applies to demultiplexers, where the input data contains multiple streams that can start and stop during streaming. For more information, see .

ms705618 MFT_OUTPUT_STREAM_REMOVABLE MFT_OUTPUT_STREAM_REMOVABLE
None. None None

Applies to: desktop apps only

Defines flags for the method.

The values in this enumeration are not bit flags, so they should not be combined with a bitwise OR. Also, the caller should test for these flags with the equality operator, not a bitwise AND:

// Correct. if (Buffer.dwStatus == ) { ... } // Incorrect. if ((Buffer.dwStatus & ) != 0) { ... }
ms702281 _MFT_PROCESS_OUTPUT_FLAGS _MFT_PROCESS_OUTPUT_FLAGS
No documentation. MFT_PROCESS_OUTPUT_DISCARD_WHEN_NO_BUFFER MFT_PROCESS_OUTPUT_DISCARD_WHEN_NO_BUFFER No documentation. MFT_PROCESS_OUTPUT_REGENERATE_LAST_OUTPUT MFT_PROCESS_OUTPUT_REGENERATE_LAST_OUTPUT None. None None

Applies to: desktop apps only

Indicates the status of a call to .

If the MFT sets this flag, the ProcessOutput method returns MF_E_TRANSFORM_STREAM_CHANGE and no output data is produced. The client should respond as follows:

  1. Call to get the new number of streams.

  2. Call to get the new stream identifiers.

  3. Call and to set the media types on the new streams.

Until these steps are completed, all further calls to ProcessOutput return MF_E_TRANSFORM_STREAM_CHANGE.

ms699875 _MFT_PROCESS_OUTPUT_STATUS _MFT_PROCESS_OUTPUT_STATUS
No documentation. MFT_PROCESS_OUTPUT_STATUS_NEW_STREAMS MFT_PROCESS_OUTPUT_STATUS_NEW_STREAMS

Applies to: desktop apps only

Defines flags for the setting or testing the media type on a Media Foundation transform (MFT).

ms704051 _MFT_SET_TYPE_FLAGS _MFT_SET_TYPE_FLAGS

Test the proposed media type, but do not set it.

ms704051 MFT_SET_TYPE_TEST_ONLY MFT_SET_TYPE_TEST_ONLY
None. None None

Applies to: desktop apps only

Specifies how the credential manager should obtain user credentials.

The application implements the credential manager, which must expose the IMFNetCredentialManager interface. If the REQUIRE_PROMPT flag is set, the credential manager should prompt the user for his or her name and password.

The credential cache object sets the REQUIRE_PROMPT flag if the cache does not yet contain valid credentials. It also sets this flag if the credentials will be sent as plain text, unless the credential manager previously set the MFNET_CREDENTIAL_ALLOW_CLEAR_TEXT option. (See IMFNetCredentialCache::SetUserOptions.)

ms700813 MFNominalRange MFNominalRange

The credential manager should prompt the user to provide the credentials.

ms700813 MFNominalRange_Unknown MFNominalRange_Unknown

Note??Requires Windows?7 or later.

The credentials are saved to persistent storage. This flag acts as a hint for the application's UI. If the application prompts the user for credentials, the UI can indicate that the credentials have already been saved.

ms700813 MFNominalRange_Normal MFNominalRange_Normal
No documentation. MFNominalRange_Wide MFNominalRange_Wide No documentation. MFNominalRange_0_255 MFNominalRange_0_255 No documentation. MFNominalRange_16_235 MFNominalRange_16_235 No documentation. MFNominalRange_48_208 MFNominalRange_48_208 No documentation. MFNominalRange_64_127 MFNominalRange_64_127 No documentation. MFNominalRange_Last MFNominalRange_Last No documentation. MFNominalRange_ForceDWORD MFNominalRange_ForceDWORD

Applies to: desktop apps | Metro style apps

Defines the object types that are created by the source resolver.

ms704771 MF_OBJECT_TYPE MF_OBJECT_TYPE

Media source. You can query the object for the IMFMediaSource interface.

ms704771 MF_OBJECT_MEDIASOURCE MF_OBJECT_MEDIASOURCE

Byte stream. You can query the object for the interface.

ms704771 MF_OBJECT_BYTESTREAM MF_OBJECT_BYTESTREAM

Invalid type.

ms704771 MF_OBJECT_INVALID MF_OBJECT_INVALID
No documentation. __MIDL___MIDL_itf_mfidl_0000_0001_0001 __MIDL___MIDL_itf_mfidl_0000_0001_0001 No documentation. MF_RESOLUTION_MEDIASOURCE MF_RESOLUTION_MEDIASOURCE No documentation. MF_RESOLUTION_BYTESTREAM MF_RESOLUTION_BYTESTREAM No documentation. MF_RESOLUTION_CONTENT_DOES_NOT_HAVE_TO_MATCH_EXTENSION_OR_MIME_TYPE MF_RESOLUTION_CONTENT_DOES_NOT_HAVE_TO_MATCH_EXTENSION_OR_MIME_TYPE No documentation. MF_RESOLUTION_KEEP_BYTE_STREAM_ALIVE_ON_FAIL MF_RESOLUTION_KEEP_BYTE_STREAM_ALIVE_ON_FAIL No documentation. MF_RESOLUTION_DISABLE_LOCAL_PLUGINS MF_RESOLUTION_DISABLE_LOCAL_PLUGINS No documentation. MF_RESOLUTION_PLUGIN_CONTROL_POLICY_APPROVED_ONLY MF_RESOLUTION_PLUGIN_CONTROL_POLICY_APPROVED_ONLY No documentation. MF_RESOLUTION_PLUGIN_CONTROL_POLICY_WEB_ONLY MF_RESOLUTION_PLUGIN_CONTROL_POLICY_WEB_ONLY No documentation. MF_RESOLUTION_READ MF_RESOLUTION_READ No documentation. MF_RESOLUTION_WRITE MF_RESOLUTION_WRITE None. None None

Applies to: desktop apps | Metro style apps

Sends a message to the Media Foundation transform (MFT).

Before calling this method, set the media types on all input and output streams.

The MFT might ignore certain message types. If so, the method returns . An error code indicates that the transform handles this message type but was unable to process the message in this instance.

If MFT_UNIQUE_METHOD_NAMES is defined before including mftransform.h, this method is renamed MFTProcessMessage. See Creating Hybrid DMO/MFT Objects.

ms701863 MFT_MESSAGE_TYPE MFT_MESSAGE_TYPE

The message to send, specified as a member of the enumeration.

ms701863 MFT_MESSAGE_COMMAND_FLUSH MFT_MESSAGE_COMMAND_FLUSH

Message parameter. The meaning of this parameter depends on the message type.

ms701863 MFT_MESSAGE_COMMAND_DRAIN MFT_MESSAGE_COMMAND_DRAIN
No documentation. MFT_MESSAGE_SET_D3D_MANAGER MFT_MESSAGE_SET_D3D_MANAGER No documentation. MFT_MESSAGE_DROP_SAMPLES MFT_MESSAGE_DROP_SAMPLES No documentation. MFT_MESSAGE_COMMAND_TICK MFT_MESSAGE_COMMAND_TICK No documentation. MFT_MESSAGE_NOTIFY_BEGIN_STREAMING MFT_MESSAGE_NOTIFY_BEGIN_STREAMING No documentation. MFT_MESSAGE_NOTIFY_END_STREAMING MFT_MESSAGE_NOTIFY_END_STREAMING No documentation. MFT_MESSAGE_NOTIFY_END_OF_STREAM MFT_MESSAGE_NOTIFY_END_OF_STREAM No documentation. MFT_MESSAGE_NOTIFY_START_OF_STREAM MFT_MESSAGE_NOTIFY_START_OF_STREAM No documentation. MFT_MESSAGE_COMMAND_MARKER MFT_MESSAGE_COMMAND_MARKER

Applies to: desktop apps only

Specifies how the credential manager should obtain user credentials.

The application implements the credential manager, which must expose the IMFNetCredentialManager interface. If the REQUIRE_PROMPT flag is set, the credential manager should prompt the user for his or her name and password.

The credential cache object sets the REQUIRE_PROMPT flag if the cache does not yet contain valid credentials. It also sets this flag if the credentials will be sent as plain text, unless the credential manager previously set the MFNET_CREDENTIAL_ALLOW_CLEAR_TEXT option. (See IMFNetCredentialCache::SetUserOptions.)

ms700813 MFVideo3DFormat MFVideo3DFormat

The credential manager should prompt the user to provide the credentials.

ms700813 MFVideo3DSampleFormat_BaseView MFVideo3DSampleFormat_BaseView

Note??Requires Windows?7 or later.

The credentials are saved to persistent storage. This flag acts as a hint for the application's UI. If the application prompts the user for credentials, the UI can indicate that the credentials have already been saved.

ms700813 MFVideo3DSampleFormat_MultiView MFVideo3DSampleFormat_MultiView
No documentation. MFVideo3DSampleFormat_Packed_LeftRight MFVideo3DSampleFormat_Packed_LeftRight No documentation. MFVideo3DSampleFormat_Packed_TopBottom MFVideo3DSampleFormat_Packed_TopBottom

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps only

The video processor MFT is a Microsoft Media Foundation transform (MFT) that performs colorspace conversion, video resizing, deinterlacing, frame rate conversion, rotation, cropping, spatial left and right view unpacking, and mirroring.

An instance of the video processor can be created in one of the following ways:

  • By calling MFTEnumEx. The video processor is registered under the MFT_CATEGORY_VIDEO_PROCESSOR category.
  • By calling the COM function CoCreateInstance passing it the CLSID CLSID_VideoProcessorMFT.

The video processor supports GPU-accelerated video processing, using Microsoft Direct3D?11. For more information, see .

Stereoscopic Video

The video processor supports the view unpacking operation on 3D video frames:

If the input frame contains two views packed in the same frame, the video processor can split the views into separate buffers, or extract the base view and discard the second view. To enable view unpacking, set the attribute to or .

hh162913 MF3DVideoOutputType MF3DVideoOutputType
No documentation. MF3DVideoOutputType_BaseView MF3DVideoOutputType_BaseView No documentation. MF3DVideoOutputType_Stereo MF3DVideoOutputType_Stereo

Applies to: desktop apps only

Specifies how the credential manager should obtain user credentials.

The application implements the credential manager, which must expose the IMFNetCredentialManager interface. If the REQUIRE_PROMPT flag is set, the credential manager should prompt the user for his or her name and password.

The credential cache object sets the REQUIRE_PROMPT flag if the cache does not yet contain valid credentials. It also sets this flag if the credentials will be sent as plain text, unless the credential manager previously set the MFNET_CREDENTIAL_ALLOW_CLEAR_TEXT option. (See IMFNetCredentialCache::SetUserOptions.)

ms700813 MFVideo3DSampleFormat MFVideo3DSampleFormat

The credential manager should prompt the user to provide the credentials.

ms700813 MFSampleExtension_3DVideo_MultiView MFSampleExtension_3DVideo_MultiView

Note??Requires Windows?7 or later.

The credentials are saved to persistent storage. This flag acts as a hint for the application's UI. If the application prompts the user for credentials, the UI can indicate that the credentials have already been saved.

ms700813 MFSampleExtension_3DVideo_Packed MFSampleExtension_3DVideo_Packed

Applies to: desktop apps only

Contains flags that define the chroma encoding scheme for Y'Cb'Cr' data.

These flags are used with the attribute.

For more information about these values, see the remarks for the DXVA2_VideoChromaSubSampling enumeration, which is the DirectX Video Acceleration (DXVA) equivalent of this enumeration.

ms698989 MFVideoChromaSubsampling MFVideoChromaSubsampling

Unknown encoding scheme.

ms698989 MFVideoChromaSubsampling_Unknown MFVideoChromaSubsampling_Unknown

Chroma should be reconstructed as if the underlying video was progressive content, rather than skipping fields or applying chroma filtering to minimize artifacts from reconstructing 4:2:0 interlaced chroma.

ms698989 MFVideoChromaSubsampling_ProgressiveChroma MFVideoChromaSubsampling_ProgressiveChroma

Chroma samples are aligned horizontally with the luma samples, or with multiples of the luma samples. If this flag is not set, chroma samples are located 1/2 pixel to the right of the corresponding luma sample.

ms698989 MFVideoChromaSubsampling_Horizontally_Cosited MFVideoChromaSubsampling_Horizontally_Cosited

Chroma samples are aligned vertically with the luma samples, or with multiples of the luma samples. If this flag is not set, chroma samples are located 1/2 pixel down from the corresponding luma sample.

ms698989 MFVideoChromaSubsampling_Vertically_Cosited MFVideoChromaSubsampling_Vertically_Cosited

The U and V planes are aligned vertically. If this flag is not set, the chroma planes are assumed to be out of phase by 1/2 chroma sample, alternating between a line of U followed by a line of V.

ms698989 MFVideoChromaSubsampling_Vertically_AlignedChromaPlanes MFVideoChromaSubsampling_Vertically_AlignedChromaPlanes

Specifies the chroma encoding scheme for MPEG-2 video. Chroma samples are aligned horizontally with the luma samples, but are not aligned vertically. The U and V planes are aligned vertically.

ms698989 MFVideoChromaSubsampling_MPEG2 MFVideoChromaSubsampling_MPEG2

Specifies the chroma encoding scheme for MPEG-1 video.

ms698989 MFVideoChromaSubsampling_MPEG1 MFVideoChromaSubsampling_MPEG1

Specifies the chroma encoding scheme for PAL DV video.

ms698989 MFVideoChromaSubsampling_DV_PAL MFVideoChromaSubsampling_DV_PAL

Chroma samples are aligned vertically and horizontally with the luma samples. YUV formats such as 4:4:4, 4:2:2, and 4:1:1 are always cosited in both directions and should use this flag.

ms698989 MFVideoChromaSubsampling_Cosited MFVideoChromaSubsampling_Cosited

Reserved.

ms698989 MFVideoChromaSubsampling_Last MFVideoChromaSubsampling_Last

Reserved. This member forces the enumeration type to compile as a DWORD value.

ms698989 MFVideoChromaSubsampling_ForceDWORD MFVideoChromaSubsampling_ForceDWORD

Applies to: desktop apps only

Specifies how the credential manager should obtain user credentials.

The application implements the credential manager, which must expose the IMFNetCredentialManager interface. If the REQUIRE_PROMPT flag is set, the credential manager should prompt the user for his or her name and password.

The credential cache object sets the REQUIRE_PROMPT flag if the cache does not yet contain valid credentials. It also sets this flag if the credentials will be sent as plain text, unless the credential manager previously set the MFNET_CREDENTIAL_ALLOW_CLEAR_TEXT option. (See IMFNetCredentialCache::SetUserOptions.)

ms700813 MFVideoDRMFlags MFVideoDRMFlags

The credential manager should prompt the user to provide the credentials.

ms700813 MFVideoDRMFlag_None MFVideoDRMFlag_None

Note??Requires Windows?7 or later.

The credentials are saved to persistent storage. This flag acts as a hint for the application's UI. If the application prompts the user for credentials, the UI can indicate that the credentials have already been saved.

ms700813 MFVideoDRMFlag_AnalogProtected MFVideoDRMFlag_AnalogProtected
No documentation. MFVideoDRMFlag_DigitallyProtected MFVideoDRMFlag_DigitallyProtected

Applies to: desktop apps only

Specifies how a video stream is interlaced.

In the descriptions that follow, upper field refers to the field that contains the leading half scan line. Lower field refers to the field that contains the first full scan line.

Scan lines in the lower field are 0.5 scan line lower than those in the upper field. In NTSC television, a frame consists of a lower field followed by an upper field. In PAL television, a frame consists of an upper field followed by a lower field.

The upper field is also called the even field, the top field, or field 2. The lower field is also called the odd field, the bottom field, or field 1.

If the interlace mode is or , each sample contains a single field, so each buffer contains only half the number of field lines given in the media type.

ms694269 MFVideoInterlaceMode MFVideoInterlaceMode

The type of interlacing is not known.

ms694269 MFVideoInterlace_Unknown MFVideoInterlace_Unknown

Progressive frames.

ms694269 MFVideoInterlace_Progressive MFVideoInterlace_Progressive

Interlaced frames. Each frame contains two fields. The field lines are interleaved, with the upper field appearing on the first line.

ms694269 MFVideoInterlace_FieldInterleavedUpperFirst MFVideoInterlace_FieldInterleavedUpperFirst

Interlaced frames. Each frame contains two fields. The field lines are interleaved, with the lower field appearing on the first line.

ms694269 MFVideoInterlace_FieldInterleavedLowerFirst MFVideoInterlace_FieldInterleavedLowerFirst

Interlaced frames. Each frame contains one field, with the upper field appearing first.

ms694269 MFVideoInterlace_FieldSingleUpper MFVideoInterlace_FieldSingleUpper

Interlaced frames. Each frame contains one field, with the lower field appearing first.

ms694269 MFVideoInterlace_FieldSingleLower MFVideoInterlace_FieldSingleLower

The stream contains a mix of interlaced and progressive modes.

ms694269 MFVideoInterlace_MixedInterlaceOrProgressive MFVideoInterlace_MixedInterlaceOrProgressive

Reserved.

ms694269 MFVideoInterlace_Last MFVideoInterlace_Last

Reserved. This member forces the enumeration type to compile as a DWORD value.

ms694269 MFVideoInterlace_ForceDWORD MFVideoInterlace_ForceDWORD

Applies to: desktop apps only

Specifies how the credential manager should obtain user credentials.

The application implements the credential manager, which must expose the IMFNetCredentialManager interface. If the REQUIRE_PROMPT flag is set, the credential manager should prompt the user for his or her name and password.

The credential cache object sets the REQUIRE_PROMPT flag if the cache does not yet contain valid credentials. It also sets this flag if the credentials will be sent as plain text, unless the credential manager previously set the MFNET_CREDENTIAL_ALLOW_CLEAR_TEXT option. (See IMFNetCredentialCache::SetUserOptions.)

ms700813 MFVideoLighting MFVideoLighting

The credential manager should prompt the user to provide the credentials.

ms700813 MFVideoLighting_Unknown MFVideoLighting_Unknown

Note??Requires Windows?7 or later.

The credentials are saved to persistent storage. This flag acts as a hint for the application's UI. If the application prompts the user for credentials, the UI can indicate that the credentials have already been saved.

ms700813 MFVideoLighting_bright MFVideoLighting_bright
No documentation. MFVideoLighting_office MFVideoLighting_office No documentation. MFVideoLighting_dim MFVideoLighting_dim No documentation. MFVideoLighting_dark MFVideoLighting_dark No documentation. MFVideoLighting_Last MFVideoLighting_Last No documentation. MFVideoLighting_ForceDWORD MFVideoLighting_ForceDWORD

Applies to: desktop apps only

Specifies how the credential manager should obtain user credentials.

The application implements the credential manager, which must expose the IMFNetCredentialManager interface. If the REQUIRE_PROMPT flag is set, the credential manager should prompt the user for his or her name and password.

The credential cache object sets the REQUIRE_PROMPT flag if the cache does not yet contain valid credentials. It also sets this flag if the credentials will be sent as plain text, unless the credential manager previously set the MFNET_CREDENTIAL_ALLOW_CLEAR_TEXT option. (See IMFNetCredentialCache::SetUserOptions.)

ms700813 MFVideoPadFlags MFVideoPadFlags

The credential manager should prompt the user to provide the credentials.

ms700813 MFVideoPadFlag_PAD_TO_None MFVideoPadFlag_PAD_TO_None

Note??Requires Windows?7 or later.

The credentials are saved to persistent storage. This flag acts as a hint for the application's UI. If the application prompts the user for credentials, the UI can indicate that the credentials have already been saved.

ms700813 MFVideoPadFlag_PAD_TO_4x3 MFVideoPadFlag_PAD_TO_4x3
No documentation. MFVideoPadFlag_PAD_TO_16x9 MFVideoPadFlag_PAD_TO_16x9

Applies to: desktop apps only

Specifies how the credential manager should obtain user credentials.

The application implements the credential manager, which must expose the IMFNetCredentialManager interface. If the REQUIRE_PROMPT flag is set, the credential manager should prompt the user for his or her name and password.

The credential cache object sets the REQUIRE_PROMPT flag if the cache does not yet contain valid credentials. It also sets this flag if the credentials will be sent as plain text, unless the credential manager previously set the MFNET_CREDENTIAL_ALLOW_CLEAR_TEXT option. (See IMFNetCredentialCache::SetUserOptions.)

ms700813 MFVideoPrimaries MFVideoPrimaries

The credential manager should prompt the user to provide the credentials.

ms700813 MFVideoPrimaries_Unknown MFVideoPrimaries_Unknown

Note??Requires Windows?7 or later.

The credentials are saved to persistent storage. This flag acts as a hint for the application's UI. If the application prompts the user for credentials, the UI can indicate that the credentials have already been saved.

ms700813 MFVideoPrimaries_reserved MFVideoPrimaries_reserved
No documentation. MFVideoPrimaries_BT709 MFVideoPrimaries_BT709 No documentation. MFVideoPrimaries_BT470_2_SysM MFVideoPrimaries_BT470_2_SysM No documentation. MFVideoPrimaries_BT470_2_SysBG MFVideoPrimaries_BT470_2_SysBG No documentation. MFVideoPrimaries_SMPTE170M MFVideoPrimaries_SMPTE170M No documentation. MFVideoPrimaries_SMPTE240M MFVideoPrimaries_SMPTE240M No documentation. MFVideoPrimaries_EBU3213 MFVideoPrimaries_EBU3213 No documentation. MFVideoPrimaries_SMPTE_C MFVideoPrimaries_SMPTE_C No documentation. MFVideoPrimaries_Last MFVideoPrimaries_Last No documentation. MFVideoPrimaries_ForceDWORD MFVideoPrimaries_ForceDWORD

Applies to: desktop apps only

Specifies how the credential manager should obtain user credentials.

The application implements the credential manager, which must expose the IMFNetCredentialManager interface. If the REQUIRE_PROMPT flag is set, the credential manager should prompt the user for his or her name and password.

The credential cache object sets the REQUIRE_PROMPT flag if the cache does not yet contain valid credentials. It also sets this flag if the credentials will be sent as plain text, unless the credential manager previously set the MFNET_CREDENTIAL_ALLOW_CLEAR_TEXT option. (See IMFNetCredentialCache::SetUserOptions.)

ms700813 MFVideoRotationFormat MFVideoRotationFormat

The credential manager should prompt the user to provide the credentials.

ms700813 MFVideoRotationFormat_0 MFVideoRotationFormat_0

Note??Requires Windows?7 or later.

The credentials are saved to persistent storage. This flag acts as a hint for the application's UI. If the application prompts the user for credentials, the UI can indicate that the credentials have already been saved.

ms700813 MFVideoRotationFormat_90 MFVideoRotationFormat_90
No documentation. MFVideoRotationFormat_180 MFVideoRotationFormat_180 No documentation. MFVideoRotationFormat_270 MFVideoRotationFormat_270

Applies to: desktop apps only

Specifies how the credential manager should obtain user credentials.

The application implements the credential manager, which must expose the IMFNetCredentialManager interface. If the REQUIRE_PROMPT flag is set, the credential manager should prompt the user for his or her name and password.

The credential cache object sets the REQUIRE_PROMPT flag if the cache does not yet contain valid credentials. It also sets this flag if the credentials will be sent as plain text, unless the credential manager previously set the MFNET_CREDENTIAL_ALLOW_CLEAR_TEXT option. (See IMFNetCredentialCache::SetUserOptions.)

ms700813 MFVideoSrcContentHintFlags MFVideoSrcContentHintFlags

The credential manager should prompt the user to provide the credentials.

ms700813 MFVideoSrcContentHintFlag_None MFVideoSrcContentHintFlag_None

Note??Requires Windows?7 or later.

The credentials are saved to persistent storage. This flag acts as a hint for the application's UI. If the application prompts the user for credentials, the UI can indicate that the credentials have already been saved.

ms700813 MFVideoSrcContentHintFlag_16x9 MFVideoSrcContentHintFlag_16x9
No documentation. MFVideoSrcContentHintFlag_235_1 MFVideoSrcContentHintFlag_235_1

Applies to: desktop apps only

Specifies how the credential manager should obtain user credentials.

The application implements the credential manager, which must expose the IMFNetCredentialManager interface. If the REQUIRE_PROMPT flag is set, the credential manager should prompt the user for his or her name and password.

The credential cache object sets the REQUIRE_PROMPT flag if the cache does not yet contain valid credentials. It also sets this flag if the credentials will be sent as plain text, unless the credential manager previously set the MFNET_CREDENTIAL_ALLOW_CLEAR_TEXT option. (See IMFNetCredentialCache::SetUserOptions.)

ms700813 MFVideoTransferFunction MFVideoTransferFunction

The credential manager should prompt the user to provide the credentials.

ms700813 MFVideoTransFunc_Unknown MFVideoTransFunc_Unknown

Note??Requires Windows?7 or later.

The credentials are saved to persistent storage. This flag acts as a hint for the application's UI. If the application prompts the user for credentials, the UI can indicate that the credentials have already been saved.

ms700813 MFVideoTransFunc_10 MFVideoTransFunc_10
No documentation. MFVideoTransFunc_18 MFVideoTransFunc_18 No documentation. MFVideoTransFunc_20 MFVideoTransFunc_20 No documentation. MFVideoTransFunc_22 MFVideoTransFunc_22 No documentation. MFVideoTransFunc_709 MFVideoTransFunc_709 No documentation. MFVideoTransFunc_240M MFVideoTransFunc_240M No documentation. MFVideoTransFunc_sRGB MFVideoTransFunc_sRGB No documentation. MFVideoTransFunc_28 MFVideoTransFunc_28 No documentation. MFVideoTransFunc_Log_100 MFVideoTransFunc_Log_100 No documentation. MFVideoTransFunc_Log_316 MFVideoTransFunc_Log_316 No documentation. MFVideoTransFunc_709_sym MFVideoTransFunc_709_sym No documentation. MFVideoTransFunc_Last MFVideoTransFunc_Last No documentation. MFVideoTransFunc_ForceDWORD MFVideoTransFunc_ForceDWORD

Applies to: desktop apps only

Specifies how the credential manager should obtain user credentials.

The application implements the credential manager, which must expose the IMFNetCredentialManager interface. If the REQUIRE_PROMPT flag is set, the credential manager should prompt the user for his or her name and password.

The credential cache object sets the REQUIRE_PROMPT flag if the cache does not yet contain valid credentials. It also sets this flag if the credentials will be sent as plain text, unless the credential manager previously set the MFNET_CREDENTIAL_ALLOW_CLEAR_TEXT option. (See IMFNetCredentialCache::SetUserOptions.)

ms700813 MFVideoTransferMatrix MFVideoTransferMatrix

The credential manager should prompt the user to provide the credentials.

ms700813 MFVideoTransferMatrix_Unknown MFVideoTransferMatrix_Unknown

Note??Requires Windows?7 or later.

The credentials are saved to persistent storage. This flag acts as a hint for the application's UI. If the application prompts the user for credentials, the UI can indicate that the credentials have already been saved.

ms700813 MFVideoTransferMatrix_BT709 MFVideoTransferMatrix_BT709
No documentation. MFVideoTransferMatrix_BT601 MFVideoTransferMatrix_BT601 No documentation. MFVideoTransferMatrix_SMPTE240M MFVideoTransferMatrix_SMPTE240M No documentation. MFVideoTransferMatrix_Last MFVideoTransferMatrix_Last No documentation. MFVideoTransferMatrix_ForceDWORD MFVideoTransferMatrix_ForceDWORD Functions Functions Functions Functions Constant Msp1. MFAudioFormat_MSP1 Constant Drm. MFAudioFormat_DRM Constant Dts. MFAudioFormat_DTS Constant Float. MFAudioFormat_Float Constant WMAudioV9. MFAudioFormat_WMAudioV9 Constant DolbyDDPlus. MFAudioFormat_Dolby_DDPlus Constant Pcm. MFAudioFormat_PCM Constant Base. MFAudioFormat_Base Constant Mp3. MFAudioFormat_MP3 Constant DolbyAc3. MFAudioFormat_Dolby_AC3 Constant Wmaspdif. MFAudioFormat_WMASPDIF Constant WMAudioLossless. MFAudioFormat_WMAudio_Lossless Constant Mpeg. MFAudioFormat_MPEG Constant DolbyAc3Spdif. MFAudioFormat_Dolby_AC3_SPDIF Constant Aac. MFAudioFormat_AAC Constant Adts. MFAudioFormat_ADTS Constant WMAudioV8. MFAudioFormat_WMAudioV8 Functions Functions Constant ContentType. MF_BYTESTREAM_CONTENT_TYPE Constant Duration. MF_BYTESTREAM_DURATION Constant EffectiveUrl. MF_BYTESTREAM_EFFECTIVE_URL Constant IfoFileUri. MF_BYTESTREAM_IFO_FILE_URI Constant LastModifiedTime. MF_BYTESTREAM_LAST_MODIFIED_TIME Constant OriginName. MF_BYTESTREAM_ORIGIN_NAME Functions Functions Functions Functions Functions Constant TransformContext. MF_EVENT_MFT_CONTEXT Constant TransformInputStreamId. MF_EVENT_MFT_INPUT_STREAM_ID Functions Constant SaRequiredSampleCount. MF_SA_REQUIRED_SAMPLE_COUNT Functions Functions Functions Constant LocalPluginControlPolicy. MF_LOCAL_PLUGIN_CONTROL_POLICY Functions Constant AudioCategory. MF_MEDIA_ENGINE_AUDIO_CATEGORY Constant AudioEndpointRole. MF_MEDIA_ENGINE_AUDIO_ENDPOINT_ROLE Constant Callback. MF_MEDIA_ENGINE_CALLBACK Constant ContentProtectionFlags. MF_MEDIA_ENGINE_CONTENT_PROTECTION_FLAGS Constant ContentProtectionManager. MF_MEDIA_ENGINE_CONTENT_PROTECTION_MANAGER Constant DxgiManager. MF_MEDIA_ENGINE_DXGI_MANAGER Constant Extension. MF_MEDIA_ENGINE_EXTENSION Constant VideoOutputFormat. MF_MEDIA_ENGINE_VIDEO_OUTPUT_FORMAT Functions Constant Version. MF_VERSION

Applies to: desktop apps | Metro style apps

Initializes Microsoft Media Foundation.

Version number. Use the value , defined in mfapi.h.

This parameter is optional when using C++ but required in C. The value must be one of the following flags:

ValueMeaning
MFSTARTUP_NOSOCKET

Do not initialize the sockets library.

MFSTARTUP_LITE

Equivalent to MFSTARTUP_NOSOCKET.

MFSTARTUP_FULL

Initialize the entire Media Foundation platform. This is the default value when dwFlags is not specified.

?

The function returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

MF_E_BAD_STARTUP_VERSION

The Version parameter requires a newer version of Media Foundation than the version that is running.

MF_E_DISABLED_IN_SAFEMODE

The Media Foundation platform is disabled because the system was started in "Safe Mode" (fail-safe boot).

?

An application must call this function before using Media Foundation. Before your application quits, call once for every previous call to .

Do not call or from work queue threads. For more information about work queues, see Work Queues.

This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms702238 HRESULT MFStartup([In] unsigned int Version,[In] unsigned int dwFlags) MFStartup

Applies to: desktop apps | Metro style apps

Creates a media buffer that wraps an existing media buffer. The new media buffer points to the same memory as the original media buffer, or to an offset from the start of the memory.

A reference to the interface of the original media buffer.

The start of the new buffer, as an offset in bytes from the start of the original buffer.

The size of the new buffer. The value of cbOffset + dwLength must be less than or equal to the size of valid data the original buffer. (The size of the valid data is returned by the method.)

Receives a reference to the interface. The caller must release the interface.

The function returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The function succeeded.

E_INVALIDARG

The requested offset or the requested length is not valid.

?

The maximum size of the wrapper buffer is limited to the size of the valid data in the original buffer. This might be less than the allocated size of the original buffer. To set the size of the valid data, call .

This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
aa370450 HRESULT MFCreateMediaBufferWrapper([In] IMFMediaBuffer* pBuffer,[In] unsigned int cbOffset,[In] unsigned int dwLength,[Out] IMFMediaBuffer** ppBuffer) MFCreateMediaBufferWrapper

Applies to: desktop apps | Metro style apps

Retrieves the size of the buffer needed for the function.

No documentation. No documentation.

The function returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The function succeeded.

?

Use this function to find the size of the array that is needed for the function.

ms697064 HRESULT MFGetAttributesAsBlobSize([In] IMFAttributes* pAttributes,[Out] unsigned int* pcbBufSize) MFGetAttributesAsBlobSize

Applies to: desktop apps | Metro style apps

Unlocks the Media Foundation platform after it was locked by a call to the function.

The function returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The function succeeded.

?

The application must call once for every call to .

This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms703879 HRESULT MFUnlockPlatform() MFUnlockPlatform

Applies to: desktop apps | Metro style apps

Creates an empty media sample.

Receives a reference to the interface of the media sample. The caller must release the interface.

The function returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The function succeeded.

?

Initially the sample does not contain any media buffers.

This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms702276 HRESULT MFCreateSample([Out] IMFSample** ppIMFSample) MFCreateSample

Applies to: desktop apps | Metro style apps

Creates an empty attribute store.

Receives a reference to the interface. The caller must release the interface.

The initial number of elements allocated for the attribute store. The attribute store grows as needed.

If this function succeeds, it returns . Otherwise, it returns an error code.

Attributes are used throughout Microsoft Media Foundation to configure objects, describe media formats, query object properties, and other purposes. For more information, see Attributes in Media Foundation.

For a complete list of all the defined attribute GUIDs in Media Foundation, see Media Foundation Attributes.

ms701878 HRESULT MFCreateAttributes([Out, Fast] IMFAttributes** ppMFAttributes,[In] unsigned int cInitialSize) MFCreateAttributes

Applies to: desktop apps | Metro style apps

Creates an asynchronous result object. Use this function if you are implementing an asynchronous method.

Pointer to the object stored in the asynchronous result. This reference is returned by the method. This parameter can be null.

Pointer to the interface. This interface is implemented by the caller of the asynchronous method.

Pointer to the interface of a state object. This value is provided by the caller of the asynchronous method. This parameter can be null.

Receives a reference to the interface. The caller must release the interface.

The function returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The function succeeded.

?

To invoke the callback specified in pCallback, call the function.

ms698952 HRESULT MFCreateAsyncResult([In] IUnknown* punkObject,[In] IMFAsyncCallback* pCallback,[In] IUnknown* punkState,[Out] IMFAsyncResult** ppAsyncResult) MFCreateAsyncResult

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Creates an object that allocates video samples that are compatible with Microsoft DirectX Graphics Infrastructure (DXGI).

The identifier of the interface to retrieve. Specify one of the following values.

ValueMeaning
IID_IUnknown

Retrieve an reference.

IID_IMFVideoSampleAllocator

Retrieve an IMFVideoSampleAllocator reference.

IID_IMFVideoSampleAllocatorEx

Retrieve an IMFVideoSampleAllocatorEx reference.

IID_IMFVideoSampleAllocatorCallback

Retrieve an IMFVideoSampleAllocatorCallback reference.

?

Receives a reference to the requested interface. The caller must release the interface.

If this function succeeds, it returns . Otherwise, it returns an error code.

This function creates an allocator for DXGI video surfaces. The buffers created by this allocator expose the interface. To create an allocator for Microsoft Direct3D?9 video surfaces, call MFCreateVideoSampleAllocator.

hh162763 HRESULT MFCreateVideoSampleAllocatorEx([In] const GUID& riid,[Out] void** ppSampleAllocator) MFCreateVideoSampleAllocatorEx

Applies to: desktop apps | Metro style apps

Invokes a callback method to complete an asynchronous operation.

Pointer to the interface. To create this object, call .

The function returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The function succeeded.

MF_E_INVALID_WORKQUEUE

Invalid work queue. For more information, see .

MF_E_SHUTDOWN

The function was called to shut down the Media Foundation platform.

?

If you are implementing an asynchronous method, use this function to invoke the caller's method.

The callback is invoked from a Media Foundation work queue. For more information, see Writing an Asynchronous Method.

The function shuts down the work queue threads, so the callback is not guaranteed to be invoked after is called.

ms695400 HRESULT MFInvokeCallback([In] IMFAsyncResult* pAsyncResult) MFInvokeCallback

Applies to: desktop apps | Metro style apps

Shuts down the Microsoft Media Foundation platform. Call this function once for every call to . Do not call this function from work queue threads.

If this function succeeds, it returns . Otherwise, it returns an error code.

This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms694273 HRESULT MFShutdown() MFShutdown

Applies to: desktop apps | Metro style apps

Retrieves the size of the buffer needed for the function.

No documentation. No documentation. No documentation.

The function returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The function succeeded.

?

Use this function to find the size of the array that is needed for the function.

ms697064 HRESULT MFGetAttributesAsBlob([In] IMFAttributes* pAttributes,[Out, Buffer] unsigned char* pBuf,[In] unsigned int cbBufSize) MFGetAttributesAsBlob

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Unlocks the shared Microsoft DirectX Graphics Infrastructure (DXGI) Device Manager.

No documentation. No documentation.

If this function succeeds, it returns . Otherwise, it returns an error code.

Call this function after a successful call to the function.

hh162800 HRESULT MFLockDXGIDeviceManager([Out, Optional] unsigned int* pResetToken,[Out] IMFDXGIDeviceManager** ppManager) MFLockDXGIDeviceManager

Applies to: desktop apps | Metro style apps

Allocates system memory with a specified byte alignment and creates a media buffer to manage the memory.

Size of the buffer, in bytes.

Specifies the memory alignment for the buffer. Use one of the following constants.

ValueMeaning
MF_1_BYTE_ALIGNMENT
0x00000000

Align to 1 bytes.

MF_2_BYTE_ALIGNMENT
0x00000001

Align to 2 bytes.

MF_4_BYTE_ALIGNMENT
0x00000003

Align to 4 bytes.

MF_8_BYTE_ALIGNMENT
0x00000007

Align to 8 bytes.

MF_16_BYTE_ALIGNMENT
0x0000000F

Align to 16 bytes.

MF_32_BYTE_ALIGNMENT
0x0000001F

Align to 32 bytes.

MF_64_BYTE_ALIGNMENT
0x0000003F

Align to 64 bytes.

MF_128_BYTE_ALIGNMENT
0x0000007F

Align to 128 bytes.

MF_256_BYTE_ALIGNMENT
0x000000FF

Align to 256 bytes.

MF_512_BYTE_ALIGNMENT
0x000001FF

Align to 512 bytes.

?

Receives a reference to the interface of the media buffer. The caller must release the interface.

The function returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The function succeeded.

?

When the media buffer object is destroyed, it releases the allocated memory.

bb970523 HRESULT MFCreateAlignedMemoryBuffer([In] unsigned int cbMaxLength,[In] unsigned int cbAligment,[Out] IMFMediaBuffer** ppBuffer) MFCreateAlignedMemoryBuffer

Applies to: desktop apps only

Creates an empty collection object.

Receives a reference to the collection object's interface. The caller must release the interface.

The function returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

?

ms698852 HRESULT MFCreateCollection([Out] IMFCollection** ppIMFCollection) MFCreateCollection

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Creates an instance of the Microsoft DirectX Graphics Infrastructure (DXGI) Device Manager.

Receives a token that identifies this instance of the DXGI Device Manager. Use this token when calling .

Receives a reference to the interface. The caller must release the interface.

If this function succeeds, it returns . Otherwise, it returns an error code.

hh162750 HRESULT MFCreateDXGIDeviceManager([Out] unsigned int* resetToken,[Out, Fast] IMFDXGIDeviceManager** ppDeviceManager) MFCreateDXGIDeviceManager

Applies to: desktop apps | Metro style apps

Blocks the function.

The function returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The function succeeded.

?

This function prevents work queue threads from being shut down when is called. Use this function to ensure that asynchronous operations complete gracefully before the platform shuts down.

This function holds a lock on the Media Foundation platform. To unlock the platform, call . The application must call once for every call to .

The function blocks until the platform is unlocked, or until a fixed wait period has elapsed. (The wait period is a few seconds.) To avoid memory leaks, the application should unlock the platform before the wait period ends. For example, cancel any asynchronous operations that are waiting to complete and are holding a lock on the platform.

The default implementation of the interface automatically locks the Media Foundation platform when the result object is created. Releasing the interface unlocks the platform. Therefore, in most cases your application does not need to lock the platform directly. For more information, see Work Queues.

This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms693588 HRESULT MFLockPlatform() MFLockPlatform

Applies to: desktop apps | Metro style apps

Allocates system memory and creates a media buffer to manage it.

Size of the buffer, in bytes.

Receives a reference to the interface of the media buffer. The caller must release the interface.

The function returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The function succeeded.

E_OUTOFMEMORY

Insufficient memory.

?

The function allocates a buffer with a 1-byte memory alignment. To allocate a buffer that is aligned to a larger memory boundary, call .

When the media buffer object is destroyed, it releases the allocated memory.

This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms695212 HRESULT MFCreateMemoryBuffer([In] unsigned int cbMaxLength,[Out] IMFMediaBuffer** ppBuffer) MFCreateMemoryBuffer

Applies to: desktop apps | Metro style apps

Initializes Microsoft Media Foundation.

Version number. Use the value , defined in mfapi.h.

This parameter is optional when using C++ but required in C. The value must be one of the following flags:

ValueMeaning
MFSTARTUP_NOSOCKET

Do not initialize the sockets library.

MFSTARTUP_LITE

Equivalent to MFSTARTUP_NOSOCKET.

MFSTARTUP_FULL

Initialize the entire Media Foundation platform. This is the default value when dwFlags is not specified.

?

No documentation. No documentation. No documentation.

The function returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

MF_E_BAD_STARTUP_VERSION

The Version parameter requires a newer version of Media Foundation than the version that is running.

MF_E_DISABLED_IN_SAFEMODE

The Media Foundation platform is disabled because the system was started in "Safe Mode" (fail-safe boot).

?

An application must call this function before using Media Foundation. Before your application quits, call once for every previous call to .

Do not call or from work queue threads. For more information about work queues, see Work Queues.

This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms702238 HRESULT MFCreateMediaBufferFromMediaType([In] IMFMediaType* pMediaType,[In] longlong llDuration,[In] unsigned int dwMinLength,[In] unsigned int dwMinAlignment,[Out] IMFMediaBuffer** ppBuffer) MFCreateMediaBufferFromMediaType

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Creates a system-memory buffer object to hold 2D image data.

Width of the image, in pixels.

Height of the image, in pixels.

A FOURCC code or D3DFORMAT value that specifies the video format. If you have a video subtype , you can use the first DWORD of the subtype.

If TRUE, the buffer's method copies the buffer into a bottom-up format. The bottom-up format is compatible with GDI for uncompressed RGB images. If this parameter is , the ContiguousCopyTo method copies the buffer into a top-down format, which is compatible with DirectX.

For more information about top-down versus bottom-up images, see Image Stride.

Receives a reference to the interface.

This function can return one of these values.

Return codeDescription

Success.

MF_E_INVALIDMEDIATYPE

Unrecognized video format.

?

The returned buffer object also exposes the interface.

hh162746 HRESULT MFCreate2DMediaBuffer([In] unsigned int dwWidth,[In] unsigned int dwHeight,[In] unsigned int dwFourCC,[In] BOOL fBottomUp,[Out] IMFMediaBuffer** ppBuffer) MFCreate2DMediaBuffer

Applies to: desktop apps | Metro style apps

Calculates ((a * b) + d) / c, where each term is a 64-bit signed value.

A multiplier.

Another multiplier.

The divisor.

The rounding factor.

Returns the result of the calculation. If numeric overflow occurs, the function returns _I64_MAX (positive overflow) or LLONG_MIN (negative overflow). If Mfplat.dll cannot be loaded, the function returns _I64_MAX.

Note??A previous version of this topic described the parameters incorrectly. The divisor is c and the rounding factor is d.

dd388510 longlong MFllMulDiv([In] longlong a,[In] longlong b,[In] longlong c,[In] longlong d) MFllMulDiv

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Creates a media buffer to manage a Microsoft DirectX Graphics Infrastructure (DXGI) surface.

Identifies the type of DXGI surface. This value must be IID_ID3D11Texture2D.

A reference to the interface of the DXGI surface.

The zero-based index of a subresource of the surface. The media buffer object is associated with this subresource.

If TRUE, the buffer's method copies the buffer into a bottom-up format. The bottom-up format is compatible with GDI for uncompressed RGB images. If this parameter is , the ContiguousCopyTo method copies the buffer into a top-down format, which is compatible with Direct3D.

For more information about top-down versus bottom-up images, see Image Stride.

Receives a reference to the interface. The caller must release the buffer.

If this function succeeds, it returns . Otherwise, it returns an error code.

The returned buffer object supports the following interfaces:

hh162751 HRESULT MFCreateDXGISurfaceBuffer([In] const GUID& riid,[In] IUnknown* punkSurface,[In] unsigned int uSubresourceIndex,[In] BOOL fBottomUpWhenLinear,[Out] IMFMediaBuffer** ppBuffer) MFCreateDXGISurfaceBuffer

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Unlocks the shared Microsoft DirectX Graphics Infrastructure (DXGI) Device Manager.

If this function succeeds, it returns . Otherwise, it returns an error code.

Call this function after a successful call to the function.

hh162800 HRESULT MFUnlockDXGIDeviceManager() MFUnlockDXGIDeviceManager

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Creates a Microsoft Media Foundation byte stream that wraps an IRandomAccessStream object.

No documentation. No documentation.

If this function succeeds, it returns . Otherwise, it returns an error code.

hh162754 HRESULT MFCreateMFByteStreamOnStreamEx([In] IUnknown* punkStream,[Out, Fast] IMFByteStream** ppByteStream) MFCreateMFByteStreamOnStreamEx

Applies to: desktop apps | Metro style apps

Initializes Microsoft Media Foundation.

Version number. Use the value , defined in mfapi.h.

This parameter is optional when using C++ but required in C. The value must be one of the following flags:

ValueMeaning
MFSTARTUP_NOSOCKET

Do not initialize the sockets library.

MFSTARTUP_LITE

Equivalent to MFSTARTUP_NOSOCKET.

MFSTARTUP_FULL

Initialize the entire Media Foundation platform. This is the default value when dwFlags is not specified.

?

No documentation.

The function returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

MF_E_BAD_STARTUP_VERSION

The Version parameter requires a newer version of Media Foundation than the version that is running.

MF_E_DISABLED_IN_SAFEMODE

The Media Foundation platform is disabled because the system was started in "Safe Mode" (fail-safe boot).

?

An application must call this function before using Media Foundation. Before your application quits, call once for every previous call to .

Do not call or from work queue threads. For more information about work queues, see Work Queues.

This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms702238 HRESULT MFCreateStreamOnMFByteStreamEx([In] IMFByteStream* pByteStream,[In] const GUID& riid,[Out] void** ppv) MFCreateStreamOnMFByteStreamEx
No documentation. No documentation. No documentation. No documentation. No documentation. HRESULT MFCreatePropertiesFromMediaType([In] IMFMediaType* pMediaType,[In] const GUID& riid,[Out] void** ppv) MFCreatePropertiesFromMediaType No documentation. No documentation. No documentation. No documentation. HRESULT MFCreateMediaTypeFromProperties([In] IUnknown* punkStream,[Out] IMFMediaType** ppMediaType) MFCreateMediaTypeFromProperties

Applies to: desktop apps | Metro style apps

Loads attributes from a stream into an attribute store.

Pointer to the interface of the attribute store.

Bitwise OR of zero or more flags from the enumeration.

Pointer to the interface of the stream from which to read the attributes.

The function returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

?

Use this function to deserialize an attribute store that was serialized with the function.

If dwOptions contains the flag, the function deserializes references from the stream, as follows:

  • If the reference exposes the IMFObjectReferenceStream interface (through QueryInterface), the function calls IMFObjectReferenceStream::LoadReference to deserialize each reference.

  • Otherwise, the function calls CoUnmarshalInterface to deserialize a proxy for the object.

This function deletes any attributes that were previously stored in pAttr.

ms703162 HRESULT MFDeserializeAttributesFromStream([In] IMFAttributes* pAttr,[In] unsigned int dwOptions,[In] IStream* pStm) MFDeserializeAttributesFromStream

Applies to: desktop apps | Metro style apps

Loads attributes from a stream into an attribute store.

Pointer to the interface of the attribute store.

Bitwise OR of zero or more flags from the enumeration.

Pointer to the interface of the stream from which to read the attributes.

The function returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

?

Use this function to deserialize an attribute store that was serialized with the function.

If dwOptions contains the flag, the function deserializes references from the stream, as follows:

  • If the reference exposes the IMFObjectReferenceStream interface (through QueryInterface), the function calls IMFObjectReferenceStream::LoadReference to deserialize each reference.

  • Otherwise, the function calls CoUnmarshalInterface to deserialize a proxy for the object.

This function deletes any attributes that were previously stored in pAttr.

ms703162 HRESULT MFSerializeAttributesToStream([In] IMFAttributes* pAttr,[In] unsigned int dwOptions,[In] IStream* pStm) MFSerializeAttributesToStream
Functions Functions Constant AacAudioProfileLevelIndication. MF_MT_AAC_AUDIO_PROFILE_LEVEL_INDICATION Constant AacPayloadType. MF_MT_AAC_PAYLOAD_TYPE Constant AllSamplesIndependent. MF_MT_ALL_SAMPLES_INDEPENDENT Constant AudioAvgBytesPerSecond. MF_MT_AUDIO_AVG_BYTES_PER_SECOND Constant AudioBitsPerSample. MF_MT_AUDIO_BITS_PER_SAMPLE Constant AudioBlockAlignment. MF_MT_AUDIO_BLOCK_ALIGNMENT Constant AudioChannelMask. MF_MT_AUDIO_CHANNEL_MASK Constant AudioFloatSamplesPerSecond. MF_MT_AUDIO_FLOAT_SAMPLES_PER_SECOND Constant AudioFolddownMatrix. MF_MT_AUDIO_FOLDDOWN_MATRIX Constant AudioNumChannels. MF_MT_AUDIO_NUM_CHANNELS Constant AudioPreferWaveformatex. MF_MT_AUDIO_PREFER_WAVEFORMATEX Constant AudioSamplesPerBlock. MF_MT_AUDIO_SAMPLES_PER_BLOCK Constant AudioSamplesPerSecond. MF_MT_AUDIO_SAMPLES_PER_SECOND Constant AudioValidBitsPerSample. MF_MT_AUDIO_VALID_BITS_PER_SAMPLE Constant AudioWmadrcAvgref. MF_MT_AUDIO_WMADRC_AVGREF Constant AudioWmadrcAvgtarget. MF_MT_AUDIO_WMADRC_AVGTARGET Constant AudioWmadrcPeakref. MF_MT_AUDIO_WMADRC_PEAKREF Constant AudioWmadrcPeaktarget. MF_MT_AUDIO_WMADRC_PEAKTARGET Constant AvgBitErrorRate. MF_MT_AVG_BIT_ERROR_RATE Constant AvgBitrate. MF_MT_AVG_BITRATE Constant Compressed. MF_MT_COMPRESSED Constant DefaultStride. MF_MT_DEFAULT_STRIDE Constant DrmFlags. MF_MT_DRM_FLAGS Constant DvAauxCtrlPack0. MF_MT_DV_AAUX_CTRL_PACK_0 Constant DvAauxCtrlPack1. MF_MT_DV_AAUX_CTRL_PACK_1 Constant DvAauxSrcPack0. MF_MT_DV_AAUX_SRC_PACK_0 Constant DvAauxSrcPack1. MF_MT_DV_AAUX_SRC_PACK_1 Constant DvVauxCtrlPack. MF_MT_DV_VAUX_CTRL_PACK Constant DvVauxSrcPack. MF_MT_DV_VAUX_SRC_PACK Constant FixedSizeSamples. MF_MT_FIXED_SIZE_SAMPLES Constant FrameRate. MF_MT_FRAME_RATE Constant FrameRateRangeMax. MF_MT_FRAME_RATE_RANGE_MAX Constant FrameRateRangeMin. MF_MT_FRAME_RATE_RANGE_MIN Constant FrameSize. MF_MT_FRAME_SIZE Constant GeometricAperture. MF_MT_GEOMETRIC_APERTURE Constant H264Capabilities. MF_MT_H264_CAPABILITIES Constant H264MaxCodecConfigDelay. MF_MT_H264_MAX_CODEC_CONFIG_DELAY Constant H264MaxMbPerSec. MF_MT_H264_MAX_MB_PER_SEC Constant H264RateControlModes. MF_MT_H264_RATE_CONTROL_MODES Constant H264SimulcastSupport. MF_MT_H264_SIMULCAST_SUPPORT Constant H264SupportedRateControlModes. MF_MT_H264_SUPPORTED_RATE_CONTROL_MODES Constant H264SupportedSliceModes. MF_MT_H264_SUPPORTED_SLICE_MODES Constant H264SupportedSyncFrameTypes. MF_MT_H264_SUPPORTED_SYNC_FRAME_TYPES Constant H264SupportedUsages. MF_MT_H264_SUPPORTED_USAGES Constant H264SvcCapabilities. MF_MT_H264_SVC_CAPABILITIES Constant H264Usage. MF_MT_H264_USAGE Constant ImageLossTolerant. MF_MT_IMAGE_LOSS_TOLERANT Constant InterlaceMode. MF_MT_INTERLACE_MODE Constant MajorType. MF_MT_MAJOR_TYPE Constant MaxKeyframeSpacing. MF_MT_MAX_KEYFRAME_SPACING Constant MinimumDisplayAperture. MF_MT_MINIMUM_DISPLAY_APERTURE Constant MpegSequenceHeader. MF_MT_MPEG_SEQUENCE_HEADER Constant MpegStartTimeCode. MF_MT_MPEG_START_TIME_CODE Constant Mpeg2ContentPACKET. MF_MT_MPEG2_CONTENT_PACKET Constant Mpeg2Flags. MF_MT_MPEG2_FLAGS Constant Mpeg2Level. MF_MT_MPEG2_LEVEL Constant Mpeg2Profile. MF_MT_MPEG2_PROFILE Constant Mpeg2STANDARD. MF_MT_MPEG2_STANDARD Constant Mpeg2TIMECODE. MF_MT_MPEG2_TIMECODE Constant Mpeg4CurrentSampleEntry. MF_MT_MPEG4_CURRENT_SAMPLE_ENTRY Constant Mpeg4SampleDescription. MF_MT_MPEG4_SAMPLE_DESCRIPTION Constant PadControlFlags. MF_MT_PAD_CONTROL_FLAGS Constant Palette. MF_MT_PALETTE Constant PanScanAperture. MF_MT_PAN_SCAN_APERTURE Constant PanScanEnabled. MF_MT_PAN_SCAN_ENABLED Constant PixelAspectRatio. MF_MT_PIXEL_ASPECT_RATIO Constant SampleSize. MF_MT_SAMPLE_SIZE Constant SourceContentHint. MF_MT_SOURCE_CONTENT_HINT Constant Subtype. MF_MT_SUBTYPE Constant TimestampCanBeDTS. MF_MT_TIMESTAMP_CAN_BE_DTS Constant TransferFunction. MF_MT_TRANSFER_FUNCTION Constant UserData. MF_MT_USER_DATA Constant Video3d. MF_MT_VIDEO_3D Constant Video3dFirstIsLeft. MF_MT_VIDEO_3D_FIRST_IS_LEFT Constant Video3dFormat. MF_MT_VIDEO_3D_FORMAT Constant Video3dLeftIsBase. MF_MT_VIDEO_3D_LEFT_IS_BASE Constant Video3dNumViews. MF_MT_VIDEO_3D_NUM_VIEWS Constant VideoChromaSiting. MF_MT_VIDEO_CHROMA_SITING Constant VideoLighting. MF_MT_VIDEO_LIGHTING Constant VideoNominalRange. MF_MT_VIDEO_NOMINAL_RANGE Constant VideoPrimaries. MF_MT_VIDEO_PRIMARIES Constant VideoRotation. MF_MT_VIDEO_ROTATION Constant WrappedType. MF_MT_WRAPPED_TYPE Constant YuvMatrix. MF_MT_YUV_MATRIX Functions Constant Protected. MFMediaType_Protected Constant Audio. MFMediaType_Audio Constant FileTransfer. MFMediaType_FileTransfer Constant Image. MFMediaType_Image Constant Html. MFMediaType_HTML Constant Binary. MFMediaType_Binary Constant Video. MFMediaType_Video Constant Sami. MFMediaType_SAMI Constant Default. MFMediaType_Default Constant Script. MFMediaType_Script Constant Stream. MFMediaType_Stream Functions Functions Functions Functions Constant GraphicsTransferAesEncryption. MFPROTECTION_GRAPHICS_TRANSFER_AES_ENCRYPTION Functions Constant Video3D. MFSampleExtension_3DVideo Constant Video3DSampleFormat. MFSampleExtension_3DVideo_SampleFormat Constant BottomFieldFirst. MFSampleExtension_BottomFieldFirst Constant CleanPoint. MFSampleExtension_CleanPoint Constant DecodeTimestamp. MFSampleExtension_DecodeTimestamp Constant DerivedFromTopField. MFSampleExtension_DerivedFromTopField Constant Discontinuity. MFSampleExtension_Discontinuity Constant FrameCorruption. MFSampleExtension_FrameCorruption Constant Interlaced. MFSampleExtension_Interlaced Constant PacketCrossOffsets. MFSampleExtension_PacketCrossOffsets Constant RepeatFirstField. MFSampleExtension_RepeatFirstField Constant SingleField. MFSampleExtension_SingleField Constant Token. MFSampleExtension_Token Constant VideoEncodePictureType. MFSampleExtension_VideoEncodePictureType Constant VideoEncodeQP. MFSampleExtension_VideoEncodeQP Functions Functions Constant LowLatency. MF_LOW_LATENCY Functions Functions Functions Constant DXVAMode. MF_TOPOLOGY_DXVA_MODE Constant NoMarkinMarkout. MF_TOPOLOGY_NO_MARKIN_MARKOUT Constant PlaybackMaxDimensions. MF_TOPOLOGY_PLAYBACK_MAX_DIMS Constant ProjectStart. MF_TOPOLOGY_PROJECTSTART Constant ProjectStop. MF_TOPOLOGY_PROJECTSTOP Constant StaticPlaybackOptimizations. MF_TOPOLOGY_STATIC_PLAYBACK_OPTIMIZATIONS Functions Functions Functions Constant DisableLocallyRegisteredPlugins. MF_DISABLE_LOCALLY_REGISTERED_PLUGINS Constant Enable3dvideoOutput. MF_ENABLE_3DVIDEO_OUTPUT Constant BuffersPerSample. MF_SA_BUFFERS_PER_SAMPLE Constant D3DAware. MF_SA_D3D_AWARE Constant D3D11Aware. MF_SA_D3D11_AWARE Constant D3D11Bindflags. MF_SA_D3D11_BINDFLAGS Constant D3D11Usage. MF_SA_D3D11_USAGE Constant TransformAsync. MF_TRANSFORM_ASYNC Constant TransformAsyncUnlock. MF_TRANSFORM_ASYNC_UNLOCK Constant TransformCategoryAttribute. MF_TRANSFORM_CATEGORY_Attribute Constant TransformFlagsAttribute. MF_TRANSFORM_FLAGS_Attribute Constant MftCodecMeritAttribute. MFT_CODEC_MERIT_Attribute Constant MftConnectedStreamAttribute. MFT_CONNECTED_STREAM_ATTRIBUTE Constant MftConnectedToHwStream. MFT_CONNECTED_TO_HW_STREAM Constant MftDecoderExposeOutputTypesInNativeOrder. MFT_DECODER_EXPOSE_OUTPUT_TYPES_IN_NATIVE_ORDER Constant MftDecoderFinalVideoResolutionHint. MFT_DECODER_FINAL_VIDEO_RESOLUTION_HINT Constant MftEnumHardwareUrlAttribute. MFT_ENUM_HARDWARE_URL_Attribute Constant MftEnumHardwareVendorIdAttribute. MFT_ENUM_HARDWARE_VENDOR_ID_Attribute Constant MftEnumTranscodeOnlyAttribute. MFT_ENUM_TRANSCODE_ONLY_ATTRIBUTE Constant MftFieldofuseUnlockAttribute. MFT_FIELDOFUSE_UNLOCK_Attribute Constant MftFriendlyNameAttribute. MFT_FRIENDLY_NAME_Attribute Constant MftHwTimestampWithQpcAttribute. MFT_HW_TIMESTAMP_WITH_QPC_Attribute Constant MftInputTypesAttributes. MFT_INPUT_TYPES_Attributes Constant MftOutputTypesAttributes. MFT_OUTPUT_TYPES_Attributes Constant MftPreferredEncoderProfile. MFT_PREFERRED_ENCODER_PROFILE Constant MftPreferredOutputtypeAttribute. MFT_PREFERRED_OUTPUTTYPE_Attribute Constant MftProcessLocalAttribute. MFT_PROCESS_LOCAL_Attribute Constant MftSupport3dvideo. MFT_SUPPORT_3DVIDEO Constant MftSupportDynamicFormatChange. MFT_SUPPORT_DYNAMIC_FORMAT_CHANGE Constant MftTransformClsidAttribute. MFT_TRANSFORM_CLSID_Attribute

Applies to: desktop apps | Metro style apps

Creates the object associated with this activation object.

Some Microsoft Media Foundation objects must be shut down before being released. If so, the caller is responsible for shutting down the object that is returned in ppv. To shut down the object, do one of the following:

  • Call on the activation object, or
  • Call the object-specific shutdown method. This method will depend on the type of object. Possibilities include:
    • Media sources: Call IMFMediaSource::Shutdown.
    • Media sinks: Call IMFMediaSink::Shutdown.
    • Any object that supports the IMFShutdown interface: Call IMFShutdown::Shutdown.

The method is generic to all object types. If the object does not require a shutdown method, ShutdownObject succeeds and has no effect. If you do not know the specific shutdown method for the object (or do not know the object type), call .

After the first call to ActivateObject, subsequent calls return a reference to the same instance, until the client calls either ShutdownObject or .

ms694292 IMFActivate IMFActivate

Applies to: desktop apps | Metro style apps

Provides a generic way to store key/value pairs on an object. The keys are s, and the values can be any of the following data types: UINT32, UINT64, double, , wide-character string, byte array, or reference. The standard implementation of this interface holds a thread lock while values are added, deleted, or retrieved.

For a list of predefined attribute s, see Media Foundation Attributes. Each attribute has an expected data type. The various "set" methods in do not validate the type against the attribute . It is the application's responsibility to set the correct type for the attribute.

To create an empty attribute store, call .

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms704598 IMFAttributes IMFAttributes
Initializes a new instance of the class. The native pointer. Performs an explicit conversion from to . (This method is a shortcut to ) The native pointer. The result of the conversion. No documentation. No documentation. No documentation. No documentation. HRESULT IMFAttributes::GetItem([In] const GUID& guidKey,[In] void* pValue) IMFAttributes::GetItem No documentation. No documentation. No documentation. HRESULT IMFAttributes::GetItemType([In] const GUID& guidKey,[Out] MF_ATTRIBUTE_TYPE* pType) IMFAttributes::GetItemType No documentation. No documentation. No documentation. No documentation. HRESULT IMFAttributes::CompareItem([In] const GUID& guidKey,[In] const PROPVARIANT& Value,[Out] BOOL* pbResult) IMFAttributes::CompareItem

Applies to: desktop apps | Metro style apps

Compares the attributes on this object with the attributes on another object.

Pointer to the interface of the object to compare with this object.

Member of the enumeration, specifying the type of comparison to make.

Receives a Boolean value. The value is TRUE if the two sets of attributes match in the way specified by the MatchType parameter. Otherwise, the value is .

If pThis is the object whose Compare method is called, and pTheirs is the object passed in as the pTheirs parameter, the following comparisons are defined by MatchType.

Match typeReturns TRUE if and only if
For every attribute in pThis, an attribute with the same key and value exists in pTheirs.
For every attribute in pTheirs, an attribute with the same key and value exists in pThis.
The key/value pairs are identical in both objects.
Take the intersection of the keys in pThis and the keys in pTheirs. The values associated with those keys are identical in both pThis and pTheirs.
Take the object with the smallest number of attributes. For every attribute in that object, an attribute with the same key and value exists in the other object.

?

The pTheirs and pbResult parameters must not be null. If either parameter is null, an access violation occurs.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
bb970349 HRESULT IMFAttributes::Compare([In, Optional] IMFAttributes* pTheirs,[In] MF_ATTRIBUTES_MATCH_TYPE MatchType,[Out] BOOL* pbResult) IMFAttributes::Compare

Applies to: desktop apps | Metro style apps

Retrieves a UINT32 value associated with a key.

that identifies which value to retrieve. The attribute type must be .

Receives a UINT32 value. If the key is found and the data type is UINT32, the method copies the value into this parameter. Otherwise, the original value of this parameter is not changed.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
bb970551 HRESULT IMFAttributes::GetUINT32([In] const GUID& guidKey,[Out] unsigned int* punValue) IMFAttributes::GetUINT32

Applies to: desktop apps | Metro style apps

Retrieves a UINT64 value associated with a key.

that identifies which value to retrieve. The attribute type must be .

Receives a UINT64 value. If the key is found and the data type is UINT64, the method copies the value into this parameter. Otherwise, the original value of this parameter is not changed.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
bb970569 HRESULT IMFAttributes::GetUINT64([In] const GUID& guidKey,[Out] unsigned longlong* punValue) IMFAttributes::GetUINT64

Applies to: desktop apps | Metro style apps

Retrieves a double value associated with a key.

that identifies which value to retrieve. The attribute type must be .

Receives a double value. If the key is found and the data type is double, the method copies the value into this parameter. Otherwise, the original value of this parameter is not changed.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
bb970418 HRESULT IMFAttributes::GetDouble([In] const GUID& guidKey,[Out] double* pfValue) IMFAttributes::GetDouble

Applies to: desktop apps | Metro style apps

Retrieves a value associated with a key.

that identifies which value to retrieve. The attribute type must be .

Receives a value. If the key is found and the data type is , the method copies the value into this parameter. Otherwise, the original value of this parameter is not changed.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
bb970426 HRESULT IMFAttributes::GetGUID([In] const GUID& guidKey,[Out] GUID* pguidValue) IMFAttributes::GetGUID

Applies to: desktop apps | Metro style apps

Retrieves the length of a string value associated with a key.

that identifies which value to retrieve. The attribute type must be .

If the key is found and the value is a string type, this parameter receives the number of characters in the string, not including the terminating null character. To get the string value, call .

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
bb970425 HRESULT IMFAttributes::GetStringLength([In] const GUID& guidKey,[Out] unsigned int* pcchLength) IMFAttributes::GetStringLength

Applies to: desktop apps | Metro style apps

Retrieves a wide-character string associated with a key.

that identifies which value to retrieve. The attribute type must be .

Pointer to a wide-character array allocated by the caller. The array must be large enough to hold the string, including the terminating null character. If the key is found and the value is a string type, the method copies the string into this buffer. To find the length of the string, call .

The size of the pwszValue array, in characters. This value includes the terminating null character.

Receives the number of characters in the string, excluding the terminating null character. This parameter can be null.

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

E_OUTOFMEMORY

The length of the string is too large to fit in a UINT32 value.

E_NOT_SUFFICIENT_BUFFER

The buffer is not large enough to hold the string.

MF_E_ATTRIBUTENOTFOUND

The specified key was not found.

MF_E_INVALIDTYPE

The attribute value is not a string.

?

You can also use the method, which allocates the buffer to hold the string.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
bb970430 HRESULT IMFAttributes::GetString([In] const GUID& guidKey,[Out, Buffer] wchar_t* pwszValue,[In] unsigned int cchBufSize,[InOut, Optional] unsigned int* pcchLength) IMFAttributes::GetString

Applies to: desktop apps | Metro style apps

Gets a wide-character string associated with a key. This method allocates the memory for the string.

A that identifies which value to retrieve. The attribute type must be .

If the key is found and the value is a string type, this parameter receives a copy of the string. The caller must free the memory for the string by calling CoTaskMemFree.

Receives the number of characters in the string, excluding the terminating null character. This parameter must not be null.

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

MF_E_ATTRIBUTENOTFOUND

The specified key was not found.

MF_E_INVALIDTYPE

The attribute value is not a string.

?

To copy a string value into a caller-allocated buffer, use the method.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.

Note??An earlier version of the documentation incorrectly stated that the pcchLength parameter can be null. Setting this parameter to null might succeed in some cases, but is not guaranteed. The caller must pass a non-null reference for this parameter.

bb970406 HRESULT IMFAttributes::GetAllocatedString([In] const GUID& guidKey,[Out, Buffer, Optional] wchar_t** ppwszValue,[Out] unsigned int* pcchLength) IMFAttributes::GetAllocatedString

Applies to: desktop apps | Metro style apps

Retrieves the length of a byte array associated with a key.

that identifies which value to retrieve. The attribute type must be .

If the key is found and the value is a byte array, this parameter receives the size of the array, in bytes.

To get the byte array, call .

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
bb970459 HRESULT IMFAttributes::GetBlobSize([In] const GUID& guidKey,[Out] unsigned int* pcbBlobSize) IMFAttributes::GetBlobSize

Applies to: desktop apps | Metro style apps

Retrieves a byte array associated with a key. This method copies the array into a caller-allocated buffer.

that identifies which value to retrieve. The attribute type must be .

Pointer to a buffer allocated by the caller. If the key is found and the value is a byte array, the method copies the array into this buffer. To find the required size of the buffer, call .

The size of the pBuf buffer, in bytes.

Receives the size of the byte array. This parameter can be null.

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

E_NOT_SUFFICIENT_BUFFER

The buffer is not large enough to the array.

MF_E_ATTRIBUTENOTFOUND

The specified key was not found.

MF_E_INVALIDTYPE

The attribute value is not a byte array.

?

You can also use the method, which allocates the buffer to hold the byte array.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
bb970421 HRESULT IMFAttributes::GetBlob([In] const GUID& guidKey,[In] void* pBuf,[In] unsigned int cbBufSize,[InOut, Optional] unsigned int* pcbBlobSize) IMFAttributes::GetBlob

Applies to: desktop apps | Metro style apps

Retrieves a byte array associated with a key. This method allocates the memory for the array.

that identifies which value to retrieve. The attribute type must be .

If the key is found and the value is a byte array, this parameter receives a copy of the array. The caller must free the memory for the array by calling CoTaskMemFree.

Receives the size of the array, in bytes.

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

MF_E_ATTRIBUTENOTFOUND

The specified key was not found.

MF_E_INVALIDTYPE

The attribute value is not a byte array.

?

To copy a byte array value into a caller-allocated buffer, use the method.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
bb970382 HRESULT IMFAttributes::GetAllocatedBlob([In] const GUID& guidKey,[Out, Buffer, Optional] unsigned char** ppBuf,[Out] unsigned int* pcbSize) IMFAttributes::GetAllocatedBlob

Applies to: desktop apps | Metro style apps

Retrieves an interface reference associated with a key.

that identifies which value to retrieve. The attribute type must be .

Interface identifier (IID) of the interface to retrieve.

Receives a reference to the requested interface. The caller must release the interface.

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

E_NOINTERFACE

The attribute value is an reference but does not support requested interface.

MF_E_ATTRIBUTENOTFOUND

The specified key was not found.

MF_E_INVALIDTYPE

The attribute value is not an reference.

?

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
bb970481 HRESULT IMFAttributes::GetUnknown([In] const GUID& guidKey,[In] const GUID& riid,[Out] void** ppv) IMFAttributes::GetUnknown

Applies to: desktop apps | Metro style apps

Adds an attribute value with a specified key.

A that identifies the value to set. If this key already exists, the method overwrites the old value.

A that contains the attribute value. The method copies the value. The type must be one of the types listed in the enumeration.

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

E_OUTOFMEMORY

Insufficient memory.

MF_E_INVALIDTYPE

Invalid attribute type.

?

This method checks whether the type is one of the attribute types defined in , and fails if an unsupported type is used. However, this method does not check whether the is the correct type for the specified attribute . (There is no programmatic way to associate attribute GUIDs with property types.) For a list of Media Foundation attributes and their data types, see Media Foundation Attributes.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
bb970346 HRESULT IMFAttributes::SetItem([In] const GUID& guidKey,[In] const PROPVARIANT& Value) IMFAttributes::SetItem

Removes a key/value pair from the object's attribute list.

DeleteItem( REFGUID guidKey );

Parameters

guidKey

[in] that identifies the value to delete.

The method returns an . Possible values include, but are not limited to, those in the following table.

Return code Description

The method succeeded.

If the specified key does not exist, the method returns .

Client: Requires Windows Vista.

Header: Defined in mfobjects.h; include mfidl.h.

Library: Use mfuuid.lib.

ReferenceIMFAttributes Interface
No documentation. No documentation. ms701993 HRESULT IMFAttributes::DeleteItem([In] const GUID& guidKey) IMFAttributes::DeleteItem

Applies to: desktop apps | Metro style apps

Removes all key/value pairs from the object's attribute list.

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

?

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms700200 HRESULT IMFAttributes::DeleteAllItems() IMFAttributes::DeleteAllItems

Applies to: desktop apps | Metro style apps

Associates a UINT32 value with a key.

that identifies the value to set. If this key already exists, the method overwrites the old value.

New value for this key.

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

?

To retrieve the UINT32 value, call .

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
bb970467 HRESULT IMFAttributes::SetUINT32([In] const GUID& guidKey,[In] unsigned int unValue) IMFAttributes::SetUINT32

Applies to: desktop apps | Metro style apps

Associates a UINT64 value with a key.

that identifies the value to set. If this key already exists, the method overwrites the old value.

New value for this key.

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

?

To retrieve the UINT64 value, call .

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
bb970439 HRESULT IMFAttributes::SetUINT64([In] const GUID& guidKey,[In] unsigned longlong unValue) IMFAttributes::SetUINT64

Applies to: desktop apps | Metro style apps

Associates a double value with a key.

that identifies the value to set. If this key already exists, the method overwrites the old value.

New value for this key.

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

?

To retrieve the double value, call .

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
bb970505 HRESULT IMFAttributes::SetDouble([In] const GUID& guidKey,[In] double fValue) IMFAttributes::SetDouble

Applies to: desktop apps | Metro style apps

Associates a value with a key.

that identifies the value to set. If this key already exists, the method overwrites the old value.

New value for this key.

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

E_OUTOFMEMORY

Insufficient memory.

?

To retrieve the value, call .

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
bb970530 HRESULT IMFAttributes::SetGUID([In] const GUID& guidKey,[In] const GUID& guidValue) IMFAttributes::SetGUID

Applies to: desktop apps | Metro style apps

Associates a wide-character string with a key.

that identifies the value to set. If this key already exists, the method overwrites the old value.

Null-terminated wide-character string to associate with this key. The method stores a copy of the string.

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

?

To retrieve the string, call or .

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
bb970404 HRESULT IMFAttributes::SetString([In] const GUID& guidKey,[In] const wchar_t* wszValue) IMFAttributes::SetString

Associates a byte array with a key.

SetString( REFGUID guidKey, const UINT8* pBuf, UINT32 cbBufSize );

Parameters

guidKey

[in] that identifies the value to set. If this key already exists, the method overwrites the old value.

pBuf

[in] Pointer to a byte array to associate with this key. The method stores a copy of the array.

cbBufSize

[in] Size of the array, in bytes.

The method returns an . Possible values include, but are not limited to, those in the following table.

Return code Description

E_OUTOFMEMORY

Insufficient memory.

The method succeeded.

Client: Requires Windows Vista.

Header: Defined in mfobjects.h; include mfidl.h.

Library: Use mfuuid.lib.

ReferenceIMFAttributes Interface
No documentation. No documentation. No documentation. No documentation. ms694230 HRESULT IMFAttributes::SetBlob([In] const GUID& guidKey,[In] const void* pBuf,[In] unsigned int cbBufSize) IMFAttributes::SetBlob
No documentation. No documentation. No documentation. No documentation. HRESULT IMFAttributes::SetUnknown([In] const GUID& guidKey,[In, Optional] IUnknown* pUnknown) IMFAttributes::SetUnknown

Applies to: desktop apps | Metro style apps

Locks the attribute store so that no other thread can access it. If the attribute store is already locked by another thread, this method blocks until the other thread unlocks the object. After calling this method, call to unlock the object.

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

?

This method can cause a deadlock if a thread that calls LockStore waits on a thread that calls any other methods on the same object.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms698926 HRESULT IMFAttributes::LockStore() IMFAttributes::LockStore

Applies to: desktop apps | Metro style apps

Unlocks the attribute store after a call to the method. While the object is unlocked, multiple threads can access the object's attributes.

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

?

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms697545 HRESULT IMFAttributes::UnlockStore() IMFAttributes::UnlockStore

Applies to: desktop apps | Metro style apps

Retrieves the number of attributes that are set on this object.

Receives the number of attributes. This parameter must not be null. If this parameter is null, an access violation occurs.

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

?

To enumerate all of the attributes, call for each index value.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
bb970413 HRESULT IMFAttributes::GetCount([Out] unsigned int* pcItems) IMFAttributes::GetCount

Applies to: desktop apps | Metro style apps

Retrieves an attribute at the specified index.

Index of the attribute to retrieve. To get the number of attributes, call .

Receives the that identifies this attribute.

Pointer to a that receives the value. This parameter can be null. If it is not null, the method fills the with a copy of the attribute value. Call PropVariantClear to free the memory allocated by this method.

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

E_INVALIDARG

Invalid index.

?

To enumerate all of an object's attributes in a thread-safe way, do the following:

  1. Call to prevent another thread from adding or deleting attributes.

  2. Call to find the number of attributes.

  3. Call GetItemByIndex to get each attribute by index.

  4. Call to unlock the attribute store.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
bb970331 HRESULT IMFAttributes::GetItemByIndex([In] unsigned int unIndex,[Out] GUID* pguidKey,[InOut, Optional] PROPVARIANT* pValue) IMFAttributes::GetItemByIndex

Applies to: desktop apps | Metro style apps

Copies all of the attributes from this object into another attribute store.

A reference to the interface of the attribute store that receives the copy.

If this method succeeds, it returns . Otherwise, it returns an error code.

This method deletes all of the attributes originally stored in pDest.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
bb970330 HRESULT IMFAttributes::CopyAllItems([In, Optional] IMFAttributes* pDest) IMFAttributes::CopyAllItems
Initializes a new instance of the class. The initial number of elements allocated for the attribute store. The attribute store grows as needed. Default is 0

Attributes are used throughout Microsoft Media Foundation to configure objects, describe media formats, query object properties, and other purposes. For more information, see Attributes in Media Foundation.

For a complete list of all the defined attribute GUIDs in Media Foundation, see Media Foundation Attributes.

ms701878 HRESULT MFCreateAttributes([Out] IMFAttributes** ppMFAttributes,[In] unsigned int cInitialSize) MFCreateAttributes
Gets an item value GUID of the key. The value associated to this key. ms704598 HRESULT IMFAttributes::GetItem([In] const GUID& guidKey,[In] void* pValue) IMFAttributes::GetItem

Applies to: desktop apps | Metro style apps

Retrieves an attribute at the specified index.

Index of the attribute to retrieve. To get the number of attributes, call .

Receives the that identifies this attribute.

The value associated to this index

To enumerate all of an object's attributes in a thread-safe way, do the following:

  1. Call to prevent another thread from adding or deleting attributes.

  2. Call to find the number of attributes.

  3. Call GetItemByIndex to get each attribute by index.

  4. Call to unlock the attribute store.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
bb970331 HRESULT IMFAttributes::GetItemByIndex([In] unsigned int unIndex,[Out] GUID* pguidKey,[InOut, Optional] PROPVARIANT* pValue) IMFAttributes::GetItemByIndex
Gets an item value GUID of the key. The value associated to this key. ms704598 HRESULT IMFAttributes::GetItem([In] const GUID& guidKey,[In] void* pValue) IMFAttributes::GetItem Gets an item value GUID of the key. The value associated to this key. ms704598 HRESULT IMFAttributes::GetItem([In] const GUID& guidKey,[In] void* pValue) IMFAttributes::GetItem

Applies to: desktop apps | Metro style apps

Adds an attribute value with a specified key.

A that identifies the value to set. If this key already exists, the method overwrites the old value.

A that contains the attribute value. The method copies the value. The type must be one of the types listed in the enumeration.

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

E_OUTOFMEMORY

Insufficient memory.

MF_E_INVALIDTYPE

Invalid attribute type.

?

This method checks whether the type is one of the attribute types defined in , and fails if an unsupported type is used. However, this method does not check whether the is the correct type for the specified attribute . (There is no programmatic way to associate attribute GUIDs with property types.) For a list of Media Foundation attributes and their data types, see Media Foundation Attributes.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
bb970346 HRESULT IMFAttributes::SetItem([In] const GUID& guidKey,[In] const PROPVARIANT& Value) IMFAttributes::SetItem

Applies to: desktop apps | Metro style apps

Adds an attribute value with a specified key.

A that identifies the value to set. If this key already exists, the method overwrites the old value.

A that contains the attribute value. The method copies the value. The type must be one of the types listed in the enumeration.

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

E_OUTOFMEMORY

Insufficient memory.

MF_E_INVALIDTYPE

Invalid attribute type.

?

This method checks whether the type is one of the attribute types defined in , and fails if an unsupported type is used. However, this method does not check whether the is the correct type for the specified attribute . (There is no programmatic way to associate attribute GUIDs with property types.) For a list of Media Foundation attributes and their data types, see Media Foundation Attributes.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
bb970346 HRESULT IMFAttributes::SetItem([In] const GUID& guidKey,[In] const PROPVARIANT& Value) IMFAttributes::SetItem

Applies to: desktop apps | Metro style apps

Retrieves the number of attributes that are set on this object.

To enumerate all of the attributes, call for each index value.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
bb970413 GetCount GetCount HRESULT IMFAttributes::GetCount([Out] unsigned int* pcItems)
Initializes a new instance of the class. The native pointer. Performs an explicit conversion from to . (This method is a shortcut to ) The native pointer. The result of the conversion.

Applies to: desktop apps | Metro style apps

Creates the object associated with this activation object.

Interface identifier (IID) of the requested interface.

Receives a reference to the requested interface. The caller must release the interface.

If this method succeeds, it returns . Otherwise, it returns an error code.

Some Microsoft Media Foundation objects must be shut down before being released. If so, the caller is responsible for shutting down the object that is returned in ppv. To shut down the object, do one of the following:

  • Call on the activation object, or
  • Call the object-specific shutdown method. This method will depend on the type of object. Possibilities include:
    • Media sources: Call IMFMediaSource::Shutdown.
    • Media sinks: Call IMFMediaSink::Shutdown.
    • Any object that supports the IMFShutdown interface: Call IMFShutdown::Shutdown.

The method is generic to all object types. If the object does not require a shutdown method, ShutdownObject succeeds and has no effect. If you do not know the specific shutdown method for the object (or do not know the object type), call .

After the first call to ActivateObject, subsequent calls return a reference to the same instance, until the client calls either ShutdownObject or .

ms694292 HRESULT IMFActivate::ActivateObject([In] const GUID& riid,[Out] void** ppv) IMFActivate::ActivateObject

Applies to: desktop apps | Metro style apps

Shuts down the created object.

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

?

If you create an object by calling , call ShutdownObject when you are done using the object.

The component that calls ActivateObject?not the component that creates the activation object?is responsible for calling ShutdownObject. For example, in a typical playback application, the application creates activation objects for the media sinks, but the Media Session calls ActivateObject. Therefore the Media Session, not the application, calls ShutdownObject.

After ShutdownObject is called, the activation object releases all of its internal references to the created object. If you call ActivateObject again, the activation object will create a new instance of the other object.

ms695228 HRESULT IMFActivate::ShutdownObject() IMFActivate::ShutdownObject

Applies to: desktop apps | Metro style apps

Detaches the created object from the activation object.

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

E_NOTIMPL

Not implemented.

?

The activation object releases all of its internal references to the created object. If you call ActivateObject again, the activation object will create a new instance of the other object.

The DetachObject method does not shut down the created object. If the DetachObject method succeeds, the client must shut down the created object. This rule applies only to objects that have a shutdown method or that support the IMFShutdown interface. See the remarks for .

Implementation of this method is optional. If the activation object does not support this method, the method returns E_NOTIMPL.

aa367342 HRESULT IMFActivate::DetachObject() IMFActivate::DetachObject

Applies to: desktop apps | Metro style apps

Callback interface to notify the application when an asynchronous method completes.

For more information about asynchronous methods in Microsoft Media Foundation, see Asynchronous Callback Methods.

This interface is also used to perform a work item in a Media Foundation work-queue. For more information, see Work Queues.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms699856 IMFAsyncCallback IMFAsyncCallback
Initializes a new instance of the class. The native pointer. Performs an explicit conversion from to . (This method is a shortcut to ) The native pointer. The result of the conversion.

Applies to: desktop apps | Metro style apps

Provides configuration information to the dispatching thread for a callback.

Receives a flag indicating the behavior of the callback object's method. The following values are defined. The default value is zero.

ValueMeaning
Zero

The callback does not take a long time to complete, but has no specific restrictions on what system calls it makes. The callback generally takes less than 30 milliseconds to complete.

MFASYNC_FAST_IO_PROCESSING_CALLBACK

The callback does very minimal processing. It takes less than 1 millisecond to complete.

The callback must be invoked from one of the following work queues:

  • MFASYNC_CALLBACK_QUEUE_IO
  • MFASYNC_CALLBACK_QUEUE_TIMER
MFASYNC_SIGNAL_CALLBACK

Implies MFASYNC_FAST_IO_PROCESSING_CALLBACK, with the additional restriction that the callback does no processing (less than 50 microseconds), and the only system call it makes is SetEvent.

The callback must be invoked from one of the following work queues:

  • MFASYNC_CALLBACK_QUEUE_IO
  • MFASYNC_CALLBACK_QUEUE_TIMER
MFASYNC_BLOCKING_CALLBACK

Blocking callback.

MFASYNC_REPLY_CALLBACK

Reply callback.

?

Receives the identifier of the work queue on which the callback is dispatched.

This value can specify one of the standard Media Foundation work queues, or a work queue created by the application. For list of standard Media Foundation work queues, see Work Queue Identifiers. To create a new work queue, call MFAllocateWorkQueue. The default value is MFASYNC_CALLBACK_QUEUE_STANDARD.

If the work queue is not compatible with the value returned in pdwFlags, the Media Foundation platform returns MF_E_INVALID_WORKQUEUE when it tries to dispatch the callback. (See MFPutWorkItem.)

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

E_NOTIMPL

Not implemented. Assume the default behavior.

?

The GetParameters method returns information about the callback so that the dispatching thread can optimize the process that it uses to invoke the callback.

If the method returns a value other than zero in the pdwFlags parameter, your Invoke method must meet the requirements described here. Otherwise, the callback might delay the pipeline.

If you want default values for both parameters, return E_NOTIMPL. The default values are given in the parameter descriptions on this page.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
bb970381 HRESULT IMFAsyncCallback::GetParameters([Out] unsigned int* pdwFlags,[Out] unsigned int* pdwQueue) IMFAsyncCallback::GetParameters

Applies to: desktop apps | Metro style apps

Called when an asynchronous operation is completed.

Pointer to the interface. Pass this reference to the asynchronous End... method to complete the asynchronous call.

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

?

Within your implementation of Invoke, call the corresponding End... method.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
bb970360 HRESULT IMFAsyncCallback::Invoke([In, Optional] IMFAsyncResult* pAsyncResult) IMFAsyncCallback::Invoke

Applies to: desktop apps | Metro style apps

Provides information about the result of an asynchronous operation.

Use this interface to complete an asynchronous operation. You get a reference to this interface when your callback object's method is called. To complete the operation, pass the reference to the End... method that corresponds to the Begin... method that starts the operation. For example, if the asynchronous method is named BeginRead, call the EndRead method. For more information, see Calling Asynchronous Methods.

If you are implementing an asynchronous method, call to create an instance of this object. For more information, see Writing an Asynchronous Method.

Any custom implementation of this interface must inherit the structure.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms700196 IMFAsyncResult IMFAsyncResult
Initializes a new instance of the class. The native pointer. Performs an explicit conversion from to . (This method is a shortcut to ) The native pointer. The result of the conversion.

Applies to: desktop apps | Metro style apps

Returns the state object specified by the caller in the asynchronous Begin method.

Receives a reference to the state object's interface. If the value is not null, the caller must release the interface.

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

E_POINTER

There is no state object associated with this asynchronous result.

?

The caller of the asynchronous method specifies the state object, and can use it for any caller-defined purpose. The state object can be null. If the state object is null, GetState returns E_POINTER.

If you are implementing an asynchronous method, set the state object on the through the punkState parameter of the function.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
bb970576 HRESULT IMFAsyncResult::GetState([Out] IUnknown** ppunkState) IMFAsyncResult::GetState

Applies to: desktop apps | Metro style apps

Returns the status of the asynchronous operation.

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The operation completed successfully.

?

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms702095 HRESULT IMFAsyncResult::GetStatus() IMFAsyncResult::GetStatus

Sets the status of the asynchronous operation.

SetStatus( hrStatus );

Parameters

hrStatus

The status of the asynchronous operation.

The method returns an . Possible values include, but are not limited to, those in the following table.

Return code Description

The method succeeded.

If you implement an asynchronous method, call SetStatus to set the status code for the operation.

Client: Requires Windows Vista.

Header: Defined in mfobjects.h; include mfidl.h.

Library: Use mfuuid.lib.

ReferenceIMFAsyncResult InterfaceConceptsAsynchronous Callback Methods
No documentation. No documentation. ms697440 HRESULT IMFAsyncResult::SetStatus([In] HRESULT hrStatus) IMFAsyncResult::SetStatus

Applies to: desktop apps | Metro style apps

Returns an object associated with the asynchronous operation. The type of object, if any, depends on the asynchronous method that was called.

Receives a reference to the object's interface. If no object is associated with the operation, this parameter receives the value null. If the value is not null, the caller must release the interface.

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

E_POINTER

There is no object associated with this asynchronous result.

?

Typically, this object is used by the component that implements the asynchronous method. It provides a way for the function that invokes the callback to pass information to the asynchronous End... method that completes the operation.

If you are implementing an asynchronous method, you can set the object through the punkObject parameter of the function.

If the asynchronous result object's internal reference is null, the method returns E_POINTER.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
bb970500 HRESULT IMFAsyncResult::GetObject([Out] IUnknown** ppObject) IMFAsyncResult::GetObject

Applies to: desktop apps | Metro style apps

Returns the state object specified by the caller in the asynchronous Begin method, without incrementing the object's reference count.

Returns a reference to the state object's interface, or null if no object was set. This reference does not have an outstanding reference count. If you store this reference, you must call AddRef on the reference.

This method cannot be called remotely.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms696238 IUnknown* IMFAsyncResult::GetStateNoAddRef() IMFAsyncResult::GetStateNoAddRef

Applies to: desktop apps | Metro style apps

Returns the state object specified by the caller in the asynchronous Begin method.

The caller of the asynchronous method specifies the state object, and can use it for any caller-defined purpose. The state object can be null. If the state object is null, GetState returns E_POINTER.

If you are implementing an asynchronous method, set the state object on the through the punkState parameter of the function.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
bb970576 GetState GetState HRESULT IMFAsyncResult::GetState([Out] IUnknown** ppunkState)

Applies to: desktop apps | Metro style apps

Returns the status of the asynchronous operation.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms702095 GetStatus / SetStatus GetStatus HRESULT IMFAsyncResult::GetStatus()

Applies to: desktop apps | Metro style apps

Returns an object associated with the asynchronous operation. The type of object, if any, depends on the asynchronous method that was called.

Typically, this object is used by the component that implements the asynchronous method. It provides a way for the function that invokes the callback to pass information to the asynchronous End... method that completes the operation.

If you are implementing an asynchronous method, you can set the object through the punkObject parameter of the function.

If the asynchronous result object's internal reference is null, the method returns E_POINTER.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
bb970500 GetObject GetObject HRESULT IMFAsyncResult::GetObject([Out] IUnknown** ppObject)

Applies to: desktop apps | Metro style apps

Returns the state object specified by the caller in the asynchronous Begin method, without incrementing the object's reference count.

This method cannot be called remotely.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms696238 GetStateNoAddRef GetStateNoAddRef IUnknown* IMFAsyncResult::GetStateNoAddRef()

Applies to: desktop apps | Metro style apps

Represents a buffer that contains a two-dimensional surface, such as a video frame.

To get a reference to this interface, call QueryInterface on the media buffer.

To use a 2-D buffer, it is important to know the stride, which is the number of bytes needed to go from one row of pixels to the next. The stride may be larger than the image width, because the surface may contain padding bytes after each row of pixels. Stride can also be negative, if the pixels are oriented bottom-up in memory. For more information, see Image Stride.

Every video format defines a contiguous or packed representation. This representation is compatible with the standard layout of a DirectX surface in system memory, with no additional padding. For RGB video, the contiguous representation has a pitch equal to the image width in bytes, rounded up to the nearest DWORD boundary. For YUV video, the layout of the contiguous representation depends on the YUV format. For planar YUV formats, the Y plane might have a different pitch than the U and V planes.

If a media buffer supports the interface, the underlying buffer is not guaranteed to have a contiguous representation, because there might be additional padding bytes after each row of pixels. When a buffer is non-contiguous, the Lock and Lock2D methods have different behaviors:

  • The Lock2D method returns a reference to the underlying buffer. The buffer might not be contiguous.
  • The Lock method returns a buffer that is guaranteed to be contiguous. If the underlying buffer is not contiguous, the method copies the data into a new buffer, and the Unlock method copies it back into the original buffer.

Call the Lock2D method to access the 2-D buffer in its native format. The native format might not be contiguous. The buffer's method returns a contiguous representation of the buffer. However, this might require an internal copy from the native format. For 2-D buffers, therefore, you should use the Lock2D method and avoid the Lock method. Because the Lock method might cause up to two buffer copies, the Lock2D method is generally more efficient and should be used when possible. To find out if the underlying buffer is contiguous, call .

For uncompressed images, the amount of valid data in the buffer is determined by the width, height, and pixel layout of the image. For this reason, if you call Lock2D to access the buffer, do not rely on the values returned by or . Similarly, if you modify the data in the buffer, you do not have to call to update the size. Generally, you should avoid mixing calls to and methods on the same media buffer.

ms699894 IMF2DBuffer IMF2DBuffer
Initializes a new instance of the class. The native pointer. Performs an explicit conversion from to . (This method is a shortcut to ) The native pointer. The result of the conversion.

Applies to: desktop apps | Metro style apps

Gives the caller access to the memory in the buffer.

Receives a reference to the first byte of the top row of pixels in the image. The top row is defined as the top row when the image is presented to the viewer, and might not be the first row in memory.

Receives the surface stride, in bytes. The stride might be negative, indicating that the image is oriented from the bottom up in memory.

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

D3DERR_INVALIDCALL

Cannot lock the Direct3D surface.

MF_E_INVALIDREQUEST

The buffer cannot be locked at this time.

?

If p is a reference to the first byte in a row of pixels, p + (*plPitch) points to the first byte in the next row of pixels. A buffer might contain padding after each row of pixels, so the stride might be wider than the width of the image in bytes. Do not access the memory that is reserved for padding bytes, because it might not be read-accessible or write-accessible. For more information, see Image Stride.

The reference returned in pbScanline0 remains valid as long as the caller holds the lock. When you are done accessing the memory, call to unlock the buffer. You must call Unlock2D once for each call to Lock2D. After you unlock the buffer, the reference returned in pbScanline0 is no longer valid and should not be used. Generally, it is best to call Lock2D only when you need to access the buffer memory, and not earlier.

The values returned by the and methods do not apply to the buffer that is returned by the Lock2D method. For the same reason, you do not need to call after manipulating the data in the buffer returned by the Lock2D method.

The method fails while the Lock2D lock is held, and vice-versa. Applications should use only one of these methods at a time.

When the underlying buffer is a Direct3D surface, the method fails if the surface is not lockable.

ms700182 HRESULT IMF2DBuffer::Lock2D([Out, Buffer] unsigned char** ppbScanline0,[Out] int* plPitch) IMF2DBuffer::Lock2D

Applies to: desktop apps | Metro style apps

Unlocks a buffer that was previously locked. Call this method once for each call to .

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

?

ms697066 HRESULT IMF2DBuffer::Unlock2D() IMF2DBuffer::Unlock2D

Applies to: desktop apps | Metro style apps

Retrieves a reference to the buffer memory and the surface stride.

Receives a reference to the first byte of the top row of pixels in the image.

Receives the stride, in bytes. For more information, see Image Stride.

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

You must lock the buffer before calling this method.

?

Before calling this method, you must lock the buffer by calling . The reference returned in plPitch is valid only while the buffer remains locked.

ms694042 HRESULT IMF2DBuffer::GetScanline0AndPitch([Out] unsigned char** pbScanline0,[Out] int* plPitch) IMF2DBuffer::GetScanline0AndPitch

Applies to: desktop apps | Metro style apps

Queries whether the buffer is contiguous in its native format.

Receives a Boolean value. The value is TRUE if the buffer is contiguous, and otherwise.

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

?

For a definition of contiguous as it applies to 2-D buffers, see the Remarks section in interface. For non-contiguous buffers, the method must perform an internal copy.

ms701629 HRESULT IMF2DBuffer::IsContiguousFormat([Out] BOOL* pfIsContiguous) IMF2DBuffer::IsContiguousFormat

Applies to: desktop apps | Metro style apps

Retrieves the number of bytes needed to store the contents of the buffer in contiguous format.

Receives the number of bytes needed to store the contents of the buffer in contiguous format.

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

?

For a definition of contiguous as it applies to 2-D buffers, see the Remarks section in interface.

ms696971 HRESULT IMF2DBuffer::GetContiguousLength([Out] unsigned int* pcbLength) IMF2DBuffer::GetContiguousLength

Applies to: desktop apps | Metro style apps

Copies this buffer into the caller's buffer, converting the data to contiguous format.

Pointer to the destination buffer where the data will be copied. The caller allocates the buffer.

Size of the destination buffer, in bytes. To get the required size, call .

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

E_INVALIDARG

Invalid size specified in pbDestBuffer.

?

If the original buffer is not contiguous, this method converts the contents into contiguous format during the copy. For a definition of contiguous as it applies to 2-D buffers, see the Remarks section in interface.

ms696215 HRESULT IMF2DBuffer::ContiguousCopyTo([Out, Buffer] unsigned char* pbDestBuffer,[In] unsigned int cbDestBuffer) IMF2DBuffer::ContiguousCopyTo

Applies to: desktop apps | Metro style apps

Copies data to this buffer from a buffer that has a contiguous format.

Pointer to the source buffer. The caller allocates the buffer.

Size of the source buffer, in bytes. To get the maximum size of the buffer, call .

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

?

This method copies the contents of the source buffer into the buffer that is managed by this object. The source buffer must be in contiguous format. While copying, the method converts the contents into the destination buffer's native format, correcting for the buffer's pitch if necessary.

For a definition of contiguous as it applies to 2-D buffers, see the Remarks section in the interface topic.

ms700162 HRESULT IMF2DBuffer::ContiguousCopyFrom([In, Buffer] const unsigned char* pbSrcBuffer,[In] unsigned int cbSrcBuffer) IMF2DBuffer::ContiguousCopyFrom

Applies to: desktop apps | Metro style apps

Queries whether the buffer is contiguous in its native format.

For a definition of contiguous as it applies to 2-D buffers, see the Remarks section in interface. For non-contiguous buffers, the method must perform an internal copy.

ms701629 IsContiguousFormat IsContiguousFormat HRESULT IMF2DBuffer::IsContiguousFormat([Out] BOOL* pfIsContiguous)

Applies to: desktop apps | Metro style apps

Retrieves the number of bytes needed to store the contents of the buffer in contiguous format.

For a definition of contiguous as it applies to 2-D buffers, see the Remarks section in interface.

ms696971 GetContiguousLength GetContiguousLength HRESULT IMF2DBuffer::GetContiguousLength([Out] unsigned int* pcbLength)

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Gives the caller access to the memory in the buffer.

When you are done accessing the memory, call to unlock the buffer. You must call Unlock2D once for each call to Lock2DSize.

This method is equivalent to the method. However, Lock2DSize is preferred because it enables the caller to validate memory references, and because it supports read-only locks. A buffer is not guaranteed to support the interface. To access a buffer, you should try the following methods in the order listed:

The ppbBufferStart and pcbBufferLength parameters receive the bounds of the buffer memory. Use these values to guard against buffer overruns. Use the values of ppbScanline0 and plPitch to access the image data. If the image is bottom-up in memory, ppbScanline0 will point to the last scan line in memory and plPitch will be negative. For more information, see Image Stride.

The lockFlags parameter specifies whether the buffer is locked for read-only access, write-only access, or read/write access.

  • If the buffer is already locked for read-only access, it cannot be locked for write access.
  • If the buffer is already locked for write-only access, it cannot be locked for read access.
  • If the buffer is already locked for read/write acess, it can be locked for read or write acess.

When possible, use a read-only or write-only lock, and avoid locking the buffer for read/write access. If the buffer represents a DirectX Graphics Infrastructure (DXGI) surface, a read/write lock can cause an extra copy between CPU memory and GPU memory.

hh447829 IMF2DBuffer2 IMF2DBuffer2
Initializes a new instance of the class. The native pointer. Performs an explicit conversion from to . (This method is a shortcut to ) The native pointer. The result of the conversion.

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Gives the caller access to the memory in the buffer.

A member of the enumeration that specifies whether to lock the buffer for reading, writing, or both.

Receives a reference to the first byte of the top row of pixels in the image. The top row is defined as the top row when the image is presented to the viewer, and might not be the first row in memory.

Receives the surface stride, in bytes. The stride might be negative, indicating that the image is oriented from the bottom up in memory.

Receives a reference to the start of the accessible buffer in memory.

Receives the length of the buffer, in bytes.

This method can return one of these values.

Return codeDescription

Success.

MF_E_INVALIDREQUEST

Invalid request. The buffer might already be locked with an incompatible locking flag. See Remarks.

?

When you are done accessing the memory, call to unlock the buffer. You must call Unlock2D once for each call to Lock2DSize.

This method is equivalent to the method. However, Lock2DSize is preferred because it enables the caller to validate memory references, and because it supports read-only locks. A buffer is not guaranteed to support the interface. To access a buffer, you should try the following methods in the order listed:

The ppbBufferStart and pcbBufferLength parameters receive the bounds of the buffer memory. Use these values to guard against buffer overruns. Use the values of ppbScanline0 and plPitch to access the image data. If the image is bottom-up in memory, ppbScanline0 will point to the last scan line in memory and plPitch will be negative. For more information, see Image Stride.

The lockFlags parameter specifies whether the buffer is locked for read-only access, write-only access, or read/write access.

  • If the buffer is already locked for read-only access, it cannot be locked for write access.
  • If the buffer is already locked for write-only access, it cannot be locked for read access.
  • If the buffer is already locked for read/write acess, it can be locked for read or write acess.

When possible, use a read-only or write-only lock, and avoid locking the buffer for read/write access. If the buffer represents a DirectX Graphics Infrastructure (DXGI) surface, a read/write lock can cause an extra copy between CPU memory and GPU memory.

hh447829 HRESULT IMF2DBuffer2::Lock2DSize([In] MF2DBuffer_LockFlags lockFlags,[Out, Buffer] unsigned char** ppbScanline0,[Out] int* plPitch,[Out, Buffer] unsigned char** ppbBufferStart,[Out] unsigned int* pcbBufferLength) IMF2DBuffer2::Lock2DSize

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Copies the buffer to another 2D buffer object.

A reference to the interface of the destination buffer.

If this method succeeds, it returns . Otherwise, it returns an error code.

The destination buffer must be at least as large as the source buffer.

hh447828 HRESULT IMF2DBuffer2::Copy2DTo([In] IMF2DBuffer2* pDestBuffer) IMF2DBuffer2::Copy2DTo

Applies to: desktop apps | Metro style apps

Controls how a byte stream buffers data from a network.

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

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 interface. When the byte stream starts buffering, it sends an event. When it stops buffering, it sends an event.

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

After the byte stream sends an event, it should send 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 .
  • 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, 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 immediately.

After the presentation has started, the media source should forward and and 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.

aa372548 IMFByteStreamBuffering IMFByteStreamBuffering
Initializes a new instance of the class. The native pointer. Performs an explicit conversion from to . (This method is a shortcut to ) The native pointer. The result of the conversion.

Applies to: desktop apps | Metro style apps

Sets the buffering parameters.

Pointer to an structure that contains the buffering parameters. The byte stream uses this information to calculate how much data to buffer from the network.

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

?

aa366520 HRESULT IMFByteStreamBuffering::SetBufferingParams([In] MFBYTESTREAM_BUFFERING_PARAMS* pParams) IMFByteStreamBuffering::SetBufferingParams

Applies to: desktop apps | Metro style apps

Enables or disables buffering.

Specifies whether the byte stream buffers data. If TRUE, buffering is enabled. If , buffering is disabled.

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

?

Before calling this method, call to set the buffering parameters on the byte stream.

aa369933 HRESULT IMFByteStreamBuffering::EnableBuffering([In] BOOL fEnable) IMFByteStreamBuffering::EnableBuffering

Applies to: desktop apps | Metro style apps

Stops any buffering that is in progress.

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The byte stream successfully stopped buffering.

S_FALSE

No buffering was in progress.

?

If the byte stream is currently buffering data, it stops and sends an event. If the byte stream is not currently buffering, this method has no effect.

aa375256 HRESULT IMFByteStreamBuffering::StopBuffering() IMFByteStreamBuffering::StopBuffering

Applies to: desktop apps | Metro style apps

Sets the buffering parameters.

aa366520 SetBufferingParams SetBufferingParams HRESULT IMFByteStreamBuffering::SetBufferingParams([In] MFBYTESTREAM_BUFFERING_PARAMS* pParams)

Applies to: desktop apps only

Stops the background transfer of data to the local cache.

The byte stream resumes transferring data to the cache if the application does one of the following:

  • Reads data from the byte stream.
  • Calls the byte stream's method.
dd368786 IMFByteStreamCacheControl IMFByteStreamCacheControl
Initializes a new instance of the class. The native pointer. Performs an explicit conversion from to . (This method is a shortcut to ) The native pointer. The result of the conversion.

Applies to: desktop apps only

Stops the background transfer of data to the local cache.

If this method succeeds, it returns . Otherwise, it returns an error code.

The byte stream resumes transferring data to the cache if the application does one of the following:

  • Reads data from the byte stream.
  • Calls the byte stream's method.
dd368786 HRESULT IMFByteStreamCacheControl::StopBackgroundTransfer() IMFByteStreamCacheControl::StopBackgroundTransfer

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps only

Queries whether background transfer is active.

Background transfer might stop because the cache limit was reached (see ) or because the method was called.

hh447832 IMFByteStreamCacheControl2 IMFByteStreamCacheControl2
Initializes a new instance of the class. The native pointer. Performs an explicit conversion from to . (This method is a shortcut to ) The native pointer. The result of the conversion.

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps only

Gets the ranges of bytes that are currently stored in the cache.

Receives the number of ranges returned in the ppRanges array.

Receives an array of structures. Each structure specifies a range of bytes stored in the cache. The caller must free the array by calling CoTaskMemFree.

If this method succeeds, it returns . Otherwise, it returns an error code.

hh447831 HRESULT IMFByteStreamCacheControl2::GetByteRanges([Out] unsigned int* pcRanges,[Out, Buffer, Optional] MF_BYTE_STREAM_CACHE_RANGE** ppRanges) IMFByteStreamCacheControl2::GetByteRanges

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps only

Limits the cache size.

The maximum number of bytes to store in the cache, or ULONGLONG_MAX for no limit. The default value is no limit.

If this method succeeds, it returns . Otherwise, it returns an error code.

hh447833 HRESULT IMFByteStreamCacheControl2::SetCacheLimit([In] unsigned longlong qwBytes) IMFByteStreamCacheControl2::SetCacheLimit

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps only

Queries whether background transfer is active.

Receives the value TRUE if background transfer is currently active, or otherwise.

If this method succeeds, it returns . Otherwise, it returns an error code.

Background transfer might stop because the cache limit was reached (see ) or because the method was called.

hh447832 HRESULT IMFByteStreamCacheControl2::IsBackgroundTransferActive([Out] BOOL* pfActive) IMFByteStreamCacheControl2::IsBackgroundTransferActive

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps only

Limits the cache size.

hh447833 SetCacheLimit SetCacheLimit HRESULT IMFByteStreamCacheControl2::SetCacheLimit([In] unsigned longlong qwBytes)

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps only

Queries whether background transfer is active.

Background transfer might stop because the cache limit was reached (see ) or because the method was called.

hh447832 IsBackgroundTransferActive IsBackgroundTransferActive HRESULT IMFByteStreamCacheControl2::IsBackgroundTransferActive([Out] BOOL* pfActive)

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps only

Gets the result of a time-based seek.

This method returns the server response from a previous time-based seek.

Note??This method normally cannot be invoked until some data is read from the byte stream, because the method does not send a server request immediately.

hh447837 IMFByteStreamTimeSeek IMFByteStreamTimeSeek
Initializes a new instance of the class. The native pointer. Performs an explicit conversion from to . (This method is a shortcut to ) The native pointer. The result of the conversion.

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps only

Queries whether the byte stream supports time-based seeking.

Receives the value TRUE if the byte stream supports time-based seeking, or otherwise.

If this method succeeds, it returns . Otherwise, it returns an error code.

hh447838 HRESULT IMFByteStreamTimeSeek::IsTimeSeekSupported([Out] BOOL* pfTimeSeekIsSupported) IMFByteStreamTimeSeek::IsTimeSeekSupported

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps only

Seeks to a new position in the byte stream.

The new position, in 100-nanosecond units.

If this method succeeds, it returns . Otherwise, it returns an error code.

If the byte stream reads from a server, it might cache the seek request until the next read request. Therefore, the byte stream might not send a request to the server immediately.

hh447839 HRESULT IMFByteStreamTimeSeek::TimeSeek([In] unsigned longlong qwTimePosition) IMFByteStreamTimeSeek::TimeSeek

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps only

Gets the result of a time-based seek.

Receives the new position after the seek, in 100-nanosecond units.

Receives the stop time, in 100-nanosecond units. If the stop time is unknown, the value is zero.

Receives the total duration of the file, in 100-nanosecond units. If the duration is unknown, the value is ?1.

This method can return one of these values.

Return codeDescription

The method succeeded.

MF_E_INVALIDREQUEST

The byte stream does not support time-based seeking, or no data is available.

?

This method returns the server response from a previous time-based seek.

Note??This method normally cannot be invoked until some data is read from the byte stream, because the method does not send a server request immediately.

hh447837 HRESULT IMFByteStreamTimeSeek::GetTimeSeekResult([Out] unsigned longlong* pqwStartTime,[Out] unsigned longlong* pqwStopTime,[Out] unsigned longlong* pqwDuration) IMFByteStreamTimeSeek::GetTimeSeekResult

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps only

Queries whether the byte stream supports time-based seeking.

hh447838 IsTimeSeekSupported IsTimeSeekSupported HRESULT IMFByteStreamTimeSeek::IsTimeSeekSupported([Out] BOOL* pfTimeSeekIsSupported)

Applies to: desktop apps | Metro style apps

Retrieves the number of objects in the collection.

ms697034 IMFCollection IMFCollection
Initializes a new instance of the class. The native pointer. Performs an explicit conversion from to . (This method is a shortcut to ) The native pointer. The result of the conversion.

Applies to: desktop apps | Metro style apps

Retrieves the number of objects in the collection.

Receives the number of objects in the collection.

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

?

ms697034 HRESULT IMFCollection::GetElementCount([Out] unsigned int* pcElements) IMFCollection::GetElementCount

Applies to: desktop apps | Metro style apps

Retrieves an object in the collection.

Zero-based index of the object to retrieve. Objects are indexed in the order in which they were added to the collection.

Receives a reference to the object's interface. The caller must release the interface. The retrieved reference value might be null.

If this method succeeds, it returns . Otherwise, it returns an error code.

This method does not remove the object from the collection. To remove an object, call .

ms701793 HRESULT IMFCollection::GetElement([In] unsigned int dwElementIndex,[Out] IUnknown** ppUnkElement) IMFCollection::GetElement

Applies to: desktop apps | Metro style apps

Adds an object to the collection.

Pointer to the object's interface.

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

?

If pUnkElement is null, a null reference is added to the collection.

ms695202 HRESULT IMFCollection::AddElement([In, Optional] IUnknown* pUnkElement) IMFCollection::AddElement

Applies to: desktop apps | Metro style apps

Removes an object from the collection.

Zero-based index of the object to remove. Objects are indexed in the order in which they were added to the collection.

Receives a reference to the interface of the object. The caller must release the interface. This parameter cannot be null, but the retrieved reference value might be null.

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

?

ms697010 HRESULT IMFCollection::RemoveElement([In] unsigned int dwElementIndex,[Out] IUnknown** ppUnkElement) IMFCollection::RemoveElement

Applies to: desktop apps | Metro style apps

Adds an object at the specified index in the collection.

The zero-based index where the object will be added to the collection.

The object to insert.

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

?

ms703963 HRESULT IMFCollection::InsertElementAt([In] unsigned int dwIndex,[In, Optional] IUnknown* pUnknown) IMFCollection::InsertElementAt

Applies to: desktop apps | Metro style apps

Removes all items from the collection.

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

?

ms700194 HRESULT IMFCollection::RemoveAllElements() IMFCollection::RemoveAllElements

Applies to: desktop apps | Metro style apps

Retrieves the number of objects in the collection.

ms697034 GetElementCount GetElementCount HRESULT IMFCollection::GetElementCount([Out] unsigned int* pcElements)

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Queries the Microsoft DirectX Graphics Infrastructure (DXGI) surface for an interface.

You can use this method to get a reference to the interface of the surface. If the buffer is locked, the method returns MF_E_INVALIDREQUEST.

hh447902 IMFDXGIBuffer IMFDXGIBuffer
Initializes a new instance of the class. The native pointer. Performs an explicit conversion from to . (This method is a shortcut to ) The native pointer. The result of the conversion.

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Queries the Microsoft DirectX Graphics Infrastructure (DXGI) surface for an interface.

The interface identifer (IID) of the interface being requested.

Receives a reference to the interface. The caller must release the interface.

This method can return one of these values.

Return codeDescription

Success.

E_NOINTERFACE

The object does not support the specified interface.

MF_E_INVALIDREQUEST

Invalid request.

?

You can use this method to get a reference to the interface of the surface. If the buffer is locked, the method returns MF_E_INVALIDREQUEST.

hh447902 HRESULT IMFDXGIBuffer::GetResource([In] const GUID& riid,[Out] void** ppvObject) IMFDXGIBuffer::GetResource

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Gets the index of the subresource that is associated with this media buffer.

Receives the zero-based index of the subresource.

If this method succeeds, it returns . Otherwise, it returns an error code.

The subresource index is specified when you create the media buffer object. See .

For more information about texture subresources, see .

hh447903 HRESULT IMFDXGIBuffer::GetSubresourceIndex([Out] unsigned int* puSubresource) IMFDXGIBuffer::GetSubresourceIndex

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Gets an reference that was previously stored in the media buffer object.

No documentation. No documentation. No documentation.

This method can return one of these values.

Return codeDescription

Success.

E_NOINTERFACE

The object does not support the specified interface.

MF_E_NOT_FOUND

The specified key was not found.

?

hh447904 HRESULT IMFDXGIBuffer::GetUnknown([In] const GUID& guid,[In] const GUID& riid,[Out] void** ppvObject) IMFDXGIBuffer::GetUnknown

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Stores an arbitrary reference in the media buffer object.

No documentation. No documentation.

This method can return one of these values.

Return codeDescription

Success.

An item already exists with this key.

?

To retrieve the reference from the object, call .

hh447905 HRESULT IMFDXGIBuffer::SetUnknown([In] const GUID& guid,[In, Optional] IUnknown* pUnkData) IMFDXGIBuffer::SetUnknown

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Gets the index of the subresource that is associated with this media buffer.

The subresource index is specified when you create the media buffer object. See .

For more information about texture subresources, see .

hh447903 GetSubresourceIndex GetSubresourceIndex HRESULT IMFDXGIBuffer::GetSubresourceIndex([Out] unsigned int* puSubresource)

Applies to: desktop apps | Metro style apps

Represents a block of memory that contains media data. Use this interface to access the data in the buffer.

If the buffer contains 2-D image data (such as an uncompressed video frame), you should query the buffer for the interface. The methods on are optimized for 2-D data.

To get a buffer from a media sample, call one of the following methods:

To create a new buffer object, use one of the following functions.

FunctionDescription
Creates a buffer and allocates system memory.
Creates a media buffer that wraps an existing media buffer.
MFCreateDXSurfaceBuffer Creates a buffer that manages a DirectX surface.
Creates a buffer and allocates system memory with a specified alignment.

?

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms696261 IMFMediaBuffer IMFMediaBuffer
Initializes a new instance of the class. The native pointer. Performs an explicit conversion from to . (This method is a shortcut to ) The native pointer. The result of the conversion.

Applies to: desktop apps | Metro style apps

Gives the caller access to the memory in the buffer, for reading or writing

Receives the maximum amount of data that can be written to the buffer. This parameter can be null. The same value is returned by the method.

Receives the length of the valid data in the buffer, in bytes. This parameter can be null. The same value is returned by the method.

Receives a reference to the start of the buffer.

This method gives the caller access to the entire buffer, up to the maximum size returned in the pcbMaxLength parameter. The value returned in pcbCurrentLength is the size of any valid data already in the buffer, which might be less than the total buffer size.

The reference returned in ppbBuffer is guaranteed to be valid, and can safely be accessed across the entire buffer for as long as the lock is held. When you are done accessing the buffer, call to unlock the buffer. You must call Unlock once for each call to Lock. After you unlock the buffer, the reference returned in ppbBuffer is no longer valid, and should not be used. Generally, it is best to call Lock only when you need to access the buffer memory, and not earlier.

Locking the buffer does not prevent other threads from calling Lock, so you should not rely on this method to synchronize threads.

This method does not allocate any memory, or transfer ownership of the memory to the caller. Do not release or free the memory; the media buffer will free the memory when the media buffer is destroyed.

If you modify the contents of the buffer, update the current length by calling .

If the buffer supports the interface, you should use the method to lock the buffer. For 2-D buffers, the Lock2D method is more efficient than the Lock method. If the buffer is locked using Lock2D, the Lock method might return MF_E_INVALIDREQUEST.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
bb970366 HRESULT IMFMediaBuffer::Lock([Out] void** ppbBuffer,[Out, Optional] unsigned int* pcbMaxLength,[Out, Optional] unsigned int* pcbCurrentLength) IMFMediaBuffer::Lock

Applies to: desktop apps | Metro style apps

Unlocks a buffer that was previously locked. Call this method once for every call to .

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

D3DERR_INVALIDCALL

For Direct3D surface buffers, an error occurred when unlocking the surface.

?

It is an error to call Unlock if you did not call Lock previously.

After calling this method, do not use the reference returned by the Lock method. It is no longer guaranteed to be valid.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms696259 HRESULT IMFMediaBuffer::Unlock() IMFMediaBuffer::Unlock

Applies to: desktop apps | Metro style apps

Retrieves the length of the valid data in the buffer.

Receives the length of the valid data, in bytes. If the buffer does not contain any valid data, the value is zero.

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

?

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms698987 HRESULT IMFMediaBuffer::GetCurrentLength([Out] unsigned int* pcbCurrentLength) IMFMediaBuffer::GetCurrentLength

Applies to: desktop apps | Metro style apps

Sets the length of the valid data in the buffer.

Length of the valid data, in bytes. This value cannot be greater than the allocated size of the buffer, which is returned by the method.

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

E_INVALIDARG

The specified length is greater than the maximum size of the buffer.

?

Call this method if you write data into the buffer.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms703202 HRESULT IMFMediaBuffer::SetCurrentLength([In] unsigned int cbCurrentLength) IMFMediaBuffer::SetCurrentLength

Applies to: desktop apps | Metro style apps

Retrieves the allocated size of the buffer.

Receives the allocated size of the buffer, in bytes.

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

?

The buffer might or might not contain any valid data, and if there is valid data in the buffer, it might be smaller than the buffer's allocated size. To get the length of the valid data, call .

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms704840 HRESULT IMFMediaBuffer::GetMaxLength([Out] unsigned int* pcbMaxLength) IMFMediaBuffer::GetMaxLength

Applies to: desktop apps | Metro style apps

Retrieves the length of the valid data in the buffer.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms698987 GetCurrentLength / SetCurrentLength GetCurrentLength HRESULT IMFMediaBuffer::GetCurrentLength([Out] unsigned int* pcbCurrentLength)

Applies to: desktop apps | Metro style apps

Retrieves the allocated size of the buffer.

The buffer might or might not contain any valid data, and if there is valid data in the buffer, it might be smaller than the buffer's allocated size. To get the length of the valid data, call .

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms704840 GetMaxLength GetMaxLength HRESULT IMFMediaBuffer::GetMaxLength([Out] unsigned int* pcbMaxLength)

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Provides the Media Engine with a list of media resources.

The interface represents an ordered list of media resources.

This interface enables the application to provide the same audio/video content in several different encoding formats, such as H.264 and Windows Media Video. If a particular codec is not present on the user's computer, the Media Engine will try the next URL in the list. To use this interface, do the following:

  1. Create an implementation of this interface.
  2. Initialize your implementation with a list of URLs. Optionally, provide MIME types and media query strings for each URL.
  3. Call the method.
hh447971 IMFMediaEngineSrcElements IMFMediaEngineSrcElements
Initializes a new instance of the class. The native pointer. Performs an explicit conversion from to . (This method is a shortcut to ) The native pointer. The result of the conversion.

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Gets the number of source elements in the list.

Returns the number of source elements.

hh447973 unsigned int IMFMediaEngineSrcElements::GetLength() IMFMediaEngineSrcElements::GetLength

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Gets the URL of an element in the list.

The zero-based index of the source element. To get the number of source elements, call .

Receives a BSTR that contains the URL of the source element. The caller must free the BSTR by calling SysFreeString. If no URL is set, this parameter receives the value null.

If this method succeeds, it returns . Otherwise, it returns an error code.

hh447976 HRESULT IMFMediaEngineSrcElements::GetURL([In] unsigned int index,[Out] wchar_t** pURL) IMFMediaEngineSrcElements::GetURL

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Gets the MIME type of an element in the list.

The zero-based index of the source element. To get the number of source elements, call .

Receives a BSTR that contains the MIME type. The caller must free the BSTR by calling SysFreeString. If no MIME type is set, this parameter receives the value null.

If this method succeeds, it returns . Otherwise, it returns an error code.

hh447975 HRESULT IMFMediaEngineSrcElements::GetType([In] unsigned int index,[Out] wchar_t** pType) IMFMediaEngineSrcElements::GetType

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Gets the intended media type of an element in the list.

The zero-based index of the source element. To get the number of source elements, call .

Receives a BSTR that contains a media-query string. The caller must free the BSTR by calling SysFreeString. If no media type is set, this parameter receives the value null.

If this method succeeds, it returns . Otherwise, it returns an error code.

The string returned in pMedia should be a media-query string that conforms to the W3C Media Queries specification.

hh447974 HRESULT IMFMediaEngineSrcElements::GetMedia([In] unsigned int index,[Out] wchar_t** pMedia) IMFMediaEngineSrcElements::GetMedia

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Adds a source element to the end of the list.

The URL of the source element, or null.

The MIME type of the source element, or null.

A media-query string that specifies the intended media type, or null. If specified, the string should conform to the W3C Media Queries specification.

If this method succeeds, it returns . Otherwise, it returns an error code.

Any of the parameters to this method can be null.

This method allocates copies of the BSTRs that are passed in.

hh447972 HRESULT IMFMediaEngineSrcElements::AddElement([In, Optional] wchar_t* pURL,[In, Optional] wchar_t* pType,[In, Optional] wchar_t* pMedia) IMFMediaEngineSrcElements::AddElement

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Removes all of the source elements from the list.

If this method succeeds, it returns . Otherwise, it returns an error code.

hh447977 HRESULT IMFMediaEngineSrcElements::RemoveAllElements() IMFMediaEngineSrcElements::RemoveAllElements

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Gets the number of source elements in the list.

hh447973 GetLength GetLength unsigned int IMFMediaEngineSrcElements::GetLength()

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Provides the current error status for the Media Engine.

The interface corresponds to the MediaError object in HTML5.

To get a reference to this interface, call .

hh448022 IMFMediaError IMFMediaError
Initializes a new instance of the class. The native pointer. Performs an explicit conversion from to . (This method is a shortcut to ) The native pointer. The result of the conversion.

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Gets the error code.

Returns a value from the enumeration.

hh448023 unsigned short IMFMediaError::GetErrorCode() IMFMediaError::GetErrorCode

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Gets the extended error code.

Returns an value that gives additional information about the last error.

hh448024 HRESULT IMFMediaError::GetExtendedErrorCode() IMFMediaError::GetExtendedErrorCode

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Sets the error code.

The error code, specified as an value.

If this method succeeds, it returns . Otherwise, it returns an error code.

hh448025 HRESULT IMFMediaError::SetErrorCode([In] MF_MEDIA_ENGINE_ERR error) IMFMediaError::SetErrorCode

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Sets the extended error code.

An value that gives additional information about the last error.

If this method succeeds, it returns . Otherwise, it returns an error code.

hh448026 HRESULT IMFMediaError::SetExtendedErrorCode([In] HRESULT error) IMFMediaError::SetExtendedErrorCode

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Gets the extended error code.

hh448024 GetExtendedErrorCode / SetExtendedErrorCode GetExtendedErrorCode HRESULT IMFMediaError::GetExtendedErrorCode()

Applies to: desktop apps | Metro style apps

Retrieves an that specifies the event status.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms704650 IMFMediaEvent IMFMediaEvent
Initializes a new instance of the class. The native pointer. Performs an explicit conversion from to . (This method is a shortcut to ) The native pointer. The result of the conversion.

Applies to: desktop apps | Metro style apps

Retrieves the event type. The event type indicates what happened to trigger the event. It also defines the meaning of the event value.

Receives the event type. For a list of event types, see Media Foundation Events.

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

?

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms702255 HRESULT IMFMediaEvent::GetType([Out] unsigned int* pmet) IMFMediaEvent::GetType

Applies to: desktop apps | Metro style apps

Retrieves the extended type of the event.

Receives a that identifies the extended type.

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

?

To define a custom event, create a new extended-type and send an event with that .

Some standard Media Foundation events also use the extended type to differentiate between types of event data.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms697235 HRESULT IMFMediaEvent::GetExtendedType([Out] GUID* pguidExtendedType) IMFMediaEvent::GetExtendedType

Applies to: desktop apps | Metro style apps

Retrieves an that specifies the event status.

Receives the event status. If the operation that generated the event was successful, the value is a success code. A failure code means that an error condition triggered the event.

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

?

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms704650 HRESULT IMFMediaEvent::GetStatus([Out] HRESULT* phrStatus) IMFMediaEvent::GetStatus

Applies to: desktop apps | Metro style apps

Represents an event generated by a Media Foundation object. Use this interface to get information about the event.

To get a reference to this interface, call or on the event generator.

No documentation. No documentation.

If you are implementing an object that generates events, call the MFCreateMediaEvent function to create a new event object.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms702249 HRESULT IMFMediaEvent::GetValue([Out] PROPVARIANT* pvValue) IMFMediaEvent::GetValue

Applies to: desktop apps | Metro style apps

Retrieves the event type. The event type indicates what happened to trigger the event. It also defines the meaning of the event value.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms702255 GetType GetType HRESULT IMFMediaEvent::GetType([Out] unsigned int* pmet)

Applies to: desktop apps | Metro style apps

Retrieves the extended type of the event.

To define a custom event, create a new extended-type and send an event with that .

Some standard Media Foundation events also use the extended type to differentiate between types of event data.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms697235 GetExtendedType GetExtendedType HRESULT IMFMediaEvent::GetExtendedType([Out] GUID* pguidExtendedType)

Applies to: desktop apps | Metro style apps

Retrieves an that specifies the event status.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms704650 GetStatus GetStatus HRESULT IMFMediaEvent::GetStatus([Out] HRESULT* phrStatus)

Applies to: desktop apps | Metro style apps

Represents an event generated by a Media Foundation object. Use this interface to get information about the event.

To get a reference to this interface, call or on the event generator.

If you are implementing an object that generates events, call the MFCreateMediaEvent function to create a new event object.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms702249 GetValue GetValue HRESULT IMFMediaEvent::GetValue([Out] PROPVARIANT* pvValue)

Applies to: desktop apps | Metro style apps

Retrieves events from any Media Foundation object that generates events.

An object that supports this interface maintains a queue of events. The client of the object can retrieve the events either synchronously or asynchronously. The synchronous method is GetEvent. The asynchronous methods are BeginGetEvent and EndGetEvent.

ms701755 IMFMediaEventGenerator IMFMediaEventGenerator
Initializes a new instance of the class. The native pointer. Performs an explicit conversion from to . (This method is a shortcut to ) The native pointer. The result of the conversion.

Applies to: desktop apps | Metro style apps

Retrieves the next event in the queue. This method is synchronous.

Specifies one of the following values.

ValueMeaning
0

The method blocks until the event generator queues an event.

MF_EVENT_FLAG_NO_WAIT

The method returns immediately.

?

Receives a reference to the interface. The caller must release the interface.

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

E_INVALIDARG

null reference argument.

MF_E_MULTIPLE_SUBSCRIBERS

There is a pending request.

MF_E_NO_EVENTS_AVAILABLE

There are no events in the queue.

MF_E_SHUTDOWN

The object was shut down.

?

This method executes synchronously.

If the queue already contains an event, the method returns immediately. If the queue does not contain an event, the behavior depends on the value of dwFlags:

  • If dwFlags is 0, the method blocks indefinitely until a new event is queued, or until the event generator is shut down.

  • If dwFlags is MF_EVENT_FLAG_NO_WAIT, the method fails immediately with the return code MF_E_NO_EVENTS_AVAILABLE.

This method returns MF_E_MULTIPLE_SUBSCRIBERS if you previously called and have not yet called .

ms704754 HRESULT IMFMediaEventGenerator::GetEvent([In] unsigned int dwFlags,[Out] IMFMediaEvent** ppEvent) IMFMediaEventGenerator::GetEvent

Applies to: desktop apps | Metro style apps

Begins an asynchronous request for the next event in the queue.

Pointer to the interface of a callback object. The client must implement this interface.

Pointer to the interface of a state object, defined by the caller. This parameter can be null. You can use this object to hold state information. The object is returned to the caller when the callback is invoked.

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

E_INVALIDARG

null reference argument.

MF_E_MULTIPLE_BEGIN

There is a pending request with the same callback reference and a different state object.

MF_E_MULTIPLE_SUBSCRIBERS

There is a pending request with a different callback reference.

MF_E_SHUTDOWN

The object was shut down.

MF_S_MULTIPLE_BEGIN

There is a pending request with the same callback reference and state object.

?

When a new event is available, the event generator calls the method. The Invoke method should call to get a reference to the interface, and use that interface to examine the event.

Do not call BeginGetEvent a second time before calling EndGetEvent. While the first call is still pending, additional calls to the same object will fail. Also, the method fails if an asynchronous request is still pending.

ms701637 HRESULT IMFMediaEventGenerator::BeginGetEvent([In] IMFAsyncCallback* pCallback,[In] IUnknown* punkState) IMFMediaEventGenerator::BeginGetEvent

Applies to: desktop apps | Metro style apps

Completes an asynchronous request for the next event in the queue.

Pointer to the interface. Pass in the same reference that your callback object received in the Invoke method.

Receives a reference to the interface. The caller must release the interface.

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

MF_E_SHUTDOWN

The object was shut down.

?

Call this method from inside your application's method. For example code, see .

ms698866 HRESULT IMFMediaEventGenerator::EndGetEvent([In] IMFAsyncResult* pResult,[Out] IMFMediaEvent** ppEvent) IMFMediaEventGenerator::EndGetEvent

Applies to: desktop apps | Metro style apps

Puts a new event in the object's queue.

Specifies the event type. The event type is returned by the event's method. For a list of event types, see Media Foundation Events.

The extended type. If the event does not have an extended type, use the value GUID_NULL. The extended type is returned by the event's method.

A success or failure code indicating the status of the event. This value is returned by the event's method.

Pointer to a that contains the event value. This parameter can be null. This value is returned by the event's method.

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

MF_E_SHUTDOWN

The object was shut down.

?

ms696255 HRESULT IMFMediaEventGenerator::QueueEvent([In] unsigned int met,[In] const GUID& guidExtendedType,[In] HRESULT hrStatus,[In, Optional] const PROPVARIANT* pvValue) IMFMediaEventGenerator::QueueEvent

Applies to: desktop apps | Metro style apps

Provides an event queue for applications that need to implement the interface.

This interface is exposed by a helper object that implements an event queue. If you are writing a component that implements the interface, you can use this object in your implementation. The event queue object is thread safe and provides methods to queue events and to pull them from the queue either synchronously or asynchronously. To create the event queue object, call MFCreateEventQueue.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms704617 IMFMediaEventQueue IMFMediaEventQueue
Initializes a new instance of the class. The native pointer. Performs an explicit conversion from to . (This method is a shortcut to ) The native pointer. The result of the conversion.

Applies to: desktop apps | Metro style apps

Retrieves the next event in the queue. This method is synchronous.

Call this method inside your implementation of . Pass the parameters from that method directly to this method.

No documentation. No documentation.

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

MF_E_SHUTDOWN

The Shutdown method was called.

?

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms702270 HRESULT IMFMediaEventQueue::GetEvent([In] unsigned int dwFlags,[Out] IMFMediaEvent** ppEvent) IMFMediaEventQueue::GetEvent

Applies to: desktop apps | Metro style apps

Begins an asynchronous request for the next event in the queue.

Call this method inside your implementation of . Pass the parameters from that method directly to this method.

No documentation. No documentation.

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

MF_E_SHUTDOWN

The Shutdown method was called.

?

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms696998 HRESULT IMFMediaEventQueue::BeginGetEvent([In] IMFAsyncCallback* pCallback,[In] IUnknown* punkState) IMFMediaEventQueue::BeginGetEvent

Applies to: desktop apps | Metro style apps

Completes an asynchronous request for the next event in the queue.

Call this method inside your implementation of . Pass the parameters from that method directly to this method.

No documentation. No documentation.

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

MF_E_SHUTDOWN

The Shutdown method was called.

?

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms702986 HRESULT IMFMediaEventQueue::EndGetEvent([In] IMFAsyncResult* pResult,[Out] IMFMediaEvent** ppEvent) IMFMediaEventQueue::EndGetEvent

Applies to: desktop apps | Metro style apps

Puts an event in the queue.

Pointer to the interface of the event to be put in the queue.

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

MF_E_SHUTDOWN

The Shutdown method was called.

?

Call this method when your component needs to raise an event that contains attributes. To create the event object, call MFCreateMediaEvent. Add attributes to the event by using methods from the interface. (The interface inherits .)

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms704792 HRESULT IMFMediaEventQueue::QueueEvent([In] IMFMediaEvent* pEvent) IMFMediaEventQueue::QueueEvent

Applies to: desktop apps | Metro style apps

Creates an event, sets a as the event data, and puts the event in the queue.

Call this method inside your implementation of . Pass the parameters from that method directly to this method.

You can also call this method when your component needs to raise an event that does not contain attributes. If the event data is an reference, you can use . If the event contains attributes, use instead.

No documentation. No documentation. No documentation. No documentation.

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

MF_E_SHUTDOWN

The Shutdown method was called.

?

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms704641 HRESULT IMFMediaEventQueue::QueueEventParamVar([In] unsigned int met,[In] const GUID& guidExtendedType,[In] HRESULT hrStatus,[In] const PROPVARIANT* pvValue) IMFMediaEventQueue::QueueEventParamVar

Applies to: desktop apps | Metro style apps

Creates an event, sets an reference as the event data, and puts the event in the queue.

Specifies the event type of the event to be added to the queue. The event type is returned by the event's method. For a list of event types, see Media Foundation Events.

The extended type of the event. If the event does not have an extended type, use the value GUID_NULL. The extended type is returned by the event's method.

A success or failure code indicating the status of the event. This value is returned by the event's method.

Pointer to the interface. The method sets this reference as the event value. The reference is returned by the event's method.

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

MF_E_SHUTDOWN

The Shutdown method was called.

?

Call this method when your component needs to raise an event that contains an reference value and no attributes. If the event contains attributes, use instead.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms704686 HRESULT IMFMediaEventQueue::QueueEventParamUnk([In] unsigned int met,[In] const GUID& guidExtendedType,[In] HRESULT hrStatus,[In] IUnknown* pUnk) IMFMediaEventQueue::QueueEventParamUnk

Applies to: desktop apps | Metro style apps

Shuts down the event queue.

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

?

Call this method when your component shuts down. After this method is called, all methods return MF_E_SHUTDOWN.

This method removes all of the events from the queue.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms698923 HRESULT IMFMediaEventQueue::Shutdown() IMFMediaEventQueue::Shutdown

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Represents a list of time ranges, where each range is defined by a start and end time.

The interface corresponds to the TimeRanges interface in HTML5.

Several methods return references.

hh448033 IMFMediaTimeRange IMFMediaTimeRange
Initializes a new instance of the class. The native pointer. Performs an explicit conversion from to . (This method is a shortcut to ) The native pointer. The result of the conversion.

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Gets the number of time ranges contained in the object.

Returns the number of time ranges.

This method corresponds to the TimeRanges.length attribute in HTML5.

hh448038 unsigned int IMFMediaTimeRange::GetLength() IMFMediaTimeRange::GetLength

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Gets the start time for a specified time range.

The zero-based index of the time range to query. To get the number of time ranges, call .

Receives the start time, in seconds.

If this method succeeds, it returns . Otherwise, it returns an error code.

This method corresponds to the TimeRanges.start method in HTML5.

hh448039 HRESULT IMFMediaTimeRange::GetStart([In] unsigned int index,[Out] double* pStart) IMFMediaTimeRange::GetStart

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Gets the end time for a specified time range.

The zero-based index of the time range to query. To get the number of time ranges, call .

Receives the end time, in seconds.

If this method succeeds, it returns . Otherwise, it returns an error code.

This method corresponds to the TimeRanges.end method in HTML5.

hh448037 HRESULT IMFMediaTimeRange::GetEnd([In] unsigned int index,[Out] double* pEnd) IMFMediaTimeRange::GetEnd

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Queries whether a specified time falls within any of the time ranges.

The time, in seconds.

Returns TRUE if any time range contained in this object spans the value of the time parameter. Otherwise, returns .

This method returns TRUE if the following condition holds for any time range in the list:

(start <= time) && (time <= end)
hh448036 BOOL IMFMediaTimeRange::ContainsTime([In] double time) IMFMediaTimeRange::ContainsTime

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Adds a new range to the list of time ranges.

The start time, in seconds.

The end time, in seconds.

If this method succeeds, it returns . Otherwise, it returns an error code.

If the new range intersects a range already in the list, the two ranges are combined. Otherwise, the new range is added to the list.

hh448034 HRESULT IMFMediaTimeRange::AddRange([In] double startTime,[In] double endTime) IMFMediaTimeRange::AddRange

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Clears the list of time ranges.

If this method succeeds, it returns . Otherwise, it returns an error code.

hh448035 HRESULT IMFMediaTimeRange::Clear() IMFMediaTimeRange::Clear

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Gets the number of time ranges contained in the object.

This method corresponds to the TimeRanges.length attribute in HTML5.

hh448038 GetLength GetLength unsigned int IMFMediaTimeRange::GetLength()

Applies to: desktop apps | Metro style apps

Represents a description of a media format.

To create a new media type, call MFCreateMediaType.

All of the information in a media type is stored as attributes. To clone a media type, call .

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms704850 IMFMediaType IMFMediaType
Initializes a new instance of the class. The native pointer. Performs an explicit conversion from to . (This method is a shortcut to ) The native pointer. The result of the conversion.

Applies to: desktop apps | Metro style apps

Gets the major type of the format.

Receives the major type . The major type describes the broad category of the format, such as audio or video. For a list of possible values, see Major Media Types.

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

MF_E_ATTRIBUTENOTFOUND

The major type is not set.

?

This method is equivalent to getting the attribute from the media type.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms701588 HRESULT IMFMediaType::GetMajorType([Out] GUID* pguidMajorType) IMFMediaType::GetMajorType

Applies to: desktop apps | Metro style apps

Queries whether the media type is a temporally compressed format. Temporal compression uses information from previously decoded samples when decompressing the current sample.

Receives a Boolean value. The value is TRUE if the format uses temporal compression, or if the format does not use temporal compression.

If this method succeeds, it returns . Otherwise, it returns an error code.

This method returns in pfCompressed if the media type's attribute is TRUE. If the attribute is or not set, the method returns TRUE.

If the method returns TRUE in pfCompressed, it is a hint that the format has temporal compression applied to it. If the method returns , the format does not use temporal compression, although it might use intra-frame compression.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms703821 HRESULT IMFMediaType::IsCompressedFormat([Out] BOOL* pfCompressed) IMFMediaType::IsCompressedFormat

Applies to: desktop apps | Metro style apps

Compares two media types and determines whether they are identical. If they are not identical, the method indicates how the two formats differ.

Pointer to the interface of the media type to compare.

Receives a bitwise OR of zero or more flags, indicating the degree of similarity between the two media types. The following flags are defined.

ValueMeaning
MF_MEDIATYPE_EQUAL_MAJOR_TYPES
0x00000001

The major types are the same. The major type is specified by the attribute.

MF_MEDIATYPE_EQUAL_FORMAT_TYPES
0x00000002

The subtypes are the same, or neither media type has a subtype. The subtype is specified by the attribute.

MF_MEDIATYPE_EQUAL_FORMAT_DATA
0x00000004

The attributes in one of the media types are a subset of the attributes in the other, and the values of these attributes match, excluding the value of the attribute.

Specifically, the method takes the media type with the smaller number of attributes and checks whether each attribute from that type is present in the other media type and has the same value (not including ).

To perform other comparisons, use the method. For example, the Compare method can test for identical attributes, or test the intersection of the two attribute sets. For more information, see .

MF_MEDIATYPE_EQUAL_FORMAT_USER_DATA
0x00000008

The user data is identical, or neither media type contains user data. User data is specified by the attribute.

?

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription
S_FALSE

The types are not equal. Examine the pdwFlags parameter to determine how the types differ.

The types are equal.

E_INVALIDARG

One or both media types are invalid.

?

Both of the media types must have a major type, or the method returns E_INVALIDARG.

If the method succeeds and all of the comparison flags are set in pdwFlags, the return value is . If the method succeeds but one or more comparison flags are not set, the method returns S_FALSE.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms696980 HRESULT IMFMediaType::IsEqual([In] IMFMediaType* pIMediaType,[Out] unsigned int* pdwFlags) IMFMediaType::IsEqual

Applies to: desktop apps | Metro style apps

Retrieves an alternative representation of the media type. Currently only the DirectShow structure is supported.

that specifies the representation to retrieve. The following values are defined.

ValueMeaning
AM_MEDIA_TYPE_REPRESENTATION

Convert the media type to a DirectShow structure. The method selects the most appropriate format structure (pbFormat).

FORMAT_MFVideoFormat

Convert the media type to a DirectShow structure with an MFVIDEOFORMAT format structure.

FORMAT_VideoInfo

Convert the media type to a DirectShow structure with a format structure.

FORMAT_VideoInfo2

Convert the media type to a DirectShow structure with a format structure.

?

Receives a reference to a structure that contains the representation. The method allocates the memory for the structure. The caller must release the memory by calling .

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

MF_E_ATTRIBUTENOTFOUND

The details of the media type do not match the requested representation.

MF_E_INVALIDMEDIATYPE

The media type is not valid.

MF_E_UNSUPPORTED_REPRESENTATION

The media type does not support the requested representation.

?

If you request a specific format structure in the guidRepresentation parameter, such as , you might lose some of the format information.

You can also use the MFInitAMMediaTypeFromMFMediaType function to convert a Media Foundation media type into a DirectShow media type.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms695248 HRESULT IMFMediaType::GetRepresentation([In] GUID guidRepresentation,[Out] void** ppvRepresentation) IMFMediaType::GetRepresentation

Applies to: desktop apps | Metro style apps

Frees memory that was allocated by the method.

No documentation. No documentation.

If this method succeeds, it returns . Otherwise, it returns an error code.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms703846 HRESULT IMFMediaType::FreeRepresentation([In] GUID guidRepresentation,[In] void* pvRepresentation) IMFMediaType::FreeRepresentation

Applies to: desktop apps | Metro style apps

Gets the major type of the format.

This method is equivalent to getting the attribute from the media type.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms701588 GetMajorType GetMajorType HRESULT IMFMediaType::GetMajorType([Out] GUID* pguidMajorType)

Applies to: desktop apps | Metro style apps

Queries whether the media type is a temporally compressed format. Temporal compression uses information from previously decoded samples when decompressing the current sample.

This method returns in pfCompressed if the media type's attribute is TRUE. If the attribute is or not set, the method returns TRUE.

If the method returns TRUE in pfCompressed, it is a hint that the format has temporal compression applied to it. If the method returns , the format does not use temporal compression, although it might use intra-frame compression.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms703821 IsCompressedFormat IsCompressedFormat HRESULT IMFMediaType::IsCompressedFormat([Out] BOOL* pfCompressed)

This topic describes how to implement the interface.

It is rare that you will need to write a custom implementation of the interface. In almost all cases, the standard Media Foundation implementation is sufficient. (This implementation is returned by the function.) However, if you do write a custom implementation, there are some issues to be aware of.

First, your implementation must inherit the structure. The Media Foundation work queues use this structure internally to dispatch the operation. Initialize all of the structure members to zero, except for the pCallback member, which contains a reference to the caller's callback interface.

Second, your object should call in its constructor, to lock the Media Foundation platform. Call to unlock the platform. These functions help to prevent the platform from shutting down before the object is destroyed. For more information, see Work Queues.

The following code shows a basic implementation of the interface. As shown, this code provides no additional features beyond the standard Media Foundation implementation.

///////////////////////////////////////////////////////////////////////////////	
            //  CMyAsyncResult	
            //	
            //  Custom implementation of . All implementations of this 	
            //  interface must inherit the  structure.	
            // 	
            /////////////////////////////////////////////////////////////////////////////// class CMyAsyncResult : public 	
            {	
            protected: LONG        m_cRef;             // Reference count.         m_bLockPlatform;    // Locked the Media Foundation platform? *   m_pState;           // Caller's state object.  *   m_pObject;  // Optional object. See . // Constructor.  CMyAsyncResult( *pCallback,  *pState,  *phr) : m_cRef(1), m_bLockPlatform(), m_pObject(null), m_pState(pState) { *phr = (); m_bLockPlatform = TRUE; // Initialize the  members. ZeroMemory(&this->overlapped, sizeof(OVERLAPPED)); hrStatusResult = ; dwBytesTransferred = 0; hEvent = null; this->pCallback = pCallback; if (pCallback) { this->pCallback->AddRef(); } if (m_pState) { m_pState->AddRef(); } } virtual ~CMyAsyncResult() { SafeRelease(&pCallback); SafeRelease(&m_pState); SafeRelease(&m_pObject); if (m_bLockPlatform) { (); } } public: // Static method to create an instance of this object. static  CreateInstance(  *pCallback,    // Callback to invoke.  *pState,               // Optional state object. CMyAsyncResult **ppResult       // Receives a reference to the object. ) {  hr = ; *ppResult = null; CMyAsyncResult *pResult =  new (std::nothrow) CMyAsyncResult(pCallback, pState, &hr); if (pResult == null) { return E_OUTOFMEMORY; } if (FAILED(hr)) { delete pResult; return hr; } // If the callback is null, create an event that will be signaled. if (pCallback == null) { pResult->hEvent = CreateEvent(null, , , null); if (pResult->hEvent == null) { hr = HRESULT_FROM_WIN32(GetLastError()); } } if (SUCCEEDED(hr)) { *ppResult = pResult;  // Return the reference to the caller. } else { pResult->Release(); } return hr; } // SetObject: Sets the optional result object.  // (This method is not part of the interface.)  SetObject( *pObject) { SafeRelease(&m_pObject); m_pObject = pObject; if (pObject) { m_pObject->AddRef(); } return ; } //  methods. STDMETHODIMP QueryInterface(REFIID riid, void **ppv) { static const QITAB qit[] =  { QITABENT(CMyAsyncResult, ), { 0 } }; return QISearch(this, qit, riid, ppv); } STDMETHODIMP_(ULONG) AddRef() { return InterlockedIncrement(&m_cRef); } STDMETHODIMP_(ULONG) Release() { LONG cRef = InterlockedDecrement(&m_cRef); if (cRef == 0) { delete this; } return cRef; } //  methods. STDMETHODIMP GetState(** ppunkState) { if (ppunkState == null) { return E_POINTER; } *ppunkState = m_pState; if (m_pState) { (*ppunkState)->AddRef(); } return ; } STDMETHODIMP GetStatus( void) { return hrStatusResult; } STDMETHODIMP STDMETHODCALLTYPE SetStatus( hrStatus) { hrStatusResult = hrStatus; return ; } STDMETHODIMP GetObject( **ppObject) { if (ppObject == null) { return E_POINTER; } *ppObject = m_pObject; if (m_pObject) { (*ppObject)->AddRef(); } return ; } * STDMETHODCALLTYPE GetStateNoAddRef() { return m_pState;  // Warning! Can be null.  }	
            };	
            
aa370805 MFASYNCRESULT MFASYNCRESULT
Initializes a new instance of the class. The native pointer. Performs an explicit conversion from to . (This method is a shortcut to ) The native pointer. The result of the conversion.

Applies to: desktop apps | Metro style apps

Represents a media sample, which is a container object for media data. For video, a sample typically contains one video frame. For audio data, a sample typically contains multiple audio samples, rather than a single sample of audio.

A media sample contains zero or more buffers. Each buffer manages a block of memory, and is represented by the interface. A sample can have multiple buffers. The buffers are kept in an ordered list and accessed by index value. It is also valid to have an empty sample with no buffers.

To create a new media sample, call .

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms702192 IMFSample IMFSample
Initializes a new instance of the class. The native pointer. Performs an explicit conversion from to . (This method is a shortcut to ) The native pointer. The result of the conversion.

Applies to: desktop apps | Metro style apps

Retrieves flags associated with the sample.

Currently no flags are defined. Instead, metadata for samples is defined using attributes. To get attibutes from a sample, use the interface, which inherits. For a list of sample attributes, see Sample Attributes.

No documentation.

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

?

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms701587 HRESULT IMFSample::GetSampleFlags([Out] unsigned int* pdwSampleFlags) IMFSample::GetSampleFlags

Applies to: desktop apps | Metro style apps

Sets flags associated with the sample.

Currently no flags are defined. Instead, metadata for samples is defined using attributes. To set attibutes on a sample, use the interface, which inherits. For a list of sample attributes, see Sample Attributes.

No documentation.

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

?

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms696207 HRESULT IMFSample::SetSampleFlags([In] unsigned int dwSampleFlags) IMFSample::SetSampleFlags

Applies to: desktop apps | Metro style apps

Retrieves the presentation time of the sample.

Receives the presentation time, in 100-nanosecond units.

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

MF_E_NO_SAMPLE_TIMESTAMP

The sample does not have a presentation time.

?

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms705645 HRESULT IMFSample::GetSampleTime([Out] longlong* phnsSampleTime) IMFSample::GetSampleTime

Applies to: desktop apps | Metro style apps

Sets the presentation time of the sample.

The presentation time, in 100-nanosecond units.

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

?

Some pipeline components require samples that have time stamps. Generally the component that generates the data for the sample also sets the time stamp. The Media Session might modify the time stamps.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms697282 HRESULT IMFSample::SetSampleTime([In] longlong hnsSampleTime) IMFSample::SetSampleTime

Applies to: desktop apps | Metro style apps

Retrieves the duration of the sample.

Receives the duration, in 100-nanosecond units.

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

MF_E_NO_SAMPLE_DURATION

The sample does not have a specified duration.

?

If the sample contains more than one buffer, the duration includes the data from all of the buffers.

If the retrieved duration is zero, or if the method returns MF_E_NO_SAMPLE_DURATION, the duration is unknown. In that case, it might be possible to calculate the duration from the media type?for example, by using the video frame rate or the audio sampling rate.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms703056 HRESULT IMFSample::GetSampleDuration([Out] longlong* phnsSampleDuration) IMFSample::GetSampleDuration

Applies to: desktop apps | Metro style apps

Sets the duration of the sample.

Duration of the sample, in 100-nanosecond units.

If this method succeeds, it returns . Otherwise, it returns an error code.

This method succeeds if the duration is negative, although negative durations are probably not valid for most types of data. It is the responsibility of the object that consumes the sample to validate the duration.

The duration can also be zero. This might be valid for some types of data. For example, the sample might contain stream metadata with no buffers.

Until this method is called, the method returns MF_E_NO_SAMPLE_DURATION.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms705626 HRESULT IMFSample::SetSampleDuration([In] longlong hnsSampleDuration) IMFSample::SetSampleDuration

Applies to: desktop apps | Metro style apps

Retrieves the number of buffers in the sample.

Receives the number of buffers in the sample. A sample might contain zero buffers.

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

?

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms705655 HRESULT IMFSample::GetBufferCount([Out] unsigned int* pdwBufferCount) IMFSample::GetBufferCount

Applies to: desktop apps | Metro style apps

Gets a buffer from the sample, by index.

Note??In most cases, it is safer to use the method. If the sample contains more than one buffer, the ConvertToContiguousBuffer method replaces them with a single buffer, copies the original data into that buffer, and returns the new buffer to the caller. The copy operation occurs at most once. On subsequent calls, no data is copied.

No documentation. No documentation.

A sample might contain more than one buffer. Use the GetBufferByIndex method to enumerate the individual buffers.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms697014 HRESULT IMFSample::GetBufferByIndex([In] unsigned int dwIndex,[Out] IMFMediaBuffer** ppBuffer) IMFSample::GetBufferByIndex

Applies to: desktop apps | Metro style apps

Converts a sample with multiple buffers into a sample with a single buffer.

Receives a reference to the interface. The caller must release the interface.

If the sample contains more than one buffer, this method copies the data from the original buffers into a new buffer, and replaces the original buffer list with the new buffer. The new buffer is returned in the ppBuffer parameter.

If the sample contains a single buffer, this method returns a reference to the original buffer. In typical use, most samples do not contain multiple buffers.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms698917 HRESULT IMFSample::ConvertToContiguousBuffer([Out] IMFMediaBuffer** ppBuffer) IMFSample::ConvertToContiguousBuffer

Applies to: desktop apps | Metro style apps

Adds a buffer to the end of the list of buffers in the sample.

Pointer to the buffer's interface.

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

E_INVALIDARG

null reference argument.

?

For uncompressed video data, each buffer should contain a single video frame, and samples should not contain multiple frames. In general, storing multiple buffers in a sample is discouraged.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms697465 HRESULT IMFSample::AddBuffer([In] IMFMediaBuffer* pBuffer) IMFSample::AddBuffer

Applies to: desktop apps | Metro style apps

Removes a buffer at a specified index from the sample.

Index of the buffer. To find the number of buffers in the sample, call . Buffers are indexed from zero.

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

?

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms705646 HRESULT IMFSample::RemoveBufferByIndex([In] unsigned int dwIndex) IMFSample::RemoveBufferByIndex

Applies to: desktop apps | Metro style apps

Removes all of the buffers from the sample.

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

?

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms703108 HRESULT IMFSample::RemoveAllBuffers() IMFSample::RemoveAllBuffers

Applies to: desktop apps | Metro style apps

Retrieves the total length of the valid data in all of the buffers in the sample. The length is calculated as the sum of the values retrieved by the method.

No documentation.

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

?

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms704584 HRESULT IMFSample::GetTotalLength([Out] unsigned int* pcbTotalLength) IMFSample::GetTotalLength

Applies to: desktop apps | Metro style apps

Copies the sample data to a buffer. This method concatenates the valid data from all of the buffers of the sample, in order.

Pointer to the interface of the destination buffer. The buffer must be large enough to hold the valid data in the sample. To get the size of the data in the sample, call .

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

E_INVALIDARG

null reference argument.

MF_E_BUFFERTOOSMALL

The buffer is not large enough to contain the data.

?

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms703119 HRESULT IMFSample::CopyToBuffer([In] IMFMediaBuffer* pBuffer) IMFSample::CopyToBuffer

Applies to: desktop apps | Metro style apps

Retrieves flags associated with the sample.

Currently no flags are defined. Instead, metadata for samples is defined using attributes. To get attibutes from a sample, use the interface, which inherits. For a list of sample attributes, see Sample Attributes.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms701587 GetSampleFlags / SetSampleFlags GetSampleFlags HRESULT IMFSample::GetSampleFlags([Out] unsigned int* pdwSampleFlags)

Applies to: desktop apps | Metro style apps

Retrieves the presentation time of the sample.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms705645 GetSampleTime / SetSampleTime GetSampleTime HRESULT IMFSample::GetSampleTime([Out] longlong* phnsSampleTime)

Applies to: desktop apps | Metro style apps

Retrieves the duration of the sample.

If the sample contains more than one buffer, the duration includes the data from all of the buffers.

If the retrieved duration is zero, or if the method returns MF_E_NO_SAMPLE_DURATION, the duration is unknown. In that case, it might be possible to calculate the duration from the media type?for example, by using the video frame rate or the audio sampling rate.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms703056 GetSampleDuration / SetSampleDuration GetSampleDuration HRESULT IMFSample::GetSampleDuration([Out] longlong* phnsSampleDuration)

Applies to: desktop apps | Metro style apps

Retrieves the number of buffers in the sample.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms705655 GetBufferCount GetBufferCount HRESULT IMFSample::GetBufferCount([Out] unsigned int* pdwBufferCount)

Applies to: desktop apps | Metro style apps

Retrieves the total length of the valid data in all of the buffers in the sample. The length is calculated as the sum of the values retrieved by the method.

This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms704584 GetTotalLength GetTotalLength HRESULT IMFSample::GetTotalLength([Out] unsigned int* pcbTotalLength)

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Begins an asynchronous request to write a media sample to the stream.

When the sample has been written to the stream, the callback object's method is called. At that point, the caller should call to complete the asynchronous request.

hh448052 IMFSampleOutputStream IMFSampleOutputStream
Initializes a new instance of the class. The native pointer. Performs an explicit conversion from to . (This method is a shortcut to ) The native pointer. The result of the conversion.

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Begins an asynchronous request to write a media sample to the stream.

A reference to the interface of the sample.

A reference to the interface of a callback object. The caller must implement this interface.

A reference to the interface of a state object, defined by the caller. This parameter can be null. You can use this object to hold state information. The object is returned to the caller when the callback is invoked.

If this method succeeds, it returns . Otherwise, it returns an error code.

When the sample has been written to the stream, the callback object's method is called. At that point, the caller should call to complete the asynchronous request.

hh448052 HRESULT IMFSampleOutputStream::BeginWriteSample([In, Optional] IMFSample* pSample,[In, Optional] IMFAsyncCallback* pCallback,[In, Optional] IUnknown* punkState) IMFSampleOutputStream::BeginWriteSample

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps | Metro style apps

Completes an asynchronous request to write a media sample to the stream.

A reference to the interface. Pass in the same reference that your callback object received in the method.

If this method succeeds, it returns . Otherwise, it returns an error code.

Call this method when the method completes asynchronously.

hh448053 HRESULT IMFSampleOutputStream::EndWriteSample([In, Optional] IMFAsyncResult* pResult) IMFSampleOutputStream::EndWriteSample

[This documentation is preliminary and is subject to change.]

These are the API elements for use in desktop apps that are new for Windows?8 Consumer Preview:

  • Win32/{{COM}}
  • Windows

For a list of technologies that are new for desktop apps, see Windows 8 Technologies.

For info about the APIs that can be used in Metro style apps, see APIs for Metro style apps.

No documentation. hh405363 HRESULT IMFSampleOutputStream::Close() IMFSampleOutputStream::Close

Applies to: desktop apps | Metro style apps

Implemented by all Media Foundation Transforms (MFTs).

ms696260 IMFTransform IMFTransform
Initializes a new instance of the class. The native pointer. Performs an explicit conversion from to . (This method is a shortcut to ) The native pointer. The result of the conversion.

Applies to: desktop apps | Metro style apps

Gets the minimum and maximum number of input and output streams for this Media Foundation transform (MFT).

Receives the minimum number of input streams.

Receives the maximum number of input streams. If there is no maximum, receives the value MFT_STREAMS_UNLIMITED.

Receives the minimum number of output streams.

Receives the maximum number of output streams. If there is no maximum, receives the value MFT_STREAMS_UNLIMITED.

If this method succeeds, it returns . Otherwise, it returns an error code.

If the MFT has a fixed number of streams, the minimum and maximum values are the same.

It is not recommended to create an MFT that supports zero inputs or zero outputs. An MFT with no inputs or no outputs may not be compatible with the rest of the Media Foundation pipeline. You should create a Media Foundation sink or source for this purpose instead.

When an MFT is first created, it is not guaranteed to have the minimum number of streams. To find the actual number of streams, call .

This method should not be called with null parameters, although in practice some implementations may allow null parameters.

If MFT_UNIQUE_METHOD_NAMES is defined before including mftransform.h, this method is renamed MFTGetStreamLimits. See Creating Hybrid DMO/MFT Objects.

ms697040 HRESULT IMFTransform::GetStreamLimits([Out] unsigned int* pdwInputMinimum,[Out] unsigned int* pdwInputMaximum,[Out] unsigned int* pdwOutputMinimum,[Out] unsigned int* pdwOutputMaximum) IMFTransform::GetStreamLimits

Applies to: desktop apps | Metro style apps

Gets the current number of input and output streams on this Media Foundation transform (MFT).

Receives the number of input streams.

Receives the number of output streams.

If this method succeeds, it returns . Otherwise, it returns an error code.

The number of streams includes unselected streams?that is, streams with no media type or a null media type.

This method should not be called with null parameters, although in practice some implementations may allow null parameters.

If MFT_UNIQUE_METHOD_NAMES is defined before including mftransform.h, this method is renamed MFTGetStreamCount. See Creating Hybrid DMO/MFT Objects.

ms697018 HRESULT IMFTransform::GetStreamCount([Out] unsigned int* pcInputStreams,[Out] unsigned int* pcOutputStreams) IMFTransform::GetStreamCount

Applies to: desktop apps | Metro style apps

Gets the stream identifiers for the input and output streams on this Media Foundation transform (MFT).

Number of elements in the pdwInputIDs array.

Pointer to an array allocated by the caller. The method fills the array with the input stream identifiers. The array size must be at least equal to the number of input streams. To get the number of input streams, call .

If the caller passes an array that is larger than the number of input streams, the MFT must not write values into the extra array entries.

Number of elements in the pdwOutputIDs array.

Pointer to an array allocated by the caller. The method fills the array with the output stream identifiers. The array size must be at least equal to the number of output streams. To get the number of output streams, call GetStreamCount.

If the caller passes an array that is larger than the number of output streams, the MFT must not write values into the extra array entries.

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

E_NOTIMPL

Not implemented. See Remarks.

MF_E_BUFFERTOOSMALL

One or both of the arrays is too small.

?

Stream identifiers are necessary because some MFTs can add or remove streams, so the index of a stream may not be unique. Therefore, methods that operate on streams take stream identifiers.

This method can return E_NOTIMPL if both of the following conditions are true:

  • The transform has a fixed number of streams.
  • The streams are numbered consecutively from 0 to n ? 1, where n is the number of input streams or output streams. In other words, the first input stream is 0, the second is 1, and so on; and the first output stream is 0, the second is 1, and so on.

This method must be implemented if any of the following conditions is true:

  • The MFT can add or remove output streams.
  • The MFT allows the client to add or remove input streams.
  • The stream identifiers are not consecutive.

All input stream identifiers must be unique within an MFT, and all output stream identifiers must be unique. However, an input stream and an output stream can share the same identifier.

If the client adds an input stream, the client assigns the identifier, so the MFT must allow arbitrary identifiers, as long as they are unique. If the MFT creates an output stream, the MFT assigns the identifier.

By convention, if an MFT has exactly one fixed input stream and one fixed output stream, it should assign the identifier 0 to both streams.

If MFT_UNIQUE_METHOD_NAMES is defined before including mftransform.h, this method is renamed MFTGetStreamIDs. See Creating Hybrid DMO/MFT Objects.

ms693988 HRESULT IMFTransform::GetStreamIDs([In] unsigned int dwInputIDArraySize,[Out, Buffer] unsigned int* pdwInputIDs,[In] unsigned int dwOutputIDArraySize,[Out, Buffer] unsigned int* pdwOutputIDs) IMFTransform::GetStreamIDs

Applies to: desktop apps | Metro style apps

Gets the buffer requirements and other information for an input stream on this Media Foundation transform (MFT).

Input stream identifier. To get the list of stream identifiers, call .

Pointer to an structure. The method fills the structure with information about the input stream.

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

MF_E_INVALIDSTREAMNUMBER

Invalid stream identifier.

?

It is valid to call this method before setting the media types.

If MFT_UNIQUE_METHOD_NAMES is defined before including mftransform.h, this method is renamed MFTGetInputStreamInfo. See Creating Hybrid DMO/MFT Objects.

ms703894 HRESULT IMFTransform::GetInputStreamInfo([In] unsigned int dwInputStreamID,[Out] MFT_INPUT_STREAM_INFO* pStreamInfo) IMFTransform::GetInputStreamInfo

Applies to: desktop apps | Metro style apps

Gets the buffer requirements and other information for an output stream on this Media Foundation transform (MFT).

Output stream identifier. To get the list of stream identifiers, call .

Pointer to an structure. The method fills the structure with information about the output stream.

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

MF_E_INVALIDSTREAMNUMBER

Invalid stream number.

?

It is valid to call this method before setting the media types.

If MFT_UNIQUE_METHOD_NAMES is defined before including mftransform.h, this method is renamed MFTGetOutputStreamInfo. See Creating Hybrid DMO/MFT Objects.

ms693880 HRESULT IMFTransform::GetOutputStreamInfo([In] unsigned int dwOutputStreamID,[Out] MFT_OUTPUT_STREAM_INFO* pStreamInfo) IMFTransform::GetOutputStreamInfo

Applies to: desktop apps | Metro style apps

Gets the global attribute store for this Media Foundation transform (MFT).

Receives a reference to the interface. The caller must release the interface.

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

E_NOTIMPL

The MFT does not support attributes.

?

Use the reference retrieved by this method to get or set attributes that apply to the entire MFT. To get the attribute store for an input stream, call . To get the attribute store for an output stream, call .

Implementation of this method is optional unless the MFT needs to support a particular set of attributes. Exception: Hardware-based MFTs must implement this method. See Hardware MFTs.

ms703141 HRESULT IMFTransform::GetAttributes([Out] IMFAttributes** pAttributes) IMFTransform::GetAttributes

Applies to: desktop apps | Metro style apps

Gets the attribute store for an input stream on this Media Foundation transform (MFT).

Input stream identifier. To get the list of stream identifiers, call .

Receives a reference to the interface. The caller must release the interface.

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

E_NOTIMPL

The MFT does not support input stream attributes.

MF_E_INVALIDSTREAMNUMBER

Invalid stream identifier.

?

Implementation of this method is optional unless the MFT needs to support a particular set of attributes.

To get the attribute store for the entire MFT, call .

ms695366 HRESULT IMFTransform::GetInputStreamAttributes([In] unsigned int dwInputStreamID,[Out] IMFAttributes** pAttributes) IMFTransform::GetInputStreamAttributes

Applies to: desktop apps | Metro style apps

Gets the attribute store for an output stream on this Media Foundation transform (MFT).

Output stream identifier. To get the list of stream identifiers, call .

Receives a reference to the interface. The caller must release the interface.

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

E_NOTIMPL

The MFT does not support output stream attributes.

MF_E_INVALIDSTREAMNUMBER

Invalid stream identifier.

?

Implementation of this method is optional unless the MFT needs to support a particular set of attributes.

To get the attribute store for the entire MFT, call .

ms703886 HRESULT IMFTransform::GetOutputStreamAttributes([In] unsigned int dwOutputStreamID,[Out] IMFAttributes** pAttributes) IMFTransform::GetOutputStreamAttributes

Applies to: desktop apps | Metro style apps

Removes an input stream from this Media Foundation transform (MFT).

Identifier of the input stream to remove.

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

E_NOTIMPL

The transform has a fixed number of input streams.

MF_E_INVALIDREQUEST

The stream is not removable, or the transform currently has the minimum number of input streams it can support.

MF_E_INVALIDSTREAMNUMBER

Invalid stream identifier.

MF_E_TRANSFORM_INPUT_REMAINING

The transform has unprocessed input buffers for the specified stream.

?

If the transform has a fixed number of input streams, the method returns E_NOTIMPL.

An MFT might support this method but not allow certain input streams to be removed. If an input stream can be removed, the method returns the flag for that stream. Otherwise, the stream cannot be removed, and the method returns MF_E_INVALIDREQUEST. The method also fails if the MFT currently has the minimum number of input streams that it requires. To find the minimum number of streams, call .

If the transform still has unprocessed input for that stream, the method might succeed or it might return MF_E_TRANSFORM_INPUT_REMAINING. If the method succeeds, the MFT will continue to process the remaining input after the stream is removed. If the method returns MF_E_TRANSFORM_INPUT_REMAINING, you must clear the input buffers before removing the stream. To clear the input buffers, either call or else call with the to flush the MFT. Then call the DeleteInputStream again. An MFT should never discard input buffers when DeleteInputStream is called.

If MFT_UNIQUE_METHOD_NAMES is defined before including mftransform.h, this method is renamed MFTDeleteInputStream. See Creating Hybrid DMO/MFT Objects.

ms703159 HRESULT IMFTransform::DeleteInputStream([In] unsigned int dwStreamID) IMFTransform::DeleteInputStream

Applies to: desktop apps | Metro style apps

Adds one or more new input streams to this Media Foundation transform (MFT).

Number of streams to add.

Array of stream identifiers. The new stream identifiers must not match any existing input streams.

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

E_INVALIDARG

Invalid argument.

E_NOTIMPL

The MFT has a fixed number of input streams.

?

If the new streams exceed the maximum number of input streams for this transform, the method returns E_INVALIDARG. To find the maximum number of input streams, call .

If any of the new stream identifiers conflicts with an existing input stream, the method returns E_INVALIDARG.

If MFT_UNIQUE_METHOD_NAMES is defined before including mftransform.h, this method is renamed MFTAddInputStreams. See Creating Hybrid DMO/MFT Objects.

ms696211 HRESULT IMFTransform::AddInputStreams([In] unsigned int cStreams,[In] unsigned int* adwStreamIDs) IMFTransform::AddInputStreams

Applies to: desktop apps | Metro style apps

Gets an available media type for an input stream on this Media Foundation transform (MFT).

Input stream identifier. To get the list of stream identifiers, call .

Index of the media type to retrieve. Media types are indexed from zero and returned in approximate order of preference.

Receives a reference to the interface.

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

E_NOTIMPL

The MFT does not have a list of available input types.

MF_E_INVALIDSTREAMNUMBER

Invalid stream identifier.

MF_E_NO_MORE_TYPES

The dwTypeIndex parameter is out of range.

MF_E_TRANSFORM_TYPE_NOT_SET

You must set the output types before setting the input types.

?

The MFT defines a list of available media types for each input stream and orders them by preference. This method enumerates the available media types for an input stream. To enumerate the available types, increment dwTypeIndex until the method returns MF_E_NO_MORE_TYPES.

Setting the media type on one stream might change the available types for another stream, or change the preference order. However, an MFT is not required to update the list of available types dynamically. The only guaranteed way to test whether you can set a particular input type is to call .

In some cases, an MFT cannot return a list of input types until one or more output types are set. If so, the method returns MF_E_TRANSFORM_TYPE_NOT_SET.

An MFT is not required to implement this method. However, most MFTs should implement this method, unless the supported types are simple and can be discovered through the MFTGetInfo function.

If MFT_UNIQUE_METHOD_NAMES is defined before including mftransform.h, this method is renamed MFTGetInputAvailableType. See Creating Hybrid DMO/MFT Objects.

Implementation Notes

If the MFT stores a media type internally, the MFT should return a clone of the media type, not a reference to the original type. Otherwise, the caller might modify the type and alter the internal state of the MFT.

ms704814 HRESULT IMFTransform::GetInputAvailableType([In] unsigned int dwInputStreamID,[In] unsigned int dwTypeIndex,[Out] IMFMediaType** ppType) IMFTransform::GetInputAvailableType

Applies to: desktop apps | Metro style apps

Gets an available media type for an output stream on this Media Foundation transform (MFT).

Output stream identifier. To get the list of stream identifiers, call .

Index of the media type to retrieve. Media types are indexed from zero and returned in approximate order of preference.

Receives a reference to the interface. The caller must release the interface.

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

E_NOTIMPL

The MFT does not have a list of available output types.

MF_E_INVALIDSTREAMNUMBER

Invalid stream identifier.

MF_E_NO_MORE_TYPES

The dwTypeIndex parameter is out of range.

MF_E_TRANSFORM_TYPE_NOT_SET

You must set the input types before setting the output types.

?

The MFT defines a list of available media types for each output stream and orders them by preference. This method enumerates the available media types for an output stream. To enumerate the available types, increment dwTypeIndex until the method returns MF_E_NO_MORE_TYPES.

Setting the media type on one stream can change the available types for another stream (or change the preference order). However, an MFT is not required to update the list of available types dynamically. The only guaranteed way to test whether you can set a particular input type is to call .

In some cases, an MFT cannot return a list of output types until one or more input types are set. If so, the method returns MF_E_TRANSFORM_TYPE_NOT_SET.

An MFT is not required to implement this method. However, most MFTs should implement this method, unless the supported types are simple and can be discovered through the MFTGetInfo function.

This method can return a partial media type. A partial media type contains an incomplete description of a format, and is used to provide a hint to the caller. For example, a partial type might include just the major type and subtype GUIDs. However, after the client sets the input types on the MFT, the MFT should generally return at least one complete output type, which can be used without further modification. For more information, see Complete and Partial Media Types.

Some MFTs cannot provide an accurate list of output types until the MFT receives the first input sample. For example, the MFT might need to read the first packet header to deduce the format. An MFT should handle this situation as follows:

  1. Before the MFT receives any input, it offers a list of one or more output types that it could possibly produce. For example, an MPEG-2 decoder might return a media type that describes the MPEG-2 main profile/main level.
  2. The client selects one of these types (generally the first) and sets it on the output stream.
  3. The client delivers the first input sample by calling .
  4. If the output type does not conform to the input data, the transform signals a format change in the ProcessOutput method. For more information about format changes, see .
  5. The calls GetOutputAvailableType again. At this point, the method should return an updated list of types that reflects the input data.
  6. The client selects a new output type from this list and calls SetOutputType.

If MFT_UNIQUE_METHOD_NAMES is defined before including mftransform.h, this method is renamed MFTGetOutputAvailableType. See Creating Hybrid DMO/MFT Objects.

Implementation Notes

If the MFT stores a media type internally, the MFT should return a clone of the media type, not a reference to the original type. Otherwise, the caller might modify the type and alter the internal state of the MFT.

ms703812 HRESULT IMFTransform::GetOutputAvailableType([In] unsigned int dwOutputStreamID,[In] unsigned int dwTypeIndex,[Out] IMFMediaType** ppType) IMFTransform::GetOutputAvailableType

Applies to: desktop apps | Metro style apps

Sets, tests, or clears the media type for an input stream on this Media Foundation transform (MFT).

Input stream identifier. To get the list of stream identifiers, call .

Pointer to the interface, or null.

Zero or more flags from the _MFT_SET_TYPE_FLAGS enumeration.

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

MF_E_INVALIDMEDIATYPE

The MFT cannot use the proposed media type.

MF_E_INVALIDSTREAMNUMBER

Invalid stream identifier.

MF_E_INVALIDTYPE

The proposed type is not valid. This error code indicates that the media type itself is not configured correctly; for example, it might contain mutually contradictory attributes.

MF_E_TRANSFORM_CANNOT_CHANGE_MEDIATYPE_WHILE_PROCESSING

The MFT cannot switch types while processing data. Try draining or flushing the MFT.

MF_E_TRANSFORM_TYPE_NOT_SET

You must set the output types before setting the input types.

MF_E_UNSUPPORTED_D3D_TYPE

The MFT could not find a suitable DirectX Video Acceleration (DXVA) configuration.

?

This method can be used to set, test without setting, or clear the media type:

  • To set the media type, set dwFlags to zero and set pType to a non-null reference that specifies the media type.
  • To test the media type without setting it, set dwFlags to and set pType to a non-null reference that specifies the media type. If the media type is acceptable, the method return . Otherwise, it returns MF_E_INVALIDMEDIATYPE. Regardless of the return value, the current media type does not change.
  • To clear the media type, set pType to null.

Setting the media type on one stream may change the acceptable types on another stream.

An MFT may require the caller to set one or more output types before setting the input type. If so, the method returns MF_E_TRANSFORM_TYPE_NOT_SET.

If the MFT supports DirectX Video Acceleration (DXVA) but is unable to find a suitable DXVA configuration (for example, if the graphics driver does not have the right capabilities), the method should return MF_E_UNSUPPORTED_D3D_TYPE. For more information, see Supporting DXVA 2.0 in Media Foundation.

If MFT_UNIQUE_METHOD_NAMES is defined before including mftransform.h, this method is renamed MFTSetInputType. See Creating Hybrid DMO/MFT Objects.

ms700113 HRESULT IMFTransform::SetInputType([In] unsigned int dwInputStreamID,[In, Optional] IMFMediaType* pType,[In] unsigned int dwFlags) IMFTransform::SetInputType

Applies to: desktop apps | Metro style apps

Sets, tests, or clears the media type for an output stream on this Media Foundation transform (MFT).

Output stream identifier. To get the list of stream identifiers, call .

Pointer to the interface, or null.

Zero or more flags from the _MFT_SET_TYPE_FLAGS enumeration.

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

MF_E_INVALIDMEDIATYPE

The transform cannot use the proposed media type.

MF_E_INVALIDSTREAMNUMBER

Invalid stream identifier.

MF_E_INVALIDTYPE

The proposed type is not valid. This error code indicates that the media type itself is not configured correctly; for example, it might contain mutually contradictory flags.

MF_E_TRANSFORM_CANNOT_CHANGE_MEDIATYPE_WHILE_PROCESSING

The MFT cannot switch types while processing data. Try draining or flushing the MFT.

MF_E_TRANSFORM_TYPE_NOT_SET

You must set the input types before setting the output types.

MF_E_UNSUPPORTED_D3D_TYPE

The MFT could not find a suitable DirectX Video Acceleration (DXVA) configuration.

?

This method can be used to set, test without setting, or clear the media type:

  • To set the media type, set dwFlags to zero and set pType to a non-null reference that specifies the media type.
  • To test the media type without setting it, set dwFlags to and set pType to a non-null reference that specifies the media type. If the media type is acceptable, the method return . Otherwise, it returns MF_E_INVALIDMEDIATYPE. Regardless of the return value, the current media type does not change.
  • To clear the media type, set pType to null.

Setting the media type on one stream may change the acceptable types on another stream.

An MFT may require the caller to set one or more input types before setting the output type. If so, the method returns MF_E_TRANSFORM_TYPE_NOT_SET.

If the MFT supports DirectX Video Acceleration (DXVA) but is unable to find a suitable DXVA configuration (for example, if the graphics driver does not have the right capabilities), the method should return MF_E_UNSUPPORTED_D3D_TYPE. For more information, see Supporting DXVA 2.0 in Media Foundation.

If MFT_UNIQUE_METHOD_NAMES is defined before including mftransform.h, this method is renamed MFTSetOutputType. See Creating Hybrid DMO/MFT Objects.

ms702016 HRESULT IMFTransform::SetOutputType([In] unsigned int dwOutputStreamID,[In, Optional] IMFMediaType* pType,[In] unsigned int dwFlags) IMFTransform::SetOutputType

Applies to: desktop apps | Metro style apps

Gets the current media type for an input stream on this Media Foundation transform (MFT).

Input stream identifier. To get the list of stream identifiers, call .

Receives a reference to the interface. The caller must release the interface.

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

MF_E_INVALIDSTREAMNUMBER

Invalid stream identifier.

MF_E_TRANSFORM_TYPE_NOT_SET

The input media type has not been set.

?

If the specified input stream does not yet have a media type, the method returns MF_E_TRANSFORM_TYPE_NOT_SET. Most MFTs do not set any default media types when first created. Instead, the client must set the media type by calling .

If MFT_UNIQUE_METHOD_NAMES is defined before including mftransform.h, this method is renamed MFTGetInputCurrentType. See Creating Hybrid DMO/MFT Objects.

Implementation Notes

The MFT should return a clone of the media type, not a reference to the original type. Otherwise, the caller might modify the type and alter the internal state of the MFT.

ms705607 HRESULT IMFTransform::GetInputCurrentType([In] unsigned int dwInputStreamID,[Out] IMFMediaType** ppType) IMFTransform::GetInputCurrentType

Applies to: desktop apps | Metro style apps

Gets the current media type for an output stream on this Media Foundation transform (MFT).

Output stream identifier. To get the list of stream identifiers, call .

Receives a reference to the interface. The caller must release the interface.

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

MF_E_INVALIDSTREAMNUMBER

Invalid stream identifier.

MF_E_TRANSFORM_TYPE_NOT_SET

The output media type has not been set.

?

If the specified output stream does not yet have a media type, the method returns MF_E_TRANSFORM_TYPE_NOT_SET. Most MFTs do not set any default media types when first created. Instead, the client must set the media type by calling .

If MFT_UNIQUE_METHOD_NAMES is defined before including mftransform.h, this method is renamed MFTGetOutputCurrentType. See Creating Hybrid DMO/MFT Objects.

Implementation Notes

The MFT should return a clone of the media type, not a reference to the original type. Otherwise, the caller might modify the type and alter the internal state of the MFT.

ms696985 HRESULT IMFTransform::GetOutputCurrentType([In] unsigned int dwOutputStreamID,[Out] IMFMediaType** ppType) IMFTransform::GetOutputCurrentType

Applies to: desktop apps | Metro style apps

Queries whether an input stream on this Media Foundation transform (MFT) can accept more data.

Input stream identifier. To get the list of stream identifiers, call .

Receives a member of the _MFT_INPUT_STATUS_FLAGS enumeration, or zero. If the value is , the stream specified in dwInputStreamID can accept more input data.

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

MF_E_INVALIDSTREAMNUMBER

Invalid stream identifier.

MF_E_TRANSFORM_TYPE_NOT_SET

The media type is not set on one or more streams.

?

If the method returns the flag, you can deliver an input sample to the specified stream by calling . If the method succeeds but does not return any flags in the pdwFlags parameter, it means the input stream already has as much data as it can accept.

Use this method to test whether the input stream is ready to accept more data, without incurring the overhead of allocating a new sample and calling ProcessInput.

After the client has set valid media types on all of the streams, the MFT should always be in one of two states: Able to accept more input, or able to produce more output (or both).

If MFT_UNIQUE_METHOD_NAMES is defined before including mftransform.h, this method is renamed MFTGetInputStatus. See Creating Hybrid DMO/MFT Objects.

ms697478 HRESULT IMFTransform::GetInputStatus([In] unsigned int dwInputStreamID,[Out] unsigned int* pdwFlags) IMFTransform::GetInputStatus

Applies to: desktop apps | Metro style apps

Queries whether the Media Foundation transform (MFT) is ready to produce output data.

Receives a member of the _MFT_OUTPUT_STATUS_FLAGS enumeration, or zero. If the value is , the MFT can produce an output sample.

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

E_NOTIMPL

Not implemented.

MF_E_TRANSFORM_TYPE_NOT_SET

The media type is not set on one or more streams.

?

If the method returns the flag, it means you can generate one or more output samples by calling .

MFTs are not required to implement this method. If the method returns E_NOTIMPL, you must call ProcessOutput to determine whether the transform has output data.

If the MFT has more than one output stream, but it does not produce samples at the same time for each stream, it can set the flag when just one stream is ready. However, if the MFT normally produces samples at the same time for each output stream, it should not set this flag until all streams are ready.

After the client has set valid media types on all of the streams, the MFT should always be in one of two states: Able to accept more input, or able to produce more output.

If MFT_UNIQUE_METHOD_NAMES is defined before including mftransform.h, this method is renamed MFTGetOutputStatus. See Creating Hybrid DMO/MFT Objects.

ms696269 HRESULT IMFTransform::GetOutputStatus([Out] unsigned int* pdwFlags) IMFTransform::GetOutputStatus

Applies to: desktop apps | Metro style apps

Sets the range of time stamps the client needs for output.

Specifies the earliest time stamp. The Media Foundation transform (MFT) will accept input until it can produce an output sample that begins at this time; or until it can produce a sample that ends at this time or later. If there is no lower bound, use the value MFT_OUTPUT_BOUND_LOWER_UNBOUNDED.

Specifies the latest time stamp. The MFT will not produce an output sample with time stamps later than this time. If there is no upper bound, use the value MFT_OUTPUT_BOUND_UPPER_UNBOUNDED.

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

E_NOTIMPL

Not implemented.

MF_E_TRANSFORM_TYPE_NOT_SET

The media type is not set on one or more streams.

?

This method can be used to optimize preroll, especially in formats that have gaps between time stamps, or formats where the data must start on a sync point, such as MPEG-2. Calling this method is optional, and implementation of this method by an MFT is optional. If the MFT does not implement the method, the return value is E_NOTIMPL.

If an MFT implements this method, it must limit its output data to the range of times specified by hnsLowerBound and hnsUpperBound. The MFT discards any input data that is not needed to produce output within this range. If the sample boundaries do not exactly match the range, the MFT should split the output samples, if possible. Otherwise, the output samples can overlap the range.

For example, suppose the output range is 100 to 150 milliseconds (ms), and the output format is video with each frame lasting 33 ms. A sample with a time stamp of 67 ms overlaps the range (67 + 33 = 100) and is produced as output. A sample with a time stamp of 66 ms is discarded (66 + 33 = 99). Similarly, a sample with a time stamp of 150 ms is produced as output, but a sample with a time stamp of 151 is discarded.

If MFT_UNIQUE_METHOD_NAMES is defined before including mftransform.h, this method is renamed MFTSetOutputBounds. See Creating Hybrid DMO/MFT Objects.

ms693812 HRESULT IMFTransform::SetOutputBounds([In] longlong hnsLowerBound,[In] longlong hnsUpperBound) IMFTransform::SetOutputBounds

Applies to: desktop apps | Metro style apps

Sends an event to an input stream on this Media Foundation transform (MFT).

Input stream identifier. To get the list of stream identifiers, call .

Pointer to the interface of an event object.

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

E_NOTIMPL

Not implemented.

MF_E_INVALIDSTREAMNUMBER

Invalid stream number.

MF_E_TRANSFORM_TYPE_NOT_SET

The media type is not set on one or more streams.

MF_S_TRANSFORM_DO_NOT_PROPAGATE_EVENT

The pipeline should not propagate the event.

?

An MFT can handle sending the event downstream, or it can let the pipeline do this, as indicated by the return value:

  • E_NOTIMPL: The MFT ignores all events, and the pipeline should send all events downstream. After the pipeline receives this return value, it might not call ProcessEvent again.
  • : The MFT has examined this event, but the pipeline should send the event downstream. Internally, the MFT might respond to the event in some way, or it might ignore the event.
  • MF_S_TRANSFORM_DO_NOT_PROPAGATE_EVENT: The pipeline should not propagate this event downstream. Either the MFT will send the event downstream, or else the MFT will consume the event and not send it downstream. The MFT should only consume the event if the event should stop at this MFT and not travel any further downstream. But in most cases, the event should travel downstream.

To send the event downstream, the MFT adds the event to the collection object that is provided by the client in the pEvents member of the structure, when the client calls .

Events must be serialized with the samples that come before and after them. Attach the event to the output sample that follows the event. (The pipeline will process the event first, and then the sample.) If an MFT holds back one or more samples between calls to and ProcessOutput, the MFT should handle sending all events downstream, because in this situation the pipeline cannot correlate input samples with output samples.

If an MFT does not hold back samples and does not need to examine any events, it can return E_NOTIMPL.

If MFT_UNIQUE_METHOD_NAMES is defined before including mftransform.h, this method is renamed MFTProcessEvent. See Creating Hybrid DMO/MFT Objects.

ms695394 HRESULT IMFTransform::ProcessEvent([In] unsigned int dwInputStreamID,[In, Optional] IMFMediaEvent* pEvent) IMFTransform::ProcessEvent

Applies to: desktop apps | Metro style apps

Sends a message to the Media Foundation transform (MFT).

The message to send, specified as a member of the enumeration.

Message parameter. The meaning of this parameter depends on the message type.

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

MF_E_INVALIDSTREAMNUMBER

Invalid stream number. Applies to the message.

MF_E_TRANSFORM_TYPE_NOT_SET

The media type is not set on one or more streams.

?

Before calling this method, set the media types on all input and output streams.

The MFT might ignore certain message types. If so, the method returns . An error code indicates that the transform handles this message type but was unable to process the message in this instance.

If MFT_UNIQUE_METHOD_NAMES is defined before including mftransform.h, this method is renamed MFTProcessMessage. See Creating Hybrid DMO/MFT Objects.

ms701863 HRESULT IMFTransform::ProcessMessage([In] MFT_MESSAGE_TYPE eMessage,[In] ULONG_PTR ulParam) IMFTransform::ProcessMessage

Applies to: desktop apps | Metro style apps

Delivers data to an input stream on this Media Foundation transform (MFT).

Input stream identifier. To get the list of stream identifiers, call .

Pointer to the interface of the input sample. The sample must contain at least one media buffer that contains valid input data.

Reserved. Must be zero.

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

E_INVALIDARG

Invalid argument.

MF_E_INVALIDSTREAMNUMBER

Invalid stream identifier.

MF_E_NO_SAMPLE_DURATION

The input sample requires a valid sample duration. To set the duration, call .

Some MFTs require that input samples have valid durations. Some MFTs do not require sample durations.

MF_E_NO_SAMPLE_TIMESTAMP

The input sample requires a time stamp. To set the time stamp, call .

Some MFTs require that input samples have valid time stamps. Some MFTs do not require time stamps.

MF_E_NOTACCEPTING

The transform cannot process more input at this time.

MF_E_TRANSFORM_TYPE_NOT_SET

The media type is not set on one or more streams.

MF_E_UNSUPPORTED_D3D_TYPE

The media type is not supported for DirectX Video Acceleration (DXVA). A DXVA-enabled decoder might return this error code.

?

Note??If you are converting a DirectX Media Object (DMO) to an MFT, be aware that S_FALSE is not a valid return code for , unlike the IMediaObject::ProcessInput method.

In most cases, if the method succeeds, the MFT stores the sample and holds a reference count on the reference. Do not re-use the sample until the MFT releases the sample. Instead of storing the sample, however, an MFT might copy the sample data into a new buffer. In that case, the MFT should set the flag in the method.

If the MFT already has enough input data to produce an output sample, it does not accept new input data, and ProcessInput returns MF_E_NOTACCEPTING. At that point, the client should clear the pending input data by doing one of the following:

  • Generate new output by calling .
  • Flush the input data by calling with the MFT_MESSAGE_COMMAND_FLUSH message.

An exception to this rule is the flag. When this flag is present, the transform will discard stored samples if you give it more input. For more information, see . A transform should never queue any more input data than is required to produce the correct output.

An MFT can process the input data in the ProcessInput method. However, most MFTs wait until the client calls ProcessOutput.

After the client has set valid media types on all of the streams, the MFT should always be in one of two states: Able to accept more input, or able to produce more output. It should never be in both states or neither state. An MFT should only accept as much input as it needs to generate at least one output sample, at which point ProcessInput returns MF_E_NOTACCEPTING. When ProcessInput returns MF_E_NOTACCEPTING, the client can assume that the MFT is ready to produce output.

If an MFT encounters a non-fatal error in the input data, it can simply drop the data and attempt to recover when it gets the more input data. To request more input data, the MFT returns MF_E_TRANSFORM_NEED_MORE_INPUT from the method. If the MFT drops any data, it should set the attribute attribute on the next output sample, to notify the caller that there is a gap in the data stream.

If MFT_UNIQUE_METHOD_NAMES is defined before including mftransform.h, this method is renamed MFTProcessInput. See Creating Hybrid DMO/MFT Objects.

Asynchronous Processing

The previous remarks describe the synchronous processing model. To support asynchronous processing, see Asynchronous MFTs.

ms703131 HRESULT IMFTransform::ProcessInput([In] unsigned int dwInputStreamID,[In] IMFSample* pSample,[In] unsigned int dwFlags) IMFTransform::ProcessInput

Applies to: desktop apps | Metro style apps

Generates output from the current input data.

Bitwise OR of zero or more flags from the _MFT_PROCESS_OUTPUT_FLAGS enumeration.

Number of elements in the pOutputSamples array. The value must be at least 1.

Pointer to an array of structures, allocated by the caller. The MFT uses this array to return output data to the caller.

Receives a bitwise OR of zero or more flags from the _MFT_PROCESS_OUTPUT_STATUS enumeration.

The method returns an . Possible values include, but are not limited to, those in the following table.

Return codeDescription

The method succeeded.

E_UNEXPECTED

The ProcessOutput method was called on an asynchronous MFT that was not expecting this method call.

MF_E_INVALIDSTREAMNUMBER

Invalid stream identifier in the dwStreamID member of one or more structures.

MF_E_TRANSFORM_NEED_MORE_INPUT

The transform cannot produce output data until it receives more input data.

MF_E_TRANSFORM_STREAM_CHANGE

The format has changed on an output stream, or there is a new preferred format, or there is a new output stream.

MF_E_TRANSFORM_TYPE_NOT_SET

You must set the media type on one or more streams of the MFT.

?

Note??If you are converting a DirectX Media Object (DMO) to an MFT, be aware that S_FALSE is not a valid return code for , unlike the IMediaObject::ProcessOutput method.

The size of the pOutputSamples array must be equal to or greater than the number of selected output streams. The number of selected output streams equals the total number of output streams minus the number of deselected streams. A stream is deselected if it has the flag and the caller does not set a media type (or sets the media type to null). For more information, see _MFT_OUTPUT_STREAM_INFO_FLAGS enumeration.

This method generates output samples and can also generate events. If the method succeeds, at least one of the following conditions is true:

  • One or more samples in the pOutputSamples array contains output data.
  • One or more members of the pOutputSamples array contains a non-empty collection of events.

If MFT_UNIQUE_METHOD_NAMES is defined before including Mftransform.h, this method is renamed MFTProcessOutput. See Creating Hybrid DMO/MFT Objects.

Output Buffers

The MFT returns output data for a stream through the pSample member of the structure. This structure member is a reference to the interface of a media sample. (See Media Samples.) The media sample is allocated either by the caller or by the MFT, depending on the MFT's allocation model. To find the allocation model, call and examine the dwFlags member of the structure:

  • If the flag is present, the MFT allocates the media sample.
  • If the flag is present, the caller can optionally provide a media sample. If pSample is null, the MFT will allocate the media sample.
  • If neither of these two flags is present, the caller must allocate the media sample.

These flags remain constant unless the media type for the output stream changes.

If the caller allocates the media sample, the media sample must contain a buffer that is large enough to hold the output data. To find the buffer requirements, call GetOutputStreamInfo. The MFT writes the output data to the start of the buffer, overwriting any data that already exists in the buffer.

If the MFT allocates the sample, the MFT also allocates the buffers for the sample.

If the MFT has multiple output streams, the streams might produce output at different rates, so some streams might have output while other streams do not. If a stream did not any produce output, the MFT sets the flag in the dwStatus member of the structure for that stream. In that case, if the caller allocated pSample, the buffers in the sample do not contain any valid data. If the caller did not allocate pSample, the flag indicates that pSample still equals null after the method returns.

If no output streams have data, and the MFT has no events to return, then ProcessOutput returns MF_E_TRANSFORM_NEED_MORE_INPUT.

The MFT cannot return more than one sample per stream in a single call to ProcessOutput. If there is more output data available for a stream after ProcessOutput returns, the MFT sets the flag in the dwStatus member of the structure for that stream.

If the MFT has enough data to produce output, it should refuse to accept any more input until ProcessOutput has been called enough times to pull all of the available output. (An exception is when the method returns the flag.) Generally, an MFT with multiple output streams should produce output for a stream as soon as possible, and not wait for all of the streams to have output.

In-Band Events

The MFT can return a collection of event objects in the pEvents member of each structure. The MFT allocates both the collection object and the events.

To send an event to the caller, the MFT performs the following steps inside ProcessOutput:

  1. Create a new collection object by calling .
  2. Add one or more events to the collection by calling .
  3. Set the pEvents member of the structure equal to the reference. The MFT leaves a reference count on this interface; the caller must release the reference.

Events do not have time stamps. The caller should process the events before processing the output samples. In other words, events occur at the point in the stream immediately after the previous call to ProcessOutput, and prior to any output samples returned from the current ProcessOutput call.

It is valid for the ProcessOutput method to return one or more events and zero output samples.

The caller is responsible for releasing any events that the MFT allocates. When the method returns, check the pEvents member of each structure. If the value is not null, the caller must release the interface reference:

// Release the events that an MFT might allocate in ().	
            void ReleaseEventCollection(DWORD cOutputBuffers, * pBuffers)	
            { for (DWORD i = 0; i < cOutputBuffers; i++) { if (pBuffers[i].pEvents) { pBuffers[i].pEvents->Release(); pBuffers[i].pEvents = null; } }	
            }	
            

An MFT should not use the interface to send in-band events.

Stream Changes

The ProcessOutput method can cause any of the following changes in an output stream:

  • The deletion of an output stream. To signal a stream deletion, the MFT sets the flag in the dwStatus member of the structure for that stream.
  • The creation of a new output stream. To signal a new output stream, the MFT sets the flag in the pdwStatus parameter. A new stream can have the same stream identifier as a deleted stream.
  • A format change on an output stream. To signal a format change, the MFT sets the flag in the dwStatus member of the structure for that stream.

It is possible that all three of these actions will result from a single call to ProcessOutput. The caller must respond to them in the order listed here?first deletions, then additions, then format changes.

The flag signals a format change on an output stream. This might mean the current media type has become invalid, or the preference order has changed and a more efficient format is available. In the latter case, it is possible that the client will re-set the original media type. To guard against endless loops, the MFT should not set the flag again until there is another change. Also, avoid setting this flag if the preference order changes but the current media type is still the most preferred type.

Sample Attributes

An input sample might have attributes, which are accessed through the interface. Unless a specific attribute no longer applies, all attributes should be copied into the corresponding output sample. The responsibily for copying attributes is determined as follows:

  • If the value of the MFPKEY_EXATTRIBUTE_SUPPORTED property on the MFT is VARIANT_TRUE, the MFT copies the attributes.
  • If the value of MFPKEY_EXATTRIBUTE_SUPPORTED is VARIANT_FALSE, or the property is not set, the client must copy the sample attributes. Do not overwrite any attributes that the MFT sets on the output sample.

For a list of sample attributes, see Sample Attributes.

Asynchronous Processing

The previous remarks describe the synchronous processing model. To support asynchronous processing, see Asynchronous MFTs.

ms704014 HRESULT IMFTransform::ProcessOutput([In] unsigned int dwFlags,[In] unsigned int cOutputBufferCount,[In] MFT_OUTPUT_DATA_BUFFER* pOutputSamples,[In] unsigned int* pdwStatus) IMFTransform::ProcessOutput

Applies to: desktop apps | Metro style apps

Gets the global attribute store for this Media Foundation transform (MFT).

Use the reference retrieved by this method to get or set attributes that apply to the entire MFT. To get the attribute store for an input stream, call . To get the attribute store for an output stream, call .

Implementation of this method is optional unless the MFT needs to support a particular set of attributes. Exception: Hardware-based MFTs must implement this method. See Hardware MFTs.

ms703141 GetAttributes GetAttributes HRESULT IMFTransform::GetAttributes([Out] IMFAttributes** pAttributes)

Applies to: desktop apps | Metro style apps

Queries whether the Media Foundation transform (MFT) is ready to produce output data.

If the method returns the flag, it means you can generate one or more output samples by calling .

MFTs are not required to implement this method. If the method returns E_NOTIMPL, you must call ProcessOutput to determine whether the transform has output data.

If the MFT has more than one output stream, but it does not produce samples at the same time for each stream, it can set the flag when just one stream is ready. However, if the MFT normally produces samples at the same time for each output stream, it should not set this flag until all streams are ready.

After the client has set valid media types on all of the streams, the MFT should always be in one of two states: Able to accept more input, or able to produce more output.

If MFT_UNIQUE_METHOD_NAMES is defined before including mftransform.h, this method is renamed MFTGetOutputStatus. See Creating Hybrid DMO/MFT Objects.

ms696269 GetOutputStatus GetOutputStatus HRESULT IMFTransform::GetOutputStatus([Out] unsigned int* pdwFlags)

Applies to: desktop apps only

Contains private data for the IDirectXVideoDecoder::Execute method.

This structure corresponds to parameters of the IAMVideoAccelerator::Execute method in DirectX Video Acceleration (DXVA) version 1.

ms696173 MFAYUVSample MFAYUVSample
No documentation. unsigned char bCrValue unsigned char bCrValue No documentation. unsigned char bCbValue unsigned char bCbValue No documentation. unsigned char bYValue unsigned char bYValue No documentation. unsigned char bSampleAlpha8 unsigned char bSampleAlpha8

Applies to: desktop apps only

Contains private data for the IDirectXVideoDecoder::Execute method.

This structure corresponds to parameters of the IAMVideoAccelerator::Execute method in DirectX Video Acceleration (DXVA) version 1.

ms696173 MFBYTESTREAM_BUFFERING_PARAMS MFBYTESTREAM_BUFFERING_PARAMS
No documentation. unsigned longlong cbTotalFileSize unsigned longlong cbTotalFileSize No documentation. unsigned longlong cbPlayableDataSize unsigned longlong cbPlayableDataSize No documentation. MF_LEAKY_BUCKET_PAIR* prgBuckets MF_LEAKY_BUCKET_PAIR prgBuckets No documentation. unsigned int cBuckets unsigned int cBuckets No documentation. unsigned longlong qwNetBufferingTime unsigned longlong qwNetBufferingTime No documentation. unsigned longlong qwExtraBufferingTimeDuringSeek unsigned longlong qwExtraBufferingTimeDuringSeek No documentation. unsigned longlong qwPlayDuration unsigned longlong qwPlayDuration No documentation. float dRate float dRate

[This documentation is preliminary and is subject to change.]

Applies to: desktop apps only

Specifies a range of bytes.

hh162808 MF_BYTE_STREAM_CACHE_RANGE MF_BYTE_STREAM_CACHE_RANGE

The offset, in bytes, of the start of the range.

hh162808 unsigned longlong qwStartOffset unsigned longlong qwStartOffset

The offset, in bytes, of the end of the range.

hh162808 unsigned longlong qwEndOffset unsigned longlong qwEndOffset

Applies to: desktop apps only

The structure describes the format of the data used by a stream in a Microsoft DirectX Media Object (DMO).

This structure is identical to the DirectShow structure. The bFixedSizeSamples, bTemporalCompression, and lSampleSize members are for compatibility with DirectShow. Other DMO clients are not required to use them.

dd375504 DMO_MEDIA_TYPE DMO_MEDIA_TYPE

Major type of the stream.

dd375504 GUID majortype GUID majortype

Subtype of the stream.

dd375504 GUID subtype GUID subtype

If TRUE, samples are of a fixed size. This field is informational only. For audio, it is generally set to TRUE. For video, it is usually TRUE for uncompressed video and for compressed video.

dd375504 BOOL bFixedSizeSamples BOOL bFixedSizeSamples

If TRUE, samples are compressed using temporal (interframe) compression. (A value of TRUE indicates that not all frames are key frames.) This field is informational only.

dd375504 BOOL bTemporalCompression BOOL bTemporalCompression

Size of the sample in bytes. For compressed data, the value can be zero.

dd375504 unsigned int lSampleSize unsigned int lSampleSize

specifying the format type. The pbFormat member points to the corresponding format structure. Format types include the following.

Format typeFormat structure
FORMAT_DvInfo

DVINFO

FORMAT_MPEG2Video

FORMAT_MPEGVideo

FORMAT_None

None.

FORMAT_VideoInfo

FORMAT_VideoInfo2

FORMAT_WaveFormatEx

?

dd375504 GUID formattype GUID formattype

Not used. Set to null.

dd375504 IUnknown* pUnk IUnknown pUnk

Size of the format block of the media type.

dd375504 unsigned int cbFormat unsigned int cbFormat

Pointer to the format structure. The structure type is specified by the formattype member. The format structure must be present, unless formattype is GUID_NULL or FORMAT_None.

dd375504 unsigned char* pbFormat unsigned char pbFormat

Applies to: desktop apps only

Contains coefficients used to transform multichannel audio into a smaller number of audio channels. This process is called fold-down.

To specify this information in the media type, set the attribute.

The ASF media source supports fold-down from six channels (5.1 audio) to two channels (stereo). It gets the information from the g_wszFold6To2Channels3 attribute in the ASF header. This attribute is documented in the Windows Media Format SDK documentation.

aa369731 MFFOLDDOWN_MATRIX MFFOLDDOWN_MATRIX

Size of the structure, in bytes.

aa369731 unsigned int cbSize unsigned int cbSize

Number of source channels.

aa369731 unsigned int cSrcChannels unsigned int cSrcChannels

Number of destination channels.

aa369731 unsigned int cDstChannels unsigned int cDstChannels

Specifies the assignment of audio channels to speaker positions in the transformed audio. This member is a bitwise OR of flags that define the speaker positions. For a list of valid flags, see attribute.

aa369731 unsigned int dwChannelMask unsigned int dwChannelMask

Array that contains the fold-down coefficients. The number of coefficients is cSrcChannels?cDstChannels. If the number of coefficients is less than the size of the array, the remaining elements in the array are ignored. For more information about how the coefficients are applied, see Windows Media Audio Professional Codec Features.

aa369731 int Coeff[64] int Coeff

Applies to: desktop apps only

Contains private data for the IDirectXVideoDecoder::Execute method.

This structure corresponds to parameters of the IAMVideoAccelerator::Execute method in DirectX Video Acceleration (DXVA) version 1.

ms696173 MF_LEAKY_BUCKET_PAIR MF_LEAKY_BUCKET_PAIR
No documentation. unsigned int dwBitrate unsigned int dwBitrate No documentation. unsigned int msBufferWindow unsigned int msBufferWindow

Applies to: desktop apps only

Specifies a rectangular area within a video frame.

ms703850 MFOffset MFOffset

An structure that contains the x-coordinate of the upper-left corner of the rectangle. This coordinate might have a fractional value.

ms703850 unsigned short fract unsigned short fract

An structure that contains the y-coordinate of the upper-left corner of the rectangle. This coordinate might have a fractional value.

ms703850 short value short value

Applies to: desktop apps only

Contains one palette entry in a color table.

This union can be used to represent both RGB palettes and Y'Cb'Cr' palettes. The video format that defines the palette determines which union member should be used.

ms698970 MFPaletteEntry MFPaletteEntry

structure that contains an RGB color.

ms698970 MFARGB ARGB MFARGB ARGB

structure that contains a Y'Cb'Cr' color.

ms698970 MFAYUVSample AYCbCr MFAYUVSample AYCbCr

This topic describes how to create a media type that describes an uncompressed video format. For more information about media types generally, see About Media Types.

To create a complete uncompressed video type, set the following attributes on the interface reference.

ff485865 MFRatio MFRatio
No documentation. unsigned int Numerator unsigned int Numerator No documentation. unsigned int Denominator unsigned int Denominator No documentation. MFT_INPUT_STREAM_INFO MFT_INPUT_STREAM_INFO No documentation. longlong hnsMaxLatency longlong hnsMaxLatency No documentation. unsigned int dwFlags unsigned int dwFlags No documentation. unsigned int cbSize unsigned int cbSize No documentation. unsigned int cbMaxLookahead unsigned int cbMaxLookahead No documentation. unsigned int cbAlignment unsigned int cbAlignment

Applies to: desktop apps | Metro style apps

Contains information about an output buffer for a Media Foundation transform. This structure is used in the method.

You must provide an structure for each selected output stream.

MFTs can support two different allocation models for output samples:

  • The MFT allocates the output sample.
  • The client allocates the output sample.

To find which model the MFT supports for a given output stream, call and check the value of dwFlags.

FlagAllocation Model
The MFT allocates the output samples for the stream. Set pSample to null for this stream.
The MFT supports both allocation models.
Neither (default)The client must allocate the output samples for the stream.

?

The behavior of ProcessOutput depends on the initial value of pSample and the value of the dwFlags parameter in the ProcessOutput method.

  • If pSample is null and dwFlags contains the flag, the MFT discards the output data.

    Restriction: This output stream must have the or flag. (To get the flags for the output stream, call the method.)

  • If pSample is null and dwFlags does not contain the , the MFT provides a sample for the output data. The MFT sets pSample to point to the sample that it provides. The MFT can either allocate a new sample or re-use an input sample.

    Restriction: This output stream must have the or flag.

  • If pSample is non-null, the MFT uses the sample provided by the caller.

    Restriction: This output stream must not have the flag.

Any other combinations are invalid and cause ProcessOutput to return E_INVALIDARG.

Each call to ProcessOutput can produce zero or more events and up to one sample per output stream.

ms697247 MFT_OUTPUT_DATA_BUFFER MFT_OUTPUT_DATA_BUFFER
No documentation. unsigned int dwStreamID unsigned int dwStreamID No documentation. IMFSample* pSample IMFSample pSample No documentation. unsigned int dwStatus unsigned int dwStatus No documentation. IMFCollection* pEvents IMFCollection pEvents

Applies to: desktop apps | Metro style apps

Contains information about an output stream on a Media Foundation transform (MFT). To get these values, call .

Before the media types are set, the only values that should be considered valid is the flag in the dwFlags member. This flag indicates that the stream is optional and does not require a media type.

After you set a media type on all of the input and output streams (not including optional streams), all of the values returned by the GetOutputStreamInfo method are valid. They might change if you set different media types.

ms696974 MFT_OUTPUT_STREAM_INFO MFT_OUTPUT_STREAM_INFO
No documentation. unsigned int dwFlags unsigned int dwFlags No documentation. unsigned int cbSize unsigned int cbSize No documentation. unsigned int cbAlignment unsigned int cbAlignment

Applies to: desktop apps only

Specifies a rectangular area within a video frame.

ms703850 MFVideoArea MFVideoArea

An structure that contains the x-coordinate of the upper-left corner of the rectangle. This coordinate might have a fractional value.

ms703850 MFOffset OffsetX MFOffset OffsetX

An structure that contains the y-coordinate of the upper-left corner of the rectangle. This coordinate might have a fractional value.

ms703850 MFOffset OffsetY MFOffset OffsetY

A structure that contains the width and height of the rectangle.

ms703850 SIZE Area SIZE Area

Applies to: desktop apps | Metro style apps

Defines a normalized rectangle, which is used to specify sub-rectangles in a video rectangle. When a rectangle N is normalized relative to some other rectangle R, it means the following:

  • The coordinate (0.0, 0.0) on N is mapped to the upper-left corner of R.

  • The coordinate (1.0, 1.0) on N is mapped to the lower-right corner of R.

Any coordinates of N that fall outside the range [0...1] are mapped to positions outside the rectangle R. A normalized rectangle can be used to specify a region within a video rectangle without knowing the resolution or even the aspect ratio of the video. For example, the upper-left quadrant is defined as {0.0, 0.0, 0.5, 0.5}.

ms703049 MFVideoNormalizedRect MFVideoNormalizedRect

X-coordinate of the upper-left corner of the rectangle.

ms703049 float left float left

Y-coordinate of the upper-left corner of the rectangle.

ms703049 float top float top

X-coordinate of the lower-right corner of the rectangle.

ms703049 float right float right

Y-coordinate of the lower-right corner of the rectangle.

ms703049 float bottom float bottom
Associate an attribute key with a type used to retreive keys from a instance. Initializes a new instance of the struct. The GUID. The type. Gets or sets the GUID. The GUID. Gets or sets the type. The type. Generic version of Type of the value of this key Initializes a new instance of the class. The GUID. Initializes a new instance of the class. The GUID. Attributes used when instantiating class. Initializes a new instance of class. A native COM pointer to a MediaEngineAttributes Initializes a new instance of class. Size of the data to allocate

Applies to: desktop apps | Metro style apps

Initializes Microsoft Media Foundation.

If true, do not initialize the sockets library, else full initialization. Default is false ms702238 HRESULT MFStartup([In] unsigned int Version,[In] unsigned int dwFlags) MFStartup

An application must call this function before using Media Foundation. Before your application quits, call once for every previous call to .

Do not call or from work queue threads. For more information about work queues, see Work Queues.

This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.

Applies to: desktop apps | Metro style apps

Shuts down the Microsoft Media Foundation platform. Call this function once for every call to . Do not call this function from work queue threads.

If this function succeeds, it returns . Otherwise, it returns an error code.

This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

  • Windows?XP with Service Pack?2 (SP2) and later.
  • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
ms694273 HRESULT MFShutdown() MFShutdown
The namespace provides a managed MediaFoundation API. MediaFoundation MediaFoundation The namespace provides a managed MediaFoundation for OPM API. MediaFoundation MediaFoundation Resource characteristics returned by . hh447939 HRESULT IMFMediaEngineEx::GetResourceCharacteristics([Out] unsigned int* pCharacteristics) IMFMediaEngineEx::GetResourceCharacteristics None flag. The media resource represents a live data source, such as a video camera. If playback is stopped and then restarted, there will be a gap in the content. The media resource supports seeking. To get the seekable range, call IMFMediaEngine::GetSeekable. The media resource can be paused. Seeking this resource can take a long time. For example, it might download through HTTP.