IWMEncAudienceObj::get_AudioCodec

Windows Media Encoder SDK banner art

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