IWMEncProfile2::EnumVideoCodec
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