속도 변경 속성 집합
[이 페이지와 연결된 기능인 DirectShow는 레거시 기능입니다. MediaPlayer, IMFMediaEngine 및 Media Foundation의 오디오/비디오 캡처로 대체되었습니다. 이러한 기능은 Windows 10 및 Windows 11 최적화되었습니다. 가능한 경우 새 코드에서 DirectShow 대신 MediaPlayer, IMFMediaEngine 및 오디오/비디오 캡처를 사용하는 것이 좋습니다. 가능한 경우 레거시 API를 사용하는 기존 코드를 다시 작성하여 새 API를 사용하도록 제안합니다.]
속도 변경 속성 집합을 사용하면 MPEG-2 원본/파서 필터가 재생 속도를 변경할 수 있습니다. MPEG-2 디코더는 이 속성 집합을 지원해야 합니다. DVD 탐색기와 스트림 버퍼 엔진은 모두 이 속성 집합을 사용하여 재생 속도를 제어합니다.
레이블 | 값 |
---|---|
속성 집합 GUID | AM_KSPROPSETID_TSRateChange |
속성 ID | Description |
---|---|
AM_RATE_CorrectTS | 탐색기가 올바른 타임스탬프를 설정하고 있음을 디코더에 알릴 수 있습니다. |
AM_RATE_ExactRateChange | 사용되지 않습니다. |
AM_RATE_MaxFullDataRate | 디코더의 최대 데이터 속도에 대해 디코더를 쿼리합니다. |
AM_RATE_QueryFullFrameRate | 디코더의 최대 전체 프레임 속도에 대해 디코더를 쿼리합니다. |
AM_RATE_QueryLastRateSegPTS | 가장 최근에 설정된 속도 세그먼트의 시작 시간에 대한 디코더를 쿼리합니다. |
AM_RATE_SimpleRateChange | 디코더에 속도 변경을 보냅니다. |
AM_RATE_Step | 사용되지 않습니다. 프레임 단계별 속성 집합을 참조하세요. |
AM_RATE_UseRateVersion | 사용할 속도 변경 메커니즘의 버전을 지정합니다. |
설명
이 속성 집합의 컨텍스트에서 속도는 참조 클록을 기준으로 타임스탬프를 진행하는 속도를 측정합니다. 역 재생 속도를 평가합니다. 예를 들어 재생 속도가 2배이면 타임스탬프는 정상 속도인 1/2로 증가해야 합니다. 이는 샘플이 평소보다 일찍 렌더링되기 때문에 더 빠른 재생 속도로 변환됩니다.
샘플은 1배 속도로 프레젠테이션 시간과 동일한 타임스탬프를 사용하여 디코더로 전송됩니다. 디코더는 출력 샘플의 타임스탬프를 현재 속도에 대한 올바른 프레젠테이션 시간으로 조정해야 합니다. 예를 들어 속도가 1/2(재생 속도가 2배임)인 경우 디코더는 타임스탬프를 1/2로 조정해야 합니다. 일반적으로 나 프레임에는 타임스탬프를 가지고 있습니다. 디코더는 B 및 P 프레임에 대한 타임스탬프를 보간해야 합니다. 역방향 재생 중에 타임스탬프는 계속 증가합니다. 타임스탬프는 뒤로 이동하지 않습니다.
Rate Change 속성 집합의 두 가지 버전인 버전 1.0 및 버전 1.1이 정의되어 있습니다. 기본 동작은 버전 1.0에서 지정됩니다. 디코더 공급업체는 더 원활한 재생 환경을 제공하기 때문에 버전 1.1을 지원하는 것이 좋습니다. DVD 탐색기는 현재 버전 1.0을 사용합니다. 스트림 버퍼 엔진은 버전 1.1을 사용합니다.
속도 변경 버전 1.0
속도 변경 속성 집합의 버전 1.0은 MPEG-2 디코더에 대한 기본 동작을 정의합니다.
소스 필터는 AM_RATE_SimpleRateChange 속성을 설정하여 속도 변경 신호를 보냅니다. 이 속성에 대한 데이터는 새 속도와 속도가 적용되는 입력 샘플의 시작 시간입니다. 디코더는 시작 시간별로 정렬된 보류 중인 속도 변경의 큐를 유지 관리합니다.
DVD 탐색기가 1배가 아닌 속도로 변경되기 전에 보류 중인 모든 샘플을 제공하고, 일시적으로 속도를 1.0으로 설정하고, 그래프를 플러시합니다. 그런 다음 새 속도를 설정합니다. 모든 속도 변경은 현재 VOBU(비디오 개체 단위)의 끝에 대해 예약됩니다. 그래프를 플러시하면 프레젠테이션 시간이 0으로 다시 설정됩니다.
DVD 탐색기는 부드러운 모드 또는 스캔 모드에서 작동합니다. 부드러운 모드에서는 B 프레임 및 P 프레임을 포함하여 모든 프레임을 디코더로 보냅니다. DVD 탐색기는 재생 속도가 0보다 크지만 디코더의 maxmimum 데이터 속도보다 작을 때마다 부드러운 모드를 사용합니다. 재생 속도가 0보다 작거나(역방향 재생) 디코더의 최대 데이터 속도를 초과하는 경우 DVD 탐색기는 스캔 모드를 사용하여 I 프레임만 디코더로 보냅니다. 매우 빠른 속도로 일부 I 프레임을 건너뛸 수 있습니다. 예를 들어 다른 모든 I 프레임을 보낼 수 있습니다.
기본적으로 DVD 탐색기는 1.0 이외의 속도로 오디오 스트림을 음소거합니다. DVD_AudioDuringFFwdRew 플래그를 사용하여 IDvdControl2::SetOption 을 호출하여 이를 변경할 수 있습니다.
속도 변경 버전 1.1
속도 변경 속성 집합의 버전 1.1은 버전 1.0과 동일한 기본 원칙을 따르며 다음과 같은 차이점이 있습니다.
- 소스 필터는 AM_RATE_UseRateVersion 속성을 설정하여 버전 1.1을 사용하도록 디코더에 신호를 보냅니다. 그렇지 않으면 디코더가 버전 1.0 동작을 사용해야 합니다.
- 원본 필터는 속도 변경 간에 그래프를 플러시하지 않습니다. 따라서 타임스탬프는 0으로 다시 설정하지 않고 속도 변경 경계를 넘어 단조롭게 증가합니다.
- 원본 필터는 특정 참조 시간에 대한 속도 변경을 큐에 대기하는 대신 디코더의 나가는 큐의 머리에서 샘플로 정의된 디코더의 가장 앞으로 샘플에 속도 변경이 적용되도록 지정할 수 있습니다. 이렇게 하려면 원본 필터는 AM_RATE_SimpleRateChange 속성을 사용하지만 시작 시간을 -1로 설정합니다.
- 원본 필터는 가장 최근에 큐에 대기된 속도 변경의 시작 시간에 대한 디코더를 쿼리할 수 있습니다. 이 용도로 AM_RATE_QueryLastRateSegPTS 속성을 사용합니다.
- 원본 필터는 샘플을 삭제하지 않습니다. 속도가 디코더의 최대 데이터 속도를 초과하는 경우 디코더는 필요에 따라 프레임을 삭제해야 합니다.
- 소스 필터는 오디오 디코더의 최대 데이터 속도에 관계없이 오디오 스트림을 음소거하지 않습니다. 재생 속도가 디코더의 최대 속도를 초과하는 경우 오디오 디코더는 샘플을 삭제할 수 있습니다. 그러나 예약된 속도 변경의 큐는 계속 유지되어야 합니다.
요구 사항
요구 사항 | 값 |
---|---|
헤더 |
|
추가 정보