123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333 |
- //*****************************************************************************
- //
- // Microsoft Windows Media
- // Copyright (C) Microsoft Corporation. All rights reserved.
- //
- // FileName: wmsdatapath.idl
- //
- // Abstract:
- //
- //*****************************************************************************
- cpp_quote("//*****************************************************************************")
- cpp_quote("//")
- cpp_quote("// Microsoft Windows Media")
- cpp_quote("// Copyright (C) Microsoft Corporation. All rights reserved.")
- cpp_quote("//")
- cpp_quote("// Automatically generated by Midl from wmsdatapath.idl" )
- cpp_quote("//")
- cpp_quote("// DO NOT EDIT THIS FILE.")
- cpp_quote("//")
- cpp_quote("//*****************************************************************************")
- import "objidl.idl";
- import "nsscore.idl";
- import "DataContainer.idl";
- import "StreamDescription.idl";
- import "WMSPacket.idl";
- interface IWMSPacketStreamer;
- interface IWMSPacketStreamerCallback;
- interface IWMSPushSource;
- interface IWMSPushSourceCallback;
- interface IWMSPushSink;
- interface IWMSPacketStreamDataContainer;
- cpp_quote( "EXTERN_GUID( IID_IWMSPacketStreamer, 0x72527A81,0x1119,0x11d2,0x9E,0xEE,0x00,0x60,0x97,0xD2,0xD7,0xCF );" )
- cpp_quote( "EXTERN_GUID( IID_IWMSPacketStreamerCallback, 0x72527A82,0x1119,0x11d2,0x9E,0xEE,0x00,0x60,0x97,0xD2,0xD7,0xCF );" )
- cpp_quote( "EXTERN_GUID( IID_IWMSPushSource, 0x0B840593,0x115C,0x11d2,0x9E,0xEE,0x00,0x60,0x97,0xD2,0xD7,0xCF );" )
- cpp_quote( "EXTERN_GUID( IID_IWMSPushSourceCallback, 0xead035e4, 0xbe4a, 0x4a7a, 0xbc, 0x19, 0x5b, 0xb, 0x9e, 0x9, 0xd7, 0x4c );" )
- cpp_quote( "EXTERN_GUID( IID_IWMSPushSink, 0x0B840594,0x115C,0x11d2,0x9E,0xEE,0x00,0x60,0x97,0xD2,0xD7,0xCF );" )
- cpp_quote( "EXTERN_GUID( IID_IWMSPacketStreamDataContainer, 0xb1b6039, 0x572c, 0x11d2, 0x9e, 0xff, 0x0, 0x60, 0x97, 0xd2, 0xd7, 0xcf );" )
- ///////////////////////////////////////////////////////////////////////////////
- // These are the options for a seek and play command that are passed in
- // the command context to the play command.
- typedef [public] enum WMS_SEEK_AND_PLAY_TYPE
- {
- WMSPlayFromCurrentPosition,
- WMSSeekToIFrameAndPlay,
- WMSSeekToPositionAndPlay,
- } WMS_SEEK_AND_PLAY_TYPE;
- // These are the flags passed to a seek command.
- cpp_quote("#define WMS_SEEK_TO_IFRAME 0x0001")
- //////////////////////////////////////////////////////////////////////////////
- //
- // GENERIC PACKET STREAMER
- //
- //////////////////////////////////////////////////////////////////////////////
- [
- object,
- pointer_default(unique),
- uuid(72527A81-1119-11d2-9EEE-006097D2D7CF),
- version(9.0),
- helpstring("Contains methods for retrieving information on streams being sent down a data path and for controlling the streams being sent down a data path.")
- ]
- interface IWMSPacketStreamer : IUnknown
- {
- // This is called every time a source changes. This is called once
- // for a simple movie file, and called every time a server-side
- // playlist changes its output.
- [helpstring("Retrieves header information on streams that are being sent down the data path.")] HRESULT
- GetStreamInfo(
- [in] IWMSPacketStreamerCallback *pCallback,
- [in] QWORD qwContext
- );
- // A parser will be smart about waiting until the next
- // iframe before sending data from a newly selected stream.
- [helpstring("Specifies the streams that are sent down the data path.")] HRESULT
- SelectStream(
- [in] IWMSCommandContext *pCommand,
- [in] IWMSStreamSwitchDescriptionList *pStreamSwitchDescList,
- [in] IWMSPacketStreamerCallback *pCallback,
- [in] QWORD qwContext
- );
- // This affects all selected streams. It returns the min seek
- // point of all selected streams.
- // When the parser seeks to a point, it returns all frames
- // after and including the first iframe of the stream. This
- // lets us ignore pframes that are after the common seek point
- // but before the next iframe.
- [helpstring("Seeks to a specific offset in a multimedia stream.")] HRESULT
- Seek(
- [in] IWMSCommandContext *pCommand,
- [in] DWORD dwOffsetType,
- [in] QWORD qwOffset,
- [in] DWORD dwFlags,
- [in] IWMSPacketStreamerCallback *pCallback,
- [in] QWORD qwContext
- );
- [helpstring("Reserved for future use.")] HRESULT
- ChangeStreamFormat(
- [in] IWMSCommandContext *pCommand,
- [in] IWMSPacketStreamerCallback *pCallback,
- [in] QWORD qwContext
- );
- [helpstring("Reserved for future use.")] HRESULT
- Interrupt(
- [in] IWMSCommandContext *pCommand,
- [in] DWORD dwOptions,
- [in] IWMSPacketStreamerCallback *pCallback,
- [in] QWORD qwContext
- );
- // Extended Commands
- [helpstring("Passes extended commands defined by a plug-in up the data path.")] HRESULT
- DoExtendedCommand(
- [in] LPWSTR szCommandName,
- [in] IWMSCommandContext *pCommand,
- [in] IWMSPacketStreamerCallback *pCallback,
- [in] QWORD qwContext
- );
- // This releases internal references, possibly breaking
- // cyclic references.
- [helpstring("Called by the server when the data path is being shut down.")] HRESULT
- Shutdown();
- };
- //////////////////////////////////////////////////////////////////////////////
- //////////////////////////////////////////////////////////////////////////////
- [
- object,
- pointer_default(unique),
- uuid(72527A82-1119-11d2-9EEE-006097D2D7CF),
- version(9.0),
- helpstring("Contains methods that enable a plug-in to respond to IWMSPacketStreamer method calls.")
- ]
- interface IWMSPacketStreamerCallback : IUnknown
- {
- [helpstring("Called by the plug-in to respond to the IWMSPacketStreamer::GetStreamInfo method call.")] HRESULT
- OnGetStreamInfo(
- [in] HRESULT hr,
- [in] IWMSStreamHeaderList *pHeaderList,
- [in] IWMSContentDescriptionList *pContentDescription,
- [in] QWORD qwContext
- );
- [helpstring("Called by the plug-in to respond to the IWMSPacketStreamer::Seek method call.")] HRESULT
- OnSeek(
- [in] HRESULT hr,
- [in] QWORD qwActualPosition,
- [in] QWORD qwContext
- );
- [helpstring("Called by the plug-in to respond to the IWMSPacketStreamer::SelectStream method call.")] HRESULT
- OnSelectStream(
- [in] HRESULT hr,
- [in] QWORD qwContext
- );
- [helpstring("Reserved for future use.")] HRESULT
- OnChangeStreamFormat(
- [in] HRESULT hr,
- [in] QWORD qwContext
- );
- [helpstring("Reserved for future use.")] HRESULT
- OnInterrupt(
- [in] HRESULT hr,
- [in] QWORD qwContext
- );
- [helpstring("Called by the plug-in to respond to the IWMSPacketStreamer::DoExtendedCommand method call.")] HRESULT
- OnDoExtendedCommand(
- [in] HRESULT hr,
- [in] QWORD qwContext
- );
- };
- //////////////////////////////////////////////////////////////////////////////
- //
- // PACKET STREAM DATA CONTAINER
- //
- // Each live source will implement a storage system that allocates data
- // containers. Those data containers will implement IWMSPacketStreamer
- // and IWMSPacketStreamDataContainer in addition to IWMSDataContainer.
- //////////////////////////////////////////////////////////////////////////////
- //////////////////////////////////////////////////////////////////////////////
- [
- object,
- pointer_default(unique),
- uuid(0B1B6039-572C-11d2-9EFF-006097D2D7CF),
- version(9.0),
- helpstring("Contains methods to notify the server of stream signals and to determine the maximum packet size used by a data container.")
- ]
- interface IWMSPacketStreamDataContainer : IUnknown
- {
- [helpstring("Called by the server to indicate that it should be notified of stream signals.")] HRESULT
- SetStreamSignalHandler(
- [in] IWMSStreamSignalHandler *pStreamSignalHandler
- );
- [helpstring("Retrieves the maximum packet size, in bytes, that is used by the data container.")] HRESULT
- GetMaxPacketSize( [out] DWORD *pdwMaxPacketSize );
- }
- //////////////////////////////////////////////////////////////////////////////
- //
- // PACKET PUSH INTERFACES
- //
- //////////////////////////////////////////////////////////////////////////////
- //////////////////////////////////////////////////////////////////////////////
- [
- object,
- pointer_default(unique),
- uuid(0B840593-115C-11d2-9EEE-006097D2D7CF),
- version(9.0),
- helpstring("Contains methods that control the flow of data through a data path.")
- ]
- interface IWMSPushSource : IUnknown
- {
- [helpstring("Reserved for future use.")] HRESULT
- ConnectSink( [in] IWMSPushSink *pDataOutput );
- [helpstring("Reserved for future use.")] HRESULT
- DisconnectSink();
- // Call start each time you change the rate (ie, play to
- // fast-forward). A negative rate is rewind.
- [helpstring("Starts the flow of packets down a data path.")] HRESULT
- StartPushing(
- [in] IWMSCommandContext *pCommand,
- [in] double dblRate,
- [in] IWMSPushSourceCallback *pCallback,
- [in] QWORD qwContext
- );
- [helpstring("Stops the flow of packets down a data path.")] HRESULT
- StopPushing(
- [in] IWMSCommandContext *pCommand,
- [in] IWMSPushSourceCallback *pCallback,
- [in] QWORD qwContext
- );
- // This may or may not be implemented differently than StopPushing.
- [helpstring("Pauses the flow of packets down a data path.")] HRESULT
- PausePushing(
- [in] IWMSCommandContext *pCommand,
- [in] IWMSPushSourceCallback *pCallback,
- [in] QWORD qwContext
- );
- [helpstring("Passes UDP resend requests up the data path.")] HRESULT
- ResendPacket(
- [in] IWMSCommandContext *pCommand,
- [in] DWORD dwPacketNum,
- [in] DWORD dwStreamNum
- );
- };
- //////////////////////////////////////////////////////////////////////////////
- [
- object,
- pointer_default(unique),
- uuid(EAD035E4-BE4A-4a7a-BC19-5B0B9E09D74C),
- version(9.0),
- helpstring("Contains methods that enable a plug-in to respond to IWMSPushSource method calls.")
- ]
- interface IWMSPushSourceCallback : IUnknown
- {
- [helpstring("Called by the plug-in to respond to the IWMSPushSource::StartPushing method call.")] HRESULT
- OnStartPushing(
- [in] HRESULT hr,
- [in] QWORD qwContext
- );
- [helpstring("Called by the plug-in to respond to the IWMSPushSource::StopPushing method call.")] HRESULT
- OnStopPushing(
- [in] HRESULT hr,
- [in] QWORD qwContext
- );
- [helpstring("Called by the plug-in to respond to the IWMSPushSource::PausePushing method call.")] HRESULT
- OnPausePushing(
- [in] HRESULT hr,
- [in] QWORD qwContext
- );
- };
- //////////////////////////////////////////////////////////////////////////////
- [
- object,
- pointer_default(unique),
- uuid(0B840594-115C-11d2-9EEE-006097D2D7CF),
- version(9.0),
- helpstring("Contains a method to request that a data path component process a packet list.")
- ]
- interface IWMSPushSink : IUnknown
- {
- [helpstring("Reserved for future use.")] HRESULT
- ConnectSource( [in] IWMSPushSource *pDataInput );
- [helpstring("Reserved for future use.")] HRESULT
- DisconnectSource();
- // The main method for moving data through the server.
- [helpstring("Requests that a data path component process a packet list.")] HRESULT
- ProcessPackets( [in] IWMSPacketList *pPacketList );
- };
|