본문 바로가기
DTV

MPEG 에서의 시간표현 ...

by hyperhand 2008. 11. 27.
  • 시간의 표현범위
    • MPEG계열에서는 기본적으로 초당 90kHz의 샘플링을 갖는 클럭으로 표현하며 총 33비트로 표현합니다. 하지만 90kHz보다 좀더 세밀한 시간기준을 두기 위해서 27MHz의 샘플링을 갖는 클럭을 더불어 사용하기도 합니다.
    • ASF/WMV 계열에서는 1kHz의 샘플링을 갖는 클럭으로 표현하며 decoder의 기준시간을 별도로 제공받지 않고 PTS에서 Preroll time을 뺀 (단, 0이하일때 0으로 초기에 간주하는) 개념을 사용합니다. MS에서 어떤 미래를 위해서 그랬는지는 모르나 어떤곳은 32bit이고 어떤곳은 64bit로 예약을 해둔곳이 있습니다. 참으로 아리송한 부분입니다. 개인적인 여담이지만 preroll 시간만큼을 지연되어야 하는줄로 알고 있었으나 그것을 STC의 조작으로 가능하다는 것을 알게 되었는데 참 오묘합니다. 만들때는 명확한 논리가 머리속에 있었으나 만들어놓고 저도 이해가 안가므로 통과...
  • PCR (Program Clock Reference)
    • 하나의 채널에 대한 기준이 되는 시간을 말합니다. 보통 Transport stream 에서 사용되는 시간기준을 말합니다. Transport에 여러개의 program이 실리는 경우에 별도의 PCR을 갖을수도 있지만 보통은 하나로 유지합니다. (TS에서는 PMT에서 PCR pid를 명시하게 되며 해당 pid로부터 PCR/EPCR을 참조받을수 있습니다.)
  • SCR (System Clock Reference)
    • 시스템의 기준이 되는 시간을 말합니다. 보통 Program stream 에서 사용되는 시간기준을 말합니다. 하지만 결국 decoding할때는 PCR와 SCR은 같은 역할의 기준시간이 된다고 예기할수 있습니다. (PS에서는 Pack header에서 이를 찾을수 있습니다.)
  • DTS (Decoding Time Stamp)
    • Decoder가 Decoding을 수행하는 시점의 시간을 말합니다.
  • PTS (Presentation Time Stamp)
    • 화면에 표출되어야 하는 시간을 말합니다. Decoder에 공급할때 일정량의 버퍼상태에 놓이게 되고 Decoding시에 소모되는 시간도 있으므로 DTS와 PTS는 약간의 시간차를 갖고 있을겁니다.
  • 시간의 유추
    • 때때로 위의 시간정보를 모두 취하는것이 오히려 불필요할때가 있을겁니다. 이때는 PTS만으로 PCR/SCR/STC, DTS 를 모두 적당한 간격으로 계산하여 사용하게 됩니다. 굳이 시간의 정확도보다는 어쨌건 재생되도록 할때 취하는 방법입니다. 하지만 이것은 100% 완벽하지는 않습니다. 특히 Live stream 처럼 일정 속도로 공급되는 경우 요게 또 많이~ 오묘합니다. 음... 오묘한것 뿐이군...
  • 반응형