IWMReaderCallbackAdvanced::OnStreamSample method (wmsdkidl.h)

[The feature associated with this page, Windows Media Format 11 SDK, is a legacy feature. It has been superseded by Source Reader and Sink Writer. Source Reader and Sink Writer have been optimized for Windows 10 and Windows 11. Microsoft strongly recommends that new code use Source Reader and Sink Writer instead of Windows Media Format 11 SDK, when possible. Microsoft suggests that existing code that uses the legacy APIs be rewritten to use the new APIs if possible.]

The OnStreamSample method delivers stream samples from the source file without decompressing them first.

Syntax

HRESULT OnStreamSample(
  [in] WORD       wStreamNum,
  [in] QWORD      cnsSampleTime,
  [in] QWORD      cnsSampleDuration,
  [in] DWORD      dwFlags,
  [in] INSSBuffer *pSample,
  [in] void       *pvContext
);

Parameters

[in] wStreamNum

WORD containing the stream number.

[in] cnsSampleTime

QWORD containing the sample time, in 100-nanosecond units.

[in] cnsSampleDuration

QWORD containing the sample duration, in 100-nanosecond units.

[in] dwFlags

The flags that can be specified have the following uses.

Flag Description
No flag set None of the conditions for the other flags applies. For example, a delta frame in most cases would not have any flags set for it.
WM_SF_CLEANPOINT This is the same as a key frame. It indicates a good point to go to during a seek, for example.
WM_SF_DISCONTINUITY The data stream has a gap in it, which could be due to a seek, a network loss, or other reason. This can be useful extra information for an application such as a codec or renderer. The flag is set on the first piece of data following the gap.
WM_SF_DATALOSS Some data has been lost between the previous sample, and the sample with this flag set.

[in] pSample

Pointer to a sample stored in an INSSBuffer interface. The reader calls SAFE_RELEASE on this pointer after your OnStreamSample method returns. You can call AddRef on this pointer if you need to keep a reference count on the buffer. Do not call Release on this pointer unless you have called AddRef.

[in] pvContext

Generic pointer, for use by the application.

Return value

To use this method, you must implement it in your application. You can return whatever HRESULT error codes are appropriate to your implementation. For more information about the HRESULT error codes included for use by the Windows Media Format SDK, see Error Codes.

Remarks

When using the asynchronous reader, only compressed samples can be delivered for a stream number. If you want to retrieve uncompressed samples by stream number, you should use the synchronous reader.

There are many reasons why you might want to retrieve compressed samples. The most common use is to transfer a stream from one ASF file to another.

If you receive compressed samples, you must either keep them compressed, or decompress them with your application. The Windows Media Format SDK does not provide methods to decompress samples once they have been removed from a file.

This method is not able to deliver secure content. If protected content is used, the method will return NS_E_PROTECTEDCONTENT.

The samples delivered by this method are compressed, but are in all other ways exactly the same as samples delivered through IWMReaderCallback::OnSample.

To get samples for a particular stream, call IWMReaderAdvanced::SetReceiveStreamSamples.

Requirements

   
Minimum supported client Windows 2000 Professional [desktop apps only],Windows Media Format 7 SDK, or later versions of the SDK
Minimum supported server Windows 2000 Server [desktop apps only]
Target Platform Windows
Header wmsdkidl.h (include Wmsdk.h)

See also

IWMReaderCallbackAdvanced Interface