Méthode IMFTimecodeTranslate ::BeginConvertTimecodeToHNS (mfidl.h)
Démarre un appel asynchrone pour convertir le code horaire SMPTE (Society of Motion Picture and Television Engineers) en unités de 100 nanosecondes.
Syntaxe
HRESULT BeginConvertTimecodeToHNS(
[in] const PROPVARIANT *pPropVarTimecode,
[in] IMFAsyncCallback *pCallback,
[in] IUnknown *punkState
);
Paramètres
[in] pPropVarTimecode
Temps dans le code de temps SMPTE à convertir. Le membre vt de la structure PROPVARIANT est défini sur VT_I8. Le membre hVal.QuadPart contient l’heure sous forme décimale codée binaire (BCD). Consultez la section Notes.
[in] pCallback
Pointeur vers l’interface IMFAsyncCallback d’un objet de rappel. L’appelant doit implémenter cette interface.
[in] punkState
PPointer à l’interface IUnknown d’un objet d’état, défini par l’appelant. Ce paramètre peut être NULL. Vous pouvez utiliser cet objet pour stocker des informations d’état. L’objet est retourné à l’appelant lorsque le rappel est appelé.
Valeur retournée
Cette méthode retourne un code HRESULT. Les valeurs possibles sont notamment celles figurant dans le tableau suivant.
Code de retour | Description |
---|---|
|
pPropVarTimecode n’est pas VT_I8. |
|
La méthode Shutdown de l’objet a été appelée. |
|
Le flux d’octets n’est pas recherché. Le code d’heure ne peut pas être lu à partir de la fin du flux d’octets. |
Remarques
Une fois la méthode asynchrone terminée, la méthode IMFAsyncCallback ::Invoke de l’objet de rappel est appelée. À ce stade, l’application doit appeler IMFTimecodeTranslate ::EndConvertTimecodeToHNS pour terminer la demande asynchrone.
La valeur de pPropVarTimecode est une valeur non signée 64 bits tapée en tant que LONGLONG. Le DWORD supérieur contient la plage. (Une plage est une série continue de codes temporels.) Le DWORD inférieur contient le code de temps sous la forme d’un nombre hexadécimal 0xhhmmssff, où chaque séquence de 2 octets est lue en tant que valeur décimale.
void CreateTimeCode(
DWORD dwFrames,
DWORD dwSeconds,
DWORD dwMinutes,
DWORD dwHours,
DWORD dwRange,
PROPVARIANT *pvar
)
{
ULONGLONG ullTimecode = ((ULONGLONG)dwRange) << 32;
ullTimecode += dwFrames % 10;
ullTimecode += (( (ULONGLONG)dwFrames ) / 10) << 4;
ullTimecode += (( (ULONGLONG)dwSeconds ) % 10) << 8;
ullTimecode += (( (ULONGLONG)dwSeconds ) / 10) << 12;
ullTimecode += (( (ULONGLONG)dwMinutes ) % 10) << 16;
ullTimecode += (( (ULONGLONG)dwMinutes ) / 10) << 20;
ullTimecode += (( (ULONGLONG)dwHours ) % 10) << 24;
ullTimecode += (( (ULONGLONG)dwHours ) / 10) << 28;
pvar->vt = VT_I8;
pvar->hVal.QuadPart = (LONGLONG)ullTimecode;
}
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows 7 [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows Server 2008 R2 [applications de bureau uniquement] |
Plateforme cible | Windows |
En-tête | mfidl.h |