CPosPassThru, classe
La CPosPassThru
classe gère les commandes de recherche pour les filtres de transformation, en les transmettant en amont au filtre suivant.
Lorsqu’une application recherche le graphique de filtre, le Gestionnaire de filtre Graph donne la commande seek aux filtres du renderer. La commande est passée en amont, via l’épingle 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 de recherche à l’épingle de sortie sur le filtre en amont, comme illustré dans le diagramme suivant.
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 réduire la taille du code 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 broche de sortie, déléguer à l’objet CPosPassThru chaque fois que l’interface demandée est IMediaSeeking ou IMediaPosition, comme indiqué 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 constructeur. |
ForceRefresh | Obsolète. |
GetMediaTime | Récupère les horodatages de l’exemple actuel. Virtuel. |
Méthodes IMediaPosition | Description |
get_Duration | Récupère la durée du flux. |
put_CurrentPosition | Définit la position actuelle, par rapport à la durée totale du flux. |
get_StopTime | Récupère l’heure à laquelle la lecture s’arrête, par rapport à la durée du flux. |
put_StopTime | Définit l’heure à laquelle la lecture s’arrête, par rapport à la durée du flux. |
get_PrerollTime | Récupère la quantité de données qui seront mises en file d’attente avant la position de début. |
put_PrerollTime | Définit la quantité de données qui seront mises en file d’attente avant la position de début. |
get_Rate | Récupère le taux de lecture. |
put_Rate | Définit le taux de lecture. |
get_CurrentPosition | Récupère la position actuelle, par rapport à la durée totale du flux. |
CanSeekForward | Détermine si le flux peut être recherché vers l’arrière. |
CanSeekBackward | Détermine si le flux peut être recherché vers l’avant. |
Méthodes IMediaSeeking | Description |
CheckCapabilities | Interroge si un flux a spécifié des fonctionnalités de recherche. |
ConvertTimeFormat | Convertit d’un format à une autre. |
GetAvailable | Récupère l’intervalle de temps dans lequel 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 mises en file d’attente avant la position de début. |
GetRate | Récupère le taux de lecture. |
GetStopPosition | Récupère l’heure à laquelle la lecture s’arrête, 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 actuellement utilisé. |
QueryPreferredFormat | Récupère le format d’heure préféré pour le flux. |
SetPositions | Définit la position actuelle et la position d’arrêt. |
SetRate | Définit le taux de lecture. |
SetTimeFormat | Définit le format d’heure. |
Fonctions d’assistance | Description |
CreatePosPassThru | Crée un CPosPassThru objet ou CRendererPosPassThru . |
Configuration requise
Condition requise | Valeur |
---|---|
En-tête |
|
Bibliothèque |
|