CPosPassThru, classe

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.

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 |
|
| Bibliothèque |
|