IWMEncProfile::get_MultipleBitrate

Windows Media Encoder SDK banner art

The get_MultipleBitrate method retrieves a Boolean value indicating whether the profile supports multiple bit rate encoded output.

Syntax

HRESULT get_MultipleBitrate(
  VARIANT_BOOL*  pbMBR
);

Parameters

pbMBR

[out]  Pointer to a VARIANT_BOOL indicating whether the profile supports multiple bit rate encoded output.

Return Values

If the method succeeds, it returns S_OK. If it fails, it supports the IErrorInfo interface and returns an HRESULT error code.

Return code Number Description
E_POINTER 0x80004003 The pointer to the Boolean value is NULL.

Example Code

// Include libraries.

#include <windows.h>
#include <atlbase.h>    // Includes CComBSTR.
#include "wmencode.h"

// Declare variables.

    HRESULT hr;
    IWMEncoder* pEncoder;
    IWMEncSourceGroupCollection* pSrcGrpColl;
    IWMEncSourceGroup* pSrcGrp;
    IWMEncSource* pAudSrc;
    IWMEncSource* pVidSrc;
    IWMEncProfileCollection* pProColl;
    IWMEncProfile* pPro;
    long lCount;
    int i;

// Initialize the COM library and retrieve a pointer
// to an IWMEncoder interface.

hr = CoInitialize(NULL);
if ( SUCCEEDED( hr ) )
{
    hr = CoCreateInstance(CLSID_WMEncoder,
                     NULL,
                     CLSCTX_INPROC_SERVER,
                     IID_IWMEncoder,
                    (void**) &pEncoder);
}

// Retrieve a pointer to an IWMEncSourceGroupCollection
// interface.
if ( SUCCEEDED( hr ) )
{
    hr = pEncoder->get_SourceGroupCollection(&pSrcGrpColl);
}

// Add an empty source group to the collection.
if ( SUCCEEDED( hr ) )
{
    hr = pSrcGrpColl->Add(CComBSTR("SG_1"), &pSrcGrp);
}

// Add an audio and a video stream to the source group.
if ( SUCCEEDED( hr ) )
{
    hr = pSrcGrp->AddSource(WMENC_AUDIO, &pAudSrc);
}

if ( SUCCEEDED( hr ) )
{
    hr = pSrcGrp->AddSource(WMENC_VIDEO, &pVidSrc);
}

// Specify an .avi source file and a .wmv output file.

CComBSTR m_bstrInFile("C:\\filename.avi");
if ( SUCCEEDED( hr ) )
{
    hr = pAudSrc->SetInput(m_bstrInFile);
}

if ( SUCCEEDED( hr ) )
{
    hr = pVidSrc->SetInput(m_bstrInFile);
}

// Loop through the profile collection and retrieve a specific
// profile.
if ( SUCCEEDED( hr ) )
{
    hr = pEncoder->get_ProfileCollection(&pProColl);
}
CComBSTR bstrName("");
CComBSTR bstrDesc("");
long lMaxPacketSz;
short iMediaCount;
VARIANT_BOOL vbMultiBitrate;
if ( SUCCEEDED( hr ) )
{
    hr = pProColl->get_Count(&lCount);
}

for (i=0; i<lCount; i++)
{
    if ( SUCCEEDED( hr ) )
    {
        hr = pProColl->Item(i, &pPro);
    }
    if ( SUCCEEDED( hr ) )
    {
        hr = pPro->get_Name(&bstrName);
    }
    if (_wcsicmp(bstrName, CComBSTR("Windows Media Video 8 for Local Area Network (384 Kbps)"))==0)
    {
        if ( SUCCEEDED( hr ) )
        {
            hr = pSrcGrp->put_Profile(CComVariant(pPro));
        }
        if ( SUCCEEDED( hr ) )
        {
            hr = pPro->get_Description(&bstrDesc);
        }
        if ( SUCCEEDED( hr ) )
        {
            hr = pPro->get_MaxPacketSize(&lMaxPacketSz);
        }
        if ( SUCCEEDED( hr ) )
        {
            hr = pPro->get_MediaCount(WMENC_VIDEO, &iMediaCount);
        }
        if ( SUCCEEDED( hr ) )
        {
            hr = pPro->get_MultipleBitrate(&vbMultiBitrate);
        }
        break;
    }
}

// Start the encoding process.
if ( SUCCEEDED( hr ) )
{
    hr = pEncoder->Start();
}

// Release pointers.
if ( pSrcGrpColl )
{
    pSrcGrpColl->Release();
    pSrcGrpColl = NULL;
}
if ( pSrcGrp )
{
    pSrcGrp->Release();
    pSrcGrp = NULL;
}
if ( pAudSrc )
{
    pAudSrc->Release();
    pAudSrc = NULL;
}
if ( pVidSrc )
{
    pVidSrc->Release();
    pVidSrc = NULL;
}
if ( pProColl )
{
    pProColl->Release();
    pProColl = NULL;
}
if ( pPro )
{
    pPro->Release();
    pPro = NULL;
}

if ( pPostview )
{
    pPostview->Release();
    pPostview = NULL;
}
if ( pPostColl )
{
    pPostColl->Release();
    pPostColl = NULL;
}
if ( pPostViewColl )
{
    pPostViewColl->Release();
    pPostViewColl = NULL;
}
if ( pEncoder )
{
    pEncoder->Release();
    pEncoder = NULL;
}

Requirements

Header: wmencode.h

Library: wmenc.exe

See Also