KR20130105892A - 코딩된 비디오 프레임들의 시퀀스를 처리하는 방법 - Google Patents

코딩된 비디오 프레임들의 시퀀스를 처리하는 방법 Download PDF

Info

Publication number
KR20130105892A
KR20130105892A KR1020137019165A KR20137019165A KR20130105892A KR 20130105892 A KR20130105892 A KR 20130105892A KR 1020137019165 A KR1020137019165 A KR 1020137019165A KR 20137019165 A KR20137019165 A KR 20137019165A KR 20130105892 A KR20130105892 A KR 20130105892A
Authority
KR
South Korea
Prior art keywords
frame
time stamp
value
stream
sequence
Prior art date
Application number
KR1020137019165A
Other languages
English (en)
Other versions
KR101533174B1 (ko
Inventor
무랄리드하란 나라야난
크리스토퍼 에스. 델 소도
서야 피. 마헤스봐람
크리쉬나 프라사드 판제
어니스트 지. 슈미트
야시 장
Original Assignee
제너럴 인스트루먼트 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 제너럴 인스트루먼트 코포레이션 filed Critical 제너럴 인스트루먼트 코포레이션
Publication of KR20130105892A publication Critical patent/KR20130105892A/ko
Application granted granted Critical
Publication of KR101533174B1 publication Critical patent/KR101533174B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/76Television signal recording
    • H04N5/91Television signal processing therefor
    • H04N5/93Regeneration of the television signal or of selected parts thereof
    • H04N5/95Time-base error compensation
    • H04N5/956Time-base error compensation by using a digital memory with independent write-in and read-out clock generators
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • H04N19/196Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding being specially adapted for the computation of encoding parameters, e.g. by averaging previously computed encoding parameters
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/41Structure of client; Structure of client peripherals
    • H04N21/414Specialised client platforms, e.g. receiver in car or embedded in a mobile appliance
    • H04N21/4147PVR [Personal Video Recorder]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/4302Content synchronisation processes, e.g. decoder synchronisation
    • H04N21/4307Synchronising the rendering of multiple content streams or additional data on devices, e.g. synchronisation of audio on a mobile phone with the video output on the TV screen
    • H04N21/43072Synchronising the rendering of multiple content streams or additional data on devices, e.g. synchronisation of audio on a mobile phone with the video output on the TV screen of multiple content streams on the same device

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Television Signal Processing For Recording (AREA)

Abstract

디지털 데이터 스트림에 의해 운반되는 코딩된 비디오 프레임들의 시퀀스 - 각 프레임은 이미지를 나타냄 - 를 처리하는 방법은 기록 장치에서 코딩된 비디오 프레임들의 시퀀스를 수신하는 단계, 시퀀스의 i번째 코딩된 프레임과 시퀀스의 (i+1)번째 코딩된 프레임의 프리젠테이션 간의 프레임 인터벌을 판정하는 단계, i번째 코딩된 프레임에 대한 스트림 타임 스탬프를 계산하는 단계, 및 i번째 코딩된 비디오 프레임에 대한 스트림 타임 스탬프와 이전에 판정된 프레임 인터벌을 기반으로 (i+1)번째 코딩된 비디오 프레임에 대한 스트림 타임 스탬프를 계산하는 단계를 포함한다.

Description

코딩된 비디오 프레임들의 시퀀스를 처리하는 방법{METHOD OF PROCESSING A SEQUENCE OF CODED VIDEO FRAMES}
이 특허 출원의 주제는 코딩된 비디오 프레임들의 시퀀스를 처리하는 방법에 관한 것이다. 이 처리 방법은 코딩된 프레임들이 재생 동안 명료한 방식으로 검색될 수 있게 해준다.
텔레비전 프로그래밍 제공자는 통상 서비스 제공자(예로, 케이블 시스템 오퍼레이터)가 비디오 전송망을 통해서 광범위한 시청자들에게 배포하기 위한 프로그래밍 신호를 생성한다. 전통적으로, 프로그래밍 신호는 비압축 비디오 시퀀스와 적어도 하나의 대응하는 비압축 오디오 시퀀스로 시작한다. 이 출원의 주제는 비디오 시퀀스의 처리에 관한 것이므로, 우리는 오디오 시퀀스를 더 이상 논의하지 않는다.
비압축 비디오 시퀀스는 각 이미지를 표현하는 일련의 순차적인 프레임들로 구성되며 생산 시설에서 어셈블(assemble)된다. 어셈블 후에, 비압축 비디오 시퀀스는 비디오 인코더에 의해서 압축되고, 이 비디오 인코더는 일반적으로 MPEG-2로 알려져 있는 것과 같은 비디오 압축 알고리즘을 이용하여 각 프레임을 인코딩하여, 대응하는 압축된 비디오 프레임들을 생성한다. 코딩된 비디오 시퀀스는 전송망을 통해서 고객의 구내에 전송되고, 고객의 구내(customer premises)에서는 수신 단말기에 포함되어 있는 비디오 디코더가 선택된 프로그램에 대한 비디오 시퀀스를 디코딩하고 디코딩된 프레임들을 텔레비전 세트에 제공하여 대응하는 이미지들의 시퀀스를 시청자에게 제공한다.
MPEG-2 비디오 압축 알고리즘은 비압축 비디오 프레임을 인트라-코딩된 프레임(I 프레임)으로, 또는 예측-코딩된 프레임(P-프레임)으로, 또는 양방향 예측-코딩된 프레임(B-프레임)으로 인코딩한다. I 프레임들과 P 프레임들은 레퍼런스 프레임 또는 앵커 프레임(anchor frames)으로 알려져 있는 한편, B 프레임들은 종속 프레임(dependent frames)이라 칭해진다. I 프레임은 원본 영상(picture)의 완전한 설명(description)을 포함한다. P 프레임은 시간상 앞선 I 프레임에 비교되는 영상의 설명을 포함한다. 이는 인코더가 P 프레임을 설명하는데 있어서 동등한 I 프레임에 요구되는 것보다 상당히 적은 비트를 이용할 수 있게 해준다. B 프레임은 시간상 앞선 레퍼런스 프레임과 시간상 늦은 레퍼런스 프레임에 비교되는 영상의 설명을 포함한다. 이는 인코더가 B 프레임을 기술하는데 있어서 대략 동등한 I 프레임보다 적은 자릿수의 비트(an order of magnitude fewer bits)를 이용할 수 있게 해준다. 그러므로, P 프레임은 종속 프레임(I 프레임에 관해서) 및 레퍼런스 프레임(B 프레임에 관해서)인 것으로 이해할 수 있다.
각각의 코딩된 프레임은 캡처된 이미지를 표현하는 데이터 이외에도 프리젠테이션 타임 스탬프를 포함한다. 프리젠테이션 타임 스탬프(PTS)는 90 kHz 시스템 클럭 신호의 사이클을 카운트하는 카운터에 의해 얻어진 카운트의 33 비트 값이다. PTS 값은 시스템 클럭에 대한 프레임의 원하는 플레이아웃-타임(playout-time)을 반영한다.
코딩된 프레임들의 시퀀스는 시스템 인코더에 입력되고, 시스템 인코더는 코딩된 프레임들을 패킷들(예를 들어, 패킷화된 엘리멘터리 스트림 패킷들, 이는 이 기술 분야에 숙련된 자들에게 잘 알려져 있다)로 캡슐화(encapsulate)하고, 이들 패킷은 적절한 통신 기반구조를 통해서 비디오 디코더를 포함하고 있는 수신 단말기에 효율적으로 전송될 수 있다.
일반적으로, 프레임들은 대응하는 이미지들이, 예를 들어, 카메라에 의해 획득된 순서와 같은 순서로 표시를 위해 제공하도록 되어 있다. 각각의 비압축 비디오 프레임에 대해서, 비디오 인코더는 대응하는 코딩된 비디오 프레임의 적절한 유형과 인코딩 순서에 있어서의 코딩된 프레임의 위치(place)를 판정한다. 이 인코더는 첫 번째 프레임(F1)이 레퍼런스 프레임(I 또는 P)으로서 코딩되어야 하는 것으로 판정할 수 있다. 이 경우에, 다음 두 개의 프레임들(F2, F3)은 보통은 B 프레임으로서 인코딩되며, 네 번째 프레임(F4)은 P 프레임으로서 인코딩된다. 이 인코더는 먼저 프레임 F1 및 F4를 인코딩하고 나서, 인코딩된 프레임 F1 및 F4를 레퍼런스 프레임으로 이용하여 프레임 F2 및 F3를 인코딩한다. 이 인코더는 이들 프레임을 시퀀스 F1, F4, F2, F3로 전송한다.
프레임 F1이 I 프레임으로 인코딩된다고 가정하기로 한다. 종속 코딩된 프레임은 적어도 하나의 레퍼런스 프레임에 의존하기 때문에, 디코더는 종속 프레임이 디코딩될 수 있기 전에 레퍼런스 프레임(들)을 디코딩하여야만 한다. 그러므로, 코딩된 프레임들이 전송되고 후속하여 인코딩 순서 F1, F4, F2, F3로 디코딩되더라도, 다운스트림 수신 단말기는 디코딩된 프레임들을 단순하게 이들이 수신된 순서로 출력하지 않을 수 있다. 시퀀스에 있어서 코딩된 프레임들이 표시되는 것보다 일찍 전송된 코딩된 프레임들의 경우, 시스템 인코더는 PTS 이외에도 시스템 타임 클럭에 대한 디코드 타임 스탬프(DTS)를 코딩된 프레임의 패킷에 삽입한다. 재정렬(reordering)이 필요없는 프레임들의 경우, DTS와 PTS는 동일할 것이므로, 단지 PTS만 전송되고 PTS가 디코드 타임을 판정하는데 이용된다.
수신 단말기는 공지된 방식으로 인코더의 시스템 클럭 신호에 동기화되는 시스템 클럭 신호를 생성하는 동작을 한다. 기록 기능이 없는 단순한 셋톱 박스(STB)와 같은, 최소한의 기능을 갖춘 수신 단말기는 패킷화된 엘리멘터리 스트림으로부터 코딩된 비디오 프레임들의 시퀀스를 복원(recover)하는 수신기와, 코딩된 비디오 프레임들을 수신하고 이들 프레임을 DTS를 기반으로 버퍼 및 디코딩하고, 이들 프레임들을 PTS를 기반으로 버퍼 및 제공하는 비디오 디코더를 포함한다.
케이블 및 위성 텔레비전 배포 서비스에 가입한 가입자들 대부분은 나중의 재생 및 시청을 위해 텔레비전 프로그램 머터리얼(material)을 기록할 수 있는 PVR(개인 비디오 레코더)이 통합되어 있는 좀 더 복잡한 수신 단말기를 이용한다. 이 경우에, 비디오 프레임들은 코딩된 형태로 저장되고, 위에서 설명한 단순한 STB에 의해 이용되는 것과 유사한 방식으로 원할 때 디코딩되어 재생된다.
전형적인 PVR은 시청자가 관심이 적은 머터리얼을 고속으로 스캔할 수 있게 해주는 고속 포워드(FF) 및 고속 리버스(RR)를 포함해서 다양한 트릭 재생 모드를 지원한다. PVR은 수신된 시퀀스의 프레임들을 버림으로써, 즉 디코딩되어 비디오 표시 버퍼에 제공된 시퀀스로부터 수신된 시퀀스의 프레임들을 빼버림으로써 FF 및 RR 재생을 수행한다. PVR은 정상적인 일정한 속도(즉, 미국에서는 초당 약 30프레임)로 프레임들을 표시하지만, 수신된 시퀀스의 프레임들이 버려지기 때문에, 표시되는 이미지는 정상적인 재생보다 높은 속도로 전개된다.
비디오 인코더에 의해 압축되는 비압축 비디오 시퀀스는 보충 콘텐츠 블록들(예를 들어, 1 이상의 상업 광고, 공공 서비스 알림, 지국 식별 메시지 등)이 들어가 있는 순환 텔레비전 프로그램의 에피소드와 같은, 특징 콘텐츠(feature content)를 포함할 수 있다. 프로덕션 시설에서는, 프로그래밍 제공자는 보충 콘텐츠 블록을 미리 정해진 간격으로 특징 콘텐츠에 삽입하는데 전통적인 비디오 편집 기술을 이용한다.
프로덕션 시설에서 비압축 비디오 시퀀스에 삽입되는 보충 콘텐츠 블록들은 통상 비교적 짧은 지속기간을 갖는 일련의 비디오 시퀀스(예를 들어, 각각이 30초 또는 1분의 지속기간을 갖는 8개의 개별 비디오 시퀀스)의 형태를 취한다. 프로그래밍 제공자와 서비스 제공자들 간의 상업적 합의의 일환으로, 어떤 광고 콘텐츠 블록들은 국영 텔레비전 망 그 자체가 제공하는 광고와 같은, 어떤 낮은 우선순위의 광고 콘텐츠를 포함할 수 있다. 이는 지방 또는 지역 서비스 제공자들이 낮은 우선순위의 광고 콘텐츠를 코딩된 비디오 프레임들의 시퀀스 형태로 그들 자신의 지역적인 아니면 구체적인 목표지향의 광고 콘텐츠를 갖는 프로그래밍 신호에 겹쳐 쓸(overwrite) 수 있게 해준다. 이러한 '광고-삽입' 기능은 서비스 제공자들이 그들의 고객 중심으로 더 구체적으로 편성된 목표지향 광고 콘텐츠를 제공할 수 있기 때문에 서비스 제공자들에 유리하다.
그러나, 광고 콘텐츠 블록들을 코딩된 비디오 프레임들의 시퀀스에 삽입하면 타임 스탬프들(PTS 및 DTS)에서 불연속이 나타날 수 있다.
앞서 언급한 단순한 STB에서와 같이, 코딩된 비디오 시퀀스 콘텐츠가 수신됨에 따라 디코딩되어 제공될 때, 타임 스탬프들에서 불연속이 감추어진다. 그러나, 코딩된 비디오 시퀀스 머터리얼이 PVR에 의해서 녹화되어 나중에 재생되고 이용자가 트릭 플레이 기능을 이용하고자 할 때, 몇몇 바람직하지 않은 효과가 관측될 수 있다. 특히, 타임 스탬프들에 불연속이 있는 경우에는 PVR이 올바른 비디오 프레임들을 선택해서 이들을 디코더에 전송하기가 곤란하다. 더욱이, 프레임을 중지(pause)한 다음에 이전에 중지된 프레임을 재개하는 것이 어려워서, 불연속 타임 스탬프들이 있는 콘텐츠의 경우에는 프레임별 포워딩이 느려진다.
서비스 제공자(예로, 케이블 시스템 오퍼레이터)가 보충 콘텐츠를 재생되어 표시될 비디오 스트림에 나중에 삽입할 수 있게 저장할 수 있도록, 서비스 제공자가 좀 더 복잡한 수신 단말기(PVR 기능이 있는)에 제한 통제를 할 수 있다. 예를 들어, 서비스 오퍼레이터는 수신 단말기가 차후의 플레이를 위해 인터넷으로부터 광고 머터리얼을 입수(ingest)할 수 있게 해줄 수 있다. 대부분의 경우, 이러한 머터리얼은 비-실시간 속도로 입수된다.
PVR이 콘텐츠 파일과 인덱스 파일이 있는 관계형 데이터베이스를 이용하여 코딩된 비디오 프레임들을 대용량 저장 장치에 저장하게 하는 것이 제안되었다. 이러한 제안의 구현에 있어서, PVR은 비디오 프레임들을 수신하고 로컬 프레임 타임 스탬프(LFTS)를 각 프레임에 할당하고, 콘텐츠 파일 내의 프레임의 로케이션을 식별하기 위한 콘텐츠 오프셋 위치(offset position)(콘텐츠 파일 내의 프레임의 기록 번호)와 함께 비디오 프레임들을 콘텐츠 파일 내에 저장하고, PTS 및 이 로케이션을 식별하기 위한 오프셋 정보와 함께 LFTS를 인덱스 파일 내에 저장한다. 재생시에, DVR은 PTS를 이용하여 인덱스 파일로부터 LFTS를 검색하고 검색된 LFTS를 이용하여 콘텐츠 파일로부터 관련 비디오 프레임의 시간상 위치와 오프셋을 판정하고(수신된 바와 같이 프레임들의 시퀀스를 재현하기 위해서), DTS를 기반으로 검색된 프레임들을 버퍼 및 디코딩하고, 디코딩된 프레임들을 PTS를 기반으로 버퍼 및 제공하다.
이러한 공지된 DVR에 따른 하나의 문제점은 광고가 삽입될 때, 광고의 프레임들이 그들 자신의 PTS 값들의 시퀀스를 갖고 있어서 프로그램의 초기에 시작된 시퀀스에 인터럽트가 존재한다는 것이다. 다른 문제점은 트릭 플레이 동안 PTS 값들이 연속해서 증가하지 않는다는 것이다.
이러한 식으로 로컬 프레임 타임 스탬프를 이용하는 것은 다수의 프로그램에 의한 PTS 값들의 재이용과 상이한 비디오 스트림들의 인터리빙으로 인해 PTS 불연속이 발생하기 때문에 최적의 사용이 아니다.
더욱이, 이러한 접근 방법은 LFTS 값이 비디오 스트림의 실시간이 아닌 셋톱 박스의 오퍼레이팅 시스템 클럭 틱(clock tick)에 기반을 두고 있기 때문에, 위에서 설명한 바와 같이, 기록이 비-실시간 속도로 이루어지는 경우 도움이 되지 않는다. 따라서, LFTS 값에 기반한 시간 위치가 정확하지 않을 수 있다.
여기에 공개되는 주제의 제1 양태에 따르면, 디지털 데이터 스트림에 의해 운반되는 코딩된 비디오 프레임들의 시퀀스 - 각 프레임은 이미지를 나타냄 - 를 처리하는 방법이 제공되며, 이 방법은 a. 기록 장치에서, 코딩된 비디오 프레임들의 시퀀스를 수신하는 단계, b. 시퀀스의 i번째 코딩된 프레임과 시퀀스의 (i+1)번째 코딩된 프레임의 프리젠테이션 간의 프레임 인터벌을 판정하는 단계, c. 기록 장치에서, i번째 코딩된 프레임에 대한 스트림 타임 스탬프를 계산하는 단계, 및 d. 기록 장치에서, i번째 코딩된 비디오 프레임에 대한 스트림 타임 스탬프와 단계 b에서 판정된 프레임 인터벌을 기반으로 (i+1)번째 코딩된 비디오 프레임에 대한 스트림 타임 스탬프를 계산하는 단계를 포함한다.
여기에 공개되는 주제의 제2 양태에 따르면, 프레임들의 시퀀스 - 각각의 프레임은 이미지를 나타내며 이 프레임에 대한 프리젠테이션 타임 스탬프 값을 지정하는 데이터 필드를 포함함 - 로 구성되는 디지털 데이터 스트림을 수정하는 방법이 제공되며, 이 방법은 a. 공칭 프레임 레이트(nominal frame rate)를 기반으로 한 프레임 인터벌 값으로 변수 Int_fr을 초기화하는 단계; b. 제1 프레임을 수신하여 이 프레임의 프리젠테이션 타임 스탬프 값을 판독하고, 제1 프레임의 프리젠테이션 타임 스탬프 값을 변수 PTS에 할당하고, 변수 PTS의 값을 프리젠테이션 타임 스탬프를 기반으로 제1 프레임의 클럭 시간을 나타내기 위한 변수 Clock_start에 할당하고, 변수 PTS의 값을 프리젠테이션 타임 스탬프를 기반으로 프레임의 클럭 시간을 나타내기 위한 변수 Clock_pts에 할당하고, 값 0을 관심있는(of interest) 스트림 타임 스탬프를 나타내기 위한 변수 ST*에 할당하는 단계; c. 다음 프레임을 수신하여 상기 다음 프레임의 프리젠테이션 타임 스탬프 값을 판독하고, 상기 다음 프레임의 프리젠테이션 타임 스탬프 값을 변수 PTS에 할당하고, 값 (PTS-Clock_pts)를 변수 Diff에 할당하고, 값 PTS를 변수 Clock_pts에 할당하고, 값 (ST*+Int_fr)를 변수 ST*에 할당하는 단계; 및 d. 상기 다음 프레임과 그 이전의 프레임 간의 프리젠테이션 타임 스탬프 값에 불연속이 있는지 여부를 테스트하고, 그렇다면, 프리젠테이션 타임 스탬프에 있는 불연속의 포인트에서 관심있는 스트림 타임 스탬프의 값을 나타내기 위한 변수 ST_dis*에 값 ST*를 할당하고 값 PTS를 변수 Clock_start에 할당하고 상기 다음 프레임을 인덱스로서 ST*의 값을 이용하여 데이터베이스에 저장하는 단계를 포함한다.
여기에 공개되는 주제의 제3 양태에 따르면, 디지털 데이터 스트림에 의해 운반되는 코딩된 비디오 프레임들의 시퀀스 - 각 프레임은 이미지를 나타냄 - 를 처리하는 비디오 기록 장치가 제공되며, 이 비디오 기록 장치는 디지털 데이터 스트림을 수신하기 위한 입력 단말기를 갖추고 있으며 다음의 단계들을 실행하도록 프로그램된 컴퓨팅 머신을 포함한다: a. 시퀀스의 i번째 코딩된 프레임과 시퀀스의 (i+1)번째 코딩된 프레임의 프리젠테이션 간의 프레임 인터벌을 판정하는 단계, b. i번째 코딩된 프레임에 대한 스트림 타임 스탬프를 계산하는 단계, 및 c. i번째 코딩된 비디오 프레임에 대한 스트림 타임 스탬프와 단계 b에서 판정된 프레임 인터벌을 기반으로 (i+1)번째 코딩된 비디오 프레임에 대한 스트림 타임 스탬프를 계산하는 단계.
여기에 공개되는 주제의 제4 양태에 따르면, 디지털 데이터 스트림에 의해 운반되는 코딩된 비디오 프레임들의 시퀀스 - 각 프레임은 이미지를 나타냄 - 를 수신하는 컴퓨팅 머신에 의해 판독되어 실행될 때, 다음의 단계들을 포함하는 방법을 컴퓨팅 머신이 실행할 수 있게 하는 소프트웨어를 포함하는 비일시적 컴퓨터-판독가능 저장 매체가 제공된다: a. 시퀀스의 i번째 코딩된 프레임과 시퀀스의 (i+1)번째 코딩된 프레임의 프리젠테이션 간의 프레임 인터벌을 판정하는 단계, b. i번째 코딩된 프레임에 대한 스트림 타임 스탬프를 계산하는 단계, 및 c. i번째 코딩된 비디오 프레임에 대한 스트림 타임 스탬프와 단계 a에서 판정된 프레임 인터벌을 기반으로 (i+1)번째 코딩된 비디오 프레임에 대한 스트림 타임 스탬프를 계산하는 단계.
본 발명의 이해를 도모하고 본 발명이 어떻게 실현되는지를 보여주기 위해서 예로서 첨부 도면을 참조하기로 한다.
도 1은 수신 단말기의 개략적인 블록 도이다.
도 2는 코딩된 비디오 프레임들의 시퀀스의 기록 동안 도 1에 도시된 수신 단말기에 의해 실행되는 알고리즘의 흐름도이다.
도 3은 기록된 시퀀스의 재생 동안 도 1에 도시된 수신 단말기에 의해 실행되는 알고리즘의 흐름도이다.
도 4는 도 1에 도시된 수신 단말기를 구현하는데 이용될 수 있는 컴퓨터의 개략적인 블록 도이다.
도 1을 참조하면, PVR로서 구현된 수신 단말기는 MPEG-2 비디오 압축 알고리즘에 따라서 인코딩된 비디오 프레임들의 시퀀스를 운반하는 디지털 데이터 스트림을 수신한다. 단말기는 수신기(10), 대용량 저장 장치(20), 및 비디오 디코더(30)를 포함한다. 수신기는 서비스 제공자가 제공한 비트스트림을 수신하고 코딩된 비디오 프레임들의 시퀀스를 복원한다. 판독/기록 콘트롤러(40)는 대용량 저장 장치 섹션에 의해 구현되며 콘텐츠 테이블과 인덱스 테이블을 포함하는 관계형 데이터 베이스로서 구성되는 메모리에 비디오 프레임들을 기록한다. 판독/기록 콘트롤러는 각각의 비디오 프레임을 고유하게 식별하고 각 비디오 프레임에 대한 타임 스탬프를 수신 시퀀스에 생성하는 타임 스탬핑 알고리즘을 구현한다. 이는 비디오 프레임들이 PTS에 있어서의 불연속에 상관없이 올바른 순서로 디코딩 및 프리젠테이션을 위해 메모리로부터 판독될 수 있게 해준다.
도 2는 타임 스탬핑 알고리즘의 흐름도를 보여주고 있다. 타임 스탬핑 알고리즘은 비디오 프레임들의 프레임 인터벌을 나타내는 변수 Int_fr에 초기 값을 할당함으로써 초기화된다(단계 100). 초기 값은 프레임 레이트(rate)의 디폴트 값으로부터 계산된다. 프레임 레이트가 초당 60 프레임이라고 가정하면, Int_fr에 할당되는 초기 값은 16.6667 ms이다. Int_fr에 할당된 값은 나중에, 이하 상세히 설명되는 바와 같이, B 프레임들이 수신될 때 조정될 수 있다. 알고리즘은 15 ms 값을 변수 Int_min(프레임 인터벌의 최소 값)에 할당하고 3*Int_fr 값을 변수 TOL(tolerance)에 할당한다.
초기화 이후에, 타임 스탬핑 알고리즘은 수신기로부터 비디오 프레임들의 시퀀스의 제1 프레임의 프리젠테이션 타임 스탬프를 수신하고(단계 110), 이 값을 변수 PTS에 할당한다. 연속하는 프레임들의 시퀀스의 i번째 프레임의 프리젠테이션 타임 스탬프는 시퀀스의 시작에 있는 초기 값(이는 일반적으로 0은 아니다)으로부터 시작해서 90kHz 클럭의 틱 수를 나타내는 33 비트 수이다.
스트림 타임 스탬프는 또한 90kHz 클럭의 틱 수를 나타내는 33 비트 수로서 여겨진다. 단계 110에서, 알고리즘은 변수 ST*(관심있는 스트림 타임 스탬프)에 값 0을 할당하는데, 이는 스트림 타임 스탬프가 시퀀스의 제1 프레임에 대해서 0으로 시작한다는 것을 나타낸다. 알고리즘은 또한 변수 ST_dis*(프리젠테이션 타임 스탬프 내의 불연속의 포인트에 있는 관심있는 스트림 타임 스탬프)에 값 0을 할당한다. 알고리즘은 PTS의 클럭 값을 변수 Clock_start(프리젠테이션 타임 스탬프를 기반으로 한 제1 프레임의 클럭 시간)와 변수 Clock_pts(프리젠테이션 타임 스탬프를 기반으로 한 콘텐츠 프레임의 클럭 시간)에 할당한다. 이와 같이, Clock_start는 기록되는 시퀀스의 제1 프레임의 프리젠테이션 타임 스탬프를 나타낸다.
단계 120에서, 알고리즘은 다음 프레임을 수신하며 현재 프레임의 프리젠테이션 타임 스탬프를 변수 PTS에 할당하고 값 (PTS-Clock_pts)을 변수 Diff에 할당한다. 이와 같이, 변수 Diff는 현재 프레임의 프리젠테이션 타임 스탬프의 클럭 값과 이전 프레임의 프리젠테이션 타임 스탬프의 클럭 값 간의 차를 나타낸다. 유의해야 하는 것은 프레임 F4, F2 및 F3에 대한 Diff 값들의 시퀀스가 +3*프레임 인터벌, -2*프레임 인터벌, 및 +1*프레임 인터벌이 되는 프레임들의 프리젠테이션 타임 스탬프들에 불연속이 없다면 코딩된 프레임들은 F1(I), F4(P), F2(B), F3(B) 등의 순서로 정상적으로 전송된다는 것이다.
알고리즘은 또한 다음 프레임에 대한 Diff를 계산할 수 있도록 변수 Clock_pts의 값을 현재 프레임에 대한 값 PTS로 갱신하고, 가장 최근의 ST*를 저장하기 위해서 값 (ST*+Int_fr)을 변수 ST*로 갱신한다. 그러므로, 현재 프레임에 대한 스트림 타임 스탬프는 이전 프레임의 스트림 타임 스탬프와 프레임 인터벌의 임시 값(improvised value), Int_fr과의 합과 같다.
프리젠테이션 타임 스탬프의 랩 어라운드(wrap around)가 없다고 가정하면(이는 이하에서 논의된다), 알고리즘의 실행은 판정 블록(130)으로 가며, 이 블록에서 알고리즘은 Diff의 절대값이 TOL보다 작은지 또는 TOL과 같은지의 여부를 테스트한다. TOL이 프레임 인터벌의 3배와 같기 때문에, 테스트가 참이라고 평가하면, 우리는 프리젠테이션 타임 스탬프들에 불연속이 없다고 추정하고; 그렇지 않다면 불연속이 있다고 추정한다.
불연속이 있는 경우에, 단계 140에서 알고리즘은 변수 ST_dis*를 현재 프레임에 대한 ST*의 값으로 갱신하고, 변수 Clock_start를 현재 프레임에 대한 PTS의 값으로 갱신한다. 이러한 식으로, 변수 ST_dis*는 프리젠테이션 타임 스탬프의 불연속 이후 제1 프레임의 스트림 타임 스탬프의 값을 저장하고, 변수 Clock_start는 프리젠테이션 타임 스탬프의 불연속 이후 제1 프레임에 대한 프리젠테이션 타임 스탬프를 저장한다. 그럼으로써 나중의 계산을 위해 기록된 스트림에 불연속의 포인트가 마크된다.
단계 150에서 알고리즘은 프레임 정보(예로, 프리젠테이션 타임 스탬프, 비디오 스트림의 시작으로부터의 프레임 오프셋, 및 현재 GOP의 시작에서 I 프레임으로부터의 프레임 오프셋)와 현재 프레임의 스트림 타임 스탬프를 인덱스 파일에 저장한다. 판독/기록 콘트롤러는 현재 프레임의 실제 비디오 프레임 데이터와 콘텐츠 오프셋 값을 콘텐츠 파일에 저장한다.
프리젠테이션 타임 스탬프에 불연속이 없다면, 알고리즘의 실행은 판정 블록(160)으로 가고, 이 블록에서 현재 프레임이 레퍼런스 프레임인지 여부를 판정하기 위해 프레임 유형이 테스트된다. 현재 프레임이 레퍼런스 프레임이 아니라면, 알고리즘은 이 프레임이 B 프레임인 것으로 확인하고(블록 170), B 프레임 플래그가 참으로 설정되었는지 여부를 체크한다(블록 180).
B 프레임 플래그가 참이라면, 즉 이전 프레임이 B 프레임이었음을 나타내면, 알고리즘은 Diff가 Int_min보다 큰지 여부를 체크한다(단계 190). 앞서 언급한 바와 같이, Diff는 현재 프레임의 프리젠테이션 타임 스탬프와 이전 프레임의 프리젠테이션 타임 스탬프 간의 차와 같다. 잘 처리된 시퀀스에서, B 프레임들은 항상 질서있게 수신되고, B 프레임들인 두 개의 연속 프레임들 간의 프레임 인터벌은, 변화하는 프레임 레이트가 2:3 풀 다운(텔레비전 영화) 비디오로 발생하는 경우일지라도, 시퀀스의 현재 프레임 레이트를 직접 반영한다. 그러므로 Diff는 현재 프레임 인터벌의 신뢰할 수 있는 값이다. Diff가 Int_min보다 크다면, 알고리즘은 Int_fr을 Diff의 현재 값으로 갱신한다. 알고리즘은 또한 TOL을 Int_fr의 갱신된 값을 반영하도록 갱신한다. 이와 같이, 알고리즘은 연속해서 갱신되는(일반적으로는 4개의 프레임마다) 가장 최근의 임시 프레임 인터벌, Int_fr을 반복해서 계산함으로써 다음 프레임이 수신될 때, ST*를 갱신하는데 이용되는 Int_fr의 값이 단계 120에서 정확해진다. 알고리즘은 프레임 정보 및 연관된 ST* 값을 인덱스 파일에 기록한다(단계 150).
현재 프레임이 B 프레임이고 블록(180)에서 B 프레임 플래그가 거짓이라고 판정되면, 즉 이전 프레임이 B 프레임이 아님을 나타내면, 알고리즘은 B 프레임 플래그를 참으로 설정하고(블록 200), 프레임 정보 및 연관된 ST* 값을 인덱스 파일에 기록한다(단계 150).
블록(170)이 현재 프레임이 B 프레임이 아니라고 판정하면, 알고리즘은 B 프레임 플래그를 거짓으로 리셋하고(블록 210), 프레임 정보 및 연관된 ST* 값을 인덱스 파일에 기록한다(단계 150).
블록(160)이 프레임이 레퍼런스 프레임이라고 판정하면, 알고리즘은 Diff가 Int_min보다 큰지 여부를 체크하고(단계 220), 그렇다면, ST*를 (Clock_pts - Clock_start + ST_dis*)로 조정한다. 시퀀스에 이전 불연속이 없었다면, ST_dis*는 0이 될 것이고 Clock_start는 프리젠테이션 타임 스탬프를 기반으로 한 제1 프레임의 클럭 시간과 같게 될 것이다. 따라서, ST*는 Clock_start의 값에 의해 오프셋된 Clock_pts의 값으로 조정될 것이다. 이전의 불연속이 있었다면, ST_dis 및 Clock_start는 가장 최근의 불연속 이후 제1 프레임의 값들을 반영할 것이다. 이러한 식으로, ST*는 프리젠테이션 타임 스탬프 내의 불연속이 ST*의 값의 전개(evolution)에 영향을 주지 않도록 동적으로 조정된다. 프레임이 레퍼런스 프레임이기 때문에 알고리즘은 B 프레임 플래그를 거짓으로 리셋한다. 알고리즘은 프레임 정보 및 연관된 ST* 값을 인덱스 파일에 기록한다(단계 150).
프리젠테이션 타임 스탬프가 코딩된 비디오 프레임들의 시퀀스의 초기에 0으로 시작되었다면, 0으로 다시 랩 어라운드하는데 24 이상의 시간이 걸릴 것이다. 한 시퀀스가 이와 같이 충분히 긴 시간 동안 나타날 가능성은 매우 작다. 그러나, 프리젠테이션 타임 스탬프가 반드시 0으로 시작할 필요는 없으므로, 현재 프레임에 대한 프리젠테이션 타임 스탬프가 이전의 프레임에 대한 PTS로부터 랩 어라운드되었는지 여부를 체크할 필요가 있으며(블록 230), 그렇다면, 현재 프레임에 대한 PTS의 값과 PTS의 최대 값과의 합에서 이전 프레임에 대한 PTS의 값을 빼서 Diff의 값을 조정한다(블록 240).
스트림 타임 스탬프는, 반복이 없이 현재 프레임 인터벌을 기반으로 엄격하게 증분되는 식으로, 시퀀스가 기록됨에 따라 0으로부터 시퀀스 전체에 걸쳐서 단조(monotonically) 증가한다는 것을 이해할 수 있을 것이다. 스트림 타임 스탬프는 0에서 시작하기 때문에, 기록 동안 랩 어라운드가 발생할 가능성은 사실상 존재하지 않는다.
재생시에, 판독/기록 콘트롤러는 도 3에 도시된 알고리즘을 실행한다. 도 3에 도시된 바와 같이, 재생의 초기에서, 알고리즘은 변수 Int_fr(프레임 인터벌)을 16.6667ms에 설정하고, 변수 XS(트릭 속도)를 1에 설정하고, Int_fr을 XS*Int_fr에 설정하고, Int_min(최소 프레임 인터벌)을 XS*15ms에 설정하고, TOL(공차)를 3*Int_fr에 설정함으로써 초기화된다(단계 300). 알고리즘은 이용자 인터페이스로부터 트릭 속도의 이용자-지정 값을 수신한다(블록 310).
재생시에 먼저 디코딩되는 프레임은 미정이다(indeterminate). 디코딩될 제1 프레임을 적절히 선택하기 위해서, 알고리즘은 인덱스 파일 내의 PTS 값의 룩업을 수행하고, 스트림 타임 스탬프 값을 기반으로 기록된 프레임들의 시퀀스의 초기 세그먼트에 있는 프레임에 대한 PTS 값을 선택하며, 이를 통해서 ST*가 기록된 시퀀스의 초기에 0으로 시작한다는 것을 알 수 있다. 알고리즘은 변수 ST*를 선택된 제1 프레임의 스트림 타임 스탬프와 같게 설정하고, 변수 Clock_pts(프리젠테이션 타임 스탬프를 기반으로 한 프레임의 클럭 시간)를 PTS와 같게 설정한다.
단계 320에서, 알고리즘은 테스트를 하고, 필요하다면, XS의 값을 갱신하고 PTS를 다음 프레임의 프리젠테이션 타임 스탬프로 갱신한다. 알고리즘은 XS의 갱신된 값을 이용하여 Int_fr의 값을 갱신하고 Int_fr의 갱신된 값을 이용하여 TOL의 값을 갱신한다. 알고리즘은 값 PTS-Clock_pts를 변수 Diff에 할당하고 Clock_pts를 현재 프레임에 대한 PTS의 값으로 갱신한다.
판정 블록(330)에서, 알고리즘은 도 2에 연관해서 위에 설명한 바와 같이, PTS 값의 랩 어라운드가 있는지 여부를 체크하고, 그렇다면 도 2를 참조로 설명한 바와 같이 Diff의 값을 조정한다(단계 340). 이후 알고리즘은 PTS 값들이 연속인지 여부를 체크한다(블록 350). 이들 값이 연속이라면, 알고리즘은 ST*를 ST*+Diff와 같게 설정하고(단계 360); 이들 값이 연속이 아니라면, 알고리즘은 ST*를 ST*+Int_fr과 같게 설정한다(단계 270). 판독/기록 콘트롤러는 갱신된 ST*의 값을 인덱스 파일에 저장된 ST의 값들에 비교하고, 인덱스 파일 내의 대응 값을 식별하고(적절한 규칙을 이용하여), 이 값을 이용하여 코딩된 비디오 프레임 데이터를 콘텐츠 파일로부터 판독한다.
위에 언급한 바와 같이, 도 2를 참조로 설명한 알고리즘에 의해서 생성된 스트림 타임 스탬프의 값들은 시퀀스가 기록됨에 따라 시퀀스 동안 0으로부터 단조 증가한다. 결과적으로, 도 3을 참조하여 설명한 알고리즘을 이용하여, 재생 동안 ST의 값들을 생성하면 코딩된 비디오 프레임 데이터를 콘텐츠 파일로부터 판독하는데 이용되는 ST의 값들이 포워드 플레이 동안에 단조 증가하고 리버스 플레이 동안에는 단조 감소하며, 두 개의 연속 값들 간의 차는 항상 적어도 가장 최근의 프레임 인터벌만큼 클 것임을 보장한다.
디코더는 종래와 같이 프레임들을 DTS를 기반으로 디코딩하고 PTS를 기반으로 이들 프레임을 제공한다.
앞서 언급한 바와 같이, 프리젠테이션 타임 스탬프는 33 비트 수이다. 위에 설명한 알고리즘의 실제 구현에서는, 32 비트 수를 이용하는 것이 바람직하다. 따라서, 각 알고리즘은 프리젠테이션 타임 스탬프에서 최하위 비트(least significant bit)를 드롭(drop)하며, 이는 PTS 값을 45 kHz 클럭의 틱(tick)의 수로서 계산한 것과 같다. 인덱스 파일에 저장된 PTS 값들은 32 비트 수이다.
도 4를 참조하면, 적절한 수신 단말기는, 일반적으로 종래의 아키텍처 형태를 띤, 1 이상의 프로세서(51), 랜덤 액세스 메모리(52), 판독 전용 메모리(53), I/O 장치(54), 이용자 인터페이스(55), 및 하드 디스크 드라이브(58)를 포함하는 특정 목적의 컴퓨터(50)로 구현될 수 있다. 이 컴퓨터는 하드 디스크 드라이브(58) 또는 CD-ROM(57)과 같은 비일시적 컴퓨터 판독가능 매체에 저장되어 실행을 위해 랜덤 액세스 메모리(52)에 로딩되는 프로그램에 따라서 동작한다. 이 프로그램은 컴퓨터가 I/O 장치(54)에 포함되어 있는 적절한 인터페이스를 통해서, MPEG-2 알고리즘에 따라서 코딩된 비디오 프레임들의 시퀀스를 나타내는 비트스트림을 수신할 때, 컴퓨터가 메모리를 적절한 버퍼들에 할당하고 다른 적합한 자원과 기능을 이용하여 수신 단말기에 의해 실행되는 것으로 위에서 설명된 다양한 동작을 실행할 수 있게 해주는 명령어들(instructions)로 구성된다.
이 기술 분야에 숙련된 자들이면, 이 프로그램이 CD-ROM(57)으로부터 CD-ROM 드라이브(56)를 이용하는 랜덤 액세스 메모리로 직접 로딩될 수 없으며 일반적으로는 이 프로그램이 CD-ROM(57)으로부터 하드 디스크 드라이브(58)에 설치될 것을 요구하는 형태로 이 프로그램이 CD-ROM 또는 다른 배포 매체에 저장된다는 것을 이해할 수 있을 것이다.
여기에 청구된 주제가 앞서 설명한 특정 실시 예에 한정되지 않으며, 균등론 또는 청구항의 권리 행사 범위를 문언적인 범위를 넘어서 확대하는 임의 다른 원리를 포함해서 지배적인 법의 원리에 따라서 해석되는 것으로서 첨부된 청구항들에 정의된 주제의 범위를 벗어나지 않고 다양한 변경이 이루어질 수 있음을 이해할 수 있을 것이다. 문맥이 다른 방식으로 나타내지 않는 한, 청구항에서 한 요소에 대한 인스턴스(instance)의 수에 대한 참조는, 하나의 인스턴스 또는 2 이상의 인스턴스에 대한 참조로서, 적어도 이 요소에 대해 언급된 인스턴스의 수를 필요로 하지만, 특허청구범위에서 언급된 것보다 요소의 더 많은 인스턴스의 수를 갖는 구조 또는 방법을 배제하는 것으로 의도된 것은 아니다. 단어 "포함한다" 또는 그에 대한 파생어는, 청구항에 포함되어 있을 때, 청구된 구조 또는 방법에서 다른 요소들 또는 단계들의 존재를 배제하지 않는 것으로서 비-배타적인 의미로 이용된다.

Claims (19)

  1. 디지털 데이터 스트림에 의해 운반되는 코딩된 비디오 프레임들의 시퀀스를 처리하는 방법으로서 - 각 프레임은 이미지를 나타냄 - ,
    a. 기록 장치에서 상기 코딩된 비디오 프레임들의 시퀀스를 수신하는 단계,
    b. 상기 시퀀스의 i번째 코딩된 프레임과 상기 시퀀스의 (i+1)번째 코딩된 프레임의 프리젠테이션 간의 프레임 인터벌을 판정하는 단계,
    c. 상기 기록 장치에서, 상기 i번째 코딩된 프레임에 대한 스트림 타임 스탬프를 계산하는 단계, 및
    d. 상기 기록 장치에서, 상기 i번째 코딩된 비디오 프레임에 대한 스트림 타임 스탬프와 단계 b에서 판정된 프레임 인터벌을 기반으로 상기 (i+1)번째 코딩된 비디오 프레임에 대한 스트림 타임 스탬프를 계산하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    e. 상기 (i+1)번째 코딩된 비디오 프레임과 상기 (i+1)번째 코딩된 비디오 프레임에 대한 스트림 타임 스탬프를 관계형 데이터베이스에 저장하는 단계를 포함하는 방법.
  3. 제2항에 있어서,
    각각의 코딩된 비디오 프레임은 상기 프레임에 대한 프리젠테이션 타임 스탬프를 지정하는 데이터 필드를 포함하고, 단계 b는 상기 시퀀스의 연속 프레임들에 대한 프리젠테이션 타임 스탬프들을 기반으로 임시(improvised) 프레임 인터벌을 판정하는 단계를 포함하고, 단계 e는 상기 프리젠테이션 타임 스탬프와 상기 스트림 타임 스탬프를 인덱스 파일에 저장하고 상기 코딩된 비디오 프레임을 콘텐츠 파일에 저장하는 단계를 포함하는 방법.
  4. 제3항에 있어서,
    스트림 타임 스탬프와 프리젠테이션 타임 스탬프를 기반으로 상기 인덱스 파일로부터 스트림 오프셋 위치를 판독하고 상기 스트림 오프셋 위치를 기반으로 상기 콘텐츠 파일로부터 코딩된 비디오 프레임을 판독하는 단계를 포함하는 방법.
  5. 프레임들의 시퀀스로 구성되는 디지털 데이터 스트림을 수정하는 방법으로서 - 각각의 프레임은 이미지를 나타내며 상기 프레임에 대한 프리젠테이션 타임 스탬프 값을 지정하는 데이터 필드를 포함함 - ,
    a. 공칭 프레임 레이트(nominal frame rate)를 기반으로 한 프레임 인터벌 값으로 변수 Int_fr을 초기화하는 단계;
    b. 제1 프레임을 수신하여 상기 프레임의 프리젠테이션 타임 스탬프 값을 판독하고, 상기 제1 프레임의 상기 프리젠테이션 타임 스탬프 값을 상기 변수 PTS에 할당하고, 상기 변수 PTS의 값을 프리젠테이션 타임 스탬프를 기반으로 상기 제1 프레임의 클럭 시간을 나타내기 위한 변수 Clock_start에 할당하고, 상기 변수 PTS의 값을 프리젠테이션 타임 스탬프를 기반으로 프레임의 클럭 시간을 나타내기 위한 변수 Clock_pts에 할당하고, 값 0을 관심있는(of interest) 스트림 타임 스탬프를 나타내기 위한 변수 ST*에 할당하는 단계;
    c. 다음 프레임을 수신하여 상기 다음 프레임의 프리젠테이션 타임 스탬프 값을 판독하고, 상기 다음 프레임의 프리젠테이션 타임 스탬프 값을 상기 변수 PTS에 할당하고, 값 (PTS-Clock_pts)를 변수 Diff에 할당하고, 값 PTS를 상기 변수 Clock_pts에 할당하고, 값 (ST*+Int_fr)을 상기 변수 ST*에 할당하는 단계; 및
    d. 상기 다음 프레임과 이전의 프레임 간의 프리젠테이션 타임 스탬프 값에 불연속이 있는지 여부를 테스트하고, 그렇다면, 프리젠테이션 타임 스탬프에 있는 불연속의 포인트에서 관심있는 스트림 타임 스탬프의 값을 나타내기 위한 변수 ST_dis*에 값 ST*를 할당하고 값 PTS를 상기 변수 Clock_start에 할당하고 상기 다음 프레임을 인덱스로서 ST*의 값을 이용하여 데이터베이스에 저장하는 단계
    를 포함하는 방법.
  6. 제5항에 있어서,
    상기 프레임들의 시퀀스는 P 프레임들, I 프레임들 및 B 프레임들로 구성되며, 단계 a는 변수 Int_min을 상기 공칭 프레임 레이트를 기반으로 한 최소 프레임 인터벌 값으로 초기화하는 단계를 더 포함하고,
    상기 방법은, 상기 다음 프레임과 상기 이전 프레임 간의 프리젠테이션 타임 스탬프 값에 불연속이 없다면, 상기 다음 프레임이 P 프레임인지 또는 I 프레임인지 여부를 테스트하고, 그러한 경우, Diff의 값이 Int_min보다 크면 값 (Clock_pts-Clock_start+ST_dis*)을 상기 변수 ST*에 할당하는 단계를 더 포함하는 방법.
  7. 제5항에 있어서,
    상기 프레임들의 시퀀스는 P 프레임들, I 프레임들 및 B 프레임들로 구성되며, 상기 방법은, 상기 다음 프레임과 상기 이전 프레임 간의 프리젠테이션 타임 스탬프 값에 불연속이 없다면, 상기 다음 프레임이 B 프레임인지 여부를 테스트하는 단계를 더 포함하는 방법.
  8. 제7항에 있어서,
    상기 다음 프레임이 B 프레임이 아니라면 B 프레임 플래그를 거짓으로 리셋하는 단계를 더 포함하는 방법.
  9. 제7항에 있어서,
    상기 다음 프레임이 B 프레임이라면 B 프레임 플래그를 참으로 설정할지 여부를 테스트하는 단계를 더 포함하는 방법.
  10. 제9항에 있어서,
    상기 B 프레임 플래그가 참으로 설정되어 있지 않으면, 상기 B 프레임 플래그를 참으로 설정하는 단계를 더 포함하는 방법.
  11. 제9항에 있어서,
    단계 a는 소정의 값을 변수 TOL에 할당하는 단계를 포함하고, 단계 d는 Diff의 절대 값이 TOL의 값을 초과하는지 여부를 테스트하는 단계를 포함하고,
    상기 방법은, 상기 B 프레임 플래그가 참으로 설정되어 있다면, 값 Diff를 Int_fr에 할당하고 Diff가 Int_min보다 크면 값 3*Int_fr을 변수 TOL에 할당하는 단계를 더 포함하는 방법.
  12. 디지털 데이터 스트림에 의해 운반되는 코딩된 비디오 프레임들의 시퀀스를 처리하는 비디오 기록 장치로서 - 각 프레임은 이미지를 나타냄 - ,
    상기 비디오 기록 장치는 디지털 데이터 스트림을 수신하기 위한 입력 단말기를 가지며 컴퓨팅 머신을 포함하고,
    상기 컴퓨팅 머신은,
    a. 상기 시퀀스의 i번째 코딩된 프레임과 상기 시퀀스의 (i+1)번째 코딩된 프레임의 프리젠테이션 간의 프레임 인터벌을 판정하는 단계,
    b. 상기 i번째 코딩된 프레임에 대한 스트림 타임 스탬프를 계산하는 단계, 및
    c. 상기 i번째 코딩된 비디오 프레임에 대한 스트림 타임 스탬프와 단계 b에서 판정된 프레임 인터벌을 기반으로 상기 (i+1)번째 코딩된 비디오 프레임에 대한 스트림 타임 스탬프를 계산하는 단계
    를 수행하도록 프로그램되어 있는 비디오 기록 장치.
  13. 제12항에 있어서,
    상기 컴퓨팅 머신은 또한,
    d. 상기 (i+1)번째 코딩된 비디오 프레임과 상기 (i+1)번째 코딩된 비디오 프레임에 대한 스트림 타임 스탬프를 관계형 데이터베이스에 저장하는 단계
    를 수행하도록 프로그램되어 있는 비디오 기록 장치.
  14. 제13항에 있어서,
    각각의 코딩된 비디오 프레임은 상기 프레임에 대한 프리젠테이션 타임 스탬프를 지정하는 데이터 필드를 포함하고, 상기 컴퓨팅 머신에 의해 수행되는 단계 a는 상기 시퀀스의 연속 프레임들에 대한 프리젠테이션 타임 스탬프들을 기반으로 임시 프레임 인터벌을 판정하는 단계를 포함하고, 단계 d는 상기 프리젠테이션 타임 스탬프와 상기 스트림 타임 스탬프를 인덱스 파일에 저장하고 상기 코딩된 비디오 프레임을 콘텐츠 파일에 저장하는 단계를 포함하는 비디오 기록 장치.
  15. 제14항에 있어서,
    상기 컴퓨팅 머신은, 스트림 타임 스탬프와 프리젠테이션 타임 스탬프를 기반으로 상기 인덱스 파일로부터 스트림 오프셋 위치를 판독하고 상기 스트림 오프셋 위치를 기반으로 상기 콘텐츠 파일로부터 코딩된 비디오 프레임을 판독하도록 프로그램되어 있는 비디오 기록 장치.
  16. 소프트웨어를 포함하는 비일시적 컴퓨터 판독가능 저장 매체로서,
    디지털 데이터 스트림에 의해 운반되는 코딩된 비디오 프레임들의 시퀀스 - 각 프레임은 이미지를 나타냄 - 를 수신하는 컴퓨팅 머신에 의해 판독되어 실행될 때, 상기 컴퓨팅 머신으로 하여금,
    a. 상기 시퀀스의 i번째 코딩된 프레임과 상기 시퀀스의 (i+1)번째 코딩된 프레임의 프리젠테이션 간의 프레임 인터벌을 판정하는 단계,
    b. 상기 i번째 코딩된 프레임에 대한 스트림 타임 스탬프를 계산하는 단계, 및
    c. 상기 i번째 코딩된 비디오 프레임에 대한 스트림 타임 스탬프와 단계 a에서 판정된 프레임 인터벌을 기반으로 (i+1)번째 코딩된 비디오 프레임에 대한 스트림 타임 스탬프를 계산하는 단계
    를 포함하는 방법을 수행하게 하는 컴퓨터 판독가능 저장 매체.
  17. 제16항에 있어서,
    상기 소프트웨어는, 상기 컴퓨팅 머신으로 하여금 또한,
    d. 상기 (i+1)번째 코딩된 비디오 프레임과 상기 (i+1)번째 코딩된 비디오 프레임에 대한 스트림 타임 스탬프를 관계형 데이터베이스에 저장하는 단계
    를 수행하게 하도록 프로그램되어 있는 컴퓨터 판독가능 저장 매체.
  18. 제17항에 있어서,
    각각의 코딩된 비디오 프레임은 상기 프레임에 대한 프리젠테이션 타임 스탬프를 지정하는 데이터 필드를 포함하고,
    상기 소프트웨어는 상기 컴퓨팅 머신으로 하여금, 단계 a가 상기 시퀀스의 연속 프레임들에 대한 프리젠테이션 타임 스탬프들을 기반으로 임시 프레임 인터벌을 판정하는 단계를 포함하고, 단계 d가 상기 프리젠테이션 타임 스탬프와 상기 스트림 타임 스탬프를 인덱스 파일에 저장하고 상기 코딩된 비디오 프레임을 콘텐츠 파일에 저장하는 단계를 포함하는 방법을 수행하게 하는 컴퓨터-판독가능 저장 매체.
  19. 제18항에 있어서,
    상기 소프트웨어는 상기 컴퓨팅 머신으로 하여금, 상기 컴퓨팅 머신이 스트림 타임 스탬프와 프리젠테이션 타임 스탬프를 기반으로 상기 인덱스 파일로부터 스트림 오프셋 위치를 판독하고 상기 스트림 오프셋 위치를 기반으로 상기 콘텐츠 파일로부터 코딩된 비디오 프레임을 판독하는 방법을 수행하게 하는 컴퓨터-판독가능 저장 매체.
KR1020137019165A 2010-12-20 2011-12-15 코딩된 비디오 프레임들의 시퀀스를 처리하는 방법 KR101533174B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/973,257 US8437619B2 (en) 2010-12-20 2010-12-20 Method of processing a sequence of coded video frames
US12/973,257 2010-12-20
PCT/US2011/065008 WO2012087718A2 (en) 2010-12-20 2011-12-15 Method of processing a sequence of coded video frames

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020147033777A Division KR101777908B1 (ko) 2010-12-20 2011-12-15 코딩된 비디오 프레임들의 시퀀스를 처리하는 방법

Publications (2)

Publication Number Publication Date
KR20130105892A true KR20130105892A (ko) 2013-09-26
KR101533174B1 KR101533174B1 (ko) 2015-07-01

Family

ID=45524938

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020147033777A KR101777908B1 (ko) 2010-12-20 2011-12-15 코딩된 비디오 프레임들의 시퀀스를 처리하는 방법
KR1020137019165A KR101533174B1 (ko) 2010-12-20 2011-12-15 코딩된 비디오 프레임들의 시퀀스를 처리하는 방법

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020147033777A KR101777908B1 (ko) 2010-12-20 2011-12-15 코딩된 비디오 프레임들의 시퀀스를 처리하는 방법

Country Status (7)

Country Link
US (2) US8437619B2 (ko)
EP (1) EP2656609A2 (ko)
KR (2) KR101777908B1 (ko)
CN (1) CN103535027B (ko)
CA (1) CA2821714C (ko)
MX (1) MX2013007031A (ko)
WO (1) WO2012087718A2 (ko)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8437619B2 (en) 2010-12-20 2013-05-07 General Instrument Corporation Method of processing a sequence of coded video frames
US8819759B2 (en) 2012-06-27 2014-08-26 Google Technology Holdings LLC Determining the location of a point of interest in a media stream that includes caption data
TWI447718B (zh) * 2012-09-03 2014-08-01 Mstar Semiconductor Inc 產生略縮圖之方法與裝置
US8976842B1 (en) * 2012-11-02 2015-03-10 Comtech Ef Data Corp. PN code sync detection and carrier frequency offset estimation for the direct sequence spread spectrum receiver
CN104023192B (zh) * 2014-06-27 2016-04-13 努比亚技术有限公司 一种录制视频的方法和装置
CN104080013A (zh) * 2014-07-09 2014-10-01 三星电子(中国)研发中心 特效播放方法及装置
US10218986B2 (en) 2016-09-26 2019-02-26 Google Llc Frame accurate splicing
US11146608B2 (en) * 2017-07-20 2021-10-12 Disney Enterprises, Inc. Frame-accurate video seeking via web browsers
CN107948571B (zh) * 2017-12-27 2021-11-02 努比亚技术有限公司 视频录制的方法、装置及计算机可读存储介质
US11315606B1 (en) 2019-09-25 2022-04-26 Amazon Technologies, Inc. Timecode generation and assignment
CN111478914B (zh) * 2020-04-14 2022-08-16 广州酷狗计算机科技有限公司 时间戳处理方法、装置、终端及存储介质
CN111836071B (zh) * 2020-07-16 2021-01-05 全时云商务服务股份有限公司 一种基于云会议的多媒体处理方法、装置及存储介质
CN112153446B (zh) * 2020-09-27 2022-07-26 海信视像科技股份有限公司 一种显示设备及流媒体视频音画同步方法
CN114173207B (zh) * 2021-11-15 2024-02-23 杭州当虹科技股份有限公司 一种视频帧顺序传输的方法和系统
US11741998B1 (en) * 2022-05-02 2023-08-29 Dish Network Technologies India Private Limited Remote operation handling on PTS restart

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6138147A (en) 1995-07-14 2000-10-24 Oracle Corporation Method and apparatus for implementing seamless playback of continuous media feeds
US5703877A (en) * 1995-11-22 1997-12-30 General Instrument Corporation Of Delaware Acquisition and error recovery of audio data carried in a packetized data stream
US5765164A (en) 1995-12-21 1998-06-09 Intel Corporation Apparatus and method for management of discontinuous segments of multiple audio, video, and data streams
US6081299A (en) 1998-02-20 2000-06-27 International Business Machines Corporation Methods and systems for encoding real time multimedia data
DE69943190D1 (de) 1998-03-02 2011-03-31 Panasonic Corp Verfahren und Vorrichtung zur Fernladung eines gewünschten Teils eines kontinuierlichen Mediums mit erhöhter Genauigkeit
US8380041B2 (en) * 1998-07-30 2013-02-19 Tivo Inc. Transportable digital video recorder system
US8577205B2 (en) * 1998-07-30 2013-11-05 Tivo Inc. Digital video recording system
CN1193607C (zh) * 2000-04-21 2005-03-16 索尼公司 信息处理设备和方法
US20070230921A1 (en) * 2001-04-05 2007-10-04 Barton James M Multimedia time warping system
DE10228103A1 (de) 2002-06-24 2004-01-15 Bayer Cropscience Ag Fungizide Wirkstoffkombinationen
AU2003286336A1 (en) * 2002-12-16 2004-07-09 Koninklijke Philips Electronics N.V. System for modifying the time-base of a video signal
EP1447986A1 (en) 2003-01-16 2004-08-18 Thomson Licensing S.A. Method of assigning an absolute time value to an entry point of a data stream sequence
EP1439700A1 (en) 2003-01-16 2004-07-21 Deutsche Thomson-Brandt Gmbh Method of assigning an absolute time value to an entry point of a data stream sequence
US7636733B1 (en) * 2003-10-03 2009-12-22 Adobe Systems Incorporated Time-based image management
WO2006112429A1 (ja) * 2005-04-18 2006-10-26 Matsushita Electric Industrial Co., Ltd. 録画装置
WO2006112508A1 (ja) * 2005-04-20 2006-10-26 Matsushita Electric Industrial Co., Ltd. ストリームデータ記録装置、ストリームデータ編集装置、ストリームデータ再生装置、ストリームデータ記録方法、及びストリームデータ再生方法
JP4762052B2 (ja) * 2006-05-31 2011-08-31 パナソニック株式会社 ストリームデータ処理装置及びストリームデータ処理方法
JP2008017351A (ja) * 2006-07-07 2008-01-24 Toshiba Corp パケットストリーム受信装置
US20090031390A1 (en) * 2007-07-26 2009-01-29 Broadcom Corporation Method and apparatus for synchronized transmission and reception of audiovisual data and index data in internet protocol television applications for implementing remote network record with instant personal video recorder support
US8479229B2 (en) * 2008-02-29 2013-07-02 At&T Intellectual Property I, L.P. System and method for presenting advertising data during trick play command execution
US20110075994A1 (en) * 2009-09-28 2011-03-31 Hsiao-Shu Hsiung System and Method for Video Storage and Retrieval
US8707182B2 (en) * 2010-01-20 2014-04-22 Verizon Patent And Licensing Inc. Methods and systems for dynamically inserting an advertisement into a playback of a recorded media content instance
US8437619B2 (en) * 2010-12-20 2013-05-07 General Instrument Corporation Method of processing a sequence of coded video frames

Also Published As

Publication number Publication date
US10659721B2 (en) 2020-05-19
CA2821714C (en) 2017-05-16
KR20140143466A (ko) 2014-12-16
MX2013007031A (es) 2014-03-12
KR101533174B1 (ko) 2015-07-01
WO2012087718A3 (en) 2013-01-24
US20120155833A1 (en) 2012-06-21
KR101777908B1 (ko) 2017-09-12
CA2821714A1 (en) 2012-06-28
CN103535027A (zh) 2014-01-22
EP2656609A2 (en) 2013-10-30
US8437619B2 (en) 2013-05-07
WO2012087718A2 (en) 2012-06-28
CN103535027B (zh) 2018-04-24
US20140099079A1 (en) 2014-04-10

Similar Documents

Publication Publication Date Title
KR101533174B1 (ko) 코딩된 비디오 프레임들의 시퀀스를 처리하는 방법
EP1730957B1 (en) System for providing visible messages during pvr trick mode playback
US20170221520A1 (en) Systems and methods to play secondary media content
KR100782835B1 (ko) 캡션 정보의 출력시점 및 출력 우선순위를 조절하는 방법및 그 장치
KR102010513B1 (ko) 레코딩된 비디오를 재생하기 위한 방법 및 장치
JP2005039308A (ja) デジタル放送プログラムの記録方法,再生方法,及びデジタル放送受信機
JP4613860B2 (ja) Mpeg符号化ストリーム復号装置
KR20030026590A (ko) Pvr에서의 스트림 점프 방법
US8380038B2 (en) Broadcasting station apparatus and recording/reproducing apparatus
US8254764B2 (en) Recording apparatus, image reproducing apparatus, and special reproduction method therefor
JP2004194215A (ja) コンテンツ受信装置とコンテンツ受信方法
JP2000331421A (ja) 情報記録装置及び情報再生装置
JP4468497B2 (ja) ディジタル符号化ビデオフィルムの原データを再生する方法及び装置
CN113490047A (zh) 一种Android音视频播放方法
US20080292263A1 (en) Accessibility of Graphics During and After Trick Play
JP4763589B2 (ja) 再生装置、および、その再生方法
KR100915798B1 (ko) 개선된 압축 포맷에 의한 디지털 방송 녹화 방법
KR101087103B1 (ko) 랜덤 액세스 방법 및 장치를 포함하는 개인용 비디오 녹화기
JP5100852B2 (ja) デジタル信号記録再生装置および方法、デジタル信号再生装置および方法
JP4861221B2 (ja) 記録装置、記録方法、映像記録再生装置、および、その録画ファイル加工方法
JP2008236163A (ja) 再生装置、映像記録再生装置、その特殊再生方法
JP2010028821A (ja) デジタル信号記録装置および方法、デジタル信号再生装置および方法
JP2009111521A (ja) 映像補正装置、映像補正方法及び映像補正プログラム
JP2012222511A (ja) 動画像復号化装置及びデジタルテレビ受信装置

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
A107 Divisional application of patent
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20180614

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190613

Year of fee payment: 5