Aperçu d’un Project
[Cette API n’est pas prise en charge et peut être modifiée ou non disponible à l’avenir.]
Pour afficher un aperçu d’un projet, appelez d’abord CoCreateInstance pour créer une instance du moteur de rendu de base. L’identificateur de classe est CLSID _ RenderEngine. Appelez ensuite la méthode IRenderEngine :: SetTimelineObject pour spécifier la chronologie que vous rendez.
La première fois que vous affichez un aperçu de la chronologie, effectuez les appels suivants dans l’ordre indiqué :
- Appelez IRenderEngine :: SetRenderRange pour spécifier la partie de la chronologie à afficher. (facultatif)
- Appelez IRenderEngine :: ConnectFrontEnd pour créer le composant frontal du graphique.
- Appelez IRenderEngine :: RenderOutputPins. Cette méthode connecte chaque broche de sortie à un convertisseur vidéo ou audio, en terminant le graphique.
L’exemple de code suivant illustre ces étapes :
IRenderEngine *pRender = NULL;
hr = CoCreateInstance(CLSID_RenderEngine, NULL,
CLSCTX_INPROC_SERVER, IID_IRenderEngine, (void**)&pRender);
hr = pRender->SetTimelineObject(pTL);
hr = pRender->ConnectFrontEnd();
hr = pRender->RenderOutputPins();
Exécutez maintenant le graphique de filtre. tout d’abord, appelez la méthode IRenderEngine :: GetFilterGraph pour récupérer un pointeur vers l’interface IGraphBuilder du gestionnaire de Graph. interrogez ensuite le gestionnaire de Graph de filtre pour l’interface imediacontrol et appelez imediacontrol :: Run, comme indiqué dans le code suivant :
IGraphBuilder *pGraph = NULL;
IMediaControl *pControl = NULL;
hr = pRender->GetFilterGraph(&pGraph);
hr = pGraph->QueryInterface(IID_IMediaControl, (void **)&pControl);
hr = pControl->Run();
utilisez l’interface IMediaEventEx du gestionnaire de Graph pour attendre la fin de la préversion. vous pouvez également rechercher le graphique à l’aide de l’interface IMediaSeeking du gestionnaire de Graph, comme vous le feriez avec un graphique de lecture de fichier.
Pour réafficher un aperçu du projet, recherchez à nouveau le graphique sur l’heure zéro et rappelez l' exécution . Si vous modifiez le contenu de la chronologie, procédez comme suit :
- Appelez SetRenderRange. (facultatif)
- Appelez ConnectFrontEnd.
- Si la méthode ConnectFrontEnd retourne S _ WARN _ OUTPUTRESET, appelez RenderOutputPins. (Si ConnectFrontEnd retourne S _ OK, vous pouvez ignorer cette étape.)
- Recherche le graphique sur l’heure zéro.
- Exécutez le graphique.
L’exemple suivant illustre ces étapes :
hr = pRender->ConnectFrontEnd();
if (hr == S_WARN_OUTPUTRESET)
{
hr = pRender->RenderOutputPins();
}
LONGLONG llStart = 0;
hr = pSeek->SetPositions(&llStart, AM_SEEKING_AbsolutePositioning, 0, 0);
hr = pControl->Run();
Pour obtenir un exemple complet qui charge et affiche un aperçu d’un fichier projet, consultez chargement et aperçu d’un Project.