Share via


IWMSActiveMedia::get_Streams

banner art

Previous Next

IWMSActiveMedia::get_Streams

The get_Streams method retrieves an IWMSActiveStreams interface that contains a collection of the media streams that make up the active media element.

Syntax

  HRESULT get_Streams(
  IWMSActiveStreams**  pVal
);

Parameters

pVal

[out] Pointer to a pointer to an IWMSActiveStreams interface. This method calls AddRef internally. To avoid memory leaks, you must call Release when you are finished using the interface.

Return Values

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

Return code Number Description
E_POINTER 0x80004003 pVal is a NULL pointer argument.

Example Code

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

// Declare variables and interfaces.
HRESULT             hr;
IWMSServer          *pServer;
IWMSPlayers         *pPlayers;
IWMSPlayer          *pPlayer;
IWMSPlaylist        *pPlaylist;
IWMSActiveMedia     *pActiveMedia;
IWMSActiveStreams   *pActiveStreams;
IWMSActiveStream    *pActiveStream;

CComVariant         varIndex;
CComBSTR            bstrName;
long                lCount;
long                lBitRate;

// Initialize the COM library and retrieve a pointer
// to the 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 the IWMSPlayers interface
// and retrieve the number of connected players.
hr = pServer->get_Players(&pPlayers);
if (FAILED(hr)) goto EXIT;
hr = pPlayers->get_Count(&lCount);
if (FAILED(hr)) goto EXIT;

// If players are connected, retrieve a pointer to
// an IWMSPlayer interface containing the first player.
if (lCount > 0)
{
    varIndex = 0;
    hr = pPlayers->get_Item(varIndex, &pPlayer);
    if (FAILED(hr)) goto EXIT;
}
// Retrieve the playlist for the player.
// NOTE: A valid playlist file is not always returned. This may be
// the case, for example, if the user requested a specific content
// file or if a broadcast publishing point is being used.
hr = pPlayer->get_RequestedPlaylist(&pPlaylist);
if (FAILED(hr)) goto EXIT;
{
    // Retrieve a pointer to the IWMSActiveMedia interface.
    hr = pPlaylist->get_CurrentMediaInformation(&pActiveMedia);
    if (FAILED(hr)) goto EXIT;

    // Retrieve a pointer to the IWMSActiveStreams interface
    // and retrieve the total number of active streams.
    hr = pActiveMedia->get_Streams(&pActiveStreams);
    if (FAILED(hr)) goto EXIT;
    hr = pActiveStreams->get_Count(&lCount);
    if (FAILED(hr)) goto EXIT;

    // Retrieve information about each active stream.
    for (int x = 0; x < lCount; x++) {

        // Retrieve a pointer to the IWMSActiveStream interface.
        varIndex = x;
        hr = pActiveStreams->get_Item(varIndex, &pActiveStream);
        if (FAILED(hr)) goto EXIT;

        // Retrieve the bit rate.
        hr = pActiveStream->get_BitRate(&lBitRate);
        if (FAILED(hr)) goto EXIT;

        // Retrieve the stream name.
        hr = pActiveStream->get_Name(&bstrName);
        if (FAILED(hr)) goto EXIT;

        // Retrieve the stream type.
        WMS_ACTIVE_STREAM_TYPE astType;
        hr = pActiveStream->get_Type(&astType);
        if (FAILED(hr)) goto EXIT;

        // Release temporary COM objects.
        pActiveStream->Release();
    }
}

EXIT:
    // TODO: Release temporary COM objects and uninitialize COM.

Requirements

Header: wmsserver.h.

Library: WMSServerTypeLib.dll.

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

See Also

Previous Next