KR20100120187A - 대화형 텔레비전 환경에서의 자동 비디오 프로그램 녹화 - Google Patents

대화형 텔레비전 환경에서의 자동 비디오 프로그램 녹화 Download PDF

Info

Publication number
KR20100120187A
KR20100120187A KR1020107019479A KR20107019479A KR20100120187A KR 20100120187 A KR20100120187 A KR 20100120187A KR 1020107019479 A KR1020107019479 A KR 1020107019479A KR 20107019479 A KR20107019479 A KR 20107019479A KR 20100120187 A KR20100120187 A KR 20100120187A
Authority
KR
South Korea
Prior art keywords
video
user
content
mpeg
video program
Prior art date
Application number
KR1020107019479A
Other languages
English (en)
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 KR20100120187A publication Critical patent/KR20100120187A/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
    • H04N21/23424Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving splicing one content stream with another content stream, e.g. for inserting or substituting an advertisement
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/48Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using compressed domain processing techniques other than decoding, e.g. modification of transform coefficients, variable length coding [VLC] data or run-length data
    • 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
    • H04N21/23412Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs for generating or manipulating the scene composition of objects, e.g. MPEG-4 objects
    • 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
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • 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/236Assembling of a multiplex stream, e.g. transport stream, by combining a video stream with other content or additional data, e.g. inserting a URL [Uniform Resource Locator] into a video stream, multiplexing software data into a video stream; Remultiplexing of multiplex streams; Insertion of stuffing bits into the multiplex stream, e.g. to obtain a constant bit-rate; Assembling of a packetised elementary stream
    • H04N21/2365Multiplexing of several video streams
    • 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/431Generation of visual interfaces for content selection or interaction; Content or additional data rendering
    • H04N21/4312Generation of visual interfaces for content selection or interaction; Content or additional data rendering involving specific graphical features, e.g. screen layout, special fonts or colors, blinking icons, highlights or animations
    • H04N21/4316Generation of visual interfaces for content selection or interaction; Content or additional data rendering involving specific graphical features, e.g. screen layout, special fonts or colors, blinking icons, highlights or animations for displaying supplemental content in a region of the screen, e.g. an advertisement in a separate window
    • 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/432Content retrieval operation from a local storage medium, e.g. hard-disk
    • H04N21/4325Content retrieval operation from a local storage medium, e.g. hard-disk by playing back content from the storage medium
    • 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/433Content storage operation, e.g. storage operation in response to a pause request, caching operations
    • H04N21/4334Recording operations
    • 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/434Disassembling of a multiplex stream, e.g. demultiplexing audio and video streams, extraction of additional data from a video stream; Remultiplexing of multiplex streams; Extraction or processing of SI; Disassembling of packetised elementary stream
    • H04N21/4347Demultiplexing of several video streams
    • 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/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • H04N21/44012Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving rendering scenes according to scene graphs, e.g. MPEG-4 scene graphs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/85Assembly of content; Generation of multimedia applications
    • H04N21/854Content authoring
    • H04N21/8543Content authoring using a description language, e.g. Multimedia and Hypermedia information coding Expert Group [MHEG], eXtensible Markup Language [XML]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/85Assembly of content; Generation of multimedia applications
    • H04N21/854Content authoring
    • H04N21/8545Content authoring for generating interactive applications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/16Analogue secrecy systems; Analogue subscription systems
    • H04N7/173Analogue secrecy systems; Analogue subscription systems with two-way working, e.g. subscriber sending a programme selection signal
    • H04N7/17309Transmission or handling of upstream communications
    • H04N7/17318Direct or substantially direct transmission and handling of requests

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Business, Economics & Management (AREA)
  • Marketing (AREA)
  • Databases & Information Systems (AREA)
  • Television Signal Processing For Recording (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

방송 비디오 프로그램을 녹화하는 시스템 및 방법이 개시되어 있다. 이 시스템은 사용자의 텔레비전에 결합되어 있다. 방송 비디오 프로그램이 사용자의 텔레비전 상에 디스플레이되고, 연관된 사용자-선택가능 재료를 포함한다. 이 시스템은 방송 비디오 프로그램 및 연관된 선택가능 재료를 수신하는 입력부를 갖는다. 사용자가 선택가능 재료를 선택할 수 있게 해주는 사용자 인터페이스 장치가 이 시스템에서 동작한다. 선택가능 재료의 선택에 응답하여, 처리 모듈은 선택가능 재료에 관계된 대화형 컨텐츠를 처리 사무소에 요청한다. 선택가능 재료의 선택에 응답하여, 이 시스템은 비디오 레코더가 방송 비디오 프로그램의 녹화를 자동으로 시작하게 한다. 대화형 컨텐츠가 이어서 사용자의 텔레비전 상에 디스플레이된다. 사용자가 대화형 컨텐츠와 상호작용하는 것을 종료할 때, 녹화된 비디오 프로그램이 검색되고 선택가능 재료가 요청되었던 비디오 프로그램 내의 시점에서 사용자의 텔레비전 상에 디스플레이된다.

Description

대화형 텔레비전 환경에서의 자동 비디오 프로그램 녹화{AUTOMATIC VIDEO PROGRAM RECORDING IN AN INTERACTIVE TELEVISION ENVIRONMENT}
우선권
본 출원은 2008년 2월 1일자로 출원된, 발명의 명칭이 "대화형 텔레비전 환경에서의 자동 비디오 프로그램 녹화(Automatic Video Program Recording in an Interactive Television Environment)"인 미국 특허 출원 제12/012,491호에 기초하여 우선권을 주장한다.
본 발명은 방송 컨텐츠와 함께 대화형 컨텐츠를 원격 장치에 제공하는 시스템 및 방법에 관한 것이며, 여기서 대화형 컨텐츠가 선택되면, 방송 컨텐츠가 원격 장치와 연관된 디스플레이 장치 상에서 재생되기 위해 녹화된다.
케이블 텔레비전 시스템에서, 케이블 헤드엔드(cable head-end)는 컨텐츠를 하나 이상의 가입자들에게 전송하며, 이 때 컨텐츠는 인코딩된 형태로 전송된다. 통상적으로, 컨텐츠는 디지털 MPEG 비디오로서 인코딩되고, 각각의 가입자는 MPEG 비디오 스트림을 디코딩할 수 있는 셋톱 박스 또는 케이블 카드를 갖는다. 선형 컨텐츠(linear content)를 제공하는 것 이외에, 케이블 제공자는 이제 웹 페이지 또는 월드 가든 컨텐츠(walled-garden content) 등의 대화형 컨텐츠도 제공할 수 있다. 인터넷이 보다 동적으로 되어, 웹 페이지 상에 비디오 컨텐츠를 포함하고 비디오 컨텐츠를 디코딩하기 위한 애플리케이션 또는 스크립트를 필요로 함에 따라, 케이블 제공자는 가입자들이 이 동적 웹 페이지들을 볼 수 있게 해주기 위해 적응하였다. 요청측 가입자로 인코딩된 형태로 전송하기 위한 동적 웹 페이지를 합성하기 위해, 케이블 헤드엔드는 요청된 웹 페이지를 검색하여 그 웹 페이지를 렌더링한다. 따라서, 케이블 헤드엔드는 먼저 동적 웹 페이지 내에 나오는 임의의 인코딩된 컨텐츠를 디코딩해야만 한다. 예를 들어, 비디오가 웹 페이지 상에서 재생되어야 하는 경우, 헤드엔드는 인코딩된 비디오를 검색하고 그 비디오의 각각의 프레임을 디코딩해야만 한다. 케이블 헤드엔드는 이어서 각각의 프레임을 렌더링하여 인터넷 웹 페이지의 비트맵 이미지들의 시퀀스를 형성한다. 따라서, 웹 페이지를 형성하는 컨텐츠 모두가 처음으로 디코딩되는 경우, 웹 페이지가 함께 합성될 수 있을 뿐이다. 합성 프레임들이 완성되면, 합성된 비디오가 재인코딩되기 위해 MPEG 인코더 등의 인코더로 전송된다. 압축된 MPEG 비디오 프레임들은 이어서 MPEG 비디오 스트림으로 사용자의 셋톱 박스로 전송된다.
케이블 텔레비전 네트워크에서 이러한 인코딩된 합성 비디오 프레임들을 생성하려면 엄청난 CPU 및 메모리 처리를 필요로 하는데, 그 이유는 모든 인코딩된 컨텐츠가 먼저 디코딩되고, 이어서 합성, 렌더링 및 재인코딩되어야만 하기 때문이다. 상세하게는, 케이블 헤드엔드가 컨텐츠 전부를 실시간으로 디코딩 및 재인코딩해야만 한다. 따라서, 사용자들이 동적 웹 페이지들을 갖는 대화형 환경에서 동작할 수 있게 해주려면 요구되는 처리로 인해 케이블 TV 사업자(cable operator)에게 큰 비용을 요한다. 그에 부가하여, 이러한 시스템은 인코딩된 비디오의 재인코딩으로 인해 이미지 품질이 열화되는 부가의 단점이 있다.
본 발명의 실시예들은 디스플레이 장치 상에서 디스플레이하기 위해 적어도 하나의 인코딩된 합성 비디오 프레임(composite encoded video frame)을 인코딩하는 시스템을 개시한다. 이 시스템은 마크업 언어-기반 그래픽 레이아웃(markup language-based graphical layout)을 포함하며, 이 그래픽 레이아웃은 적어도 제1 인코딩된 소스 및 제2 인코딩된 소스에 대한 합성 프레임 내에서의 프레임 위치들을 포함한다. 그에 부가하여, 이 시스템은 그래픽 레이아웃의 프레임 위치들에 따라 제1 인코딩된 소스와 제2 인코딩된 소스를 함께 스티칭(stitching)하는 스티처 모듈(stitcher module)을 갖는다. 스티처는 적어도 제1 소스에 대한 블록-기반 변환 인코딩된 데이터(block-based transform encoded data)를 디코딩할 필요없이 인코딩된 프레임을 형성한다. 인코딩된 비디오는 MPEG 표준, AVS, VC-1 또는 다른 블록-기반 인코딩 프로토콜 중 하나를 사용하여 인코딩될 수 있다.
본 발명의 어떤 실시예들에서, 이 시스템은 사용자가 디스플레이 장치 상의 그래픽 요소들과 상호작용할 수 있게 해준다. 프로세서는 그래픽 레이아웃 내의 식별된 하나 이상의 그래픽 요소들에 관한 상태 정보를 유지한다. 그래픽 레이아웃 내의 그래픽 요소들은 인코딩된 소스들 중 하나와 연관되어 있다. 사용자는 이 시스템과 통신하는 클라이언트 장치를 통해 그래픽 요소들 중 하나의 상태를 변경하라는 요청을 전송한다. 상태를 변경하라는 요청에 의해 프로세서는 상태의 변경을 등록하고 새로운 인코딩된 소스를 획득한다. 프로세서는 스티처로 하여금 그래픽 요소를 나타내는 인코딩된 소스 대신에 새로운 인코딩된 소스를 스티칭하게 한다. 프로세서는 또한 그래픽 요소와 연관된 컴퓨터 코드를 실행하거나 해석할 수 있다.
예를 들어, 그래픽 요소는 복수의 상태, 각각의 상태에 대한 연관된 인코딩된 컨텐츠, 및 상태들 각각과 연관된 메서드들(methods)을 갖는 버튼 객체(button object)일 수 있다. 이 시스템은 또한 합성된 비디오 컨텐츠를 클라이언트 장치로 전송하는 송신기도 포함할 수 있다. 클라이언트 장치는 이어서 합성된 비디오 컨텐츠를 디코딩하여, 이 합성된 비디오 컨텐츠가 디스플레이 장치 상에 디스플레이되게 할 수 있다. 어떤 실시예들에서, 그래픽 레이아웃 내의 각각의 그래픽 요소는 하나 이상의 인코딩된 MPEG 비디오 프레임들 또는 비디오 프레임의 일부분(하나 이상의 매크로블록들 또는 슬라이스들)과 연관되어 있다. 합성기(compositor)는 MPEG 비디오 스트림 내에서 하나의 그래픽 요소를 반복하여 사용할 수 있다. 예를 들어, 버튼은 한 상태에 있는 하나의 비디오 프레임 및 다른 상태에 있는 하나의 비디오 프레임일 뿐일 수 있고, 버튼은 MPEG 인코딩된 비디오 컨텐츠와 함께 합성될 수 있으며, 이 때 버튼을 나타내는 인코딩된 매크로블록들이 각각의 프레임에서 MPEG 인코딩된 비디오 컨텐츠 내에 스티칭된다.
본 발명의 다른 실시예들은 MPEG 비디오 스트림을 형성하는 하나 이상의 합성 MPEG 비디오 프레임들을 생성하는 시스템을 개시하고 있다. MPEG 비디오 스트림이 MPEG 디코더를 포함하는 클라이언트 장치에 제공된다. 클라이언트 장치는 MPEG 비디오 스트림을 디코딩하여 비디오를 디스플레이 장치로 출력한다. 합성 MPEG 비디오 프레임들은 비디오 프레임에 대한 그래픽 레이아웃을 획득함으로써 생성된다. 그래픽 레이아웃은 적어도 제1 MPEG 소스 및 제2 MPEG 소스에 대한 합성 MPEG 비디오 프레임 내에서의 프레임 위치들을 포함한다. 그래픽 레이아웃에 기초하여, 제1 MPEG 소스 및 제2 MPEG 소스가 획득된다. 제1 MPEG 소스 및 제2 MPEG 소스가 스티처 모듈에 제공된다. 스티처 모듈은, MPEG 소스들의 매크로블록 데이터를 디코딩할 필요없이, 그래픽 레이아웃의 프레임 위치들에 따라 제1 MPEG 소스와 제2 MPEG 소스를 함께 스티칭하여 MPEG 프레임을 형성한다. 어떤 실시예들에서, MPEG 소스들은 단지 슬라이스 계층(slice layer)으로 디코딩되고, 프로세서는 제1 MPEG 소스 및 제2 MPEG 소스에 대한 프레임 내에서의 슬라이스들의 위치를 유지한다. MPEG 비디오 스트림을 형성하기 위해 이 프로세스가 MPEG 데이터의 각각의 프레임에 대해 반복된다.
어떤 실시예들에서, 이 시스템은 그루머(groomer)를 포함한다. 그루머는 MPEG 소스의 각각의 MPEG 요소가 MPEG P-프레임 포맷으로 변환되도록 MPEG 소스들을 그루밍한다. 그루머 모듈은 또한 제1 MPEG 소스의 한 섹션 내의 다른 매크로블록들을 참조하는 움직임 벡터들을 포함하는 제2 MPEG 소스 내의 임의의 매크로블록들을 식별하고 그 매크로블록들을 인트라코딩된 매크로블록(intracoded macroblock)으로서 재인코딩할 수 있다.
이 시스템은 MPEG 객체(MPEG object)를 형성하는 MPEG 소스와 그 MPEG 소스에 대한 메서드 간의 연관관계(association)를 포함할 수 있다. 이러한 시스템에서, 프로세서는 클라이언트 장치로부터 요청을 수신할 것이고, 그 요청에 응답하여, MPEG 객체의 메서드가 사용될 것이다. 이 메서드는 MPEG 객체의 상태를 변경할 수 있고 다른 MPEG 소스가 선택되게 할 수 있다. 따라서, 스티처는 제1 MPEG 소스를 제3 MPEG 소스로 대체할 수 있고, 제3 MPEG 소스 및 제2 MPEG 소스를 함께 스티칭하여 비디오 프레임을 형성할 수 있다. 비디오 프레임은 클라이언트 장치로 스트리밍되고, 클라이언트 장치는 업데이트된 MPEG 비디오 프레임을 디코딩하여 업데이트된 재료(updated material)를 클라이언트의 디스플레이 상에 디스플레이할 수 있다. 예를 들어, MPEG 버튼 객체는 "온" 상태 및 "오프" 상태를 가질 수 있고, MPEG 버튼 객체는 또한 슬라이스들을 형성하는 복수의 매크로블록들로 이루어진 2개의 MPEG 그래픽을 포함할 수 있다. 클라이언트가 버튼의 상태를 오프에서 온으로 변경하라고 요청하는 것에 응답하여, 메서드는 그 상태를 업데이트시키고 "온" 버튼을 나타내는 MPEG 인코딩된 그래픽이 스티처로 보내지게 할 것이다.
어떤 실시예들에서, 비디오 프레임은 인코딩되지 않은 그래픽(unencoded graphic) 또는 MPEG 인코딩되지 않은 그래픽 및 그루밍된 MPEG 비디오 소스로 구성될 수 있다. 인코딩되지 않은 그래픽이 먼저 렌더링될 수 있다. 예를 들어, 배경이 비트맵으로서 렌더링될 수 있다. 배경이 이어서 슬라이스들로 나누어지는 일련의 MPEG 매크로블록들로서 인코딩될 수 있다. 스티처는 이어서 배경 및 그루밍된 MPEG 비디오 컨텐츠를 함께 스티칭하여 MPEG 비디오 스트림을 형성할 수 있다. 배경은 이어서 나중에 재사용하기 위해 저장될 수 있다. 이러한 구성에서, 배경은 컷아웃(cut-out) 영역들을 가지며, 이 경우 그 영역들 내의 슬라이스들은 어떤 연관된 데이터도 갖지 않고 따라서 비디오 컨텐츠 슬라이스들이 컷아웃 내에 삽입될 수 있다. 다른 실시예들에서, MPEG 비디오 스트림을 생성하기 위해 실시간 방송들이 수신되고 그루밍될 수 있다.
어떤 실시예들에서, DVR(digital video recorder)이 클라이언트 장치와 연관되어 있거나 클라이언트 장치의 일부이다. 이러한 실시예들에서, 시스템의 사용자가 방송 비디오 프로그램을 시청하면서 선택가능 재료를 선택할 때 자동 녹화가 행해질 수 있다. 선택가능 재료는 비디오 프로그램 프레임의 일부일 수 있거나 비디오 프로그램의 프레임들 사이에 삽입된 별도의 프레임(들)일 수 있다. 예를 들어, 텔레비전 화면은 비디오 프로그램 및 광고 등의 선택가능 재료 둘다를 포함할 수 있다. 다른 실시예들에서, 광고는 방송 비디오 프로그램 내에서 산재되어 있을 수 있다. 클라이언트 장치는 사용자가 대화형 컨텐츠(interactive content)를 선택했다는 것을 나타내는 사용자 선택을 사용자 인터페이스 장치로부터 수신할 수 있는 처리 모듈(processing module)을 포함한다. 처리 모듈은 대화형 컨텐츠를 검색하기 위해 처리 사무소(processing office)와 통신을 한다. 광고와 연관된 컨텐츠 등의 대화형 컨텐츠가 사용자에게 제시될 것이다. 예를 들어, 자동차에 대한 광고가 비디오 프로그램과 함께 나타나는 경우, 사용자는 자동차에 대한 광고를 선택할 수 있고 사용자는 자동차 견적 및 구성을 위해 대화형 화면(interactive screen)을 제공받을 수 있다. 방송 비디오 프로그램이 더 이상 사용자의 텔레비전 상에 디스플레이되지 않고, 대화형 컨텐츠가 비디오 프로그램을 대체한다.
대화형 컨텐츠가 클라이언트 장치를 통해 사용자에게 제시될 때 DVR은 비디오 프로그램을 녹화한다. 클라이언트 장치는 처리 사무소로부터 통신을 수신하고 처리 사무소로 요청을 전송하는 입력부를 포함한다. 클라이언트 장치의 처리 모듈이 대화형 컨텐츠를 빠져나가라는 신호를 사용자 인터페이스로부터 수신할 때, 처리 모듈은 비디오 레코더가 녹화된 비디오 프로그램을 사용자의 텔레비전 상에서 재생하기 시작하게 한다. 따라서, 사용자는 대화형 컨텐츠로 전환하는 것으로 인해 비디오 프로그램의 어느 부분도 놓치지 않는다. 비디오 프로그램 및 선택가능 재료가 MPEG 객체로서 구성될 수 있고 MPEG 스트림 내의 MPEG 요소들로서 클라이언트 장치로 전송될 수 있다. 이와 유사하게, 선택가능 재료와 연관된 대화형 컨텐츠가 또한 복수의 MPEG 객체들로 이루어져 있을 수 있다. 처리 사무소는 MPEG 객체들에 관한 상태 정보를 유지한다.
본 발명의 이상의 특징들은 첨부 도면을 참조하여 기재된 이하의 상세한 설명을 참조하면 보다 쉽게 이해될 것이다.
도 1은 본 발명의 한 형태를 구현하는 통신 환경을 나타낸 블록도.
도 1a는 지역 처리 사무소 및 비디오 컨텐츠 배포 네트워크를 나타낸 도면.
도 1b는 예시적인 합성 스트림 제시 및 상호작용 레이아웃 파일을 나타낸 도면.
도 1c는 저작(authoring) 환경 내에서의 프레임의 구조를 나타낸 도면.
도 1d는 프레임을 매크로블록 단위로 요소들로 분해하는 것을 나타낸 도면.
도 2는 합성된 다수의 소스들을 디스플레이 상에 나타낸 도면.
도 3은 그루밍을 포함하는 시스템을 나타낸 도면.
도 4는 그루밍 이전의 비디오 프레임, 그루밍 이후의 비디오 프레임, 및 그루밍된 섹션에 비디오 오버레이(video overlay)를 갖는 비디오 프레임을 나타낸 도면.
도 5는 그루밍이 어떻게 행해지는지(예를 들어, B-프레임의 제거)를 나타낸 도면.
도 6은 MPEG 프레임 구조를 나타낸 도면.
도 7은 I 프레임, B 프레임 및 P 프레임에 대한 그루밍 프로세스를 나타낸 플로우차트.
도 8은 영역 경계 움직임 벡터를 제거하는 것을 나타낸 도면.
도 9는 DCT 계수들의 재정렬(reordering)을 나타낸 도면.
도 10은 대안의 그루머를 나타낸 도면.
도 11은 스티처 모듈의 환경을 나타낸 도면.
도 12는 서로에 대해 랜덤한 위치들에서 시작하는 비디오 프레임들을 나타낸 도면.
도 13은 픽처 내에 합성된 다수의 MPEG 요소들을 갖는 디스플레이를 나타낸 도면.
도 14는 다수의 요소들로 이루어진 픽처의 슬라이스 분해(slice breakdown)를 나타낸 도면.
도 15는 스티칭을 대비한 슬라이스 기반 인코딩을 나타낸 도면.
도 16은 비디오 요소를 픽처 내에 합성하는 것을 상세히 나타낸 도면.
도 17은 16x16 크기의 매크로블록 요소를 24x24 크기의 매크로블록들로 이루어진 배경 내에 합성하는 것을 상세히 나타낸 도면.
도 18은 프레임의 요소들을 나타낸 도면.
도 19는 다수의 인코딩된 요소들을 합성하는 것을 나타낸 플로우차트.
도 20은 합성된 요소가 직사각형이거나 인접할 필요가 없다는 것을 보여주는 도면.
도 21은 단일의 요소가 인접해 있지 않은 화면 상의 요소들을 나타낸 도면.
도 22는 복수의 처리 사무소들 및/또는 세션 프로세서들로 멀티캐스팅하기 위해 선형 방송 컨텐츠(linear broadcast content)를 그루밍하는 그루머를 나타낸 도면.
도 23은 디스플레이 장치 상에 디스플레이될 때 맞춤화된 모자이크의 일례를 나타낸 도면.
도 24는 대화형 MPEG 컨텐츠를 제공하는 IP-기반 네트워크를 나타낸 도면.
도 24a는 선택가능 컨텐츠와 함께 텔레비전 상에 디스플레이되는 MPEG 컨텐츠를 나타낸 도면.
도 24b는 사용자가 대화형 컨텐츠를 선택한 후의 대화형 컨텐츠 화면을 나타낸 도면.
도 24c는 사용자가 선택가능 비디오 컨텐츠를 선택했을 때의 비디오 프로그램 내의 지점에서 DVR이 컨텐츠를 재생하기 시작하는 비디오 프로그램의 화면을 나타낸 도면.
도 24d는 도 24a에 도시한 것과 같이, 사용자가 선택가능 재료를 선택할 때의 자동 디지털 비디오 녹화 프로세스의 플로우차트.
도 24e는 도 24d의 플로우차트에 계속되는 플로우차트.
도 25는 대화형 MPEG 컨텐츠를 제공하는 케이블-기반 네트워크를 나타낸 도면.
도 26은 케이블-기반 네트워크에서 사용되는 부하 분산기(load balancer)에 대한 리소스 할당 프로세스(resource allocation process)의 플로우차트.
도 27은 부하 분산을 위한 케이블 네트워크 요소들 간의 통신을 나타내는 데 사용되는 시스템도.
도 28은 클라이언트 장치 및 연관된 디지털 비디오 레코더를 나타낸 도면.
이하의 상세한 설명 및 첨부된 특허청구범위에서 사용되는 바와 같이, "영역(region)"이라는 용어는 인접해 있거나 인접해 있지 않는 MPEG(Motion Picture Expert Group) 슬라이스들의 논리적 그룹을 의미할 것이다. MPEG이라는 용어가 사용될 때, 이는 MPEG-2 및 MPEG-4를 비롯한 MPEG 표준의 모든 변형들을 말하는 것이다. 본 발명은, 이하의 실시예들에 기술된 바와 같이, 대화형 MPEG 컨텐츠 및 처리 사무소와 텔레비전 등의 연관된 디스플레이를 갖는 클라이언트 장치 간의 통신을 위한 환경을 제공한다. 본 발명이 구체적으로는 MPEG 규격 및 인코딩을 참조하고 있지만, 본 발명의 원리들이 블록-기반 변환(block-based transform)에 기초하는 다른 인코딩 기법들에서도 이용될 수 있다. 이하의 명세서 및 첨부된 특허청구범위에서 사용되는 바와 같이, '인코딩한다', '인코딩된', 및 '인코딩'이라는 용어는 디지털 데이터 신호를 압축하고 압축된 디지털 데이터 신호를 프로토콜 또는 표준에 맞춰 포맷팅하는 프로세스를 말한다. 인코딩된 비디오 데이터가 공간적 표현 이외의 임의의 상태에 있을 수 있다. 예를 들어, 인코딩된 비디오 데이터가 변환 코딩, 양자화 및 엔트로피 인코딩될 수 있거나, 이들의 임의의 조합일 수 있다. 따라서, 변환 코딩된 데이터가 인코딩된 것으로 생각될 것이다.
본 출원에서 디스플레이 장치를 텔레비전이라고 말하고 있지만, 디스플레이 장치가 휴대폰(cell phone), PDA(Personal Digital Assistant), 또는 디스플레이를 포함하는 기타 장치일 수 있다. MPEG 컨텐츠를 디코딩할 수 있는 셋톱 박스 등의 디코딩 장치를 포함하는 클라이언트 장치가 사용자의 디스플레이 장치와 연관되어 있다. 어떤 실시예들에서, 디코더가 디스플레이 장치의 일부일 수 있다. 애플리케이션 설계자가 컨텐츠 제공자들 및 선형 방송사들(linear broadcasters)로부터의 비디오 컨텐츠를 포함하는 다양한 요소들로부터 하나 이상의 장면들을 갖는 애플리케이션을 생성하는 대화형 MPEG 컨텐츠를 디자인할 수 있게 해주는 저작 환경에서 대화형 MPEG 컨텐츠가 생성된다. 애플리케이션 파일은 AVML(Active Video Markup Language)로 형성된다. 저작 환경에 의해 생성된 AVML 파일은 하나의 프레임/페이지 내의 비디오 그래픽 요소들(즉, MPEG 슬라이스들), 비디오 그래픽 요소들의 크기, 각각의 장면에 대한 페이지/프레임 내의 비디오 그래픽 요소들의 레이아웃, 비디오 그래픽 요소들에 대한 링크, 및 장면에 대한 임의의 스크립트들을 정의하는 XML-기반 파일이다. 어떤 실시예들에서, AVML 파일은 텍스트 에디터(text editor)로 저작되거나 저작 환경에 의해 발생되는 것과 반대로 직접 저작될 수 있다. 비디오 그래픽 요소들은 정적 그래픽, 동적 그래픽, 또는 비디오 컨텐츠일 수 있다. 장면 내의 각각의 요소가 실제로 이미지들의 시퀀스이고 정적 그래픽이 반복하여 디스플레이되고 시간이 지남에 따라 변하지 않는 이미지라는 것을 잘 알 것이다. 요소들 각각이 그래픽들에 대한 MPEG 데이터 및 그래픽들과 연관된 동작 둘다를 포함할 수 있는 MPEG 객체일 수 있다. 대화형 MPEG 컨텐츠는 사용자와 상호작용할 수 있는 장면 내의 다수의 대화형 MPEG 객체들을 포함할 수 있다. 예를 들어, 장면은 객체에 대한 비디오 그래픽을 형성하는 인코딩된 MPEG 데이터를 제공하는 버튼 MPEG 객체(button MPEG object)를 포함할 수 있고 또한 버튼 상태를 추적하는 프로시저(procedure)도 포함할 수 있다. MPEG 객체들이 스크립트들과 협조하여 동작할 수 있다. 예를 들어, MPEG 버튼 객체는 그의 상태(온/오프)를 추적할 수 있지만, 장면 내의 스크립트는 그 버튼이 눌러질 때 어떤 일이 일어나는지를 결정할 것이다. 스크립트는 버튼이 비디오 컨텐츠가 재생 중인지 정지되었는지를 나타내도록 버튼 상태를 비디오 프로그램과 연관시킬 수 있다. MPEG 객체들은 항상 객체의 일부로서 연관된 동작을 갖는다. 어떤 실시예들에서, 버튼 MPEG 객체 등의 MPEG 객체들은 버튼의 상태를 추적하는 것 이외의 동작들을 수행할 수 있다. 이러한 실시예들에서, MPEG 객체는 또한 외부 프로그램에 대한 호출도 포함할 수 있으며, 이 경우 버튼 그래픽이 실행(engage)될 때 MPEG 객체는 그 프로그램에 액세스할 것이다. 따라서, 재생/일시정지 MPEG 객체 버튼의 경우, MPEG 객체는 버튼의 상태를 추적하고 상태 변화에 기초하여 그래픽 오버레이를 제공하며 및/또는 비디오 플레이어 객체가 버튼의 상태에 따라 비디오 컨텐츠를 재생하거나 일시정지하게 하는 코드를 포함할 수 있다.
애플리케이션이 저작 환경 내에 생성되고 대화형 세션이 요청측 클라이언트 장치에 의해 요청될 때, 처리 사무소는 대화형 세션을 위한 프로세서를 할당한다.
처리 사무소에서 동작하는 할당된 프로세서는 가상 기계를 실행시키고 요청된 애플리케이션에 액세스하여 그 애플리케이션을 실행시킨다. 프로세서는 장면의 그래픽 부분을 MPEG 포맷으로 전송할 준비를 한다. 클라이언트 장치에 의한 MPEG 전송을 수신하여 사용자의 디스플레이 상에 디스플레이할 때, 사용자는 클라이언트 장치와 통신하고 있는 입력 장치를 사용하여 디스플레이된 컨텐츠와 상호작용할 수 있다. 클라이언트 장치는 사용자로부터의 입력 요청을, 통신 네트워크를 통해, 처리 사무소 또는 기타 원격 장소에 있는 할당된 프로세서 상에서 실행 중인 애플리케이션으로 전송한다. 그에 응답하여, 할당된 프로세서는 그 요청 및 MPEG 객체들의 상태[이후부터 모두 합하여 '애플리케이션 상태(application state)'라고 함]에 기초하여 그래픽 레이아웃을 업데이트한다. 새로운 요소들이 장면에 추가되거나 장면 내에서 대체될 수 있거나, 완전히 새로운 장면이 생성될 수 있다. 할당된 프로세서는 장면에 대한 요소들 및 객체들을 수집하고, 할당된 프로세서 또는 다른 프로세서는 객체(들)에 따라 데이터 및 동작들을 처리하여, 사용자의 텔레비전 상에 디스플레이하기 위해 송수신기로 전송되는 MPEG 포맷으로 된 수정된 그래픽 표현을 생성한다. 이상의 설명이 할당된 프로세서가 처리 사무소에 위치하는 것을 나타내고 있지만, 할당된 프로세서가 원격 장소에 위치할 수 있고 네트워크 연결을 통해 처리 사무소와 통신하기만 하면 된다. 이와 마찬가지로, 할당된 프로세서가 클라이언트 장치와의 모든 트랜잭션을 처리하는 것으로 기술되어 있지만, 다른 프로세서들도 애플리케이션에 대한 그래픽 레이아웃의 컨텐츠(MPEG 객체들)의 요청 및 어셈블리와 연관될 수 있다.
도 1은 본 발명의 한 형태를 구현하는 통신 환경(100)을 나타낸 블록도이다. 통신 환경(100)에 의해 애플리케이션 프로그래머는 최종 사용자와 양방향 상호작용(two-way interactivity)을 위한 애플리케이션을 생성할 수 있다. 최종 사용자는 텔레비전 등의 클라이언트 장치(110) 상에서 애플리케이션을 보고, 업스트림 네트워크(upstream network)(120)를 통해 명령들을 업스트림 전송함으로써 컨텐츠와 상호작용할 수 있으며, 이 경우 업스트림(upstream) 및 다운스트림(downstream)은 동일한 네트워크의 일부이거나 처리 사무소로의 복귀 경로 링크(return path link)를 제공하는 별도의 네트워크일 수 있다. 애플리케이션 프로그래머는 하나 이상의 장면들을 포함하는 애플리케이션을 생성한다. 각각의 장면은 장면 내의 각각의 요소가 비디오 시퀀스인 것을 제외하고는 HTML 웹 페이지와 동등하다. 애플리케이션 프로그래머는 장면의 그래픽 표현을 디자인하고 오디오 및 비디오 파일들 등의 요소들 및 장면에 대한 버튼들 및 컨트롤들 등의 객체들에 대한 링크를 포함시킨다. 애플리케이션 프로그래머는 그래픽 저작 도구(graphical authoring tool)(130)를 사용하여 객체들 및 요소들을 그래픽적으로 선택한다. 저작 환경(130)은 애플리케이션 프로그래머가 메서드들을 비디오 객체들을 생성하는 요소들과 연관시킬 수 있게 해주는 그래픽 인터페이스를 포함할 수 있다. 그래픽들은 MPEG 인코딩된 비디오, 그루밍된 MPEG 비디오, 정지 영상들 또는 다른 포맷의 비디오일 수 있다. 애플리케이션 프로그래머는 컨텐츠 제공자(160)(뉴스 소스, 영화 스튜디오, RSS 피드들, 등) 및 선형 방송 소스들(방송 매체 및 케이블, 주문형 비디오 소스 및 웹-기반 비디오 소스)(170)을 비롯한 다수의 소스들로부터의 컨텐츠를 애플리케이션에 포함시킬 수 있다. 애플리케이션 프로그래머는 애플리케이션을 AVML(active video mark-up language) 형태의 파일로서 생성하고 애플리케이션 파일을 비디오 컨텐츠 배포 네트워크(150) 내의 프록시/캐쉬(140)로 전송한다. AVML 파일 포맷은 XML 포맷이다. 예를 들어, 예시적인 AVML 파일을 보여주는 도 1b를 참조하기 바란다.
컨텐츠 제공자(160)는 비디오 컨텐츠를 MPEG 비디오/오디오로서 인코딩할 수 있거나, 컨텐츠가 다른 그래픽 포맷(예를 들어, JPEG, BITMAP, H263, H264, VC-1, 등)으로 되어 있을 수 있다. 컨텐츠는 이어서 컨텐츠를 스티칭을 허용할 것인 양호한 인코딩된 MPEG 포맷으로 하기 위해 그루머/스케일러(Groomer/Scaler)(190)에서 그루밍 및/또는 스케일링될 수 있다. 컨텐츠가 양호한 MPEG 포맷으로 되어 있지 않은 경우, 컨텐츠를 필요로 하는 애플리케이션이 클라이언트 장치에 의해 요청될 때, 처리 사무소는 그 포맷을 그루밍한다. 컨텐츠 제공자로부터의 컨텐츠와 같이, 방송 매체 서비스들로부터의 선형 방송 컨텐츠(linear broadcast content)(170)가 그루밍될 것이다. 선형 방송 컨텐츠는 양호하게는, 컨텐츠를 처리 사무소로 전달하기 전에, 스티칭을 위해 양호한 MPEG 포맷으로 컨텐츠를 인코딩하는 그루머/스케일러(180)에서 그루밍 및/또는 스케일링된다.
컨텐츠 제공자(160)로부터의 비디오 컨텐츠는, 애플리케이션 프로그래머에 의해 생성된 애플리케이션들과 함께, 비디오 컨텐츠 배포 네트워크(150)를 통해 배포되고 배포점(distribution point)(140)에 저장된다. 이 배포점들은 도 1 내에서 프록시/캐쉬로 표현되어 있다. 컨텐츠 제공자들은 대화형 처리 사무소에서 사용하기 위한 그들의 컨텐츠를 비디오 컨텐츠 배포 네트워크에서 프록시/캐쉬(140) 위치에 둔다. 따라서, 컨텐츠 제공자들(160)은 그들의 컨텐츠를 비디오 컨텐츠 배포 네트워크(150)의 캐쉬(140)에 제공할 수 있고, 본 아키텍처를 구현하는 하나 이상의 처리 사무소는 애플리케이션을 위해 필요할 때 비디오 컨텐츠 배포 네트워크(150)를 통해 컨텐츠에 액세스할 수 있다. 비디오 컨텐츠 배포 네트워크(150)는 로컬 네트워크, 지역 네트워크(regional network) 또는 전세계 네트워크일 수 있다. 따라서, 처리 사무소에 있는 가상 기계가 애플리케이션을 요청할 때, 이 애플리케이션은 배포점들 중 하나의 배포점으로부터 검색될 수 있고 애플리케이션의 AVML 파일 내에 정의된 컨텐츠가 동일한 또는 다른 배포점으로부터 검색될 수 있다.
시스템의 최종 사용자는 셋톱 박스 등의 클라이언트 장치(110)를 통해 명령을 처리 사무소(105)로 전송함으로써 대화형 세션(interactive session)을 요청할 수 있다. 도 1에는, 단지 하나의 처리 사무소가 도시되어 있다. 그렇지만, 실세계 응용에서, 복수의 처리 사무소들이 여러 지역들에 위치해 있을 수 있으며, 처리 사무소들 각각은 도 1b에 도시된 바와 같이 비디오 컨텐츠 배포 네트워크와 통신하고 있다. 처리 사무소(105)는 대화형 세션을 위해 최종 사용자에 대한 프로세서를 할당한다. 프로세서는 모든 어드레싱 및 리소스 할당을 포함하는 세션을 유지한다. 본 명세서 및 첨부된 특허청구범위에서 사용되는 바와 같이, "가상 기계"(106)라는 용어는 할당된 프로세서는 물론, 처리 사무소와 클라이언트 장치 간의 세션 관리 및 리소스 할당(즉, 대화형 세션을 위한 프로세서의 할당) 등의 기능들을 수행하는 처리 사무소에 있는 다른 프로세서들을 말한다.
가상 기계(106)는 그의 주소를 클라이언트 장치(110)로 전달하고, 대화형 세션이 설정된다. 사용자는 이어서 클라이언트 장치(110)를 통해 대화형 애플리케이션(AVML)의 제시를 요청할 수 있다. 이 요청이 가상 기계(106)에 의해 수신되고, 그에 응답하여, 가상 기계(106)는 AVML 파일이 프록시/캐쉬(140)로부터 검색되어 가상 기계(106)에 의해 액세스가능한 메모리 캐쉬(107)에 설치되게 한다. 가상 기계(106)가 복수의 클라이언트 장치들(110)과 동시에 통신하고 있을 수 있고 클라이언트 장치들이 서로 다른 장치 유형들일 수 있다는 것을 잘 알 것이다. 예를 들어, 제1 장치는 휴대폰일 수 있고, 제2 장치는 셋톱 박스일 수 있으며, 제3 장치는 PDA(personal digital assistant)일 수 있고, 이 때 각각의 장치가 동일한 또는 서로 다른 애플리케이션에 액세스할 수 있다.
애플리케이션에 대한 요청에 응답하여, 가상 기계(106)는 애플리케이션을 처리하고 장면의 일부인 요소들 및 MPEG 객체들을 프록시/캐쉬로부터 가상 기계(106)와 연관된 메모리(107)로 이동시키라고 요청한다. MPEG 객체는 시각적 구성요소(visual component)와 작동가능 구성요소(actionable component) 둘다를 포함한다. 시각적 구성요소는 하나 이상의 MPEG 슬라이스로서 인코딩되거나 다른 그래픽 포맷으로 제공될 수 있다. 작동가능 구성요소는 객체의 상태를 저장하고 있을 수 있거나, 계산을 수행하는 것, 연관된 프로그램에 액세스하는 것, 또는 그래픽 구성요소를 활성인 것으로 식별하기 위해 오버레이 그래픽을 디스플레이하는 것을 포함할 수 있다. 오버레이 그래픽(overlay graphic)은 클라이언트 장치로 전송되는 신호에 의해 생성될 수 있으며, 이 때 클라이언트 장치는 디스플레이 장치 상의 오버레이 평면(overlay plane)에 그래픽을 생성한다. 장면이 정적 그래픽(static graphic)이 아니고 오히려 프레임들의 컨텐츠가 시간의 경과에 따라 변할 수 있는 복수의 비디오 프레임을 포함한다는 것을 잘 알 것이다.
가상 기계(106)는, 애플리케이션 상태를 비롯한 장면 정보에 기초하여, 장면에 대한 다양한 요소들 및 객체들의 크기 및 위치를 결정한다. 각각의 그래픽 요소가 인접한 또는 인접하지 않은 MPEG 슬라이스들로부터 형성될 수 있다. 가상 기계는 각각의 그래픽 요소에 대한 슬라이스들 모두의 위치를 추적한다. 그래픽 요소를 정의하는 슬라이스들 모두가 영역(region)을 형성한다. 가상 기계(106)는 각각의 영역을 추적한다. AVML 파일 내의 디스플레이 위치 정보에 기초하여, 비디오 프레임 내의 요소들 및 배경에 대한 슬라이스 위치들이 설정된다. 그래픽 요소들이 아직 그루밍된 포맷으로 되어 있지 않은 경우, 가상 기계는 그 요소를 요소 렌더러(element renderer)로 전달한다. 렌더러는 그래픽 요소를 비트맵으로서 렌더링하고, 렌더러는 그 비트맵을 MPEG 요소 인코더(109)로 전달한다. MPEG 요소 인코더는 그 비트맵을 MPEG 비디오 시퀀스로서 인코딩한다. MPEG 인코더는 비트맵을 처리하여 일련의 P-프레임들을 출력한다. 아직 사전-인코딩 및 사전-그루밍되지 않은 컨텐츠의 일례가 개인화된 컨텐츠(personalized content)이다. 예를 들어, 사용자가 음악 파일들을 처리 사무소에 저장하였고 제시될 그래픽 요소가 사용자의 음악 파일들의 목록인 경우, 이 그래픽이 가상 기계에 의해 비트맵으로서 실시간으로 생성된다. 가상 기계는 그 비트맵을 요소 렌더러(108)로 전달하고, 요소 렌더러(108)는 비트맵을 렌더링하고 그루밍을 위해 그 비트맵을 MPEG 요소 인코더(109)로 전달한다.
그래픽 요소들이 MPEG 요소 인코더에 의해 그루밍된 후에, MPEG 요소 인코더(109)는, 다른 사용자들에 의한 다른 대화형 세션들을 위해 가상 기계(106)에서 나중에 검색하기 위해, 그래픽 요소들을 메모리(107)로 전달한다. MPEG 인코더(109)는 또한 MPEG 인코딩된 그래픽 요소들을 스티처(stitcher)(115)로 전달한다. 요소를 렌더링하는 것 및 요소를 MPEG 인코딩하는 것이 가상 기계(106)와 동일한 프로세서 또는 그와 분리된 프로세서에서 달성될 수 있다. 가상 기계(106)는 또한 애플리케이션 내에 해석해야 하는 스크립트가 있는지를 판정한다. 스크립트가 있는 경우, 그 스크립트가 가상 기계(106)에 의해 해석된다.
애플리케이션 내의 각각의 장면이 정적 그래픽, 사용자 상호작용에 기초하여 변하는 객체 그래픽, 및 비디오 컨텐츠를 비롯한 복수의 요소들을 포함할 수 있다. 예를 들어, 장면은 복수의 버튼들을 갖는 오디오, 비디오 및 멀티미디어 컨텐츠(객체 그래픽)를 재생하는 미디어 플레이어와 함께 있는 배경(정적 그래픽), 및 스트리밍 비디오 컨텐츠를 디스플레이하는 비디오 컨텐츠 창(비디오 컨텐츠)을 포함할 수 있다. 미디어 플레이어의 각각의 버튼은 그 자체가 그 자신의 관련 메서드를 포함하는 별도의 객체 그래픽일 수 있다.
가상 기계(106)는 프레임에 대한 그래픽 요소들(배경, 미디어 플레이어 그래픽, 및 비디오 프레임) 각각을 획득하고 각각의 요소의 위치를 결정한다. 객체들 및 요소들(배경, 비디오 컨텐츠) 전부가 획득되면, 요소들 및 그래픽 객체들이, 요소들 및 MPEG 객체들에 대한 위치 정보와 함께, 스티처/합성기(115)로 전달된다. 스티처(115)는 가상 기계(106)에 의해 제공되는 매핑에 따라 요소들(비디오 컨텐츠, 버튼, 그래픽, 배경) 각각을 함께 스티칭한다. 요소들 각각은 매크로블록 경계에 놓여지며, 함께 스티칭될 때, 그 요소들은 MPEG 비디오 프레임을 형성한다. 주기적으로, 시퀀스를 리프레쉬(refresh)하여 드롭된 매크로블록을 피하기 위해 장면 프레임의 요소들 전부가 참조 P-프레임(reference P-frame)을 형성하도록 인코딩된다. 이 MPEG 비디오 스트림은 이어서 다운스트림 네트워크를 통해 클라이언트 장치의 주소로 전송된다. 비디오 프레임들 각각에 대해 이 프로세스가 계속된다. 명세서가 인코딩 프로세스로서 MPEG을 언급하고 있지만, 이 시스템에서 다른 인코딩 프로세스들도 사용될 수 있다.
처리 사무소(105)에 있는 가상 기계(106) 또는 기타 프로세서 또는 프로세스가 요소들 각각에 관한 정보 및 화면 상에서의 그 요소들의 위치를 유지한다. 가상 기계(106)는 또한 요소들 각각과 연관된 객체들에 대한 메서드들에 액세스할 수 있다. 예를 들어, 미디어 플레이어는 복수의 루틴들을 포함하는 미디어 플레이어 객체를 가질 수 있다. 이 루틴들은 재생(play), 정지(stop), 고속 앞으로 감기(fast forward), 되감기(rewind), 및 일시정지(pause)를 포함할 수 있다. 이 루틴들 각각은 코드를 포함하고, 사용자가 루틴들 중 하나를 작동시키라는 요청을 처리 사무소(105)로 전송할 때, 그 객체가 액세스되어 그 루틴이 실행된다. 이 루틴은 JAVA-기반 애플릿, 해석될 스크립트, 또는 가상 기계와 연관된 운영 체제 내에서 실행될 수 있는 별도의 컴퓨터 프로그램일 수 있다.
처리 사무소(105)는 또한 텔레비전과 연관된 클라이언트 장치로부터 프로세서에 의해 수신되는 신호에 기초하여 실행하거나 해석할 루틴을 결정하기 위한 연결된 데이터 구조(linked data structure)도 생성할 수 있다. 연결된 데이터 구조는 포함된 매핑 모듈에 의해 형성될 수 있다. 이 데이터 구조는 각각의 리소스 및 연관된 객체를 다른 모든 리소스 및 객체에 대해 연관시킨다. 예를 들어, 사용자가 이미 재생 컨트롤을 실행시킨 경우, 미디어 플레이어 객체가 작동되고 비디오 컨텐츠가 디스플레이된다. 비디오 컨텐츠가 미디어 플레이어 창에서 재생되고 있을 때, 사용자는 사용자의 리모콘 상에서 방향키(directional key)를 누를 수 있다. 이 일례에서, 방향키를 누른다는 것은 정지 버튼을 누른다는 것을 나타낸다. 송수신기는 방향 신호를 생성하고, 할당된 프로세서는 방향 신호를 수신한다. 처리 사무소(105)에 있는 가상 기계(106) 또는 다른 프로세서는 연결된 데이터 구조에 액세스하고 방향키 누름의 방향에서 그 요소를 위치지정한다. 데이터베이스는 그 요소가 미디어 플레이어 객체의 일부인 정지 버튼이라는 것을 알려주고, 프로세서는 비디오 컨텐츠를 정지시키는 루틴을 구현한다. 이 루틴은 요청된 컨텐츠가 정지되게 한다. 마지막 비디오 컨텐츠 프레임이 동결(frozen)될 것이고, 눌러진 정지 버튼 그래픽이 스티처 모듈에 의해 프레임 내에 삽입(interweave)된다. 이 루틴은 또한 정지 버튼 주변에 포커스(focus)를 제공하는 포커스 그래픽(focus graphic)도 포함할 수 있다. 예를 들어, 가상 기계는 스티처로 하여금 1 매크로블록의 폭을 갖는 경계로 포커스를 갖는 그래픽을 둘러싸게 할 수 있다. 따라서, 비디오 프레임이 디코딩되어 디스플레이될 때, 사용자는 사용자와 상호작용할 수 있는 그래픽/객체를 식별할 수 있게 된다. 프레임이 이어서 멀티플렉서로 전달되고 다운스트림 네트워크를 통해 클라이언트 장치로 전송된다. MPEG 인코딩된 비디오 프레임이 클라이언트 장치에 의해 디코딩되어, 클라이언트 장치(휴대폰, PDA) 상에 또는 별도의 디스플레이 장치(모니터, 텔레비전) 상에 디스플레이된다. 이 프로세스는 최소의 지연으로 행해진다. 따라서, 애플리케이션으로부터의 각각의 장면으로부터, 각각이 미디어 플레이어 애플리케이션 상태의 스냅샷을 나타내는 복수의 비디오 프레임들이 얻어진다.
가상 기계(106)는 클라이언트 장치로부터 반복하여 명령들을 수신하고, 그 명령들에 응답하여, 직접 또는 간접으로 객체들에 액세스하고 사용자 상호작용 및 애플리케이션 상호작용 모델에 응답하여 객체들의 루틴들을 실행하거나 해석한다. 이러한 시스템에서, 사용자의 텔레비전 상에 디스플레이되는 비디오 컨텐츠 재료는 단지 디코딩된 MPEG 컨텐츠일 뿐이며, 상호작용성을 위한 모든 처리가 처리 사무소에서 일어나며 할당된 가상 기계에 의해 조정된다. 따라서, 클라이언트 장치는 디코더만 필요로 하며 컨텐츠를 캐싱하거나 처리할 필요가 없다.
클라이언트 장치로부터의 사용자 요청을 통해, 처리 사무소가 한 비디오 요소를 다른 비디오 요소로 대체시킬 수 있다는 것을 잘 알 것이다. 예를 들어, 사용자는 디스플레이할 영화들의 목록 중에서 선택을 할 수 있고, 따라서 사용자가 2개의 영화 간에 전환하기로 선택하는 경우 제1 비디오 컨텐츠 요소가 제2 비디오 컨텐츠 요소로 대체될 것이다. 각각의 요소의 위치 및 요소를 형성하는 영역의 목록을 유지하는 가상 기계는 장면 내의 요소들을 쉽게 대체시켜 새로운 MPEG 비디오 프레임을 생성할 수 있으며, 이 때 그 프레임이 스티처(115)에서 그 새로운 요소를 포함하여 함께 스티칭된다.
도 1a는 디지털 컨텐츠 배포 네트워크(100A), 컨텐츠 제공자들(110A) 및 처리 사무소들(120A) 간의 상호연동을 나타낸 것이다. 이 일례에서, 컨텐츠 제공자들(130A)은 컨텐츠를 비디오 컨텐츠 배포 네트워크(100A) 내로 배포한다. 컨텐츠 제공자들(130A) 또는 비디오 컨텐츠 배포 네트워크와 연관된 프로세서들은 컨텐츠를 처리 사무소들(120A)의 대화형 MPEG 컨텐츠의 생성과 호환되는 MPEG 포맷으로 변환한다. 디지털 컨텐츠 배포 네트워크(100A)의 컨텐츠 관리 서버(140A)는, 컨텐츠가 전세계/국가(global/national) 범위로 되어 있는 경우, 서로 다른 영역들에 위치한 프록시/캐쉬들(150A-154A) 사이에 MPEG-인코딩된 컨텐츠를 배포한다. 컨텐츠가 지역/로컬(regional/local) 범위로 되어 있는 경우, 컨텐츠는 지역/로컬 프록시/캐쉬에 존재하게 된다. 액세스 시간을 증가시키기 위해, 컨텐츠가 국가 또는 세계 전체에 걸쳐 서로 다른 장소들에 미러링되어 있을 수 있다. 최종 사용자가, 그의 클라이언트 장치(160A)를 통해, 지역 처리 사무소(regional processing office)에 애플리케이션을 요청할 때, 지역 처리 사무소는 요청된 애플리케이션에 액세스할 것이다. 요청된 애플리케이션이 비디오 컨텐츠 배포 네트워크 내에 위치할 수 있거나, 그 애플리케이션이 지역 처리 사무소에 로컬적으로 또는 상호연결된 처리 사무소들의 네트워크 내에 존재할 수 있다. 애플리케이션이 검색되면, 지역 처리 사무소에 있는 할당된 가상 기계는 검색될 필요가 있는 비디오 컨텐츠를 결정할 것이다. 컨텐츠 관리 서버(140A)는 가상 기계가 비디오 컨텐츠 배포 네트워크 내에서 컨텐츠를 위치지정하는 일을 돕는다. 컨텐츠 관리 서버(140A)는 컨텐츠가 지역 또는 로컬 프록시/캐쉬에 위치하는지를 판정할 수 있고 또한 가장 가까운 프록시/캐쉬를 위치지정한다. 예를 들어, 애플리케이션은 광고를 포함할 수 있고, 컨텐츠 관리 서버는 가상 기계에 로컬 프록시/캐쉬로부터 광고를 검색하도록 지시할 것이다. 도 1a에 도시된 바와 같이, 중서부 및 남동부 지역 처리 사무소(120A)도 역시 로컬 프록시/캐쉬들(153A, 154A)을 갖는다. 이들 프록시/캐쉬는 로컬 뉴스 및 로컬 광고를 포함할 수 있다. 따라서, 남동부에 있는 최종 사용자에게 제시되는 장면들이 중서부에 있는 최종 사용자에게는 다르게 보일 수 있다. 각각의 최종 사용자는 서로 다른 로컬 뉴스 기사 또는 서로 다른 광고를 제공받을 수 있다. 컨텐츠 및 애플리케이션이 검색되면, 가상 기계는 컨텐츠를 처리하고 MPEG 비디오 스트림을 생성한다. MPEG 비디오 스트림은 이어서 요청측 클라이언트 장치로 보내진다. 최종 사용자는 이어서 컨텐츠와 상호작용하여 새로운 컨텐츠를 갖는 업데이트된 장면을 요청할 수 있고, 처리 사무소에 있는 가상 기계는 비디오 컨텐츠 배포 네트워크의 프록시/캐쉬에 새로운 비디오 컨텐츠를 요청함으로써 장면을 업데이트할 것이다.
저작 환경
저작 환경은 대화형 애플리케이션을 개발하는 도 1c에 도시된 것과 같은 그래픽 에디터(graphical editor)를 포함한다. 애플리케이션은 하나 이상의 장면들을 포함한다. 도 1c에 도시된 바와 같이, 애플리케이션 창은 애플리케이션이 3개의 장면(장면 1, 장면 2 및 장면 3)으로 이루어져 있다는 것을 보여준다. 이 그래픽 에디터에 의해 개발자는 사용자와 연관된 디스플레이 장치 상에 궁극적으로 보여지게 될 디스플레이를 형성하는 장면 내에 배치될 요소들을 선택할 수 있다. 어떤 실시예들에서, 그 요소들이 애플리케이션 창 내로 드래그-앤-드롭된다. 예를 들어, 개발자는 미디어 플레이어 객체 및 미디어 플레이어 버튼 객체들을 포함시키고자 할 수 있으며, 도구모음으로부터 이 요소들을 선택하고 그 요소들을 그 창 내에 드래그-앤-드롭할 것이다. 그래픽 요소가 그 창에 있는 경우, 개발자는 그 요소를 선택할 수 있고, 그 요소에 대한 속성창(property window)이 제공된다. 이 속성창은 적어도 그래픽 요소의 위치(주소), 및 그래픽 요소의 크기를 포함한다. 그래픽 요소가 객체와 연관되어 있는 경우, 속성창은 개발자가 비트맵 이벤트 화면으로 전환하여 연관된 객체 파라미터들(object parameters)을 변경할 수 있게 해주는 탭(tab)을 포함할 것이다. 예를 들어, 사용자는 버튼과 연관된 기능을 변경할 수 있거나, 버튼과 연관된 프로그램을 정의할 수 있다.
도 1d에 도시된 바와 같이, 이 시스템의 스티처는 저작 환경의 출력인 AVML 파일에 기초하여 장면에 대한 일련의 MPEG 프레임들을 생성한다. 장면 내의 각각의 요소/그래픽 객체는 영역을 정의하는 서로 다른 슬라이스들로 이루어져 있다. 요소/객체를 정의하는 영역은 인접해 있거나 인접해 있지 않을 수 있다. 이 시스템은 매크로블록 경계 상에 그래픽을 형성하는 슬라이스들을 스냅한다. 각각의 요소가 인접한 슬라이스들을 가질 필요는 없다. 예를 들어, 배경은 각각이 복수의 매크로블록들로 이루어져 있는 다수의 비인접 슬라이스들을 갖는다. 배경은, 정적인 경우, 인트라코딩된 매크로블록들에 의해 정의될 수 있다. 이와 유사하게, 버튼들 각각에 대한 그래픽이 인트라코딩될 수 있지만, 그 버튼들이 상태와 연관되어 있고 다수의 가능한 그래픽들을 갖는다. 예를 들어, 버튼이 제1 상태 "오프" 및 제2 상태 "온"을 가질 수 있고, 이 때 제1 그래픽은 눌러지지 않은 상태의 버튼의 이미지를 보여주고, 제2 그래픽은 눌러진 상태의 버튼을 보여준다. 도 1c는 또한 영화를 위한 창인 제3 그래픽 요소도 나타내고 있다. 영화 슬라이스들이 인트라코딩된(intracoded) 매크로블록과 인터코딩된(intercoded) 매크로블록의 혼합으로 인코딩되고, 컨텐츠에 기초하여 동적으로 변한다. 이와 유사하게, 배경이 동적인 경우, 배경은 그루밍에 관한 이하의 요구사항들에 따라, 인트라코딩된 매크로블록과 인터코딩된 매크로블록 둘다로 인코딩될 수 있다.
사용자가 클라이언트 장치를 통해 애플리케이션을 선택할 때, 처리 사무소는 저작 환경의 그래픽 에디터로부터의 레이아웃에 따라 요소들을 함께 스티칭할 것이다. 저작 환경의 출력은 AVML(Active Video Mark-up Language) 파일을 포함한다. AVML 파일은 버튼 등의 다중-상태 요소들에 관한 상태 정보, 연관된 그래픽의 주소, 및 그래픽의 크기를 제공한다. AVML 파일은 각각의 요소에 대한 MPEG 프레임 내의 위치들을 나타내고, 각각의 요소와 연관된 객체들을 나타내며, 사용자의 동작들에 기초하여 MPEG 프레임에 대한 변경들을 정의하는 스크립트들을 포함한다. 예를 들어, 사용자는 명령어 신호를 처리 사무소로 전송할 수 있고, 처리 사무소는 AVML 파일을 사용해, 수신된 명령어 신호에 기초하여 일련의 새로운 MPEG 프레임들을 구성할 것이다. 사용자는 다양한 비디오 요소들 간에 전환하고자 할 수 있고 명령 신호를 처리 사무소로 전송할 수 있다. 처리 사무소는 프레임에 대한 레이아웃 내의 한 비디오 요소를 제거할 것이고, 제2 비디오 요소를 선택하여 제2 비디오 요소가 제1 비디오 요소의 위치에서 MPEG 프레임 내에 스티칭되게 할 것이다. 이 프로세스에 대해 이하에서 기술한다.
AVML 파일
응용 프로그래밍 환경은 AVML 파일을 출력한다. AVML 파일은 XML-기반 구문(XML-based syntax)을 갖는다. AVML 파일 구문은 루트 객체 <AVML>을 포함한다. 다른 상위 레벨 태그들로는 애플리케이션이 시작할 때 로드될 첫번째 장면을 지정하는 <initialscene>가 있다. <script> 태그는 스크립트를 식별해주고, <scene> 태그는 장면을 식별해준다. 또한, 상위 레벨 태그들 각각에 대한 하위 레벨 태그들이 있을 수 있으며, 따라서, 태그 내의 데이터에 적용할 계층구조가 있다. 예를 들어, 상위 레벨 스트림 태그로는 비디오 스트림에 대한 <aspect ratio>, <video format>, <bit rate>, <audio format> 및 <audio bit rate>가 있을 수 있다. 이와 유사하게, 장면 태그는 장면 내의 요소들 각각을 포함할 수 있다. 예를 들어, 배경에 대한 <background>, 버튼 객체에 대한 <button>, 및 정지 그래픽(still graphic)에 대한 <static image>이 있다. 다른 태그들은 요소의 크기 및 위치에 대한 <size> 및 <pos>를 포함하며, 장면 내의 각각의 요소에 대한 하위 레벨 태그들일 수 있다. AVML 파일의 일례가 도 1b에 제공되어 있다. AVML 파일 구문에 대한 추가적인 설명은 본 명세서에 첨부된 부록 A에 제공되어 있다.
그루머
도 2는 요청측 클라이언트 장치의 텔레비전에 제공될 수 있는 대표적인 디스플레이를 나타낸 도면이다. 디스플레이(200)는 화면 상에 나오는 3개의 개별적인 비디오 컨텐츠 요소들을 보여주고 있다. 요소 #1(211)은 요소 #2(215) 및 요소 #3(217)이 삽입되는 배경이다.
도 3은 도 2의 디스플레이를 발생할 수 있는 시스템의 제1 실시예를 나타낸 것이다. 동 도면에서, 3개의 비디오 컨텐츠 요소는 인코딩된 비디오 요소: #1(303), 요소 #2(305), 및 요소 #3(307)로서 들어온다. 그루머들(310) 각각은 인코딩된 비디오 컨텐츠 요소를 수신하고, 이 그루머들이 각각의 요소를 처리한 다음에 스티처(340)가 그루밍된 비디오 컨텐츠 요소들을 하나의 합성된 비디오(380)로 결합시킨다. 당업자라면, 그루머들(310)이 하나의 프로세서이거나 병렬로 동작하는 다수의 프로세서들일 수 있다는 것을 잘 알 것이다. 이 그루머들은 처리 사무소 내에, 컨텐츠 제공자들의 시설에, 또는 선형 방송 제공자의 시설에 위치할 수 있다. 이 그루머들은, 그루머들(190 및 180)이 스티처(115)에 직접 연결되어 있지 않은 도 1에 도시된 바와 같이, 스티처에 직접 연결되어 있지 않을 수 있다.
스티칭하는 프로세스가 이하에 기술되어 있으며, 요소들이 먼저 그루밍되어 있는 경우, 훨씬 더 효율적인 방식으로 수행될 수 있다.
그루밍은 압축된 비디오에 존재하는 상호의존성의 일부를 없애준다. 그루머는 I 및 B 프레임을 P 프레임으로 변환시키며, 크로핑(crop)되거나 제거된 다른 비디오 프레임의 한 섹션을 참조하는 임의의 산재하는 움직임 벡터들(stray motion vectors)을 고정킬 것이다. 따라서, 그루밍된 비디오 스트림이 다른 그루밍된 비디오 스트림들 및 인코딩된 정지 영상들과 함께 사용되어 합성 MPEG 비디오 스트림을 형성할 수 있다. 각각의 그루밍된 비디오 스트림은 복수의 프레임들을 포함하고, 이 프레임들이 다른 그루밍된 프레임 내에 쉽게 삽입될 수 있으며, 이 때 합성 프레임들이 함께 그룹화되어 MPEG 비디오 스트림을 형성한다. 유의할 점은, 그루밍된 프레임들이 하나 이상의 MPEG 슬라이스들로부터 형성될 수 있고 MPEG 비디오 스트림 내의 MPEG 비디오 프레임보다 크기가 더 작을 수 있다는 것이다.
도 4는 복수의 요소들(410, 420)을 포함하는 합성 비디오 프레임의 일례이다. 이 합성 비디오 프레임은 예시를 위해 제공된 것이다. 이 비디오 시퀀스가 스티처에서 함께 스티칭될 수 있도록, 도 1에 도시된 그루머들은 하나의 요소만을 수신하여 그 요소(비디오 시퀀스)를 그루밍한다. 그루머들은 복수의 요소들을 동시에 수신하지 않는다. 이 일례에서, 배경 비디오 프레임(410)은 슬라이스당 1개의 행(row)을 포함한다(이것은 한 일례에 불과하며, 이 행이 임의의 수의 슬라이스들로 이루어져 있을 수 있다). 도 1에 도시된 바와 같이, 장면 내의 요소들 전부의 위치를 포함하는 비디오 프레임의 레이아웃이 애플리케이션 프로그래머에 의해 AVML 파일로 정의된다. 예를 들어, 애플리케이션 프로그래머는 장면에 대한 배경 요소를 설계할 수 있다. 따라서, 애플리케이션 프로그래머는 배경을 MPEG 비디오로서 인코딩할 수 있고, 배경을 프록시 캐쉬(140)에 배치하기 전에 배경을 그루밍할 수 있다. 따라서, 애플리케이션이 요청될 때, 애플리케이션의 장면 내의 요소들 각각이 그루밍된 비디오일 수 있고, 이 그루밍된 비디오가 용이하게 함께 스티칭될 수 있다. 유의할 점은, 도 1 내에서 컨텐츠 제공자 및 선형 방송사에 대해 2개의 그루머가 도시되어 있지만, 시스템의 다른 부분들에 그루머들이 존재할 수 있다는 점이다.
도시된 바와 같이, 비디오 요소(420)가 배경 비디오 프레임(410) 내에 삽입된다(또한, 단지 일례로서, 이 요소가 또한 행마다 다수의 슬라이스들로 이루어져 있을 수 있다). 원래의 비디오 프레임(410) 내의 매크로블록이 그의 값을 결정하는 데 다른 매크로블록을 참조하고, 비디오 이미지(420)가 참조 매크로블록 대신에 삽입되기 때문에, 그 참조 매크로블록이 그 프레임으로부터 제거되는 경우, 매크로블록 값이 재계산되어야 한다. 이와 유사하게, 매크로블록이 후속 프레임 내의 다른 매크로블록을 참조하고 그 매크로블록이 제거되어 다른 소스 재료가 그 대신에 삽입되는 경우, 매크로블록 값들이 재계산되어야 한다. 이것은 비디오(430)를 그루밍함으로써 해결된다. 행들이 다수의 슬라이스들을 포함하고 그 중 일부가 대체 비디오 컨텐츠와 일치하는 특정의 크기 및 위치를 갖도록 비디오 프레임이 처리된다. 이 프로세스가 완료된 후에, 현재의 슬라이스들 중 일부를 오버레이 비디오로 대체하는 것은 간단한 작업이며, 그 결과 오버레이(440)를 갖는 그루밍된 비디오가 얻어진다. 그루밍된 비디오 스트림이 그 특정의 오버레이를 어드레싱하도록 특정하여 정의되어 있다. 다른 오버레이는 다른 그루밍 파라미터들에 영향을 미친다. 따라서, 이러한 유형의 그루밍은 스티칭을 대비하여 비디오 프레임을 슬라이스들로 세그먼트화하는 프로세스를 해결한다. 유의할 점은, 오버레이 요소에 슬라이스들을 추가할 필요가 없다는 것이다. 슬라이스들이 수신측 요소, 즉 오버레이가 배치될 요소에만 추가된다. 그루밍된 비디오 스트림은 스트림의 그루밍된 특성에 관한 정보를 포함할 수 있다. 제공될 수 있는 특성들로는 1. 그루밍된 창의 좌측 상부 코너 및 우측 하부 코너의 위치, 및 2. 좌측 상부 코너의 위치만 그리고 창의 크기가 있다. 픽셀 레벨까지 정확한 슬라이스의 크기가 있다.
또한, 비디오 스트림으로 특성 정보를 제공하는 2가지 방식이 있다. 첫번째 방식은 그 정보를 슬라이스 헤더로 제공하는 것이다. 두번째 방식은 그 정보를 확장된 데이터 슬라이스 구조로 제공하는 것이다. 필요한 정보를 장래의 처리 단계들(가상 기계 및 스티처 등)에 성공적으로 전달하기 위해, 이 옵션들 중 어느 하나가 사용될 수 있다.
도 5는 그루밍 전후의 비디오 그래픽 요소에 대한 비디오 시퀀스를 나타낸 것이다. 최초의 들어오는 인코딩된 스트림(500)은, 당업자라면 잘 알 것인 바와 같이, MPEG I-프레임들(510), B-프레임들(530, 550), 및 P-프레임들(570)의 시퀀스를 갖는다. 이 최초의 스트림에서, I-프레임은 모든 다른 프레임들(B 및 P 둘다)에 대한 참조(512)로서 사용된다. 이것은 I-프레임으로부터 모든 다른 프레임들로의 화살표들을 통해 나타내어져 있다. 또한, P-프레임은 B-프레임들 둘다에 대한 참조 프레임(572)으로서 사용된다. 그루머는 스트림을 처리하고 모든 프레임들을 P-프레임들로 대체시킨다. 먼저, 최초의 I-프레임(510)이 인트라코딩된 P-프레임(520)으로 변환된다. 그 다음에, B-프레임들(530, 550)이 P-프레임들(540 및 560)로 변환(535)되고 직전의 프레임만을 참조하도록 수정된다. 또한, P-프레임들(570)이 그들의 참조를 최초의 I-프레임(510)으로부터 그들 직전의 새로 생성된 P-프레임(560)으로 이동(574)시키도록 수정된다. 그 결과의 P-프레임(580)이 그루밍된, 인코딩된 프레임들(590)의 출력 스트림에 나타내어져 있다.
도 6은 표준의 MPEG-2 비트스트림 구문을 나타낸 도면이다. MPEG-2가 일례로서 사용되며, 본 발명이 이 일례로 제한되는 것으로 보아서는 안된다. 비트스트림의 계층적 구조가 시퀀스 레벨(sequence level)에서 시작한다. 이것은 시퀀스 헤더(600) 및 그 다음에 오는 GOP(group of picture) 데이터(605)를 포함한다. GOP 데이터는 GOP 헤더(620) 및 그 다음에 오는 픽처 데이터(625)를 포함한다. 픽처 데이터(625)는 픽처 헤더(640) 및 그 다음에 오는 슬라이스 데이터(645)를 포함한다. 슬라이스 데이터(645)는 어떤 슬라이스 오버헤드(660) 및 그 다음에 오는 매크로블록 데이터(665)로 이루어져 있다. 마지막으로, 매크로블록 데이터(665)는 어떤 매크로블록 오버헤드(680) 및 그 다음에 오는 블록 데이터(685)로 이루어져 있다(블록 데이터가 추가적으로 분해되지만 그것이 이 설명에 필요하지 않다). 시퀀스 헤더는 그루머에서 보통 때와 같이 동작한다. 그렇지만, 그루머의 GOP 헤더 출력이 없는데, 그 이유는 모든 프레임들이 P-프레임이기 때문이다. 헤더의 나머지는 요구되는 출력 파라미터들을 만족시키도록 수정될 수 있다.
도 7은 비디오 시퀀스를 그루밍하는 흐름을 제공한다. 먼저, 프레임 유형[I-프레임(703), B-프레임(705) 또는 P-프레임(707)]이 판정된다(700). I-프레임(703)은, B-프레임(705)과 같이, P-프레임으로 변환될 필요가 있다. 그에 부가하여, I-프레임이 스티처가 요구하는 픽처 정보와 일치할 필요가 있다. 예를 들어, 이 정보는 픽처 헤더에 설정된 인코딩 파라미터들을 나타낼 수 있다. 따라서, 첫번째 단계는 픽처 헤더 내의 정보가 모든 그루밍된 비디오 시퀀스들에 대해 일관성있도록 픽처 헤더 정보를 수정하는 것(730)이다. 스티처 설정은 애플리케이션에 포함될 수 있는 시스템 레벨 설정이다. 이들은 비트 스트림의 모든 레벨들에 대해 사용될 파라미터들이다. 수정을 필요로 하는 항목들이 이하의 표에 제공되어 있다:
픽처 헤더 정보
# 이름
A 픽처 코딩 유형 P-프레임
B 인트라 DC 정밀도 스티처 설정과 일치
C 픽처 구조 프레임
D 프레임 예측 프레임 DCT 스티처 설정과 일치
E 양자화 스케일 유형 스티처 설정과 일치
F 인트라 VLC 포맷 스티처 설정과 일치
G 대체 스캔 보통 스캔
H 순차 프레임 순차 스캔
그 다음에, 슬라이스 오버헤드 정보가 수정되어야만 한다(740). 수정할 파라미터들이 이하의 표에 주어져 있다:
슬라이스 오버헤드 정보
# 이름
A 양자화기 스케일 코드 픽처 헤더에 "스케일 유형" 변경이 있는 경우 변하게 됨
그 다음에, 매크로블록 오버헤드 정보가 수정을 필요로 할 수 있다(750). 수정될 값들이 이하의 표에 주어져 있다:
매크로블록 정보
# 이름
A 매크로블록 유형 I 프레임에 대한 것으로부터 P 프레임에 대한 것으로 가변 길이 코드를 변경함
B DCT 유형 아직 없는 경우 프레임으로 설정
C 은폐 움직임 벡터 제거됨
마지막으로, 블록 정보가 수정을 필요로 할 수 있다(760). 수정할 항목들이 이하의 표에 주어져 있다:
블록 정보
# 이름
A DCT 계수 값 픽처 또는 슬라이스 레벨에서 양자화기 변경이 있는 경우 업데이트를 필요로 함
B DCT 계수 정렬 "대체 스캔"이 이전의 것으로부터 변경된 경우 재정렬될 필요가 있음
블록 변경이 완료된 경우, 이 프로세스는 그 다음 비디오 프레임에서 다시 시작할 수 있다. 프레임 유형이 B-프레임(705)인 경우, I-프레임에 대해 요구되는 것과 동일한 단계들이 또한 B-프레임에 대해서도 요구된다. 그렇지만, 그에 부가하여, 움직임 벡터도 수정될 필요가 있다(770). 2가지 시나리오가 있다: B-프레임이 I-프레임 또는 P-프레임 바로 다음에 오는 것 또는 B-프레임이 또 하나의 B-프레임 다음에 오는 것. B-프레임이 I 또는 P 프레임 다음에 오는 경우, I 또는 P 프레임을 참조로서 사용하는 움직임 벡터가 그대로 유지될 수 있고, 잔차(residual)만 변하면 된다. 이것은 전방향 움직임 벡터(forward looking motion vector)를 잔차(residual)로 변환하는 것만큼 간단할 수 있다.
또 하나의 B-프레임 다음에 오는 다른 B-프레임들에 대해, 움직임 벡터 및 그의 잔차 둘다가 수정되어야 할 것이다. 두번째 B-프레임은 이제 그 직전의 B에서 P로 새로 변환된 프레임(newly converted B to P frame immediately preceding it)을 참조해야만 한다. 먼저, B-프레임 및 그의 참조가 디코딩되고, 움직임 벡터 및 잔차가 재계산된다. 유의할 점은, 움직임 벡터를 업데이트하기 위해 프레임이 디코딩되는 동안, DCT 계수들을 재인코딩할 필요가 없다는 것이다. 이들은 그대로 유지된다. 움직임 벡터 및 잔차만이 계산되어 수정된다.
마지막 프레임 유형은 P-프레임이다. 이 프레임 유형도 역시 I-프레임과 동일한 경로를 따른다. 도 8은 영역 경계에 인접한 매크로블록들에 대한 움직임 벡터 수정을 나타낸 것이다. 영역 경계에서의 움직임 벡터들이 다른 비디오 요소들이 삽입되어질 배경 요소들에 가장 관련성있다는 것을 잘 알 것이다. 따라서, 배경 요소들의 그루밍은 애플리케이션 작성자에 의해 달성될 수 있다. 이와 유사하게, 비디오 요소가 크로핑되고(cropped) 배경 요소 내의 "빈자리(hole)"에 삽입되는 경우, 크로핑된 요소가 "빈자리" 외부의 위치들을 가리키는 움직임 벡터들을 포함할 수 있다. 비디오 요소가 크로핑되어야 하는 크기를 컨텐츠 작성자가 알고 있는 경우, 크로핑된 이미지에 대한 움직임 벡터들을 그루밍하는 것이 컨텐츠 작성자에 의해 행해질 수 있거나, 삽입될 비디오 요소가 배경 내의 "빈자리"의 크기보다 큰 경우, 그루밍이 요소 렌더러 및 MPEG 인코더와 결합하여 가상 기계에 의해 달성될 수 있다.
도 8은 배경 요소로부터 제거되어질 영역을 둘러싸고 있는 움직임 벡터들에서 발생하는 문제점들을 그래픽으로 나타낸 것이다. 도 8의 일례에서, 장면은 2개의 영역, 영역 #1(800) 및 영역 #2(820)를 포함하고 있다. 부적절한 움직임 벡터 참조의 일례가 2가지 있다. 첫번째 경우에, 영역 #1(800)(배경)에 삽입되어질 영역 #2(820)가 영역 #1(800)(배경)을 움직임에 대한 참조로서 사용한다(840). 따라서, 영역 #2에서의 움직임 벡터들이 정정되어야 한다. 부적절한 움직임 벡터 참조의 두번째 경우는 영역 #1(800)이 영역 #2(820)를 움직임에 대한 참조로서 사용하는 경우(860)에 발생한다. 그루머는 이들 부적절한 움직임 벡터 참조를 동일한 영역 내의 프레임을 사용하여 재인코딩하는 것 또는 매크로블록을 인트라코딩된 블록으로 변환하는 것에 의해 이들 부적절한 움직임 벡터 참조를 제거한다.
움직임 벡터를 업데이트하고 프레임 유형을 변경하는 것에 부가하여, 그루머는 또한 필드-기반 인코딩된 매크로블록을 프레임-기반 인코딩된 매크로블록으로 변환시킬 수 있다. 도 9는 필드-기반 인코딩된 매크로블록을 프레임-기반 인코딩된 매크로블록으로 변환하는 것을 나타낸 것이다. 참조를 위해, 프레임-기반 블록 세트(900)가 압축된다. 압축된 블록 세트(910)는 동일한 블록들에 동일한 정보를 포함하고 있지만 이제 그 정보가 압축된 형태로 포함되어 있다. 반면에, 필드-기반 매크로블록(940)도 역시 압축된다. 이것이 행해지면, 모든 짝수행(0, 2, 4, 6)은 상부 블록(0 및 1)에 배치되고, 홀수행(1, 3, 5, 7)은 하부 블록(2 및 3)에 배치된다. 압축된 필드-기반 매크로블록(950)이 프레임-기반 매크로블록(970)으로 변환될 때, 계수들이 한 블록에서 다른 블록으로 이동되어야 한다(980). 즉, 행들이 짝수 홀수보다는 번호순으로 재구성되어야 한다. 필드-기반 인코딩에서 블록들(2 및 3)에 있었던 행들(1 및 3)이 이제 각각 다시 위의 블록들(0 또는 1)로 이동된다. 그에 대응하여, 행들(4 및 6)이 블록들(0 및 1)로부터 이동되어 아래의 블록들(2 및 3)에 배치된다.
도 10은 그루밍 플랫폼의 제2 실시예를 나타낸 것이다. 모든 구성요소들이 제1 실시예와 동일하다: 그루머들(1110A) 및 스티처(1130A). 입력들도 역시 동일하다: 입력 #1(1103A), 입력 #2(1105A) 및 입력 #3(1107A)은 물론 합성된 출력(1280). 이 시스템에서의 차이점은 스티처(1140A)가 피드백을, 즉 동기화 및 프레임 유형 정보 둘다를 그루머들(1110A) 각각에 제공한다는 것이다. 동기화 및 프레임 유형 정보에 의해, 스티처(1140A)는 그루머들(1110A)이 따르는 GOP 구조를 정의할 수 있다. 이 피드백 및 GOP 구조에 의해, 그루머의 출력은 더 이상 P-프레임만이 아니며 I-프레임 및 B-프레임도 포함할 수 있다. 피드백을 갖지 않는 실시예에 대한 제한은 스티처가 어느 유형의 프레임을 작성하고 있는지를 그루머가 알지 못한다는 것이다. 스티처(1140A)로부터의 피드백을 갖는 이 제2 실시예에서, 그루머들(1110A)은 스티처가 어느 픽처 유형을 작성하고 있는지를 알 것이며 따라서 그루머들이 일치하는 프레임 유형을 제공할 것이다. 보다 많은 참조 프레임 및 기존의 프레임에 대한 보다 적은 수정과 동시에 B-프레임이 허용된 이후에 비트 레이트를 감소시키는 것으로 인해, 이것은 동일한 데이터 레이트를 가정하는 경우 화질을 향상시키며, 품질 레벨이 일정하게 유지되는 것으로 가정하는 경우 데이터 레이트를 감소시킬 수 있다.
스티처
도 11은 도 1에 도시된 스티처 등의 스티처 모듈을 구현하는 환경을 나타낸 것이다. 스티처(1200)는 서로 다른 소스들로부터 비디오 요소들을 수신한다. 미압축된 컨텐츠(1210)는, 스티처(1200)에 도착하기 전에, 도 1에 도시된 MPEG 요소 인코더 등의 인코더(1215)에서 인코딩된다. 압축된 또는 인코딩된 비디오(1220)는 인코딩될 필요가 없다. 그렇지만, 이들 경우 둘다에서 오디오(1217, 1227)와 비디오(1219, 1229)를 분리시킬 필요가 있다. 오디오는 스트림에 포함되기 위해 오디오 선택기(1230)에 피드된다. 비디오는 버퍼(1250)에 들어가기 전에 프레임 동기화 블록(1240)에 피드된다. 프레임 구성기(frame constructor)(1270)는 제어기(1275)로부터의 입력에 기초하여 버퍼들(1250)로부터 데이터를 꺼낸다. 프레임 구성기(1270)로부터의 비디오는, 오디오가 비디오와 정렬하도록 지연(1260)된 후에, 오디오와 함께 멀티플렉서(1280)에 피드된다. 멀티플렉서(1280)는 오디오 스트림과 비디오 스트림을 결합하여, 임의의 표준 디코더 상에서 재생될 수 있는 합성된, 인코딩된 출력 스트림(1290)을 출력한다. 데이터 스트림을 프로그램 또는 전송 스트림으로 멀티플렉싱하는 것이 당업자에게는 공지되어 있다. 인코딩된 비디오 소스들이 실시간이거나, 저장된 장소로부터 온 것이거나, 또는 이 둘의 조합일 수 있다. 모든 소스들이 실시간으로 도착할 필요는 없다.
도 12는 시간상에서 동기를 벗어나 있는 3개의 비디오 컨텐츠 요소들의 일례를 나타낸 것이다. 3개의 요소를 동기화시키기 위해, 요소 #1(1300)가 "앵커(anchor)" 또는 "참조(reference)" 프레임으로서 사용된다. 즉, 이는 마스터 프레임으로서 사용되고, 모든 다른 프레임들이 그에 맞춰 정렬될 것이다(이것은 단지 예시이며, 본 시스템은 들어오는 비디오 소스들 중 임의의 소스와 다른 그 자신의 마스터 프레임 참조를 가질 수 있다). 출력 프레임 타이밍(1370, 1380)이 요소 #1(1300)의 프레임 타이밍과 일치하도록 설정된다. 요소 #2(1320) 및 요소 #3(1340)은 요소 #1(1300)과 정렬되지 않는다. 따라서, 이들의 프레임 시작이 위치 지정되고, 버퍼에 저장된다. 예를 들어, 요소 #2(1320)가 한 프레임 지연되게 되고, 따라서 참조 프레임과 함께 합성되기 전에 전체 프레임이 이용가능하다. 요소 #3은 참조 프레임보다 훨씬 더 늦다. 요소 #3이 2개의 프레임에 걸쳐 수집되고 2개의 프레임에 걸쳐 제시된다. 즉, 요소 #3(1340)의 각각의 프레임은 참조 프레임의 프레임 레이트와 일치시키기 위해 2개의 연속적인 프레임 동안에 디스플레이된다. 이와 달리, 프레임(도시 생략)이 참조 프레임의 2배의 레이트로 실행되는 경우, 하나 걸러 프레임이 누락된다(도시 생략). 아마도 모든 요소들이 거의 동일한 속도로 실행되고, 따라서 동기화를 유지하기 위해 프레임이 반복되거나 누락되는 경우는 아주 드물 뿐이다.
도 13은 예시적인 합성된 비디오 프레임(1400)을 나타낸 것이다. 이 일례에서, 이 프레임은 행마다 40개 매크로블록으로 이루어져 있고(1410) 픽처마다 30개 행이 있다(1420). 이 크기는 일례로서 사용되며, 본 발명의 범위를 제한하기 위한 것이 아니다. 이 프레임은 다양한 위치들에서 합성되는 요소들(1440)을 갖는 배경(1430)을 포함하고 있다. 이 요소들(1440)은 비디오 요소, 정적 요소, 등일 수 있다. 즉, 이 프레임이 전체 배경(full background)으로 이루어져 있으며, 이 배경은 이어서 서로 다른 요소들로 대체되는 특정의 구역들을 갖는다. 이 특정의 일례는 배경 상에 합성되는 4개의 요소들을 보여주고 있다.
도 14는 픽처 내의 슬라이스들을 나타내는 화면을 보다 상세히 나타낸 것을 도시한 것이다. 동 도면은 행마다 40개의 매크로블록과 픽처마다 30개의 행으로 이루어진 픽처를 나타낸 것이다(제한하기 위한 것이 아니라 단지 예시를 위한 것임). 그렇지만, 동 도면은 또한 픽처가 슬라이스들로 나누어진 것도 나타내고 있다. 슬라이스의 크기는 전체 행(1590)(음영으로 도시됨) 또는 행 내의 몇개의 매크로블록(1580)[요소 #4(1528) 내부에 대각선을 갖는 직사각형으로 나타냄]일 수 있다. 배경(1530)은 다수의 영역으로 나누어져 있으며, 슬라이스 크기는 각각의 영역의 폭과 일치한다. 이것은 요소 #1(1522)를 살펴보면 더 잘 알 수 있다. 요소 #1(1522)은 12개 매크로블록의 폭으로 정의되어 있다. 배경(1530) 및 요소 #1(1522) 둘다에 대한 이 영역의 슬라이스 크기가 바로 그 수의 매크로블록으로 정의된다. 요소 #1(1522)는 6개의 슬라이스로 이루어져 있고, 각각의 슬라이스가 12개의 매크로블록을 포함한다. 이와 유사한 방식으로, 요소 #2(1524)는 슬라이스마다 8개의 매크로블록를 갖는 4개의 슬라이스로 이루어져 있고, 요소 #3(1526)은 슬라이스마다 23개의 매크로블록을 갖는 18개의 슬라이스로 이루어져 있으며, 요소 #4(1528)는 슬라이스마다 5개의 매크로블록을 갖는 17개의 슬라이스이다. 배경(1530) 및 요소들이 임의의 수의 슬라이스들로 이루어지도록 정의될 수 있고 슬라이스가 차례로 임의의 수의 매크로블록일 수 있다는 것은 명백하다. 이것은 픽처 및 요소들을 원하는 임의의 방식으로 배열하는 완전한 유연성을 제공한다. 비디오 프레임 내에서의 요소들의 위치 지정과 함께 각각의 요소에 대한 슬라이스 컨텐츠를 결정하는 프로세스가 AVML 파일을 사용하여 도 1의 가상 기계에 의해 결정된다.
도 15는 스티처에서 스티칭을 행하기 위해 가상 기계가 배경(1600)을 준비하는 것을 나타낸 것이다. 가상 기계는 AVML 파일에 기초하여 미압축된 배경을 수집하고 그 배경을 요소 인코더에 전달한다. 가상 기계는 요소들이 프레임 내에서 배치될 배경 내에서의 위치들을 전달한다. 도시된 바와 같이, 배경(1620)은 배경을 요소 인코더로 전달하기 전에 요소(들)이 배치될(배치되어야 할) 곳과 정확히 일치하는 빈자리(들)를 갖는 특정의 슬라이스 구성으로 가상 기계에 의해 나누어진다. 이 인코더는 요소(들)이 배치될 "빈자리" 또는 "빈자리들"을 남겨두고 배경을 압축한다. 이 인코더는 압축된 배경을 메모리로 전달한다. 이어서, 가상 기계는 메모리에 액세스하여 장면에 대한 각각의 요소를 검색하고 인코딩된 요소들을, 요소들 각각에 대한 각각의 슬라이스의 위치들의 목록과 함께, 스티처로 전달한다. 스티처는 슬라이스들 각각을 받아서 그 슬라이스들을 적절한 위치에 배치한다.
이 특정의 유형의 인코딩을 "슬라이스 기반 인코딩(slice based encoding)"이라고 한다. 슬라이스-기반 인코더/가상 기계는 출력 프레임의 원하는 슬라이스 구조를 알고 있고 적절히 그의 인코딩을 수행하는 기계이다. 즉, 이 인코더는 슬라이스들의 크기 및 그 슬라이스들이 어디에 속하는지를 알고 있다. 이 인코더는 필요한 경우 어디에 빈자리들을 남겨둘지를 알고 있다. 원하는 출력 슬라이스 구성을 알고 있음으로써, 가상 기계는 용이하게 스티칭되는 출력을 제공한다.
도 16은 배경 요소가 압축된 후의 합성 프로세스를 나타낸 것이다. 배경 요소(1700)는 요소(1740)가 배치될 빈자리와 함께 7개의 슬라이스들로 압축되었다. 합성 이미지(1780)는 배경 요소(1700) 및 요소(1740)를 결합시킨 결과를 나타낸 것이다. 합성 비디오 프레임(1780)은 삽입된 슬라이스들을 음영으로(in grey) 나타내고 있다. 동 도면이 하나의 요소가 배경 상에 합성되는 것을 나타내고 있지만, 사용자의 디스플레이 상에 적합하게 들어갈 임의의 수의 요소들을 합성하는 것이 가능하다. 게다가, 배경 또는 요소에 대한 행마다의 슬라이스들의 수가 도시된 것보다 더 많을 수 있다. 배경 및 요소들의 슬라이스 시작 지점과 슬라이스 종료 지점이 일치해야만 한다.
도 17은 배경 요소(1800)(24 픽셀 x 24 픽셀)와 부가의 비디오 컨텐츠 요소(1840)(16 픽셀 x 16 픽셀) 간의 서로 다른 매크로블록 크기들을 나타낸 도면이다. 합성된 비디오 프레임(1880)은 2가지 경우를 나타내고 있다. 수평에서는, 배경(1800)이 24 픽셀/블록 x 4개의 블록 = 96 픽셀의 폭이고 비디오 컨텐츠 요소(1840)가 16 픽셀/블록 * 6개의 블록 = 96 픽셀의 폭이기 때문에 픽셀들이 정렬한다. 그렇지만, 수직에서는, 차이가 있다. 배경(1800)은 24 픽셀/블록 * 3개의 블록 = 72 픽셀의 높이이다. 요소(1840)는 16 픽셀/블록 * 4개의 블록 = 64 픽셀의 높이이다. 이것은 8 픽셀의 수직 간극(1860)을 남긴다. 스티처는 이러한 차이들을 알고 있고 그 요소 또는 배경을 외삽하여 그 간극을 채울 수 있다. 또한, 어두운 또는 밝은 경계 영역이 있도록 간극을 남겨둘 수 있다. 이 일례가 24x24 및 16x16의 매크로블록 크기를 사용하고 있지만, 매크로블록 크기들의 임의의 조합이 용인될 수 있다. DCT-기반 압축 포맷들은 본 발명의 의도된 범위를 벗어나지 않으면서 16x16 이외의 크기의 매크로블록에 의존할 수 있다. 이와 유사하게, DCT-기반 압축 포맷은 또한 본 발명의 의도된 범위를 벗어나지 않으면서 시간 예측을 위해 가변 크기의 매크로블록에 의존할 수 있다. 마지막으로, 컨텐츠의 주파수 영역 표현은 또한 본 발명의 의도된 범위를 벗어나지 않으면서 다른 푸리에 관련 변환을 사용하여 달성될 수 있다.
또한, 합성된 비디오 프레임에 중첩(overlap)이 있을 수 있다. 다시 도 17을 참조하면, 요소(1840)는 4개의 슬라이스로 이루어져 있었다. 이 요소가 실제로 5개의 슬라이스인 경우, 이 요소는 합성된 비디오 프레임(1880)에서 배경 요소(1800)와 중첩하게 된다. 이 충돌을 해결하는 다수의 방식이 있으며, 가장 쉬운 방식은 그 요소의 4개의 슬라이스만을 합성하고 5번째 슬라이스를 누락시키는 것이다. 또한, 5번째 슬라이스를 배경 행에 합성시키는 것, 충돌하는 배경 행을 슬라이스들로 나누는 것, 5번째 요소 슬라이스와 충돌하는 배경 슬라이스를 제거하는 것(이어서 임의의 간극을 채우기 위해 어쩌면 6번째 요소 슬라이스를 추가하는 것)도 가능하다.
서로 다른 슬라이스 크기들이 있는 경우, 합성 함수(compositing function)가 들어오는 배경 및 비디오 요소들이 적당한지를 확인하기 위해 이들에 대해 검사를 수행해야 한다. 즉, 각각의 요소가 완전한 것(예를 들어, 전체 프레임)인지, 크기 충돌이 없는지, 등을 확인한다.
도 18은 프레임의 요소들을 나타낸 도면이다. 간단한 합성된 픽처(1900)는 요소(1910) 및 배경 요소(1920)로 이루어져 있다. 요청된 장면에 대한 비디오 프레임의 작성을 제어하기 위해, 스티처는 가상 기계에 의해 제공되는 각각의 요소에 대한 위치 정보에 기초하여 데이터 구조(1940)를 작성한다. 데이터 구조(1940)는 매크로블록이 몇개인지 및 매크로블록이 어디에 위치하는 지를 기술하는 연결 리스트(linked list)를 포함한다. 예를 들어, 데이터 행 1(1943)은 스티처가 배경에 대한 버퍼인 버퍼 B로부터 40개의 매크로블록을 받아야 하는 것을 나타낸다. 데이터 행 2(1945)은 버퍼 B로부터 12개의 매크로블록을 받고, 이어서 버퍼 E[요소(1910)에 대한 버퍼]로부터 8개의 매크로블록을 받으며, 이어서 버퍼 B로부터 20개의 매크로블록을 받아야 한다. 이것은 아래로 마지막 행(1947)까지 계속되며, 이 때 스티처는 이 데이터 구조를 사용하여 버퍼 B로부터 40개의 매크로블록을 받는다. 버퍼 구조(1970)는 각각의 배경 또는 요소에 대한 개별적인 구역들을 갖는다. B 버퍼(1973)는 B 매크로블록들에 스티칭하기 위한 모든 정보를 포함한다. E 버퍼(1975)는 E 매크로블록들에 스티칭하기 위한 정보를 포함한다.
도 19는 다수의 인코딩된 요소들로부터 픽처를 작성하는 프로세스를 나타낸 플로우차트이다. 시퀀스(2000)는 비디오 프레임 합성(2010)을 시작하는 것으로 시작한다. 먼저, 프레임들이 동기화되고(2015), 이어서 각각의 행(2020)이 적절한 슬라이스를 가져오기(grab)하는 것(2030)에 의해 작성된다. 이 슬라이스는 이어서 삽입되고(2040), 본 시스템은 그 슬라이스가 행의 끝인지(2050)를 알기 위해 검사한다. 그렇지 않은 경우, 이 프로세스는 행의 끝(2050)에 도달할 때까지 "다음 슬라이스를 가져옴" 블록(2030)으로 다시 간다. 그 행이 완료된 경우, 본 시스템은 그 행이 프레임의 끝인지(2080)를 알기 위해 검사한다. 그렇지 않은 경우, 이 프로세스는 "각각의 행에 대해"(2020) 블록으로 다시 간다. 그 프레임이 완료된 경우, 본 시스템은 그 프레임이 장면에 대한 시퀀스의 끝인지(2090)를 알기 위해 검사한다. 그렇지 않은 경우, 이 프로세스는 "프레임을 작성함"(2010) 단계로 다시 간다. 그러한 경우, 장면에 대한 비디오 프레임들의 시퀀스 또는 프레임이 완성된다(2090). 그렇지 않은 경우, 이 프로세스는 프레임 작성 프로세스를 반복한다. 시퀀스의 끝(2090)에 도달한 경우, 장면이 완성되며, 이 프로세스가 종료되거나, 이 프로세스가 또 하나의 프레임의 작성을 시작할 수 있다.
프레임 포맷에 관한 스티처 개량 정보(stitcher advance information)를 제공함으로써 스티처의 성능이 개선될 수 있다(보다 적은 프로세서 파워로 프레임들을 더 빠르게 작성할 수 있다). 예를 들어, 가상 기계는 삽입될 프레임 내의 구역들의 시작 위치 및 크기를 스티처에 제공할 수 있다. 다른 대안으로서, 이 정보는 각각의 슬라이스에 대한 시작 위치일 수 있고, 이어서 스티처는 그 크기(2개의 시작 위치들 사이의 차이)를 알 수 있다. 이 정보는 가상 기계에 의해 외부로 제공될 수 있거나, 가상 기계가 그 정보를 각각의 요소에 포함시킬 수 있다. 예를 들어, 슬라이스 헤더의 일부가 이 정보를 전달하는 데 사용될 수 있다. 스티처는 프레임 구조에 대한 이 사전 지식을 사용하여 그 요소들이 요구되기 전에 그 요소들을 서로 합성하기 시작할 수 있다.
도 20은 본 시스템에 관한 추가적인 개선을 나타낸 것이다. 그루머 섹션에서 앞서 설명한 바와 같이, 그래픽 비디오 요소들이 그루밍됨으로써, 이미 압축되어 있고 함께 스티칭되기 위해 디코딩될 필요가 없는 스티칭가능한 요소들을 제공할 수 있다. 도 20에서, 프레임은 다수의 인코딩된 슬라이스들(2100)을 갖는다. 각각의 슬라이스는 전체 행이다(이것은 단지 일례로서 사용되고, 행들이 그루밍 이전에 다수의 슬라이스들로 이루어져 있을 수 있다). 가상 기계는, AVML 파일과 협력하여, 특정 크기의 요소(2140)가 합성된 비디오 프레임 내의 특정의 위치에 배치되어야 한다고 판정한다. 그루머는 들어오는 배경(2100)을 처리하고, 전체-행의 인코딩된 슬라이스들을 원하는 요소(2140) 위치의 주변에 및 그 위치 내에 있는 구역들과 일치하는 보다 작은 슬라이스들로 변환한다. 그 결과의 그루밍된 비디오 프레임(2180)은 원하는 요소(2140)와 일치하는 슬라이스 구성을 갖는다. 스티처는 이어서 그루밍된 프레임(2180)으로부터 #3 및 #6을 제외한 모든 슬라이스들을 선택함으로써 스트림을 작성한다. 그 슬라이스들 대신에, 스티처는 요소(2140) 슬라이스들을 가져오고 이들을 그 대신에 사용한다. 이와 같이, 배경이 압축된 영역(compressed domain)을 결코 남기지 않으며, 본 시스템은 여전히 요소(2140)를 프레임 내에 합성할 수 있다.
도 21은 합성될 요소를 정의하는 데 이용가능한 유연성을 나타낸 것이다. 요소들은 서로 다른 형상 및 크기를 가질 수 있다. 요소들이 인접하여 존재할 필요가 없고, 실제로, 하나의 요소가 배경에 의해 분리되어 있는 다수의 이미지들로부터 형성될 수 있다. 동 도면은 하나의 요소(2210)(백색 구역들)가 그 위에 합성되어 있는 배경 요소(2230)(음영 처리된 구역들)를 나타낸다. 동 도면에서, 합성된 요소(2210)는, 천이되고 서로 다른 크기들인 구역들을 가지며, 심지어 그 요소의 다수의 부분들이 하나의 행에 있는 경우도 있다. 스티처는 디스플레이를 생성하는 데 다수의 요소들이 사용된 것처럼 이 스티칭을 수행할 수 있다. 프레임에 대한 슬라이스들은 연속하여 S1 - S45로 표시되어 있다. 이들은 요소가 배치될 슬라이스 위치들을 포함한다. 요소는 또한 ES1 - ES14의 번호가 매겨져 있는 그의 슬라이스를 갖는다. 요소 슬라이스들이, 비록 하나의 요소 파일로부터 가져온 것일지라도, 원하는 경우 배경에 배치될 수 있다.
요소 슬라이스들에 대한 소스가 다수의 옵션들 중 어느 하나일 수 있다. 소스가 실시간 인코딩된 소스로부터 온 것일 수 있다. 소스가 서로 다른 슬라이스들(하나는 배경을 갖고 다른 하나는 텍스트를 가짐)로부터 작성되는 복합 슬라이스(complex slice)일 수 있다. 소스가 캐쉬로부터 가져오는 사전-인코딩된 요소일 수 있다. 이 일례들은 단지 예시를 위한 것에 불과하며, 요소 소스들에 대한 옵션들을 제한하기 위한 것이 아니다.
도 22는 선형 방송 컨텐츠를 그루밍하는 그루머(2340)를 사용하는 일 실시예를 나타낸 것이다. 컨텐츠가 그루머(2340)에 의해 실시간으로 수신된다. 컨텐츠가 용이하게 함께 스티칭될 수 있도록 각각의 채널이 그루머(2340)에 의해 그루밍된다. 도 22의 그루머(2340)는 선형 방송 채널들 전부를 그루밍하는 복수의 그루머 모듈들을 포함할 수 있다. 그루밍된 채널들은 이어서 애플리케이션들에서 사용하기 위해 하나 이상의 처리 사무소들(2310, 2320, 2330) 및 처리 사무소들 각각 내의 하나 이상의 가상 기계들로 멀티캐스트될 수 있다. 도시된 바와 같이, 클라이언트 장치들은 선형 방송 소스들의 모자이크(2350) 및/또는 클라이언트에 의해 선택되는 기타 그루밍된 컨텐츠를 수신하도록 애플리케이션에 요청한다. 모자이크(2350)는 도 23에 도시된 바와 같이 복수의 소스들(2371-2376)을 동시에 볼 수 있게 해주는 배경 프레임(2360)을 포함하는 장면이다. 예를 들어, 사용자가 시청하고자 하는 다수의 스포츠 행사들이 있는 경우, 사용자는 모자이크 내에서 동시에 보기 위해 스포츠 행사들을 전달하는 채널들 각각을 요청할 수 있다. 사용자는 심지어 MPEG 객체(편집)(2380)를 선택하고 이어서 디스플레이될 원하는 컨텐츠 소스들을 편집할 수 있다. 예를 들어, 그루밍된 컨텐츠가 선형/라이브 방송들로부터 또한 다른 비디오 컨텐츠(즉, 영화, 사전-녹화된 컨텐츠, 등)로부터 선택될 수 있다. 모자이크는 심지어 사용자-선택 재료 및 광고 등의 처리 사무소/세션 처리기에 의해 제공된 재료 둘다를 포함할 수 있다. 도 22에 도시된 바와 같이, 클라이언트 장치들(2301-2305) 각각은 채널 1을 포함하는 모자이크를 요청한다. 따라서, 채널 1에 대한 멀티캐스트 그루밍된 컨텐츠가 서로 다른 가상 기계들 및 서로 다른 처리 사무소들에서 개인화된 모자이크를 작성하는 데 사용된다.
클라이언트 장치가 모자이크 애플리케이션에 대한 요청을 전송할 때, 클라이언트 장치와 연관된 처리 사무소는 요청된 모자이크 애플리케이션을 위한 클라이언트 장치의 프로세서/가상 기계를 할당한다. 할당된 가상 기계는 스티처를 사용하여 원하는 채널들로부터 그루밍된 컨텐츠를 합성함으로써 개인화된 모자이크를 작성한다. 가상 기계는 클라이언트가 요청한 채널들의 모자이크를 갖는 MPEG 스트림을 클라이언트 장치로 전송한다. 따라서, 컨텐츠가 함께 스티칭될 수 있도록 컨텐츠를 먼저 그루밍함으로써, 모자이크를 생성하는 가상 기계는 원하는 채널을 먼저 디코딩하고 그 채널들을 배경 내에 비트맵으로서 렌더링한 다음에 그 비트맵을 인코딩할 필요가 없다.
클라이언트 장치와 연관된 디스플레이 상에 애플리케이션을 디스플레이하기 위해, 모자이크 등의 애플리케이션이 클라이언트 장치를 통해 직접 또는 PC 등의 다른 장치를 통해 간접적으로 요청될 수 있다. 사용자가 사용자의 계정에 관한 정보를 제공함으로써 처리 사무소와 연관된 웹 사이트에 로그인할 수 있다. 처리 사무소와 연관된 서버는 애플리케이션을 선택하기 위한 선택 화면을 사용자에게 제공할 것이다. 사용자가 모자이크 애플리케이션을 선택한 경우, 서버는 사용자가 모자이크 내에서 보고자 하는 컨텐츠를 선택할 수 있게 해준다. 모자이크에 대한 선택된 컨텐츠에 응답하여 사용자의 계정 정보를 사용하여, 처리 사무소 서버는 그 요청을 세션 처리기로 보내고 사용자의 클라이언트 장치와의 대화형 세션을 설정한다. 세션 처리기는 이어서 처리 사무소 서버에 의해 원하는 애플리케이션을 통보받을 것이다. 세션 처리기는 원하는 애플리케이션(이 일례에서, 모자이크 애플리케이션)을 검색하고 요구된 MPEG 객체들을 획득할 것이다. 처리 사무소 서버는 이어서 요청된 비디오 컨텐츠를 세션 처리기에 알려주며, 세션 처리기는 스티처와 함께 동작하여 모자이크를 작성하고 그 모자이크를 MPEG 비디오 스트림으로서 클라이언트 장치에 제공할 것이다. 따라서, 처리 사무소 서버는 대화형 세션을 설정할 때, 애플리케이션을 요청할 때 및 디스플레이하기 위한 컨텐츠를 선택할 때 클라이언트 장치의 기능들을 수행하는 스크립트 또는 애플리케이션을 포함하고 있을 수 있다. 모자이크 요소들이 애플리케이션에 의해 사전 결정될 수 있지만, 모자이크 요소들은 또한 사용자 구성가능할 수 있으며 그 결과 개인화된 모자이크가 얻어질 수 있다.
도 24는 IP-기반 컨텐츠 배달 시스템의 도면이다. 이 시스템에서, 컨텐츠가 방송 소스(2400), 컨텐츠 제공자(2410)에 의해 피드된 프록시 캐쉬(2415), 구성 및 관리 파일(2420)을 포함하는 NAS(Network Attached Storage)(2425), 또는 기타 소스들(도시 생략)로부터 온 것일 수 있다. 예를 들어, NAS는 컨텐츠의 위치에 관한 정보를 제공하는 자산 메타데이터(asset metadata)를 포함할 수 있다. 이 컨텐츠는 부하 분산 스위치(load balancing switch)(2450)를 통해 이용가능할 수 있다. 블레이드 세션(BladeSession) 처리기/가상 기계(2460)는 컨텐츠를 배달할 준비를 하기 위해 컨텐츠에 대해 서로 다른 처리 기능들을 수행할 수 있다. 컨텐츠가 셋톱 박스(2490) 등의 클라이언트 장치를 통해 사용자에 의해 요청된다. 이 요청은 제어기(2430)에 의해 처리되고, 이 제어기(2430)는 이어서 이 컨텐츠를 제공하는 리소스들 및 경로를 구성한다. 클라이언트 장치(2490)는 컨텐츠를 수신하여 사용자의 디스플레이(2495) 상에 제시한다.
도 24a는 방송 비디오 프로그램 섹션(2401A)과 또한 광고 섹션(2402A) 둘다를 포함하는 텔레비전 화면(2400A)을 나타낸 것이다. 처리 사무소에 있는 할당된 프로세서와 클라이언트 장치(2810)(도 28) 간의 대화형 세션은 도시된 화면을 제시하기 전에 이미 설정되어 있다. 클라이언트 장치(2810)의 입력(2805)과 할당된 프로세서 간의 핸드쉐이크의 일부로서, 할당된 프로세서는 대화형 세션을 나타내는 MPEG 전송 스트림으로부터 디코딩할 기본 스트림 번호(elementary stream number)를 클라이언트 장치에 알려준다. 방송 비디오 프로그램 섹션(2401A) 및 광고 섹션(2402A) 둘다는 MPEG 객체들의 MPEG 요소들이다. 본 실시예에서, 도시된 바와 같이, 광고(2402A)는 버튼 MPEG 객체(2403A)인 MPEG 객체의 선택가능한 MPEG 요소를 포함한다. 비디오 프로그램을 시청하는 동안, 사용자는 리모콘 등의 입력 장치(2410A)(2820)를 사용하여 버튼 MPEG 객체(2403A)를 선택할 수 있다. 버튼 MPEG 객체(2403A)가 활성화될 때, 대화형 세션에 대한 요청 신호가 클라이언트 장치(2810)를 통해 처리 사무소에 있는 할당된 프로세서로 업스트림 전송된다. 처리 사무소에 있는 할당된 프로세서는 MPEG 객체에 관한 상태 정보를 유지하고 그 객체에 대해 연관된 프로그램 코드를 실행한다. 수신된 요청 신호에 응답하여, 할당된 프로세서는 다수의 MPEG 객체들로 이루어진 사전 정의된 MPEG 페이지 등의 대화형 컨텐츠를 검색하게 하는 연관된 컴퓨터 코드를 실행한다.
예를 들어, 사용자가 "ABC 카펫(ABC Carpets)"에 대한 광고와 연관된 버튼 객체를 활성화시키면, 클라이언트 장치는 요청 신호를 처리 사무소에 있는 할당된 프로세서로 전송할 것이다. 그에 응답하여, 처리 사무소에 있는 할당된 프로세서 또는 다른 프로세서는 활성화 신호에 기초하여 버튼 객체와 연관된 코드를 실행할 것이다. 처리 사무소에 있는 할당된 프로세서 또는 다른 프로세서는 대화형 컨텐츠를 획득할 것이다. 대화형 컨텐츠는 도 24b에 도시된 바와 같이 "ABC 카펫"과 연관될 것이다. 대화형 세션에 할당된 프로세서는 (즉, 방송 컨텐츠를 클라이언트 장치에 의해 디코딩될 MPEG 기본 스트림에 포함시키지 않음으로써) 방송 컨텐츠로부터 튜닝 어웨이(tune away)되고 방송 컨텐츠를 갖지 않는 대화형 컨텐츠를 포함하는 새로운 MPEG 비디오 기본 스트림을 생성할 것이다. 할당된 프로세서는 클라이언트 장치(2810)와 통신을 하고, 대화형 컨텐츠를 포함하는, 클라이언트 장치가 디코딩해야 하는 MPEG 기본 스트림의 식별 번호를 클라이언트 장치(2810)에 알려준다. 대화형 컨텐츠는 MPEG 전송 스트림의 일부로서 클라이언트 장치들로 전송된다. 클라이언트 장치(2810)는 스트림 식별자에 따라 대화형 컨텐츠를 디코딩하여 디스플레이한다. 그에 부가하여, 처리 사무소는 방송 컨텐츠를 별도의 MPEG 기본 스트림으로 클라이언트 장치로 전송한다. 방송 비디오 프로그램은 이어서 클라이언트 장치에 위치하는 DVR 모듈(digital video recording module)(2830)에 의해 녹화된다. 요청 신호에 응답하여, 클라이언트 장치 내의 처리 모듈은 DVR(digital video recorder)(2830)로 하여금 사용자가 이전에 보고 있던 중인 비디오 프로그램을 녹화하기 시작하게 한다. DVR(2830)은 클라이언트 장치 내에 또는 클라이언트 장치 및 사용자의 텔레비전(2840)과 통신하고 있는 별도의 독립형 장치로서 배치될 수 있다.
처리 사무소는, 대화형 컨텐츠에 액세스하기 위해 사용자가 전송한 요청 신호에 응답하여, DVR 모듈(2830)과의 통신을 설정하여 DVR(2830)로 하여금 녹화를 시작하게 한다. 예를 들어, DVR(2830)은 2개의 개별적인 튜너를 포함할 수 있고, 제1 튜너는 대화형 채널(예를 들어, 제1 MPEG 기본 스트림 번호)에 튜닝하여 대화형 세션을 설정하는 반면, 제2 튜너는 방송 비디오 프로그램(예를 들어, 제2 MPEG 기본 스트림 번호)에 튜닝하여 방송 비디오 프로그램을 녹화한다. 당업자라면 DVR(2830)이 제1 튜너를 사용하여 방송 비디오 프로그램을 수신하고 있고 이어서 제2 튜너를 녹화를 위한 방송 비디오 프로그램에 대한 채널에 튜닝하면서 제1 튜너를 대화형 채널로 전환시킬 수 있다는 것을 잘 알 것이다. 대안의 실시예들에서, DVR(2830)은 클라이언트 장치로부터의 대화형 컨텐츠에 대한 요청을 전송한 것에 응답하여 또는 클라이언트 장치(2810)가 대화형 컨텐츠를 수신할 때 녹화를 시작할 수 있다.
사용자가 "ABC Carpets"과 연관된 대화형 컨텐츠를 보는 것을 마쳤을 때, 사용자는 입력 장치(2820)를 사용하여 "종료(end)" 또는 "복귀(return)" 신호를 클라이언트 장치(2810)로 전송할 것이다. 클라이언트 장치(2810)는 DVR(digital video recorder)(2830)과 통신을 하게 되고 DVR(2830)로 하여금 사용자가 선택가능 컨텐츠를 선택했던 프로그램 내의 시간 위치로부터 방송 비디오 프로그램의 재생을 시작하게 한다. 다른 실시예들에서, 대화형 컨텐츠는 정해진 끝을 가질 수 있고, 그 끝에 도달할 때, 처리 사무소는 DVR로 하여금 사용자가 대화형 컨텐츠로 전환했던 지점에서 방송 비디오 프로그램의 재생을 시작하게 하는 신호를 클라이언트 장치에 있는 DVR로 전송할 수 있다. 도 24c는 대화형 세션이 종료되고 DVR이 재생을 시작한 후의 방송 비디오 컨텐츠를 나타낸다. 도시된 바와 같이, 선택가능 컨텐츠가 더 이상 디스플레이 상에 제시되지 않는다. 다른 실시예들에서, 동일하거나 다른 선택가능 컨텐츠가 디스플레이 장치 상에 디스플레이될 수 있다.
다른 실시예들에서, 대화형 세션에 대한 할당된 프로세서는, 사용자측에서의 비활동으로 인해, DVR로 하여금 녹화된 방송 프로그램의 재생을 시작하게 하는 신호를 클라이언트 장치로 전송할 수 있다. 따라서, 프로세서는 클라이언트 장치로부터 전송된 신호들 간의 시간 길이를 측정하여 DVR로 하여금 녹화된 방송 컨텐츠의 재생을 시작하게 하거나 현재 스트리밍되고 있는 방송 컨텐츠가 클라이언트 장치에 제시되게 하는 타이머를 포함할 수 있다. 사용자는 또한 사용자의 리모콘을 사용하여 채널을 변경함으로써 대화형 세션을 종료시킬 수 있다. 채널을 변경함으로써, 프로세서와의 대화형 세션이 종료될 것이고, 클라이언트 장치가 선택된 채널과 연관된 방송 컨텐츠를 제공받을 것이다.
비디오 프로그램과 조합하여 나타낸 선택가능 컨텐츠가 광고일 필요가 없다는 것을 잘 알 것이다. 예를 들어, 야구 경기 동안에, 통계가 사용자에게 제공될 수 있고, 사용자가 특정의 선수를 선택하면, 사용자는 선택된 선수에 관한 대화형 컨텐츠를 제시받을 수 있다. 그에 부가하여, 선택가능 컨텐츠가 항상 제시되어야 하는 것은 아니다. 선택가능 컨텐츠가 비디오 프로그램의 컨텐츠에 따라 제공될 수 있다. 선택가능 컨텐츠가 야구 경기에서 누가 타석에 있느냐 또는 주택 개량 프로그램 동안에 사용되고 있는 제품들에 따라 변할 수 있다.
다른 실시예에서, 방송 비디오 프로그램만이 사용자의 텔레비전 상에 디스플레이된다. 방송 동안에, 광고가 비디오 프로그램 컨텐츠에 삽입된다. 사용자는 입력 장치를 사용하여 광고를 클릭할 수 있다. 비디오 스트림 내에서, 선택된 광고의 표지(indicia)를 갖는 식별자가 헤더 내에 있을 수 있다. 클라이언트 장치는 광고의 표지를 검색하여 그 표지를 처리 사무소로 전송할 수 있다. 클라이언트 장치는 클라이언트 장치의 일부인 MPEG 디코더 칩 내의 전송 스트림 디코더를 사용하여 전송 스트림 메타데이터를 판독한다. 이 데이터는 이어서 그 스트림으로부터 파싱되어, 할당된 프로세서로 메시지 형태로 보내질 수 있다.
이 실시예에서, 사용자가 채널을 변경하고 클라이언트 장치에 의해 대화형 컨텐츠로서 식별될 수 있는 기본 스트림에 삽입된 광고 또는 기타 컨텐츠를 포함하는 MPEG 기본 스트림에 액세스할 때마다, 대화형 세션이 시작될 수 있다. 처리 사무소는 광고를 식별한다. 광고에 바로 인접한 때에 나오는 메타데이터 컨텐츠는 대화형 광고가 MPEG 스트림 내에 존재한다는 클라이언트 장치에 대한 표지일 수 있다.
그에 부가하여, MPEG 스트림의 데이터 섹션을 갖는 식별가능한 데이터 패턴이 광고가 대화형인 것을 인식하는 데 사용될 수 있다. 처리 사무소는 클라이언트 장치로부터 전송되는 표지 및 검색되어야만 하는 대화형 컨텐츠에 관한 정보(대화형 컨텐츠의 주소 등)를 갖는 탐색 테이블을 포함할 수 있다. 광고를 식별한 것에 응답하여, 처리 사무소는 광고와 연관된 대화형 컨텐츠를 검색한다.
그에 부가하여, 처리 사무소는 DVR 모듈로 하여금 방송 비디오 프로그램을 녹화하기 시작하게 한다. 다시 말하자면 이전과 같이, 클라이언트 장치에 있는 DVR은, 광고의 표지를 처리 사무소로 전송하는 것에 의해, 방송 비디오 프로그램의 녹화를 시작하는 처리 사무소로부터의 별도의 신호를 처리 사무소로부터 수신하는 것에 의해, 또는 처리 사무소로부터 대화형 컨텐츠를 수신할 시에 활성화될 수 있다. 처리 사무소는 대화형 컨텐츠를 클라이언트 장치 내의 디코더와 호환되는 포맷(MPEG-2, MPEG-4, 기타 등등)으로 클라이언트 장치로 전송한다.
대화형 컨텐츠가 디코딩되어, 방송 비디오 프로그램 대신에 사용자의 텔레비전 상에 디스플레이된다. 사용자가 키(예를 들어, 종료 또는 뒤로 키)를 누름으로써 대화형 컨텐츠를 종료시켰을 때, 키 누름을 나타내는 신호가 클라이언트 장치로 전송된다. 클라이언트 장치는 DVR로 하여금 녹화된 방송 비디오 프로그램을 사용자의 텔레비전으로 전송하기 시작하게 하는 것으로 응답을 한다. 클라이언트 장치는 녹화된 방송 비디오 컨텐츠를 디코딩하고, 비디오 컨텐츠가 사용자의 텔레비전 상에 디스플레이된다. 처리 사무소는 또한 대화형 비디오 컨텐츠를 사용자의 클라이언트 장치로 전송하는 것을 중단한다.
도 24d는 사용자가 방송 비디오 프로그램과 관련하여 디스플레이되는 대화형 컨텐츠에 대한 액세스를 요청하는 경우, 비디오 프로그램이 자동으로 녹화될 때 행해지는 단계들의 플로우차트를 나타낸 것이다. 클라이언트 장치는 먼저 처리 사무소로부터 사용자-선택 방송 비디오 프로그램을 수신한다(2400D). 방송 비디오 프로그램은 연관된 선택가능 재료를 포함한다. 선택가능 재료는 MPEG 객체들의 하나 이상의 그래픽 요소 또는 방송 비디오 프로그램 내의 광고일 수 있다. 클라이언트 장치는 방송 비디오 프로그램을 선택가능 컨텐츠와 함께 사용자의 텔레비전에 제공한다(2410D). 사용자는, 입력 장치를 사용하여, 선택가능 재료를 선택한다. 이것은 클라이언트 장치로 하여금 선택가능 재료에 관계된 대화형 컨텐츠를 요청하는 신호를 처리 사무소로 전송하게 한다(2420D). 대화형 컨텐츠는 선택가능 재료와 컨텐츠-기반 관계를 갖는 사전 정의된 애플리케이션이다.
처리 사무소는 대화형 컨텐츠를 클라이언트 장치로 전송한다(2430D). 대화형 컨텐츠는 표준 MPEG 디코더에 의해 디코딩될 수 있는 MPEG 비디오 스트림의 형태로 되어 있을 수 있다. 대화형 컨텐츠를 수신한 것에 응답하여, 클라이언트 장치는 현재 디스플레이되는 비디오 프로그램이 녹화되게 한다(2440D). 클라이언트 장치는 비디오 프로그램을 녹화하기 위해 로컬 DVR을 활성화시킬 수 있거나, 클라이언트 장치는 사용자의 텔레비전 상에 디스플레이되고 있는 비디오 프로그램이 녹화되어야 한다는 것을 처리 사무소에 알려주는 신호를 처리 사무소로 전송할 수 있다. 방송 비디오 프로그램이 녹화되어야 한다는 것을 알려주기 위해 클라이언트 장치에 의해 처리 사무소로 전송된 신호가 대화형 컨텐츠를 요청하는 바로 그 신호일 수 있다는 것을 잘 알 것이다.
비디오 프로그램이 대화형 컨텐츠로 대체된다(2450D). 일 실시예에서, 클라이언트 장치가 비디오 프로그램을 텔레비전에 결합된 출력으로보다는 비디오 레코더로 보낸다. 다른 실시예들에서, 처리 사무소는 방송 비디오 프로그램을 클라이언트 장치로 전송하는 것을 중단하고 그 대신에 대화형 컨텐츠를 전송한다. 대화형 컨텐츠가 이어서 사용자의 텔레비전 상에 디스플레이된다(2460D). 사용자는 이어서 컨텐츠와 상호작용할 수 있고, 처리 사무소는 대화형 컨텐츠 내의 MPEG 객체들의 선택된 그래픽 요소들과 연관되어 있는 컴퓨터 명령어들 중 임의의 명령어들을 실행할 것이다. 사용자가 대화형 컨텐츠와 상호작용하는 것을 완료한 후에, 사용자는 비디오 프로그램으로 복귀할 수 있다. 사용자는 복귀하고자 한다는 것을 신호하거나, 도 24e의 플로우차트에 도시된 바와 같이, 2470E일 때에 대화형 컨텐츠가 종료에 도달한다. 그에 응답하여, 클라이언트 장치는 대화형 컨텐츠를 출력하는 것과 DVR의 출력을 사용자의 텔레비전과 결합시키는 것 사이에서 전환된다(2480E). 게다가, 그에 응답하여, 클라이언트 장치는 방송 비디오 프로그램이 정지되었던 시간 지점에서 비디오 프로그램의 재생을 시작하라고 DVR에 신호한다(2490E). 사용자가 방송 비디오 프로그램으로 복귀할 때, 선택가능 컨텐츠를 갖거나 갖지 않는 비디오 프로그램이 디스플레이될 수 있다. 사용자는 사용자 입력 장치를 사용하여 종료/복귀(exit/return) 버튼을 선택하는 것에 의해 비디오 프로그램이 복귀되게 한다. 이 신호는 클라이언트 장치로 전송되고, 클라이언트 장치가 녹화된 재료의 재생을 시작하기 위해 DVR과 통신한다.
도 25는 케이블-기반 컨텐츠 배달 시스템의 도면을 제공한다. 구성요소들 중 다수가 동일하다: 제어기(2530), 방송 소스(2500), 프록시 캐쉬(2515)를 통해 컨텐츠를 제공하는 컨텐츠 제공자(2510), 파일 서버 NAS(2525)를 통한 구성 및 관리 파일(2520), 세션 처리기(2560), 부하 분산 스위치(2550), 셋톱 박스(2590) 등의 클라이언트 장치, 및 디스플레이(2595). 그렇지만, 또한, 서로 다른 물리 매체로 인해 요구되는 다수의 부가적인 장비들이 있다. 이 경우에, 부가된 리소스들로는 QAM 변조기(2575), 복귀 경로 수신기(2570), 결합기(combiner) 및 다이플렉서(diplexer)(2580), 및 SRM(Session and Resource Manager)(2540)이 있다. QAM 업컨버터(2575)는 데이터(컨텐츠)를 사용자에게 다운스트림 전송하기 위해 필요하다. 이 변조기들은 데이터를 사용자에까지 뻗어 있는 동축 케이블을 통해 전달될 수 있는 형태로 변환한다. 그에 대응하여, 복귀 경로 수신기(2570)는 또한 셋톱 박스(2590)로부터 케이블을 따라 올라오는 데이터를 복조하는 데도 사용된다. 결합기 및 다이플렉서(2580)는 다운스트림 QAM 채널들을 결합시키고 업스트림 복귀 채널을 분할하는 수동 장치이다. SRM은 QAM 변조기들이 어떻게 구성되고 할당되는지 및 스트림들이 클라이언트 장치로 어떻게 라우팅되는지를 제어하는 엔터티이다.
이 부가적인 리소스들은 시스템의 비용을 증가시킨다. 그 결과, IP 네트워크 등의 비블로킹 시스템(non-blocking system)을 모방하는 성능 레벨을 사용자에게 전달하는 데 필요한 부가의 리소스들의 수를 최소화하는 것이 요망된다. 케이블 네트워크 리소스들과 네트워크 상의 사용자들 간에 일대일 대응관계가 없기 때문에, 리소스들이 공유되어야만 한다. 사용자가 리소스를 필요로 할 때 할당될 수 있고 사용자가 그 리소스를 이용하는 것을 끝마칠 때 해방될 수 있도록 공유된 리소스들이 관리되어야만 한다. 이들 리소스의 적절한 관리가 운영자에게 중요한데, 그 이유는 그 관리가 없는 경우, 리소스들이 가장 필요하게 될 때 이용가능하지 않을 수 있기 때문이다. 이러한 일이 일어나는 경우, 사용자는 "잠시 기다려 주십시오"라는 메시지를 수신하거나, 최악의 경우에, "서비스를 사용할 수 없습니다"라는 메시지를 수신한다.
도 26은 사용자로부터의 입력에 기초하여 새로운 대화형 세션을 구성하는 데 필요한 단계들을 나타낸 도면이다. 이 도면은 할당 또는 관리되거나 할당 또는 관리를 하는 데 사용되어야만 하는 그 항목들만을 나타내고 있다. 통상적인 요청은 이하에 열거한 단계들을 따른다:
(1) 셋톱 박스(2609)가 제어기(2607)에 컨텐츠를 요청한다(2610).
(2) 제어기(2607)가 SRM(2603)에 QAM 대역폭을 요청한다(2620).
(3) SRM(2603)이 QAM 이용가능성을 검사한다(2625).
(4) SRM(2603)이 QAM 변조기를 할당한다(2630).
(5) QAM 변조기가 확인을 반환한다(2635).
(6) SRM(2603)은 제어기에 QAM 할당 성공을 확인해준다(2640)
(7) 제어기(2607)가 세션 처리기를 할당한다(2650).
(8) 세션 처리기는 할당 성공을 확인해준다(2653)
(9) 제어기(2607)가 컨텐츠를 할당한다(2655).
(10) 제어기(2607)가 셋톱 박스(2609)를 구성한다(2660). 이것은 다음과 같은 것들을 포함한다:
a. 튜닝할 주파수
b. 획득할 프로그램 또는 다른 대안으로서 디코딩할 PID
c. 키스트로크 포착(keystroke capture)을 위해 세션 처리기에 연결할 IP 포트
(11) 셋톱 박스(2609)가 채널에 튜닝한다(2663).
(12) 셋톱 박스(2609)가 제어기(2607)에 성공을 확인해준다(2665).
제어기(2607)는 셋톱 박스(2609)로부터의 서비스 요청에 기초하여 리소스들을 할당한다. 셋톱 박스 또는 서버가 "세션 종료"를 전송할 때 제어기가 이 리소스들을 해방시킨다. 제어기(2607)가 최소 지연으로 신속히 반응할 수 있지만, SRM(2603)은 초당 설정된 수(즉, 200개)의 QAM 세션을 할당할 수 있을 뿐이다. 이 레이트를 초과하는 요구가 있으면 그 결과 사용자에 대한 지연이 용인할 수 없게 된다. 예를 들어, 500개의 요청이 동시에 들어오는 경우, 마지막 사용자는 그의 요청이 허용되기 전에 5초 기다려야 한다. 또한, 요청이 허용되기보다는, "서비스를 사용할 수 없습니다" 등의 오류 메시지가 디스플레이될 수 있는 것도 가능하다.
이상의 일례가 케이블 TV 네트워크를 통한 AVDN 세션의 요청 및 응답 시퀀스를 설명하고 있지만, 이하의 일례는 IPTV 네트워크를 통한 유사한 시퀀스를 설명한다. 유의할 점은, 시퀀스 자체가 청구 대상이 아니라 AVDN이 IPTV 네트워크를 통해 어떻게 동작하는가를 설명한다는 것이다.
(1) 클라이언트 장치가 세션 관리자(즉, 제어기 프록시)를 통해 제어기에 컨텐츠를 요청한다.
(2) 세션 관리자가 요청을 제어기로 전달한다.
(3) 제어기가 세션 관리자(즉, 클라이언트 프록시)를 통해 요청된 컨텐츠로 응답을 한다.
(4) 세션 관리자가 유니캐스트 세션을 열고 유니캐스트 IP 세션을 통해 제어기 응답을 클라이언트로 전달한다.
(5) 클라이언트 장치가 유니캐스트 IP 세션을 통해 전송된 제어기 응답을 획득한다.
(6) 세션 관리자가 대역폭 사용 최적화 기법으로서 동시에 동일한 컨텐츠를 요청하는 노드 그룹 상의 다른 클라이언트들과 공유하기 위해 멀티캐스트 IP 세션을 통해 응답을 동시에 유선 방송(narrowcast)할 수 있다.
도 27은 성능 향상을 위해 각각의 구역을 나누는 데 사용되는 간단화된 시스템도이다. 이 도면은 관리될 데이터 및 장비만을 중점적으로 다루고 있으며 모든 다른 비관리 항목들을 배제하고 있다. 따라서, 명료함을 위해 스위치, 복귀 경로, 결합기, 등이 제거되어 있다. 이 도면은 최종 사용자로부터 다시 컨텐츠 발신측까지에서 동작하는 각각의 항목을 살펴보는 데 사용된다.
첫번째 문제는 SRM(2720)에 의한 QAM(2770) 및 QAM 채널들(2775)의 할당이다. 상세하게는, SRM 과부하를 방지하기 위해 리소스들이 관리되어야만 한다, 즉 지연을 없애면, SRM(2720)에 대한 요청들이 초당 세션수 레이트(sessions per second rate)를 초과할 때를 사용자가 알게 된다.
SRM "과부하"를 방지하기 위해, "시간 기반 모델링(time based modeling)"이 사용될 수 있다. 시간 기반 모델링의 경우, 제어기(2700)는 과거 트랜잭션들의 이력, 특히 고부하(high load) 기간들을 모니터링한다. 이 이전의 이력을 사용하여, 제어기(2700)는, 예를 들어, 매 정시에, 고부하 기간이 발생할지도 모를 때를 예측할 수 있다. 제어기(2700)는 이 지식을 사용하여, 그 기간이 오기 전에 리소스들을 사전 할당한다. 즉, 제어기는 예측 알고리즘을 사용하여 장래의 리소스 요구사항을 판정한다. 일례로서, 제어기(2700)가 475명의 사용자들이 특정의 때에 가입할 것으로 생각하는 경우, 제어기는, 그 부하가 발생할 때, 리소스들이 이미 할당되어 사용자들이 지연을 알지 못하도록, 그 리소스들을 5초 일찍 할당하기 시작할 수 있다.
둘째, 리소스들이 운영자로부터의 입력에 기초하여 사전 할당될 수 있다. 운영자가 중요한 행사, 예를 들어, 유료(pay per view) 스포츠 경기가 있을 것임을 알고 있는 경우, 운영자는 미리 리소스들을 사전 할당하고자 할 수 있다. 이들 경우 둘다에서, SRM(2720)은, 사용 중이 아닐 때 또 그 행사 후에, 사용되지 않은 QAM(2770) 리소스들을 방출(release)한다.
셋째, QAM(2770)이 이전의 이력에 무관한 "변화율(rate of change)"에 기초하여 할당될 수 있다. 예를 들어, 제어기(2700)는, 갑작스런 트래픽의 스파이크를 인식하는 경우, 부가의 세션들을 추가할 때 QAM 할당 단계를 피하기 위해 필요한 것보다 더 많은 QAM 대역폭을 요청할 수 있다. 갑작스런 예기치못한 스파이크의 일례는 사용자가 이 버튼을 선택하는 경우 경품을 받을 수 있다는 것을 나타내는 프로그램의 일부인 버튼일 수 있다.
현재, 각각의 세션을 추가하라는 SRM(2720)에 대한 하나의 요청이 있다. 그 대신에, 제어기(2700)는 전체 QAM(2770) 또는 하나의 QAM의 대역폭의 많은 부분을 요청할 수 있고, 본 발명으로 하여금 QAM 채널(2775) 내의 데이터를 처리할 수 있게 해준다. 이 시스템의 한 측면이 단지 1, 2 또는 3 Mb/sec인 채널을 생성할 수 있는 것이기 때문에, 이것은 최대 27개의 요청을 하나의 요청으로 대체함으로써 SRM(2720)에 대한 요청들의 수를 감소시킬 수 있다.
사용자는 또한 이미 활성 세션에 있는 경우에도 다른 컨텐츠를 요청할 때는 지연을 경험할 것이다. 현재, 셋톱 박스(2790)가 활성 세션에 있고 새로운 세트의 컨텐츠(2730)를 요청하는 경우, 제어기(2700)는 QAM(2770)을 할당 해제(de-allocate)하라고 SRM(2720)에 지시해야만 하고 이어서 제어기(2700)는 세션 처리기(2750) 및 컨텐츠(2730)를 할당 해제해야만 하며, 이어서 SRM(2720)에 다른 QAM(2770)을 요청하고 이어서 다른 세션 처리기(2750) 및 컨텐츠(2730)을 할당해야만 한다. 그 대신에, 제어기(2700)는 QAM 변조기(2770)에 입력되는 비디오 스트림(2755)을 변경함으로써 이전에 설정된 경로를 그대로 둘 수 있다. 변경을 완수하는 몇가지 방식이 있다. 첫째, QAM 변조기들(2770)이 네트워크 상에 있기 때문에, 따라서 제어기(2700)는 QAM(2770)을 구동하는 세션 처리기(2750)를 변경할 수 있을 뿐이다. 둘째, 제어기(2700)는 단지 세션 처리기(2750)와 셋톱 박스(2790) 간의 연결을 그대로 둘 수 있지만, 세션 처리기(2750)에 입력되는 컨텐츠(2730)를, 예를 들어, "CNN Headline News"에서 "CNN World Now"로 변경할 수 있다. 이들 방법 둘다가 QAM 초기화 및 셋톱 박스 튜닝 지연을 없애준다.
따라서, 이 대화형 서비스들을 제공하는 데 필요한 장비의 양을 최소화하기 위해 리소스들이 지능적으로 관리된다. 상세하게는, 제어기가 QAM(2770)에 입력되는 비디오 스트림(2755)을 조작할 수 있다. 이 스트림들(2755)을 프로파일링함으로써, 제어기(2700)는 QAM(2770) 내에서의 채널 사용을 극대화할 수 있다. 즉, 제어기는 각각의 QAM 채널(2775)에서의 프로그램들의 수를 최대로 하여 낭비되는 대역폭 및 필요한 QAM(2770)의 수를 감소시킬 수 있다. 스트림을 프로파일링하는 3개의 주된 수단, 즉 형식적 프로파일링(formulaic profiling), 사전-프로파일링(pre-profiling) 및 라이브 피드백(live feedback) 프로파일링이 있다.
첫번째 프로파일링 방법인 형식적 프로파일링은 QAM 채널(2775)을 채우는 데 사용되는 다양한 비디오 스트림들의 비트 레이트들을 합계하는 것으로 이루어져 있다. 상세하게는, 하나의 비디오 스트림(2755)을 생성하는 데 사용되는 많은 비디오 요소들이 있을 수 있다. 비디오 스트림(2755)에 대한 총 비트 레이트(aggregate bit rate)를 획득하기 위해 각각의 요소의 최대 비트 레이트가 모두 합산될 수 있다. 모든 비디오 스트림들(2755)의 비트 레이트를 모니터링함으로써, 제어기(2700)는 QAM 채널(2775)을 가장 효율적으로 사용하는 비디오 스트림들(2755)의 조합을 생성할 수 있다. 예를 들어, 2개는 16 Mb/sec이고 2개는 20 Mb/sec인 4개의 비디오 스트림들(2755)이 있는 경우, 제어기는 각각의 채널당 비트 레이트 중 하나를 할당함으로써 38.8 Mb/sec QAM 채널(2775)을 가장 잘 채울 수 있다. 이렇게 하려면 2개의 QAM 채널들(2775)이 비디오를 배달해야만 한다. 그렇지만, 형식적 프로파일링을 사용하지 않는 경우, 그 결과는 3개의 QAM 채널(2775)로 끝날 수 있는데, 그 이유는 아마도 2개의 16 Mb/sec 비디오 스트림(2755)이 하나의 38.8 Mb/sec QAM 채널(2775)로 결합되고 이어서 각각의 20 Mb/sec 비디오 스트림(2755)이 그 자신의 38.8 Mb/sec QAM 채널(2775)을 가져야만 하기 때문이다.
두번째 방법은 사전-프로파일링이다. 이 방법에서, 컨텐츠(2730)에 대한 프로파일은 수신되거나 내부적으로 발생된다. 프로파일 정보가 스트림과 함께 메타데이터로 또는 별도의 파일로 제공될 수 있다. 프로파일링 정보가 전체 비디오로부터 또는 대표적인 샘플로부터 발생될 수 있다. 제어기(2700)는 이어서 스트림에서 다양한 시간에서의 비트 레이트를 알고 있고 이 정보를 사용하여 비디오 스트림들(2755)을 서로 효과적으로 결합시킬 수 있다. 예를 들어, 2개의 비디오 스트림(2755) 둘다가 20 Mb/sec의 피크 레이트를 갖는 경우, 이 스트림들은 그의 피크에 기초하여 대역폭을 할당받는다면 서로 다른 38.8 Mb/sec QAM 채널(2775)에 할당되어야 한다. 그렇지만, 제어기가 공칭 비트 레이트가 14 Mb/sec인 것을 알고 있고 또 그 각자의 프로파일을 알고 있으며 따라서 동시적인 피크가 없는 경우, 제어기(2700)는 스트림들(2755)을 하나의 38.8 Mb/sec QAM 채널(2775)로 결합시킬 수 있다. 특정의 QAM 비트 레이트가 단지 이상의 일례들에서만 사용되며 제한하는 것으로 해석되어서는 안된다.
세번째 프로파일링 방법은 이 시스템에 의해 제공되는 피드백을 통하는 것이다. 이 시스템은 스트림을 작성하는 데 사용되는 모든 비디오 요소들에 대한 현재의 비트 레이트 및 스트림이 작성된 후의 스트림의 총 비트 레이트를 제어기(2700)에 알려줄 수 있다. 게다가, 이 시스템은 저장된 요소들의 사용 이전의 비트 레이트를 제어기(2700)에 알려줄 수 있다. 이 정보를 사용하여, 제어기(2700)는 QAM 채널(2775)을 채우기 위해 비디오 스트림들(2755)을 가장 효율적인 방식으로 결합시킬 수 있다.
유의할 점은, 3가지 프로파일링 방법들 중 일부 또는 그 전부를 함께 사용하는 것도 용인될 수 있다는 것이다. 즉, 이들 방법이 독립적으로 사용되어야만 한다는 제한이 없다.
이 시스템은 또한 리소스들 자체를 사용하는 것도 해결할 수 있다. 예를 들어, 세션 처리기(2750)가 100명의 사용자들을 지원할 수 있고 현재 350명의 사용자가 활성인 경우, 4개의 세션 처리기가 필요하다. 그렇지만, 그 수요가 예를 들어 80명의 사용자로 줄어들 때, 그 리소스들을 하나의 세션 프로세서(2750)로 재할당함으로써 3개의 세션 처리기의 나머지 리소스들을 절감하는 것이 이치에 맞게 된다. 이것은 또한 고장 상황에서도 유용하다. 한 리소스가 고장난 경우, 본 발명은 이용가능한 다른 리소스들에 세션들을 재할당할 수 있다. 이와 같이, 사용자에 대한 방해가 최소화된다.
이 시스템은 또한 예상된 사용에 따라 기능들의 용도를 변경할 수 있다. 세션 처리기(2750)는 다수의 서로 다른 기능들, 예를 들어, 비디오의 처리, 오디오의 처리, 등을 구현할 수 있다. 제어기(2700)는, 사용 이력을 가지고 있기 때문에, 예상된 수요를 충족시키기 위해 세션 처리기들(2750)에 대한 기능들을 조절할 수 있다. 예를 들어, 이른 오후에 통상적으로 음악에 대한 수요가 많은 경우, 제어기(2700)는 그 수요를 예상하여 음악을 처리할 부가의 세션 처리기들(2750)을 재할당할 수 있다. 그에 대응하여, 이른 저녁에 뉴스에 대한 수요가 많은 경우, 제어기(2700)는 그 수요를 예상하고 세션 처리기들(2750)을 그에 따라 재할당한다. 이 시스템의 유연성 및 예상에 의해 이 시스템은 최소량의 장비로 최적의 사용자 경험을 제공할 수 있다. 즉, 어느 장비도 유휴 상태에 있지 않은데, 그 이유는 그 장비가 하나의 용도만을 가지며 그 용도가 필요하지 않기 때문이다.
본 발명이 프로세서(예를 들어, 마이크로프로세서, 마이크로컨트롤러, 디지털 신호 처리기, 또는 범용 컴퓨터)에서 사용되는 컴퓨터 프로그램 로직, PLD(programmable logic device)에서 사용되는 프로그램가능 로직[예를 들어, FPGA(Field Programmable Gate Array) 또는 기타 PLD], 개별 부품, 집적 회로[예를 들어, ASIC(Application Specific Integrated Circuit)], 또는 이들의 임의의 조합을 포함하는 임의의 다른 수단(이들로 제한되지 않음)을 비롯한 많은 서로 다른 형태로 구현될 수 있다. 본 발명의 일 실시예에서, 주로 재정렬 논리(reordering logic) 전부가 컴퓨터 실행가능 형태로 변환되고 그 자체로서 컴퓨터-판독가능 매체에 저장되며 운영 체제의 제어 하에서 어레이 내의 마이크로프로세서에 의해 실행되는 컴퓨터 프로그램 명령어들의 세트로서 구현될 수 있다.
본 명세서에서 앞서 기술된 기능들 전부 또는 그 일부를 구현하는 컴퓨터 프로그램 로직이 소스 코트 형태, 컴퓨터-실행가능 형태, 및 다양한 중간 형태들[예를 들어, 어셈블러, 컴파일러, 네트워커(networker), 또는 로케이터(locator)에 의해 발생되는 형태들](이들로 제한되지 않음)을 비롯한 다양한 형태로 구현될 수 있다. 소스 코드는 다양한 운영 체제 또는 운영 환경에서 사용되는 다양한 프로그램 언어들(예를 들어, 오브젝트 코드, 어셈블리어, 또는 Fortran, C, C++, JAVA, 또는 HTML 등의 고수준 언어) 중 임의의 언어로 구현되는 일련의 컴퓨터 프로그램 명령어들을 포함할 수 있다. 소스 코드는 다양한 데이터 구조 및 통신 메시지를 정의하고 사용할 수 있다. 소스 코드는 (예를 들어, 인터프리터를 통해) 컴퓨터-실행가능 형태로 되어 있을 수 있거나, 소스 코드는 (번역기, 어셈블러 또는 컴파일러를 통해) 컴퓨터-실행가능 형태로 변환될 수 있다.
컴퓨터 프로그램은 반도체 메모리 장치[예를 들어, RAM, ROM, PROM, EEPROM, 또는 플래시-프로그램가능 RAM(Flash-Programmable RAM)], 자기 메모리 장치(예를 들어, 디스켓 또는 고정 디스크), 광 메모리 장치(예를 들어, CD-ROM), PC 카드(예를 들어, PCMCIA 카드), 또는 기타 메모리 장치와 같은 유형의 저장 매체(tangible storage medium)에 영구적으로 또는 일시적으로 임의의 형태(예를 들어, 소스 코드 형태, 컴퓨터-실행가능 형태, 또는 중간 형태)로 고정되어 있을 수 있다. 컴퓨터 프로그램은 아날로그 기술, 디지털 기술, 광 기술, 무선 기술, 네트워킹 기술 및 인터네트워킹 기술(이들로 제한되지 않음)을 비롯한 다양한 통신 기술들 중 임의의 통신 기술을 사용하여 컴퓨터로 전송가능한 신호에 임의의 형태로 고정되어 있을 수 있다. 컴퓨터 프로그램은 부속하는 인쇄된 또는 전자 문서를 갖는 이동식 저장 매체[예를 들어, 축소 포장된(shrink wrapped) 소프트웨어 또는 자기 테이프]로서 배포되거나, 컴퓨터 시스템에(예를 들어, 시스템 ROM 또는 고정 디스크에) 사전 로드되어 있거나, 통신 시스템(예를 들어, 인터넷 또는 월드 와이드 웹)을 통해 서버 또는 전자 게시판으로부터 배포될 수 있다.
본 명세서에서 이상에서 기술한 기능들 전부 또는 그 일부를 구현하는 하드웨어 로직(hardware logic)[PLD(programmable logic device)에서 사용되는 프로그램가능 로직을 포함함]가 종래의 수동 방법을 사용하여 설계될 수 있거나, CAD(Computer Aided Design), 하드웨어 기술 언어(hardware description language)(예를 들어, VHDL 또는 AHDL), 또는 PLD 프로그래밍 언어(예를 들어, PALASM, ABEL, 또는 CUPL)와 같은 다양한 도구들을 사용하여 전자적으로 설계, 포착, 시뮬레이트, 또는 문서화될 수 있다.
본 발명이 특정의 실시예들을 참조하여 상세히 도시되고 기술되었지만, 당업자라면 첨부된 특허청구범위에 정의된 본 발명의 사상 및 범위를 벗어나지 않고 본 발명에 다양한 형태 및 상세의 변경들이 행해질 수 있다는 것을 잘 알 것이다. 당업자에게는 명백할 것인 바와 같이, 파노라마에 대해 이상에 기술된 기법들이 비파노라마 이미지들로서 캡처된 이미지들에 적용될 수 있고, 그 반대도 마찬가지이다.
본 발명의 실시예들이 이하의 특허청구범위에 의해 기술될 수 있지만, 그것으로 제한되지 않는다. 이 실시예들이 특허청구범위에 프로세스 단계들로 기술되어 있지만, 이하의 특허청구범위에 있는 프로세스 단계들을 실행할 수 있는 연관된 디스플레이를 갖는 컴퓨터를 포함하는 장치도 본 발명에 포함된다. 마찬가지로, 이하의 특허청구범위에 있는 프로세스 단계들을 실행하는 컴퓨터-실행가능 명령어들을 포함하는 컴퓨터 프로그램 제품이 본 발명에 포함된다.

Claims (27)

  1. 텔레비전에 연결되어, 연관된 사용자-선택가능 재료를 갖는 방송 비디오 프로그램을 녹화하는 시스템으로서,
    상기 방송 비디오 프로그램을 수신하는 입력부(input),
    상기 방송 비디오 프로그램과 연관된 상기 사용자-선택가능 재료를 선택할 수 있게 해주는 사용자 인터페이스 장치(user interface device),
    사용자 선택에 응답하여, 상기 선택가능 재료에 관계된 대화형 컨텐츠를 처리 사무소(processing office)에 요청하는 처리 모듈(processing module), 및
    상기 처리 모듈로부터 수신된 신호에 응답하여, 상기 선택가능 재료의 사용자 선택에 응답하여 상기 방송 비디오 프로그램을 녹화하는 비디오 레코더(video recorder)
    를 포함하는 시스템.
  2. 제1항에 있어서, 상기 처리 모듈이 상기 대화형 컨텐츠를 빠져나가라는 신호를 상기 사용자 인터페이스 장치로부터 수신할 때, 상기 처리 모듈이 상기 비디오 레코더로 하여금 상기 녹화된 비디오 프로그램을 상기 텔레비전 상에서 자동으로 재생하기 시작하게 하는 시스템.
  3. 제1항에 있어서, 상기 사용자 입력부는 복수의 방송 비디오 프로그램들 중에서 방송 비디오 프로그램을 선택하는 것을 제어하는 시스템.
  4. 제1항에 있어서, 상기 선택가능 재료는 MPEG 객체인 시스템.
  5. 제1항에 있어서, 상기 선택가능 재료는 광고인 시스템.
  6. 제1항에 있어서, 상기 대화형 컨텐츠는 웹 페이지인 시스템.
  7. 제1항에 있어서, 상기 대화형 컨텐츠는 복수의 스티칭된(stitched) MPEG 요소로 이루어져 있는 시스템.
  8. 제1항에 있어서, 상기 비디오 컨텐츠 및 상기 선택가능 재료 둘다는 상기 처리 사무소에 유지되는 상태 정보를 갖는 MPEG 객체들인 시스템.
  9. 제1항에 있어서, 상기 비디오 컨텐츠 및 상기 선택가능 재료는 MPEG 요소들이고, 상기 처리 사무소는 각각의 MPEG 요소에 관한 상태 정보를 유지하는 시스템.
  10. 제1항에 있어서, 상기 선택가능 재료는 광고이고, 상기 선택가능 재료의 선택은 대화형 광고와의 대화형 세션을 야기시키는 시스템.
  11. 비디오 프로그램을 자동으로 녹화하는 방법으로서,
    사용자-선택 방송 비디오 프로그램을 텔레비전과 신호 통신하고 있는 장치 내로 수신하는 단계 - 상기 방송 비디오 프로그램의 적어도 일부분이 사용자-선택가능 재료를 포함함 -,
    상기 방송 비디오 프로그램을 상기 텔레비전 상에 디스플레이하는 단계,
    상기 사용자-선택가능 재료를 선택하는 선택 신호를 수신한 것에 응답하여, 상기 선택가능 재료에 관계된 대화형 컨텐츠를 처리 사무소에 요청하는 단계,
    상기 처리 사무소로부터 상기 대화형 컨텐츠를 수신하는 단계, 및
    상기 방송 비디오 프로그램을 자동으로 녹화하는 단계
    를 포함하는 방법.
  12. 제11항에 있어서, 상기 방송 비디오 프로그램을 디스플레이하는 것을 정지시키는 단계, 및
    상기 대화형 컨텐츠를 상기 텔레비전 상에 디스플레이하는 단계를 더 포함하는 방법.
  13. 제12항에 있어서, 상기 대화형 컨텐츠를 빠져나가라는 복귀 신호가 상기 장치에 의해 수신될 때, 상기 녹화된 방송 비디오 프로그램을 재생하는 단계를 더 포함하는 방법.
  14. 제13항에 있어서, 상기 자동 녹화는 텔레비전에 결합된 클라이언트 장치와 연관된 비디오 레코더에서 행해지는 방법.
  15. 제14항에 있어서, 상기 방송 비디오 프로그램이 상기 비디오 레코더로 보내진 곳에서 상기 방송 비디오 프로그램의 재생이 시작되는 방법.
  16. 제11항에 있어서, 상기 선택가능 재료는 MPEG 객체이고, 상기 처리 사무소는 상기 선택가능 재료에 관한 상태 정보를 유지하는 방법.
  17. 제11항에 있어서, 상기 대화형 컨텐츠는 MPEG 객체이고, 상기 처리 사무소는 상기 대화형 컨텐츠에 관한 상태 정보를 유지하는 방법.
  18. 제11항에 있어서, 상기 사용자-선택가능 재료는 상기 비디오 프로그램에 일시적으로 삽입되는 광고인 방법.
  19. 제11항에 있어서, 상기 사용자-선택가능 재료는 광고이고, 상기 광고는 상기 비디오 프로그램을 포함하는 적어도 하나의 비디오 프레임의 일부인 방법.
  20. 제11항에 있어서, 상기 선택가능 재료의 선택이 대화형 세션을 야기시키는 방법.
  21. 컴퓨터-판독가능 매체 상에 컴퓨터 코드를 갖는 컴퓨터 프로그램 제품으로서,
    상기 컴퓨터 프로그램 제품은 컴퓨터에서 연관된 선택가능 재료를 갖는 방송 비디오 프로그램을 녹화하는 데 사용되며,
    상기 컴퓨터 코드가,
    사용자-선택가능 재료를 선택하는 선택 신호를 수신한 것에 응답하여, 상기 선택가능 재료에 관계된 대화형 컨텐츠를 처리 사무소에 요청하는 컴퓨터 코드,
    상기 처리 사무소로부터 상기 대화형 컨텐츠를 수신하는 컴퓨터 코드, 및
    상기 방송 비디오 프로그램을 자동으로 녹화하는 컴퓨터 코드를 포함하는 컴퓨터 프로그램 제품.
  22. 제21항에 있어서, 상기 방송 비디오 프로그램을 디스플레이하는 것을 정지시키는 컴퓨터 코드, 및
    상기 대화형 컨텐츠를 텔레비전 상에 디스플레이하는 컴퓨터 코드를 더 포함하는 컴퓨터 프로그램 제품.
  23. 제21항에 있어서, 상기 대화형 컨텐츠를 빠져나가라는 복귀 신호가 장치에 의해 수신될 때, 상기 녹화된 방송 비디오 프로그램이 텔레비전 상에서 재생되게 하는 컴퓨터 코드를 더 포함하는 컴퓨터 프로그램 제품.
  24. 제23항에 있어서, 상기 방송 비디오 프로그램이 DVR(digital video recorder)로 다시 보내졌을 때의 상기 방송 비디오 프로그램 내의 시간 위치에서 상기 방송 비디오 프로그램의 재생이 시작되는 컴퓨터 프로그램 제품.
  25. 제21항에 있어서, 상기 사용자-선택가능 재료는 상기 비디오 프로그램에 일시적으로 삽입되는 광고인 컴퓨터 프로그램 제품.
  26. 제21항에 있어서, 상기 사용자-선택가능 재료는 광고이고, 상기 광고는 상기 비디오 프로그램을 포함하는 적어도 하나의 비디오 프레임의 일부인 컴퓨터 프로그램 제품.
  27. 제21항에 있어서, 상기 선택가능 재료의 선택을 나타내는 신호가 수신될 때 대화형 세션을 야기시키는 컴퓨터 코드를 더 포함하는 컴퓨터 프로그램 제품.
KR1020107019479A 2008-02-01 2009-01-29 대화형 텔레비전 환경에서의 자동 비디오 프로그램 녹화 KR20100120187A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/012,491 2008-02-01
US12/012,491 US20080212942A1 (en) 2007-01-12 2008-02-01 Automatic video program recording in an interactive television environment

Publications (1)

Publication Number Publication Date
KR20100120187A true KR20100120187A (ko) 2010-11-12

Family

ID=40952428

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020107019479A KR20100120187A (ko) 2008-02-01 2009-01-29 대화형 텔레비전 환경에서의 자동 비디오 프로그램 녹화

Country Status (8)

Country Link
US (1) US20080212942A1 (ko)
EP (1) EP2248341A4 (ko)
JP (1) JP2011511572A (ko)
KR (1) KR20100120187A (ko)
CN (1) CN101983508A (ko)
BR (1) BRPI0907451A2 (ko)
IL (1) IL207334A0 (ko)
WO (1) WO2009099893A1 (ko)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160021501A (ko) * 2014-08-18 2016-02-26 삼성전자주식회사 파노라믹 동영상을 생성하는 동영상 처리 장치 및 그 방법
US9826197B2 (en) 2007-01-12 2017-11-21 Activevideo Networks, Inc. Providing television broadcasts over a managed network and interactive content over an unmanaged network to a client device
US10200744B2 (en) 2013-06-06 2019-02-05 Activevideo Networks, Inc. Overlay rendering of user interface onto source video
US10275128B2 (en) 2013-03-15 2019-04-30 Activevideo Networks, Inc. Multiple-mode system and method for providing user selectable video content
US10409445B2 (en) 2012-01-09 2019-09-10 Activevideo Networks, Inc. Rendering of an interactive lean-backward user interface on a television

Families Citing this family (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8074248B2 (en) 2005-07-26 2011-12-06 Activevideo Networks, Inc. System and method for providing video content associated with a source image to a television in a communication network
US20080201736A1 (en) * 2007-01-12 2008-08-21 Ictv, Inc. Using Triggers with Video for Interactive Content Identification
WO2008088772A2 (en) 2007-01-12 2008-07-24 Ictv, Inc. Mpeg objects and systems and methods for using mpeg objects
US20090328109A1 (en) * 2007-01-12 2009-12-31 Activevideo Networks, Inc. Providing Television Broadcasts over a Managed Network and Interactive Content over an Unmanaged Network to a Client Device
US8458147B2 (en) * 2008-08-20 2013-06-04 Intel Corporation Techniques for the association, customization and automation of content from multiple sources on a single display
US10063934B2 (en) * 2008-11-25 2018-08-28 Rovi Technologies Corporation Reducing unicast session duration with restart TV
US8473996B2 (en) * 2009-03-17 2013-06-25 Activevideo Networks, Inc. Apparatus and methods for syndication of on-demand video
US8341241B2 (en) * 2009-04-14 2012-12-25 At&T Intellectual Property I, L.P. Method and apparatus for presenting media content
US8732749B2 (en) 2009-04-16 2014-05-20 Guest Tek Interactive Entertainment Ltd. Virtual desktop services
US20100329338A1 (en) * 2009-06-25 2010-12-30 Qualcomm Incorporated Low complexity b to p-slice transcoder
US9229734B2 (en) 2010-01-15 2016-01-05 Guest Tek Interactive Entertainment Ltd. Hospitality media system employing virtual user interfaces
US9003455B2 (en) 2010-07-30 2015-04-07 Guest Tek Interactive Entertainment Ltd. Hospitality media system employing virtual set top boxes
WO2012051528A2 (en) 2010-10-14 2012-04-19 Activevideo Networks, Inc. Streaming digital video between video devices using a cable television system
US20120185905A1 (en) * 2011-01-13 2012-07-19 Christopher Lee Kelley Content Overlay System
US8639778B2 (en) * 2011-02-01 2014-01-28 Ebay Inc. Commerce applications: data handshake between an on-line service and a third-party partner
EP2695388B1 (en) 2011-04-07 2017-06-07 ActiveVideo Networks, Inc. Reduction of latency in video distribution networks using adaptive bit rates
US9800945B2 (en) 2012-04-03 2017-10-24 Activevideo Networks, Inc. Class-based intelligent multiplexing over unmanaged networks
US9123084B2 (en) 2012-04-12 2015-09-01 Activevideo Networks, Inc. Graphical application integration with MPEG objects
US20140215526A1 (en) * 2013-01-31 2014-07-31 Kabushiki Kaisha Toshiba Video display apparatus, server, and video display method
US9294785B2 (en) 2013-06-06 2016-03-22 Activevideo Networks, Inc. System and method for exploiting scene graph information in construction of an encoded video sequence
US9219922B2 (en) 2013-06-06 2015-12-22 Activevideo Networks, Inc. System and method for exploiting scene graph information in construction of an encoded video sequence
US9788029B2 (en) 2014-04-25 2017-10-10 Activevideo Networks, Inc. Intelligent multiplexing using class-based, multi-dimensioned decision logic for managed networks
US20150350295A1 (en) * 2014-05-28 2015-12-03 Joel Solomon Isaacson System And Method For Loading Assets During Remote Execution
GB2528446B (en) * 2014-07-21 2021-08-04 Tobii Tech Ab Method and apparatus for detecting and following an eye and/or the gaze direction thereof
US20170180680A1 (en) * 2015-12-21 2017-06-22 Hai Yu Object following view presentation method and system
US10938687B2 (en) 2017-03-29 2021-03-02 Accenture Global Solutions Limited Enabling device under test conferencing via a collaboration platform
US10966001B2 (en) * 2018-04-05 2021-03-30 Tvu Networks Corporation Remote cloud-based video production system in an environment where there is network delay
CN112585978B (zh) 2018-07-30 2023-07-25 皇家Kpn公司 生成用于在vr中显示的复合视频流
US11924442B2 (en) * 2018-11-20 2024-03-05 Koninklijke Kpn N.V. Generating and displaying a video stream by omitting or replacing an occluded part
US10558824B1 (en) 2019-02-04 2020-02-11 S2 Systems Corporation Application remoting using network vector rendering
US11880422B2 (en) 2019-02-04 2024-01-23 Cloudflare, Inc. Theft prevention for sensitive information
US10552639B1 (en) 2019-02-04 2020-02-04 S2 Systems Corporation Local isolator application with cohesive application-isolation interface
US10452868B1 (en) 2019-02-04 2019-10-22 S2 Systems Corporation Web browser remoting using network vector rendering
CN110418196B (zh) * 2019-08-29 2022-01-28 金瓜子科技发展(北京)有限公司 视频生成方法、装置及服务器
WO2021148125A1 (en) * 2020-01-23 2021-07-29 Volvo Truck Corporation A method for adapting to a driver position an image displayed on a monitor in a vehicle cab
US11740465B2 (en) * 2020-03-27 2023-08-29 Apple Inc. Optical systems with authentication and privacy capabilities
CN114938418A (zh) * 2021-02-04 2022-08-23 佳能株式会社 具有视线检测功能的取景器单元、摄像设备和附接配件
US11853473B2 (en) * 2021-08-18 2023-12-26 Meta Platforms Technologies, Llc Differential illumination for corneal glint detection
US20230176377A1 (en) * 2021-12-06 2023-06-08 Facebook Technologies, Llc Directional illuminator and display apparatus with switchable diffuser
US11912429B2 (en) * 2022-04-05 2024-02-27 Gulfstream Aerospace Corporation System and methodology to provide an augmented view of an environment below an obstructing structure of an aircraft
CN114979749B (zh) * 2022-06-23 2024-03-22 深圳创维-Rgb电子有限公司 图形界面绘制方法、电子设备及可读存储介质

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020056136A1 (en) * 1995-09-29 2002-05-09 Wistendahl Douglass A. System for converting existing TV content to interactive TV programs operated with a standard remote control and TV set-top box
US6804825B1 (en) * 1998-11-30 2004-10-12 Microsoft Corporation Video on demand methods and systems
GB9902235D0 (en) * 1999-02-01 1999-03-24 Emuse Corp Interactive system
US7159232B1 (en) * 1999-11-16 2007-01-02 Microsoft Corporation Scheduling the recording of television programs
US7899924B2 (en) * 2002-04-19 2011-03-01 Oesterreicher Richard T Flexible streaming hardware
US7111314B2 (en) * 2002-05-03 2006-09-19 Time Warner Entertainment Company, L.P. Technique for delivering entertainment programming content including interactive features in a communications network
DK1665769T3 (da) * 2003-09-12 2014-06-30 Opentv Inc Fremgangsmåde og system til styring af optagelse og afspilning af interaktive applikationer
US20050149988A1 (en) * 2004-01-06 2005-07-07 Sbc Knowledge Ventures, L.P. Delivering interactive television components in real time for live broadcast events
US7634785B2 (en) * 2005-06-06 2009-12-15 Microsoft Corporation DVR-based targeted advertising

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9826197B2 (en) 2007-01-12 2017-11-21 Activevideo Networks, Inc. Providing television broadcasts over a managed network and interactive content over an unmanaged network to a client device
US10409445B2 (en) 2012-01-09 2019-09-10 Activevideo Networks, Inc. Rendering of an interactive lean-backward user interface on a television
US10275128B2 (en) 2013-03-15 2019-04-30 Activevideo Networks, Inc. Multiple-mode system and method for providing user selectable video content
US11073969B2 (en) 2013-03-15 2021-07-27 Activevideo Networks, Inc. Multiple-mode system and method for providing user selectable video content
US10200744B2 (en) 2013-06-06 2019-02-05 Activevideo Networks, Inc. Overlay rendering of user interface onto source video
KR20160021501A (ko) * 2014-08-18 2016-02-26 삼성전자주식회사 파노라믹 동영상을 생성하는 동영상 처리 장치 및 그 방법
US10334162B2 (en) 2014-08-18 2019-06-25 Samsung Electronics Co., Ltd. Video processing apparatus for generating panoramic video and method thereof

Also Published As

Publication number Publication date
BRPI0907451A2 (pt) 2015-07-14
US20080212942A1 (en) 2008-09-04
EP2248341A1 (en) 2010-11-10
EP2248341A4 (en) 2012-01-18
IL207334A0 (en) 2010-12-30
CN101983508A (zh) 2011-03-02
JP2011511572A (ja) 2011-04-07
WO2009099893A1 (en) 2009-08-13

Similar Documents

Publication Publication Date Title
EP2106665B1 (en) Interactive encoded content system including object models for viewing on a remote device
KR20100120187A (ko) 대화형 텔레비전 환경에서의 자동 비디오 프로그램 녹화
JP5795404B2 (ja) 被管理ネットワークを介したテレビ放送および非被管理ネットワークを介した双方向コンテンツのクライアントデバイスへの提供
US9826197B2 (en) Providing television broadcasts over a managed network and interactive content over an unmanaged network to a client device
US6389218B2 (en) Method and apparatus for simultaneously producing compressed play and trick play bitstreams from a video frame sequence
EP2594073B1 (en) Video switching for streaming video data
EP2601790B1 (en) Signaling attributes for network-streamed video data
US7688889B2 (en) Methods, apparatus, and systems for insertion of overlay content into a video signal with transrating capabilities
US9654789B1 (en) Scalable real-time video compositing systems and methods
US20100146139A1 (en) Method for streaming parallel user sessions, system and computer software
KR20180005234A (ko) 합성 가변 비디오 스트리밍
US9219930B1 (en) Method and system for timing media stream modifications
Goldman et al. ATSC Encoding, Transport, and PSIP Systems
Macq et al. Scalable Delivery of Navigable and Ultra‐High Resolution Video

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid