DirectShow 스트림 버퍼 엔진 레퍼런스 스트림 버퍼 엔진 인터페이스 IStreamBufferMediaSeeking   [목차열람] [주소복사] [슬롯비우기]
IStreamBufferMediaSeeking 인터페이스
 
Microsoft DirectX 9.0

IStreamBufferMediaSeeking 인터페이스

이 주제는 Windows XP Service Pack 1에만 적용.

IStreamBufferMediaSeeking 인터페이스는, 스트림 버퍼 소스 그래프내의 시크를 제어한다. 스트림 버퍼 소스 필터는, 이 인터페이스를 공개한다.

이 인터페이스의 메서드는,IMediaSeeking 인터페이스의 메서드와 완전하게 같은 이름과 인수를 가지고 있다. 스트림 버퍼 파일내를 시크 하려면 , 필터 그래프의 IMediaSeeking 메서드를 호출하는 대신에, 소스 필터의 이 인터페이스를 직접 사용한다.

주의

스트림 버퍼 소스는,Recording 개체 또는 RecComp 개체가 생성 한 녹화를 재생하는 경우, 파일내의 임의의 장소를 시크 할 수 있다. 스트림 버퍼 소스가 스트림 버퍼 싱크로부터의 라이브 스트림을 재생하는 경우, 싱크 필터의 버퍼내의 임의의 장소를 시크 할 수 있다. 이 안에는 녹화가 끝난 컨텐츠나 일시 배킹 파일도 포함된다. 파일간의 이동은 심리스이다.

스트림 버퍼 싱크로부터의 라이브 컨텐츠는, 새로운 컨텐츠가 녹화되면 다른 한쪽의 구석이 길어져, 낡은 배킹 파일이 삭제된다고 반대측의 구석이 짧아진다. 따라서, 이 인터페이스의 위치 정보는, 보통의 IMediaSeeking 인터페이스와는 약간 다르다. 다음의 정의가 사용된다.

설명
content start 컨텐츠를 가장 빨리 사용할 수 있는 시간. 라이브 컨텐츠의 경우, 값은 제로로부터 시작되어, 스트림 버퍼 엔진이 낡은 파일을 삭제할 때마다 증가해 간다.

예를 들어, 배킹 파일이 6 개 있어, 각 파일의 길이가 15 분과 하면, 60 분후에는 최초의 파일이 삭제되고 있으므로, content start 는 15 분에 점프 한다.

content stop 컨텐츠를 가장 늦게 사용할 수 있는 시간. 라이브 컨텐츠의 경우, 이 값은 제로로부터 시작되어, 연속해 증가해 간다.
segment stop 스트림 버퍼 소스 필터가 재생을 정지하는 시간. 이 값은 정의 무한대에 시작되지만, 애플리케이션이 임의의 시간을 설정할 수 있다.

segment stop 타임은 content stop 타임보다 늦게 설정할 수 있으므로, 이 정도치까지 시크 할 수 없는 경우가 있다. 재생이 segment stop 타임에 이르기 전에 컨텐츠의 마지막에 이르렀을 때, 그래프는 엔드 오브 스트림 (EOS) 이벤트를 송신한다.

stream position 현재의 재생 위치. content start 로부터의 상대 위치.

예를 들어, 소스 그래프가 15 초 실행해 10 초간 포즈 하면, stream position 는 소스 그래프가 다시 실행할 때까지 15 초의 위치에 있다.


위의 정의에 근거해, 다음의 IStreamBufferMediaSeeking 메서드는 특수한 동작을 한다.

이 인터페이스가 지원 하는 타임 형식은, 기준 타임뿐이다 (TIME_FORMAT_MEDIA_TIME).

레이트 변경

레이트 변경의 경우, 재생 속도는 0.1 보다 큰가 -0. 1 보다 작은 값으로 해야 한다. 부의 레이트는 역방향의 재생을 나타낸다. 캡춰 소스가 MPEG-2 소스의 경우는, 4 배속을 넘는 속도로 재생하거나 역방향으로 재생하거나 할 수 있도록(듯이) 하기 위해서 MPEG-2 비디오 analyzer 필터가 필요하다. 더 자세한 정보는, 「스트림 버퍼 그래프의 생성」을 참조할것.

IStreamBufferMediaSeeking::SetRate 메서드는, 극히 짧은 컨텐츠에 대해서 요구된 레이트가 너무 높을 때는, VFW_E_DVD_WRONG_SPEED 를 돌려주는 경우가 있다. 이 에러는, 스트림 버퍼 엔진이 요구된 레이트로, 이용할 수 있는 컨텐츠에 대해 I 프레임을 취득할 수 없는 경우에 발생한다.

SetRate 메서드는, E_NOTIMPL 를 돌려주는 일도 있다. 이 에러 코드는, 사용자의 시스템에 복수의 디코더가 등록되어 있는 경우에 일어날 가능성이 있다. 그 경우는, 소스 그래프의 표준의 IMediaSeeking::SetRate 메서드를 사용해 재생 레이트를 설정하는 것. IMediaSeeking 판의 SetRate 는 VFW_E_UNSUPPORTED_AUDIO 를 돌려주는 경우가 있지만, 이것은 오디오 디코더가 트릭 모드를 지원 하고 있지 않는 것을 나타낸다. 이 에러 코드는 무시해도 문제는 없다.

IStreamBufferMediaSeeking 판의 SetRate 도, 디코더가 1 배속 이외의 속도를 지원 하고 있지 않는 경우는, 실패하는 일이 있다.

요건

Sbe.h 를 인클루드 한다.

참조

↑TOP