IWMEncProfile2::EnumVideoCodec

Windows Media Encoder SDK banner art

The EnumVideoCodec method retrieves the name and FOURCC value of a specific video codec.

Syntax

HRESULT EnumVideoCodec(
  long  lCodecIndex,
  VARIANT*  pvarName,
  long*  lFourCC
);

Parameters

lCodecIndex

[in]  long containing the video codec index.

pvarName

[out]  Pointer to a VARIANT specifying the video codec name.

lFourCC

[out]  Pointer to a long that contains the FOURCC value of the video 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 codec name or FourCC value is NULL.

Remarks

Use the IWMEncAudienceObj::get_VideoCodec method to retrieve the index of the video codec that is used by the current profile. Use the get_VideoCodecCount method to retrieve the total number of video codecs available in the current profile, which is determined by the variable bit rate (VBR) mode that is specified for the video stream.

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 video codec that is used by the current
    // audience.
    long lVidCodec;
    if ( SUCCEEDED( hr ) )
    {
        hr = pAudnc->get_VideoCodec (0, &lVidCodec); 
    }

    // Using the video codec index, retrieve its name and FOURCC value.
    long lVid4cc; 
    CComVariant vVidCodecName;
    if ( SUCCEEDED( hr ) )
    {
        hr = pPro2->EnumVideoCodec(lVidCodec, &vVidCodecName, &lVid4cc);
    }

    // Release pointers.
    if ( pAudnc )
    {
        pAudnc->Release();
        pAudnc = NULL;
    }
    if ( pPro2 )
    {
        pPro2->Release();
        pPro2 = NULL;
    }

Requirements

Header: wmencode.h

Library: wmenc.exe

See Also