IMFTimecodeTranslate::EndConvertHNSToTimecode 메서드(mfidl.h)
100나노초 단위의 시간을 SMPTE(영화 및 텔레비전 엔지니어 협회) 시간 코드로 변환하는 비동기 요청을 완료합니다.
구문
HRESULT EndConvertHNSToTimecode(
[in] IMFAsyncResult *pResult,
[out] PROPVARIANT *pPropVarTimecode
);
매개 변수
[in] pResult
IMFAsyncResult 인터페이스에 대한 포인터입니다. IMFAsyncCallback::Invoke 메서드에서 콜백 개체가 받은 것과 동일한 포인터를 전달합니다.
[out] pPropVarTimecode
변환된 시간을 수신하는 PROPVARIANT 에 대한 포인터입니다. PROPVARIANT 구조체의 vt 멤버는 VT_I8. hVal.QuadPart 멤버는 변환된 시간을 BCD(이진 코딩된 10진수) 형식으로 포함합니다. 설명 부분을 참조하세요.
반환 값
메서드가 성공하면 S_OK를 반환하고, 그러지 않으면 HRESULT 오류 코드를 반환합니다.
설명
IMFTimecodeTranslate::BeginConvertHNSToTimecode 메서드가 비동기적으로 완료된 후 이 메서드를 호출합니다.
pPropVarTimecode 값은 LONGLONG으로 입력된 64비트 부호 없는 값입니다. 위쪽 DWORD 에는 범위가 포함됩니다. (범위는 연속적인 일련의 시간 코드입니다.) 아래쪽 DWORD에는 각 2바이트 시퀀스가 10진수 값으로 읽혀지는 16진수 0xhhmmssff 형식의 시간 코드가 포함되어 있습니다.
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;
}
요구 사항
지원되는 최소 클라이언트 | Windows 7 [데스크톱 앱만 해당] |
지원되는 최소 서버 | Windows Server 2008 R2 [데스크톱 앱만 해당] |
대상 플랫폼 | Windows |
헤더 | mfidl.h |