Partager via


Méthode IMediaSeeking ::SetRate (strmif.h)

[La fonctionnalité associée à cette page, DirectShow, est une fonctionnalité héritée. Il a été remplacé par MediaPlayer, IMFMediaEngine et Audio/Video Capture in Media Foundation. Ces fonctionnalités ont été optimisées pour Windows 10 et Windows 11. Microsoft recommande vivement que le nouveau code utilise MediaPlayer, IMFMediaEngine et Audio/Video Capture dans Media Foundation au lieu de DirectShow, si 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 SetRate méthode définit la vitesse de lecture.

Syntaxe

HRESULT SetRate(
  [in] double dRate
);

Paramètres

[in] dRate

Taux de lecture. Ne doit pas être égal à zéro.

Valeur retournée

Retourne une valeur HRESULT . Les valeurs possibles sont les suivantes.

Code de retour Description
S_OK
Réussite.
E_INVALIDARG
Le taux spécifié était zéro ou une valeur négative. (Consultez la section Notes.)
E_NOTIMPL
Non implémenté.
E_POINTER
Argument pointeur NULL .
VFW_E_UNSUPPORTED_AUDIO
Le périphérique audio ou le filtre ne prend pas en charge ce taux.

Remarques

La vitesse de lecture est exprimée sous la forme d’un rapport de la vitesse normale. Ainsi, 1.0 est la vitesse de lecture normale, 0.5 est la demi-vitesse et 2.0 est deux fois la vitesse. Pour les flux audio, la modification de la vitesse modifie également la hauteur.

Les valeurs négatives indiquent une lecture inversée. La plupart des filtres ne prennent pas en charge la lecture négative, mais retournent un code d’erreur si le paramètre dRate est négatif.

Lorsqu’une application appelle cette méthode sur le Gestionnaire de graphe de filtres, le Gestionnaire de graphes de filtre effectue les opérations suivantes :

  1. Appelle la méthode IMediaSeeking ::GetCurrentPosition . Cet appel retourne la position actuelle telle que calculée par le Gestionnaire de graphe de filtres.
  2. Arrête le graphe de filtre (si le graphique est suspendu ou en cours d’exécution).
  3. Appelle la méthode IMediaSeeking ::SetPositions sur les filtres, avec la position actuelle comme heure de début. Cela a pour effet de réinitialiser la durée du flux à zéro.
  4. Appelle la SetRate méthode sur les filtres, avec le nouveau taux.
  5. Reprend le graphique de filtre, s’il a été suspendu ou en cours d’exécution.
Si une erreur se produit à l’étape 4, le Gestionnaire de graphe de filtre tente de restaurer le taux précédent.

Les filtres doivent répondre aux modifications de taux comme suit :

Analyseur et filtres sources : Le filtre qui provient des horodatages répond à l’appel SetRate . Il s’agit généralement d’un filtre d’analyseur, tel que le filtre de fractionnement AVI, mais il peut s’agir d’un filtre source. Après toute modification de recherche ou de taux, le filtre doit appeler la méthode IPin ::NewSegment avec les nouveaux paramètres. Après un changement de taux, il doit ajuster ses horodatages en conséquence. Étant donné qu’une modification de taux est précédée d’une recherche, les horodatages redémarrent à partir de zéro, de sorte que le filtre peut simplement diviser par le taux pour calculer les nouveaux horodatages.

Filtres du décodeur : Les décodeurs ne doivent pas agir sur SetRate les appels autres que pour les passer amont. Au lieu de cela, ils doivent répondre à l’appel NewSegment que le amont problèmes de l’analyseur. Lorsqu’un filtre de décodeur reçoit de nouvelles informations de segment, il doit stocker les valeurs et passer l’appel NewSegment en aval. Certains décodeurs doivent générer des horodatages supplémentaires en interpolant leur entrée ; ils doivent tenir compte des changements de taux dans ce cas.

Renderers: Les convertisseurs vidéo peuvent généralement ignorer les modifications de débit, car les images entrantes ont déjà l’horodatage approprié. Les convertisseurs audio doivent modifier leur vitesse de lecture, car les décodeurs audio n’effectuent généralement pas de conversions de changement de taux.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau uniquement]
Plateforme cible Windows
En-tête strmif.h (include Dshow.h)
Bibliothèque Strmiids.lib

Voir aussi

Codes d’erreur et de réussite

IMediaSeeking, interface