IWMSPlaylist::CueStream

banner art

Previous Next

IWMSPlaylist::CueStream

The CueStream method prepares the next stream in the queue.

Syntax

  HRESULT CueStream(
  
  IXMLDOMElement*
  
  pPlaylistEntry
  
  );

Parameters

pPlaylistEntry

[in] Pointer to a playlist entry object.

Return Values

If the method succeeds, it returns S_OK. If it fails, it returns an HRESULT error code.

Return code Number Meaning
E_INVALIDARG 0x80070057 pPlaylistEntry is a NULL pointer argument.
NS_E_PLAYLIST_ENTRY_ALREADY_PLAYING 0xC00D14B4L pPlaylistEntry is already playing.
NS_E_PLAYLIST_UNSUPPORTED_ENTRY 0xC00D14B7L pPlaylistEntry is not a media element.

Remarks

The IWMSPlaylist::get_IsStreamCued method can be used to determine whether the stream was successfully cued. The get_IsStreamCued method retrieves a Boolean value indicating whether a specific playlist element has been initialized and is ready to stream. This method is asynchronous, so an immediate call to get_IsStreamCued may return false even though CueStream returned S_OK. To be notified when the stream is actually cued, the application can catch the WMS_EVENT_PLAYLIST_CUE event.

Example Code

#include <windows.h>
#include <atlbase.h>    // Includes CComVariant.
#include "wmsserver.h"

// Declare variables and interfaces.
IWMSServer      *pServer;
IWMSPlayers     *pPlayers;
IWMSPlayer      *pPlayer;
IWMSPlaylist    *pPlaylist;
IXMLDOMElement  *pCurPlaylistEntry;
IXMLDOMElement  *pPlaylistEntry;

HRESULT         hr;
VARIANT_BOOL    bVal;
CComVariant     varIndex;
long            lCount;

// Initialize the COM library and retrieve a pointer
// to an IWMSServer interface.
hr = CoInitialize(NULL);
hr = CoCreateInstance(CLSID_WMSServer,
                      NULL,
                      CLSCTX_ALL,
                      IID_IWMSServer,
                      (void **)&pServer);
if (FAILED(hr)) goto EXIT;

// Retrieve a pointer to an IWMSPlayers interface
// and retrieve the total count of current connections.
hr = pServer->get_Players(&pPlayers);
if (FAILED(hr)) goto EXIT;
hr = pPlayers->get_Count(&lCount);
if (FAILED(hr)) goto EXIT;

// Retrieve information about each requested playlist.
for (long x = 0; x < lCount; x++)
{
    varIndex = x;
    hr = pPlayers->get_Item(varIndex, &pPlayer);
    if (FAILED(hr)) goto EXIT;

    // Retrieve the playlist that was requested
    // by the client if one exists.
    hr = pPlayer->get_RequestedPlaylist(&pPlaylist);
    if (FAILED(hr)) goto EXIT;

    // Retrieve information about the current playlist entry.
    hr = pPlaylist->get_CurrentPlaylistEntry(&pPlaylistEntry);
    if (FAILED(hr)) goto EXIT;

    // Retrieve information about each playlist entry.
    while (pPlaylistEntry != NULL)
    {
        pCurPlaylistEntry = pPlaylistEntry;

        // Retrieve the next playlist entry.
        hr = pPlaylist->get_CallerEntry(pCurPlaylistEntry,
                                        &pPlaylistEntry);
        if (FAILED(hr)) goto EXIT;

        // Retrieve a Boolean value that indicates whether this
        // playlist entry is cued.
        hr = pPlaylist->get_IsStreamCued(pPlaylistEntry, &bVal);
        if (FAILED(hr)) goto EXIT;

        // Cue the playlist entry if it is not yet cued.
        if (bVal == VARIANT_FALSE)
            hr = pPlaylist->CueStream(pPlaylistEntry);
            if (FAILED(hr)) goto EXIT;
    }

    // Release temporary COM objects.
    pPlayer->Release();
    pPlaylist->Release();
    pPlaylistEntry->Release();
    pCurPlaylistEntry->Release();
}



Requirements

Header: wmsserver.h

Library: WMSServerTypeLib.dll

Platform: Windows Server 2003 family, Windows Server 2008 family.

See Also

Previous Next