IWMEncAudienceObj::get_AudioCodec
The get_AudioCodec method retrieves the index of the audio codec that is used by the current audience.
Syntax
HRESULT get_AudioCodec(
short iRenderSiteIndex,
long* plCodecIndex
);
Parameters
iRenderSiteIndex
[in] short containing the audience stream index. Because an audience can only contain one stream of each type, iRenderSiteIndex must be zero.
plCodecIndex
[out] Pointer to a long that indicates the index of the audio codec.
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 index is NULL. |
Remarks
This audio codec index corresponds to the total number of audio codecs that the profile supports for its VBR mode, which you can retrieve using the IWMEncProfile2::get_AudioCodecCount method.
Use the IWMEncProfile2::EnumAudioCodec method to retrieve the name of the audio codec and its FOURCC value.
Example Code
// Include libraries.
#include <windows.h>
#include <atlbase.h>
#include <comdef.h>
#include "C:\WMSDK\WMEncSDK9\include\wmencode.h"
// Declare variables.
HRESULT hr;
IWMEncoder* pEncoder;
IWMEncProfileCollection* pProColl;
IWMEncProfile* pPro;
IWMEncProfile2* pPro2;
IWMEncAudienceObj* pAudnc;
// 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 specific profile.
if ( SUCCEEDED( hr ) )
{
hr = pEncoder->get_ProfileCollection(&pProColl);
}
if ( SUCCEEDED( hr ) )
{
hr = pProColl->Item(11, &pPro);
}
if ( SUCCEEDED( hr ) )
{
hr = CoCreateInstance(CLSID_WMEncProfile2,
NULL,
CLSCTX_INPROC_SERVER,
IID_IWMEncProfile2,
(void**) &pPro2);
}
if ( SUCCEEDED( hr ) )
{
hr = pPro2->LoadFromIWMProfile(pPro);
}
// Retrieve the first audience in the profile.
if ( SUCCEEDED( hr ) )
{
hr = pPro2->get_Audience(0, &pAudnc);
}
// Retrieve the index of the audio codec that is used by the current
// audience.
long lAudCodec;
if ( SUCCEEDED( hr ) )
{
hr = pAudnc->get_AudioCodec (0, &lAudCodec);
}
// Retrieve the index of the audio format that is used by the current
// audio codec.
long lAudFormat;
if ( SUCCEEDED( hr ) )
{
hr = pAudnc->get_AudioFormat(0, &lAudFormat);
}
// Using the audio codec index, retrieve its name and FOURCC value.
long lAud4cc;
CComVariant vAudCodecName;
if ( SUCCEEDED( hr ) )
{
hr = pPro2->EnumAudioCodec(lAudCodec, &vAudCodecName, &lAud4cc);
}
// Use the audio format index to retrieve information such its name.
long lAudVal1;
CComVariant vAudFormatName;
CComVariant vChannels;
CComVariant vSRate;
CComVariant vBitSample;
if ( SUCCEEDED( hr ) )
{
hr = pPro2->EnumAudioFormat (lAudCodec, lAudFormat, &vAudFormatName, &vSRate, &vChannels, &vBitSample, &lAudVal1);
}
// Release pointers.
if ( pAudnc )
{
pAudnc->Release();
pAudnc = NULL;
}
if ( pPro2 )
{
pPro2->Release();
pPro2 = NULL;
}
Requirements
Header: wmencode.h
Library: wmenc.exe
See Also