Méthode IMFTimecodeTranslate::EndConvertHNSToTimecode (mfidl.h)
Termine une demande asynchrone pour convertir l’heure en unités de 100 nanosecondes en code horaire SMPTE (Society of Motion Picture and Television Engineers).
Syntaxe
HRESULT EndConvertHNSToTimecode(
[in] IMFAsyncResult *pResult,
[out] PROPVARIANT *pPropVarTimecode
);
Paramètres
[in] pResult
Pointeur vers l’interface IMFAsyncResult . Transmettez le même pointeur que celui reçu par votre objet de rappel dans la méthode IMFAsyncCallback::Invoke .
[out] pPropVarTimecode
Pointeur vers un PROPVARIANT qui reçoit l’heure convertie. Le membre vt de la structure PROPVARIANT est défini sur VT_I8. Le membre hVal.QuadPart contient l’heure convertie sous forme décimale codée binaire (BCD). Consultez la section Notes.
Valeur retournée
Si cette méthode réussit, elle retourne S_OK. Sinon, elle retourne un code d’erreur HRESULT.
Notes
Appelez cette méthode une fois la méthode IMFTimecodeTranslate::BeginConvertHNSToTimecode terminée de manière 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.
HRESULT ParseTimeCode(
const PROPVARIANT& var,
DWORD *pdwRange,
DWORD *pdwFrames,
DWORD *pdwSeconds,
DWORD *pdwMinutes,
DWORD *pdwHours
)
{
if (var.vt != VT_I8)
{
return E_INVALIDARG;
}
ULONGLONG ullTimeCode = (ULONGLONG)var.hVal.QuadPart;
DWORD dwTimecode = (DWORD)(ullTimeCode & 0xFFFFFFFF);
*pdwRange = (DWORD)(ullTimeCode >> 32);
*pdwFrames = dwTimecode & 0x0000000F;
*pdwFrames += (( dwTimecode & 0x000000F0) >> 4 ) * 10;
*pdwSeconds = ( dwTimecode & 0x00000F00) >> 8;
*pdwSeconds += (( dwTimecode & 0x0000F000) >> 12 ) * 10;
*pdwMinutes = ( dwTimecode & 0x000F0000) >> 16;
*pdwMinutes += (( dwTimecode & 0x00F00000) >> 20 ) * 10;
*pdwHours = ( dwTimecode & 0x0F000000) >> 24;
*pdwHours += (( dwTimecode & 0xF0000000) >> 28 ) * 10;
return S_OK;
}
Spécifications
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 |