IWMEncProfileCollection::Refresh
![]() |
The Refresh method removes the old profile collection and populates a new collection.
Syntax
HRESULT Refresh();
Parameters
This method takes no parameters.
Return Values
If the method succeeds, it returns S_OK. If it fails, it supports the IErrorInfo interface and returns an HRESULT error code.
Remarks
Use the Refresh method to update all of the available profiles after you have modified the collection, for example by changing the custom profile directory.
Example Code
// Include libraries.
#include <windows.h>
#include <atlbase.h> // Includes CComBSTR.
#include "wmencode.h"
// Declare variables.
HRESULT hr;
IWMEncoder* pEncoder;
IWMEncSourceGroupCollection* pSrcGrpColl;
IWMEncSourceGroup* pSrcGrp;
IWMEncSource* pAudSrc;
IWMEncSource* pVidSrc;
IWMEncProfileCollection* pProColl;
IWMEncProfile* pPro;
long lCount;
int i;
// 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 pointer to an IWMEncSourceGroupCollection
// interface.
if ( SUCCEEDED( hr ) )
{
hr = pEncoder->get_SourceGroupCollection(&pSrcGrpColl);
}
// Add an empty source group to the collection.
if ( SUCCEEDED( hr ) )
{
hr = pSrcGrpColl->Add(CComBSTR("SG_1"), &pSrcGrp);
}
// Add an audio and video source to the source group.
if ( SUCCEEDED( hr ) )
{
hr = pSrcGrp->AddSource(WMENC_AUDIO, &pAudSrc);
}
if ( SUCCEEDED( hr ) )
{
hr = pSrcGrp->AddSource(WMENC_VIDEO, &pVidSrc);
}
// Specify an .avi source file and a .wmv output file.
CComBSTR m_bstrInFile("C:\\filename.avi");
if ( SUCCEEDED( hr ) )
{
hr = pAudSrc->SetInput(m_bstrInFile);
}
if ( SUCCEEDED( hr ) )
{
hr = pVidSrc->SetInput(m_bstrInFile);
}
// Loop through the profile collection and retrieve a specific
// profile.
if ( SUCCEEDED( hr ) )
{
hr = pEncoder->get_ProfileCollection(&pProColl);
}
CComBSTR bstrName("");
CComBSTR bstrDesc("");
long lMaxPacketSz;
short iMediaCount;
VARIANT_BOOL vbMultiBitrate;
if ( SUCCEEDED( hr ) )
{
hr = pProColl->get_Count(&lCount);
}
for (i=0; i<lCount; i++)
{
if ( SUCCEEDED( hr ) )
{
hr = pProColl->Item(i, &pPro);
}
if ( SUCCEEDED( hr ) )
{
hr = pPro->get_Name(&bstrName);
}
if (_wcsicmp(bstrName, CComBSTR("profile_name"))==0)
{
if ( SUCCEEDED( hr ) )
{
hr = pSrcGrp->put_Profile(CComVariant(pPro));
}
if ( SUCCEEDED( hr ) )
{
hr = pPro->get_Description(&bstrDesc);
}
if ( SUCCEEDED( hr ) )
{
hr = pPro->get_MaxPacketSize(&lMaxPacketSz);
}
if ( SUCCEEDED( hr ) )
{
hr = pPro->get_MediaCount(WMENC_VIDEO, &iMediaCount);
}
if ( SUCCEEDED( hr ) )
{
hr = pPro->get_MultipleBitrate(&vbMultiBitrate);
}
break;
}
}
// Start the encoding process.
if ( SUCCEEDED( hr ) )
{
hr = pEncoder->Start();
}
// Release pointers.
if ( pSrcGrpColl )
{
pSrcGrpColl->Release();
pSrcGrpColl = NULL;
}
if ( pSrcGrp )
{
pSrcGrp->Release();
pSrcGrp = NULL;
}
if ( pAudSrc )
{
pAudSrc->Release();
pAudSrc = NULL;
}
if ( pVidSrc )
{
pVidSrc->Release();
pVidSrc = NULL;
}
if ( pProColl )
{
pProColl->Release();
pProColl = NULL;
}
if ( pPro )
{
pPro->Release();
pPro = NULL;
}
if ( pEncoder )
{
pEncoder->Release();
pEncoder = NULL;
}
Requirements
Header: wmencode.h
Library: wmenc.exe
See Also
.gif)