CRefTime 클래스

[이 페이지와 연결된 기능인 DirectShow는 레거시 기능입니다. MediaPlayer, IMFMediaEngine 및 Media Foundation의 오디오/비디오 캡처로 대체되었습니다. 이러한 기능은 Windows 10 및 Windows 11 최적화되었습니다. 가능한 경우 새 코드가 DirectShow 대신 Media Foundation에서 MediaPlayer, IMFMediaEngine오디오/비디오 캡처를 사용하는 것이 좋습니다. 가능한 경우 레거시 API를 사용하는 기존 코드를 다시 작성하여 새 API를 사용하도록 제안합니다.]

creftime 클래스 계층 구조

클래스는 CRefTime 참조 시간을 관리하기 위한 도우미 클래스입니다.

참조 시간은 100나노초 단위로 표시되는 시간 단위입니다. 이 클래스는 REFERENCE_TIME 데이터 형식과 동일한 데이터 레이아웃을 공유하지만 비교, 변환 및 산술 함수를 제공하는 일부 메서드와 연산자를 추가합니다. 참조 시간에 대한 자세한 내용은 DirectShow의 시간 및 시계를 참조하세요.

공용 멤버 변수 Description
m_time REFERENCE_TIME 값을 지정합니다.
Public 메서드 Description
CRefTime 생성자 메서드입니다.
GetUnits 참조 시간을 100나노초 단위로 검색합니다.
밀리초(밀리초) 참조 시간을 밀리초로 변환합니다.
연산자 설명
operator REFERENCE_TIME() 개체를 REFERENCE_TIME 데이터 형식으로 캐스팅합니다.
operator= 새 참조 시간을 할당합니다.
operator+= 두 개의 참조 시간을 추가합니다.
연산자 = 한 참조 시간을 다른 참조 시간에서 뺍니다.

설명

이 클래스를 사용할 때 발생할 수 있는 문제가 있습니다. CRefTime 개체를 왼쪽 피연산자로 적용하고 LONG 형식의 변수를 오른쪽 피연산자로 적용하면 컴파일러는 오른쪽 피연산자를 CRefTime 개체로 암시적으로 강제 변환합니다. 이 강제 변환은 밀리초를 REFERENCE_TIME 단위로 변환하는 CRefTime 생성자를 사용합니다. 결과적으로 오른쪽 피연산자는 10,000을 곱합니다.

CRefTime rt;   // rt.m_time is 0.
LONG val = 20;
rt += val;    // Coerce val to CRefTime, rt.m_time is now 200,000.

그러나 + 연산자를 사용하여 동일한 작업을 수행하지 않습니다.

CRefTime rt;   // rt.m_time is 0.
LONG val = 20;
rt = rt + val; // CRefTime, rt.m_time is 20.

요구 사항

요구 사항
헤더
Reftime.h(Streams.h 포함)
라이브러리
Strmbase.lib(소매 빌드);
Strmbasd.lib(디버그 빌드)