Classe CPosPassThru
[La fonctionnalité associée à cette page, DirectShow, est une fonctionnalité héritée. Il a été remplacé par MediaPlayer, IMFMediaEngine et Audio/Video Capture dans Media Foundation. Ces fonctionnalités ont été optimisées pour Windows 10 et Windows 11. Microsoft recommande vivement au nouveau code d’utiliser MediaPlayer, IMFMediaEngine et La capture audio/vidéo dans Media Foundation au lieu de DirectShow, lorsque cela est possible. Microsoft suggère que le code existant qui utilise les API héritées soit réécrit pour utiliser les nouvelles API si possible.]
La CPosPassThru
classe gère les commandes de recherche pour les filtres de transformation, en les passant amont au filtre suivant.
Lorsqu’une application recherche le graphe de filtre, le Gestionnaire de graphe de filtre donne la commande seek aux filtres du convertisseur. La commande est transmise 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 de recherche à la broche de sortie sur le filtre 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 quelque peu 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 code pin 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 la broche connectée et retournent le résultat.
Méthodes publiques | Description |
---|---|
CPosPassThru | Méthode du constructeur. |
ForceRefresh | Obsolète. |
GetMediaTime | Récupère les horodatages sur 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 de temps à un autre. |
GetAvailable | Récupère la plage de temps dans 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 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 |
|