KR101159335B1 - 대역 내 제어 정보를 전송하기 위한 전략 - Google Patents

대역 내 제어 정보를 전송하기 위한 전략 Download PDF

Info

Publication number
KR101159335B1
KR101159335B1 KR1020050068778A KR20050068778A KR101159335B1 KR 101159335 B1 KR101159335 B1 KR 101159335B1 KR 1020050068778 A KR1020050068778 A KR 1020050068778A KR 20050068778 A KR20050068778 A KR 20050068778A KR 101159335 B1 KR101159335 B1 KR 101159335B1
Authority
KR
South Korea
Prior art keywords
control information
stream
information
module
unit
Prior art date
Application number
KR1020050068778A
Other languages
English (en)
Other versions
KR20060048848A (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 KR20060048848A publication Critical patent/KR20060048848A/ko
Application granted granted Critical
Publication of KR101159335B1 publication Critical patent/KR101159335B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q50/00Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
    • 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
    • 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/235Processing of additional data, e.g. scrambling of additional data or processing content descriptors
    • 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/435Processing of additional data, e.g. decrypting of additional data, reconstructing software from modules extracted from the transport stream
    • 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/44016Processing 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 splicing one content stream with another content stream, e.g. for substituting a video clip
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/65Transmission of management data between client and server
    • H04N21/654Transmission by server directed to the client
    • H04N21/6543Transmission by server directed to the client for forcing some client operations, e.g. recording

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Business, Economics & Management (AREA)
  • Marketing (AREA)
  • Human Resources & Organizations (AREA)
  • Economics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Primary Health Care (AREA)
  • Strategic Management (AREA)
  • Tourism & Hospitality (AREA)
  • Physics & Mathematics (AREA)
  • General Business, Economics & Management (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

호스트 모듈로부터 클라이언트 모듈로 제어 정보를 전송하기 위한 전략이 개시된다. 호스트 모듈은 제어 정보를 매체 콘텐츠 정보 패킷들의 스트림과 함께 대역 내에서 전송한다. 제어 정보는 클라이언트 모듈의 동작을 관리하기 위해 사용될 수 있다. 하나의 경우에서, 제어 정보는 클라이언트 모듈에게 스트림들 내의 불연속을 경고할 수 있는데, 이것은 호스트 또는 클라이언트 모듈 등을 통해 사용자가 채널을 변화시키거나, 검색 명령어(seek instruction)를 발행하거나 하는 등의 결과일 수 있다. 제어 정보를 대역 내 방식으로 전송하는 것은, 제어 정보와 관련 콘텐츠 정보 간의 복잡한 연결에 대한 필요를 줄여주기 때문에, 도움이 된다.
제어 정보, 콘텐츠 정보, 대역 내, 호스트 모듈, 클라이언트 모듈, 스트림

Description

대역 내 제어 정보를 전송하기 위한 전략{STRATEGIES FOR TRANSMITTING IN-BAND CONTROL INFORMATION}
도 1은 본 발명의 양상들을 구현하기 위한 예시적인 시스템을 나타내는 도면.
도 2는 도 1의 시스템의 선택된 컴포넌트의 보다 상세한 블록도.
도 3은 도 1의 시스템을 사용하여 전송될 수 있는 예시적인 일련의 패킷들(패킷들은 콘텐츠 정보 중에 분산된 제어 정보를 포함함)을 나타내는 도면.
도 4-6은 제어 정보가 콘텐츠 정보와 관련된 각각의 다른 명령들을 전송하는 세 가지 다른 사용 시나리오를 나타내는 도면.
도 7은 콘텐츠 정보 및 제어 정보 모두를 포함하는 스트림을 생성하기 위한 흐름도 내의 예시적인 절차를 나타내는 도면.
도 8은 도 7에서 만들어진 스트림 내의 수신된 제어 정보를 해석하기 위한 흐름도 내의 예시적인 절차를 나타내는 도면.
도 9는 도 1에서 도시된 시스템의 양상들을 구현하기 위한 예시적인 컴퓨팅 환경을 나타내는 도면.
동일한 컴포넌트 및 특징을 참조하기 위해서 동일한 번호가 전체 개시 및 도면에 사용된다. 100 대의 번호는 원래 도 1에 있는 특징을 참조하고, 200 대의 번 호는 원래 도 2에 있는 특징을 참조하고, 300 대의 번호는 원래 도 3에 있는 특징을 참조하는 식이다.
본 발명은 제어 정보 전송을 위한 방안(strategy)에 관한 것이고 더 구체적으로는 매체 프레젠테이션 환경에서 호스트에서 클라이언트로 제어 정보를 전송하기 위한 방안을 구현하기 위한 것이다.
컴퓨터는 오디오 정보 및 비디오 정보와 같은 매체 콘텐츠 정보를 프리젠팅하는데 점점 더 인기있는 메커니즘이 되고 있다. 예컨대, 사용자는 네트워크를 통해서 원격 소스에 연결되어 있는 사용자의 집에서 퍼스널 컴퓨터를 사용해서 원격 소스로부터 콘텐츠 정보를 수신할 수 있다. 사용자는 완결된 파일 또는 단편적 스트리밍 방식으로 콘텐츠 정보를 수신할 수 있다. 또는, 컴퓨터가 튜너 메커니즘을 포함한다면, 사용자는 (유선 또는 무선 소스와 같이) 기존 방송 소스로부터 이 소스에 튜닝해서 콘텐츠 정보를 수신할 수 있다. 사용자는 그런 콘텐츠 정보를 집 안의 하나 이상의 적절한 재생 장치(텔레비전 또는 스테레오 시스템)에 전달할 수 있다. 마이크로소프트 코퍼레이션의 매체 센터(Media Center) 기술은 상술한 방식으로 매체 콘텐츠 정보를 수신하고 프리젠팅하기 위한 하나의 예시적인 일조의 도구들을 제공한다. 다른 도구들을 사용해서 사용자는 집 내의 다중 재생 장치를 프레젠테이션 네트워크로 결합할 수 있다. 그 후, 사용자는 매체 정보를 하나의 장 치로부터 집 안의 다른 장치로 전송할 수 있다. UPnP(Universal Plug and Play) 기술은 그런 홈 네트워크를 편리하게 설정하기 위한 일조의 도구를 제공한다.
이런 개발은 매체 정보의 기존 프레젠테이션보다 많은 재미있는 장점을 제공하는 반면에, 많은 새로운 문제들도 준다. 예컨대, 컴퓨터 사이의 매체 콘텐츠 정보를 전송하는 것에 추가해, 제어 정보를 전송하는 것도 필요할 수 있다. 예컨대, 장치는 제어 정보를 전송해서 수신 장치가 어떻게 매체 콘텐츠 정보를 처리해야 하는 지를 지시할 수 있다. 이것은 네트워크화된 환경 내에서 문제가 될 수 있다. 예컨대, 네트워킹 및 프로세싱 비정상은 수신 장치가 매체 콘텐츠 정보를 그와 연관된 제어 정보 없이 수신할 수 있고, 그 역도 가능하다.
따라서, 상술한 매체 프레젠테이션 환경과 같은 임의의 환경에서도 제어 정보를 더 효율적으로 전송하기 위한 기술이 필요하다.
하나의 예시적인 구현을 따라서, 호스트 모듈로부터 클라이언트 모듈로 콘텐츠 정보를 스트리밍 하기 위한 방법이 기술되었다. 방법은 (a)호스트 모듈에서 클라이언트 모듈로 전송되는 스트림 내에 삽입하기 위해 콘텐츠 정보의 유닛을 형성하는 단계, (b) 호스트 모듈에서, 스트림 내의 삽입을 위한 최소한 하나의 제어 정보 유닛을 형성하는 단계, (c) 호스트 모듈에서, 상기 최소한 하나의 제어 정보 유닛을 콘텐츠 정보의 유닛들 사이에 삽입하며, 상기 최소한 하나의 제어 정보 유닛의 위치는 제어 정보 유닛과 비교해서 클라이언트 모듈이 제어 정보를 수신시에 동작하는 방식에 관한 명령을 전달하는 단계 및 (d) 호스트 모듈에 의해서, 콘텐츠 정보의 유닛 및 상기 최소한 하나의 제어 정보 유닛을 포함하는 스트림을 클라이언트 모듈로 전송하며, 호스트 모듈은 동적으로 제어 정보를 가변해서 스트림의 재생을 제어하는 사용자에 의해 취해진 동작에 기반해 제어 정보를 스트림 내에 삽입하는 단계를 포함한다.
추가적인 예시적인 구현이 다음에 기술된다.
다음은 호스트 모듈로부터 클라이언트 모듈로 제어 정보를 전송하기 위한 예시적인 메커니즘 및 절차를 기술한다. 본 메커니즘 및 절차는 제어 정보를 대역 내로, 즉 매체 콘텐츠 정보와 동일한 통신 대역으로 전송한다. 보다 구체적으로는, 본 메커니즘 및 절차는 제어 정보를 콘텐츠 정보 내에 위치시켜서 제어 정보 및 콘텐츠 정보 사이의 관계(nexus)를 설정한다.
제어 정보는 콘텐츠 정보에 관한 임의의 정보를 전달할 수 있다. 예컨대, 제어 정보가 스트림의 종단에 삽입되면, 스트림의 종단을 식별하는 스트림 정보의 종단을 전달할 수 있다. 제어 정보가 스트림의 시작에 삽입되면, 시간상 제어 정보를 따르는 스트림에 관한 정보를 제어 정보가 전달할 수 있다. 예컨대, 이 시나리오에서, 제어 정보는 다음 스트림을 클라이언트 모듈에서 지정된 렌더링 리소스 또는 지정된 복호 키를 사용해서 처리되어야 함을 나타낼 수 있다. 제어 정보가 콘텐츠 정보의 두 스트림 사이에 위치하면, 하나의 스트림의 다른 것에 대한 관계에 관한 정보를 전달할 수 있다. 예컨대, 이 시나리오에서, 제어 정보는 두 스트림 사이의 비연속성이 있음을 가리킬 수 있다. 이 제어 정보 전송 패러다임의 추 가적인 애플리케이션이 있는데, 후술한다.
용어와 관련하여, 용어 "매체 콘텐츠 정보" (또는 줄여서 "콘텐츠 정보")는 오디오 리소스(예컨대, 음악 등), 정지 영상 리소스(예컨대, 디지털 사진 등), 동영상 리소스(예컨대, 텔레비전 프로그램, 영화 등), 컴퓨터 프로그램(예컨대, 게임 등), 마크업 언어 리소스(예컨대, 광역 패킷 네트워크를 통해서 수신된 하이퍼텍스트 마크업 언어 리소스 등) 등과 같은 임의 포맷으로 사용자가 소비할 수 있는 임의 유형의 리소스에 속할 수 있다. 정보는 아날로그 형태나 디지털형태 또는 아날로그 및 디지털의 결합 형태로 표현될 수 있다. 이 정보는 (컴퓨터 게임과 같이) 인터랙티브 콘텐츠도 포함(또는 생략)할 수도 있다.
제어 정보 용어는 콘텐츠 정보 상에 임의 유형의 베어링(bearing)을 가지는 임의 정보를 지칭한다. 예컨대, 제어 정보는 콘텐츠 정보의 소정의 특성을 기술 할 수 있거나 제어 정보에 수행되는 소정의 프로세싱의 행동을 기술할 수 있다. 용어 제어 이벤트"는 제어 정보의 생성을 야기하는 임의 유형의 이벤트를 지칭한다. 사용자는 입력 동작 표현을 야기해서(예컨대, 리모트 컨트롤 또는 다른 입력 메커니즘을 사용해서) 그런 이벤트를 트리거 할 수 있다. 또는 시스템이 소정의 조건이 충족되면 자동으로 제어 이벤트를 생성할 수 있다. 용어 "제어 프로세싱 태스크"는 제어 이벤트의 발생 시에 수행되는 동작을 지칭한다.
본 개시는 다음의 섹션을 포함한다. 섹션 A는 상술한 특성을 구현하기 위한 예시적인 시스템을 기술한다. 섹션 B는 섹션 A의 시스템의 동작을 도시하는 예시적인 흐름도를 기술한다. 그리고 섹션 C는 섹션 A 시스템을 구현하기 위한 예시적 인 컴퓨터 환경을 기술한다.
A. 예시적인 시스템
A.1 시스템의 개요
통상적으로, 본 명세서에 기술된 임의의 기능은 소프트웨어, 펌웨어(예컨대, 고정된 로직 회로), 수동 프로세싱 또는 이들 구현의 결합으로 구현될 수 있다. 본 명세서에 사용된 용어 "모듈", "기능" 및 "로직"은 통상 소프트웨어, 펌웨어 및 소프트웨어와 펌웨어의 결합을 나타낸다. 소프트웨어 구현의 경우에, 용어 "모듈", "기능" 및 "로직"은 프로세싱 장치 또는 장치들(예컨대, CPU 또는 CPUs) 상의 실행되는 때에, 특정 태스크를 수행하는 프로그램 코드를 나타낸다. 프로그램 코드는 하나 이상의 고정 및/또는 이동 컴퓨터 식별 가능 메모리 장치 내에 저장될 수 있다. 후술할 기술의 특징은 플랫폼 독립(platform-independent)인데, 임의의 상업 컴퓨팅 플랫폼 또는 네트워크 방안(strategy) 내에서 구현될 수 있다는 의미이다.
도 1은 상술한 동작을 수행하기 위한 예시적인 시스템(100)을 도시한다. 시스템(100)은 클라이언트 모듈(104)에 통신 메커니즘(106)을 통해 연결된 호스트 모듈(102)을 포함한다. 다른 역할 중에서, 호스트 모듈(102)은 매체 콘텐츠 정보 및 제어 정보를 클라이언트 모듈(104)에 거기에서의 프레젠테이션을 위해 제공하도록 한다. 호스트 모듈(102)은 매체 콘텐츠 정보를 임의 소스(108)로부터 획득한다. 클라이언트 모듈(104)은 콘텐츠 정보를 (제어 정보를 따라서) 임의의 프레젠테이션 장치(110)상에 프리젠팅할 수 있다. 사용자(112)는 클라이언트 모듈(104) 및/또는 호스트 모듈(102)과 (원격 제어 장치 또는 클라이언트 모듈(104) 또는 프레젠테이션 장치(106)와 연관된 키패드와 같은) 입력 모듈(114)과 같은 임의 유형의 입력 메커니즘을 통해서 상호작용할 수 있다. 도 1은 하나 이상의 다른 클라이언트 모듈(116)이 콘텐츠 정보를 호스트 모듈(102)로부터 수신하고 그 정보를 하나 이상의 다른 프레젠테이션 장치(118)로 프리젠팅할 수 있다는 것을 추가로 도시한다.
도 1에 도시된 하부구조(infrastructure)는 많은 다른 환경에 적용될 수 있다. 하나의 경우에, 호스트 모듈(102)은 사용자(112)의 집 안에 (또는 일부 다른 지역 환경 내에) 있는 범용 컴퓨터 장치를 나타낸다. 호스트 모듈(102)은 콘텐츠 정보를 (예컨대, 컴퓨터 장치의 하드 드라이브, 로컬 비디오 주크박스, 로컬 비디오 카메라, 로컬 마이크로폰 등에 의해 구현되는 것과 같은) 로컬 소스(108) 또는 원격 소스로부터 수신할 수 있다. 하나의 원격 소스는 기존 유선 소스 (예컨대, 케이블) 또는 (지상 안테나 또는 위성과 같은) 기존 무선 소스와 같은 기존 텔레비전 및 라디오 방송 소스를 나타낼 수 있다. 또 다른 원격 소스는 TCP/IP(예컨대, 인터넷)와 같은 네트워크를 통해 호스트 모듈(104)에 연결된 서버나 유사한 장치를 나타낼 수 있다. 여전히 다른 유형의 소스는 호스트 모듈(102)에 콘텐츠 정보를 제공할 수 있다.
임의 유형의 비즈니스 구성(business arrangement)은 콘텐츠 정보의 호스트 모듈(102)로의 보급(dissemination)을 지배할 수 있다. 소스(108)는 리소스 정보를 고정 시간 스케줄 또는 주문형 방식으로 배포할 수 있다. 소스(108)는 콘텐츠 정보를 수신하기 위한 비용을 부가하거나 비용이 없이 이 정보를 배포할 수 있다.
유사하게, 콘텐츠 정보 자체는 많은 형태를 가질 수 있다. 콘텐츠 정보는 라이브 콘텐츠 정보 또는 미리 저장된 콘텐츠 정보를 나타낼 수 있다. 콘텐츠 정보는 오디오 컴포넌트 및/또는 시각적(비디오) 컴포넌트 및/또는 인터랙티브 컴포넌트를 가질 수 있다. 콘텐츠 정보는 (하나 이상의 사진의 경우와 같이) 정적 정보 또는 (비디오와 같이)"동영상" 정보를 나타낼 수 있다. 콘텐츠 정보는 비디오 정보에 관해 (다른 포맷 중에서) MPEG-1, MPEG-2 또는 WMV 및 음악 정보에 관해 (다른 포맷 중에서) MP3, WMA 또는 WAV와 같은 임의 형태로 표현될 수 있다. 콘텐츠 정보는 디지털 형태, 아날로그 또는 아날로그 및 디지털 형태의 조합으로 표현될 수 있다. 여전히 다른 유형의 소스 포맷이 수신될 수 있다.
하나의 예시적인 구현에서, 클라이언트 모듈(104)은 사용자(112)의 집에 있는 다른 유형의 컴퓨터 장치를 나타낼 수 있다. 예컨대, 클라이언트 모듈(104)은 다른 범용 컴퓨터 장치를 나타낼 수 있다. 또는, 클라이언트 모듈(104)은 게임 콘솔 또는 호스트 모듈(102)로부터 콘텐츠 정보를 수신하는 것을 주목적으로 설계된 확장 콘솔(이에 의해 호스트 모듈(102)은 집 내에서 콘텐츠 정보를 전할 수 있는 출력 장치의 수를 "확장" 할 수 있음)과 같은 특정 목적 컴퓨터 장치를 나타낼 수 있다. 또는 클라이언트 모듈(104)은 프레젠테이션 장치(110) 자체 내에 집적된 로직 기능을 나타낼 수 있다.
예시적 홈 애플리케이션에 있어서, 사용자(112)는 여러 클라이언트 모듈(104)을 홈 내의 각기 다른 방들에 배치했을 수 있다(그 모듈들은 그 방들에 배치된 각기 다른 매체 프레젠테이션 장치에 연결되어 있다). 이들 클라이언트 모듈 각각은 호스트 모듈(102)로부터 콘텐츠 정보를 수신하도록 구성될 수 있다. 이들 클라이언트 모듈(104)이 호스트 모듈(102)에 대한 "확장"으로서 구현되는 경우, 이들 클라이언트 모듈(104)은 그 호스트 모듈(102)에 의하여 제공되는 여러 기능 인스턴스들을 실행하도록 구성될 수 있다. 시스템(100)은 또한 그 시스템(100)의 개별 구성 소자(component)들 간의 동시 사용이 가능하도록 구성될 수도 있다. 예를 들어, 제1 사용자는, 제2 사용자가 그 제1 사용자를 불필요하게 간섭하는 일 없이 클라이언트 모듈(104)을 이용하여 제2 태스크를 수행하는 동안, 호스트 모듈(102)을 사용하여 제1 태스크를 수행할 수 있다.
프레젠테이션 장치(110)는, 사용자가 이를 통하여 콘텐츠 정보를 사용할 수 있는 임의 유형의 장치일 수 있다. 프레젠테이션 장치(110)로서 가능한 타입으로는 텔레비전, 라디오, 스테레오 시스템, 컴퓨터 모니터 등이 포함된다.
통신 메커니즘(106)은 호스트 모듈(102)로부터 클라이언트 모듈(104)로 정보를 송신하기 위한 임의의 통로를 나타낼 수 있다. 로컬 환경에서, 통신 메커니즘(106)은 이더넷 네트워크(Ethernet network)와 같은 LAN으로 구현될 수 있다. TCP/IP 프로토콜 등과 같은 임의의 프로토콜 또는 프로토콜 조합이 호스트 모듈(102)로부터 클라이언트 모듈(104)로 정보를 전달하는데 이용될 수 있다. 통신 메카니즘(106)은 물리적으로 다양한 유선 통신 경로(구리선, 전력선, 광섬유 등) 등의 물리적 소자들로 이루어진 임의의 조합을 이용하여 구현될 수 있다. 도시되지는 않았지만, 통신 메커니즘(106)은 또한 다양한 라우터, 네임 서버, 게이트웨이 등을 포함할 수도 있다.
전술한 환경은 예시적일 뿐 제한적인 것은 아니다. 또 다른 애플리케이션에 있어서, 호스트 모듈(102)은 클라이언트 모듈(104)과 관련하여 원격지에 위치한 서버 타입의 컴퓨터나 피어 컴퓨터를 나타낼 수 있다. 예컨대, 호스트 모듈(102) 자체는 인터넷이나 소정의 기타 네트워크를 통하여 클라이언트 모듈(104)로 콘텐츠 정보를 제공하는 홈 외부의 서버 컴퓨터를 나타낼 수 있다. 또 다른 애플리케이션도 가능하여, 호스트 모듈(102)은 어디에 위치하는가 그리고 어떻게 구현되었는가에 관계없이 임의의 콘텐츠 정보 소스로 이해될 수 있고, 클라이언트 모듈(104)은 어디 위치하는가 그리고 어떻게 구현되었는가에 관계없이 임의의 콘텐츠 정보 수신처로 이해될 수 있다. 이어서 다음에 설명하는 도 9는, 적절히 구성된 범용 컴퓨터 장치(예컨대, PC 등)나 특수 목적 컴퓨터 장치(예컨대, 게임 콘솔, 확장 장치 등)를 이용하는 호스트 모듈(102)이나 클라이언트 모듈(104)의 일 구현에 관하여 세부적 사항들을 더 제공한다.
앞서 개괄하여 살펴본 내용과 함께, 호스트 모듈(102) 및 클라이언트 모듈(104)의 각 예시적 구성 소자들에 주목하기로 할 것이다.
호스트 모듈(102)에서 시작하면, 수신 모듈(102)이 정보 소스(108)로부터 정보를 수신한다. 수신 모듈(120)은 정보 소스(108)에 관한 물리 주파수로 동조하는 튜너를 나타낼 수도 있고, 다수의 소스에 대해 동시에 동조할 수 있는 다수의 튜너들을 나타낼 수도 있다. 이에 더하여 또는 이와 달리, 수신 모듈(102)은 디지털 네트워크 소스로부터 콘텐츠 정보를 수신하는 네트워크 인터페이스 모듈(임의 유형의 모뎀 등)을 나타낼 수 있다.
전송 처리 모듈(122)은 콘텐츠 정보 상의 여러 다양한 처리 태스크를 수행하여 통신 메커니즘(106)을 통한 클라이언트 모듈(104)로의 송신을 위하여 이를 포매팅한 다음, 그러한 정보를 송신한다. 도 2는 전송 처리 모듈(122)의 예시적 구성을 도시한 도면이다. 본 논의와 관련하여 이 시점에서는 전송 처리 모듈(122)이 송신에 대비하기 위하여 콘텐츠 정보를 필터링하고/하거나 분석하고, 그 정보의 비트율을 조정하고, 해당 정보를 패킷들로 어셈블링하고, 그 패킷들을 통신 메커니즘(106)으로 출력할 송신 스트림으로 멀티플렉싱하는 등의 동작을 할 수 있다는 점만 말해두기로 한다.
도 1은 스트림(124)으로서 정보 콘텐츠를 송신하는 것을 도시하고 있다. 스트림은 단편적 형태의 콘텐츠 정보 송신을 나타내며, (파일 송신에는 전체 콘텐츠 정보가 포함되는 것과 달리) 클라이언트 모듈(104)은 그와 같은 정보 전체 보디를 수신하지 않고서 콘텐츠 정보의 일부만을 수신하여 렌더링할 수도 있다. 스트림(124)은 본질적으로 콘텐츠 정보를 전달하는 복수의 유닛(126)(예컨대, 패킷들), 즉 A/V 리소스의 경우라면 실제 시청각 데이터를 포함할 수 있다. 스트림(124)은 또한 콘텐츠 정보(126) 스트림에 분산되어 있는 하나 이상의 제어 유닛(128)(예컨대, 패킷들)을 포함할 수도 있다. 제어 패킷(126)의 스트림(124) 내 위치는 그 안에 포함된 제어 정보가 콘텐츠 정보에 어떻게 적용될 것인지에 관한 정보를 전달한다. (그 "위치"는 실제 송신되는 스트림에 속한 패킷들의 물리적 순서보다는 스트림(124) 내에서 패킷들에 할당된 시퀀스 번호로써 반영될 수 있다. 이는, 패킷 네트워크의 경우 일부 패킷이 "무순서"로 수신되어, 클라이언트 모듈(104)로 하여금 적절한 순서로 이를 재조립할 것을 요구할 것이 예상되기 때문이다.) 예컨대, 예시적으로 제어 패킷(128)은 시간상 그것에 선행하는 콘텐츠 정보 스트림이 끝났다는 사실을 전달할 수 있다. 또는 예시적 제어 패킷(128)은 예정된 처리 동작이 시간상 다음에 이어지는 콘텐츠 정보(126)에 적용되어야 한다는 사실을 전달할 수 있다. 또는 예시적 제어 패킷(128)은 그 선행한 콘텐츠 정보와 그 다음에 이어지는 콘텐츠 정보(126) 간에 불연속이 있다는 점을 전달할 수 있다. 제어 패킷(128)에 관한 또 다른 응용이나 해석이 이루어질 수도 있다. 이하의 섹션 A.2는 제어 정보 생성 및 처리에 관한 세부 사항들을 더 제공한다.
플레이어 제어 모듈(130)은 호스트 모듈(102) 내의 구성 소자들을 제어한다. 예컨대, 제어 모듈(130)은 다수의 잠재적 플레이어 인스턴스들에 대해 클라이언트 모듈(104)과의 통신 세션을 설정한 다음 클라이언트 모듈(04)의 상태를 제어할 수 있다. 모듈(130)은 또한 (이하 기술되는 바와 같이) 소정의 기준을 충족시키는 제어 처리 태스크들을 합병하는데 있어서 역할을 담당할 수도 있다.
플레이어 제어 모듈(130)은 또한 별도의 통신 경로(132)를 통하여 클라이언트 모듈로 제어 명령어들을 전달할 수도 있다. 그러므로, 경로(132) 상에서 전송되는 제어 정보는 스트림(124) 내의 대역 내 전송 정보를 보충한다(또는, 또 다른 해석에 의하면, 대역 내 전송 제어 정보가 통신 경로(132) 상에서 전달되는 제어 정보를 보충한다고 말할 수도 있다). 하나의 예시적 설계 패러다임에 따르면, 콘텐츠 정보와 관련하여 이러한 정보의 타이밍(또는 위치 정렬)을 전달하는 것이 중요한 환경에서는 그 제어 정보가 대역 내 정보로서 전송될 수 있다. 대역 내 제어 정보 송신이 적절한 예시적 환경은 도 4 내지 6을 참조하여 기술된다(이하 설명될 것임). 통신 경로(132)는 대역 내 제어 정보만큼 정확한 시간/위치 방식으로 전달될 필요가 없는 제어 이벤트 정보를 주고 받는데 이용될 수 있다. 일반적으로, 각기 다른 애플리케이션들은 이들 애플리케이션의 고유 요구 사항들에 따라 각기 다른 제어 이벤트를 주고 받기 위하여 각기 다른 통신 채널을 이용할 수 있다. 통신 경로(132)는 통신 메커니즘(106)에 의하여 이용된 것과 다른 통신 메커니즘 및/또는 프로토콜을 이용할 수 있고, 동일한 메커니즘 및 프로토콜을 이용할 수도 있다.
추가적인 제어 경로가 포함될 수도 있다. 예컨대, 호스트 모듈(102)은 클라이언트 모듈(104) 상에 그래픽 정보 및 메타데이터 관련 정보의 디스플레이를 제어하기 위하여 또 다른 제어 경로(도시되지 않음)를 이용할 수 있다. 예컨대, 프레젠테이션 장치(110) 상에서 다양한 메뉴, 프로그램 바, 채널 정보 등의 디스플레이를 조절하는데 이와 같은 제어 채널이 이용될 수 있다. 이와 같은 태스크를 성취하는데 이용될 수 있는, 제한이 아닌 한 가지 예시적인 프로토콜이 원격 데스크탑 프로토콜(Remote Desktop Protocol:RDP)이다. 이 프로토콜은 시스템(100)으로 하여금 본질적으로 클라이언트 모듈(104)을 통하여 프레젠테이션 장치(110) 상으로 호스트 모듈(102)과 연관된 그래픽 기능을 "투영(project)"하도록 한다. 그러나, 이러한 전략은 제한적인 것이 아니라 예시적인 것이며, 이와 다른 기법들도 그래픽 정보를 프레젠테이션 장치(110)로 전달하는데 이용될 수 있다. 일반적으로, 메타데이터 관련 정보 및 그래픽 정보는 호스트 모듈(102) 및/또는 클라이언트 모듈(104) 및/또는 프레젠테이션 장치(110) 및/또는 기타 소정의 모듈로부터 유래할 수 있고, 또한 임의의 모듈 또는 모듈 조합이 이러한 메타데이터-관련 정보 및 그래픽 정보의 디스플레이를 조절하는데 이용될 수 있다.
마지막으로, 호스트 모듈(102)은 (본 설명에서는 초점이 되지 않는) 기타 지정되지 않은 태스크들을 수행하기 위하여 많은 수의 또 다른 모듈(132)을 이용할 수 있다.
이제 클라이언트 모듈(104)의 구성 소자들을 설명하면, 클라이언트 모듈은 스트림(124)을 수신하여 그 스트림에 대한 처리를 수행하기 위한 수신 처리 모듈(134)을 포함한다. 도 2는 이러한 구성 소자(134)에 관한 추가적 세부 사항들을 제공한다. 본 설명과 관련하여 이 시점에서는 그 구성 소자(134)가 스트림(124) 내의 정보를 디멀티플렉싱하여 그 안에 포함된 정보를 추출해낼 수 있다는 점만을 말해두기로 한다. 패킷들은 그 구성, 예컨대 그 패킷이 오디오 정보를 포함하는지, 비디오 정보를 포함하는지, 제어 정보를 포함하는지 등을 식별하는 ID 정보를 포함할 수 있다. 패킷이 제어 정보를 포함하는 경우, 수신 처리 모듈(134)은 그 제어 정보에 기초하여 하나 이상의 제어 동작을 수행한다. 또한, 수신 처리 모듈(134)은 콘텐츠 정보를 그 정보의 프레젠테이션을 위한 적절한 렌더링 장치로 전달한다. 또한, (이하 설명되는 바와 같이) 클라이언트 제어 모듈(136) 뿐만 아니라 수신 처리 모듈(134)도 다양한 동작을 수행하기 위한 렌더링 장치들을 제어할 수 있다. 수신 처리 모듈(134)은 대역 내 제어 정보(예컨대, 제어 정보(128))를 이용하여 렌더링 장치들을 제어할 수 있다.
클라이언트 제어 처리 모듈(136)은 또한 그 클라이언트 모듈(104) 내의 구성 소자들을 제어한다. 클라이언트 제어 처리 모듈(136)은 또한 경로(132)를 통해서 제어 정보를 송신하고 수신하기 위하여 플레이어 제어 모듈(130)과 대화한다. 예컨대, 클라이언트 제어 모듈(136)은, 그 클라이언트 모듈(104)이 그 스트림(124)의 끝에 도달하였음을 나타내는 스트림 이벤트의 종료 이벤트, 사용자(112)가 콘텐츠 정보의 프레젠테이션을 일시 중지시켰음을 나타내는 일시 중지 이벤트, 사용자(112)가 콘텐츠 정보의 프레젠테이션을 중지하였음을 나타내는 중지 이벤트, 다양한 에러 이벤트 등과 같은 다양한 비동기식 이벤트들을 플레이어 제어 모듈(102)로 송신하는데 이용되는 인터페이스를 제공할 수 있다.
프레젠테이션 처리 모듈(138)은 콘텐츠 정보를 렌더링하기 위한 다양한 기능을 포함할 수 있다. 예컨대, 오디오 드라이버, 비디오 드라이버 등을 포함할 수 있다. 프레젠테이션 처리 모듈(138)은 프레젠테이션 장치(110)와 별개의 모듈로서 구현될 수도 있고, 프레젠테이션 장치(110) 자체와 통합될 수도 있다.
마지막으로, 클라이언트 모듈(104)은 (본 설명에서는 초점이 되지 않는) 기타 지정되지 않은 태스크들을 수행하기 위하여 많은 수의 또 다른 모듈(140)을 이용할 수 있다.
도 2는 또한 전송 처리 모듈(122), 수신 처리 모듈(134) 및 프레젠테이션 처리 모듈(138)에 관한 세부 사항들을 도시하고 있다.
우선, 전송 처리 모듈(122)은 정보 처리 모듈(202)을 포함할 수 있다. 정보 처리 모듈(202)은 또한 정보 소스(108)로부터 수신된 콘텐츠 정보에 관한 다양한 처리 동작들을 수행하도록 유연하게 구성될 수 있는 일련의 처리 툴들을 포함할 수 있다. 즉, 그와 같은 툴들로 이루어진 다양한 모음 및 조합들은 수신된 콘텐츠 정보의 타입이 무엇인지, 어떤 종류의 출력 포맷이 요구되는지 등에 기초하여 선택될 수 있다. 그와 같은 툴들의 예로는,
?개인용 비디오 리코더(PVR) 타입의 기능, 예컨대 콘텐츠 정보를 기록하고, 콘텐츠 정보를 일시 정지시키고, 그 콘텐츠 정보 내의 각기 다른 위치들로 점프할 수 있는 능력 등을 제공하는 버퍼 관리자;
?콘텐츠 정보를 원하는 포맷으로 인코딩하는 다양한 인코더, 또는 주어진 포맷으로 표현된 콘텐츠 정보를 디코딩하는 디코더;
?클라이언트 모듈(104)에서 콘텐츠 정보의 프레젠테이션 품질을 개선하기 위하여 콘텐츠 정보를 변형하는 다양한 콘텐츠 필터 및 분석기들(각기 다른 애플리케이션들은 특정 애플리케이션의 특징 및 요구에 따라 각기 다른 필터 및 분석기 모음을 채택할 수도 있고, 그와 같은 필터 및 분석기를 완전히 생략할 수도 있다);
?스트림(124)의 비트율을 제어하는 다양한 속도 필터들(예컨대, 충돌이나 간섭으로 인하여 이용 가능한 네트워크 대역폭이 떨어지는 경우 그와 같은 필터가 비트율을 낮출 수 있다. 이러한 필터는 스트림을 다시 인코딩하거나 프레임을 떨어뜨리는 등의 동작에 의해 비트율을 낮출 수 있다.); 및
?제어 메커니즘(106)을 통하여 송신할 콘텐츠를 암호화하고, 기타 저작권 관리 기능을 수행하기 위한 다양한 디지털 저작권 관리(DRM) 필터가 포함될 수 있다.
패킷 형성 모듈(204)은 정보 처리 모듈(202)로부터 출력을 수신하여 이 출력 을 통신 메커니즘(106)을 통해 전송하기에 적당한 형태로 둔다. 패킷 형성 모듈(204)은 콘텐츠 정보를 처리하기 위하여 임의의 프로토콜을 사용할 수 있다. 제한이 아닌 하나의 예시를 제공하는 것으로서, 도 3은 다수의 패킷 생성을 도시한다. 스트림(302)은 키 프레임들 및 델타 프레임들의 시퀀스를 시작으로 형성될 수 있다. 키 프레임은 다른 프레임을 참조하지 않고 비디오를 재구성하는데 사용될 수 있는 비디오 프레임의 독립 실행형의(stand-alone) 표시를 나타낸다. 델타 프레임은 시퀀스 내에서 다른 정보에 기초하여 비디오 프레임을 예측적으로 재구성하는데 사용될 수 있다. 비디오, 오디오 및 다른 정보를 포함하는 상술한 데이터로부터 일련의 스트림이 형성된다. 그 다음 일련의 스트림을 패킷으로 분리하여 패킷화된 스트림이 형성된다. 각 패킷은 헤더와 페이로드(payload)를 포함할 수 있다. 마지막으로 패킷들은 그룹들로 다중화되어 전송 스트림으로서 통신 메커니즘(106)을 통해 송신될 수 있다. 상기의 개념을 구현하는데 다수의 표준- 이에 한정되지 않지만, MPEG-2, RTP(Real-Time Transport Protocol), 다양한 특허 표준 등을 포함함 -이 사용될 수 있는데, 본 명세서에서 설명된 원리들은 임의의 특정 표준에 전용인 것은 아니다.
도 2를 참조하면, 패킷 형성 모듈(204)은 패킷들을 그룹으로 모으고 이 그룹들을 다중화시킴으로써 상기의 작업들을 수행한다. 제어 정보 생성 모듈(206)은 콘텐츠 패킷들(126)에 더하여 스트림(124)에 제어 패킷들(128)을 삽입한다. 패킷 형성 모듈(204)은 큐(208)를 사용하여 스트림(124)을 생성하고 전송한다. 즉, 큐(208)는 수신된 순서로 패킷들을 저장하고, 작업자 스레드(도시 생략)는 큐(208)로 부터 패킷들을 추출하여 이들을 다른 패킷들과 결합한다.
다시 도 3을 살펴보면, 이 도면은 일련의 패킷들(304, 306, 308,...310)의 일 예시를 도시한다. 각 패킷(304, 306, 308, ...310)은 각자의 헤더(312, 314, 316, ...318) 및 수반하는 페이로드(320, 322, 324, ...326)를 포함한다. 페이로드는 오디오 정보 또는 비디오 정보를 포함할 수 있다. 나아가, 본 시스템(100)에 따르면, 페이로드는 제어 정보를 또한 포함할 수 있다. 예를 들어, 페이로드(320, 322 및 324)는 오디오 또는 비디오 정보(328, 330, 332)를 포함하는 반면, 페이로드(326)는 제어 정보(334)를 포함한다. 헤더(312, 314, 316, ... 318)는 그들 각자의 페이로드(320, 322, 324, ...326)가 포함하는 데이터 유형의 지시자를 포함하여 다양한 식별 데이터(336, 338, 340, ... 342)를 포함한다. 보다 구체적으로는, 헤더(312, 314 및 316)는 그들 각자의 페이로드가 오디오 정보 또는 비디오 정보(328, 330, 332)를 포함함을 지시하는 식별 데이터(336, 338, 340)를 포함하는 반면, 헤더(318)는 그의 페이로드(326)가 제어 정보(334)를 포함함을 지시하는 식별 데이터(342)를 포함한다.
도 2를 참조하면, 수신 처리 모듈(134)은 스트림(124)을 수신하도록 구성된 수신기(210)를 포함한다. 정보 추출 모듈(212)은 수신기(210)의 출력을 수신하여 수신된 스트림(124)으로부터 다양한 정보 필드를 추출한다. 예를 들어, 정보 추출 모듈(212)은 스트림(124)을 디멀티플렉싱하여 그것이 오디오 정보, 비디오 정보 또는 제어 정보를 포함하는지 여부를 패킷-바이-패킷 기반하에 판정할 수 있다. 이러한 작업은 수신된 패킷(304, 306, 308, 310)의 헤더(312, 314, 316,... 318) 내 에 있는 식별 데이터(336, 338, 340, ...342)를 조사함으로써 수행될 수 있다. 수신 처리 모듈(34)은 평가된 콘텐츠에 기초하여 페이로드(320, 322, 324, ...326)의 콘텐츠에 적절한 처리를 수행한다. 제어 패킷으로 전달된 제어 정보는 클라이언트 모듈(104)에서 수행되는 처리 동작을 관리하는 명령어를 포함할 수 있다.
수신 처리 모듈(134)은 수신했던 콘텐츠 정보를 프레젠테이션 처리 모듈(138)로 포워딩한다. 프레젠테이션 처리 모듈(138)은 다양한 디코더들 및 드라이버들(214, 216) 외에 다른 처리 메커니즘들을 사용하여 콘텐츠 정보를 렌더링한다.
마지막으로, 도 2는 클라이언트 모듈(104)이 지터 버퍼(jitter buffer; 218)(이하에서는 간단히 버퍼로 지칭됨)를 포함함을 나타낸다. 버퍼(218)는 자기가 스트림(124)으로부터 수신한 소정의 양의 콘텐츠 정보를 FIFO(first-in-first-out)기반으로 저장한다. 프레젠테이션 처리 모듈(138)은 콘텐츠 정보를 렌더링할 때 이 버퍼(218)로부터 데이터를 뽑아낸다. 전송 중 글리치(glitch) 이벤트의 경우(예컨대, 약간의 중단), 프레젠테이션 처리 모듈(138)은 버퍼(218)로부터 이전에 수신된 콘텐츠 정보를 빼내어 콘텐츠 정보의 프레젠테이션에 글리치로 인한 악영향이 없게 한다. 그러나, 스트림(124)으로부터 그 이상 콘텐츠 정보를 수신하지 못하고, 버퍼(218)에 저장된 콘텐츠 정보의 끝에 도달한 경우, 더 이상의 콘텐츠 정보의 처리가 가능하지 않기 때문에 프레젠테이션 처리 모듈(138)은 성능 저하를 겪게 될 것이다. 일반적으로, 도 2는 버퍼(218)를 수신 처리 모듈(134)의 하나의 구성요소로서 도시하고 있으나, 버퍼(218)는 수신된 콘텐츠 정보를 처리하는 일련의 모듈들 내에 어떤 곳에도 위치할 수 있다. 또한, 클라이언트 모듈(104)은 복수의 버퍼를 포함할 수 있다.
다양한 상황에서 버퍼(218)를 비우는 것이 바람직한 경우가 있다. 예를 들어, 사용자가 하나의 스트림으로부터 다른 스트림으로 점프를 하는 경우, 버퍼(218)에 저장된 콘텐츠 정보는 더 이상 네트워크 글리치를 보상함에 있어서 의존할 수 있는 유용한 것이 아니다. 따라서, 클라이언트 모듈(204)은 이러한 상황에서 버퍼(218)를 비우고, 다른 스트림으로부터 취한 콘텐츠 정보로 다시 채우게 된다. 클라이언트 모듈(204)은 채널 변경(사용자가 하나의 프로그램 스트림으로부터 다른 프로그램의 스트림으로 점프하는 경우)에 따라 및 찾기(사용자가 동일 프로그램의 한 부분에서 다른 부분, 예컨대, 시간상으로 이전 또는 이후에 발생한 부분으로 점프하는 경우)에 따라 버퍼(218)를 비울 수 있다.
그러나, 클라이언트 모듈(104)이 스트림의 불연속으로 영향을 받는 시스템(100) 내 유일한 구성요소는 아니다. 사용자(114)가 채널을 변경한 경우, 예컨대, 클라이언트 제어 처리 모듈(136)이 호스트 모듈(102)에게 이 이벤트를 통지할 수 있고, 호스트 모듈(102)은 적절한 대응수단을 취함으로써 응답할 수 있다. 즉, 예를 들어서, 호스트 모듈 측의 전송 처리 모듈(122) 또한, 큐 내에 저장된 정보와 구성 설정을 포함할 수 있는데, 이 정보는 스트림(124) 내에 중단에 기초하여 비워질 필요가 있을 수 있다. 따라서, 호스트 모듈(102)은 또한 전송 처리 모듈(122) 내에 저장된 관련 정보를 비우는 것과 다른 구성 작업들을 다루는 것을 조정할 수 있다. 전송 처리 모듈(122)은 다양한 스트림 경계 정보를 스트림(124) 속으로 삽입하여 스트림 내에 그러한 중단들을 분명하게 구분 지음으로써 불연속들에 대해 응답한다. 그 후, 수신 처리 모듈(134)은 스트림 경계 정보에 도달할 때까지 수신된 스트림(124) 내에서 패킷들을 스킵할 수 있다.
그러므로, 클라이언트 모듈(104) 및 호스트 모듈(102) 간 상호작용은 제어 정보의 교환, 하나 이상의 버퍼를 비우고 다시 채움 및 다양한 설정들의 재구성 등을 요하면서 상대적으로 복잡해질 수 있음이 명백하다. 이러한 복잡함은 사용자가 스트림(124) 내에 중단을 야기하는 동작을 호출한 경우, 상당한 정도의 지연시간을 초래할 수 있다. 이 문제를 해결하기 위하여, 시스템(100)은 사용자(112)가 단기간 내에 다수의 제어 액션을 취하는 상황에서 지연 시간을 줄이는 합체 모듈(coalescing module)을 포함할 수 있다. 예를 들어, 합체 모듈은 사용자가 단기간 내에 일련의 채널 변경 명령 또는 찾기 명령을 반복적으로 내리는 것과 관련된 지연시간을 줄임으로써 동작할 수 있다.
A.2. 대역 내 제어 정보의 생성 및 해석
도 4-6은 콘텐츠 정보에 관하여 클라이언트 모듈(104)에 명령어를 제공하기 위하여 제어 패킷을 콘텐츠 정보 스트림 내에 삽입하는 세 개의 일반적인 시나리오를 기술한 것이다. 명령어는 콘텐츠 정보에 관한 정보를 전달하거나, 콘텐츠 정보에 수행될 처리 등을 기술할 수 있다. 콘텐츠 정보 스트림 내에서 제어 패킷의 위치는 클라이언트 모듈(104)이 어떻게 그 제어 패킷 내에 포함된 제어 명령어를 콘텐츠 정보에 적용시켜야 하는지를 결정하기 때문에 중요하다. (패킷들의 그룹 내에서 제어 패킷들의 "위치"는 예컨대, 그러한 패킷들의 실제 수신 순서라기보다는 패킷에 할당된 일련 번호로서 나타낼 수 있는데, 왜냐하면, 패킷들은 일반적인 패 킷 네트워크에서 순서를 벗어나서 수신될 수 있기 때문이다.)
도 4에서 시작하면, 이 도면은 제어 정보(402)가 콘텐츠 정보 스트림 X(404)의 꼬리 끝에 위치한 시나리오(400)를 도시한다. (도 4-6에서, 가장 먼저 전송된 정보가 도면의 가장 오른쪽 끝에 나타나 있음을 주목한다.) 이 시나리오(400)는 제어 정보(402)가 스트림의 종료(EOS; the end of the stream)를 구분하는 정보를 제공하는 경우에 적합하다. 콘텐츠 정보에 더하여 인 밴드에 EOS 제어 정보(402)를 위치시키는 것은 유용한데, 왜냐하면 수신 처리 모듈(134)을 인에이블시켜서 재생 모드로부터 유휴(idle) 모드로 스위치 등을 시키는데 필요한 임의의 단계들을 취할 때를 정확히 알 수 있게 하기 때문이다.
도 5는 제어 정보(502)가 스트림 Y(504)의 시작 부분에 위치한 다른 시나리오(500)를 도시한다. 이 위치의 경우는 클라이언트 모듈(104)에 의해 스트림 Y(504) 상에 후속적으로 수행될 동작에 관하여 명령어를 전달하는데 사용될 수 있다. 이 시나리오(500)의 일례를 들자면 복호화 키 변경에 관련된 것이다. 키 변경에 있어서, 호스트 모듈(102)은 클라이언트 모듈(104)에게 이후 호스트 모듈(102)로부터 수신되는 콘텐츠 정보를 복호하기 위해서는 상이한 키를 사용해야함을 통지한다. 호스트 모듈(102)은 별도의 제어 채널(132)을 통해 클라이언트 모듈(104)에게 먼저 새로운 키를 송신함으로써 이 작업을 수행할 수 있다. 그 다음 전송 처리 모듈(122)은 키 변경 제어 정보(502)를 인 밴드 콘텐츠 정보 스트림(124)으로 삽입할 수 있다. 포함된 제어 데이터뿐 아니라 그 제어 정보(502)의 위치도 수신 처리 모듈(134)에게 제어 정보(502) 이후의 스트림 Y를 해석하기 위해서는 먼 저 수신한 새로운 키를 적용해야함을 통지하는 것이다.
스트림의 시작 부분에 위치한 다른 유형의 제어 정보(502)는 수신 처리 모듈(134)에게 클라이언트 모듈(104)에서 제공되는 렌더링 리소스들 중 이후의 스트림 Y(504)를 처리하는데에 어떤 것이 인에이블 및/또는 디스에이블되어야 할지를 통지하는데 사용될 수 있다. 예를 들어, 오디오 스트림이 디지털 형태로 복사되는 것이 허가되지 않은 경우, 이것은 디지털 오디오 출력을 디스에이블하는데 사용될 수 있다(예컨대, 콘텐츠 보호의 경우).
도 6은 제어 정보(602)가 스트림 X(604) 및 스트림 Y(606) 사이에 위치한 또 다른 시나리오(600)를 도시한다. 이 위치의 경우 스트림 X(604) 및 스트림 Y(606) 간 불연속과 같은 스트림 X(604) 및 스트림 Y(606) 사이의 관계에 관한 정보를 전달하는데 사용될 수 있다. 일부 데이터 손실에서 비롯된 이러한 스트림들 간에 불연속이 있을 수 있다.
또는 불연속은 클라이언트 모듈(104)이나 호스트 모듈(102)(또는 어떤 다른 모듈)을 통해 사용자(112)가 발행한 명령을 표현하기 위해서일 수도 있는데, 이 명령은 호스트 모듈(102)로 포워딩된다(예컨대, 제어 경로(132)를 통해). 예를 들어, 이러한 종류의 불연속은 사용자(112)가 채널을 스위칭하여 하나의 데이터 스트림으로부터 다른 것으로 스위칭했을 때, 또는 사용자(112)가 찾기 명령을 발행하여 데이터 스트림의 일부분에서 다른 부분으로 스위칭했기 때문에 트리거될 수 있다. 이 외에도 다른 불연속의 원인들이 있을 수 있다.
이러한 경우들 중 어떤 것이든, 호스트 모듈(102)은 스트림(124)에 제어 정 보(602)를 추가하여 불연속을 표시할 수 있는데, 그러한 제어 정보(602)는 스트림 경계 제어 정보를 구성하게 된다. 예를 들어, 다음의 일련의 동작들로 표현된 예시적인 시나리오를 고려하자.
ㆍ사용자(112)가 채널 변경 명령을 발행한다.
ㆍ채널 변경 명령어가 호스트 모듈(102)로 포워딩된다(또는 호스트 모듈(102)과 관련된 컴퓨터 장치로 직접 입력된다).
ㆍ호스트 모듈(102)은 시스템(100)으로부터 예전 콘텐츠 정보(관련 예전 채널)를 지우기 위해 시스템(100) 내 적절한 버퍼들을 비우도록 하는 명령어를 발행한다.
ㆍ호스트 모듈(102)의 전송 처리 모듈(122)은 예전 채널 관련 스트림과 새로운 채널 관련 스트림 사이에 불연속을 표시하기 위해 스트림(124)에 스트림 경계 제어 정보(602)를 추가한다.
ㆍ 클라이언트 모듈(104)은 이 스트림 경계 제어 정보(602)를 수신하여 적절히 반응한다. 예를 들어서, 호스트 모듈(102)은 클라이언트 모듈(104)에게 스트림 경계 제어 정보(602) 송신 및 클라이언트 모듈에게로 플래그 설정 촉구를 할 것임을 미리 경고할 수 있다. 이 플래그 결과, 클라이언트 모듈(602)은 약속된 스트림 경계 제어 정보(602)를 수신하기 전까지 수신된 모든 패킷들을 버리도록 구성될 수 있다.
ㆍ 스트림 경계 제어 정보를 수신하면, 클라이언트 모듈(104)은 자기의 버퍼를 새로운 채널 정보로 채우고, 규정된 정도로 버퍼가 채워지면 그것의 프레젠테이 션을 시작하도록 진행한다.
일반적으로, 제어 정보를 콘텐츠 정보 스트림 내에 내장하는 데에는 적어도 2가지 장점이 있다. 첫째, 클라이언트 모듈(104)이, 제어 정보를 콘텐츠 정보와 연결하는 복잡한 추가적인 연결 정보를 제공할 필요 없이도, 관련 콘텐츠 정보와 동기화하여 제어 정보를 수신할 수 있다. 둘째, 대역 내 제어 정보를 전송하는 것은, 만약 실제로 특정 구현이 개별적인 제어 채널(132)을 사용하도록 선택한다면, 개별적인 제어 채널(132) 상에 부가되는 로드를 줄여준다.
제어 정보 자체는 다양한 포맷들로 표현될 수 있다. 제한이 아닌 예시로서, 이 정보는 RTP와 같은 임의의 프로토콜 내의 확장 패킷을 사용하여 표현될 수 있다. 패킷들은, 패킷의 페이로드에 의해 전달되는 스트림의 특성을 식별하는 식별 정보를 포함할 수 있다. 식별 정보는, 페이로드가 오디오-비주얼 정보, 제어 정보, 또는 일부 다른 종류의 정보를 포함하는지를 식별할 수 있다.
제어 패킷의 예시적인 포맷은 다음과 같다.
// Control codes
enum CONTROL_CODES
{
STREAM_BOUNDARY = 0,
STREAM_EOS,
MACROVISION
ROTATE_KEY
}
union MicrosoftExtensionPacketHeader
{
struct
{
// 제어 패킷의 유형을 나타내는 제어 코드
DWORD controlCode : 16;
// 본 제어 패킷 내에 포함되는 페이로드의 길이
DWORD payloadLength : 16;
} bitField;
DWORD dwExtPacketHdr;
};
Stream Boundary 필드는 스트림 내의 불연속점(discontinuity)을 나타낸다.
End Of Stream(EOS) 필드는, 클라이언트 모듈(104)로 스트리밍되고 있는 스트림의 끝을 나타낸다.
Macrovision 필드는 본 필드의 패킷의 페이로드가 규정된 특정한 동작 모드에 적합한 비전 제어 코드들을 포함하는지를 나타낸다.
Rotate Key 필드는 본 필드의 패킷 후에 수신된 모든 샘플들이 새로운 키로 암호화되는지를 나타낸다. 본 패킷이 삽입되기 전에, 새로운 키는 제어 채널을 통해 전송될 수 있다.
B. 예시적인 동작 방법
도 7 및 8은 도 1의 시스템의 동작을 흐름도 형태로 개시한다. 논의를 돕기 위해, 특정 동작들이 특정 순서로 실행되는 별개의 단계들로 구성되는 것으로 개시된다. 이러한 구현들은 예시적인 것이며 제한적인 것이 아니다. 여기서 개시되는 특정 단계들은 함께 그룹화되어 단일 동작으로 실행될 수 있으며, 특정 단계들은 본 명세서에서 설명된 예들에서 사용되는 순서와 다른 순서로 실행될 수 있다.
도 7은 콘텐츠 정보(126)와 제어 정보(128)를 모두 포함하는 스트림(124)을 생성하기 위한 절차를 개시한다.
단계 702에서, 호스트 모듈(102)은 콘텐츠 정보(126)를 형성한다. 이것은 소스들(108)로부터 수집된 콘텐츠 정보를 포함하며, 전송을 위한 원하는 형태로 배치하기 위한 처리가 콘텐츠 정보 상에서 선택적으로 실행된다.
단계 704에서, 호스트 모듈(102)은 제어 정보(128)를 형성한다. 호스트 모듈(102)은, 스트림의 끝을 신호해야 하거나, 새로운 키의 사용을 신호해야 하거나, 불연속점의 존재를 신호해야 하는 것 등과 같은 다양한 상황에 의해 제어 정보를 형성하도록 재촉될 경우, 제어 정보를 형성한다. 또 다른 경우들로서, 클라이언트 모듈(104) 또는 호스트 모듈(102)과 상호작용하는 사용자(112)에 의해 취해지는 행위들에 의해 제어 정보를 형성하도록 재촉되기 때문에, 호스트 모듈(102)은 제어 정보를 형성한다.
단계 706에서, 호스트 모듈(102)의 전송 처리 모듈(122)은 콘텐츠 정보(126)와 제어 정보(128)를 결합한다. 이것은 제어 정보(128)를 콘텐츠 정보(예컨대, A/V 정보)를 포함하는 패킷들의 멀티플렉싱된 스트림 내로 삽입함으로써 수행될 수 있다.
단계 708에서, 전송 처리 모듈(122)은 스트림(124)을 클라이언트 모듈(104)로 전송하는데, 여기서 스트림(124)은 콘텐츠 정보(126)와 제어 정보(128)를 모두 포함한다.
도 8에 도시된 절차는 수신된 스트림(124)에 존재하는 제어 정보를 해석하여 처리하는 데 사용된다.
단계 802에서, 수신 처리 모듈(134)은 대역 내 제어 정보(128)를 포함하는 스트림(124)을 수신한다.
단계 804에서, 수신 처리 모듈(134)은 스트림(124)으로부터 수신된 패킷이 제어 정보를 포함하는지를 결정한다. 이것은, 패킷의 헤더 정보를 조사하여 제어 정보를 포함하는지를 나타내는 정보를 포함하는지를 결정함으로써 실행될 수 있다.
단계 806에서, 클라이언트 모듈(104)은 제어 정보(128)에 기초하여 수신된 콘텐츠 정보(126)의 처리를 실행한다. 이러한 처리는 도 4-6을 참조하여 전술된 임의의 동작들의 형태를 취할 수 있다. 예를 들어, 제어 정보(128)는 수신된 콘텐츠 정보를 처리하기 위해 특정 복호화 키들 또는 렌더링 리소스들을 사용해야 한다는 것을 클라이언트 모듈(104)에 알릴 수 있다. 스트림 불연속의 경우에, 클라이언트 모듈(104)은, 버퍼(예컨대, 버퍼(218))에 채우기를 시작하는 스트림 경계 제어 정보를 수신할 때까지 패킷들을 무시할 수 있다.
C. 예시적인 컴퓨터 환경
예시적인 일 실시예에서, 호스트 모듈(102)과 클라이언트 모듈(104)은 모두, 각각 호스트 및 클라이언트 능력으로 동작하도록 적절하게 구성된 2대의 컴퓨터 장치들에 의해 구현될 수 있다. 이 경우, 도 9는 호스트 모듈(102) 또는 클라이언트 모듈(104) 중 어느 하나를 구현하는 데 사용될 수 있는 예시적인 컴퓨터 환경(900)에 대한 정보를 제공한다.
컴퓨팅 환경(900)은 범용 컴퓨터(902) 및 디스플레이 장치(904)를 포함한다. 그러나, 컴퓨팅 환경(900)은 다른 종류의 컴퓨팅 장치를 포함할 수도 있다. 예를 들어, 비록 도시되지는 않았지만, 컴퓨터 환경(900)은 포켓용 또는 랩탑 장치들, 셋톱 박스들, 게임 콘솔들, 확장형 컴퓨터들, 메인프레임 컴퓨터들, 로직 기능 내장된 렌더링 장치들 등을 포함할 수 있다. 또한, 도 9는 논의를 돕기 위해 함께 그룹화되는 컴퓨터 환경(900)의 요소들을 도시한다. 그러나, 컴퓨팅 환경(900)은 분산형 처리 구성을 사용할 수도 있다. 분산형 컴퓨팅 환경에서, 컴퓨팅 리소스들은 그 환경 곳곳에 물리적으로 분산될 수 있다.
예시적인 컴퓨터(902)는 하나 이상의 프로세서들 또는 처리 장치들(906), 시스템 메모리(908) 및 버스(910)를 포함한다. 버스(910)는 다양한 시스템 컴포넌트들을 함께 연결한다. 예를 들어, 버스(910)는 프로세서(906)를 시스템 메모리(908)에 연결한다. 버스(910)는, 메모리 버스 또는 메모리 제어기, 페리페럴 버스(peripheral bus), 가속 그래픽 포트, 및 임의의 다양한 버스 아키텍처들을 사용하는 로컬 버스 또는 프로세서를 포함하는 임의의 종류의 버스 구조 또는 버스 구조들의 조합을 사용하여 구현될 수 있다.
컴퓨터(902)는 또한, 각각 착탈형(removable) 또는 비착탈형의 다양한 종류의 휘발성 및 비휘발성 매체를 포함하는 다양한 컴퓨터 판독가능 매체를 포함할 수 있다. 예를 들어, 시스템 메모리(908)는, RAM(912)과 같은 휘발성 메모리, 및 ROM(914)과 같은 비휘발성 메모리의 형태로 컴퓨터 판독가능 매체를 포함할 수 있다. ROM(914)은, 가령 시동 동안에 컴퓨터(902) 내의 소자들 간에 정보를 전송하는 것을 돕는 기본 루틴을 포함하는 입력/출력 시스템(BIOS)(916)를 포함한다. RAM(912)은 전형적으로 데이터 및/또는 프로그램 모듈들을 처리 유닛(906)에 의해 빠르게 액세스될 수 있는 형태로 포함한다.
다른 종류의 컴퓨터 저장 매체는, 비착탈식 비휘발성 자기 매체로부터 판독하고 기록하기 위한 하드 디스크 드라이브(918), 착탈식 비휘발성 자기 디스크(예컨대, "플로피 디스크)(906)로부터 판독하고 기록하기 위한 자기 디스크 드라이브(920), 및 CD-ROM, DVD-ROM, 또는 다른 광학 매체와 같은 착탈식 비휘발성 광 디스크(926)로부터 판독하고 기록하기 위한 광 디스크 드라이브(924)를 포함한다. 하드 디스크 드라이브(918), 자기 디스크 드라이브(920) 및 광 디스크 드라이브(924)는 각각 하나 이상의 데이터 매체 인터페이스(928)에 의해 시스템 버스(910)에 연결된다. 대안적으로, 하드 디스크 드라이브(918), 자기 디스크 드라이브(920) 및 광 디스크 드라이브(924)는 SCSI 인터페이스(도시되지 않음) 또는 다른 결합 메커니즘에 의해 시스템 버스(910)에 연결될 수 있다. 비록 도시되지는 않았지만, 컴퓨터(902)는 자기 카세트 또는 기타 자기 저장 장치, 플래시 메모리 카드, CD-ROM, DVD 또는 기타 광학 저장장치, 전기적으로 소거가능한 프로그램가능한 ROM(EEPROM) 등과 같은 다른 유형의 컴퓨터 판독 매체도 포함할 수 있다.
일반적으로, 상기 식별된 컴퓨터 판독가능 매체는, 컴퓨터 판독가능 명령어들 , 데이터 구조들, 프로그램 모듈들, 및 컴퓨터(902)에 의해 사용되는 기타 데이터에 대한 비휘발성 저장을 제공한다. 예를 들어, 판독가능 매체는 운영체계(930), 애플리케이션 모듈들(932), 기타 프로그램 모듈들(934), 및 프로그램 데이터(936)를 저장할 수 있다.
컴퓨터 환경(900)은 다양한 입력 장치들을 포함할 수 있다. 예를 들어, 컴퓨터 환경(900)은, 커맨드들 및 정보를 컴퓨터(902) 내로 입력하기 위한 키보드(938) 및 포인팅 장치(예컨대, "마우스")(940)를 포함한다. 컴퓨터 환경(900)은 마이크로폰, 조이스틱, 게임 패드, 위성 안테나, 시리얼 포트, 스캐너, 카드 판독 장치, 디지털 또는 비디오 카메라 등과 같은 다른 입력 장치들(도시되지 않음)을 포함할 수 있다. 입력/출력 인터페이스(942)는 입력 장치를 처리 유닛(906)으로 연결한다. 보다 일반적으로는, 입력 장치들은, 패러렐 포트, 시리얼 포트, 게임 포트, 유니버설 시리얼 버스(USB) 포트 등과 같은 임의의 종류의 인터페이스 및 버스 구조들을 통하여 컴퓨터(902)에 연결될 수 있다.
컴퓨터 환경(900)은 또한 디스플레이 장치(904)를 포함한다. 비디오 어댑터(944)는 디스플레이 장치(904)를 버스(910)로 연결한다. 디스플레이 장치(904)에 더하여, 컴퓨터 환경(900)은, 스피커(도시되지 않음), 프린터(도시되지 않음) 등과 같은 다른 출력 주변 장치들을 포함할 수 있다. 임의의 이들 유닛들은 도 1에 도시된 타깃 엔티티들(120, 122, ... 124)을 구성할 수 있다.
컴퓨터(902)는 원격 컴퓨팅 장치(946)와 같은 하나 이상의 원격 컴퓨터들로의 논리 접속을 사용하는 네트워크화된 환경에서 동작한다. 원격 컴퓨팅 장치(946)는, 범용 퍼스널 컴퓨터, 휴대용 컴퓨터, 서버, 게임 콘솔, 네트워크 확장 장치 등을 포함하는 임의의 종류의 컴퓨터 장비를 포함할 수 있다. 원격 컴퓨팅 장치(946)는 컴퓨터(902)와 관련하여 전술된 모든 특징들 또는 이들의 일부 부분집합을 포함할 수 있다.
WAN, LAN 등과 같은, 임의의 유형의 네트워크(948)가 컴퓨터(902)를 원격 컴퓨팅 장치(946)와 연결하기 위해 사용될 수 있다. 컴퓨터(902)는 네트워크(948)를 네트워크 인터페이스(950)를 통하여 연결하며, 이것은 광역 접속(broadband connectivity), 모뎀 접속, DSL 접속, 또는 기타 접속 전략을 사용할 수 있다. 비록 도시되지는 않았지만, 컴퓨팅 환경(900)은, 컴퓨터(902)를 (예컨대, 변조된 무선 신호, 변조된 적외선 신호 등을 통하여) 원격 컴퓨팅 장치(946)와 연결하기 위한 무선 통신 기능을 제공할 수 있다.
일 실시예에서, 컴퓨터(902) 및 컴퓨터(946)는 각각 호스트 모듈(102) 및 클라이언트 모듈(104)에 해당할 수 있다. 또 다른 실시예에서, 컴퓨터(902) 및 컴퓨터(946)는 각각 호스트 모듈(102) 및 소스(108)에 해당할 수 있다(여기서, 소스(108)는 서버 컴퓨터를 구성한다). 기타 애플리케이션들이 사용가능하다.
다수의 예들이 본 명세서에서 대안적으로 제공되었다(예컨대, 경우 A 또는 경우 B). 또한, 비록 본 명세서가 모든 예에서 이들 결합적인 경우들에 대해 명시 적으로 언급하지는 않았지만, 본 명세서는 단일 실시예에서의 대안들(예컨대, 경우 A 및 경우 B)을 결합하는 경우들을 포함한다.
보다 일반적으로는, 비록 본 발명이 구조적 특징들 및/또는 방법적 행위들에 특정하는 언어로서 개시되었지만, 첨부되는 특허청구범위에서 정의되는 본 발명이 개시된 상기 특정 특징들 또는 행위들로 반드시 제한되지는 않는다는 것이 이해되어야 할 것이다. 차라리, 특정 특징들 및 행위들은 청구된 발명을 구현하는 예시적인 형태들로서 개시된다.

Claims (25)

  1. 호스트 모듈로부터 클라이언트 모듈로 콘텐츠 정보를 스트리밍(streaming) 하기 위한 방법에 있어서,
    상기 호스트 모듈에서, 상기 클라이언트 모듈로 전송되어야 할 스트림 내에 포함되도록 콘텐츠 정보의 유닛들을 제공하는 단계;
    상기 호스트 모듈에서, 상기 스트림 내에 포함되도록 제어 정보의 적어도 한 유닛을 제공하는 단계;
    상기 호스트 모듈에서, 상기 제어 정보의 적어도 한 유닛을 상기 콘텐츠 정보의 유닛들 사이에 삽입하는 단계 - 상기 콘텐츠 정보의 유닛들에 대한 상기 제어 정보의 적어도 한 유닛의 위치는 상기 클라이언트 모듈이 상기 제어 정보를 수신하면 동작하도록 하는 방식에 관련된 명령어들을 결정하기 위하여 이용됨 -; 및
    상기 호스트 모듈에 의해, 상기 콘텐츠 정보의 유닛들 및 상기 제어 정보의 적어도 한 유닛을 포함하는 상기 스트림을 상기 클라이언트 모듈로 전송하는 단계
    를 포함하며,
    상기 호스트 모듈은, 상기 스트림의 재생을 제어하는 사용자에 의해 입력된 명령에 기초하여 상기 스트림 내에 삽입하는 상기 제어 정보를 변화시키는 콘텐츠 정보 스트리밍 방법.
  2. 제1항에 있어서, 상기 제어 정보의 적어도 한 유닛은 콘텐츠 정보의 유닛들의 그룹의 꼬리 단(tail end)에 위치하는, 콘텐츠 정보 스트리밍 방법.
  3. 제2항에 있어서, 상기 제어 정보의 적어도 한 유닛은 상기 콘텐츠 정보의 유닛들의 그룹에 속하는 스트림 말단(end of stream; EOS) 정보를 전달하는, 콘텐츠 정보 스트리밍 방법.
  4. 제1항에 있어서, 상기 제어 정보의 적어도 한 유닛은 콘텐츠 정보의 유닛들의 그룹의 헤드 단(head end)에 위치하는, 콘텐츠 정보 스트리밍 방법.
  5. 제4항에 있어서, 상기 제어 정보의 적어도 한 유닛은 상기 콘텐츠 정보의 유닛들의 그룹에 적용될 렌더링 기능(rendering functionality)의 양상들을 전달하는, 콘텐츠 정보 스트리밍 방법.
  6. 제4항에 있어서, 상기 제어 정보의 적어도 한 유닛은 상기 콘텐츠 정보의 유닛들의 그룹에 적용될 복호화 키(decryption key)를 변화시키는 명령어를 전달하는, 콘텐츠 정보 스트리밍 방법.
  7. 제1항에 있어서, 상기 제어 정보의 적어도 한 유닛은 콘텐츠 정보의 유닛들의 2개의 그룹 사이에 위치하는, 콘텐츠 정보 스트리밍 방법.
  8. 제7항에 있어서, 상기 제어 정보의 적어도 한 유닛은 상기 콘텐츠 정보의 유닛들의 2개의 그룹 사이의 불연속(discontinuity)에 관한 정보를 전달하는, 콘텐츠 정보 스트리밍 방법.
  9. 제8항에 있어서, 상기 불연속은 하나의 스트림으로부터 또 다른 스트림으로의 전이(transition)를 나타내는, 콘텐츠 정보 스트리밍 방법.
  10. 제9항에 있어서, 상기 하나의 스트림으로부터 또 다른 스트림으로의 전이는 개별적인 채널들 상에서 하나의 프로그램으로부터 또 다른 프로그램으로의 이동(movement)을 나타내는, 콘텐츠 정보 스트리밍 방법.
  11. 제9항에 있어서, 상기 하나의 스트림으로부터 또 다른 스트림으로의 전이는 프로그램의 하나의 부분으로부터 동일 프로그램의 또 다른 부분으로의 이동을 나타내는, 콘텐츠 정보 스트리밍 방법.
  12. 제1항에 있어서,
    상기 클라이언트 모듈에서, 상기 제어 정보의 적어도 한 유닛 및 상기 콘텐츠 정보의 유닛들을 포함하는 상기 스트림을 수신하는 단계;
    상기 스트림 내에서 상기 제어 정보의 적어도 한 유닛의 존재를 검출하는 단계; 및
    상기 클라이언트 모듈의 동작을 관리(govern)하기 위해 상기 제어 정보의 적어도 한 유닛 내에 포함된 제어 정보를 적용하는 단계
    를 더 포함하는, 콘텐츠 정보 스트리밍 방법.
  13. 제12항에 있어서, 상기 적용하는 단계는, 상기 제어 정보의 적어도 한 유닛 내에 포함된 스트림 말단 명령어들(end of stream instructions)의 수신에 응답하여, 상기 클라이언트 모듈을 일시정지(pausing)시키는 단계를 포함하는, 콘텐츠 정보 스트리밍 방법.
  14. 제12항에 있어서, 상기 적용하는 단계는, 상기 제어 정보의 적어도 한 유닛 내에 포함된 암호화 관련 명령어들의 수신에 응답하여, 복호화 키를 수신된 콘텐츠 정보의 후속 처리에 적용하는 단계를 포함하는, 콘텐츠 정보 스트리밍 방법.
  15. 제12항에 있어서, 상기 적용하는 단계는, 상기 제어 정보의 적어도 한 유닛 내에 포함된 스트림 경계 명령어들의 수신에 응답하여, 클라이언트 모듈 버퍼를 다시 채우는 것을 재개하는 단계를 포함하는, 콘텐츠 정보 스트리밍 방법.
  16. 제1항에 있어서, 상기 콘텐츠 정보의 유닛들 및 상기 제어 정보의 적어도 한 유닛은 일정한 포맷(uniform format)을 가지는 패킷들을 포함하는, 콘텐츠 정보 스트리밍 방법.
  17. 제16항에 있어서, 상기 패킷들은 상기 패킷들이 콘텐츠 정보 또는 제어 정보를 포함하는지를 나타내는 식별 정보(identification information)를 포함하는, 콘텐츠 정보 스트리밍 방법.
  18. 제1항에 있어서, 상기 콘텐츠 정보는 오디오 정보 및 비주얼 정보 중 적어도 하나를 포함하는, 콘텐츠 정보 스트리밍 방법.
  19. 제1항의 방법을 구현하기 위한 머신 판독가능한 명령어들을 저장하고 있는 컴퓨터 판독가능 기록 매체.
  20. 클라이언트 모듈에 의해 스트리밍 콘텐츠 정보를 수신하기 위한 방법에 있어서,
    호스트 모듈로부터 콘텐츠 정보의 유닛들 사이에 위치하는 제어 정보의 적어도 한 유닛을 포함하는 스트림을 수신하는 단계;
    상기 스트림 내에서 상기 제어 정보의 적어도 한 유닛의 존재를 검출하는 단계;
    상기 클라이언트 모듈이 동작하는 방식을 관리하기 위해 상기 제어 정보의 적어도 한 유닛 내에 포함된 제어 정보를 적용하는 단계
    를 포함하며,
    상기 호스트 모듈은 상기 스트림의 재생을 제어하는 사용자에 의해 입력된 명령에 기초하여 상기 스트림 내에 삽입하는 상기 제어 정보를 변화시키는 콘텐츠 정보 수신 방법.
  21. 제20항의 방법을 구현하기 위한 머신 판독가능한 명령어들을 저장하고 있는 컴퓨터 판독가능 기록 매체.
  22. 콘텐츠 정보를 클라이언트 모듈로 스트리밍하기 위한 호스트 모듈에 있어서,
    상기 호스트 모듈은 전송 처리 모듈(transfer processing module)을 포함하며,
    상기 전송 처리 모듈은
    상기 클라이언트 모듈로 전송되어야 할 스트림 내에 포함되도록 콘텐츠 정보의 유닛들을 제공하고,
    상기 스트림 내에 포함되도록 제어 정보의 적어도 한 유닛을 제공하며,
    상기 제어 정보의 적어도 한 유닛을 상기 콘텐츠 정보의 유닛들 사이에 삽입하고 - 상기 콘텐츠 정보의 유닛들에 대한 상기 제어 정보의 적어도 한 유닛의 위치는 상기 클라이언트 모듈이 상기 제어 정보를 수신하면 동작하도록 하는 방식에 관련된 명령어들을 결정하기 위하여 이용됨 -,
    상기 콘텐츠 정보의 유닛들 및 상기 제어 정보의 적어도 한 유닛을 포함하는 상기 스트림을 상기 클라이언트 모듈로 전송하도록 구성되며,
    상기 호스트 모듈은 상기 스트림의 재생을 제어하는 사용자에 의해 입력된 명령에 기초하여 상기 스트림 내에 삽입하는 상기 제어 정보를 변화시키는, 호스트 모듈.
  23. 호스트 모듈로부터 스트리밍 콘텐츠 정보를 수신하기 위한 클라이언트 모듈에 있어서,
    상기 클라이언트 모듈은 수신 처리 모듈(reception processing module)을 포함하며,
    상기 수신 처리 모듈은
    상기 호스트 모듈로부터 콘텐츠 정보의 유닛들 사이에 위치하는 제어 정보의 적어도 한 유닛을 포함하는 스트림을 수신하고,
    상기 스트림 내에서 상기 제어 정보의 적어도 한 유닛의 존재를 검출하며,
    상기 클라이언트 모듈이 동작하는 방식을 관리하기 위해 상기 제어 정보의 적어도 한 유닛 내에 포함된 제어 정보를 적용하도록 구성되며,
    상기 호스트 모듈은 상기 스트림의 재생을 제어하는 사용자에 의해 입력된 명령에 기초하여 상기 스트림 내에 삽입하는 상기 제어 정보를 변화시키는, 클라이언트 모듈.
  24. 호스트 모듈과 클라이언트 모듈 사이에서 콘텐츠 정보를 전송하기 위한 시스템에 있어서,
    상기 시스템은 호스트 모듈과 수신 모듈을 포함하며,
    상기 호스트 모듈은
    상기 클라이언트 모듈로 전송되어야 할 스트림 내에 포함되도록 콘텐츠 정보의 유닛들을 제공하고,
    상기 스트림 내에 포함되도록 제어 정보의 적어도 한 유닛을 제공하며,
    상기 제어 정보의 적어도 한 유닛을 상기 콘텐츠 정보의 유닛들 사이에 삽입하고 - 상기 콘텐츠 정보의 유닛들에 대한 상기 제어 정보의 적어도 한 유닛의 위치는 상기 클라이언트 모듈이 상기 제어 정보를 수신하면 동작하도록 하는 방식에 관련된 명령어들을 결정하기 위하여 이용됨 -,
    상기 콘텐츠 정보의 유닛들 및 상기 제어 정보의 적어도 한 유닛을 포함하는 상기 스트림을 상기 클라이언트 모듈로 전송하도록 구성되고,
    상기 수신 모듈은
    상기 호스트 모듈로부터 콘텐츠 정보의 유닛들 사이에 위치하는 제어 정보의 적어도 한 유닛을 포함하는 스트림을 수신하고,
    상기 스트림 내에서 상기 제어 정보의 적어도 한 유닛의 존재를 검출하며,
    상기 클라이언트 모듈이 동작하는 방식을 관리하기 위해 상기 제어 정보의 적어도 한 유닛 내에 포함된 제어 정보를 적용하도록 구성되며,
    상기 호스트 모듈은 상기 스트림의 재생을 제어하는 사용자에 의해 입력된 명령에 기초하여 상기 스트림 내에 삽입하는 상기 제어 정보를 변화시키는, 시스템.
  25. 제24항에 있어서, 상기 클라이언트 모듈은 결합 메커니즘(coupling mechanism)을 통하여 상기 호스트 모듈에 결합된 확장 유닛으로서 구현되며, 상기 확장 유닛은 상기 호스트 모듈로부터 상기 콘텐츠 정보를 수신하도록 구현되는, 시스템.
KR1020050068778A 2004-07-29 2005-07-28 대역 내 제어 정보를 전송하기 위한 전략 KR101159335B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/901,682 2004-07-29
US10/901,682 US8266311B2 (en) 2004-07-29 2004-07-29 Strategies for transmitting in-band control information

Publications (2)

Publication Number Publication Date
KR20060048848A KR20060048848A (ko) 2006-05-18
KR101159335B1 true KR101159335B1 (ko) 2012-06-22

Family

ID=35395432

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050068778A KR101159335B1 (ko) 2004-07-29 2005-07-28 대역 내 제어 정보를 전송하기 위한 전략

Country Status (5)

Country Link
US (1) US8266311B2 (ko)
EP (1) EP1622386A3 (ko)
JP (1) JP5005895B2 (ko)
KR (1) KR101159335B1 (ko)
CN (1) CN1770777A (ko)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4519736B2 (ja) * 2004-09-15 2010-08-04 株式会社東芝 データ伝送システム、データ伝送方法およびメディア装置
JP5184757B2 (ja) * 2006-05-16 2013-04-17 京セラ株式会社 放送受信装置および表示方法
EP1879346A1 (en) * 2006-07-14 2008-01-16 Sony Service Centre (Europe) N.V. System and method of audio/video streaming
JP4347322B2 (ja) * 2006-07-14 2009-10-21 ソニー株式会社 受信装置および方法、並びにプログラム
US20080077650A1 (en) * 2006-08-29 2008-03-27 Jared Matthew A Method and apparatus for transferring data between a home networked device and a storage system
US8341282B2 (en) * 2006-11-21 2012-12-25 Verizon Patent And Licensing Inc. Hybrid buffer management
CN101335883B (zh) * 2007-06-29 2011-01-12 国际商业机器公司 在数字视频广播系统中对视频流进行处理的方法和设备
US7769035B1 (en) * 2007-07-13 2010-08-03 Microsoft Corporation Facilitating a channel change between multiple multimedia data streams
US9211473B2 (en) * 2008-12-15 2015-12-15 Sony Computer Entertainment America Llc Program mode transition
US7957423B2 (en) 2008-01-02 2011-06-07 Cisco Technology, Inc. Packet error correction
WO2009096684A2 (ko) * 2008-01-29 2009-08-06 Samsung Electronics Co,. Ltd. 버디를 위한 컨텐츠 레코딩 제어 방법 및 그 장치
US8973028B2 (en) 2008-01-29 2015-03-03 Samsung Electronics Co., Ltd. Information storage medium storing metadata and method of providing additional contents, and digital broadcast reception apparatus
CN101933039B (zh) 2008-01-29 2015-07-08 三星电子株式会社 内容共享服务提供方法及其装置
WO2009100420A2 (en) * 2008-02-07 2009-08-13 Realnetworks, Inc. Selective advertising in media content
US8281377B1 (en) 2008-04-15 2012-10-02 Desktone, Inc. Remote access manager for virtual computing services
US20090268732A1 (en) * 2008-04-29 2009-10-29 Thomson Licencing Channel change tracking metric in multicast groups
US9009219B2 (en) 2010-01-27 2015-04-14 Vmware, Inc. Native viewer use for service results from a remote desktop
US9274821B2 (en) 2010-01-27 2016-03-01 Vmware, Inc. Independent access to virtual machine desktop content
US9237172B2 (en) * 2010-05-25 2016-01-12 Qualcomm Incorporated Application notification and service selection using in-band signals
US8548460B2 (en) 2010-05-25 2013-10-01 Qualcomm Incorporated Codec deployment using in-band signals
WO2012130297A1 (en) 2011-03-30 2012-10-04 Phonak Ag Wireless sound transmission system and method
US10983747B2 (en) 2011-07-15 2021-04-20 Vmware, Inc. Remote desktop mirroring
US10976981B2 (en) 2011-07-15 2021-04-13 Vmware, Inc. Remote desktop exporting
US8929290B2 (en) 2011-08-26 2015-01-06 Qualcomm Incorporated In-band signaling to indicate end of data stream and update user context
US9467305B2 (en) 2012-03-07 2016-10-11 Vmware, Inc. Multitenant access to multiple desktops on host machine partitions in a service provider network
JP6268066B2 (ja) * 2013-09-20 2018-01-24 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカPanasonic Intellectual Property Corporation of America 送信方法、受信方法、送信装置及び受信装置
US9549015B2 (en) * 2014-04-15 2017-01-17 Lattice Semiconductor Corporation Communication of multimedia data streams over multiple communication lanes
US10623535B2 (en) * 2015-07-15 2020-04-14 Sony Corporation Signal processing apparatus and signal processing method
WO2018236337A1 (en) * 2017-06-19 2018-12-27 Hewlett-Packard Development Company, L.P. PROCESSORS OF AUDIO, VIDEO AND VOICE COMMUNICATION
US11176607B1 (en) 2018-06-28 2021-11-16 Square, Inc. Capital loan optimization
CN113542795B (zh) * 2020-04-21 2023-04-18 腾讯科技(深圳)有限公司 视频处理方法、装置、电子设备及计算机可读存储介质
CA3214519A1 (en) * 2021-04-20 2022-10-27 Jesse Dorogusker Live playback streams

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19990064054A (ko) * 1995-10-06 1999-07-26 실리콘 이미지, 인크. 디지탈 비디오 전송용 블럭 코딩
JP2002252844A (ja) 2001-02-26 2002-09-06 Megafusion Corp データ配信システム
KR20020075568A (ko) * 2001-03-26 2002-10-05 삼성전자 주식회사 암호화된 데이터를 포함한 데이터의 전송 및 수신 제어 방법
KR20030078354A (ko) * 2002-03-29 2003-10-08 한국전자통신연구원 디지털 데이터 방송을 위한 동기화 데이터 삽입 장치 및그 방법

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR0128244B1 (ko) 1992-09-23 1998-04-02 배순훈 병렬 구조를 갖는 부호 화상 데이타의 복호 장치
US5652627A (en) 1994-09-27 1997-07-29 Lucent Technologies Inc. System and method for reducing jitter in a packet-based transmission network
KR100455497B1 (ko) 1995-07-21 2004-12-30 코닌클리케 필립스 일렉트로닉스 엔.브이. 압축된텔레비전신호,압축된텔리비전신호전송방법및장치,압축된텔레비전신호수신방법및장치
US5737552A (en) 1995-07-28 1998-04-07 Starwave Corporation Machine, method and medium for linear programming with interactive conversational interface
US6674858B1 (en) 1997-12-10 2004-01-06 Hitachi, Ltd. Receiving device, recording and reproducing device and receiving/recording-reproducing system for digital broadcast signal
JP2000059328A (ja) 1998-08-06 2000-02-25 Matsushita Electric Ind Co Ltd 多重化装置、及びその多重化方法
US6314569B1 (en) 1998-11-25 2001-11-06 International Business Machines Corporation System for video, audio, and graphic presentation in tandem with video/audio play
US6795863B1 (en) * 1999-08-10 2004-09-21 Intline.Com, Inc. System, device and method for combining streaming video with e-mail
WO2001019088A1 (en) 1999-09-09 2001-03-15 E-Studiolive, Inc. Client presentation page content synchronized to a streaming data signal
US6747991B1 (en) 2000-04-26 2004-06-08 Carnegie Mellon University Filter and method for adaptively modifying the bit rate of synchronized video and audio streams to meet packet-switched network bandwidth constraints
US7181759B2 (en) * 2000-05-26 2007-02-20 Bigband Networks, Inc. System and method for providing interactivity for end-users over digital broadcast channels
US7471834B2 (en) 2000-07-24 2008-12-30 Vmark, Inc. Rapid production of reduced-size images from compressed video streams
JP2002077811A (ja) 2000-08-24 2002-03-15 Sony Corp データ処理方法及び装置、データ伝送システム、伝送媒体
JP2002112194A (ja) 2000-09-29 2002-04-12 Sony Corp データ処理方法及び装置、データ伝送システム、伝送媒体
US20020116471A1 (en) 2001-02-20 2002-08-22 Koninklijke Philips Electronics N.V. Broadcast and processing of meta-information associated with content material
US6742082B1 (en) * 2001-06-12 2004-05-25 Network Appliance Pre-computing streaming media payload method and apparatus
US7950033B2 (en) 2001-10-10 2011-05-24 Opentv, Inc. Utilization of relational metadata in a television system
US20030196202A1 (en) 2002-04-10 2003-10-16 Barrett Peter T. Progressive update of information
JP2005526453A (ja) * 2002-05-21 2005-09-02 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 条件付きアクセス・システム
US20030222843A1 (en) 2002-05-28 2003-12-04 Birmingham Blair B.A. Systems and methods for encoding control signals initiated from remote devices
JP3966503B2 (ja) 2002-05-30 2007-08-29 インターナショナル・ビジネス・マシーンズ・コーポレーション コンテンツ再生制御装置、データ管理装置、蓄積型コンテンツ配信システム、コンテンツの配信方法、制御データ送信サーバ、プログラム
US6865336B2 (en) 2003-02-26 2005-03-08 Thomson Licensing S.A. User-specific time values for time-based navigation functions of video recorder systems
US20040194134A1 (en) 2003-03-25 2004-09-30 Gunatilake Priyan Deveka Method and system for rapid channel change providing stored images of current channel programs
JP2004350043A (ja) 2003-05-22 2004-12-09 Sony Corp サーバ装置、情報処理装置、および情報処理方法、並びにコンピュータ・プログラム
US20050094733A1 (en) 2003-10-31 2005-05-05 Daniell Piers J. Fast channel surfing

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19990064054A (ko) * 1995-10-06 1999-07-26 실리콘 이미지, 인크. 디지탈 비디오 전송용 블럭 코딩
JP2002252844A (ja) 2001-02-26 2002-09-06 Megafusion Corp データ配信システム
KR20020075568A (ko) * 2001-03-26 2002-10-05 삼성전자 주식회사 암호화된 데이터를 포함한 데이터의 전송 및 수신 제어 방법
KR20030078354A (ko) * 2002-03-29 2003-10-08 한국전자통신연구원 디지털 데이터 방송을 위한 동기화 데이터 삽입 장치 및그 방법

Also Published As

Publication number Publication date
US20060026293A1 (en) 2006-02-02
CN1770777A (zh) 2006-05-10
JP5005895B2 (ja) 2012-08-22
US8266311B2 (en) 2012-09-11
JP2006081159A (ja) 2006-03-23
KR20060048848A (ko) 2006-05-18
EP1622386A3 (en) 2007-07-18
EP1622386A2 (en) 2006-02-01

Similar Documents

Publication Publication Date Title
KR101159335B1 (ko) 대역 내 제어 정보를 전송하기 위한 전략
US7890985B2 (en) Server-side media stream manipulation for emulation of media playback functions
EP3041253B1 (en) Transmission method, receiving method, transmission device, and receiving device
US7788395B2 (en) Adaptive media playback
EP2733936A1 (en) Transmission device, method for controlling transmission device, control program, and recording medium
US20140040496A1 (en) On-demand http stream generation
US20060195884A1 (en) Interactive multichannel data distribution system
US20070058926A1 (en) Optimizing trick modes for streaming media content
US20150195327A1 (en) Method and apparatus for streaming dash content over broadcast channels
KR101492512B1 (ko) 기존의 디스플레이 디바이스들에 대한 온 스크린 디스플레이 데이터의 전달
KR20060025559A (ko) 다중 mpeg-2 전송 스트림들의 동시 전송
US7685616B2 (en) Strategies for coalescing control processing
JP4475336B2 (ja) タイムスタンプ付加装置およびタイムスタンプ付加方法、並びにプログラム
US20100064054A1 (en) Remote fast forward and rewind functionality for client devices
JP7308134B2 (ja) 送信方法および受信方法
JP2006339855A (ja) ネットワーク制御装置、符号化方式変換装置、及びコンテンツデータ再生システム
KR100516411B1 (ko) 패킷화된 데이터 통신 인터페이스 장치의 pci-직렬 버스 인터페이스 장치를 자율적으로 동작하는 방법 및 시스템
JP5085553B2 (ja) データ・ソースからデータ・シンクへのデータ・フローの転送のための方法、データ・シンク装置、データ・ソース装置、およびこれを実行するための装置
US20140141875A1 (en) Temporary modification for extending functionality of computer games and software applications.
JP2009290868A (ja) 送信機と電子装置間の信号ストリームの簡略化された伝送方法
US10630745B2 (en) MMT apparatus and MMT method for processing media data
KR20050094729A (ko) 콘텐츠 데이터 처리 장치 및 방법
US20060236361A1 (en) Storing repetition information for dsmcc carousel
US20060098956A1 (en) Audio/video player, data processing circuit thereof, data processing method thereof, and data distributing method
JP6684433B2 (ja) 送信装置、送信方法、並びに、プログラム

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20150515

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20160517

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20170728

Year of fee payment: 6