다음을 통해 공유


IMediaSeeking::SetRate 메서드(strmif.h)

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

메서드는 SetRate 재생 속도를 설정합니다.

구문

HRESULT SetRate(
  [in] double dRate
);

매개 변수

[in] dRate

재생 속도. 0이 아니어야 합니다.

반환 값

HRESULT 값을 반환합니다. 가능한 값은 다음과 같습니다.

반환 코드 Description
S_OK
성공.
E_INVALIDARG
지정된 속도는 0이거나 음수 값입니다. 설명 부분을 참조하세요.
E_NOTIMPL
구현되지 않았습니다.
E_POINTER
NULL 포인터 인수입니다.
VFW_E_UNSUPPORTED_AUDIO
오디오 장치 또는 필터는 이 속도를 지원하지 않습니다.

설명

재생 속도는 정상 속도의 비율로 표현됩니다. 따라서 1.0은 정상적인 재생 속도, 0.5는 절반 속도, 2.0은 두 배의 속도입니다. 오디오 스트림의 경우 속도를 변경하면 피치도 변경됩니다.

음수 값은 역방향 재생을 나타냅니다. 대부분의 필터는 음수 재생을 지원하지 않지만 dRate 매개 변수가 음수이면 오류 코드를 반환합니다.

애플리케이션이 Filter Graph Manager에서 이 메서드를 호출하면 Filter Graph Manager에서 다음을 수행합니다.

  1. IMediaSeeking::GetCurrentPosition 메서드를 호출합니다. 이 호출은 Filter Graph Manager에서 계산한 현재 위치를 반환합니다.
  2. 필터 그래프를 중지합니다(그래프가 일시 중지되거나 실행 중인 경우).
  3. 현재 위치를 시작 시간으로 사용하여 필터에서 IMediaSeeking::SetPositions 메서드를 호출합니다. 스트림 시간을 0으로 다시 설정하는 효과가 있습니다.
  4. SetRate 새 속도로 필터에서 메서드를 호출합니다.
  5. 일시 중지되었거나 실행 중인 경우 필터 그래프를 다시 시작합니다.
4단계에서 오류가 발생하면 필터 그래프 관리자가 이전 속도를 복원하려고 시도합니다.

필터는 다음과 같이 속도 변경에 응답해야 합니다.

파서 및 원본 필터: 타임스탬프를 시작하는 필터가 호출에 SetRate 응답합니다. 일반적으로 AVI 분할기 필터와 같은 파서 필터이지만 원본 필터일 수 있습니다. 검색 또는 속도 변경 후 필터는 새 설정을 사용하여 IPin::NewSegment 메서드를 호출해야 합니다. 속도 변경 후 그에 따라 타임스탬프를 조정해야 합니다. 속도 변경 앞에 검색이 있기 때문에 타임스탬프가 0에서 다시 시작되므로 필터는 단순히 속도로 나누어 새 타임스탬프를 계산할 수 있습니다.

디코더 필터: 디코더는 업스트림 전달하는 것 이외의 호출에 SetRate 대해 작동해서는 안 됩니다. 대신 업스트림 파서가 발급하는 NewSegment 호출에 응답해야 합니다. 디코더 필터가 새 세그먼트 정보를 받으면 값을 저장하고 NewSegment 호출 다운스트림을 전달해야 합니다. 일부 디코더는 입력을 보간하여 추가 타임스탬프를 생성해야 합니다. 이렇게 할 때는 속도 변경을 고려해야 합니다.

렌더러: 들어오는 프레임에 이미 올바른 타임스탬프를 가지고 있기 때문에 비디오 렌더러가 일반적으로 속도 변경을 무시할 수 있습니다. 오디오 디코더는 일반적으로 속도 변경 변환을 수행하지 않으므로 오디오 렌더러는 재생 속도를 수정해야 합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 2000 Professional[데스크톱 앱만]
지원되는 최소 서버 Windows 2000 Server[데스크톱 앱만]
대상 플랫폼 Windows
헤더 strmif.h(Dshow.h 포함)
라이브러리 Strmiids.lib

추가 정보

오류 및 성공 코드

IMediaSeeking 인터페이스