définition de l’horloge de Graph

quand vous générez un graphique de filtre, le gestionnaire de Graph de filtre choisit automatiquement une horloge de référence pour le graphique. Tous les filtres du graphique sont synchronisés avec l’horloge de référence. En particulier, les filtres de convertisseur utilisent l’horloge de référence pour déterminer l’heure de présentation de chaque échantillon.

il n’y a généralement aucune raison pour qu’une application remplace le choix de l’horloge de référence du gestionnaire Graph Manager. toutefois, vous pouvez le faire en appelant la méthode IMediaFilter :: SetSyncSource sur le gestionnaire de Graph de filtre. Cette méthode prend un pointeur vers l’interface IReferenceClock de l’horloge. Appelez la méthode pendant que le graphique est arrêté.

Si un filtre fournit une horloge, vous pouvez obtenir le pointeur IReferenceClock en appelant QueryInterface sur le filtre. Vous pouvez également implémenter une horloge de référence externe qui n’est pas fournie par un filtre, à condition que votre horloge externe implémente IReferenceClock. L’exemple suivant montre comment spécifier une horloge :

IGraphBuilder *pGraph = 0;
IReferenceClock *pClock = 0;

CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER, 
    IID_IGraphBuilder, (void **)&pGraph);

// Build the graph.
pGraph->RenderFile(L"C:\\Example.avi", 0);

// Create your clock.
hr = CreateMyPrivateClock(&pClock);
if (SUCCEEDED(hr))
{
    // Set the graph clock.
    IMediaFilter *pMediaFilter = 0;
    pGraph->QueryInterface(IID_IMediaFilter, (void**)&pMediaFilter);
    pMediaFilter->SetSyncSource(pClock);
    pClock->Release();
    pMediaFilter->Release();
}

Cet exemple suppose que CreateMyPrivateClock est une fonction définie par l’application qui crée une horloge et retourne un pointeur IReferenceClock .

Vous pouvez également définir le graphique de filtre pour qu’il s’exécute sans horloge, en appelant SetSyncSource avec la valeur null. S’il n’y a pas d’horloge, le graphique s’exécute aussi rapidement que possible. Sans horloge, les filtres de convertisseur n’attendent pas l’heure de la présentation d’un exemple. Au lieu de cela, ils affichent chaque échantillon dès qu’il arrive. La définition du graphique pour qu’il s’exécute sans horloge est utile si vous souhaitez traiter les données rapidement, plutôt que de les afficher en temps réel.

tâches de base DirectShow

CBaseReferenceClock, classe

Temps et horloges dans DirectShow