//***************************************************************************** 
// 
// Microsoft Windows Media 
// Copyright (C) Microsoft Corporation. All rights reserved. 
//
// FileName:            wmsXMLDOMExtensions.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 wmsXMLDOMExtensions.idl" )
cpp_quote("//")
cpp_quote("// DO NOT EDIT THIS FILE.")
cpp_quote("//")
cpp_quote("//*****************************************************************************") 

import "oaidl.idl";
import "xmldom.idl";

#include "colldispid.h"

cpp_quote( "#ifndef __WMS_XML_DOM_EXTENSIONS_IDL__" )
cpp_quote( "#define __WMS_XML_DOM_EXTENSIONS_IDL__" )

cpp_quote( "#include <WMSDefs.h>" )

//////////////////////////////////////////////////////////////////////////////
    [
        object,
        uuid(165FC383-B494-4465-AD08-4A73CEDF8791),
        dual,
        nonextensible,
        helpstring("Contains properties that describes a specific stream associated with the active media element of a playlist."),
        pointer_default(unique)
    ]
    interface IWMSActiveStream : IDispatch
    {
        typedef [public, uuid(9D6A9BE7-B08C-48a8-9755-ACBC5E79973A)] enum WMS_ACTIVE_STREAM_TYPE
        {
            WMS_STREAM_TYPE_VIDEO = 0,
            WMS_STREAM_TYPE_AUDIO = 1,
            WMS_STREAM_TYPE_OTHER = 2,
        } WMS_ACTIVE_STREAM_TYPE;

            [propget, id(0), helpstring("Retrieves an enumeration value that indicates the stream type.")] HRESULT
        Type([out, retval] WMS_ACTIVE_STREAM_TYPE* pVal);

            [propget, id(1), helpstring("Retrieves the stream name.")] HRESULT
        Name([out, retval] BSTR *pVal);

            [propget, id(2), helpstring("Retrieves the maximum bit rate of the stream, in bps.")] HRESULT
        BitRate([out, retval] long * pVal);
   };


//////////////////////////////////////////////////////////////////////////////
    [
        object,
        uuid(5F248EA2-C018-466c-9AD7-2086CFB9A5D3),
        dual,
        nonextensible,
        helpstring("Contains a collection of IWMSActiveStream objects."),
        pointer_default(unique)
    ]
    interface IWMSActiveStreams : IDispatch
    {
        // Standard collection Methods & Properties: Item, Count & _NewEnum
        COLLECTION_METHODS( IWMSActiveStream*, "Retrieves a specific IWMSActiveStream object from the collection." )
    };



//////////////////////////////////////////////////////////////////////////////
    [
        object,
        uuid(9D07EE1C-798F-4a28-85FA-230664650B7C),
        dual,
        nonextensible,
        helpstring("Contains information about the active media element in a playlist."),
        pointer_default(unique)
    ]
    interface IWMSActiveMedia : IDispatch
    {
            [propget, id(0), helpstring("Retrieves the active duration required to play the media element in milliseconds.")] HRESULT
        Duration([out, retval] long * pVal);

            [propget, id(2), helpstring("Retrieves the total number of data packets contained in the media element.")] HRESULT
        TotalPackets([out, retval] long * pVal);

            [propget, id(3), helpstring("Retrieves a Boolean value that indicates whether the media element references a live source.")] HRESULT
        Live([out, retval] VARIANT_BOOL *pVal);

            [propget, id(4), helpstring("Retrieves a collection of IWMSActiveStream objects that describe the media streams associated with the media element.")] HRESULT
        Streams([out, retval] IWMSActiveStreams **pVal);
        
            [id(5), helpstring("Retrieves the value for a specific name-value pair associated with the media element.")] HRESULT
        GetProperty( [in] BSTR bstrName, [in] BSTR bstrLanguage, [out,retval] BSTR *pProperty );
    };




/////////////////////////////////////////////////////////////////////////////
    [
        object,
        dual,
        nonextensible,
        pointer_default(unique),
        uuid(0EE1F2E7-48EF-11d2-9EFF-006097D2D7CF),
        helpstring("Contains methods that you can use to manage a playlist.")
    ]
    interface IWMSPlaylist : IXMLDOMDocument
    {
            [propget, id(202), helpstring("Specifies or retrieves the active playlist element.")] HRESULT
        CurrentPlaylistEntry( [out, retval] IXMLDOMElement **ppPlaylistEntry );
            [propput, id(202), helpstring("Specifies or retrieves the active playlist element.")] HRESULT
        CurrentPlaylistEntry( [in] IXMLDOMElement *pPlaylistEntry );

            [propget, id(203), helpstring("Retrieves the previous element on the call stack for the playlist.")] HRESULT
        CallerEntry( [in] IXMLDOMElement *pPlaylistEntry, [out, retval] IXMLDOMElement **ppCallerPlaylistEntry );

            [propget, id(204), helpstring("Retrieves a Boolean value indicating whether a specific playlist element has been initialized and is ready to stream.")] HRESULT
        IsStreamCued( [in] IXMLDOMElement *pPlaylistEntry, [out, retval] VARIANT_BOOL *pVal);
        
            [propget, id(205), helpstring("Retrieves the simple duration of the active playlist element in milliseconds.")] HRESULT
        ElapsedSimpleTime( [out, retval] long* pSimpleTime );

            [propget, id(206), helpstring("Retrieves an IWMSActiveMedia object containing information about the active media element in the playlist.")] HRESULT
        CurrentMediaInformation( [out, retval] IWMSActiveMedia **ppMediaInfo );

            [id(207), helpstring("Sends the specified event to the playlist object.")] HRESULT
        FireEvent( [in] BSTR bstrEventName );

            [id(208), helpstring("Cues the specified media element.")] HRESULT
        CueStream( [in] IXMLDOMElement *pPlaylistEntry );
        
            [id(209), helpstring("Frees the resources that were allocated for a cued media element.")] HRESULT
        UncueStream( [in] IXMLDOMElement *pPlaylistEntry );

            [propget, id(210), helpstring("Retrieves a nested playlist object.")] HRESULT
        NestedPlaylist( [in] IXMLDOMElement *pPlaylistEntry, [out, retval] IWMSPlaylist **ppPlaylist );

    };



cpp_quote( "#endif" )


