Partager via


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

Voir aussi

Appel de méthodes asynchrones

IMFTimecodeTranslate