IWMEncProfile::get_MultipleBitrate
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