DirectShow DirectShow 레퍼런스 인터페이스 IAMTimecodeReader   [목차열람] [주소복사] [슬롯비우기]
IAMTimecodeReader 인터페이스
 
Microsoft DirectX 9.0

IAMTimecodeReader 인터페이스

IAMTimecodeReader 인터페이스는, 애플리케이션이 외부 장치로부터의 SMPTE 또는 MIDI 타임 코드를 읽어들이는 것을 가능하게 한다. MSDVMSTape 드라이버는, 외부 DV 또는 MPEG-2 캠 코다로부터 타임 코드를 읽어들이기 위한 이 인터페이스를 지원 한다.

하드웨어의 요건

하드웨어의 요건에 대해서는, 「IAMExtTransport 인터페이스」를 참조할것.

IAMTimecodeReader 인터페이스는,IUnknown 로부터 계승되는 메서드에 가세해 이하의 메서드를 공개한다.

메서드 설명
GetTCRMode 타임 코드 리더의 프로퍼티를 얻어온다.
SetTCRMode 타임 코드 리더의 프로퍼티를 설정한다.
put_VITCLine 타임 코드 리더가 타임 코드를 읽어낼 때 사용하는 VITC 라인을 지정한다.
get_VITCLine 타임 코드 리더가 타임 코드를 읽어낼 때 사용하는 VITC 라인을 얻어온다.
GetTimecode 최신의 타임 코드, 사용자 비트, 스트림내에서 유효한 플래그값을 얻어온다.

주의

Windows Driver Model (WDM)에서는, WDM 비디오 캡춰 필터 WDMVideoCaptureFilter 는, WDM 드라이버가 PROPSETIC_TIMECODE_READER 프로퍼티 세트를 지원 한다면, 이 인터페이스를 자동적으로 공개한다.

SMPTE 타임 코드는 프레임어드레싱시스템으로, 비디오 소스와 오디오 소스를 식별해, 자동 트랙 동기를 실현해, 한층 더 소스 머트리얼에 관한 부가 데이터의 컨테이너로서의 역할을 완수한다. SMPTE 타임 코드의 제일의 목적은, 비디오와 오디오용의, 머신으로 읽기 가능한 주소를 제공하는 것이다. 이것은 hh:mm:ss:ff (시간, 분, 초, 프레임) 포맷으로 표시되어 ANSI/SMPTE 12-1986 로 정의되고 있다.

보통, 애플리케이션이 타임 코드를 보존하려면 2 통과해 방법이 있다. 캡춰 파일에 대해서, 추가의 스트림으로서 기입하는 방법과 확장 AVI 파일 인덱스에 저장 되는 불연속성 테이블로서 기입하는 방법이다. 타임 코드는, 캡춰나 재생을 방아쇠 하는 경우, 또는 최종 결과에 이를 때까지의 소스 머트리얼의 편집 방법을 기술하는 EDL (Edit Decision List)를 생성 하는 경우에, 일반적으로 사용된다.

타임 코드를 캡춰 하는 경우는, 이것을, 자신의 미디어 타입을 가지는 개별의 스트림으로서 취급한다. 멀티플렉서 필터를 생성 하는 것에 의해, 적절한 파일을 이것을 사용할 수 있다. 다만, 테이프로부터 타임 코드를 읽어내는 경우는, 자주 에러가 발생한다. 이것은, 테이프의 데이터가 빠져 있거나, 테이프에 관한 그 외의 기계적인 문제가 원인이다. 이러한 경우, 타임 코드 소스 필터는 단순하게 샘플을 파기해, 다음의 유효한 샘플에 불연속성의 프로퍼티의 마크를 붙인다.

타임 코드를 사용해, 타임 코드 첨부 ("스트라이프") 비디오 테잎으로부터의 캡춰 또는 재생을 방아쇠 하는 경우는, 다음의 순서로 조작을 실시한다.

  1. 캡춰 그래프를 생성 해, 목적의 AVI 파일을 열어, 필요에 따라서 디스크 영역을 사전에 할당한다. 캡춰 하는 머트리얼을 기존의 AVI 파일에 추가하는 경우는, 기입하기 전에 파일의 종단을 시크 한다. 캡춰 그래프는 이 정도치로 포즈 한다.
  2. VCR 의 캡춰 시작점을 검색해, 타임 코드를 기록한다. 이 값은 수동으로 프로그램에 입력하는 일도, 애플리케이션이 자동적으로 읽어낼 수도 있다. 자동 읽기의 경우는, 그래프가 실행하고 있는 것이 요구된다. 그러나, 파일 멀티플렉서의 입력 핀 위에의 스트림 제어 인터페이스가, 수신 샘플을 파기하는 것에 의해 캡춰를 효율적으로 제어하고 있다.
  3. VCR 를프리롤 위치까지 머리 내 한다. 이것은 보통, 타겟점의 5 초전이다.
  4. VCR 와 그래프를 시작 한다. 방아쇠점, 또는 방아쇠점으로부터 파일 라이터의 프리롤를 당긴 시점에 이르면 스트림 제어 인터페이스는 파일 멀티플렉서를 릴리즈 해, 파일 라이터에의 미디어 샘플의 스트리밍을 시작 한다.
  5. 캡춰 처리는 수동으로 정지하는 일도, 스트림 제어 인터페이스로 시간폭의 프로퍼티를 설정하는 것에 의해 정지할 수도 있다.

프리롤시와 캡춰 처리시의 양쪽 모두에 대해, 불연속인 타임 코드를 고려할 필요가 있다. 타임 코드는 일반적으로, 프리롤와 캡춰의 시작점 이후, 연속적, 한편 단조 증가해 나가는 것이 바람직한다. 이 상태이면,IMediaSeeking::ConvertTimeFormat 메서드에 의한, 반드시 명확하지 않는 상대적인 스트림 타임을 계산하지 않아도 된다. 또, 타임 코드가, 캡춰를 방아쇠 하는 유일한 제어 신호일 필요도 없다. Intercast 나 자막 방송 데이터 (XDS)등과 같이, 수직 동기 간격에 저장 되는 타임 스탬프 첨부 데이터를 사용해, 비디오 데이터와 오디오 데이터의 디스크에의 스트리밍을 시작 할 수 있다.

필터 개발자 :  외부 장치가 SMPTE/MIDI 타임 코드 정보를 읽어내는 방법을 지정하는 경우는, 외부 장치 필터에 대해 이 인터페이스를 처리 한다.

필터상에서 IMediaSeeking 인터페이스를 공개하는 것에 의해, 애플리케이션은 그 IMediaSeeking::ConvertTimeFormat 메서드를 사용해, 타임 코드를 Microsoft® DirectShow® 기준 타임 으로 변환할 수 있다.

외부 장치는, 타임 코드를 읽기, 그 컨트롤 인터페이스를 개입시켜 이것을 컴퓨터에 송신할 수 있을 필요가 있다. 외부 장치가 이 기능을 갖추지 않은 경우는, 컴퓨터에 타임 코드 리더 카드를 장착하는지, 캡춰 된 비디오 프레임내의 VITC (Vertical Interval Timecode), 또는 오디오 신호로서 캡춰 된 LTC (Linear Timecode)를, DirectShow 타임 코드 샘플로 변환하는 소프트웨어 디코더를 생성 할 필요가 있다.

↑TOP