IWMEncAudienceObj::get_AudioFormat
The get_AudioFormat method retrieves the index of the audio format used by the current audience.
Syntax
HRESULT get_AudioFormat(
short iRenderSiteIndex,
long* plFormatIndex
);
Parameters
iRenderSiteIndex
[in] short containing the audience stream index. Because an audience can only contain one stream of each type, iRenderSiteIndex must be zero.
plFormatIndex
[out] Pointer to a long that indicates the index of the audio format.
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
Use the IWMEncProfile2::EnumAudioFormat method to retrieve additional information about the audio format, such as its name, bit rate, channels, sampling rate, and bits per sample. Use the SetAudioConfig method to set these values.
This index corresponds to the total number of formats supported by the audio codec, which you can retrieve using the IWMEncProfile2::get_AudioFormatCount method.
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 as 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