IMFTimecodeTranslate::BeginConvertTimecodeToHNS 메서드(mfidl.h)
SMPTE(영화 및 텔레비전 엔지니어 협회) 시간 코드를 100나노초 단위로 변환하기 위한 비동기 호출을 시작합니다.
구문
HRESULT BeginConvertTimecodeToHNS(
[in] const PROPVARIANT *pPropVarTimecode,
[in] IMFAsyncCallback *pCallback,
[in] IUnknown *punkState
);
매개 변수
[in] pPropVarTimecode
변환할 SMPTE 시간 코드의 시간입니다. PROPVARIANT 구조체의 vt 멤버가 VT_I8 설정됩니다. hVal.QuadPart 멤버에는 BCD(이진 코딩된 10진수) 형식의 시간이 포함됩니다. 설명 부분을 참조하세요.
[in] pCallback
콜백 개체의 IMFAsyncCallback 인터페이스에 대한 포인터입니다. 호출자는 이 인터페이스를 구현해야 합니다.
[in] punkState
호출자가 정의한 상태 개체의 IUnknown 인터페이스에 대한 PPointer입니다. 이 매개 변수는 NULL일 수 있습니다. 이 개체를 사용하여 상태 정보를 저장할 수 있습니다. 콜백이 호출될 때 개체가 호출자에게 반환됩니다.
반환 값
이 메서드는 HRESULT를 반환합니다. 가능한 값에는 다음 표에 있는 값이 포함되지만, 이에 국한되는 것은 아닙니다.
반환 코드 | 설명 |
---|---|
|
pPropVarTimecode 가 VT_I8 않습니다. |
|
개체의 Shutdown 메서드가 호출되었습니다. |
|
바이트 스트림은 검색할 수 없습니다. 바이트 스트림의 끝에서 시간 코드를 읽을 수 없습니다. |
설명
비동기 메서드가 완료되면 콜백 개체의 IMFAsyncCallback::Invoke 메서드가 호출됩니다. 이 시점에서 애플리케이션은 IMFTimecodeTranslate::EndConvertTimecodeToHNS 를 호출하여 비동기 요청을 완료해야 합니다.
pPropVarTimecode 값은 LONGLONG으로 입력된 64비트 부호 없는 값입니다. 위쪽 DWORD 에는 범위가 포함됩니다. (범위는 연속적인 일련의 시간 코드입니다.) 아래쪽 DWORD에는 각 2바이트 시퀀스가 10진수 값으로 읽혀지는 16진수 0xhhmmssff 형식의 시간 코드가 포함되어 있습니다.
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;
}
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 7 [데스크톱 앱만 해당] |
지원되는 최소 서버 | Windows Server 2008 R2 [데스크톱 앱만 해당] |
대상 플랫폼 | Windows |
헤더 | mfidl.h |