CPosPassThru, classe

hiérarchie de la classe de base cpospassthru

La CPosPassThru classe gère les commandes de recherche pour les filtres de transformation, en les passant en amont au filtre suivant.

quand une application recherche le graphique de filtre, le gestionnaire de Graph de filtre donne la commande seek aux filtres de convertisseur. La commande est passée en amont, via la broche de sortie de chaque filtre, jusqu’à ce qu’elle atteigne un filtre qui peut exécuter la commande (le cas échéant). Pour plus d’informations, consultez recherche. La CPosPassThru classe transmet toutes les commandes Seek à la broche de sortie sur le filtre en amont, comme indiqué dans le diagramme suivant.

la classe cpospassthru envoie des commandes de recherche en amont.

bien que cette classe soit fournie dans la bibliothèque de classes de base, DirectShow fournit également la même classe dans Quartz.dll. L’utilisation de la version Quartz.dll peut être légèrement réduite dans votre filtre, car la classe est chargée au moment de l’exécution à partir de la DLL. Pour utiliser cette version, appelez la fonction CreatePosPassThru .

Dans la méthode NonDelegatingQueryInterface de votre code confidentiel de sortie, déléguez à l’objet CPosPassThru chaque fois que l’interface demandée est IMediaSeeking ou IMediaPosition, comme illustré dans le code suivant :

// The following member variables are assumed:
IPin *m_pInput;    // Pointer to the input pin on your filter.
IUnknown *m_pPos;  // Pointer to the CPosPassThru object.

STDMETHODIMP CMyPin::NonDelegatingQueryInterface(REFIID riid, void **ppv)
{
    HRESULT hr
    if (riid == IID_IMediaPosition || riid == IID_IMediaSeeking) 
    {
        if (m_pPos == NULL) 
        {
            // We have not created the CPosPassThru object yet. Do so now.
            hr = CreatePosPassThru(GetOwner(), FALSE, m_pInput, &m_pPos);
            if (FAILED(hr)) return hr;
        }
        return m_pPos->QueryInterface(riid, ppv);
    } 
    else
    {
         // Other interfaces (not shown).
    }
}

~CMyPin::CMyPin() 
{
    // Release the CPosPassThruObject.
    if (m_pPos != NULL) m_pPos->Release();
}

Sauf indication contraire, toutes les méthodes IMediaPosition et IMediaSeeking de cette classe appellent la méthode correspondante sur l’épingle connectée et retournent le résultat.

Méthodes publiques Description
CPosPassThru Méthode de constructeur.
ForceRefresh Obsolète.
GetMediaTime Récupère les horodatages de l’échantillon actuel. Virtuels.
Méthodes IMediaPosition Description
Obtient la _ durée Récupère la durée du flux.
put _ CurrentPosition Définit la position actuelle, par rapport à la durée totale du flux.
Obtient _ StopTime Récupère l’heure à laquelle la lecture s’arrêtera, par rapport à la durée du flux.
put _ StopTime Définit l’heure à laquelle la lecture s’arrêtera, par rapport à la durée du flux.
Obtient _ PrerollTime Récupère la quantité de données qui seront placées en file d’attente avant la position de début.
put _ PrerollTime Définit la quantité de données qui seront placées en file d’attente avant la position de début.
taux d’accès _ Récupère la vitesse de lecture.
taux de placement _ Définit la vitesse de lecture.
Obtient _ CurrentPosition Récupère la position actuelle, par rapport à la durée totale du flux.
CanSeekForward Détermine si le flux peut être recherché en arrière.
CanSeekBackward Détermine si le flux peut être recherché par progression.
Méthodes IMediaSeeking Description
CheckCapabilities Interroge si un flux a spécifié des fonctionnalités de recherche.
ConvertTimeFormat Convertit d’un format d’heure en un autre.
GetAvailable Récupère la plage de temps pendant laquelle la recherche est efficace.
GetCapabilities Récupère toutes les fonctionnalités de recherche du flux.
GetCurrentPosition Récupère la position actuelle, par rapport à la durée totale du flux.
GetDuration Récupère la durée du flux.
GetPositions Récupère la position actuelle et la position d’arrêt, par rapport à la durée totale du flux.
GetPreroll Récupère la quantité de données qui seront placées en file d’attente avant la position de début.
GetRate Récupère la vitesse de lecture.
GetStopPosition Récupère l’heure à laquelle la lecture s’arrêtera, par rapport à la durée du flux.
GetTimeFormat Récupère le format d’heure actuel.
IsFormatSupported Détermine si un format d’heure spécifié est pris en charge.
IsUsingTimeFormat Détermine si un format d’heure spécifié est le format en cours d’utilisation.
QueryPreferredFormat Récupère le format d’heure par défaut pour le flux.
SetPositions Définit la position actuelle et la position d’arrêt.
Seles Définit la vitesse de lecture.
SetTimeFormat Définit le format d’heure.
Fonctions d’assistance Description
CreatePosPassThru Crée un CPosPassThru objet ou CRendererPosPassThru .

Spécifications

Condition requise Valeur
En-tête
Ctlutil. h (inclure Flux. h)
Bibliothèque
Strmbase. lib (versions commerciales);
Strmbasd. lib (versions Debug)