KR20140054400A - 적응형 http 스트리밍을 위한 표현들 사이에서 개선된 스위칭을 제공하는 스위칭 시그널링 방법들 - Google Patents

적응형 http 스트리밍을 위한 표현들 사이에서 개선된 스위칭을 제공하는 스위칭 시그널링 방법들 Download PDF

Info

Publication number
KR20140054400A
KR20140054400A KR1020147008391A KR20147008391A KR20140054400A KR 20140054400 A KR20140054400 A KR 20140054400A KR 1020147008391 A KR1020147008391 A KR 1020147008391A KR 20147008391 A KR20147008391 A KR 20147008391A KR 20140054400 A KR20140054400 A KR 20140054400A
Authority
KR
South Korea
Prior art keywords
segment
presentation
time
content
presentation time
Prior art date
Application number
KR1020147008391A
Other languages
English (en)
Other versions
KR101575740B1 (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 KR20140054400A publication Critical patent/KR20140054400A/ko
Application granted granted Critical
Publication of KR101575740B1 publication Critical patent/KR101575740B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/61Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
    • H04L65/612Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for unicast
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/65Network streaming protocols, e.g. real-time transport protocol [RTP] or real-time control protocol [RTCP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/70Media network packetisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/75Media network packet handling
    • H04L65/762Media network packet handling at the source 
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/80Responding to QoS
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • 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
    • H04N21/23439Processing 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 for generating different versions
    • 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/83Generation or processing of protective or descriptive data associated with content; Content structuring
    • H04N21/845Structuring of content, e.g. decomposing content into time segments
    • H04N21/8455Structuring of content, e.g. decomposing content into time segments involving pointers to the content, e.g. pointers to the I-frames of the video stream
    • 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/83Generation or processing of protective or descriptive data associated with content; Content structuring
    • H04N21/845Structuring of content, e.g. decomposing content into time segments
    • H04N21/8456Structuring of content, e.g. decomposing content into time segments by decomposing the content in the time domain, e.g. in time segments

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

본 명세서에서 설명되는 적응형 HTTP 스트리밍을 위해 표현들 사이에서 개선된 스위칭을 제공하는 스위칭 시그널링 방법들은, 세그먼트 데이터가 암호화된 경우에도, 적응형 HTTP 스트리밍 솔루션들에 대한 사용자 경험 및 대역폭 효율성 개선들을 가능하게 한다. 시그널링 방법들은, 표현의 세그먼트들과 세그먼트 맵들을 연관시키는 단계를 포함하고, 여기서 세그먼트 맵은, 바이트 오프셋 정보 및 잠재적으로 다른 세그먼트 정보와 함께, 연관된 세그먼트들 내에서 시간적 진입 및 시간적 이탈 포인트들 모두를 포함하고, 세그먼트 맵들은, 연관된 세그먼트들의 시간 스팬(span)들과는 독립적인 예측가능한 시간 스팬 패턴들로 생성될 수 있다. 이 실시예들은, 기존의 컨텐츠 인코딩 및 포맷 프로세스들을 변경할 필요가 없는 방식으로, 그리고 컨텐츠를 수신 및 플레이아웃하는 기존의 클라이언트들이 영향받지 않도록, 기존의 배치들을 향상시키기 위해 이용될 수 있다.

Description

적응형 HTTP 스트리밍을 위한 표현들 사이에서 개선된 스위칭을 제공하는 스위칭 시그널링 방법들{SWITCH SIGNALING METHODS PROVIDING IMPROVED SWITCHING BETWEEN REPRESENTATIONS FOR ADAPTIVE HTTP STREAMING}
본 출원은, 발명의 명칭이 "Switch Signaling Methods Providing Improved Switching Between Representations For Adaptive HTTP Streaming"이고 2011년 8월 31일에 출원된 미국 가특허출원 제 61/529,656호에 대해 우선권을 주장하고, 상기 가특허출원에 대한 정식(non-provisional) 출원이며, 상기 가특허출원의 전체 개시는 모든 목적들을 위해 인용에 의해 본원에 통합된다.
본 개시는, 본 출원인에게 양도된 하기 출원들/특허들을, 모든 목적들을 위해, 본 문헌에 완전히 기술된 것처럼 인용에 의해 통합한다.
2009년 9월 22일에 출원되고 발명의 명칭이 "Enhanced Block-Request Streaming System"인 미국 특허 출원 제 61/244,767호 (이하, "Luby A1");
2009년 11월 3일에 출원되고 발명의 명칭이 "Enhanced Block-Request Streaming System"인 미국 특허 출원 제 61/257,719호 (이하, "Luby A2");
2009년 11월 4일에 출원되고 발명의 명칭이 "Enhanced Block-Request Streaming System"인 미국 특허 출원 제 61/258,088호 (이하, "Luby A3");
2009년 12월 11일에 출원되고 발명의 명칭이 "Enhanced Block-Request Streaming System"인 미국 특허 출원 제 61/285,779호 (이하, "Luby A4");
2010년 1월 20일에 출원되고 발명의 명칭이 "Enhanced Block-Request Streaming System"인 미국 특허 출원 제 61/296,725호 (이하, "Luby A5");
2010년 9월 21일에 출원되고 발명의 명칭이 "Enhanced Block-Request Streaming System"인 미국 특허 출원 제 12/887,476호 (이하, "Luby B");
Luby 등에 의해 2008년 4월 15일에 출원되고 발명의 명칭이 "Dynamic Stream Interleaving and Sub-Stream Based Delivery"인 미국 특허 출원 제 12/103,605호; 및
Pakzad 등에 의해 2010년 2월 12일에 출원되고 발명의 명칭이 "Block Partitioning for a Data Stream"인 미국 특허 출원 제 12/705,202호 (이하, "Pakzad").
본 발명은, 개선된 미디어 스트리밍 시스템들 및 방법들에 관한 것이고, 더 상세하게는, 스트리밍된 미디어의 프리젠테이션을 최적화하고, 스트리밍된 미디어 데이터의 효율적인 동시의 또는 적시에 분배되는 전달을 제공하기 위해, 네트워크 및 버퍼 조건들에 적응적인 시스템들 및 방법들에 관한 것이다.
고품질 오디오 및 비디오가, 인터넷, 셀룰러 및 무선 네트워크들, 전력선 네트워크들 및 다른 타입들의 네트워크들과 같은 패킷-기반 네트워크들을 통해 전달되는 것이 더 통상적이 됨에 따라, 스트리밍 미디어 전달은 점차 중요해지고 있다. 전달된 스트리밍 미디어가 제시될 수 있는 품질은, 오리지널 컨텐츠의 해상도(또는 다른 속성들), 오리지널 컨텐츠의 인코딩 품질, 미디어를 디코딩 및 제시하는 수신 디바이스들의 능력들, 수신기들에서 수신된 신호의 적시성 및 품질 등을 포함하는 다수의 팩터들에 의존한다. 인지되는 양호한 스트리밍 미디어 경험을 생성하기 위해, 수신기들에서 수신된 신호의 전송 및 적시성은 특히 중요할 수 있다. 양호한 전송은, 전송기가 전송한 스트림에 대한 수신기에서 수신된 스트림의 신뢰도를 제공할 수 있는 한편, 적시성은, 컨텐츠에 대한 초기 요청 이후 수신기가 그 컨텐츠를 플레이 아웃하는 것을 얼마나 빨리 시작할 수 있는지를 표현할 수 있다.
미디어 전달 시스템은 미디어 소스들, 미디어 목적지들, 및 소스들 및 목적지들을 (시간 및/또는 공간에서) 분리시키는 채널들을 갖는 시스템으로 특성화될 수 있다. 통상적으로, 소스는, 전자적으로 관리가능한 형태로 미디어에 대한 액세스를 갖는 송신기, 및 미디어(이의 근사치)의 수신을 전자적으로 제어하고 이를 미디어 소비자(예를 들어, 수신기, 저장 디바이스 또는 엘리먼트, 다른 채널 등에 몇몇 방식으로 커플링된 디스플레이 디바이스를 갖는 사용자)에게 제공하는 능력을 갖는 수신기를 포함한다.
"소비"는, 프리젠테이션을 위한 것과 같은 몇몇 방식으로 소비되고 있는 미디어를 이용하는, 목적지에서의 프로세스이다. 예를 들어, 모바일 비디오 플레이어는 종종 비디오의 플레이아웃 레이트로 비디오 데이터를 "소비"한다. 정규 속도의 플레이아웃 레이트를 갖는 비디오와 같이, 미디어가 플레이아웃 레이트를 갖는 경우, "프리젠테이션 시간"이 정의될 수 있다. 예를 들어, 미디어 프리젠테이션의 개시로부터 정규의 방해받지 않는 플레이의 2:00.00 분 이후 시청자가 도달할, 미디어 스트림의 포인트는 2:00.00의 프리젠테이션 시간("PT")를 갖는 것으로 지칭된다.
통상적인 예에서, 많은 변화들이 가능한 경우, 미디어 전달 시스템은, 전자적 형태로 미디어 컨텐츠에 액세스를 갖는 하나 또는 그 초과의 서버들을 갖고, 하나 또는 그 초과의 클라이언트 시스템들 또는 디바이스들은 미디어에 대한 요청을 서버들에 행하고, 서버들은 서버의 일부로서의 송신기를 이용하여 미디어를 전달하여, 클라이언트의 수신기에 송신하여, 수신된 미디어가 몇몇 방ㅎ식으로 클라이언트에 의해 소비될 수 있게 한다. 간단한 예에서, 주어진 요청 및 응답에 대해 하나의 서버 및 하나의 클라이언트가 존재하지만, 이것은 반드시 그러한 것은 아니다.
전통적으로, 미디어 전달 시스템들은 "다운로드" 모델 또는 "스트리밍" 모델로 특성화될 수 있다. "다운로드" 모델은, 미디어 데이터의 전달과, 사용자 또는 수신지 디바이스에 대한 미디어의 플레이아웃 사이의 타이밍 독립성에 의해 특성화될 수 있다.
일례로서, 다운로드 모델 또는 구성에서, 수신기는 미디어 플레이어 또는 다른 미디어 소비기에 커플링되고, 미디어는, 다른 플레이어/소비기에 의해 요구되거나 이용될 때보다 훨씬 충분히 미리 다운로드된다. 미디어가 이용(소비)되는 경우, 요구되는 것만큼이 수신지에서 이미 이용가능한 것이 바람직하다. 다운로드 콘텍스트에서의 전달은 종종 HTTP, FTP 또는 "FLUTE"(File Delivery over Unidirectional Transport)과 같은 파일 전송 프로토콜을 이용하여 수행되고, 전달 레이트는 TCP/IP와 같은 기본적인 플로우 및/또는 혼잡 제어 프로토콜에 의해 결정될 수 있다. 플로우 또는 혼잡 제어 프로토콜의 동작은, 다운로드와 동시에 또는 몇몇 다른 시간에 발생할 수 있는, 사용자 또는 목적지 디바이스에 대한 미디어의 플레이아웃과는 독립적일 수 있다.
"스트리밍" 모드는, 미디어 데이터의 전달 타이밍과 사용자 또는 수신지 디바이스에 대한 미디어의 플레이아웃 사이의 타이트 커플링에 의해 특성화될 수 있다. 이 상황에서의 전달은 종종 제어에 대한 "RTSP"(Real Time Streaming Protocol) 및 미디어 데이터에 대한 "RTP"(Real Time Transport Protocol)와 같은 스트리밍 프로토콜을 이용하여 수행될 수 있다. 전달 레이트는 스트리밍 서버에 의해 결정될 수 있어서, 종종 데이터의 플레이아읏 레이트에 매칭한다.
"다운로드" 모델의 몇몇 단점들은, 전달 및 플레이아웃의 타이밍 독립성에 기인하여, 미디어 데이터가 플레이아웃될 필요가 있는 경우에 (예를 들어, 미디어 데이터 레이트보다 작은 이용가능한 대역폭에 기인하여) 미디어 데이터가 이용불가능하게 될 수 있어서 플레이아웃이 일시적으로 중지("스톨링")되게 하여 열악한 사용자 경험을 초래하거나, 또는(예를 들어, 미디어 데이터 레이트보다 큰 이용가능한 대역폭에 기인하여) 미디어 데이터가 플레이아웃보다 훨씬 미리 다운로드되도록 요구될 수 있어서, 수신 디바이스 상의 부족할 수 있는 저장 자원들을 소비시키고, 컨텐츠가 결국 플레이 아웃되지 않거나 그렇지 않으면 이용되지 않으면, 낭비될 수 있는 전달을 위한 가치있는 네트워크 자원들을 소비한다. 또한, 사용자가 시청할 것을 결정한 후 비디오를 주문해야 하고, 그 다음 시청이 가능하기 전에 몇 분, 몇 시간, 또는 잠재적으로 며칠을 대기해야 하는 것에 반해, 많은 경우들에서 대부분의 즐거운 사용자 경험은 사용자가 시청할 것을 결정한 후 거의 즉시 비디오를 시청할 수 있는 것이다.
"다운로드" 모델의 이점은, 이러한 다운로드들을 수행하기 위해 요구되는 기술, 이를테면, HTTP가 매우 발전되어 있고, 널리 배치되어 있으며, 광범위한 애플리케이션들에 걸쳐 이용가능하다는 점이다. 이러한 파일 다운로드들의 대량의 스케일러빌러티를 위한 다운로드 서버들 및 솔루션들(예를 들어, HTTP 웹 서버들 및 컨텐츠 전달 네트워크들)은 쉽게 이용가능하여, 이러한 기술에 기초한 서비스들의 이용을 단순하고 저렴하게 한다.
"스트리밍" 모델의 몇몇 단점들은, 일반적으로 미디어 데이터의 전달 레이트가 서버로부터 클라이언트로의 접속 상에서 이용가능한 대역폭에 적응되지 않는다는 점, 및 대역폭 및 지연 보장들을 제공하는 특수화된 스트리밍 서버들 또는 더 복잡한 네트워크 아키텍쳐가 요구된다는 점이다. 이용가능한 대역폭에 따라 전달 데이터 레이트의 변화를 지원하는 스트리밍 시스템들(예를 들어, Adobe Flash Adaptive Streaming)이 존재하지만, 모든 이용가능한 대역폭을 활용할 때 TCP와 같이 다운로드 전송 흐름 제어 프로토콜들만큼 효율적이지 않고, 서버/클라이언트 스트리밍 세션들을 지원하기 위한 특수화된 서버 인프라구조를 요구한다.
최근에, "스트리밍" 및 "다운로드" 모델들의 결합에 기초한 새로운 미디어 전달 시스템들이 개발되고 배치되어 왔다. 이러한 모델의 예는 본 명세서에서, "적응형 HTTP 스트리밍"(본 명세서에서 "AHS"로 지칭됨)으로 지칭된다. 통상적으로, 예를 들어, 상이한 디코딩 및 렌더링 능력들을 갖는 클라이언트 디바이스들을 수용하기 위해 그리고 대역폭 적응을 허용하기 위해, 동일한 멀티미디어 컨텐츠는 다양한 상이한 방식들로 인코딩될 수 있다. 예를 들어, (동일한 영화와 같은) 동일한 멀티미디어 컨텐츠는 상이한 코덱들, 상이한 프레임 레이트들, 상이한 비트 레이트들 또는 상이한 해상도들에 따라 인코딩될 수 있고, 상이한 파일 포맷들을 이용하여 캡슐화될 수 있는 식이다. 특성들의 각각의 고유한 결합은 멀티미디어 컨텐츠의 "표현"을 형성한다.
다양한 표현들은 유사한 디코딩 및 렌더링 요건들(예를 들어, 유사한 코덱들, 관련 해상도들, 유사한 파일 포맷들 등)을 가질 수 있지만, 상이한 비트레이트들을 제공하여, 동일한 멀티미디어 컨텐츠의 상이한 품질 표현들들 제공한다. "적응 세트"는, 클라이언트가 표현을 선택할 수 있는 표현들의 그룹이다. 프리젠테이션의 주어진 기간 동안, 비디오 적응 세트 및 오디오 적응 세트와 같은 다수의 적응 세트들이 존재할 수 있지만, 본 명세서의 예들에서는, 일반화의 손실없이 단일 적응 세트가 고려될 수 있다.
표현들은 복수의 세그먼트들로 분할될 수 있는데, 각각의 세그먼트는, 예를 들어, 멀티미디어 컨텐츠에 대한 시간 기간, 이를테면 10초, 1초, 30초 등에 대응한다. 클라이언트 디바이스는, 현재 이용가능한 대역폭의 양을 결정할 수 있고, 그 다음, 표현들의 비트레이트들 및 현재 이용가능한 대역폭에 기초하여 표현들 중 하나로부터 하나 또는 그 초과의 후속 세그먼트들을 요청할 수 있다. 이러한 방식으로, 대역폭의 양이 증가하는 경우, 클라이언트 디바이스는, 비교적 더 높은 품질 표현으로부터 세그먼트(들)를 요청할 수 있지만, 대역폭의 양이 감소하는 경우, 클라이언트 디바이스는, 대역폭의 양에 의해 수용될 수 있는 비교적 더 낮은 품질 표현으로부터 세그먼트(들)를 요청할 수 있다.
표현의 각각의 세그먼트는 파일에 저장될 수 있고, 여기서 URL은 각각의 이러한 파일과 연관되어, URL은 표준 HTTP 웹 서버들로부터 세그먼트 파일의 HTTP 다운로드를 요청하기 위해 AHS 클라이언트에 의해 이용될 수 있다. 이러한 접근법을 이용하면, 특정한 시작 포인트로부터 미디어 컨텐츠를 플레이하기 위한 사용자 요청에 응답하여, AHS 클라이언트는 세그먼트들을 다운로드하기 위한 HTTP 요청들을 발행할 수 있고, 플레이아웃을 위해 요청된 세그먼트들을 수신할 수 있다. 이상적으로, 사용자 요청 이후 곧 디바이스 상에서, 사용자-요청된 시작 포인트로부터 미디어 컨텐츠의 플레이아웃이 시작할 수 있고, 미디어 컨텐츠의 플레이아웃은 그 후 그 시작 포인트로부터 실시간으로, 즉, 추가적인 미디어 데이터가 도달하기를 대기하는 동안 미디어 플레이아웃이 일시적으로 스톨링되는 스톨링 이벤트 없이 계속될 수 있다. 몇몇 AHS 시스템들에서, 세그먼트들의 부분들을 요청하기 위해 HTTP 바이트 범위 요청들이 또한 이용될 수 있다.
AHS의 하나의 이점은, 이것이 표준 HTTP 웹 서버들, 즉, 다른 인터넷 컨텐츠를 전달하는데 이용되는 동일한 인프라구조를 이용하여 배치될 수 있다는 점이다. AHS의 다른 잠재적인 이점은, 다수의 상이한 타입들의 네트워크들 상에서 다수의 상이한 디바이스들에 걸쳐 배치되는 AHS 클라이언트들이, 플레이아웃 디바이스의 특성들, 다운로딩을 위한 이용가능한 대역폭과 같은 네트워크 조건들 및 다른 팩터들에 따라, 어느 표현이 플레이아웃을 위한 요청에 적합한지를 동적으로 결정할 수 있다는 점이다. 이러한 마지막 이점은, 이용가능한 네트워크 대역폭이 짧은 시간 스케일들에서 동적으로 변할 수 있고, 따라서 주어진 네트워크 조건들에 대해 가능한 최고 품질의 플레이아웃을 동시에 제공하면서 스톨들을 회피하기 위해, AHS 클라이언트가 하나의 표현의 요청 세그먼트들로부터 다른 표현의 요청 세그먼트들로 빠르게 변경할 필요가 있을 수 있는 모바일 디바이스들에 대해 특히 중요하다. 게다가, 예를 들어, 배터리의 남은 전하의 양, 또는 플레이아웃의 디스플레이 사이즈 등과 같은 다른 특성들이 모바일 디바이스 상에서 빠르게 변할 수 있다.
표현들 사이에서의 스위칭을 위해 이용되는 것으로 고려되기에 적합할 수 있는 프레임들, 이를테면, I 프레임들은, P 또는 B 프레임들과 같은 다른 타입들의 프레임들만큼 많은 비디오 압축을 제공하지 않을 수 있다. 그러나, 스위칭이 덜 빈번한 포인트들의 경우, 표현들 사이에서 스위칭하려 시도하는 클라이언트 디바이스는 스위칭이 가능하기 전에 (예를 들어, 초기에 표현에 대한 재생의 지연된 시작 또는 표현들 사이의 스위칭 이후 플레이아웃 이벤트의 리버퍼링/셔터링에 기인하여) 긴 시간 기간을 대기할 필요가 있을 수 있어서, 사용자 경험이 악화되는 것을 초래할 수 있다. 따라서, 멀티미디어 컨텐츠의 표현들 사이에서의 스위칭을 위해 이용될 수 있는 프레임들을 얼마나 빈번하게 포함시킬지에 관한 전략적 결정들이 통상적으로 행해진다.
하나의 대중적인 AHS 솔루션은 Apple Inc.에 의해 초기에 개발된 HTTP 라이브 스트리밍 프로토콜(이하 "HLS"로 지칭됨)이고, 이는, "HTTP Live Streaming"의 명칭으로 IEFT 드래프트에서 설명되는 바와 같이, 그리고 도메인 "tools.ietf.org" 및 그 곳에서 "/html/draft-pantos-http-live-streaming-06"으로 명명된 파일을 갖는 URL에서 발견될 수 있는 Apple Live Streaming(본 명세서에서는 축약하여 "ALS")으로 때때로 지칭된다. 다른 대중적인 AHS 솔루션은, 예를 들어, ISO/IEC 23009 1:2012에서 특정되는 바와 같은 MPEG DASH 표준들(본 명세서에서는 축약하여 "MPEG DASH" 또는 "MPEG DASH 표준")에서 설명된다.
따라서, 표현들의 스위칭들 동안 끊김없는 사용자 비디오 경험을 제공하고, 또한 표현 스위칭들 동안 네트워크 자원들의 효율적인 이용을 가능하게 하는 개선된 시그널링 방법들 및 이러한 시그널링 방법들의 이용이 요구된다.
본 명세서에서 설명되는 스위칭 시그널링 방법은 본 명세서에 설명된 적응형 HTTP 스트리밍에 대한 표현들 사이의 개선된 스위칭을 제공하여, 적응형 HTTP 스트리밍 솔루션들에 대한 사용자 경험 및 대역폭 효율성 개선들을 가능하게 한다. 시그널링 방법은 세그먼트 맵을 표현의 각각의 세그먼트와 연관시키는 단계를 포함하고, 세그먼트 맵은, 바이트 오프셋 정보 및 세그먼트에 대한 잠재적으로 다른 정보와 함께 연관된 세그먼트 내에서 일시적 시작 및 일시적 종료 포인트들 모두를 포함할 수 있다. 세그먼트 맵들은, 적응형 스트리밍 솔루션의 표현들 사이에서 더 빠른 스위칭을 제공하면서 동시에, 스위칭 동안 네트워크를 통해 더 적은 데이터를 다운로딩하고, 비디오 플레이어에 의한 하나의 표현으로부터 다른 표현으로의 스위칭의 경우 더 부드러운 비디오 플레이아웃을 가능하게 하기 위해 클라이언트에 의해 유리하게 이용될 수 있다.
이 실시예들은, 시그널링 표현 스위칭 정보를 위해 이용되고, 더 양호한 사용자 시청 경험 및 표현들 사이에서 더 네트워크 효율적인 스위칭을 제공하기 위해 이러한 정보를 이용하기 위한 방법들에 대한 신규한 개선들을 포함한다. 신규한 스위칭 정보의 예들은, 일시적 진입 포인트들, 일시적 종료 포인트들, 그 연관된 세그먼트에 대해 세그먼트 맵 내의 이러한 포인트들과 연관된 바이트 오프셋들을 포함한다. 진입 포인트는, 표현이 스위칭될 수 있고, 표현의 임의의 후속 종료 포인트로 끊김없이 플레이 아웃되도록 계속될 수 있는 일시적 포인트를 나타내고, 진입 포인트와 연관된 바이트 오프셋은, 그 진입 포인트로부터 플레이아웃을 허용할 데이터를 수신하기 위해 다운로드가 시작할, 세그먼트 내의 바이트 포인트를 나타낸다. 유사하게, 종료 포인트는, 종료 포인트 이전에 표현의 임의의 진입 포인트에서 플레이아웃이 시작할 수 있고 그 종료 포인트까지 끊김없이 플레이 아웃될 수 있는 일시적 포인트를 나타내고, 종료 포인트와 연관된 바이트 오프셋은, 그 종료 포인트까지 플레이아웃을 허용할 데이터를 수신하기 위해 다운로드가 종료할 수 있는, 세그먼트 내의 바이트 포인트를 나타낸다. 세그먼트들 자체가 암호화되는 경우에도, 표현들 사이의 끊김없는 스위칭 및 네트워크 자원들의 효율적 이용을 허용하기 위해 세그먼트 맵에서 충분한 정보가 공급된다.
몇몇 실시예들에서, 표현들에 걸쳐 동시인 시간들에 상이한 표현들이 진입 및 이탈할 수 있다는 점에서, 적응 세트의 상이한 표현들 사이에 "SAP 정렬"이 존재하도록 상이한 표현들이 세그먼트화된다. 몇몇 실시예들에서, 상이한 표현들 사이에 "중첩 패치 정렬"이 존재하도록 상이한 표현들이 세그먼트화되고, 여기서 진입 및 이탈 포인트들의 시작 및 종료 프리젠테이션 시간들이 매칭된다. 정렬의 타입, 및 표현들 또는 표현들의 쌍들 또는 그룹들의 일부 또는 전부에 대해 정렬이 존재하는지 또는 이들에 대해 정렬이 존재하지 않는지 여부는 프로파일에서 시그널링될 수 있다.
이 실시예들은, 기존의 컨텐츠 인코딩 및 포맷 프로세스들을 변경할 필요가 없는 방식으로, 그리고 컨텐츠를 수신 및 플레이아웃하는 기존의 클라이언트들이 영향받지 않도록, 기존의 배치들을 향상시키기 위해 이용될 수 있다. 이 실시예들은, 인코딩되고 포맷된 컨텐츠와 연관된 증강된 정보, 이를테면, 세그먼트 맵들에 대한 액세스를 생성 및 제공한다. 이 실시예들은 또한, 앞서 설명된 이점들을 제공하기 위해, 생성된 증강된 정보에 액세스하도록, 향상된 클라이언트들에 의해 활용될 수 있는 방법들을 제공한다.
첨부한 도면들과 함께 다음의 상세한 설명은 본 발명의 성질 및 이점들의 더 양호한 이해를 제공할 것이다.
도 1은, 폐쇄형 GOP 구조를 갖는 인코딩된 데이터 비디오 스트림에 대한 프리젠테이션 시간 순서, 프레임 의존성 구조 및 파일 포맷 순서의 일례를 도시한다.
도 2는, 개방형 GOP 구조를 갖는 인코딩된 데이터 비디오 스트림에 대한 프리젠테이션 시간 순서, 프레임 의존성 구조 및 파일 포맷 순서의 다른 예를 도시한다.
도 3은, 대안적인 개방형 GOP 구조를 갖는 인코딩된 데이터 비디오 스트림에 대한 프리젠테이션 시간 순서, 프레임 의존성 구조 및 파일 포맷 순서의 다른 예를 도시한다.
도 4는, 대안적인 GOP 구조를 갖는 인코딩된 데이터 비디오 스트림에 대한 프리젠테이션 시간 순서, 프레임 의존성 구조 및 파일 포맷 순서의 다른 예를 도시한다.
도 5는, 도 1에 도시된 것과 동일한 구조를 갖는 프레임들을 포함하는 표현에 대한 진입 포인트 리스트들을 도시한다.
도 6은, 도 2에 도시된 것과 동일한 구조를 갖는 프레임들을 포함하는 표현에 대한 진입 포인트 리스트들을 도시하는데; 도 6(a)는 파일 포맷 순서가 디코딩 순서인 예를 도시하는 한편, 도 6(b)는 파일 포맷 순서가 프리젠테이션 순서인 예를 도시한다.
도 7은, 도 3에 도시된 것과 동일한 구조를 갖는 프레임들을 포함하는 표현에 대한 진입 포인트 리스트들을 도시한다.
도 8은, 도 4에 도시된 것과 동일한 구조를 갖는 프레임들을 포함하는 표현에 대한 진입 포인트 리스트들을 도시한다.
도 9는, 도 1에 도시된 것과 동일한 구조를 갖는 프레임들을 포함하는 표현에 대한 진입 포인트 리스트들을 도시한다.
도 10은, 도 2에 도시된 것과 동일한 구조를 갖는 프레임들을 포함하는 표현에 대한 종료 포인트 리스트들을 도시하는데; 도 10(a)는 파일 포맷 순서가 디코딩 순서인 예를 도시하는 한편, 도 10(b)는 파일 포맷 순서가 프리젠테이션 순서인 예를 도시한다.
도 11은, 도 3에 도시된 것과 동일한 구조를 갖는 프레임들을 포함하는 표현에 대한 종료 포인트 리스트들을 도시한다.
도 12는, 도 4에 도시된 것과 동일한 구조를 갖는 프레임들을 포함하는 표현에 대한 종료 포인트 리스트들을 도시한다.
도 13은, 도 4에 도시된 것과 동일한 프레임 의존성 구조를 갖지만, 파일 포맷 순서가 도 4에 도시된 디코딩 순서 대신에 프리젠테이션 시간 순서인 프레임들을 포함하는 표현에 대한 진입 포인트 리스트들을 도시한다.
도 14는, 도 4에 도시된 것과 동일한 프레임 의존성 구조를 갖지만, 파일 포맷 순서가 도 4에 도시된 디코딩 순서 대신에 프리젠테이션 시간 순서인 프레임들을 포함하는 표현에 대한 종료 포인트 리스트들을 도시한다.
도 15는, DASH(Dynamic Adaptive Streaming over HTTP) 시스템에서 시그널링 세그먼트 타임라인 파일들의 일례를 도시한다.
도 16은, 혼합된 시간-기반 및 인덱스-기반 세그먼트 URL 템플릿 생성의 일례를 도시한다.
도 17은 세그먼트-URL 교차 규칙 구성의 일례를 도시한다.
도 18은, 본 발명의 실시예들에 따른 블록-요청 스트리밍 시스템의 엘리먼트들을 도시한다.
도 19는, 컨텐츠 섭취 시스템에 의해 프로세싱되는 데이터를 수신하기 위해 "BSI"(block serving infrastructure)에 커플링되는 클라이언트 시스템의 엘리먼트들을 더 상세히 도시하는, 도 18의 블록-요청 스트리밍 시스템을 도시한다.
도 20은, 섭취 시스템의 하드웨어/소프트웨어 구현을 도시한다.
도 21은 클라이언트 시스템의 하드웨어/소프트웨어 구현을 도시한다.
도 22는, 도 18에 도시된 컨텐츠 스토어에 저장될 수 있는 것과 같은 통상적인 소스 세그먼트의 세부사항들을 도시한다.
도 23(a)는, 미디어 스트림의 복수의 버전들에 걸쳐 정렬된 탐색 포인트들을 갖는 가변 블록 사이징을 도시한다.
도 23(b)는, 미디어 스트림의 복수의 버전들에 걸쳐 비정렬된 탐색 포인트들을 갖는 가변 블록 사이징을 도시한다.
도 24는, 세그먼트들 및 "MPD"(media presentation descriptor) 파일들, 및 세그먼트들의 브레이크다운, 타이밍, 및 MPD 파일 내의 다른 구조를 포함하는, 도 18에 도시된 컨텐츠 스토어의 가능한 구조들을 도시한다.
도 25는 메타데이터 테이블을 도시한다.
도 26은 블록들 및 메타데이터 테이블의 서버로부터 클라이언트로의 송신을 도시한다.
도 27은 세그먼트들에 걸친 연속적 및 불연속 타이밍을 도시한다.
도면들에서, 유사한 항목들은 유사한 번호들로 참조되고, 유사하거나 동일한 항목들의 다수의 예들을 나타내기 위해 서브-인덱스들이 괄호들 내에 제공된다. 달리 표시되지 않으면, 마지막 서브-인덱스(예를 들어, "N" 또는 "M")는 임의의 특정한 값에 제한되는 것으로 의도되지 않고, 하나의 항목의 예들의 번호는, 동일한 번호가 설명되고 서브-인덱스가 재사용되는 경우에도 다른 항목의 예들의 번호와 상이할 수 있다.
본 명세서에서 설명되는 바와 같이, 스트리밍 시스템의 목적은, 미디어를 미디어의 저장 위치로부터 미디어가 소모되고 있는, 즉, 클라이언트에 의해 사용자에게 제시되거나 그렇지 않으면 인간 또는 전자적 소모기에 의해 "소진"되고 있는 위치로 이동시키는 것이다. 이상적으로, 스트리밍 시스템은 수신단에서 방해받지 않는 재생(또는 더 일반적으로, 방해받지 않는 "소모")을 제공할 수 있고, 클라이언트는, 사용자가 스트림 또는 스트림들을 요청한 직후에 스트림 또는 스트림들의 집합의 플레이를 시작할 수 있다. 효율성 이유들 때문에, 예를 들어, 서버들과 클라이언트 사이에서 대역폭의 이용가능한 양에서의 변동들에 기인하여, 클라이언트가 하나의 스트림으로부터 다른 스트림으로 스위칭하고 있는 경우와 같이, 사용자가, 스트림이 더 이상 필요하지 않다고 나타내면, 각각의 스트림은 중단되는 것이 바람직하다. 비디오와 같은 미디어 컨텐츠가 끊김없이 플레이 아웃되어야 하지만, 이 미디어 컨텐츠를 플레이 아웃하는 클라이언트에 의해 상이한 스트림이 선택되면, 제한된 대역폭을 새로운 스트림으로 점유하고 오래된 스트림을 중지하는 것이 종종 선호된다.
본 명세서에서 설명되는 실시예들에 따른 방법들은 많은 이점들을 제공한다. 몇몇 애플리케이션들은 본 명세서에서 설명된 특징들 전부보다 적은 특징들로 경험을 적절히 충족시키는 것을 제공할 수도 있기 때문에, 실현가능한 시스템이 본 명세서에서 설명된 특징들 전부를 포함할 필요는 없음을 이해해야 한다.
곳곳에서 소프트웨어, 명령들, 단계들, 프로세스들 또는 절차들 등을 참조하여 설명되지만, 설명된 방법은 유형의(tangible) 매체 상에 저장된 소프트웨어로 구현될 수 있고, 그리고/또는 본 명세서에서 설명된 것들 또는 다른 것들과 같은 미디어의 전송 및 수신 및 소모를 용이하게 하는 적절한 하드웨어를 갖는 컴퓨팅 디바이스들, 송신기들, 수신기들 등으로서 구현될 수 있음을 이해해야 한다.
적응형 HTTP 스트리밍
적응형 HTTP 스트리밍("AHS")은 특정한 타입의 스트리밍이다. AHS에 있어서, 소스들은 표준 웹 서버들 및 컨텐츠 전달 네트워크들("CDN들")일 수 있고, 표준 HTTP를 이용할 수 있다. 이 기술은, 스트림 세그먼트화, 및 표준화된 HTTP 요청들의 콘텍스트 내에 모두 있는 다수의 스트림들의 이용을 수반할 수 있다. 비디오와 같은 미디어는, 상이한 버전들 또는 표현들을 형성하기 위해 다수의 비트레이트들로 인코딩될 수 있다. 용어들 "버전" 및 "표현"은 본 문헌에서 동의어로 사용된다. 각각의 버전 또는 표현은, 세그먼트들을 형성하기 위해, 각각 아마도 대략 몇 초 정도의 더 작은 조각들(pieces)로 분해될 수 있다. 그 다음, 각각의 세그먼트는 별개의 파일로서 웹 서버 또는 CDN 상에 저장될 수 있고, 파일과 연관된 URL을 이용하여 요청된다. 표현들의 프리젠테이션 시간 지속기간들은 모든 각각의 세그먼트에 대해 동일하지는 않을 수 있다.
그 다음, 클라이언트 측에서, 클라이언트에 의해 함께 끊김없이 스플라이스되는(spliced) 개별적인 세그먼트들에 대한 요청들이 HTTP를 이용하여 행해질 수 있다. 클라이언트는, 이용가능한 대역폭에 기초하여 상이한 데이터 레이트들로 스위칭할 수 있다. 클라이언트는 또한 다수의 표현들을 요청할 수 있고(표현 각각은 상이한 미디어 컴포넌트를 제시함), 이 표현들에서 미디어를 함께 그리고 동기식으로 제시할 수 있다. 스위칭을 위한 트리거들은, 예를 들어, 버퍼 점유율 및 네트워크 측정들을 포함할 수 있다. 정상 상태(steady state)에서 동작하는 경우, 클라이언트는 타겟 버퍼 점유율을 유지하기 위해 서버에 요청들의 페이스를 유지할 수 있다.
AHS의 이점들은, 비트-레이트 적응, 고속 시작 및 탐색, 및 최소의 불필요한 전달을 포함할 수 있다. 이 이점들은, 플레이아웃에 앞서 전달이 오직 짧은 시간이 되도록 제어하는 것, 이용가능한 대역폭을 (가변적 비트 레이트 미디어를 통해) 최대로 이용하는 것, 및 스트리밍 세그먼트화 및 지능형 클라이언트 절차들을 최적화하는 것으로부터 기인한다.
이 AHS 솔루션들은 많은 양호한 특징들을 갖지만, 행해질 수 있는 개선들이 존재한다. 예를 들어, HLS 솔루션은, 스위칭 포인트들을 표현에 또는 표현들 사이에 시그널링하는 능력으로부터 유리할 것이다. 다른 예로, MPEG DASH는, 네트워크 자원들의 더 효율적인 이용 및 더 효율적인 스위칭을 허용하는 개방형 GOP 비디오 인코딩이 이용되는 경우, 표현에 또는 표현들 사이에 스위칭을 더 상세히 시그널링하는 것으로부터 유리할 것이다. 다른 예로, AHS 클라이언트가 스트림을 쉽게 참여시키거나 라이브 스트리밍 세션을 재참여시키도록 허용하는 자동화된 방식으로 세그먼트들에 대한 URL들을 생성하기 위한 추가적인 방법들이 유리할 것이다.
표현들의 스위칭들 동안 끊김없는 사용자 비디오 경험을 제공하고, 또한 표현 스위칭들 동안 네트워크 자원들의 효율적인 이용을 가능하게 하는, 개선된 시그널링 방법들 및 이러한 시그널링 방법들의 이용이 본 명세서에서 설명된다.
사용자에게 스트리밍 서비스를 제공하기 위해 클라이언트가 파일들의 집합체를 (예를 들어, 본 명세서에서는 "3gp 세그먼트들"로 지칭되는, 3GPP에 의해 특정된 포맷들로) 이용할 수 있도록, 미디어 프리젠테이션 디스크립션이 AHS 클라이언트에 제공될 수 있다. 미디어 프리젠테이션 디스크립션, 및 가능하게는 이러한 미디어 프리젠테이션 디스크립션의 업데이트들은, 세그먼트들의 구조화된 집합체인 미디어 프리젠테이션을 설명하고, 세그먼트 각각은, 클라이언트가 그 포함된 미디어를 동기식 방식으로 제시할 수 있도록, 그리고 탐색, 스위칭 비트레이트들 및 상이한 표현들에서 미디어 컴포넌트들의 조인트(joint) 프리젠테이션과 같은 진보된 특징들을 제공할 수 있도록, 미디어 컴포넌트들을 포함한다. 클라이언트는, 서비스의 프로비저닝(provisioning)을 위해 상이한 방식들로 미디어 프리젠테이션 디스크립션 정보를 이용할 수 있다. 상세하게는, 미디어 프리젠테이션 디스크립션으로부터, AHS 클라이언트는, 데이터가 클라이언트 능력 및 스트리밍 서비스 내의 사용자에게 유용하도록 집합체 내의 어느 세그먼트들이 액세스될 수 있는지를 결정할 수 있다.
몇몇 실시예들에서, 미디어 프리젠테이션 디스크립션은 정적일 수 있지만, 세그먼트들은 동적으로 생성될 수도 있다. 미디어 프리젠테이션 디스크립션은, 서비스에 대한 액세스 및 다운로드 시간을 최소화하기 위해 가능한 한 조밀할 수 있다. 예를 들어, 클라이언트와 서버 사이의 정규의 또는 빈번한 타이밍 동기화와 같은 다른 전용 서버 접속이 최소화될 수 있다.
미디어 프리젠테이션은, 상이한 액세스 네트워크 타입들로의 액세스, 상이한 현재의 네트워크 조건들, 디스플레이 사이즈들, 액세스 비트레이트들 및 코덱 지원과 같은 상이한 능력들을 갖는 단말들에 의한 액세스를 허용하도록 구성될 수 있다. 그 다음, 클라이언트는 스트리밍 서비스를 사용자에게 제공하기 위해 적절한 정보를 추출할 수 있다.
미디어 프리젠테이션 디스크립션은 또한, 요건들에 따른 배치(deployment) 유연성 및 조밀성을 허용할 수 있다.
가장 단순한 경우에서, 각각의 대안적 표현은 단일의 3GP 파일, 즉, 3GPP TS26.244에서 정의된 바에 따르는 파일, 또는 ISO/IEC 14496-12 또는 (3GPP 기술 규격 26.244에서 설명되는 3GP 파일 포맷과 같은) 유도된 규격들에서 정의되는 바와 같은 ISO 기반 미디어 파일 포맷에 따르는 임의의 다른 파일에 저장될 수 있다. 본 문헌의 나머지 부분에서, 3GP 파일을 참조하는 경우, ISO/IEC 14496-12 및 유도된 규격들은 모든 설명된 특징들을, ISO/IEC 14496-12 또는 임의의 유도된 규격들에서 정의된 바와 같은 더 일반적인 ISO 기반 미디어 파일 포맷에 맵핑할 수 있음을 이해해야 한다. 그 다음, 클라이언트는 (통상적으로, 'moov' 박스로 또한 지칭되는 영화 헤더 박스에 저장되는) 미디어 메타데이터를 습득하기 위해, 영화 프래그먼트 시간들 및 바이트 오프셋들과 함께 파일의 초기 부분을 요청할 수 있다. 그 다음, 클라이언트는, 요구에 따라 영화 프래그먼트들을 획득하기 위해 HTTP 부분 획득 요청들을 발행할 수 있다.
몇몇 실시예들에서, 각각의 표현을 몇몇 세그먼트들로 분할하는 것이 바람직할 수 있다. 세그먼트 포맷이 3GP 파일 포맷에 기초하는 경우, 세그먼트들은, "시간에 대한(time-wise) 분할"로 지칭되는, 영화 프래그먼트들의 비중첩 시간 슬라이스들을 포함한다. 이 세그먼트들 각각은 다수의 영화 프래그먼트들을 포함할 수 있고, 각각은 그 자체로(in its own right) 유효한 3GP 파일일 수 있다. 다른 실시예에서, 표현은, 메타데이터(통상적으로, 영화 헤더 "moov" 박스) 및 미디어 세그먼트들의 세트를 포함하는 초기 세그먼트로 분할되고, 미디어 세그먼트들 각각은 미디어 데이터 및 초기 세그먼트의 연접(concatenation)을 포함하고, 임의의 미디어 세그먼트가 유효한 3GP 파일을 형성할 뿐만 아니라, 하나의 표현의 모든 미디어 세그먼트들과 초기 세그먼트의 연접이 유효한 3GP 파일을 형성한다. 각각의 세그먼트를 차례로 플레이 아웃하고, 파일 내의 로컬 타임스탬프들을, 각각의 표현의 시작 시간에 따라 글로벌 프리젠테이션 시간에 맵핑함으로써, 전체 프리젠테이션이 형성될 수 있다.
이 설명 전반에 걸쳐 "세그먼트"에 대한 참조들은, 저장 매체로부터 완전히 또는 부분적으로 구성 또는 판독되거나, 그렇지 않으면, 예를 들어, HTTP 요청을 포함하는 파일 다운로드 프로토콜 요청의 결과로서 획득되는 임의의 데이터 오브젝트를 포함하는 것으로 이해되어야 함을 주목해야 한다. 예를 들어, HTTP의 경우, 데이터 오브젝트들은, 디스크 또는 HTTP 서버에 접속되거나 그의 일부를 형성하는 다른 저장 매체 상주하는 실제 파일들에 저장될 수 있거나, 또는 데이터 오브젝트들은 CGI 스크립트에 의해, 또는 HTTP 요청에 대한 응답으로 실행되는 다른 동적으로 실행되는 프로그램에 의해 구성될 수 있다. 용어들 "파일" 및 "세그먼트"는, 달리 특정되지 않으면, 본 문헌에서 동의어로 사용된다. HTTP의 경우, 세그먼트는 HTTP 요청 응답의 엔티티 바디(entity body)로서 고려될 수 있다.
용어들 "프리젠테이션" 및 "컨텐츠 아이뎀"은 본 문헌에서 동의어로 사용된다. 많은 예들에서, 프리젠테이션은, 정의된 "플레이아웃" 시간을 갖는 오디오, 비디오 또는 다른 미디어 프리젠테이션이지만, 다른 변화들이 가능하다.
용어들 "블록" 및 "프래그먼트"는, 달리 특정되지 않으면, 본 문헌에서 동의어로 사용되고, 일반적으로, 인덱싱되는 데이터의 최소 어그리게이션을 지칭한다. 이용가능한 인덱싱에 기초하여, 클라이언트는, 상이한 HTTP 요청들에서 프래그먼트의 상이한 부분들을 요청할 수 있거나, 또는 하나의 HTTP 요청에서 하나 또는 그 초과의 연속적 프래그먼트들 또는 프래그먼트들의 부분들을 요청할 수 있다. ISO 기반 미디어 파일 포맷 기반 세그먼트들 또는 3GP 파일 포맷 기반 세그먼트들이 이용되는 경우, 프래그먼트는 통상적으로, 영화 프래그먼트 헤더('moof') 박스와 미디어 데이터('mdat') 박스의 결합으로 정의되는 영화 프래그먼트를 지칭한다.
본 개시를 읽은 후, 이 분야의 당업자들은, 본 명세서에서 설명된 본 발명의 실시예들을 다른 타입들의 송신 네트워크들, 이를테면 연속적 비트-스트림 네트워크들에 적용할 수 있다는 인식으로, 본 명세서의 설명들을 단순화하기 위해, 본 명세서에서 데이터를 반송하는 네트워크는 패킷-기반으로 가정된다.
많은 이러한 예들에서, 클라이언트는, 미디어 서버 또는 복수의 미디어 서버들로부터의 채널 또는 복수의 채널들을 통해 미디어 서버 도는 복수의 미디어 서버들 및 클라이언트 요청 스트리밍 미디어에 커플링된다.
시퀀스들에서의 키 프레임들
비디오 코딩에서, 비디오 데이터의 몇몇 프레임들("I-프레임들"로 또한 공지된 인트라-예측 모드 인코딩된 프레임들)은, 비디오 데이터의 다른 프레임들에 대한 참조없이 독립적으로 코딩된다. 프레임들 사이의 시간적 리던던시들을 이용하기 위해, 다른 프레임들(즉, P 및 B 프레임들과 같은 인터-예측 모드 인코딩된 프레임들)은 이전의 또는 후속하는 코딩된 프레임들(기준 프레임들로 지칭됨)에 대해 코딩된다. AHS에서 잠재적인 어려움들 중 하나는, 프레임들(또는 일반적으로 다른 데이터)이 이전의 또는 후속하는 프레임들에 대해 코딩되는 경우, 하나의 표현으로부터 다른 표현으로 어떻게 끊김없이 스위칭할지이다. 잠재적 어려움은, 컨텐츠의 상이한 표현들이, 상이한 표현들에서 동시에 제시될 프레임들에 대한 상이한 프레임 의존 프레임 구조를 이용하여 인코딩되는 비디오일 수 있다는 점이다. 상이한 표현들 사이에서 의존 프레임 구조가 동일한 경우에도, 표현들은 상이한 해상도를 이용할 수 있고, 상이한 품질들이어서, 다른 표현들에서의 프레임들을 디코딩하기 위해 하나의 표현에서의 프레임들을 이용하는 것은 일반적으로, 비디오의 끊김없는 플레이아웃을 도출시키지 않는데, 즉, 열악한 사용자 시청 경험을 제공할 수 있다. 따라서, AHS에 있어서의 우려는, 표현들 사이에서 어떻게 끊김없이 스위칭할지이다.
키 프레임들은, 클라이언트 디바이스가 표현의 더 앞선 데이터에 대한 액세스 없이 표현을 디코딩하는 것을 시작할 수 있는 표현의 프레임들인데, 즉, 키 프레임은, I-프레임 이후의 어떠한 프레임도 그 I-프레임 이전의 어떠한 프레임에도 의존하지 않게 하는 I-프레임이다. 아울러, 키 프레임들은 표현들에 대한 표현 액세스 포인트들, 즉, 비디오의 다운로드 및 플레이아웃이 시작할 수 있는 장소들로 동작할 수 있다. 게다가, 이러한 키 프레임들은, 제 2 표현의 키 프레임이 제 2 표현에서의 플레이아웃의 시작 포인트일 수 있기 때문에, 제 1 표현으로부터 제 2 표현으로 스위칭하는 경우에 도움이 될 수 있다. 예를 들어, 클라이언트 디바이스는, 제 2 표현에서의 키 프레임의 시간적 위치까지 제 1 표현에서의 데이터를 리트리브(retrieve)하고, 그 다음, 제 2 표현의 키 프레임에서 시작하여 데이터를 리트리브함으로써 제 1 표현으로부터 제 2 표현으로 스위칭할 수 있다. 몇몇 제한된 경우들에서, 이러한 전략은 표현 스위칭 동안 끊김없는 사용자 경험을 제공할 수 있지만, 다른 상황들에서, 이러한 단순한 전력은 표현 스위칭 동안 끊김없는 사용자 경험을 제공하지 못할 수 있는데, 예를 들어, 이는, 시간적으로 제 2 표현에서의 키 프레임 이전인 제 1 표현에서의 프레임들이, 제 2 표현의 키 프레임에 시간적으로 후속하는, 제 1 표현의 다른 프레임들에 의존하기 때문이다.
게다가, DRM(Digital Rights Management) 시스템들의 이용 및/또는 암호화 때문에, 표현 스위칭 및 다운로드 판정들을 행하는 수신 클라리언트 측에서 프레임 의존 구조가 이용가능하지 않은 것은 흔한 경우이다.
데이터 의존 구조들
일반적으로, MPEG1, MPEG2 또는 H.264 AVC 인코딩된 비디오와 같은 비디오 인코딩 기술들에 있어서, 단일의 표현에 의한 프레임들의 프리젠테이션 시간 순서는 프레임들의 디코딩 순서와는 상이할 수 있다. 프리젠테이션 시간 순서는, 프레임들이 다른 프레임들에 대해 상대적으로 디스플레이되는 연속적 순서이다.
프리젠테이션 시간 순서는, 각각의 프레임과 연관된 프리젠테이션 시간에 의해 더 정확하게 결정되는데, 여기서 2개의 프레임들의 프리젠테이션 시간들에서의 차는, 그 2개의 프레임들이 디스플레이될 시간들에서의 차이다. 본 개시에서, 프리젠테이션 시간은 광범위하게 해석되어야 한다. 예를 들어, 컨텐츠의 어떠한 포인트에서 프리젠테이션 시간은, 제로에서 시작하여, 컨텐츠의 시작의 의도된 시작 플레이아웃 시간으로부터 그 포인트까지 측정될 수 있는데, 예를 들어, 컨텐츠의 시작 이후 20 초 동안 플레이 아웃되도록 포인트가 의도되면, 그 포인트와 연관된 프리젠테이션 시간은 20 초이다. 대안적으로, 프리젠테이션 시간은, 이 분야의 당업자가 인식할 바와 같이, 벽시계 시간 또는 UTC 시간 또는 다른 균등한 시간 측정들의 관점에서 측정될 수 있다.
디코딩 순서는, 다양한 프레임들 사이의 상호의존성을 고려하여, 프레임들이 디코딩될 수 있는, 프레임들의 순서이다. 각각의 프레임에 대해, 그 프레임에 의존하는 모든 프레임들이 그 프레임에 대해 순서에서 후속하면, 프레임들의 순서는 디코딩 순서가 되는 것으로 지칭된다. 이것은, 디코딩될 다음 프레임의 디코딩이, 이미 디코딩된 프레임들에 기초하도록 허용한다. 프레임들이 쉽게 디코딩될 수 있는 순서로 프레임들이 도달하는 것을 보장하기 위해, 스트리밍 전달 시스템에서 프레임들의 송신 순서가 디코딩 순서인 것은 통상적이다. 아래의 설명들에서, 파일 포맷 순서는, 클라이언트에 전달될 표현의 세그먼트들 또는 파일들 내의 프레임들의 순서인 것으로 정의되고, 따라서 파일 포맷 순서는 종종, 파일들 또는 파일의 부분들이 클라이언트들에 의해 요청되는 경우 표현의 부분들이 클라이언트에 전달될 순서이다. AHS 시스템들의 경우, 표현 내의 프레임들의 순서, 즉, 파일 포맷 순서가 디코딩 순서인 것은 통상적이다.
도 1은, 인코딩된 데이터 비디오 스트림에 대한, 프리젠테이션 시간 순서, 프레임 의존 구조, 및 파일 포맷 순서의 일례를 도시한다. 프레임들을 고유하게 넘버링하기 위해 프리젠테이션 시간 순서 프레임 번호가 이용되고, 이하, "프리젠테이션 시간 순서 프레임 번호"는 "프레임 번호"로 단축된다. 예를 들어, 프리젠테이션 시간에서의 제 1 프레임은 이하 프레임 1로 지칭된다. 각각의 프레임은 타입 "I"(인트라-코딩), "P"(예측), 또는 "B"(쌍방향 예측)로 라벨링된다. 도 1의 프레임 의존 구조는 프레임들 사이의 아치모양 선들로 표시되는데: 2개의 프레임들 사이의 점선 아치는, 프리젠테이션 시간 순서에서 더 나중의 프레임이 더 앞선 프레임에 의존함을 나타내고, 2개의 프레임들 사이의 어두운 실선 아치는, 프리젠테이션 시간 순서에서 더 앞선 프레임이 더 나중의 프레임에 의존함으로 나타낸다. "디코딩 순서"는, 각각의 프레임이 그 프레임에 의존하는 임의의 프레임들에 선행하도록 된다.
도 1에 도시된 예에서, 프레임 1은, I-프레임이기 때문에, 프레임 1에 대해 수신되는 데이터에 기초하여 디코딩가능하다. 프레임 2는, 프레임 2에 대해 수신되는 데이터 뿐만 아니라 프레임들 1 및 5에 대해 수신되는 데이터에 기초하여 디코딩가능하다 (프레임 2는 B-프레임이다). 유사하게, 프레임 3은 프레임들 1, 3, 5를 이용하고, 프레임 4는 프레임들 1, 4, 5를 이용하고, 프레임 5는 프레임들 1, 5를 이용하고, 프레임 6은 프레임들 5, 6을 이용하고, 프레임 7은 프레임들 5, 7을 이용하고, 프레임 8은 프레임 5, 8을 이용하고, 따라서 프레임들 1-8은, 프레임들 1-8에 대한 컨텐츠가 수신되면 디코딩될 수 있다. 그러나, 프레임 2는 프레임 5없이는 완전하게 디코딩될 수 없기 때문에, 프레임들이 "디코딩 순서"로 수신되면, 프레임 2는, 5개의 프레임들의 수신을 대기해야 하는 것 대신에 단지 3개의 프레임들 (1, 2, 5)의 수신 이후에 디코딩될 수 있다.
도 1에 도시된 예에서, 프레임들의 파일 포맷 순서는 도시된 디코딩 순서와 동일하다. 영상들의 그룹(또는 "GOP")는, I-프레임에서 시작하여 시퀀스의 다른 I-프레임까지의(그러나 이를 포함하지는 않음) 연속적 프레임들의 세트로서 정의될 수 있다. 도 1에서, 프레임들 1-8은 하나의 GOP를 포함하고, 프레임들 9-16은 제 2 GOP를 포함하고, 프레임 17은 제 3 GOP의 시작이다. 도 1에 도시된 GOP-구조는 때때로 "폐쇄형 GOP 구조"로 지칭되는데, 이는, GOP를 구성하는 프레임들 각각이 다른 GOP들의 프레임들에 의존하지 않기 때문이다.
도 2는, 인코딩된 데이터 비디오 스트림에 대한, 프리젠테이션 시간 순서, 프레임 의존 구조, 및 파일 포맷 순서의 다른 예를 도시하고, 도 1에 대해 설명된 것과 동일한 용어 규약을 따른다. 이 경우, 프리젠테이션 시간 순서에서 GOP의 마지막 P-프레임과 다음 GOP의 I-프레임 사이의 B-프레임들은 모두 다음 GOP의 I-프레임에 의존할 수 있고, 따라서 GOP를 포함하는 프레임들 중 일부는 다른 GOP들의 프레임들에 의존할 수 있다. 도 2에 도시된 GOP-구조는 때때로 "개방형-GOP 구조"로 지칭된다.
도 3은, 인코딩된 데이터 비디오 스트림에 대한, 프리젠테이션 시간 순서, 프레임 의존 구조, 및 파일 포맷 순서의 다른 예를 도시하고, 도 1에 대해 설명된 것과 동일한 용어 규약을 따른다. 이 경우, 프레임들 사이에 더 복잡한 의존 구조가 존재하는데, 즉, B-프레임들 6, 7, 8은 각각, 프리젠테이션 시간 순서에서, 다음 GOP의 시작에 있는 I-프레임 9에 후속하는 P-프레임 13에 의존한다.
도 4는, 인코딩된 데이터 비디오 스트림에 대한, 프리젠테이션 시간 순서, 프레임 의존 구조, 및 파일 포맷 순서의 다른 예를 도시하고, 도 1에 대해 설명된 것과 동일한 용어 규약을 따른다. 이 경우, B-프레임들 14, 15, 16은 각각, 다음 GOP의 시작에 있는 I-프레임 17에 의존하지만, 프리젠테이션 시간 순서에서 이들에 선행하는 어떠한 프레임들에 대해서도 의존하지 않는다.
진입 포인트들 및 이탈 포인트들
일반적으로 스트리밍 컨텐츠에 대해, 컨텐츠의 표현들의 프레임 의존 구조들과, 미디터 컨텐츠의 표현들 사이에서 스위칭하는데 이용되는 방법들, 상세하게는, 표현들 사이의 스위칭이 행해질 수 있는 어느 포인트들에서 어떻게 시그널링할지의 사이에 관계가 존재한다. 이 관계 정보는, 간결한 포맷으로 생성되고 클라이언트에 전송될 수 있으며, 아래에서 설명되는 바와 같이, 일반적으로 진입 포인트 및 이탈 포인트 정보로 지칭된다. 컨텐츠의 오직 하나의 표현만이 존재하는 경우에도, 즉, 다른 표현으로의 스위칭이 지원되지 않는 경우에도, 진입 포인트 및 이탈 포인트 정보는 또한 다른 목적들로, 예를 들어, 표현의 어느 부분들이 단일의 요청에서 다운로드될지를 결정하기 위해 이용될 수 있다.
이 논의의 목적들을 위해, 프레임의 프리젠테이션 시간은, 프레임이 컨텐츠의 다른 프레임들의 디스플레이 시작 시간에 대해 상대적으로 디스플레이를 시작하도록 의도되는 시간인데, 즉, 이것은 프레임의 프리젠테이션 시작 시간이고, 각각의 프레임은, 프리젠테이션 시간 순서에서 다음의 연속적인 프레임의 프리젠테이션 시작 시간에 정확히 디스플레이를 종료하도록 의도되는데, 즉, 프레임의 프리젠테이션 종료 시간은, 프리젠테이션 시간 순서에서 다음 프레임의 프리젠테이션 시작 시간, 또는 단순히 프리젠테이션 시간이다.
아래에서 진입 포인트들 및 이탈 포인트들의 정의들의 경우, 바이트 오프셋은 항상, 프레임의 시작에 대한 바이트 오프셋인 것으로 가정되고, 프리젠테이션 시간은 항상, 프레임의 프리젠테이션 시작 시간(이전 프레임의 프리젠테이션 종료 시간과 동일함)인 것으로 가정되지만, 이러한 제한들은 이 분야의 당업자가 인식할 바와 같이 완화될 수 있다. 예를 들어, 다른 대안적인 정의들 및 설명들에서, 데이터 스트림의 임의의 포인트에 대한 바이트 오프셋들, 이를테면, 비디오의 프레임을 포함하는 데이터의 중간부에 대한 바이트 오프셋이 고려될 수도 있고, 임의의 유효한 프리젠테이션 시간, 이를테면, 프레임의 프리젠테이션 시작 시간과 종료 시간 사이의 중간에 있는 프리젠테이션 시간이 고려될 수 있다.
본 명세서에서 사용되는 바와 같이, 진입 포인트들은, 진입의 시간 및 바이트 오프셋의 표시를 이용하여, 이를테면, "(프리젠테이션 진입 시간, 진입 바이트 오프셋)의 형태로, 또는 더 간단하게 "(PT, BO)"의 형태로 표현되거나 나타날 수 있다. 표현에 대한 진입 포인트 (PT, BO)는, 표현이 바이트 오프셋 BO로부터 시작하여 다운로드되고 종료까지 계속되면, 표현 내의 컨텐츠의 비디오 프레임들이 프리젠테이션 시간 PT로 시작하여 종료까지 프리젠테이션 시간 순서에서 끊김없이 플레이 아웃될 수 있는 포인트이다. 따라서, 본 명세서의 설명들에서, 진입 포인트는 포인트를 2-차원들로 특정하고, 여기서, 하나의 차원은 파일 포맷 순서에 대응하고, 다른 하나의 차원은 프리젠테이션 시간 순서에 대응한다. 본 명세서에서 더 상세히 아래에서 설명되는 바와 같이, 표현에 대해 이러한 포인트들을 시그널링하는 것은, 표현에 대한 진입 포인트들로서 이용될 수 있는데, 즉, 표현으로부터 어디에서 다운로딩 및 플레이 아웃을 시작할지를 결정하는데 이용될 수 있다.
진입 포인트(PT, BO)의 정의에 의해, 적어도 PT의 프리젠테이션 진입 시간을 갖는 모든 프레임들, 및 이러한 프레임들이 직접적으로 또는 간접적으로 의존하는 모든 프레임들은, 표현으로의 적어도 BO인 바이트 오프셋에서 시작함을 주목한다.
표현으로의 각각의 가능한 바이트 오프셋 BO의 경우, (PT, BO)가 진입 포인트가 되도록, 그리고 PT가 모든 이러한 가능한 진입 포인트들 사이에서 최소 프리젠테이션 시간이 되도록 고유의 프리젠테이션 시간 PT가 존재하고, 함수 TentryB()는 TentryB(BO) = PT가 되도록 정의된다. 모든 가능한 바이트 오프셋들 BO에 대한 이러한 진입 포인트들의 리스트는, 본 명세서에서 "바이트 오프셋 진입 포인트 리스트"로 지칭된다.
파일 포맷이 하나보다 많은 미디어, 이를테면 오디오와 비디오 데이터의 혼합을 포함하면, 진입 포인트는 상이한 미디어들을 고려해야 할 수 있음을 주목한다. 예를 들어, 바이트 오프셋 BO와 연관된 프리젠테이션 시간 PT는 PT1와 PT2 중 최대값으로서 정의될 수도 있고, 여기서 PT1은, 제 1 미디어에 대한 바이트 오프셋 BO에 대해 달성될 수 있는 최소 프리젠테이션 시간이고, PT2는, 제 2 미디어에 대해 달성될 수 있는 최소 프리젠테이션 시간이다. 진입 포인트들 및 이탈 포인트들과 관련하여 이하 설명되는 방법들 및 모든 추가적 정의들에 대해 유사한 코멘트들이 유지된다.
유사하게, 각각의 가능한 프리젠테이션 시간 PT에 대해, (PT, BO)가 진입 포인트가 되도록, 그리고 BO가 모든 이러한 진입 포인트들 사이에서 최대 바이트 오프셋이 되고, BentryT(PT) = BO를 정의하도록, 고유의 바이트 오프셋 BO가 존재한다. 모든 가능한 프리젠테이션 시간들 PT에 대한 이러한 진입 포인트들의 리스트는 본 명세서에서 "프리젠테이션 시간 진입 포인트 리스트"로 지칭된다.
바이트 오프셋 진입 포인트 리스트에서 상이한 바이트 오프셋들을 갖지만 동일한 프리젠테이션 시간을 갖는 진입 포인트들이 존재하는 것, 및 프리젠테이션 시간 진입 포인트에서 상이한 프리젠테이션 시간들을 갖지만 동일한 바이트 오프셋을 갖는 진입 포인트들이 존재하는 것이 가능하다. 게다가, 바이트 오프셋 진입 포인트 리스트에서 진입 포인트(PT, BO)가, 바이트 오프셋 진입 포인트 리스트에서 PT' = PT 및 BO' > BO를 갖는 어떠한 다른 진입 포인트(PT', BO')도 존재하지 않도록 되면, 진입 포인트 (PT, BO)는 또한 프리젠테이션 시간 진입 포인트 리스트에 있을 것이고, 프리젠테이션 시간 진입 포인트 리스트에서 BO' = BO 및 PT' < PT를 갖는 어떠한 다른 진입 포인트 (PT', BO')도 존재하지 않는 특성을 가질 것이다. 유사하게, 프리젠테이션 시간 진입 포인트 리스트에서 진입 포인트(PT, BO)가, 프리젠테이션 시간 진입 포인트 리스트에서 BO' = BO 및 PT' < PT를 갖는 어떠한 다른 진입 포인트(PT', BO')도 존재하지 않도록 되면, 진입 포인트 (PT, BO)는 또한 바이트 오프셋 진입 포인트 리스트에 있을 것이고, 바이트 오프셋 진입 포인트 리스트에서 PT' = PT 및 BO' > BO를 갖는 어떠한 다른 진입 포인트 (PT', BO')도 존재하지 않는 특성을 가질 것이다.
바이트 오프셋 진입 포인트 리스트 및 프리젠테이션 시간 진입 포인트 리스트 모두에 있는 진입 포인트들을 "메이저 진입 포인트들"로서 분류하고, 진입 포인트 리스트들 중 오직 하나에만 있는 나머지 진입 포인트들을 "마이너 진입 포인트들"로서 분류한다. (PT, BO)가 메이저 진입 포인트이면, (PT, BO) = (TentryB(BO), BentryT(PT))임을 주목한다. 각각의 마이너 진입 포인트 (PT, BO)의 경우, BO' > BO를 갖는 메이저 진입 포인트 (PT, BO')가 존재하거나 (이 경우 메이저 진입 포인트가 마이너 진입 포인트보다 우수한데, 이는, 동일한 프리젠테이션 시간에 시작하는 동일한 컨텐츠는 메이저 진입 포인트를 갖는 더 나중의 바이트 오프셋에서 시작하여 플레이 아웃될 수 있기 때문임), 또는 PT > PT'를 갖는 메이저 진입 포인트 (PT', BO)가 존재하며, 이 경우 메이저 진입 포인트가 마이너 진입 포인트보다 우수한데, 이는, 더 많은 컨텐츠가 메이저 진입 포인트에 의해 동일한 바이트 오프셋에서 시작하여 플레이 아웃될 수 있기 때문이다.
이 정의들은 표현 내의 프레임들의 순서와는 독립적으로, 즉, 파일 포맷 순서가 프리젠테이션 시간 순서이든, 디코딩 순서이든, 또는 표현 내의 프레임들의 몇몇 다른 순서이든, 유효함을 주목한다.
유사하게, "(프리젠테이션 이탈 시간, 이탈 바이트 오프셋)"의 형태의 이탈 포인트를 정의하며, 여기서, 프리젠테이션에 대한 이탈 포인트 (PT, BO)의 의미는, 표현이 시작시로부터 바이트 오프셋 BO를 통해 다운로드되면, 표현의 컨텐츠의 비디오 프레임들은 프리젠테이션 시간 순서에서 시작시에서 시작하여 프리젠테이션 시간 PT를 통해 끊김없이 플레이 아웃될 수 있다는 것이다. 따라서, 본 명세서의 설명들에서, 이탈 포인트는 2차원의 포인트를 특정하고, 여기서 하나의 차원은 파일 포맷 순서에 대응하고, 다른 하나의 차원은 프리젠테이션 시간 순거에 대응한다. 아래에서 더 상세히 설명하는 바와 같이, 표현에 대한 이러한 포인트들을 시그널링하는 것은 표현으로부터의 이탈 포인트들로서 이용될 수 있는데, 즉, 표현으로부터의 다운로딩 및 플레이 아웃을 종료할 경우를 결정하는데 이용될 수 있다.
이탈 포인트 (PT, BO)의 정의에 의해, 기껏해야 PT의 프리젠테이션 종료 시간을 갖는 모든 프레임들 및 이들 프레임들이 직접적으로 또는 간접적으로 의존하는 모든 프레임들은, 표현으로의 기껏해야 BO인 바이트 오프셋에서 종료한다.
표현으로의 각각의 가능한 바이트 오프셋 BO에 대해, (PT, BO)가 이탈 포인트가 되도록 그리고 PT가 모든 이러한 가능한 이탈 포인트들 중 최대 프리젠테이션 시간이 되고 TexitB(BO) = PT를 정의하도록, 고유의 프리젠테이션 시간 PT가 존재한다. 모든 가능한 바이트 오프셋들 BO에 대한 이러한 이탈 포인트들의 리스트를 "바이트 오프셋 이탈 포인트 리스트"가 되도록 정의한다.
유사하게, 각각의 가능한 프리젠테이션 시간 PT에 대해, (PT, BO)가 이탈 포인트가 되도록 그리고 BO가 모든 이러한 가능한 이탈 포인트들 중 최소 바이트 오프셋이 되고 BexitT(PT) = BO를 정의하도록, 고유의 바이트 오프셋 BO가 존재한다. 모든 가능한 프리젠테이션 시간들 PT에 대한 이러한 이탈 포인트들의 리스트를 "프리젠테이션 시간 이탈 포인트 리스트"가 되도록 정의한다.
바이트 오프셋 이탈 포인트 리스트에서, 상이한 바이트 오프셋들을 갖지만 동일한 프리젠테이션 시간을 갖는 이탈 포인트들이 존재하는 것, 및 프리젠테이션 시간 이탈 포인트 리스트에서, 상이한 프리젠테이션 시간들을 갖지만 동일한 바이트 오프셋을 갖는 이탈 포인트들이 존재하는 것이 가능하다. 게다가, 바이트 오프셋 이탈 포인트 리스트에서 이탈 포인트 (PT, BO)가, 바이트 오프셋 이탈 포인트 리스트에서 PT' = PT 및 BO' < BO인 어떠한 다른 이탈 포인트들 (PT', BO')도 존재하지 않도록 되면, 이탈 포인트 (PT, BO)는 또한 프리젠테이션 시간 이탈 포인트 리스트에 있을 것이고, 프리젠테이션 시간 이탈 포인트 리스트에서 BO' = BO 및 PT' > PT인 어떠한 다른 이탈 포인트 (PT', BO')도 존재하지 않는 특성을 가질 것이다. 유사하게, 프리젠테이션 시간 이탈 포인트 리스트에서 이탈 포인트 (PT, BO)가, 프리젠테이션 시간 이탈 포인트 리스트에서 BO' = BO 및 PT' > PT인 어떠한 다른 이탈 포인트들 (PT', BO')도 존재하지 않도록 되면, 이탈 포인트 (PT, BO)는 또한 바이트 오프셋 이탈 포인트 리스트에 있을 것이고, 바이트 오프셋 이탈 포인트 리스트에서 PT' = PT 및 BO' < BO인 어떠한 다른 이탈 포인트 (PT', BO')도 존재하지 않는 특성을 가질 것이다.
바이트 오프셋 이탈 포인트 리스트 및 프리젠테이션 시간 이탈 포인트 리스트 모두에 있는 이탈 포인트들을 "메이저 이탈 포인트들"로서 분류하고, 이탈 포인트 리스트들 중 오직 하나에만 있는 나머지 이탈 포인트들을 "마이너 이탈 포인트들"로서 분류한다. (PT, BO)가 메이저 이탈 포인트이면, (PT, BO) = (TexitB(BO), BexitT(PT))임을 주목한다. 각각의 마이너 이탈 포인트 (PT, BO)의 경우, BO' < BO를 갖는 메이저 이탈 포인트 (PT, BO')가 존재하거나 (이 경우 메이저 이탈 포인트가 마이너 이탈 포인트보다 우수한데, 이는, 동일한 프리젠테이션 시간에 종료하는 동일한 컨텐츠는 메이저 이탈 포인트를 갖는 더 먼저의 바이트 오프셋에서 종료하여 플레이 아웃될 수 있기 때문임), 또는 PT < PT'를 갖는 메이저 이탈 포인트 (PT', BO)가 존재하며, 이 경우 메이저 이탈 포인트가 마이너 이탈 포인트보다 우수한데, 이는, 더 많은 컨텐츠가 메이저 이탈 포인트에 의해 동일한 바이트 오프셋에서 종료하여 플레이 아웃될 수 있기 때문이다.
이 정의들은 표현 내의 프레임들의 순서와는 독립적으로, 즉, 파일 포맷 순서가 프리젠테이션 시간 순서이든, 디코딩 순서이든, 또는 표현 내의 프레임들의 몇몇 다른 순서이든, 유효함을 주목한다.
도 5는, 도 1에 도시된 바와 동일한 구조들을 갖는 프레임들을 포함하는 표현에 대한 진입 포인트 리스트들을 도시한다. 도 5에 도시된 제 1 테이블은, 각각의 프레임의 시작에 대한 바이트 오프셋과 함께, 프레임들의 프레임 번호에 따라 파일 포맷 순서로 리스트된 프레임들을 도시한다. 도 5에 도시된 제 2 테이블은 프리젠테이션 시간 진입 포인트 리스트를 도시한다. 도 5에 도시된 제 3 테이블은 바이트 오프셋 진입 포인트 리스트이다. 도 5에 도시된 제 4 테이블은 메이저 진입 포인트들의 리스트이다. 이 마지막 3개의 테이블들에서, 진입 프리젠테이션 시간은, 플레이 아웃될 수 있는 제 1 프레임(이하, "진입 프레임"으로 지칭됨)의 프레임 번호이다. 도 5에서, 메이저 진입 포인트들은 (1, 0), (9, 27,537) 및 (17, 54,523)이다. 모든 메이저 진입 포인트들에 대해, 진입 프레임에 대해 파일 포맷 순서에서 후속하는 모든 프레임들이 플레이 아웃될 것이고, 이는, 폐쇄형 GOP 구조의 결과임을 주목한다. 프리젠테이션 시간을 나타내기 위해 프레임 번호를 이용하는 것은 프리젠테이션 시간을 표현하기 위한 단지 하나의 방식임을 주목하고, 일반적으로 재생될 미디어 또는 데이터가 프레임들과 같은 이산 시간 스텝들로 표현가능하지 않은 포맷들을 포함하는 많은 다른 프리젠테이션 시간 포맷들이 존재함을 이 분야의 당업자는 인식할 것이다.
도 6, 도 7 및 도 8 각각은, 도 2, 도 3 및 도 4에 도시된 것과 동일한 구조를 갖는 프레임들을 포함하는 표현에 대한 진입 포인트 리스트들을 각각 도시한다. 도 6(a), 도 6(b), 도 7 및 도 8 각각에 도시된 5개의 테이블들은 도 5에 대해 앞서 설명된 것과 동일한 포맷 및 의미를 갖지만, 도 6(a)는 파일 포맷에 대해 디코딩 순서를 이용하는 한편, 도 6(b)는 파일 포맷 순서로서 프리젠테이션 순서를 이용한다.
도 6(a)에서, 메이저 진입 포인트들은 (1, 0), (9, 22,033) 및 (17, 41,993)이다. (9, 22,033) 메이저 진입 포인트의 경우, 진입 프레임 9에 대해 파일 포맷 순서에서 후속하는 모든 프레임들이 플레이 아웃되지는 않을 것이다(예를 들어, 프레임들 6, 7 및 8). 이는, 개방형 GOP 구조의 결과이다.
도 7에서, 메이저 진입 포인트들은 (1, 0), (9, 22,031) 및 (17, 48,303)이다. (9, 22,031) 메이저 진입 포인트의 경우, 파일 포맷 순서에서 제 1 다운로드된 프레임은 프레임 9가 아니라 그 대신 프레임 13이고, 따라서, 다운로드된 제 1 프레임은 이 메이저 진입 포인트에 대해 플레이 아웃되는 제 1 프레임이 아님을 주목한다. 게다가, 파일 포맷 순서에서 프레임 13에 후속하는 프레임들 6, 7 및 8은 다운로드될 것이지만 이 메이저 진입 포인트로부터 플레이 아웃되지는 않을 것이다. 이는, 이러한 대안적인 개방형 GOP 구조의 결과이다.
도 8에서, 메이저 진입 포인트들은 (1, 0), (9, 27,537) 및 (14, 48,303)이다. (14, 48,303) 메이저 진입 포인트의 경우, 파일 포맷 순서에서 제 1 다운로드된 프레임은 프레임 14가 아니라 그 대신 프레임 17이고, 따라서 다운로드된 제 1 프레임은 이 메이저 진입 포인트에 대해 플레이 아웃되는 제 1 프레임이 아님을 주목한다. 이는, 이러한 대안적인 개방형 GOP 구조의 결과이다.
도 9, 도 10, 도 11 및 도 12 각각은, 도 1, 도 2, 도 3 및 도 4에 도시된 것과 동일한 구조를 갖는 프레임들을 포함하는 표현에 대한 이탈 포인트 리스트들을 각각 도시한다. 도 9, 도 10(a), 도 10(b), 도 11 및 도 12 각각에 도시된 5개의 테이블들은 도 5에 대해 앞서 설명된 것과 유사한 포맷 및 의미를 갖는다, 차이점들은, 진입 포인트들 대신에 이탈 포인트들이 도시된 점, 및 이탈 프리젠테이션 시간이, 플레이 아웃될 수 있는 마지막 프레임(이하, "이탈 프레임"으로 지칭됨)의 프레임 번호인 점이다. 도 10(a)는 파일 포맷에 대해 디코딩 순서를 이용하는 한편, 도 10(b)는 파일 포맷 순서로서 프리젠테이션 순서를 이용한다.
다른 예로, 도 13은, 도 4에 도시된 것과 동일한 의존 프레임 구조를 갖는 프레임들을 포함하는 표현에 대한 진입 포인트 리스트들을 도시하지만, 도 4에 도시된 디코딩 순서 대신에 프리젠테이션 시간 순서인 파일 포맷 순서를 갖고, 도 14는 대응하는 이탈 포인트 리스트들을 도시한다.
때때로, 표현의 각각의 메이저 진입 포인트 및 메이저 이탈 포인트를 시그널링하는 것이 적절한 경우가 있는 한편, 다른 때에는, 시그널링의 이러한 양은 상당한 시그널링 오버헤드를 나타낼 수 있고, 따라서 오직 선택된 메이저 진입 포인트들 및 메이저 이탈 포인트들만이 시그널링된다. 다른 경우들에서는, 마이너 진입 포인트들 및 마이너 이탈 포인트들 중 일부를 시그널링하는 것이 또한 적절하다.
진입 포인트들 및 이탈 포인트들을 생성하기 위한 방법
구현시에, 진입 포인트 생성기들 및 이탈 포인트 생성기들 구현들은 그의 입력의 미디어 인코딩 포맷에 의존할 수 있다. 예를 들어, 입력은 MPEG2 TS 포맷으로 캡슐화된 MPEG2 인코딩된 컨텐츠일 수 있거나, 입력은 MPEG2 TS 포맷으로 캡슐화된 H.264 AVC 컨텐츠일 수 있거나, 또는 입력은 ISO 파일 포맷으로 캡슐화된 H.264 AVC 컨텐츠일 수 있다. 다른 더 상세한 예들로서, H.264 AVC 컨텐츠는 "폐쇄형 GOP들"을 이용하여 인코딩될 수 있거나, 또는 H.264 AVC 컨텐츠는 "개방형 GOP들"을 이용하여 인코딩될 수 있거나, 또는 H.264 AVC 컨텐츠는 비디오 프레임들 사이에서 매우 일반적인 의존 구조를 허용하도록 인코딩될 수 있다. 다른 예들로서, B-프레임들은 배제될 수 있거나 또는 B-프레임들은 허용될 수 있다.
바람직하게, 상이한 진입 포인트 생성기들 및 이탈 포인트 생성기들 구현들의 출력 포맷은, 이 방법에 대한 특정한 미디어-인코딩 포맷 입력과는 독립적으로, 각각 동일한 진입 포인트 포맷 및 이탈 포인트 포맷이다. 이것은, 원래의 컨텐츠의 미디어-인코딩 포맷과는 독립적으로 세그먼트 맵들을 생성하기 위해 세그먼트 맵 생성기가 이용될 수 있기 때문에 유리한데, 즉, 원래의 미디어-인코딩 포맷이, ISO 파일 포맷으로 반송되는, "개방형 GOP들"에 의한 H.264 AVC이든, 또는 미디어-인코딩 포맷이, MPEG TS 포맷으로 반송되는, B-프레임들이 없는 "폐쇄형 GOP들"에 의한 MPEG2 TS이든, 동일한 세그먼트 맵 생성기가 이용될 수 있다.
바람직하게, 세그먼트 맵 생성기가, 선택할 충분히 많은 진입 포인트들 및 이탈 포인트들을 가져서, 최종 사용자들에게 뛰어난 스트리밍 경험을 제공하기 위해 클라이언트들에 의해 이용될 수 있는 세그먼트 맵들을 생성하도록, 진입 포인트 생성기들 및 이탈 포인트 생성기들의 출력은 진입 포인트들 및 이탈 포인트들의 충분히 조밀한 세트를 각각 포함해야 한다. 이것은, 진입 포인트 생성기들 및 이탈 포인트 생성기들이 AHS 스트리밍 솔루션의 세부사항들을 고려할 필요가 없고, 그 대신 AHS 스트리밍 로직의 세부사항들은 세그먼트 맵 생성기에 의해 고려될 수 있기 때문에 바람직하다.
표현 내의 프레임들의 파일 포맷 순서는, 임의의 프레임 F에 대해, 그 프레임 F가 의존하는 모든 프레임들이 프레임 F보다 파일 포맷 순서에서 더 먼저이면, 디코딩 순서로 지칭된다.
아래에서 설명되는 진입 포인트들 및 이탈 포인트들을 생성하는 방법들 및 실시예들에 대해, 바이트 오프셋은 프레임의 시간에 대한 바이트 오프셋인 것으로 항상 가정되고, 프리젠테이션 시간은 프레임의 프리젠테이션 시작 시간(이전의 프레임의 프리젠테이션 종료 시간과 동일함)인 것으로 항상 가정되지만, 이러한 제한들은 이 분야의 당업자들이 인식할 바와 같이 완화될 수 있다.
파일 포맷 순서가 디코딩 순서인 경우 이탈 포인트 생성 방법의 제 1 실시예는 다음과 같아서, 즉, 각각의 프리젠테이션 시간 PT에 대해, PT보다 엄격하게 더 작은 프리젠테이션 시간을 갖는 모든 프레임들에 대해 파일 포맷 순서에서 후속하는 모든 프레임들 중 최소 바이트 오프셋을 갖는 프레임에 대한 바이트 오프셋 BO를 결정한다. 결정된 이탈 포인트는 (PT, BO)이다. (파일 포맷 순서에서 어떠한 이러한 프레임도 존재하지 않으면, BO는 표현의 종료에 대한 바이트 오프셋이다.) BO = BexitT(PT)임을 주목한다. 이 실시예에서, 이탈 포인트 생성 방법은 이탈 포인트들의 리스트를 생성하기 위해 기본적인 프레임 의존 구조를 분석할 필요가 없음을 주목한다. 이것은, 파일 포맷 순서가 디코딩 순서인 특성이, 프레임들의 프리젠테이션 시간 및 파일 포맷 순서에 기초하여 이탈 포인트들을 효율적으로 결정하기에 충분할만큼 프레임 의존 구조를 표현하기 때문이다.
제 1 실시예에 의해 생성된 리스트의 다수의 연속적 이탈 포인트들이 동일한 이탈 바이트 오프셋 BO를 가지면, 프리젠테이션 시간 순서에서 가장 마지막 이탈 포인트, 즉, 동일한 이탈 바이트 오프셋 BO를 갖는 이러한 연속적 이탈 포인트들 중 가장 큰 프리젠테이션 시간 PT를 갖는 이탈 포인트가 메이저 이탈 포인트이고 나머지가 마이너 이탈 포인트들이다.
표현의 파일 포맷 순서가 디코딩 순서인 이탈 포인트 생성 방법의 제 2 실시예는 다음과 같아서, 즉, 파일 포맷 순서에서 각각의 프레임의 프리젠테이션 시간 및 각각의 프레임에 대한 바이트 오프셋을 결정한다. 각각의 바이트 오프셋 BO에 대해, 파일 순서에서, BO에서 또는 그 후에 시작하는 모든 프레임들 중 가장 먼저의 프리젠테이션 시간 PT를 결정한다. 결정된 이탈 포인트는 (PT, BO)이다. (하나의 추가적인 이탈 포인트 (PT, BO)가 존재하고, 여기서 BO는 표현의 종료에 대한 바이트 오프셋이고, PT는 표현의 프리젠테이션 종료 시간이다.) PT = TexitB(BO)임을 주목한다. 이 실시예에서, 이탈 포인트 생성 방법은 이탈 포인트들의 리스트를 생성하기 위해 기본적인 프레임 의존 구조를 분석할 필요가 없음을 주목한다. 이것은, 파일 포맷 순서가 디코딩 순서인 특성이, 프레임들의 프리젠테이션 시간 및 파일 포맷 순서에 기초하여 이탈 포인트들을 효율적으로 결정하기에 충분할만큼 프레임 의존 구조를 표현하기 때문이다.
제 2 실시예에 의해 생성된 리스트의 다수의 연속적 이탈 포인트들이 동일한 이탈 프리젠테이션 시간 PT를 가지면, 파일 포맷 순서에서 가장 먼저의 이탈 포인트, 즉, 동일한 이탈 프리젠테이션 시간 PT를 갖는 이러한 연속적인 이탈 포인트들 중 가장 작은 바이트 오프셋 BO를 갖는 이탈 포인트가 메이저 이탈 포인트이고 나머지가 마이너 이탈 포인트들이다.
도 5 내지 도 14는 진입 포인트들 및 이탈 포인트들을 생성하기 위해 가능한 포맷들 및 예들을 도시한다. 파일 포맷 순서는, 도 5 내지 도 12에 도시된 예들에 대해 도시된 디코딩 순서이고, 따라서, 앞서 설명된 이탈 생성 방법들은 도 9 내지 도 12에 도시된 이탈 포인트 리스트들을 생성하는데 이용될 수 있고, 여기서 제 1 실시예는 이 예들 각각에서 제 2 테이블을 생성하는데 이용될 수도 있고, 여기서 제 2 실시예는 이 예들 각각의 제 3 테이블을 생성하는데 이용될 수도 있고, 여기서 이 예들 각각에서의 메이저 이탈 포인트들의 제 4 테이블은 앞서 설명된 2개의 실시예들 중 하나를 이용하여 생성될 수 있다.
이탈 포인트 생성기들의 많은 대안들 및 향상들이 존재한다. 예를 들어, 이탈 포인트 생성 방법의 제 2 실시예는 파일 포맷이 연속적으로 생성되는 온-라인 방식으로 이탈 포인트들을 생성할 수 있는데, 즉, 각각의 바이트 오프셋 BO에 대해, 방법은, 파일 포맷 순서에서, BO 이전에 시작하는 모든 프레임들 중 누락 프레임의 가장 먼저의 프리젠테이션 시간 PT를 결정할 수 있고, 이탈 포인트는 (PT, BO)이다. 예를 들어, 도 1에서, 바이트 오프셋 BO가 프레임 5의 시작에 대한 것이면, 파일 포맷 순서에서 BO 이전에 시작하는 프레임은 프레임 1이기 때문에, 누락 프레임의 가장 먼저의 프리젠테이션 시간 PT는 프레임 2의 프리젠테이션 시간이고, 이는, 이탈 프리젠테이션 시간이 프레임 1의 종료 프리젠테이션 시간임을 의미한다. 다른 예로서, 도 1에서 바이트 오프셋 BO가 프레임 13의 시작에 대한 것이면, 파일 포맷 순서에서 BO 이전에 시작하는 프레임들은 1, 5, 2, 3, 4, 6, 7, 8 및 9이기 때문에, 이 리스트에서 누락 프레임의 가장 먼저의 프리젠테이션 시간 PT는 프레임 10의 프리젠테이션 시간이고, 이는, 이탈 프리젠테이션 시간이 프레임 9의 종료 프리젠테이션 시간임을 의미한다. 파일 포맷에서, BO에서 또는 그에 후속하여 시작하는 프레임들에 대해 어떠한 정보도 요구되지 않음을 주목한다. 이 분야의 당업자가 인식할 바와 같이, 파일 포맷 순서에서, BO 이전에 있는 모든 프레임들의 프리젠테이션 시간들로부터 PT의 효율적인 결정을 허용하는 표준 데이터 구조들 및 방법들이 존재한다.
도 13 및 도 14에 도시된 예들의 경우 파일 포맷 순서는 도 4에 도시된 디코딩 순서가 아니지만, 그 대신 파일 포맷 순서는 프리젠테이션 시간 순서임을 주목한다. 검증될 수 있는 바와 같이, 파일 포맷 순서가 디코딩 순서가 아니기 때문에, 이탈 포인트 생성 방법의 제 1 실시예는 도 14에 도시된 제 2 테이블을 생성하지 않고, 유사하게 이탈 포인트 생성 방법의 제 2 실시예는 도 14에 도시된 제 3 테이블을 생성하지 않는다. 그러나, 아래에서 설명되는 이탈 포인트 생성 방법의 제 3 실시예가 도 14에 도시된 테이블들을 생성하는데 이용될 수 있다.
기본적인 파일 포맷 순서 및 프레임 의존 구조와는 독립적으로 이용될 수 있는 이탈 포인트 생성 방법의 제 3 실시예는, 다음과 같이 설명될 수 있어서, 즉, 각각의 바이트 오프셋 BO에 대해, 기껏해야 PT의 종료 프리젠테이션 시간을 갖는 모든 프레임들이, 파일 포맷 순서에서 BO 이전에 시작하는 프레임들에만 직접적으로 또는 간접적으로 의존하도록, 가장 마지막 프리젠테이션 시간 PT를 결정한다. 그 다음, 결정된 이탈 포인트는 (PT, BO)이다. PT = TexitB(BO)임을 주목한다. 이탈 포인트 생성 방법의 제 3 실시예는, 파일 포맷이 연속적으로 생성되는 온-라인 방식으로 이탈 포인트들을 생성할 수 있는데, 즉, 각각의 바이트 오프셋 BO에 대해, 파일 포맷 순서에서, BO 이전의 프레임들의 프레임 의존 구조 및 프리젠테이션 시간들에만 기초하여 BO와 연관된 이탈 프리젠테이션 시간을 결정한다.
BO와 연관된 이탈 프리젠테이션 시간을 결정하기 위한 하나의 프로세스는, BO 이전에 시작하는 프레임들의 제 1 리스트를 결정하고, BO에서 또는 BO를 넘어서 시작하는 프레임들에 직접적으로 또는 간접적으로 의존하는 모든 프레임들을 프레임들의 제 1 리스트로부터 제거함으로써 프레임들의 제 1 리스트로부터 프레임들의 제 2 리스트를 결정하는 것이고, PT는, 모든 프레임들 중 프레임들의 제 2 리스트에 없는, 가장 작은 프레임 번호를 갖는 프레임의 프리젠테이션 시간이다. 프레임들의 제 2 리스트는 다음과 같이 결정될 수 있음을 주목한다. BO에서 또는 BO를 넘어서 시작하는 프레임들에 직접적으로 의존하는 모든 프레임들을 프레임들의 제 1 리스트로부터 선택함으로써 프레임들의 제 3 리스트를 결정한다. 그 다음, 프레임들의 제 2 리스트는, 프레임들의 제 1 리스트의 프레임들 사이의 프레임 의존 구조로부터 그리고 프레임들의 제 3 리스트로부터 결정될 수 있다.
이 분야의 당업자가 인식할 바와 같이, 앞서 설명된 실시예들에 대해 많은 가능한 대안들 및 최적화들이 존재한다. 예를 들어, 특정한 바이트 오프셋 BO와 연관된 이탈 프리젠테이션 시간을 결정하기 위해 앞서 설명된 프로세스는, BO에 대한 정보 및 리스트들을 결정하기 위해 BO 이전의 바이트 오프셋들로부터 정보 및 리스트들을 보유하는 전반적 프로세스에 통합될 수 있다. 다른 최적화로서, 리스트 포맷 이외의 데이터 구조들이 이용될 수 있고, 리스트의 오직 일부들에 대한 세부 정보만이 명시적으로 표현될 수 있다. 예를 들어, 각각의 프레임이, 파일 포맷 순서에서 그 프레임에 후속하거나 그 프레임 이전에 기껏해야 D개의 프레임들인 프레임들에 직접적으로 또는 간접적으로 의존하도록 되는 것으로 프레임 의존 구조가 알려지면, BO 이전에 또는 BO에 후속하여 시작하는 그 D개의 프레임들에 대한 세부 정보가 유지될 수 있고, 프레임들에 대한 임의의 다른 정보는 묵시적으로 또는 압축된 포맷으로 표현될 수 있다.
진입 포인트 생성 방법의 제 1 실시예는 다음과 같다. 종종 그러한 바와 같이, 이하, 독립 데이터 리프레쉬 프레임(종종 IDR-프레임으로 단축됨)으로 지칭되는 프레임 타입이 존재하는 것으로 가정하며, 이 프레임은 다음의 특성, 즉, 프레임 F는, F가 임의의 다른 프레임에 의존하지 않으면, 그리고 프레임 F의 프리젠테이션 시간보다 더 큰 프리젠테이션 시간들을 갖는 모든 프레임들 F' 및 이러한 프레임들 F'가 의존하는 모든 프레임들이 파일 포맷 순서에서 모두 프레임 F의 이후이면, IDR-프레임인 특성을 갖는다.
진입 포인트 생성 방법의 제 1 실시예는 IDR-프레임들을 식별할 수 있고, 각각의 이러한 IDR-프레임 F에 대해, 파일 포맷 순서에서 프레임 F에 대한 바이트 오프셋 BO를 결정하고, 그 다음, 진입 포인트를 (PT, BO)로서 결정하며, 여기서 PT는 프레임 F의 프리젠테이션 시간이다. 이 제 1 실시예에서, 진입 포인트 생성 방법은 진입 포인트들의 리스트를 생성하기 위해 기본적인 프레임 의존 구조를 분석할 필요가 없음을 주목한다. 이것은, IDR-프레임의 정의가 진입 포인트들을 효율적으로 결정하기에 충분할만큼 프레임 의존 구조 및 파일 포맷 구조를 표현하기 때문이다.
진입 포인트 생성 방법의 제 1 실시예의 많은 대안들 및 향상들이 존재한다. 예를 들어, 진입 포인트 생성 방법의 제 1 실시예는, 파일 포맷이 연속적으로 생성되는 온-라인 방식으로 진입 포인트들을 생성할 수 있는데, 즉, 파일 포맷 순서에서 프레임 F에 대한 각각의 바이트 오프셋 BO에 대해, F가 IDR-프레임인지 여부를 결정하고, F가 IDR-프레임이면, 프레임 F의 프리젠테이션 시간 PT를 결정하고, 진입 포인트 (PT, BO)를 결정한다. 파일 포맷에서 프레임 F에 후속하는 프레임들에 대한 어떠한 정보도 요구되지 않음을 주목한다.
기본적인 파일 포맷 순서 및 프레임 의존 구조와는 독립적으로 이용될 수 있는 진입 포인트 생성 방법의 제 2 실시예는 다음과 같이 설명될 수 있어서, 즉, 각각의 바이트 오프셋 BO에 대해, 적어도 PT의 프리젠테이션 시간을 갖는 모든 프레임들이 파일 포맷 순서에서, BO에서 또는 BO에 후속하여 시작하는 프레임들에만 직접적으로 또는 간접적으로 의존하도록 가장 먼저의 프리젠테이션 시간 PT를 결정한다. 그 다음, 결정된 이탈 포인트는 (PT, BO)이다. PT = TentryB(BO)임을 주목한다.
도 5, 도 6(a), 도 6(b), 도 7 및 도 8은, 도 1, 도 2, 도 3 및 도 4에 각각 도시된 프레임 의존 구조들에 대응하는, 파일 포맷 순서 및 그에 대응하여 생성된 진입 포인트 리스트들의 상이한 예들을 도시한다. 도 6(b) 내지 도 13은, 파일 포맷 순서가 프리젠테이션 시간 순서인 경우, 도 2 및 도 4에 각각 도시된 프레임 의존 구조에 대응하는 파일 포맷 순서 및 그에 대응하는 생성된 생성된 진입 포인트 리스트들의 다른 예를 도시한다. 이 진입 포인트들의 특성들은 이미 앞서 설명되었다.
도 5, 도 6(a), 도 6(b), 도 8 및 도 13에서, 프레임 의존 구조 및 파일 포맷 순서는, 각각의 I-프레임이 IDR-프레임이 되도록 하고, 따라서, 진입 포인트 생성 방법의 제 1 실시예는 진입 포인트들의 리스트를 생성할 수 있다. 제 1 실시예에 의해 생성된 진입 포인트 리스트는 도 5, 도 6(a) 및 도 6(b)에 대한 메이저 진입 포인트 리스트의 제 4 테이블에 대응한다. 제 1 실시예에 의해 생성된 진입 포인트 리스트는 도 8에 대한 메이저 진입 포인트 리스트의 제 4 테이블과는 상이하고, 상세하게는, 도 8에 도시된 메이저 진입 포인트 (14, 48,303)는, 제 1 실시예가 생성할 진입 포인트 (17, 48,303)보다 바람직하다. 제 1 실시예에 의해 생성된 진입 포인트 리스트는 도 13에 대한 메이저 진입 포인트 리스트의 제 4 테이블의 서브세트이고, 상세하게는, 도 13에 도시된 3개의 메이저 진입 포인트들 (14, 48,303), (15, 51,032) 및 (16, 54,523)은 제 1 실시예에 의해서는 생성되지 않을 것이다.
도 7에서, 라벨 9를 갖는 I-프레임은 IDR-프레임이 아닌데, 이는, 라벨들 10, 11 및 12를 갖는 프레임들이 파일 포맷 순서에서 I-프레임들에 후속하고, 이들 모두는, I-프레임에 선행하는, 라벨 13을 갖는 프레임에 의존하기 때문이다.
제 2 실시예에 의해 생성된 진입 포인트 리스트는, 도 5, 도 6(a), 도 6(b), 도 7, 도 8 및 도 13에 대한 메이저 진입 포인트 리스트의 제 3 테이블에 대응한다.
제 2 실시예에 의해 생성된 리스트의 다수의 연속적 진입 포인트들이 동일한 진입 프리젠테이션 시간 PT를 가지면, 파일 포맷 순서에서 가장 마지막 진입 포인트, 즉, 이 동일한 진입 프리젠테이션 시간 PT를 갖는 이러한 연속적 진입 포인트들 중 가장 큰 바이트 오프셋 BO를 갖는 진입 포인트가 메이저 진입 포인트이고 나머지가 마이너 진입 포인트들임을 주목한다. 도 5, 도 6(a), 도 6(b), 도 7, 도 8 및 도 13의 제 4 테이블에 도시된 메이저 진입 리스트는 일반적으로, 제 2 실시예에 의해 생성된 진입 포인트 리스트에 기초하여 이 메이저 진입 포인트 선택 프로세스로부터 생성될 수 있다.
어떠한 프레임도 파일 포맷 순서에 대해 D개의 프레임들보다 더 멀리 떨어진 임의의 프레임에 간접적으로 또는 직접적으로 의존하지 않도록 프레임 의존 구조가 제한되게 하는 몇몇 양의 정수값 D가 존재한다고 가정한다. 그 다음, 진입 포인트 생성 방법의 제 2 실시예는 다음과 같이 파일 포맷이 연속적으로 생성되는 온-라인 방식으로 생성될 수 있는데, 즉, 각각의 바이트 오프셋 BO에 대해, 파일 포맷 순서에서, BO 이전의 프레임들 및 BO에 후속하는 기껏해야 D개의 프레임들까지의 프레임들의 프리젠테이션 시간들 및 프레임 의존 구조에만 기초하여 BO와 연관된 진입 프리젠테이션 시간을 결정한다.
BO와 연관된 진입 프리젠테이션 시간을 결정하기 위한 하나의 프로세스는, 파일 포맷 순서에서, 바이트 오프셋 BO에서 시작하는 D개의 연속적 프레임들과 함께 BO 이전에 시작하는 최대 프레임 번호를 갖는 프레임을 포함하는 D+1개의 프레임들의 제 1 리스트를 결정하고, 프레임들의 제 1 리스트의 프레임들 중 BO 이전에 시작하는 프레임에 간접적으로 또는 직접적으로 의존하는 프레임의 가장 큰 프레임 번호인 제 1 프레임 번호를 결정하는 것이고, PT는, 제 1 프레임 번호보다 1 더 큰 프레임 번호를 갖는 프레임의 프리젠테이션 시간이다. 파일 포맷 순서에서 프레임들의 제 1 리스트를 넘는 임의의 프레임은 BO 이전에 시작하는 어떠한 프레임에도 간접적으로 또는 직접적으로 의존할 수 없음을 주목한다. 제 1 프레임 번호는 다음과 같이 결정될 수 있다. 프레임들의 제 1 리스트로부터, BO 이전에 시작하는 프레임들에 간접적으로 의존하는 모든 프레임들을 선택함으로써 프레임들의 제 2 리스트를 결정한다. 그 다음, 제 1 프레임 번호는, 프레임들의 제 1 리스트의 프레임들 사이의 프레임 의존 구조로부터 및 프레임들의 제 2 리스트로부터 결정될 수 있다.
이 분야의 당업자가 인식할 바와 같이, 아래에서 설명되는 실시예들에 대해 가능한 많은 대안들 및 최적화들이 존재한다. 예를 들어, 특정한 바이트 오프셋 BO와 연관된 진입 프리젠테이션 시간을 결정하기 위해 앞서 설명된 제 2 실시예는, BO에 대한 정보 및 리스트들을 결정하기 위해 BO 이전의 바이트 오프셋들로부터의 정보 및 리스트들을 보유하는 전반적 프로세스에 통합될 수 있다. 다른 최적화로서, 리스트 포맷 이외의 데이터 구조들이 이용될 수 있고, 리스트의 오직 일부들에 대한 세부 정보가 명시적으로 표현될 수 있다. 예를 들어, 세부 정보는, BO에서 시작하는 D개의 연속적인 프레임들에 대해 유지될 수 있고, 프레임들에 대한 임의의 다른 정보는 묵시적으로 또는 압축된 포맷으로 표현될 수 있다.
끊김없는 스위칭 방법들
1. 진입 포인트들 및 이탈 포인트들을 이용한 끊김없는 스위칭 방법들
표현과 연관된 진입 포인트들 및 이탈 포인트들의 특성들은 다음과 같다. 진입 포인트로 리스트된 진입 프리젠테이션 시간은, 플레이아웃이 시작될 수 있고 표현의 이탈 포인트로 리스트된 임의의 후속 이탈 프리젠테이션 시간까지 끊김없이 계속될 수 있는, 표현으로부터의 데이터의 프리젠테이션 시간을 나타내고, 진입 포인트와 연관된 바이트 오프셋은, 다운로드가, 그 프리젠테이션 시간에 플레이아웃이 시작하도록 허용할 데이터를 수신하기 시작할 수 있는, 세그먼트 내의 바이트 위치를 나타낸다. 유사하게, 이탈 포인트로 리스트된 이탈 프리젠테이션 시간은, 표현의 진입 포인트로 리스트된 임의의 이전의 진입 프리젠테이션 시간에 시작하는 끊김없는 플레이아웃이 종료될 수 있는, 표현으로부터의 데이터의 프리젠테이션 시간을 나타내고, 이탈 포인트와 연관된 바이트 오프셋은 세그먼트 내의 바이트 위치를 나타내고, 여기서, 그 프리젠테이션 시간에 플레이아웃이 종료하도록 허용할 데이터를 수신하기 위한 다운로드가 종료할 수 있다.
제 1 표현으로부터 제 2 표현으로의 스위칭을 위한 클라이언트 방법의 개관은 다음과 같다. 클라이언트가, 자신이 프리젠테이션 시간 T 이후 가능한 가장 먼저의 프리젠테이션 시간에 끊김없는 스위칭을 행하려 한다고 결정한 것으로 가정하고, 여기서, 예를 들어, T는, 미디어 버퍼에서 이미 이용가능하거나 또는 미디어 버퍼로 다운로드되도록 이미 요청된 제 1 표현으로부터의 가장 마지막 프리젠테이션 시간이다. 제 2 표현에 대한 이용가능한 진입 포인트들로부터, 클라이언트는, 적어도 T인 제 2 표현에 대한 모든 진입 프리젠테이션 시간들 중 TS가 가장 먼저가 되도록 진입 포인트 (TS, BOS)를 선택할 수 있다. 제 1 표현에 대한 이용가능한 진입 포인트들로부터, 클라이언트는, 적어도 TS인 제 1 표현에 대한 모든 이탈 프리젠테이션 시간들 중 TE가 가장 먼저가 되도록 이탈 포인트 (TE, BOE)를 선택할 수 있다. 클라이언트는, 이탈 바이트 오프셋 BOE까지 제 1 표현으로부터 데이터를 다운로드할 수 있고, 진입 바이트 오프셋 BOS에서 시작하는 제 2 표현으로부터 데이터를 다운로드할 수 있다. 클라이언트는, 제 1 표현으로부터의 그리고 제 2 표현으로부터의 다운로드된 데이터를 미디어 플레이어에 제공할 수 있고, 일시적 시간 TE까지(이를 포함함) 제 1 표현을 비디오 디코딩하도록, 그리고 일시적 시간 TS로부터 시작하여 그로부터 계속되는 제 2 표현을 비디오 디코딩하도록 미디어 플레이어에 명령할 수 있다. TS가 TE와 동일하지 않은 경우, 즉, TE > TS인 경우, 미디어 플레이어는, 어떠한 프리젠테이션 시간 TU까지 제 1 표현으로부터의 디스플레이에 비디오를 렌더링하도록 결정할 수 있고, 그 다음, 프리젠테이션 시간 TU에서 시작하는 제 2 표현으로부터의 디스플레이로 계속할 수 있고, 여기서 TU는 TS와 TE 사이(이들을 포함함)이다. 몇몇 실시예들에서, TU = TS이면 바람직한데, 이는, 이것이 이탈 포인트에서 제 2 표현의 플레이아웃의 깨끗한 시작을 허용하기 때문이다.
제 1 대안적 클라이언트 스위칭 방법으로서, 클라이언트가, 자신이 프리젠테이션 시간 T 이전에 가능한 가장 마지막 프리젠테이션 시간에 끊김없는 스위칭을 행하려 한다고 결정한 것으로 가정한다. 제 1 표현에 대한 이용가능한 이탈 포인트들로부터, 클라이언트는, 기껏해야 T인 제 1 표현에 대한 모든 이탈 프리젠테이션 시간들 중 TE가 가장 마지막이 되도록 이탈 포인트 (TE, BOE)를 선택할 수 있다. 제 2 표현에 대한 이용가능한 진입 포인트들로부터, 클라이언트는, 기껏해야 TE인 제 2 표현에 대한 모든 진입 프리젠테이션 시간들 중 TS가 가장 마지막이 되도록 진입 포인트 (TS, BOS)를 선택할 수 있다. 제 1 대안적 클라이언트 방법의 나머지는, 진입 및 이탈 포인트들이 선택되면, 앞서 설명된 것과 같을 수 있다.
제 2 대안적 클라이언트 스위칭 방법으로서, 클라이언트가, 자신이 프리젠테이션 시간 T에 가능한 한 가장 가까운 프리젠테이션 시간에 끊김없는 스위칭을 행하려 한다고 결정한 것으로 가정한다. 제 1 표현에 대한 이용가능한 이탈 포인트들로부터, 클라이언트는, 적어도 T인 제 1 표현에 대한 모든 이탈 프리젠테이션 시간들 중 TE가 가장 먼저가 되도록 이탈 포인트 (TE, BOE)를 선택할 수 있다. 제 2 표현에 대한 이용가능한 진입 포인트들로부터, 클라이언트는, 기껏해야 TE인 제 2 표현에 대한 모든 진입 프리젠테이션 시간들 중 TS가 가장 마지막이 되도록 진입 포인트 (TS, BOS)를 선택할 수 있다. 제 2 대안적 클라이언트 방법의 나머지는, 진입 및 이탈 포인트들이 선택되면, 앞서 설명된 것과 같을 수 있다.
제 3 대안적 클라이언트 스위칭 방법으로서, 클라이언트는, 제 2 표현에 대한 이용가능한 진입 포인트들로부터, 기껏해야 T인 제 2 표현에 대한 모든 진입 포인트들 중 TS가 가장 마지막 진입 프리젠테이션 시간이 되도록 진입 포인트 (TS, BOS)를 선택할 수 있다. 제 1 표현에 대한 이용가능한 이탈 포인트들로부터, TS 이후인 제 1 표현에 대한 모든 이탈 프리젠테이션 시간들 중 TS가 가장 먼저가 되도록 이탈 포인트 (TE, BOE)를 선택할 수 있다.
제 4 대안적 클라이언트 스위칭 방법으로서, 클라이언트가, 예를 들어, 제 1 표현으로부터 다운로드된, 이미 버퍼에 있는 미디어에 기초하여, 자신이 제 1 표현으로의 바이트 오프셋 BO 이전에 가능한 가장 마지막 프리젠테이션 시간에 제 1 표현으로부터 제 2 표현으로의 끊김없는 스위칭을 행하려 한다고 결정한 것으로 가정하며, 여기서, BO는 제 1 표현 중 미디어 버퍼로 이미 다운로드된 부분의 종료의 바이트 오프셋, 또는 미디어 버퍼로의 다운로드를 위해 이미 요청된, 제 1 표현의 종료의 바이트 오프셋일 수도 있다. 제 1 표현에 대한 이용가능한 이탈 포인트들로부터, 클라이언트는, 기껏해야 BO인 제 1 표현에 대한 모든 이탈 바이트 오프셋들 중 BOE가 가장 마지막이 되도록 이탈 포인트 (TE, BOE)를 선택할 수 있다. 제 2 표현에 대한 이용가능한 진입 포인트들로부터, 클라이언트는, 기껏해야 TE인 제 2 표현에 대한 모든 진입 프리젠테이션 시간들 중 TS가 가장 마지막이 되도록 진입 포인트 (TS, BOS)를 선택할 수 있다. 제 4 대안적 클라이언트 방법의 나머지는, 진입 및 이탈 포인트들이 선택되면, 앞서 설명된 것과 같을 수 있다. 이 분야의 당업자들이 인식할 바와 같이, 예를 들어, 제 4 대안에서와 같이 제 1 표현에 대한 초기 바이트 오프셋에 기초하여 스위칭의 결정을 기초로 하는 것, 및 제 2 대안에서 설명된 바와 같이 이에 기초하여 진입 및 이탈 포인트들을 결정하는 것과 같은, 상기한 것의 조합들인 다른 대안적인 클라이언트 스위칭 방법들이 존재한다.
제 1, 제 2 및 제 4 대안적 클라이언트 스위칭 방법들에 대해, 제 1 표현에 대해 선택된 이탈 포인트는 제 2 표현에 대해 선택된 진입 포인트에 대해 독립적임을 주목한다. 따라서, 이 대안들은, 스위칭이 고려될 수 있는 하나보다 많은 제 2 표현의 선택이 존재할 수 있는 경우, 그리고 가능한 제 2 표현들 중 어느 것을 선택할지를 결정하기 전에 제 1 표현의 다운로드를 어디에서 완료할지를 클라이언트가 결정할 수 있는 경우, 매력적인 방법들을 제공한다. 주어진 프리젠테이션 T 또는 바이트 오프셋 BO 이전에 제 1 표현에 대한 이탈 포인트를 선택하는 대안들은, 이용가능한 대역폭이 감소되었기 때문에 클라이언트가 더 낮은 레이트의 제 2 표현으로 감소할 필요가 있는 경우 적용가능할 수 있고, 이러한 경우, 프리젠테이션 시간 T 또는 바이트 오프셋 BO는, 제 1 표현에 대해 이용가능하거나 곧 이용가능하게 될 가장 마지막으로 이용가능한 프리젠테이션 시간 또는 바이트 오프셋일 수 있고, 이용가능한 대역폭이 감소된 경우, 더 높은 레이트의 제 1 프리젠테이션으로부터 어떠한 추가적인 데이터도 다운로드될 필요가 없는데, 이는, 이것이, 플레이아웃을 끊김없이 계속할 수 있도록 제 2 표현으로부터 충분한 데이터가 도달하기 전에 미디어 버퍼가 드레인(drain)될 가능성을 감소시킬 경향이 있을 것이기 때문이다.
2. 진입 포인트들 및 이탈 포인트들에 기초한 다운로드 부분들의 선택
본 개시를 읽은 후 이 분야의 당업자들이 인식할 바와 같이, 클라이언트가 진입 포인트 및 이탈 포인트 정보를 활용할 수 있는 많은 방법들이 존재한다. 예를 들어, 사용자 경험 측면에서의 결정적 팩터는, 예를 들어, 웹 페이지의 링크 상에서 클릭함으로써 또는 비디오의 플레이아웃 위치를 상이한 플레이아웃 시간으로 드래그하기 위해 마우스를 이용함으로써 플레이 아웃할 비디오를 사용자가 요청한 시간으로부터 비디오를 플레이 아웃하기 시작하는데 소요되는 시간의 양이다. 특히, 사용자가 상이한 컨텐츠들을 샘플링하고 있는 경우, 즉, 하나의 컨텐츠로부터 다른 컨텐츠로 상당히 빈번하게 이동하는 경우, 또는 특정한 컨텐츠 내에서 상이한 시작 위치들을 추구하는 경우, 이 시간의 양이 더 짧을수록, 일반적으로 사용자 경험은 더 양호하다. 따라서, 이 시작 시간을 최소화하는 것은 중요한 관심사항이다.
플레이아웃이 컨텐츠의 단일 표현으로부터인 경우에도, 즉, 하나의 표현으로부터 다른 표현으로의 어떠한 스위칭도 없는 경우에도, 진입 포인트 및 이탈 포인트 정보에 액세스한 클라이언트는, 이를 이용하여 시작 시간을 최소화할 수 있고, 따라서 클라이언트는 반드시 AHS 클라이언트일 필요가 없다. 예를 들어, 클라이언트는, 플레이 아웃을 시작할 제 1 진입 포인트, 및 후속하는 제 1 이탈 포인트, 제 2 이탈 포인트, 제 3 이탈 포인트 등의 리스트를 제공받을 수도 있다. 클라이언트는, 후속하는 이탈 포인트들을 이용하여, 컨텐츠의 어느 부분을 제 1 요청에서 요청할지를 결정할 수 있고, 여기서 이 부분은, 제 1 진입 포인트의 바이트 오프셋으로부터 제 1 이탈 포인트의 바이트 오프셋일 수도 있다. 그 다음, 클라이언트는, 바람직하게는, 플레이아웃이 시작하면 중지 또는 재버퍼링을 회피하는 기술들을 이용하여, 비디오의 플레이아웃을 언제 시작할지에 대한 제 1 다운로드 요청이 충족되고 있는 것으로 결정할 수 있다. 클라이언트는 또한, 후속 요청들의 시작 및 종료 바이트 오프셋들로서, 후속 이탈 포인트들의 바이트 오프셋들을 이용하여, 컨텐츠의 후속 부분들에 대한 다운로드 요청들을 발행할 수 있고, 여기서, 바람직하게는, 이러한 후속 요청들은, 중지 또는 재버퍼링을 회피하는 그러한 방법으로 발행된다. 미디어 버퍼가 채워짐에 따라, 클라이언트는 잠재적으로, 미디어가 덜 채워진 때보다 컨텐츠의 더 큰 부분들에 걸쳐있는 컨텐츠의 부분들에 대한 요청들을 발행할 수 있고, 여기서 더 크다는 것은, 프리젠테이션 시간에서 더 큰 것, 바이트들에서 더 큰 것, 또는 둘 모두를 의미한다.
다른 대안으로서, AHS 클라이언트는, 다음과 같이, 방금 설명되고 향상된 방법들을 이용할 수 있다. 컨텐츠의 단지 하나의 표현 대신에, 다수의 표현들이 존재한다. AHS 클라이언트는, 제 1 표현의 컨텐츠의 플레이 아웃을 시작할 제 1 진입 포인트, 및 이 제 1 표현에 대한 제 1 및 후속 이탈 포인트들을 획득하거나 제공받을 수 있고, 또한, 제 1 진입 포인트에 후속하는, 대안적인 표현들에 대한 진입 포인트들을 제공받을 수 있다. 이 경우, AHS 클라이언트는, 이전의 문단에서 설명된 클라이언트 방법들과 유사하게, 그러나 또한 잠재적으로, 다운로드할 부분들을 결정하기 위해 대안적인 표현들로의 가능한 진입 포인트들을 이용하여, 제 1 표현의 어느 부분들을 다운로드할지를 결정할 수 있다. 예를 들어, 종종 통상적인 바와 같이, 이탈 포인트들의 빈도는 진입 포인트들의 빈도보다 더 클 수도 있는데, 예를 들어, 표현의 연속적인 진입 포인트들의 각각의 쌍 사이에 다수의, 이를테면 5개 또는 그 초과의 이탈 포인트들이 존재할 수도 있다. 이 경우, AHS 클라이언트는, 예를 들어, 제 1 표현의 시작 진입 포인트로부터 제 1 후속 이탈 포인트까지 비교적 짧은 다운로드 부분들로 시작하도록 이전과 같이 결정할 수 있고, 그 다음, 미디어 버퍼가 커짐에 따라, 예를 들어, 하나의 이탈 포인트로부터, 장래에 하나보다 많은 이탈 포인트인 이탈 포인트까지 더 큰 부분들을 다운로드하기 시작하도록 결정할 수 있다. 그러나, 예를 들어, 레이트 스위칭이 필수적인 경우, AHS 클라이언트가, 제 1 표현으로부터 다운로드되고 제 2 표현으로 가능하게 스위칭되는 중첩하는 컨텐츠의 양을 최소화하기 위해 제 1 표현으로부터 적절한 부분을 다운로드했을 것을 보장하기 위해, AHS 클라이언트는 또한, 제 1 표현의 어느 부분들을 다운로드할지에 대한 결정시에 다른 대안적인 표현들에 대한 진입 포인트들을 고려할 수 있다. 예를 들어, 제 1 표현으로부터의 부분들을 다운로드할 경우, AHS 클라이언트는, 스위칭이 선택될 수도 있는 제 2 표현의 가능한 제 2 진입 포인트의 프리젠테이션 시간에 있거나 그보다 약간 넘은 이탈 포인트와 연관된 바이트 오프셋에서 종료하는 제 1 표현으로부터 현재의 다운로드 부분을 선택할 수 있는데, 즉, 현재의 다운로드 부분 이후 선택되는 다음 다운로드 부분은, 제 2 진입 포인트와 연관된 바이트 오프셋에서 시작하는 제 2 표현으로부터일 수도 있다.
다른 대안으로서, 클라이언트는, Luby A5에 개시된 바와 같이, 표현들을 다운로드하기 위해 다수의 동시적 HTTP 접속들을 이용할 수도 있고, 또한 FEC를 이용할 수도 있다. 이러한 대안에서, Luby A5에 개시된 바와 같이, 다운로드 요청들의 수를 최소화하는 것과 동시에 빠른 시작 시간들을 보장할 방법들로 컨텐츠를 다운로드하도록 다수의 접속들이 스케줄링되는 것이 중요하다. 따라서, 제 1 시작의 경우, 클라이언트는, 제 1 진입 포인트로부터 제 1 후속 이탈 포인트까지의 컨텐츠의 부분의 다운로드를 다수의 접속들에 걸쳐 파티셔닝할 수도 있는데, 예를 들어, 4개의 접속들 중 제 1 접속이 이 부분의 처음 ¼의 다운로드를 요청할 수도 있고, 제 2 접속이 다음 ¼의 다운로드를 요청할 수도 있는 식이다. 이러한 방법으로, 접속들은, 플레이아웃을 위해 초기에 요구되는 컨텐츠의 부분의 조각들(pieces)을 모두 다운로드하고 있다. 게다가, Luby A5에 개시된 바와 같이, 컨텐츠에 대한 추가적인 FEC 데이터가 별개의 파일에서 이용가능하게 될 수도 있고, 이러한 FEC 데이터에 대한 다운로드 요청들은 또한, 플레이아웃을 위해 요구되는 컨텐츠의 전달을 추가로 가속화하기 위해 행해질 수 있다. 이전의 대안들에서와 같이, 미디어 버퍼가 채워짐에 따라, 다운로드 요청 부분들의 조각들은 커질 수 있고, AHS 클라이언트의 경우, 제 1 표현에 대해 선택된 (다수의 접속들을 통해 요청될 다수의 조각들로 후속적으로 파티셔닝되는) 다운로드 부분들의 시작 및 종료는, 스위칭이 행해질 수 있는 가능한 대안적 표현들에 대한 진입 포인트들에 기초하여 행해질 수 있다.
3. 스위칭 정보를 생성하기 위한 프로세스들의 개관
비디오 플레이어에 의해 하나의 표현으로부터 다른 표현으로 스위칭하는 경우, 동시에, 스위칭 동안 네트워크를 통해 더 적은 데이터를 다운로드하고 더 부드러운 비디오 플레이아웃을 가능하게 하면서, 적응형 스트리밍 솔루션의 표현들 사이에서 더 빠른 스위칭을 제공하기 위해 세그먼트 맵들이 클라이언트에 의해 유리하게 이용될 수 있다. 또한 본 명세서에서 설명된 바와 같이, 세그먼트 맵들은, 개선된 시작 시간들 및 재버퍼링/중지 이벤트들에 대항하는 개선된 탄력성을 가능하게 하는 것과 같은 다른 용도들을 갖는다.
일례로서, 세그먼트 맵은 진입 포인트 리스트, 이탈 포인트 리스트, 및 선택적으로 표현의 세그먼트와 연관된 다른 메타데이터를 포함할 수 있다. 진입 포인트 리스트는 진입 포인트들, 및 각각의 이러한 진입 포인트와 연관된 진입 프리젠테이션 시간 및 진입 바이트 오프셋의 리스트를 포함한다. 진입 포인트 리스트는, 이탈 포인트들, 및 각각의 이러한 이탈 포인트와 연관된 이탈 프리젠테이션 시간 및 이탈 바이트 오프셋의 리스트를 포함한다.
세그먼트 맵들을 생성하는 것은, 기능적으로 2개의 방법 부분들로 파티셔닝될 수 있다. 특정한 포맷으로 인코딩된 미디어의 스트림 또는 파일을 입력으로서 갖고, 그 미디어에 대해 각각 진입 포인트들 및 이탈 포인트들의 세부 리스트들을 생성하는, 본 명세서에서는 진입 포인트 생성기들 및 이탈 포인트 생성기들로 지칭되는 2개의 타입들의 방법들이 제 1 방법 부분과 연관된다. 본 명세서에서는 세그먼트 맵 생성기로 지칭되는 제 2 방법 부분은, 세그먼트 맵들을 생성하기 위해 진입 포인트들 및 이탈 포인트들의 세부 리스트들을 입력으로서 갖는다.
세그먼트 맵 생성기들에 대한 실시예들은, 세그먼트 맵들을 생성하기 위해, 진입 포인트 생성기들 및 이탈 포인트 생성기들의 출력을 이용할 수 있다. 세그먼트 맵 생성기는 미디어 포맷을 모를 수 있고, 최적화된 진입 포인트들 및 이탈 포인트들의 리스트를 세그먼트 맵들에서 제공할 수 있고, 여기서, 최적화되는 것은, 진입 포인트들 및 이탈 포인트들이 조밀한 방식으로, 그리고, 이들이, 클라이언트가 표현에 진입 및 표현으로부터 이탈하기 위한 양호한 위치들의 풍부한 세트를 제공하도록 선택 및 표현되는 것을 의미한다. 세그먼트 맵 생성은, 미디어 컨텐츠의 각각의 표현에 대해 독립적으로 또는 조정된 방식으로 수행될 수 있다.
많은 변형들이 가능하다. 예를 들어, 특히 라이브 스트리밍 컨텐츠의 경우, 진입 포인트 생성기 및 이탈 포인트 생성기 및 세그먼트 맵 생성기를 빽빽하게 통합하는 솔루션이 바람직하고, 또한 온-디맨드(on-demand) 스트리밍 컨텐츠에 대해서도 바람직할 수 있다.
Pakzad에 개시된 방법들은, AHS 클라이언트들에 의해 효율적으로 그리고 효과적으로 이용될 수 있는 진입 포인트들 및 이탈 포인트들의 세트들로부터 간결한 세그먼트 맵들을 생성하는데 이용될 수 있는데, 즉, Pakzad는, 표현의 세그먼트들을 바람직한 프래그먼트들로 파티셔닝하기 위한 방법들을 포함하는 세그먼트 맵 생성기들의 몇몇 실시예들을 개시한다. 이 방법들은, 본 명세서에서 설명되는 방법들 및 프로세스들로 향상될 수 있는데, 상세하게는, 각각의 프래그먼트가 시작 또는 종료하는 경우, 각각 메이저 진입 포인트에서 시작하거나 메이저 이탈 포인트에서 종료하는 것을 가능하게 하는 것이 바람직하다.
일례로서, 도 1은, 폐쇄형 GOP 프레임 의존 구조를 도시하고, 이 경우, 제 1 프래그먼트는 프레임들 1, 5, 2, 3 및 4를 포함할 수도 있고, 제 2 프래그먼트는 프레임들 6, 7 및 8을 포함할 수도 있고, 제 3 프래그먼트는 프레임들 9, 13, 10, 11 및 12를 포함할 수도 있고, 제 4 프래그먼트는 프레임들 14, 15 및 16을 포함할 수도 있는 식이다. 이 프래그먼트 구조는 바람직할 수도 있는데, 이는, 모든 메이저 진입 포인트들이 프래그먼트들의 시작에 있기 때문이고, 그리고, 클라이언트가 표현을 시작하거나 표현으로 스위칭하는 경우 이 프래그먼트 구조가 부분적 GOP들을 다운로드하는 것을 허용하여, 전체 GOP가 다운로드되기 전에 컨텐츠의 가치있는 부분적 GOP들을 다운로드하는 것을 허용하기 때문이다. GOP들의 종료에 있는 부분적 메이저 이탈 포인트들이 또한 바람직한데, 이는, 일반적으로 B-프레임들은 I-프레임들 또는 P-프레임들보다 작고, 따라서 더 큰 프레임들과 동일한 양의 플레이아웃 시간을 허용하는 더 작은 프레임들을 다운로드하는 것이 유리하기 때문이다. 상이한 표현들 사이에서 GOP 구조가 정렬되면, 이 예에서 프래그먼트 구조는, 플레이 아웃되지 않은 어떠한 프레임들의 다운로드 없이 표현들 사이에서 스위칭을 허용한다.
다른 예로서, 도 2는 개방형 GOP 프레임 의존 구조를 도시하고, 이 경우, 제 1 프래그먼트는 프레임 1을 포함할 수도 있고, 제 2 프래그먼트는 프레임들 5, 2, 3 및 4를 포함할 수도 있고, 제 3 프래그먼트는 프레임들 9, 6, 7 및 8을 포함할 수도 있고, 제 4 프래그먼트는 프레임들 13, 10, 11 및 12를 포함할 수도 있고, 제 5 프래그먼트는 프레임들 17, 14, 15 및 16을 포함할 수도 있는 식이다. 이 경우, 제 1 프래그먼트는, 그 후의 패턴과는 상이한 패턴의 프레임들로 형성된다. 이 프래그먼트 구조는, 예를 들어, 이전의 문단에서 설명된 것과 동일한 이점들 중 많은 것을 갖는다. 상이한 표현들 사이에서 GOP 구조가 정렬되면, 이 프래그먼트 구조는, 플레이 아웃되지 않은 4개의 중첩 프레임들, 즉, 하나의 I-프레임 및 3개의 B-프레임들의 최소의 다운로드로 표현들 사이에서 스위칭을 허용한다.
MPEG DASH 시그널링에 기초한 맵핑의 변형들
1. 진입 포인트들 및 이탈 포인트들의 MPEG DASH 규격 시그널링
MPEG DASH 규격은 대략적으로, 아래의 표 1에 예시된 바와 같은 세그먼트 내의 프래그먼트들을 설명하기 위한 세그먼트 맵 구조를 갖는다.
Figure pct00001
상기 세그먼트 맵 구조의 해석은 다음과 같다. ESPT의 값은, 세그먼트 내에서 가장 먼저의 프리젠테이션 시간을 갖는 프레임의 프리젠테이션 시간이다.
Timescale의 값은, 표현의 이 세그먼트에 대한 틱(tick)들에서의 시간을 측정하는데 이용되는 초당 틱들의 수이다. 예를 들어, Timescale = 30,000이면, 표현의 이 세그먼트에 대해 초당 30,000 틱들이 존재하고, 따라서, 90,000 틱들로 표현되는 시간은 90,000/30,000초, 즉 3초의 시간 지속기간을 나타낸다. 통상적으로, 예를 들어, ESPT, Delta 및 RAP-delta와 같이, 시간의 모든 단위들이 세그먼트 내의 틱들로 표현된다. 프레임의 통상적인 지속기간은 1,001 틱들일 수 있고, 이것은, 초당 대략 29.97개의 프레임들이 존재함을 의미한다.
N의 값은 세그먼트에서 프래그먼트들의 수이다.
SB(i)의 값은, 세그먼트의 프래그먼트 i의 바이트들에서의 사이즈이다. 따라서, 세그먼트 내에서 프래그먼트 i의 시작에 대한 바이트 오프셋은 SB(j)의 i보다 작은 모든 j에 대한 합이다.
Delta(i)의 값은, 프래그먼트 i+1 내의 임의의 프레임의 가장 먼저의 프리젠테이션 시간과 프래그먼트 i 내의 임의의 프레임의 가장 먼저의 프리젠테이션 시간 사이의 차이다. 따라서, 프래그먼트 i 이후 다음 프래그먼트에서 프레임의 가장 먼저의 프리젠테이션 시간은, Delta(j)의 모든 j≤i에 대한 합 플러스 ESPT이다.
RAP-present-flag(i)의 값은, 프래그먼트 i 내에 표현 액세스 포인트(RAP)가 존재하는지 여부를 나타낸다.
프래그먼트 i에서 시그널링되는 RAP가 존재하면, RAP-delta(i)의 값은, 프래그먼트 i 내의 RAP 프리젠테이션 시간과 프래그먼트 i에서 프레임의 가장 먼저의 프리젠테이션 시간 사이의 차이다. 따라서, 프래그먼트 i 내에 RAP가 존재하면, 프래그먼트 i에서 RAP 프리젠테이션 시간은, Delta(j)의 모든 j<i에 대한 합 플러스 RAP-delta(i) 플러스 ESPT이다.
MPEG DASH 세그먼트 구조 뒤의 기본적 철학은, 세그먼트 내의 프래그먼트들이 HTTP 1.1 바이트 범위 요청들을 이용하여 다운로드될 수 있고, 프래그먼트들은 통상적으로 다운로드를 위해 요청된 이러한 최소의 엔티티들이라는 것이다. 표현들 사이의 끊김없는 스위칭을 지원하는 이러한 방식으로 프래그먼트 구조를 정렬하는 것이 타당하며, 상세하게는, 효율적인 그리고 끊김없는 스위칭을 지원하기 위해, 프래그먼트 경계들을 진입 및 이탈 포인트들에 정렬시키는 것, 및 진입 및 이탈 포인트들을 세그먼트 내에서 시그널링하는 것이 유리하다.
MPEG DASH 세그먼트 맵 포맷은, 세그먼트에 대한 진입 포인트들의 시그널링을 지원하기 위해 다음과 같이 이용될 수 있다. MPEG DASH 규격은, RAP를, 다음과 같이 관련된 바이트 오프셋, IRAP, 및 프리젠테이션 시간, TRAP를 포함하는 것으로 정의하는데, 즉, (1) TRAP는, 표현이 바이트 오프셋 IRAP로부터 시작하여 다운로드되고, 종료까지를 향해 계속되면, 표현 내의 컨텐츠의 비디오 프레임들이 프리젠테이션 시간 TRAP에서 시작하는 프리젠테이션 순서로 끊김없이 플레이 아웃될 수 있도록 하는 가장 먼저의 프리젠테이션 시간이고, (2) IRAP는, 표현이 바이트 ?셋 IRAP로부터 시작하여 다운로드되고, 종료까지를 향해 계속되면, 표현 내의 컨텐츠의 비디오 프레임들이 프리젠테이션 시간 TRAP에서 시작하는 프리젠테이션 순서로 끊김없이 플레이 아웃될 수 있게 하는 가장 큰 바이트 오프셋이다.
따라서, MPEG DASH 규격에서 정의된 RAP들은 본 개시에서 정의된 메이저 진입 포인트들과 동등하여, 즉, (TRAP, IRAP) = (TentryB(IRAP), BentryT(TRAP))이다. 프래그먼트는, 그 RAP에 대한 바이트 오프셋이 프래그먼트 내에 있으면, RAP를 포함하는 것으로 지칭된다.
MPEG DASH 규격은 다음과 같이 RAP들을 시그널링할 수 있다. 프래그먼트 i가 적어도 하나의 RAP를 포함하는 것으로 가정하고, BO를, 프래그먼트 i가 포함하는 모든 RAP들 중 RAP의 최소 바이트 오프셋이라 하고, PT = TentryB(BO)를, BO에 대응하는 RAP의 프리젠테이션 시간이라 한다. RAP-present-flag(i)의 값은, RAP의 존재를 나타내도록 설정될 수 있고, RAP-delta(i)의 값은 PT 마이너스 ESPT 마이너스 Delta(j)의 모든 j<i에 대한 합으로 설정될 수 있다. RAP 프레임을 포함하지 않는 각각의 프래그먼트 i에 대해, RAP-present-flag(i)의 값은, 어떠한 RAP도 없음을 나타내도록 설정될 수 있다. 따라서, MPEG DASH 규격은 프래그먼트들 내의 메이저 진입 포인트들의 시그널링에 대한 지원을 갖는다.
BO(i)를, 세그먼트 내의 프래그먼트 i의 제 1 바이트에 대한 바이트 오프셋이라 한다. 프래그먼트 i가 RAP를 포함하면, TentryB(BO(i))는 프래그먼트 i 내의 가장 먼저의 프리젠테이션 시간을 갖는 RAP의 RAP 프리젠테이션 시간임을 주목한다.
MPEG DASH 세그먼트 맵 포맷은, 몇몇 경우들에서 세그먼트에 대한 이탈 포인트들의 시그널링을 지원하기 위해 다음과 같이 이용될 수 있다. 모든 각각의 프래그먼트 i에 대해, 프래그먼트 i+1의 제 1 바이트에 대한 바이트 오프셋 BO(i+1)은, 프래그먼트 i의 종료시에 이탈하는 것에 대응하는 바이트 오프셋이다. 아래에서 설명되는 환경들 하에서, 프래그먼트 i의 종료시에 이탈하는 것과 연관된 이탈 프리젠테이션 시간 TexitB(BO(i+1))은, MPEG DASH 세그먼트 맵 포맷에 기초하여 다음과 같이 정확하게 결정될 수 있는데, 즉, EPT(i)의 값을 ESPT 플러스 Delta(j)의 모든 j≤i에 대한 합으로 설정한다. 이전에 설명된 바와 같이, EPT(i)는 프래그먼트 i+1 내의 임의의 프레임의 가장 먼저의 프리젠테이션 시간이다. EPT(i)는, 하기 2개의 조건들이 유지되면, TexitB(BO(i+1))과 동일하도록 보장된다.
2. 이탈 포인트들의 정확한 시그널링에 대한 2개의 조건들
이탈 포인트들의 정확한 시그널링에 대한 2개의 조건들은, (1) 파일 포맷 순서가 디코딩 순서인 것, 및 (2) 프래그먼트 내의 임의의 프레임의 가장 먼저의 프리젠테이션 시간들의 시퀀스가 연속적 프래그먼트들에 걸쳐 엄격하게 증가하고 있는 것, 즉, EPT(1) < EPT(2) < EPT(3) 등인 것일 수도 있다.
제 1 조건은, 필수적은 아니지만 일반적으로 파일 포맷들에 대해 사실일 수 있다. 게다가, 파일 포맷이, 통상적이지 않게 디코딩 순서가 아니면, 앞서 설명된 시그널링은 프래그먼트들의 이탈 프리젠테이션 시간을 정확하게 시그널링하지 않는다. 도 4에 도시된 바와 같은 프레임 의존 구조에 대응하지만 파일 포맷 순서가 디코딩 순서 대신 프리젠테이션 시간 순서인 도 14는, 제 1 조건이 사실이 아닌 예이다. 이 예에서, 제 1 프래그먼트가 프레임들 1, 2, 3 및 4를 포함하고, 제 2 프래그먼트가 프레임들 5, 6, 7 및 8을 포함했다면, EPT(i)의 값은 프레임 5의 프리젠테이션 시간일 것이고, 이것은, 제 1 프래그먼트의 이탈 프리젠테이션 시간으로서 이용되면, 처음 4개의 프레임들 1, 2, 3 및 4가 제 1 프래그먼트의 수신으로부터 플레이 아웃될 수 있음을 나타낼 것이다. 그러나, 제 1 프래그먼트를 수신하는 것으로부터 오직 프레임 1이 플레이 아웃될 수 있고, 따라서, EPT(i)의 값은 제 1 프래그먼트에 대한 이탈 프리젠테이션 시간을 정확하게 시그널링하지 않는다.
제 2 조건은 종종 사실일 수 있지만, 세그먼트들의 프래그먼트 구조에 의존하고, 제 1 조건이 사실인 경우에도 제 2 조건이 사실이 아닌 예들이 존재한다. 예를 들어, 도 9를 참조하면, 제 1 프래그먼트가 처음 13,244 바이트들로 이루어지고 프레임 1을 반송하며, 제 2 프래그먼트가 다음 5,150 바이트들로 이루어지고 프레임 5를 반송하며, 제 3 프래그먼트가 다음 3,637 바이트들로 이루어지며 프레임들 2, 3 및 4를 반송했다고 가정한다. 이 예에서, 처음 3개의 프래그먼트들에 대해 앞서 계산된 바와 같은 이탈 프리젠테이션 시간들 EPT(1), EPT(2) 및 EPT(3)는 각각 프레임들 5, 2, 6의 프리젠테이션 시간이다. 상세하게는, 제 1 프래그먼트와 연관된 이탈 프리젠테이션 시간 EPT(1)은, 프리젠테이션 시간 순서에서 처음 4개의 프레임들, 즉, 프레임들 1, 2, 3 및 4가 제 1 프래그먼트를 다운로드한 것으로부터 플레이 아웃될 수 있다고 나타낼 것이지만, 이것은, 명백히 그렇지 않다.
따라서, 대체로, MPEG DASH 규격이 프래그먼트들의 이탈 포인트들의 시그널링에 대한 지원을 가질지라도, 이탈 포인트들의 시그널링에 대한 지원은 거의 포괄적이지는 않다.
3. 제 1 세그먼트 맵 방법: 개선된 이탈 포인트 시그널링
이전에 언급된 바와 같이, MPEG DASH 규격에 의해 이탈 포인트들이 항상 정확히 시그널링될 수 있는 것은 아니다. 상세하게는, 이탈 포인트들이 정확히 시그널링되도록, 이전에 설명된 이탈 포인트들의 정확한 시그널링을 위한 2개의 조건들이 통상적으로 요구된다. 제 2 조건이 제거될 수 있는 하나의 방법은, 개선된 이탈 포인트 시그널링을 위해 MPEG DASH를 향상시키도록 이 섹션에 설명된 방법을 이용하는 것이다.
이 접근법에서, ESPT는, 표현의 나머지에서 이전 세그먼트에 후속하는 임의의 프레임의 가장 먼저의 프리젠테이션 시간으로 재정의된다. 또한, Delta(i)의 값은, 표현의 나머지에서 프래그먼트 i에 후속하는 임의의 프레임의 가장 먼저의 프리젠테이션 시간과, 표현의 나머지에서 프래그먼트 i-1에 후속하는 임의의 프레임의 가장 먼저의 프리젠테이션 시간 사이의 차로서 재정의된다.
그 다음, RAP-delta(i)의 값을, 프래그먼트 i 내의 시그널링된 RAP의 RAP 프리젠테이션 시간과, 표현의 나머지에서 프래그먼트 i-1에 후속하는 임의의 프레임의 가장 먼저의 프리젠테이션 시간 사이의 차로서 재정의한다.
제 1 조건이 유지되면, 즉, 파일 포맷 순서가 디코딩 순서이면, 파라미터들의 상기 재정의들은, 제 2 조건이 유지되지 않는 경우에도, 이 재정의된 값들에 기초하여 컴퓨팅된 EPT(i)가 프래그먼트 i에 대한 정확한 이탈 프리젠테이션 시간인 것을 보장한다. 일례로서, 도 9를 참조하면, 앞서 설명된 예에서와 같이, 제 1 프래그먼트가 처음 13,244 바이트들로 이루어지고 프레임 1을 반송하며, 제 2 프래그먼트가 다음 5,150 바이트들로 이루어지고 프레임 5를 반송하며, 제 3 프래그먼트가 다음 3,637 바이트들로 이루어지며 프레임들 2, 3 및 4를 반송했다고 가정한다. 이 예에서, ESPT의 값은 이전과 같을 것이어서, 즉, 프레임 1의 프리젠테이션 시간일 것이다. 그러나, 처음 3개의 프래그먼트들과 연관된 상기 재정의들에 기초하여 계산된 이탈 프리젠테이션 시간들 EPT(1), EPT(2) 및 EPT(3)는 각각 프레임들 2, 2, 6의 프리젠테이션 시간이다. 상세하게는, 제 1 프래그먼트와 연관된 이탈 프리젠테이션 시간 EPT(1)는 프리젠테이션 시간 순서에서 제 1 프레임, 즉, 프레임 1이, 제 1 프래그먼트를 다운로드하는 것으로부터 플레이 아웃될 수 있음을 나타낼 것이다. 게다가, 제 2 프래그먼트와 연관된 이탈 프리젠테이션 시간 EPT(2)는, 오직 프레임 1만이, 처음 2개의 프래그먼트들을 다운로드하는 것으로부터 플레이 아웃될 수 있음을 나타낼 것이고, 제 3 프래그먼트와 연관된 이탈 프리젠테이션 시간 EPT(3)는, 처음 5개의 프레임들 1, 2, 3, 4 및 5가, 처음 3개의 프래그먼트들을 다운로드하는 것으로부터 플레이 아웃될 수 있음을 나타낼 것이다.
제 2 조건이 수용될 수 있는 다른 방법은, 프래그먼트 구조가 이러한 방법으로 형성되면, 프래그먼트 내의 임의의 프레임의 가장 먼저의 프리젠테이션 시간들의 시퀀스가 연속적 프래그먼트들에 걸쳐 엄격히 증가하고 있는 것이다. 예를 들어, 각각의 프래그먼트가 메이저 이탈 포인트를 포함하면, 제 2 조건은 충족될 것이다.
프래그먼트 구조를 결정하는 것이 가능한 경우들에서, 메이터 진입 포인트를 포함하는 각각의 프래그먼트가, 메이저 진입 포인트가 프래그먼트의 시작 근처에 있도록 되면 바람직하다. 또한, 메이저 이탈 포인트를 포함하는 각각의 프래그먼트가, 메이저 이탈 포인트가 프래그먼트의 종료 근처에 있도록 되면 바람직하다.
2개의 조건들 모두가 제거될 수 있는 하나의 방법은, 다음과 같이 현재 MPEG DASH 세그먼트 맵에서 반송되는 파라미터들의 정의들을 변경하는 것이고, 이것은 MPEG DASH 세그먼트 맵 시그널링의 바람직한 방법이다.
4. 제 2 세그먼트 맵 방법: MPEG DASH 세그먼트 맵 방법들의 변형
BO를, 표현의 세그먼트의 시작에 대한 바이트 오프셋이라 하고, BO(i)를 프래그먼트 i의 시작에 대한 바이트 오프셋이라 한다.
ESPT의 값을 TexitB(BO)로 재정의한다.
Delta(i)의 값을 TexitB(BO(i+1)) - TexitB(BO(i))로 재정의한다.
RAP-delta(i)의 값을 TentryB(BO(i)) - TexitB(BO(i))로 재정의한다.
MPEG DASH 세그먼트 맵 방법의 제 2 변형은, 앞서 설명된 이탈 포인트들의 정확한 시그널링을 위한 2개의 조건들 중 제 1 조건이 유지되는 경우, 앞서 설명된 제 1 변형과 효과에서 동일한데, 즉, 제 1 조건이 유지되는 경우, TexitB(BO)는, 표현의 나머지에서 이전 세그먼트에 후속하는 임의의 프레임의 가장 먼저의 프리젠테이션 시간이고, TexitB(BO(i+1)) - TexitB(BO(i))는, 표현의 나머지에서 프래그먼트 i에 후속하는 임의의 흐레임의 가장 먼저의 프리젠테이션 시간과, 표현의 나머지에서 프래그먼트 i-1에 후속하는 임의의 시간의 가장 먼저의 프리젠테이션 시간 사이의 차이고, TentryB(BO(i)) - TexitB(BO(i))는, 프래그먼트 i 내의 시그널링된 RAP의 RAP 프리젠테이션 시간과, 표현의 나머지에서 프래그먼트 i-1에 후속하는 임의의 프레임의 가장 먼저의 프리젠테이션 시간 사이의 차이임을 주목한다. 그러나, 제 2 변형은, 임의의 조건들과는 독립적으로 이탈 시간들을 계산하기 위해 정확하게 이용될 수 있고, MPEG DASH 규격 내의 RAP의 현재의 정의와 더 어울린다.
Delta(i)는 각각의 프래그먼트 i에 대해 음이 아닌 것이 보장되는데, 이는, TexitB(BO(i+1))가 적어도 TexitB(BO(i))이기 때문이다. 게다가, 증가하는 이탈 바이트 오프셋의 순서에서 메이저 이탈 포인트들의 이탈 프리젠테이션 시간들의 시퀀스가 엄격하게 증가하기 때문에, Delta(i)는, 각각의 프래그먼트가 적어도 하나의 메이저 이탈 포인트를 포함하면 각각의 프래그먼트에 대해 제로보다 큰 것이 보장되고, Delta(i)=0은, 프래그먼트 i가 어떠한 메이저 이탈 포인트들도 포함하지 않는 것을 나타낸다. 게다가, 프래그먼트 i가 적어도 하나의 메이저 이탈 포인트를 포함하면, TexitB(BO(i+1))는 프래그먼트 i에서 마지막 메이저 이탈 포인트의 이탈 프리젠테이션 시간이다. 또한, RAP-delta(i)는 제로보다 크거나 제로와 동일한 것이 보장되는데, 이는, TentryB(BO(i))가 적어도 TexitB(BO(i))이기 때문이다.
진입 포인트들 및 이탈 포인트들은 AHS 시스템들에서 표현들 사이의 스위칭을 행할 시에 동등하게 중요하기 때문에, MPEG DASH 규격을 추가로 향상시키는 것이 고려될 수도 있다.
"표현 이탈 포인트"의 정의는, RXP로 축약되어 MPEG DASH 규격에 도입될 수도 있는데, 여기서, RAP가 메이저 진입 포인트인 것으로 정의되는 방법과 유사하게 RXP는 메이저 이탈 포인트인 것으로 정의된다.
새로운 파라미터 RXP-present-flag(i)는 각각의 프래그먼트 i에 대해 도입될 수 있는데, RXP-present-flag(i)의 값은, 프래그먼트 i 내에 표현 이탈 포인트(RXP)가 존재하는지 여부를 나타낸다. RXP-present-flag의 값은 MPEG DASH 세그먼트 맵에서 명시적으로 시그널링될 필요가 없지만, 그 대신, 다음과 같이 다른 파라미터들로부터 계산될 수 있는데, 즉, RXP-present-flag(i)의 값은, Delta(i) > 0이면 RXP가 존재함을 나타내고, Delta(i) = 0이면 프래그먼트 i에 어떠한 RXP도 존재하지 않음을 나타낸다.
프래그먼트 i 내에 RXP가 존재하면, 프래그먼트 i에 대한 RXP 프리젠테이션 시간은 ESPT 플러스 Delta(i) 플러스 Delta(j)의 모든 j < i에 대한 합이다.
MPEG DASH 규격에서와 같이, RAP-present-flag(i)의 값은, 프래그먼트 i 내에 표현 액세스 포인트(RAP)가 존재하는지 여부를 나타낸다.
프래그먼트 i 내에 RAP가 존재하면, 프래그먼트 i에 대한 RAP 프리젠테이션 시간은 ESPT 플러스 Delta(i) 플러스 Delta(j)의 모든 j < i에 대한 합이다.
프래그먼트 내의 다수의 메이저 진입 및/또는 이탈 포인트들을 나타내는 것을 포함하고, 이들의 바이트 오프셋들에 대한 정보를 또한 포함하는, MPEG DASH 규격의 다른 향상들이 또한 가능하다.
세그먼트 맵에 포함될 수도 있는 다른 정보는, 예를 들어, AES에 의해 CBC-스타일 블록 암호화가 이용되면 암호해독을 보조하는데 이용될 수도 있는 정보이고, 여기서 데이터의 각각의 블록은, 예를 들어, 16 바이트들이고, 여기서 블록들은 체인에서 암호화되는데, 즉, 다음 블록을 암호화하기 위해, 이전 블록의 암호화는 다음 블록과 XOR되어 새로운 블록을 형성하고, 그 다음, 새로운 블록의 암호화는 다음 블록의 암호화된 값이다. 따라서, 이전 블록의 암호화된 값은 다음 블록을 암호해독하는데 필요한데, 즉, 다음 블록의 값은, 다음 블록의 암호화를 암호해독하고, 이를, 이전 블록의 암호화된 값과 XOR함으로써 형성된다. 따라서, 세그먼트 맵에서, 프래그먼트의 제 1 암호화된 블록을 암호해독하기 위해 또는 RAP 또는 RXP의 제 1 암호화된 블록을 암호해독하기 위해 필요한 이전의 암호화된 블록에 대한 바이트 오프셋들을 제공하는 것이 잠재적으로 유리할 것이다. 대안적으로, 세그먼트 맵 자체에서 이전의 암호화된 블록을 제공하는 것이 잠재적으로 유리할 것이다.
세그먼트 맵은, 세그먼트 파일의 URL의 것으로부터 유도되는 세그먼트 맵에 대한 URL을 갖는, 연관된 세그먼트로부터의 개별적인 파일로서 제공될 수 있는데, 예를 들어, 세그먼트 맵 URL은, ".segment_map"이 첨부된 세그먼트의 URL이다. 이러한 변경은, 세그먼트 파일들이 변경되지 않기 때문에 세그먼트 맵 파일들을 모르는 클라이언트들이 세그먼트 맵 파일들의 존재에 의해 영향받지 않는 반면, 세그먼트 인덱스 파일들을 알고 이를 이용할 수 있는 클라이언트들은 이들을 다운로드할 수 있고, 이를 이용하여 표현 스위칭 경험을 개선할 수 있는 이점을 갖는다.
다른 변경으로서, 세그먼트 맵은 세그먼트에 부착(prepend)되어 세그먼트를 향상시킬 수 있고, 클라이언트는 향상된 세그먼트의 작은 프리픽스(prefix)를 다운로드함으로써 그 파일에 대한 세그먼트 맵을 획득할 수 있다. 이 변경은, 관리할 파일들 및 연관된 URL들이 제 1 변경보다 더 적은 이점을 갖지만, 부착된 세그먼트 맵을 파싱 또는 이용하도록 구성되지 않은 기존의 클라이언트들이 존재하면 문제가 될 수 있다. 다른 변경으로서, 세그먼트 맵은 세그먼트에 부착되어 세그먼트를 향상시킬 수 있다. 다른 변경들로서, 몇몇 세그먼트들 및/또는 표현들에 대한 세그먼트 맵이 하나의 파일로 어그리게이트될 수 있다. 다른 변경으로서, 하나의 세그먼트에 대한 세그먼트 맵이 다수의 파일들로 파티셔닝될 수 있고, 이 세그먼트 맵들에 대한 URL들은 세그먼트에 대한 URL로부터, 예를 들어, 템플릿-기반 URL 생성을 이용하여, 자동으로 유도될 수 있다. 이 변경은, 세그먼트가 많은 프래그먼트들/블록들을 포함하는 경우, 예를 들어, 세그먼트가 2시간짜리 영화이고, 각각의 프래그먼트가 지속기간에서 약 500 밀리초인 경우 특히 유용할 수도 있다.
상기 실시예의 많은 변경들이 존재한다. 예를 들어, 프래그먼트/블록당 기껏해야 하나의 진입 및 이탈 포인트를 리스트하는 것 대신에, 프래그먼트당 다수의 진입 및/또는 이탈 포인트들이 리스트될 수 있다. 컨텐츠가 암호화되는 경우, 세그먼트 맵은, 후속하는 부분들을 암호해독하기 위해, 암호화된 컨텐츠의 다운로드를 어디에서 시작할지를 나타내기 위한 암호화 바이트 오프셋들을 포함할 수 있다. 예를 들어, AES에 의해 제공된 CBC 암호화를 이용하여 컨텐츠가 암호화된 경우, 여기서, 암호화된 데이터의 부분을 암호해독하기 위해 데이터의 스트림의 암호화된 데이터의 이전 부분이 요구되고, 세그먼트 맵은 암호화된 데이터의 이들 이전 부분들에 대한 바이트 오프셋들을 제공할 수 있다.
세그먼트 맵은 또한, 비디오의 끊김없는 스위칭 및 플레이 아웃을 보조하기 위해, 클라이언트 및/또는 미디어 플레이어와 관련된 다른 정보를 포함할 수 있다. 예를 들어, 표현이 오디오 데이터를 포함하는지 또는 비디오와 오디오 데이터의 혼합을 포함하는지를 나타내는 정보를 세그먼트 맵에 추가하는 것이 가능하다. 또한, FEC 복구 세그먼트들이 이용가능한지 여부의 표시, 및 가능한 경우, FEC 복구 세그먼트들을 이용하기 위해 클라이언트에 의해 이용될 수 있는 FEC 세그먼트 맵들의 시그널링을 추가하는 것이 가능하다.
5. 제 3 세그먼트 맵 방법: ALS 스트리밍에 대한 세그먼트 맵 생성 및 포맷들
몇몇 AHS 스트리밍 시스템들의 경우, 세그먼트 맵들을 세그먼트들 자체와는 별개의 파일들로서 생성 및 제공하는 것이 유용하다. 역호환성이 한 세트의 근거(rationale)를 제공하는데, 즉, 몇몇 기존의 또는 장래에 배치될 AHS 시스템들에 대해 세그먼트 맵들이 특정되지 않거나 고려되지 않는다. 이러한 시스템들을 역호환가능한 방법으로 세그먼트 맵들로 향상시키는 것은, 많은 값을 제공할 수 있는데, 즉, 세그먼트의 이용가능성을 이용할 수 있고, 향상되지 않은 AHS 클라이언트들의 성능에 어떠한 부정적 영향을 미치지 않을 수 있는, 향상된 AHS 클라이언트들에 대해 개선된 스위칭 및 시작 최종 사용자 경험 및 네트워크 효율들을 제공할 수 있다. 다른 근거들은 본 개시의 다른 부분들에서 설명된다. 이 섹션에서 개시된 세그먼트 맵들은 세그먼트 자체와는 별개의 파일들로서 설명되지만, 이 세그먼트 맵들은 또한 세그먼트 파일들의 일부일 수 있는데, 예를 들어, 이들은 세그먼트들에 부착될 수 있거나, 세그먼트들에 첨부될 수 있거나, 세그먼트들 전반에 걸쳐 산재될 수 있다.
특정한 세그먼트에 대한 정보를 제공하기 위한 세그먼트 맵에 대한 간단한 포맷은, 세그먼트에 대한 선택된 메이저 진입 포인트들 및 선택된 메이저 이탈 포인트들의 리스트를 포함하는 것이고, 여기서, 선택된 메이저 진입 포인트들은 모든 메이저 진입 포인트들일 수 있거나, 또는 세그먼트 내에서 시작하고 선택된 메이저 이탈 포인트들에 대해 유사한 메이저 진입 포인트들의 선택된 서브세트일 수 있다. 따라서, 세그먼트 맵에서 특정한 세그먼트에 대한 정보를 생성 및 제공하기 위한 하나의 가능한 포맷은 다음과 같다.
BO를, 표현의 세그먼트의 시작에 대한 바이트 오프셋이라 하고, APT(0) = TentryB(BO), ABO(0) = BO, XPT(0) = TexitB(BO) 및 XBO(0) = BO라 한다. AN을, 선택된 메이저 진입 포인트들의 수라 하고, XN을, 선택된 메이저 이탈 포인트들의 수라 한다. 모든 i = 1, ..., AN에 대해, (APT(i), ABO(i))을, 증가하는 바이트 오프셋의 순서에서 i번째의 선택된 메이저 진입 포인트라 하고, 유사하게, i = 1, ..., XN에 대해, (XPT(i), XBO(i))을 증가하는 바이트 오프셋의 순서에서 선택된 메이저 이탈 포인트의 시작에 대한 바이트 오프셋이라 한다. 그 다음, 이 세그먼트와 관련된 세그먼트 맵의 부분에 대한 포맷은 아래의 표 2에 나타낸 바와 같은 데이터 구조일 수 있다.
Figure pct00002
표 2의 세그먼트 맵 주고의 해석은 다음과 같다. Timescale의 값은 MPEG DASH 규격에 대해 설명된 것과 같다. 세그먼트 내의 선택된 메이저 진입 포인트 i의 바이트 오프셋은, ABO(j)의 모든 j = 0, ..., i에 걸친 합이고, 세그먼트 내의 선택된 메이저 이탈 포인트 i의 바이트 오프셋은, XBO(j)의 모든 j = 0, ..., i에 걸친 합이다. 유사하게, 세그먼트 내의 선택된 메이저 진입 포인트 i의 프리젠테이션 시간은 APT(j)의 모든 j = 0, ..., i에 걸친 합이고, 세그먼트 내의 선택된 메이저 이탈 포인트 i의 프리젠테이션 시간은 XPT(j)의 모든 j = 0, ..., i에 걸친 합이다.
세그먼트 맵의 세그먼트 내에서 선택된 메이저 진입 포인트들 및 선택된 메이저 이탈 포인트들을 나타내기 위한 대안적인 포맷은 다음과 같다.
6. 제 4 세그먼트 맵 방법
L를, 결합된 선택된 메이저 진입 포인트들 및 선택된 메이저 이탈 포인트들의 리스트라 하고, 여기서 포인트들은 (바이트 오프셋, 프리젠테이션 시간) 쌍들로서 리스트되고, 여기서 포인트들은 이들의 바이트 오프셋의 증가하는 순서로 리스트되고, 여기서 이 리스트의 진입 포인트 및 이탈 포인트가 동일한 (바이트 오프셋, 프리젠테이션 시간) 값들을 가지면, 이들은 복제들로 고려된다. N을, 리스트 L의 고유의 포인트들의 수라 한다. 모든 i = 1, ..., N에 대해, (PT(i), BO(i))를 리스트 L의 i번째 포인트라 한다. BO를, 표현의 세그먼트의 시작에 대한 바이트 오프셋이라 하고, PT(0) = TexitB(BO) 및 BO(0) = BO라 한다. 그 다음, 이 세그먼트와 관련된 세그먼트 맵의 부분에 대한 포맷은 표 3의 리스트에 나타낸 바와 같을 수 있다.
Figure pct00003
표 3의 세그먼트 맵 구조의 해석은 다음과 같다. 표현 타입은, 어떠한 타입의 데이터가, 참조된 세그먼트에 포함되는지를 나타내고, 여기서 0은, 데이터가 오디오 전용인 것을 나타내고, 1은, 데이터가 비디오 전용인 것을 나타내고, 2는, 데이터가 오디오 및 비디오 모두의 혼합인 것을 나타낸다. 따라서, 클라이언트는, 세그먼트 맵을 다운로드하는 것으로부터 표현 타입을 결정할 수 있다. Timescale의 값은 MPEG DASH 규격에 대해 설명된 것과 같다. 세그먼트 내의 포인트 i의 바이트 오프셋은 BO(j)의 모든 j = 0, ..., i에 걸친 합이고, 세그먼트 내의 포인트 i의 프리젠테이션 시간은 PT(j)의 모든 j = 0, ..., i에 걸친 합이다. 몇몇 파일 포맷 순서들 및 프레임 의존 구조들의 경우, PT(i) - PT(i-1)는 제로보다 작을 수 있는 반면, 다른 파일 포맷 순서들 및 프레임 의존 구조들의 경우, PT(i) - PT(i-1)는 항상 적어도 제로임을 주목한다. RP(i)의 값은, 포인트 i가 진입 포인트인지, 이탈 포인트인지, 또는 진입 포인트 및 이탈 포인트 모두인지를 나타낸다.
상기한 것에 대한 많은 향상들이 존재한다. 예를 들어, 세그먼트 맵들은 부분적 세그먼트들 또는 다수의 세그먼트들에 대한 정보를 포함할 수 있다. 세그먼트 맵은, 세그먼트 맵이 어느 세그먼트들에 대한 정보를 포함하는지를 나타내기 위해 바이트 범위 및 URL을 포함할 수 있다.
앞서 설명된 제 4 세그먼트 맵 방법은 또한 MPEG DASH 프래그먼트 구조를 결정하는데 이용될 수 있음을 주목한다. 예를 들어, 각각의 i = 1, ..., N에 대해, 바이트 오프셋 BO(i-1)에서 시작하고 바이트 오프셋 BO(i)-1에서 종료하는 것으로 정의되는 프래그먼트가 존재할 수도 있다. 이 경우, 각각의 프래그먼트의 시작 및 종료는, 선택된 메이저 진입 포인트, 선택된 메이저 이탈 포인트, 또는 선택된 메이저 진입 포인트 및 선택된 메이저 이탈 포인트 모두에 대응할 것이다.
MPEG DASH에 의해 이용되는 세그먼트 맵 시그널링 방법들로 정렬하기 위해, 파일 포맷 순서가 디코딩 순서이면 대안적인 실시예가 이용될 수 있다. 이 대안적 실시예에서, 프래그먼트 구조는, 각각의 프래그먼트가 적어도 하나의 메이저 이탈 포인트를 포함하는 방식으로, 즉, 각각의 i = 1, ..., N에 대해, BO(i-1) < BO ≤ BO(i)인 적어도 하나의 메이저 이탈 포인트 (PT, BO)가 존재하도록 형성되고, 그 다음, 이전에 설명된 바와 같은 "진입 포인트들 및 이탈 포인트들의 MPEG DASH 규격 시그널링"의 세그먼트 맵 시그널링 방법이 이용될 수 있다. 이전에 설명된 바와 같이, 이 방법에 대한 Delta(i)의 값은, 프래그먼트 i+1 내의 임의의 프레임의 가장 먼저의 프리젠테이션 시간과, 프래그먼트 i 내의 임의의 프레임의 가장 먼저의 프리젠테이션 시간 사이의 차이다. 따라서, 프래그먼트 i 이후 다음 프래그먼트의 프레임의 가장 먼저의 프리젠테이션 시간은 ESPT 플러스 Delta(j)의 모든 j ≤ i에 걸친 합이다. 이 경우, "이탈 포인트들의 정확한 시그널링을 위한 2개의 조건들"이 모두 충족되기 때문에, 각각의 프래그먼트는 이탈 포인트를 포함하고, 프래그먼트 i 이후 다음 프래그먼트의 프레임의 가장 먼저의 프리젠테이션 시간은 프래그먼트 i의 종료와 연관된 이탈 프리젠테이션 시간이다. 따라서, 각각의 프래그먼트의 종료는, 세그먼트 맵의 시그널링 정보에 기초하여 계산될 수 있는 이탈 프리젠테이션 시간을 갖는 이탈 포인트이다.
많은 다른 향상들 및 대안들이 또한 가능하다. 예를 들어, 이전에 설명된 MPEG DASH의 모든 대안들 및 향상들은 또한 이 섹션에서 설명된 실시예들에 적용된다. 예를 들어, 선택된 메이저 진입 포인트들은 가능하게는 마이너 진입 포인트들을 포함하도록 확장될 수 있고, 선택된 메이저 이탈 포인트들은 가능하게는 마이너 이탈 포인트들을 포함하도록 확장될 수 있다.
스위칭 패치들을 이용한 데이터의 시그널링 및 재순서화를 위한 방법들
몇몇 경우들에서, 더 효율적인 비디오 인코딩을 가능하게 하기 위해, 데이터 의존 구조는 더 복잡해질 수도 있고, AHS 클라이언트가 SAP에서 하나의 표현을 떠나고 제 2 표현에 참가하는 것이 용이하지 않을 수 있다. 예를 들어, 이전에 설명된 바와 같이, 도 1에 도시된 폐쇄형 GOP 구조는 이러한 전이들을 용이하게 하지만, 도 2에 도시된 개방형 GOP 구조는 이러한 전이들을 더 곤란하게 한다. 정렬된 진입 포인트들 및 이탈 포인트들의 경우에서 폐쇄형 GOP 전이들과 개방형 GOP 전이들 사이의 차의 일례는 다음과 같다.
이탈 포인트 (PT, BO)에서의 제 1 표현으로부터 진입 포인트 (PT', BO')에서의 제 2 표현으로 전이할 때, 폐쇄형 GOP의 경우, 프리젠테이션 시간들 PT 및 PT'는 동일하고, 이것은, 표현들로부터 다운로드된 어떠한 중첩하는 컨텐츠도 존재하지 않고, 2개의 표현들로부터의 컨텐츠는 재생할 미디어 플레이어에 대한 유효한 컨텐츠를 나타내도록 연접되어 끊김없는 전이를 가능하게 할 수 있는 것을 나타낸다. 폐쇄형 GOP 전이의 일례로서, 도 1, 도 5 및 도 9에 도시된 바와 같이, 2개의 표현들이 동일한 데이터 의존 구조 및 파일 포맷을 공유한다고 가정한다. 이 경우, 도 9에 도시된 바와 같이, 제 1 표현으로부터의 전이는 이탈 포인트 (8, 27,537)에서 발생될 수 있고, 이것은, 제 1 표현이 바이트 오프셋 27,537까지 다운로드되고 종료 프리젠테이션 시간이 프레임 8의 재생 직후인 것을 나타낸다.
도 5를 참조하면, 제 2 표현으로의 대응하는 전이는 진입 포인트 (9, 27,537)에서 발생될 수 있고, 이것은, 제 2 표현이 바이트 오프셋 27,537에서 다운로드를 시작하고, 시작 프리젠테이션 시간이 프레임 9를 재생하는 것과 함께 시작할 것임을 나타낸다. 이 예에서, 동일한 프레임들의 어떠한 중첩하는 다운로드도 존재하지 않는데, 즉, 제 1 표현으로부터 다운로드된 모든 프레임들은 제 2 표현으로부터 다운로드된 모든 프레임들과는 상이하다. 이 예에서, 제 1 표현에 대한 이탈 포인트의 바이트 오프셋 및 제 2 표현에 대한 이탈 포인트의 바이트 오프셋은 동일한데, 이는, 두 표현들 모두가 동일한 진입 및 이탈 포인트들에 대해 정확히 동일한 바이트 오프셋들을 가지기 때문이지만, 일반적으로, 그 사이에서 전이들이 존재할 표현들은 상이한 품질들 및 레이트들로 인코딩될 것이고, 따라서, 동일한 프리젠테이션 시간들에 대한 바이트 오프셋들은 일반적으로 동일하지 않을 것이다.
이탈 포인트 (PT, BO)에서의 제 1 표현으로부터 진입 포인트 (PT', BO')에서의 제 2 표현으로 전이할 때, 개방형 GOP의 경우, 프리젠테이션 시간들 PT 및 PT'는 반드시 동일하지는 않고, 이것은, 표현들로부터 다운로드된 중첩하는 컨텐츠가 존재할 수 있고, 2개의 표현들로부터의 컨텐츠는 재생할 미디어 플레이어에 대한 유효한 컨텐츠를 나타내도록 단순히 연접될 수는 없는 것을 나타낸다. 이 경우들에서, AHS 클라이언트가 미디어 플레이어에 대해 중첩하는 컨텐츠를 미디어 플레이어에 제공할 때 어느 컨텐츠가 중첩하고 있는지를 AHS 클라이언트가 미디어 플레이어에 시그널링하는 것이 유용한데, 이는, 중첩하는 컨텐츠를 끊김없는 방식으로 재생하기 위한 미디어 플레이어에 이러한 시그널링이 유용할 수 있기 때문이다. 다른 경우들에서, 미디어 플레이어는, 중첩하는 컨텐츠가 미디어 플레이어에 언제 제공되는지를 이해하고, 가능한 한 끊김없이 컨텐츠의 재생을 핸들링하기 위한 로직 및 방법들을 구비한다.
개방형 GOP 전이의 일례로서, 도 2, 도 6(a) 및 도 10(a)에 도시된 바와 같이, 2개의 표현들이 동일한 데이터 의존 구조 및 파일 포맷을 공유한다고 가정한다. 이 경우, 도 10(a)에 도시된 바와 같이, 제 1 표현으로부터의 전이는 이탈 포인트 (9, 31,043)에서 발생될 수 있고, 이것은, 제 1 표현이 바이트 오프셋 31,043까지 다운로드되는 것, 즉, 클라이언트가 도시된 파일 포맷 순서에서 프레임 8까지(이를 포함함) 다운로드할 것, 및 종료 프리젠테이션 시간이 프레임 9의 재생 직후인 것을 나타낸다. 도 6(a)를 참조하면, 제 2 표현으로의 대응하는 전이는 진입 포인트 (9, 22,033)에서 발생될 수 있고, 이것은, 제 2 표현이 바이트 오프셋 22,033에서 다운로드를 시작하는 것, 즉 클라이언트가 도시된 파일 포맷 순서에서 프레임 9에서 다운로드를 시작하는 것, 및 시작 프리젠테이션 시간이 프레임 9의 재생과 함께 시작할 것을 나타낸다.
이 개방형 GOP 예에서는, 상기 폐쇄형 GOP 예와는 반대로, 두 표현들 모두가 동일한 진입 및 이탈 포인트들에 대해 대체로 정확히 동일한 바이트 오프셋들을 갖는 경우에도, 두 표현들 모두가 전이의 진입 포인트 및 이탈 포인트에 대해 상이한 바이트 오프셋들을 가짐을 주목한다. 이 개방형 GOP 예에서, 이 전이에서 다운로드되는 중첩하는 프레임들의 세트가 존재하는데, 즉, 프레임들 9, 6, 7 및 8이 이 전이에서 각각의 표현에 대해 각각 한번씩 다운로드된다. 바람직하게는, 프레임들의 이러한 세트들 중 오직 하나만이 미디어 플레이어에 의한 플레이아웃과 같이 미디어 소비기(consumer)에 의해 이용되어, 시간 경험에서 끊김없는 전이를 최종 사용자에게 제공한다.
여기서, 프레임들의 이러한 중첩하는 세트는 "중첩 패치(patch)"로 지칭된다. 상기 예에서, 각각의 중첩 패치는 31,043 - 22,033 = 9,010 바이트들이다. 몇몇 예들에서, 바이트들의 수는 표현마다의 중첩 패치들 사이에서 상이할 수도 있다. 그러나, 이 예에서, 이들은 동일하다. 그 다음, 클라이언트는 2 * (31,043 - 22,033) = 18,020 바이트들 ―2개의 표현들의 중첩 패치들― 을 다운로드할 것이고, 프레임들 6, 7, 8 및 9를 재생하기 위해 이러한 중첩 패치들 중 오직 하나만을 이용할 것이다. 따라서, 이 예에서는 9,010 바이트들의 오버헤드가 존재한다.
일반적으로, 그 사이에 전이들이 존재할 표현들은 통상적으로 상이한 품질들 및 레이트들로 인코딩될 것이기 때문에, 동일한 프리젠테이션 시간들에 대한 바이트 오프셋들은 일반적으로 동일하지 않을 것이고, 따라서, 중첩 패치들에 대해 다운로드되는 바이트들의 총 수 ―2개의 표현들 각각에서 중첩 패치의 바이트 사이즈들의 합― 는 반드시 2배일 필요는 없다. 중첩 패치로부터 재생되는 프레임들의 사이즈는, 중첩 패치의 프레임들 사이에서 하나의 표현으로부터 다른 표현으로 재생을 전이하기 위해 미디어 플레이어가 어떻게 결정하는지에 의존할 수 있다.
개방형 GOP 데이터 의존들 및 다른 더 진보된 데이터 의존 구조들을 이용하는 경우, 끊김없는 전이들의 효율성 및 단순성을 향상시키기 위해, 본 명세서에서 설명되는 몇몇 방법들이 이용될 수도 있다. 제 1 방법은, 중첩 패치 구조를, 예를 들어, 세그먼트 맵에서 시그널링하기 위한 방법, 즉, 하나의 표현으로부터 다른 표현으로 스위칭하기 위해 이용될 수 있거나, 또는 표현 내로부터의 진입 포인트에서 컨텐츠 재생을 시작하기 위해 이용될 수 있거나, 또는 표현의 이탈 포인트에서 컨텐츠의 재생을 중지하기 위해 이용될 수 있는, 가능한 중첩 패치에 대응하는 진입 및 이탈 포인트들의 쌍들을 시그널링하는 방법이다.
세그먼트 맵 내에서 중첩 패치들을 시그널링하기 위한 가능한 포맷은, 다양한 포맷들로 클라이언트에 전달될 수도 있는 데이터 구조로서 표 4에 나타난다.
Figure pct00004
그 다음, 클라이언트는, 중첩 패치들이 어디에서 발생하는지를 결정하기 위해, 세그먼트 맵으로부터의 이러한 데이터 구조를 해석한다. 그러한 예시적인 데이터 구조에서, Timescale의 값은 MPEG DASH 규격에 대해 설명된 것과 같을 수 있다. OP의 값은, 이 세그먼트 맵에서 시그널링되는 중첩 패치들의 수이다. 타입 필드는 중첩 패치가 시그널링되고 있는 것을 시그널링한다. 쌍 (APT(i), ABO(i))는 i번째 중첩 패치의 진입 포인트이고, 쌍 (XPT(i), XBO(i))는 i번째 중첩 패치의 이탈 포인트이다.
상기 시그널링 방법의 많은 변형들이 존재한다. 예를 들어, 중첩 패치들의 시그널링은, 세그먼트 맵 내의 다른 SAP들, 진입 포인트들 및 이탈 포인트들의 시그널링과 함께 시그널링될 수 있다. 다른 예로, 시그널링의 정확한 세부사항들은 변할 수도 있다.
다른 변형으로서, OP의 값은 고정될 수도 있고, 시그널링되지 않을 수도 있다. 예를 들어, 세그먼트에 대한 세그먼트 맵이 세그먼트에 부착되고, 세그먼트당 오직 하나의 중첩 패치가 존재하는 것이 가능할 수 있고, 여기서 세그먼트는 진입 포인트로 시작하고 이탈 포인트로 종료한다. 이 경우, OP의 값은 1이다. 다른 변형으로서, 중첩 패치의 시그널링은 세그먼트 맵 내의 다른 플래그에 의해 시그널링될 수도 있고, 여기서 플래그가 0으로 설정되면, 세그먼트에서 시그널링되는 어떠한 중첩 패치도 존재하지 않고, 여기서 플래그가 1로 설정되면, 세그먼트에서 시그널링되는 정확히 하나의 중첩 패치가 존재한다.
기존의 MPEG DASH 프로파일들 중 일부에서, 적응 세트의 상이한 표현들 사이에 SAP 정렬이 존재한다. MPEG DASH 또는 다른 AHS 기술들의 표준 프로파일들의 변형들에서, 프로파일들이 허용될 수도 있고, 여기서 적응 세트의 상이한 표현들 사이, 또는 일반적으로, 상이한 비트 레이트들 및 품질들에서 동일한 컨텐츠에 대한 대표들의 그룹 사이의 중첩 패치 정렬이 시그널링될 수 있거나 또는 주어진 프로파일에 대해 항상 사실일 수 있다. 상이한 표현들 사이의 중첩 패치 정렬은, 중첩 패치들의 상당한 부분 또는 그 전부에 대해, 특정한 표현이, 진입 포인트 (APT, ABO) 및 대응하는 이탈 포인트 (XPT, XBO)를 갖는 시그널링된 중첩 패치를 가지면, 적응 세트 또는 그룹 내의 다른 표현들은 또한, (APT, ABO') 형태의 진입 포인트 및 (XPT, XBO') 형태의 이탈 포인트를 갖는 시그널링된 중첩 패치를 가질 것, 즉, 진입 및 이탈 포인트들의 시작 및 종료 프리젠테이션 시간들이 매칭되는 것을 의미한다. 바이트 오프셋들은 매칭될 필요가 없으며, 종종 매칭되지 않을 것임을 주목한다.
표현들 사이에서 정렬된 시그널링된 중첩 패치들을 갖는 것은 AHS 클라이언트에 대해 매우 유리할 수 있다. 예를 들어, 이것은, AHS 클라이언트가 현재의 제 1 표현으로부터 다른 제 2 표현으로 스위칭하기 위한 전략, 즉, 제 2 표현에 대한 다운로드를 시작하기 위한 시작 프리젠테이션 시간 및 제 1 표현에 대한 종료 프리젠테이션 시간을 제 1 표현에 대한 세그먼트 맵 정보로부터 결정하도록 허용한다. 이것은, 그 다음, AHS 클라이언트가 어느 프리젠테이션 시간에 스위칭을 행할지를 결정하기 위해 제 2 표현에 대한 세그먼트 맵을 다운로드하거나 그에 액세스하는 것을 회피할 수 있기 때문에, 유리할 수 있다. 다른 이점은, 그 다음, AHS 클라이언트가, 제 2 표현으로부터 임의의 정보를 다운로드하기 전이라도 중첩 패치의 시작 및 종료 프리젠테이션 시간을 미디어 플레이어에 시그널링할 수 있어서, 중첩하는 컨텐츠에 대해 미디어 플레이어에 힌트들을 제공할 수 있다는 점이다.
실시예들에서, 미디어 컨텐츠의 소스는 중첩 패치들을 갖는 세그먼트들에서 데이터를 정렬하도록 구성될 수 있고, 클라이언트는, (존재하든 존재하지 않든) 중첩 패치들의 존재를 가정하여 데이터를 프로세싱하도록 구성될 수 있다. 몇몇 실시예들에서, 이러한 소스는, 중첩 패치들을 모르거나 무시하는 클라이언트들에 의해 이용될 수도 있다.
동일한 적응 세트 또는 그룹에서의 표현들 사이에서 중첩 패치들을 정렬하기 위한 하나의 가능한 방법은, 상이한 표현들 사이에서 정렬된 세그먼트들을 갖는 것, 및 표현들 내에서 중첩 패치들인 세그먼트들, 즉, 중첩 패치의 진입 포인트의 바이트 오프셋으로 시작하고 중첩 패치의 이탈 포인트의 바이트 오프셋으로 종료하는 세그먼트들을 갖는 것인데, 즉, (PT, BO)가 중첩 패치의 진입 포인트이고 (PT', BO')가 중첩 패치의 이탈 포인트이면, 세그먼트는 표현 내의 바이트 오프셋 BO에서 시작하고 표현 내의 바이트 오프셋 BO'에서 종료한다.
중첩 패치들과 일치하는 세그먼트들은 또한 중첩 패치들을 포함하는 세그먼트들인 것으로 시그널링될 수도 있다. 이 경우, AHS 클라이언트가 제 1 표현으로부터 제 2 표현으로 전이하기를 원하는 경우, AHS 클라이언트 방법은, 제 1 표현에서 중첩 패치인 세그먼트, 말하자면, 진입 포인트 (APT, ABO) 및 이탈 포인트 (XPT, XBO)를 갖는 세그먼트를 발견하고, 컨텐츠의 XBO - ABO 바이트들을 포함하는 그 세그먼트를 다운로드하고, 제 2 표현에서 대응하는 중첩 패치인 세그먼트, 즉, 진입 포인트 (APT, ABO') 및 이탈 포인트 (XPT, XBO')에 대응하는 제 2 표현으로부터의 컨텐츠의 XBO' - ABO' 바이트들을 갖는 제 2 표현의 세그먼트를 다운로드하고, 프리젠테이션 시간 인터벌 APT 내지 XPT 내에 제 1 표현으로부터 제 2 표현으로 전이하도록 미디어 플레이어에 시그널링하는 것일 수 있다.
다른 변형은, 세그먼트 내에 완전히 포함되도록 중첩 패치들을 제한하고, 세그먼트 내의 중첩 패치들의 위치들을 시그널링하는 것이다. 이 변형은, 예를 들어, 세그먼트 지속기간들이 중첩 패치들의 지속기간들보다 일반적으로 훨씬 더 큰 경우, 예를 들어, 표현당 오직 하나의 세그먼트만이 존재할 수도 있는 온-디맨드(on-demand) 컨텐츠에 대해, 또는 세그먼트 지속기간은 2초 정도일 수 있지만 중첩 패치 지속기간들은 수십 또는 수백 밀리초일 수도 있는 라이브 컨텐츠에 대해 바람직할 수도 있다. 이 경우, AHS 클라이언트가 제 1 표현으로부터 제 2 표현으로 전이하는 경우, AHS 클라이언트는, 제 1 표현에서 중첩 패치의 종료시에 종료하는 제 1 표현의 세그먼트를 다운로드할 수 있고, 제 2 표현에서 중첩 패치의 시작시에 시작하는 제 2 표현의 세그먼트를 다운로드할 수 있어서, 이러한 세그먼트들의 재생되지 않아야 하는 다른 부분들을 다운로드하는 것을 회피한다.
앞서 설명된 바와 같이, 몇몇 과도한 및/또는 미사용된 컨텐츠가 중첩 패치들에 기초하여 요청 및 송신될 수도 있다. 따라서, 제 1 표현으로부터 제 2 표현으로 스위칭하는 경우, 컨텐츠의 2개의 상이한 버전들이 중첩 패치에서 다운로드되고, 미디어 플레이어는 중첩 패치의 컨텐츠의 각각의 부분에 대한 2개의 버전들 중 하나만을 재생하기 때문에, 과도한 컨텐츠가 다운로드된다. 따라서, 중첩 패치 사이즈들이 최소화되도록 디바이스들을 구성하기 위한 타당한 이유들이 존재한다.
클라이언트가, 중첩 패치의 진입 포인트에서 시작하는 표현으로부터 컨텐츠의 재생을 시작하고 있거나 중첩 패치의 이탈 포인트에서 종료하는 표현으로부터 컨텐츠의 재생을 종료하고 있는 경우, 어느 경우이든, 재생되지 않는 컨텐츠가 다운로드되는 것이 가능하기 때문에, 작은 중첩 패치 사이즈들이 또한 유리하다.
예를 들어, 도 2, 도 6(a) 및 도 10(a)를 다시 참조하여, 도시된 파일 포맷 순서에서 프레임들 9, 6, 7 및 8을 포함하는 중첩 패치를 고려한다. 이 중첩 패치에서 표현들을 스위칭하는 경우, 프레임들 9, 6, 7 및 8은 2번, 즉, 제 1 표현에 대해 한번 및 제 2 표현에 대해 한번 다운로드된다. 재생을 시작하기 위해 이 중첩 패치의 진입 포인트를 이용하는 경우, 즉, 프레임 9에서 재생을 시작하기 위해 프레임 9의 시작시에 다운로드를 시작하는 경우, 프레임들 6, 7 및 8은 다운로드되지만 재생될 수 없는데, 이는, 프레임들 6, 7 및 8이, 다운로드되지 않은 프레임 5에 또한 의존하기 때문이다.
중첩 패치의 사이즈 및 지속기간을 최소화하기 위해, 반드시 디코딩 순서는 아닌 다른 파일 포맷 순서들을 고려하는 것이 유용하다. 다음의 방법을 고려하는데, 즉, 서버는 디코딩 순서 대신에 프리젠테이션 순서로서의 파일 포맷 순서를 이용하여 세그먼트들을 형성한다. 세그먼트들과 연관된 세그먼트 맵들에서의 시그널링은, 세그먼트 내의 컨텐츠를 디코딩 순서로 어떻게 재순서화할지를 시그널링할 수 있다. AHS 클라이언트는 세그먼트들 또는 세그먼트들의 일부들을 다운로드할 수 있고, 수신된 컨텐츠를 디코딩 순서로 재순서화할 수 있고, 컨텐츠를 디코딩 순서로 미디어 플레이어에 제공할 수 있다. 이것은, 몇몇 경우들에서, 미디어 플레이어가 컨텐츠를 디코딩 순서로 수신할 필요가 없을 수도 있지만, AHS 클라이언트가 컨텐츠의 일부들을 미디어 플레이어에 제공하기 전에 이를 잠재적으로 재순서화하도록 요구한다. 또한, AHS 클라이언트는 미디어 플레이어에 디코딩 순서로 컨텐츠를 제공하기 위해, 미디어 플레이어에 컨텐츠를 제공하기 전에 약간 더 많은 컨텐츠를 버퍼링해야 할 수 있다. 그러나, 이 방법에 대한 많은 이점들이 존재한다.
이 예에서, 파일 포맷 순서가 프리젠테이션 순서라는 표시는, 예를 들어, MPD에서 시그널링될 수 있다. 파일 포맷 순서가 프리젠테이션 순서인 것으로 시그널링된 표현들의 경우, 메이저 진입 및 이탈 포인트들 및 디코딩 순서는, 시그널링된 각각의 프레임에 대해 다음의 포맷을 이용하여 시그널링될 수 있다.
start_BO SBO end_BO EBO decode_BO DBO [entry] [exit]
상기 포맷에서, SBO는 파일 포맷 순서에서 프레임의 시작 바이트 오프셋이고, 키워드 "start_BO"에 의해 시작 바이트 오프셋인 것으로 시그널링된다. 유사하게, EBO는 프레임의 종료 바이트 오프셋이고, 키워드 "end_BO"에 의해 이와 같이 시그널링된다. 키워드 "decode_BO"에 의해 시그널링되는 DBO는, 프레임들을 디코딩 순서가 되게 하기 위해 파일 포맷 순서에서 이 프레임이 삽입되어야 하는 바이트 오프셋이다. 프레임의 시작이 진입 포인트이면, 선택적 키워드 "진입"이 포함되고, 유사하게, 프레임의 종료가 이탈 포인트이면, 선택적 키워드 "이탈"이 포함된다.
일례로서, 도 2에 도시된 프레임 의존 구조를 고려하지만, 대신에, 파일 포맷 순서가 디코딩 순서 대신에 프리젠테이션 순서인 것, 즉, 파일 포맷 순서가 도 6(b) 및 도 10(b)에 도시된 것과 같은 것으로 가정한다. 그 다음, 이 예에 대해 앞서 설명된 시그널링은,
start_BO 0 end_BO 13,244 decode_BO 0 entry exit
start_BO 16,583 end_BO 22,033 decode_BO 13,244 exit
start_BO 25,013 end_BO 31,043 decode_BO 22,003 entry exit
start_BO 34,980 end_BO 41,993 decode_BO 31,043 exit
start_BO 44,840 end_BO 49,204 decode_BO 41,993 entry exit
일 수 있다.
상기 제 1 엔트리는 프레임 1에 대응하고, 프레임 1이 바이트 오프셋 0에서 시작하고 바이트 오프셋 13,244에서 종료하고, 디코딩 순서에서 이 프레임은 decode_BO = start_BO = 0으로 표시되는 바와 같은 곳에 있어야 하고, 프레임 1의 시작이 진입 포인트이고 프레임 1의 종료가 이탈 포인트임을 시그널링한다. 상기 제 2 엔트리는 프레임 5에 대응하고, 프레임 5가 바이트 오프셋 16,583에서 시작하고 바이트 오프셋 22,033에서 종료하고, 디코딩 순서에서 바이트 오프셋 13,244에서, 즉, 프레임 2 직전에 삽입되어야 하고, 프레임 5의 종료가 이탈 포인트임을 시그널링한다. 상기 제 3 엔트리는 프레임 9에 대응하고, 프레임 9가 바이트 오프셋 25,013에서 시작하고 바이트 오프셋 31,043에서 종료하고, 디코딩 순서에서 바이트 오프셋 22,003에서, 즉, 프레임 6 직전에 삽입되어야 하고, 프레임 9의 시작이 진입 포인트이고 프레임 9의 종료가 이탈 포인트임을 시그널링한다. 다음 2개의 엔트리들은 프레임들 13 및 17에 대해 유사한 정보를 시그널링한다.
상기 예에서, 각각의 중첩 패치는 오직 하나의 프레임인 것, 즉, 프레임들 1, 9 및 17 각각이 중첩 패치인 것을 주목한다. 예를 들어, 제 1 표현으로부터의 전이는 프레임 9의 종료시의 이탈 포인트에서 행해질 수 있고, 따라서, 제 1 표현은 바이트 오프셋 31,043까지 다운로드되는데, 즉, 클라이언트는 프리젠테이션 순서 파일 포맷에서 프레임 9의 종료까지 다운로드한다. 제 2 표현으로의 대응하는 전이는 프레임 9의 시작시에 행해질 수 있고, 따라서, 제 2 표현은 바이트 오프셋 25,013에서 다운로드를 시작하는데, 즉, 클라이언트는 프레임 9의 시작시에 시작하여 다운로드한다. 중첩 패치는 프레임 9이며, 프레임 9는 두 표현들 모두에 대해 다운로드되는 유일한 프레임인 것, 즉, 2개의 표현들에 대해 프레임 9를 포함하는 중첩 패치로부터 2*6,030 = 12,060 바이트들이 다운로드되는 것을 주목한다.
이러한 동일한 프레임 의존 구조를 갖지만 파일 포맷으로서의 디코딩 순서를 갖는 상기 이전의 예에서, 프레임들 6, 7, 8 및 9를 포함하는 중첩 패치 및 총 18,020 바이트들이 2개의 표현들에 대한 중첩 패치로부터 다운로드됨을 주목한다. 따라서, 파일 포맷 순서로서의 프리젠테이션 순서는 이 예에서 더 작은 중첩 패치를 갖고, 이것은, AHS 클라이언트에 유리한데, 이는, 하나의 표현으로부터 다른 표현으로의 전이를 실시하기 위해 더 적은 컨텐츠를 다운로드하면 되기 때문이다. 따라서, 전이에 대해 더 적은 네트워크 용량이 이용될 수 있고, 또한, 전이를 가능하게 하기 위해 다운로드되는 더 적은 양의 데이터로 인해, AHS 클라이언트가 중지 또는 재버퍼링하도록 강제될 가능성이 더 적게 된다.
게다가, 상기 방법은, AHS 클라이언트가 프레임들을 미디어 플레이어에 제공하기 전에 프레임들을 디코딩 순서로 재순서화하기에 충분한 정보를 제공하고, AHS 클라이언트는 또한 미디어 플레이어에 중첩 패치의 표시를 제공할 수 있다. 게다가, 동일한 프레임 의존 구조를 갖지만 파일 포맷 순서로서의 디코딩 순서를 갖고, 여기서 프레임들 6, 7 및 8이 또한 다운로드되지만 재생되지 않는 이전의 예와는 반대로, 이러한 파일 포맷 순서화에 의해, 예를 들어, 프레임 9에서 시작하는 표현으로부터 컨텐츠의 재생을 시작하기를 원하는 AHS 클라이언트는, 재생되지 않는 어떠한 프레임들로 다운로드하지 않는다.
상기한 것의 많은 변형들이 존재한다. 예를 들어, 진입 및 이탈 포인트 바이트 오프셋들 및 디코딩 바이트 오프셋의 디스크립션에 키워드들이 포함되지 않고, 그 대신, 각각의 필드의 의미는 필드의 순서 또는 몇몇 다른 표시자에 의해 결정된다. 다른 예로서, 프래그먼트들 또는 세그먼트들로의 표현의 파티션이, 메이저 진입 포인트들 및 이탈 포인트들의 시퀀스에 의해 정의될 수 있는데, 즉, 각각의 진입 포인트에서 새로운 세그먼트가 시작하고 각각의 이탈 포인트에서 세그먼트가 종료된다. 상기 예에서, 프래그먼트 또는 세그먼트가 진입 및 이탈 포인트 모두를 갖는다는 표시에 의해 프레임 1을 포함하는 프래그먼트 또는 세그먼트, 프래그먼트 또는 세그먼트가 이탈 포인트를 갖는다는 표시에 의해 프레임들 2, 3, 4 및 5를 포함하는 프래그먼트 또는 세그먼트, 프래그먼트 또는 세그먼트가 진입 포인트도 이탈 포인트도 포함하지 않는다는 표시에 의해 프레임들 6, 7 및 8을 포함하는 프래그먼트 또는 세그먼트, 프래그먼트 또는 세그먼트가 진입 및 이탈 포인트 모두를 갖는다는 표시에 의해 프레임 9를 포함하는 프래그먼트 또는 세그먼트, 프래그먼트 또는 세그먼트가 이탈 포인트를 갖는다는 표시에 의해 프레임들 10, 11, 12 및 13을 포함하는 프래그먼트 또는 세그먼트, 프래그먼트 또는 세그먼트가 진입 포인트도 이탈 포인트도 포함하지 않는다는 표시에 의해 프레임들 14, 15 및 16을 포함하는 프래그먼트 또는 세그먼트, 및 프레임 17을 포함하는 프래그먼트 또는 세그먼트가 존재할 수 있다. 이 예에서, 이탈 포인트들은 세그먼트의 종료시에 있고, 진입 포인트들은 세그먼트들의 시작시에 있다. 게다가, 디코딩 순서를 획득하기 위해, 각각의 이탈 프레임은 이전 이탈 프레임 직후로 이동되어야 한다. 따라서, 각각의 이탈 포인트 프레임의 시작 바이트 오프셋과 함께 상기 정보를 시그널링받은 AHS 클라이언트는 프레임들을 디코딩 순서로 자동으로 재순서화할 수 있고, 이를 디코딩 순서로 미디어 플레이어에 제공할 수 있다.
상기 방법들의 많은 변형들이 존재한다. 예를 들어, 컨텐츠의 몇몇 부분들에 대해, 파일 포맷 순서는 디코딩 순서일 수 있고, 컨텐츠의 다른 부분들에 대해, 파일 포맷은 프리젠테이션 순서일 수 있다. 일례로서, 도 2를 다시 참조하면, 포맷 순서는 1, 5, 2, 3, 4, 6, 7, 8, 9, 13, 10, 11, 12, 13, 14, 15, 16, 17일 수 있다. 이 순서에 대한 패턴은, 다음 개방형 GOP를 시작하는 I-프레임에 의존하는 B-프레임들의 마지막 시퀀스까지, 순서가 디코딩 순서이고, 그 후, 개방형 GOP I-프레임들이 B-프레임들의 이러한 마지막 시퀀스에 선행하는 대신에, B-프레임들은 파일 포맷 순서에서 개방형 GOP I-프레임에 선행한다. 이 변형에서, 개방형 GOP I-프레임들은 중첩 패치로서 시그널링될 수 있고, 또한 디코딩 순서를 획득하기 위해, 개방형 GOP I-프레임들이 파일 포맷 순서로 배치되어야 하는 바이트 오프셋과 함께 개방형 GOP I-프레임의 시작 및 종료의 바이트 오프셋을 시그널링한다. 이러한 변형에 의해, 또한 시그널링될 수 있거나 시그널링되지 않을 수 있는 다른 이탈 포인트들은 파일 포맷 순서에서 디코딩 순서이다.
세그먼트 맵들에 대한 URL들을 구조화 및 유도하기 위한 방법들
클라이언트들은 어떻게든 세그먼트 맵들을 획득할 필요가 있을 수 있다. 세그먼트 맵들을 획득하거나 그에 액세스하기 위한 방법들의 몇몇 바람직한 특성들은, AHS 클라이언트들의 기존의 배치들에 대한 변경들 및/또는 AHS 포맷들로 인코딩되는 컨텐츠를 요구하지 않는다. 예를 들어, 세그먼트 맵들을 이용하지 않는 AHS 클라이언트들 및/또는 자신들이 다운로드하고 플레이 아웃하고 있는 미디어 컨텐츠에 대한 세그먼트 맵들의 이용가능성의 존재를 완전히 모르는 AHS 클라이언트들이, 세그먼트 맵들이 제공된 경우 영향받지 않도록, 세그먼트 맵들에 대한 액세스를 제공하는 방법들은 역호환가능하게 제공되는 것이 바람직하다. 게다가, 세그먼트 맵들을 제공하지 않는 미디어 AHS 미디어 컨텐츠를 인코딩, 포맷 및 제공하기 위한 방법들은, 세그먼트 맵들이 그 AHS 미디어 컨텐츠에 대해 이용가능하게 된 경우 변경될 필요가 없는 것이 바람직하다.
ALS와 같은 AHS 스트리밍 시스템들의 경우, 미디어 데이터를 포함하는 각각의 세그먼트는 연관된 URL에 의해 파일로서 이용가능해진다. 세그먼트의 URL은 예를 들어, HTTP 1.1을 이용하여, 세그먼트 또는 세그먼트의 일부에 액세스하고 이를 다운로드하는데 이용될 수 있다.
세그먼트와 연관된 각각의 세그먼트 맵은 또한 연관된 URL에 의해 파일로서 이용가능해질 수 있는데, 여기서 세그먼트 맵 URL은 그의 연관된 세그먼트의 URL로부터 자동으로 생성될 수 있다. 예를 들어, 세그먼트 맵에 대한 URL은 부착된 ".segment_map"을 갖는 연관된 세그먼트의 URL일 수 있다.
세그먼트 맵의 스팬(span)은, 세그먼트 맵이 그에 대한 정보를 제공하는 세그먼트 또는 세그먼트들의 일부들로서 정의된다. 앞서 설명된 실시예에서, 세그먼트 맵의 스팬은, 세그먼트 맵이 연관되는 전체 세그먼트이다. 다른 실시예들에서, 세그먼트 맵들의 스팬과 세그먼트들 사이에 다른 관계들이 가능하다.
예를 들어, 세그먼트 맵은 세그먼트들의 세트에 대해 이용가능해질 수도 있는데, 예를 들어, 세그먼트 맵의 스팬은 다수의 연속적인 세그먼트들일 수도 있고, 이 경우, 세그먼트 맵에 대한 URL은, 예를 들어, 그 URL에 ".segment_map"을 부착함으로써 연속적인 세그먼트들 중 제 1 세그먼트의 URL로부터 유도될 수도 있다.
다른 대안으로서, 세그먼트 맵들은 세그먼트의 부분들에 스패닝할 수도 있는데, 이 경우 세그먼트 맵들에 대한 URL들은, 연관된 세그먼트의 URL에 ".segment_map.X"를 부착함으로써 유도될 수도 있고, 여기서 "X"는, 세그먼트의 부분들인 스팬들을 갖는 세그먼트 맵들의 시퀀스 번호일 수도 있어서, 예를 들어, 세그먼트의 부분들인 스팬들을 갖는 10개의 세그먼트 맵들이 존재하면, 이 세그먼트 맵들에 대한 URL들은, ".segment_map.0", ".segment_map.1", ..., ".segment_map.9"를 각각 부착함으로써 세그먼트의 URL로부터 유도될 수도 있다.
이전의 대안의 개선은, 세그먼트의 상이한 시간 인터벌들에 스패닝하는 세그먼트 맵들을 제공하는 것이다. 예를 들어, 다수의 세그먼트 맵들이 존재할 수도 있고, 여기서 각각의 세그먼트 맵은, 1시간의 미디어 데이터를 포함하는 세그먼트의 프리젠테이션 시간 중 1분에 스패닝한다. 이 경우, 세그먼트 스위치에 대한 URL은 ".segment_map.T"를 부착함으로써 세그먼트에 대한 URL로부터 유도될 수도 있고, 여기서 "T"는 0 내지 59의 정수값이고, 이는, 세그먼트 맵에 의해 스패닝되는 1분 인터벌의 세그먼트 내에서 시작하는 분(minute)을 대략적으로 나타낸다. 예를 들어, 세그먼트 URL이 "the_movie_of_the_year"이면, 세그먼트로의 6분에서 시작하는 세그먼트의 1분 인터벌에 스패닝하는 세그먼트 맵은 URL "the_movie_of_the_year.segment_map.6"을 가질 수도 있다.
이러한 대안 및 다른 대안들에서, 세그먼트 맵들은 세그먼트 또는 세그먼트들의 중첩 부분들에 스패닝할 수도 있다. 예를 들어, 각각의 세그먼트 맵은, 세그먼트로의 각각의 30초에서 스팬 시작 포인트를 갖는 세그먼트 맵이 존재하도록 세그먼트들의 1분에 스패닝할 수도 있고, 따라서 이 예에서, 각각의 세그먼트 맵의 스팬은 2개의 다른 세그먼트 맵들의 스팬과 30초만큼 중첩한다.
제 2 예에서, 세그먼트들의 상이한 지속기간들에 스패닝하는 세그먼트 맵들이 존재할 수도 있는데, 예를 들어, 몇몇은 1분 인터벌들에 스패닝하고, 다른 것들은 2분 인터벌들에 스패닝하고, 다른 것들은 4분 인터벌들에 스패닝한다. 세그먼트 맵을 포함하는 정보의 세부사항은 세그먼트 맵의 스팬에 따라 다를 수도 있다. 예를 들어, 더 긴 인터벌들 또는 지속기간들에 스팬하는 세그먼트 맵들은, 더 짧은 인터벌들 또는 지속기간들에 스팬하는 세그먼트 맵들 보다 더 멀리 떨어진 진입 및 이탈 포인트들을 포함할 수 있다.
이 대안들에서, 세그먼트 맵은 또한, 이들이 관련된 세그먼트들 또는 세그먼트들의 부분들에 대한 정보를 포함할 수 있다.
세그먼트 맵들의 존재를 모르거나 세그먼트 맵들의 이용가능성을 이용하도록 향상되지 않은 AHS 클라이언트들은, 앞서 설명된 바와 같이 세그먼트 맵들의 이용가능성에 의해 영향받지 않는다.
향상된 AHS 클라이언트들은, 이용가능한 세그먼트 맵들을 생성 및 형성하는 관점에서, 앞서 설명된 것들 이외에 AHS 전달 시스템에 대한 어떠한 추가적인 변경들없이 세그먼트 맵들의 이용가능성을 이용할 수 있다. 향상된 AHS 클라이언트는, 예를 들어, 세그먼트의 URL에 ".segment_map"을 부착함으로써, 세그먼트의 URL을 이용하여 세그먼트 맵에 대한 URL을 자동으로 생성할 수 있고, 그 다음, 세그먼트 맵을 다운로드하고 그에 액세스하기 위해 세그먼트 맵의 URL에 대한 HTTP 1.1 요청을 행할 수 있다.
앞서 설명된 것들에 대한 URL 생성을 위한 대안적인 방법들은 표현들의 세그먼트들과 관련된 다른 파일들에 대해 이용될 수 있다. 예를 들어, Luby A5는, 세그먼트들로부터 FEC 복구 데이터를 생성 및 제공하기 위한 방법을 교시하고, 세그먼트의 URL에 ".fec_repair"를 부착하여 그로부터 FEC 복구 데이터를 생성하는 것을 제안한다.
세그먼트 파일들과는 독립적으로 세그먼트 맵 파일들을 구조화하기 위한 방법들
여기서는, 2 레벨 구조를 이용하여, 세그먼트 맵 파일들을 제공하는 것에 대한 상이한 접근법을 설명한다. 제 1 레벨에서, 세그먼트 맵 파일들은, 프리젠테이션 시간의 지정된 인터벌(본 명세서에서는 세그먼트 맵 파일의 프리젠테이션 시간 스팬으로 지칭됨)을 대략적으로 커버하는 맵핑 정보를 각각의 세그먼트 맵 파일이 포함하도록 구성되고, 여기서, 지정된 프리젠테이션 시간 스팬은 각각의 세그먼트 맵 파일과 연관된 URL로 묵시적으로 또는 명시적으로 임베딩되고, 여기서, 세그먼트 맵 파일들과 연관된 프리젠테이션 시간 스팬들의 이용가능한 지정된 시퀀스는, 프리젠테이션 시간 스팬들을 생성하기 위한 간단한 규칙을 따름으로서 또는 묵시적으로 도출될 수 있는 정규의 패턴을 따른다. 예를 들어, ALS 시스템의 경우, 프리젠테이션 시간 스팬들 및 시작 프리젠테이션 시간 오프셋들은 표현들에 대한 세그먼트들의 ALS 시그널링된 지속기간들로부터 도출될 수도 있다. 예를 들어, ALS는 표현에 대해 세그먼트들의 지속기간들이 T초임을 시그널링하고, 그 다음, 세그먼트 맵들에 대한 시작 프리젠테이션 시간 오프셋들의 패턴은 0, T, 2*T, 3*T, 4*T, 5*T 등일 수도 있고, 각각의 세그먼트 맵에 의해 커버되는 대응하는 시간 스팬 지속기간들은 2*T초일 수도 있다.
MPEG DASH 시스템에서 이러한 방법들을 이용하기 위해, MPEG DASH 규격은, "MPD"로도 또한 공지된 미디어 프리젠테이션 디스크립션이 세그먼트 맵들에 대한 URL들을 URL 템플릿 구성 규칙을 통해 시그널링하도록 증강될 수도 있고, 여기서, URL 세그먼트 맵 구성 규칙은, 세그먼트 맵들에 대한 시작 프리젠테이션 시간 오프셋 패턴 및 시간 스팬 지속기간들을 포함하는 세그먼트 맵들에 대한 URL 패턴을 특정한다. 이러한 증강된 MPD에서 세그먼트 맵들에 대한 URL 패턴을 설명하는데 이용되는 URL 템플릿 구성 규칙은, MPEG DASH 규격에서 세그먼트 URL들의 패턴을 특정하기 위한 MPD URL 템플릿 구성 규칙과 유사할 수 있다. 이 경우, 세그먼트 맵들은, 세그먼트 파일들의 일부가 아닌 별개의 파일들일 수도 있고, 세그먼트들에 대한 URL 구성을 이용하여 묵시적으로 또는 명시적으로 MPD에서 세그먼트들에 대한 URL들을 시그널링하는 것 대신에, 세그먼트들에 대한 URL들은, 아래에서 더 상세히 설명되는 바와 같이, 세그먼트 맵들에서 반송될 수 있다.
제 2 레벨에서, 각각의 세그먼트 맵 파일은, 세그먼트 맵 파일과 연관된 URL로 임베딩되는 프리젠테이션 시간 스팬 내에서, 세그먼트 또는 세그먼트들의 부분들 또는 다수의 세그먼트들에 대한 상세한 맵핑 정보를 포함한다. 이 방식으로, 세그먼트 맵 파일들의 구조는, 연관된 세그먼트 파일들의 구조(이에 대해 세그먼트 맵 파일들이 맵핑 정보를 포함함)와는 독립적이 될 수 있다.
AHS 클라이언트를 포함하는 클라이언트는 다음과 같이 이러한 2 레벨 구조를 이용할 수 있다. 프리젠테이션 시간 PT가 주어지면, 클라이언트는, PT가 세그먼트 맵 파일의 프리젠테이션 시간 스팬 내에 있도록 세그먼트 맵 파일의 URL을 결정할 수 있고, 이 URL을 이용하여 세그먼트 맵 파일에 액세스할 수 있고, 그 다음, 세그먼트 맵 파일 내의 상세한 맵핑 정보를 이용하여, PT 직전 및 직후에 어느 세그먼트들이 프리젠테이션 시간을 갖는 미디어 데이터를 포함하는지 및 PT 직전 및 직후에 진입 포인트들 및 이탈 포인트들과 같은 관련 맵핑 정보를 결정할 수 있다. 클라이언트는 이 정보를 이용하여, 특정한 프리젠테이션 시간에 시작하는 컨텐츠를 플레이 아웃하기 위한, 또는 컨텐츠 내에서 특정한 프리젠테이션 시간에 대해 탐색하기 위한, 또는 컨텐츠의 하나의 표현으로부터 다른 표현으로 스위칭하기 위한, 또는 다양한 다른 용도들을 위한 요청들에 대한 응답으로, 로컬 저장부로부터 어느 세그먼트들에 액세스할지 및/또는 네트워크를 통해 어느 세그먼트들을 다운로드할지를 결정할 수 있다.
가능한 세그먼트 맵 URL 포맷은, "content_ID.representation_ID.SPT_X.Dur_Y.segment_map"이고, 여기서, "content_ID"는 컨텐츠를 식별하고, "representation_ID"는 컨텐츠의 표현을 식별하고, "SPT_X"는, 스팬의 시작 프리젠테이션 시간이 X임을 식별하고, "Dur_Y"는, 스팬의 종료 프리젠테이션 시간이 X+Y임을 식별한다. 세그먼트 파일 맵 내에 포함된 맵핑 정보의 실제 프리젠테이션 시간 스팬이 정확하게, 특정된 프리젠테이션 시간 스팬인 것이 요구되지는 않음을 주목하는데, 예를 들어, 세그먼트 맵 파일의 맵핑 정보가 X-d 내지 X+Y+e의 프리젠테이션 시간들을 커버하는 경우가 그러할 수도 있고, 여기서 d 및 e는 프리젠테이션 시간의 작은 양의(positive) 증분들이다. 대안적으로, d 또는 e는 양의 증분들 대신에 음의 증분들일 수 있다.
관련된 세그먼트 맵 파일들의 집합들(collections)이 단일 엔티티로서 이용가능해질 수 있는데, 예를 들어, 동일한 content_ID 및 representation_ID를 갖는 세그먼트 맵 파일들은 함께 집합될 수 있고, 예를 들어, 동일한 content_ID 및 representation_ID와 연관된 모든 세그먼트 맵 파일들이 단일 파일 내에 포함되면 "content_ID.representation_ID.segment_map.zip" 형태의 URL을 갖는, 또는 다른 예로서, 인터벌 X 내지 X+Y에서 프리젠테이션 시간 스팬들을 갖는 모든 세그먼트 맵 파일들이 단일 파일에 포함되면 "content_ID.representation_ID.SPT_X.Dur_Y.segment_map.zip" 형태의 URL을 갖는 단일 파일로서 제공될 수 있다. 주지된 "파일 지핑(zipping)" 프로세스와 같은 표준 프로세스들이 세그먼트 맵 파일들을 단일 파일들로 번들링(bundle)하는데 이용될 수 있다.
다른 가능한 세그먼트 맵 URL 포맷은 "content_ID.representation_ID.SPT_X.segment_map"인데, 즉, 시작 프리젠테이션 시간은 URL에 포함되지만 지속기간은 포함되지 않고, 이 경우, 지속기간은 각각의 세그먼트 맵에 대해 동일할 수 있거나 또는 상이한 세그먼트 맵들 사이에서 상이할 수 있다.
다른 대안적인 세그먼트 맵 URL 포맷들은, 시작 프리젠테이션 시간 또는 지속기간에 부가하여 또는 이를 대신하여, 종료 프리젠테이션 시간이 URL 내에서 시그널링되게 하는 것을 포함한다.
세그먼트 맵 파일들은 세그먼트들의 부분들 및 다수의 세그먼트들에 스패닝될 수 있고, 세그먼트 맵 파일들의 프리젠테이션 시간 스팬들은, 세그먼트들(이에 대한 정보를 세그먼트 맵 파일들이 제공함)의 프리젠테이션 시간 스팬들과는 독립적일 수 있다. 따라서, 세그먼트 맵 파일들은 세그먼트들 또는 세그먼트들의 부분들(이에 대한 맵핑 정보를 세그먼트 맵 파일들이 포함함)의 URL들을 명시적으로 또는 묵시적으로 포함할 수 있다. 더 일반적으로, 세그먼트 맵 파일들은 세그먼트의 일부를 참조하기 위해 URL 및 특정된 바이트 범위를 포함할 수 있다. 예를 들어, 프리젠테이션 시간 10초 내지 30초로부터의 프리젠테이션 시간 스팬을 갖는 세그먼트 맵 파일이 존재하고, 프리젠테이션 시간들 5 내지 15초를 스패닝하는 미디어 데이터를 포함하는 URL A_ID를 갖는 제 1 세그먼트가 존재하고 ―여기서, 10초에서 시작하는 미디어 데이터는 제 1 세그먼트로의 A_ID.BO의 바이트 오프셋을 가짐―, 프리젠테이션 시간들 15초 내지 20초를 스패닝하는 미디어 데이터를 포함하는 URL B_ID를 갖는 제 2 세그먼트, 및 프리젠테이션 시간들 20 내지 40초를 스패닝하는 미디어 데이터를 포함하는 URL C_ID를 갖는 제 3 세그먼트가 존재한다고 가정하고, 여기서 30초에서 종료하는 미디어 데이터는 제 3 세그먼트로의 C_ID.BO의 바이트 오프셋을 갖는다. 그 다음, 세그먼트 맵 파일은, 제 1 세그먼트에 대한 연관된 맵핑 정보 및 시작 바이트 오프셋 A_ID.BO와 함께 URL A_ID, 제 2 세그먼트에 대한 연관된 맵핑 정보 및 URL B_ID, 및 제 3 세그먼트에 대한 연관된 맵핑 정보 및 종료 바이트 오프셋 C_ID.BO와 함께 URL C_ID를 포함할 수 있다. 세그먼트 맵 파일은 또한 다른 정보, 예를 들어, 세그먼트들 각각의 사이즈들 및 세그먼트들 각각의 총 프리젠테이션 시간 스팬을 포함할 수 있다. 특정한 프리젠테이션 시간에 광고의 삽입의 표시, 세그먼트 맵 파일이 참조하는 세그먼트들 각각에서 미디어의 어떤 타입 및 포맷이 반송되는지의 표시 등과 같은 다른 정보가 또한 세그먼트 맵 파일에 포함될 수 있다.
예를 들어, 세그먼트 맵이 어느 세그먼트 파일들에 대한 정보를 포함하는지를 나타내기 위한 세그먼트 맵에 대한 가능한 방법은 다음과 같다.
세그먼트들의 세그먼트 맵 참조 방법
M을 세그먼트 맵에 의해 참조되는 세그먼트 파일들(부분적 또는 전체적)의 수라 한다. i = 1, ..., M에 대해, URL(i)를 프리젠테이션 시간들의 순서에서 리스트되는 세그먼트 맵에서 참조되는 i번째 세그먼트 파일의 URL이라 하고, BS(i) 및 BE(i)를 각각 바이트 범위(이에 대해 세그먼트 맵이 i번째 세그먼트 파일에 대한 정보를 포함함)의 시작 바이트 오프셋 및 종료 바이트 오프셋이라 한다. 그 다음, 이 세그먼트들을 참조하기 위한 세그먼트 맵 포맷은 표 5에서와 같은 수도 있다.
Figure pct00005
상기의 것은, i = 1, ..., M에 대해, URL(i)를 갖는 세그먼트들에 대한 바이트 범위들 BS(i) 내지 BE(i)의 연접인 "가상 세그먼트"를 정의한다. 이 "가상 세그먼트"에 대한 세그먼트 맵의 포인트들의 상세한 리스트는, 예를 들어, 제 4 세그먼트 맵 방법에서 설명된 포맷일 수 있는데, 여기서, 리스트된 포인트들에 대한 바이트 오프셋들은 이 가상 세그먼트에 대해 계산된다. 따라서, 예를 들어, 세그먼트 맵의 2개의 연속적인 포인트들 사이에서 가상 세그먼트 데이터의 부분들이 부분적으로는 하나의 세그먼트에 있고 부분적으로는 다른 세그먼트에 있는 것이 가능하다. BS(i) 및 BE(i) 중 하나 또는 둘 모두는, 예를 들어, 누락된 값의 표시자로서 -1을 이용하여, i의 값들 중 전부 또는 일부에 대한 범위로부터 생략될 수 있다. 예를 들어, [-1, BE(i)]는, 세그먼트의 시작부터 바이트 오프셋 BE(i)까지 URL(i)에 의해 참조되는 세그먼트를 나타내고, [BS(i), -1]는, 바이트 오프셋 BS(i)로부터 세그먼트의 종료까지 URL(i)에 의해 참조되는 세그먼트를 나타내고, [-1, -1]은 URL(i)에 의해 참조되는 전체 세그먼트를 나타낸다.
세그먼트 맵 파일들은, 고정되고 예측가능한 프리젠테이션 시간 스팬들에 대해 이용가능해질 수 있다. 예를 들어, 제로 모듈로(modulo) 10초와 동일한 각각의 가능한 시작 프리젠테이션 시간에 대해 세그먼트 맵 파일이 존재함을 나타내는 프리젠테이션 시간 스팬 규칙이 존재할 수도 있는데, 즉, 세그먼트 맵 파일들의 시작 프리젠테이션 시간들은 컨텐츠의 (종료가 존재한다면) 종료까지 0초, 10초, 20초, 30초, 40초, 50초 등이고, 각각의 세그먼트 맵 파일의 프리젠테이션 시간 스팬 지속기간은 20초이다. 이 경우, mouse_16543으로서 식별될 수 있는 컨텐츠에 대해, rep_38934로서 식별될 수 있는 그 컨텐츠에 대한 표현의 경우 세그먼트 맵 URL 시퀀스는, mouse_16543.rep_38934.SPT_0.DUR_20.seg_map, mouse_16543.rep_38934.SPT_10.DUR_20.seg_map, mouse_16543.rep_38934.SPT_30.DUR_20.seg_map, mouse_16543.rep_38934.SPT_40.DUR_20.seg_map, mouse_16543.rep_38934.SPT_50.DUR_20.seg_map, 등일 수도 있다. 이 예에서, 프리젠테이션 시간 스팬들에 대한 규칙이 주어지면, 세그먼트 맵 파일들의 URL들은 컨텐츠 식별자 mouse_16543 및 표현 식별자 rep_38934로부터 결정될 수 있고, seg_map은 파일을 세그먼트 맵으로서 식별한다.
다른 대안으로서, 세그먼트 맵 파일은 하나 초과의 표현에 대한 맵핑 정보를 포함할 수 있다. 예를 들어, 세그먼트 맵 파일은 컨텐츠의 모든 표현들에 대한 맵핑 정보를 포함할 수 있다. 이 경우, 대안적인 가능한 세그먼트 맵 URL 포맷은 "content_ID.SPT_X.Dur_Y.seg_map"이고, 여기서 "content_ID"는 컨텐츠를 식별하고, "SPT_X"는, 스팬의 시작 프리젠테이션 시간이 X인 것을 식별하고, "Dur_Y"는, 스팬의 종료 프리젠테이션 시간이 X+Y인 것을 식별하고, "seg_map"은 이를 세그먼트 맵으로 식별한다. 세그먼트 파일 맵 내에 포함된 맵핑 정보의 실제 프리젠테이션 시간 스팬이 정확하게, 특정된 프리젠테이션 시간 스팬인 것이 요구되지는 않음을 주목하는데, 예를 들어, 세그먼트 맵 파일의 각각의 표현에 대한 맵핑 정보가 X-d 내지 X+Y+e의 프리젠테이션 시간들을 커버하는 경우가 그러할 수도 있고, 여기서 d 및 e는 프리젠테이션 시간의 작은 양의 증분들이다. 이 경우, 세그먼트 맵 파일은 컨텐츠의 다수의 표현들에 대한 세그먼트들, 세그먼트들의 부분들, 또는 다수의 세그먼트들을 참조할 수 있다.
상기 실시예들에서, 세그먼트 맵 파일 URL은 컨텐츠 및 표현에 대한 몇몇 기본 URL로부터 유도될 수 있고, 세그먼트 맵 파일 내의 맵 정보는 프리젠테이션 시간의 특정한 고정된(대략적으로, 라운드-오프(round-off)가 허용됨) 지속기간, 예를 들어, 프리젠테이션 시간의 시작 초 및 종료 초, 또는 프리젠테이션 시간의 시작 초 및 지속기간 초, 또는 프리젠테이션 시간의 시작 "틱들" 및 지속기간 "틱들"로 표현되는 프리젠테이션 시간 스팬을 커버할 수 있다. "틱들"의 단위들은 때때로 프리젠테이션 시간들을 표현하기 위해 이용되는데, 여기서, "초당 틱들"은 표현과 연관된 시간의 단위이다. 각각의 표현에 대한 "틱 단위"는, 세그먼트 맵 파일들에 포함될 수 있는 다른 정보의 예이다. 예를 들어, 초당 30,000 틱들은, 각각의 틱이 1초의 1/30,000 부분임을 나타낸다. 상기 경우 각각에서, 프리젠테이션 시간 스팬은, 프리젠테이션의 시작 이후 시간의 또는 몇몇 다른 고정된 기준 시간까지의 누적적 측정을 이용하여 표시됨을 주목한다.
세그먼트 타임라인 파일들을 이용하는 방법들
이 섹션에서 설명되는 방법들은 이전의 방법들을 기반으로 하지만, MPEG DASH 규격들을 덜 변경하는 전체 구조를 제공하고, 전반적으로 선호되는 솔루션들을 제공할 수 있다.
이하, "세그먼트 타임라인" 파일로 지칭되고, 앞서 설명된 세그먼트 맵들의 특징들 중 일부를 갖는 새로운 타입의 파일이 도입될 수 있다. 세그먼트 타임라인 파일의 URL은, 세그먼트 맵들에 대해 앞서 설명된 것과 유사하게 프리젠테이션 시간 지속기간들에 기초한 URL 구성 규칙들을 이용하여 생성될 수 있는데, 예를 들어, 가능한 포맷은 "content_ID.representation_ID.Dur_X.EPT_Y.segment_timeline"이고, 여기서 "content_ID" 및 "representation_ID"는 컨텐츠 및 컨텐츠의 표현을 식별하고, "X"는 세그먼트 타임라인에 의해 커버되는 프리젠테이션 시간 스팬의 대략적인 지속기간이고, "Y"는 프리젠테이션 시간 스팬의 대략적인 종료 프리젠테이션 시간이고, "segment_timeline"은 파일을 세그먼트 타임라인 파일로서 식별한다. 세그먼트 타임라인 파일들의 존재, 및 세그먼트 타임라인 파일들의 URL 구성 규칙들은 MPD 내에서 시그널링될 수 있는데, 예를 들어, 구성 규칙들은, 컨텐츠 지속기간까지 10초의 배수들인 Y의 모든 값들에 대한 파일이 존재하는 것, 및 X = 30인 것을 특정할 수도 있고, 여기서 X 및 Y의 값들은 초 단위들이다.
세그먼트들 및 세그먼트들에 대한 세그먼트 맵들의 MPEG DASH 포맷들은 ISO 파일 포맷인 세그먼트들에 대해 이용될 수 있는데, 즉, 세그먼트 맵 (Sidx)가 세그먼트에 부착되고, 그 세그먼트에서 반송되는 데이터의 프리젠테이션 시간 지속기간을 커버한다. MPEG2 TS 파일 포맷의 경우, 세그먼트 맵 (Sidx)는, MPEG DASH 규격에서 설명된 포맷인 세그먼트와는 별개의 파일에 있고, 여기서, 세그먼트 URL로부터 유도되는 URL을 갖는 세그먼트당 하나의 세그먼트 맵이 존재한다. 세그먼트들 및 세그먼트 맵들(이들이 상이한 파일들에 존재하는 경우)에 대한 URL들은 MPEG DASH 규격에서의 기존의 URL 구성 규칙들을 이용하여 시그널링되는 것이 추천될 것이고, 여기서 연속적인 세그먼트들(또는 개별적인 파일들로 반송되는 경우, 세그먼트 맵들)은 순차적으로 인덱싱되는 URL들을 갖도록 추천되는데, 즉, 세그먼트들에 대한 URL들은 "content_ID.representation_ID.Index_X.segment"와 유사한 패턴을 따를 수 있고, 여기서 X에 대한 값들의 시퀀스는, 예를 들어, 0, 1, 2, 3, 4 등, 즉, 프리젠테이션 시간에서 순차적인 세그먼트들에 대해 연속적인 정수들이다. 따라서, 세그먼트들에 대한 URL들은 프리젠테이션 시간에서 자신들의 세그먼트들의 시퀀스를 나타내지만, 이 시퀀스에서 상이한 세그먼트들의 지속기간들은 표현 내에서 상이할 수 있고, 또한 상이한 지속기간들일 수 있고 표현들 사이에서 상이할 수 있다. 따라서, 세그먼트 맵 URL들에 할당된 인덱스들은 자신들의 프리젠테이션 시간 스팬 순서에 대해 순차적일 수 있지만, 세그먼트 맵 URL들에 할당된 인덱스들은 자신들의 프리젠테이션 시간 스팬 지속기간들에 의존하지 않는다. 대안으로, URL들은 ALS 시스템에 대한 기존의 ALS에서와 같이 시그널링될 수 있고, 그 다음, 대응하는 세그먼트 맵들에 대한 URL들은, 이들이 연관된 세그먼트의 URL로부터 간단한 규칙에 의해 유도될 수 있는데, 예를 들어, 세그먼트 맵에 대한 URL은, ".seg_map"이 첨부된 연관된 세그먼트에 대한 URL일 수도 있다.
세그먼트 타임라인 파일과 관련된 세그먼트들의 세트는, 세그먼트 타임라인 파일에 의해 커버되는 프리젠테이션 스팬과 상호작용하는 프리젠테이션 시간 스팬을 커버하는 세그먼트들의 세트로 정의된다. 예를 들어, 세그먼트 타임라인 파일에 대한 URL이 "content_ID.representation_ID.Dur_15.EPT_60.segment_timeline"이면, 이것은, 프리젠테이션 시간 45에서 시작하고 프리젠테이션 시간 60에서 종료하는 15초의 프리젠테이션 시간 스팬 지속기간을 커버하고, 따라서, 45 내지 60초의 인터벌 내에 시작 프리젠테이션 시간 또는 종료 프리젠테이션 시간을 갖는 모든 세그먼트들은 세그먼트 타임라인 파일과 관련되는 것으로 지칭된다. 세그먼트 타임라인 파일과 관련된 세그먼트 맵들의 유사한 정의가 행해질 수 있고, 이 정의는, 프리젠테이션 시간 서브-범위 및 바이트 서브-범위에 의해 정의되는 세그먼트들 또는 세그먼트 맵들의 부분들을 포함하도록 확장될 수 있다.
세그먼트 타임라인 파일은, 세그먼트 타임라인 파일과 관련된 세그먼트들(및 개별적 파일들로 반송되는 경우 세그먼트 맵들)의 시작 프리젠테이션 시간 및 URL들의 리스트를 포함할 수 있다. 대안적으로, 세그먼트 타임라인 파일은 정보(이 정보로부터 세그먼트 URL들이 구성될 수 있음), 예를 들어, 세그먼트들에 대한 인덱스들의 범위를 포함할 수 있고, 여기서, 예를 들어, 인덱스들은, MPD에서 세그먼트들에 대한 URL 세그먼트 구성 규칙에 의해 묵시적으로 정의되는 것들로부터 기인한다.
MPD는 또한, 최대 세그먼트 프리젠테이션 시간 스팬 TSmax를 특정할 수 있고, 또한 Timescale을 특정할 수 있고, 여기서 Timescale은, 세그먼트 타임라인들의 URL들에서 프리젠테이션 시간들을 표현하는데 이용될 수 있다. 최대 세그먼트 프리젠테이션 시간 스팬 TSmax는, 임의의 세그먼트의 시작 프리젠테이션 시간과 그 세그먼트 이전의 세그먼트의 시작 프리젠테이션 시간 사이의 차가 기껏해야 TSmax가 되도록 정의될 수 있다. 예를 들어, TSmax = 2초이면, 세그먼트 i의 시작 프리젠테이션 시간과 프리젠테이션 시간의 순서에서 세그먼트 i 직전의 세그먼트 i-1의 시작 프리젠테이션 시간 사이의 차는 기껏해야 2초이다.
대안들로서, 세그먼트 타임라인 파일들은 또한 세그먼트 맵들, 또는 세그먼트들의 프리젠테이션 종료 시간들 또는 다른 관련 정보를 포함할 수 있다.
세그먼트 타임라인 파일들 표시들이 또한 ALS 시스템에 의해 이용될 수 있고, 여기서, 프리젠테이션 시간 스팬들(이들로부터 이들의 URL들이 유도됨)은, 예를 들어, 고정된 지속기간들을 갖는 고정된 종료 프리젠테이션 시간들에 있는데, 예를 들어, 각각 10초의 종료 프리젠테이션 시간 및 전부는 20초의 지속기간을 갖거나, 또는 종료 프리젠테이션 시간 및 지속기간은 고정된 규칙을 이용하는 ALS 메타데이터에 의해 광고되는 세그먼트들의 지속기간들로부터 유도될 수 있어서, 예를 들어, 세그먼트들의 광고된 지속기간이 T초이면, 세그먼트 타임라인 파일들은 각각 T초에서 종료될 수 있고, 각각 2*T의 지속기간을 갖는다.
세그먼트 맵 파일들 및 세그먼트 타임라인 파일들을 이용하기 위한 클라이언트 방법들
세그먼트 맵 파일들의 하나의 이점은, 이들이 없다면, 클라이언트들이 세그먼트 맵 구조, 예를 들어, 세그먼트들의 진입 포인트들 및 이탈 포인트들을 효과적으로 결정할 수 없다는 점인데, 이는, 이러한 정보가 세그먼트들 자체에서 직접 제공되지는 않기 때문이다. 이러한 세그먼트 맵 정보는 가능하게는 세그먼트들로부터 유도될 수 있지만, 통상적으로 세그먼트들은, 이러한 정보를 유도하기 위해 클라이언트에 의해 다운로드될 필요가 있고, 이것은 효과적이지 않을 수 있는데, 이는, 미디어 데이터의 구조를 결정하기 위해 미디어 데이터 자체가 다운로드될 필요가 있기 때문이고, 세그먼트 맵 정보를 결정하는 주요 목적들 중 하나는 세그먼트들의 어느 부분들이 다운로드될지를 결정하는 것이다. 게다가, 세그먼트 맵 정보가 유도될 수 있는 경우의 클라이언트 아키텍쳐는 통상적으로 클라이언트의 표현 선택 방법들 부분과 분리되는데, 즉, 세그먼트 맵 정보가 클라이언트에 의해 유도될 수 있는 위치는, 미디어가 플레이 아웃되는 위치와 근접하게 클라이언트의 미디어 프로세싱 부분에서 깊이 존재하는 반면, 클라이언트의 클라이언트 표현 선택 부분들은, 미디어가 네트워크를 통해 클라이언트에 진입하는 위치 근처에 있고, 통상적으로 클라이언트의 2개의 부분들 사이에는 양호하지 않은 인터페이스들이 존재한다. 또한, 세그먼트들은 암호화될 수 있어서 문제들을 더욱 악화시키는데, 이는, 맵 정보가 유도될 수 있기 전에 세그먼트들이 암호해독되어야 할 필요가 있기 때문이고, 이것은 통상적으로, 표현 선택 로직과 통신하지 않는 클라이언트의 고립된 부분에서 아래에 있다.
게다가, 세그먼트 파일이 미디어 데이터를 포함하는 프리젠테이션 시간의 지속기간은 정확하게 시그널링되지 않을 수 있는데, 예를 들어, ALS에서 각각의 세그먼트가 10초의 지속기간으로 시그널링되면, 가장 가까운 초로의 라운딩(rounding) 때문에 세그먼트는 실제로는 9.5초 내지 10.5초 사이의 어디에든 존재할 수 있다. ALS/HLS 표준의 경우, 오직 세그먼트 지속기간들만이 시그널링되고, 누적적 프리젠테이션 시간들은 시그널링되지 않기 때문에, 클라이언트는, 100초까지의, 즉, 200개의 세그먼트들에 걸친 누적적 추정 에러의 200*0.5초까지의 에러를 갖는 200번째 연속적 세그먼트에 대한 세그먼트 시작 프리젠테이션 시간의 추정을 행할 수도 있다. 게다가, 컨텐츠 인코딩 및 세그먼트 파일들로의 세그먼트화는 때때로, 각각의 표현에 대한 상이한 지속기간들과는 독립적으로 각각의 ALS 표현에 대해 수행된다. 상이한 표현들의 세그먼트들의 지속기간들은 ALS에서 상이할 수 있기 때문에, 이것은 특히, 시간의 긴 지속기간 동안 하나의 표현에 머문 이후 하나의 표현으로부터 다른 표현으로 스위칭하려 시도하는 경우 문제가 되는데, 이는, 스위칭하려는 표현에서 정확한 프리젠테이션 시간을 갖는 세그먼트를 결정하는 것이 어렵기 때문이고, 정확한 세그먼트를 결정하는 것은, 몇몇 실험적(trial) 세그먼트들을 다운로드하고 이들의 프리젠테이션 시간을 결정하기 위해 이들을 면밀하게 검사해야 하는 것을 수반할 수도 있다. 이러한 문제들은, 플레이 아웃되지 않는 데이터를 다운로드하는 측면, 어느 세그먼트가 미디어의 플레이 아웃되어야 하는 다음 부분을 포함하는지를 결정하기 위해, 세그먼트들을 다운로드하면서 미디어 버퍼 내의 플레이가능한 미디어가 완전히 드레이닝(draining)되는 것에 기인한 스터터링(stuttering) 또는 리버퍼링 또는 중지와 같은 사용자 경험 문제들을 초래하는 측면, 및 진입 포인트들 및 이탈 포인트들에 대한 정보를 갖지 않는 것에 기인하여 하나의 표현으로부터 다른 표현으로의 끊김없는 스위칭들을 제공하지 않는 측면 등에서 큰 비효율들을 초래할 수 있음을 이 분야의 당업자는 인식할 것이다. 이러한 문제들 및 관련 문제들 중 적어도 일부는, 표현들 사이에서 스위칭하려 시도하지 않는 클라이언트들에 대해서도 발생할 수 있다.
앞서 설명된 실시예들에 있어서, 클라이언트는 묵시적인 URL 구성 및 액세스 규칙들을 이용하여 세그먼트 맵들에 액세스할 수 있는데, 예를 들어, 클라이언트는 컨텐츠에 대해 획득된 메타데이터로부터 "content_ID" 및 "representation_ID"를 생성하고, 그 다음, 어느 것이 세그먼트 맵들에 대해 가능한 시작 프리젠테이션 시간 인터벌들인지에 대해 프리젠테이션 스팬 규칙들에 액세스하는데, 예를 들어, 이들은 패턴 0, 10, 20, 30, 40, ..., 및 세그먼트 맵들에 대한 가능한 지속기간 인터벌들을 따르며, 예를 들어, 이들은 항상 20이다. 이로부터, 클라이언트는 세그먼트 맵에 대한 URL을 형성할 수 있고, 세그먼트 맵을 요청할 수 있고, 이에 따라, 본 명세서에서 설명되는 스위칭 방법들 및 빠른 시작 방법들 및 관련 방법들을 구현할 경우, 어느 세그먼트들을 다운로드할지 및 세그먼트들의 어느 부분들을 다운로드할지를 결정하는데 이용될 수 있는 맵핑 정보를 획득할 수 있다. 세그먼트 맵 프리젠테이션 시간 스팬들이 유사하면, 클라이언트는 상이한 표현들에 대한 세그먼트 맵 파일들의 동일한 프리젠테이션 시간 스팬을 요청하여, 특정한 시간 스팬 지속기간 동안 하나의 표현으로부터 다른 표현으로 어떻게 스위칭할지를 결정할 수 있다. 그러나, 세그먼트 맵 파일들의 프리젠테이션 시간 스팬들이 상이한 표현들에 대해 상이한 경우에도, 본질적으로 동일한 이점들이 제공된다. 대안적으로, 세그먼트 맵 파일들이 하나보다 많은 표현에 대한 정보를 포함하면, 클라이언트는, 동일한 세그먼트 맵 파일로부터의 모든 표현들에 대해 동일한 프리젠테이션 시간 스팬 맵핑 및 관련 정보에 액세스할 수 있다. 또한, 세그먼트 맵 프리젠테이션 시간 스팬들은, 예를 들어, 상기 예에서 중첩될 수도 있어서, 클라이언트는 경계 조건을 맞추지(hit) 못하는데, 예를 들어, 프리젠테이션 시간에서 약 20초에서 스위칭이 발생해야 한다고 클라이언트가 결정하면, 그리고 세그먼트 맵 파일 시간 스팬들이 0-10초, 및 그 다음 10-20초, 및 그 다음 20-30초 등이었다면, 클라이언트는, 10-20초를 스패닝하는 세그먼트 맵 파일들 및 또한 20-30초를 스패닝하는 세그먼트 맵 파일들을 다운로드해야 할 수도 있다. 한편, 각각의 10초에서 시작하지만 각각 20초에 스패닝하는 세그먼트 맵 파일들이 또한 존재했다면, 클라이언트는, 예를 들어, 10-30초에 스패닝하는 세그먼트 맵 파일을 다운로드할 수 있고, 이 예에서는, 비중첩 시간 스팬들을 갖는 경우보다 중첩 시간 스팬들에 대해 2배만큼 많은 세그먼트 맵 파일들을 갖는 것을 댓가로, 세그먼트 맵 파일이 20초의 타겟 프리젠테이션 시간 이전 및 이후 모두에서 맵핑 정보를 포함하는 것을 보장한다. 일반적으로, 맵핑 정보는 미디어 컨텐츠 데이터 자체에 비해 일반적으로 작기 때문에, 중첩 프리젠테이션 시간 스팬들을 갖는 것이 종종 바람직하다. 게다가, 중첩은 훨씬 더 작을 수 있는데, 예를 들어, 연속적인 세그먼트 맵 파일들은, 10초 인터벌들에서 시작하는 지속기간을 커버하고, 각각의 스팬은 11초이고, 이 경우, 연속적인 세그먼트 맵들 사이의 중첩은 1초이다.
이 실시예들은, 기존의 ALS 클라이언트들이 악영향들없이 변형되지 않고 동작할 수 있는 그러한 방식으로 기존의 ALS 컨텐츠 생성을 향상시키는데 이용될 수 있다. 앞서 설명된 바와 같이 구현된 추가적인 프로세스들은, 앞서 설명된 바와 같이 연관된 URL들을 갖는 세그먼트 맵 파일들을 생성하도록 ALS 시스템에 추가될 수 있고, 예를 들어, HTTP 1.1을 이용하여 이 세그먼트 맵 파일들의 URL에 기초하여 액세스하는 컨텐츠 전달 네트워크에서 이러한 세그먼트 맵 파일들이 이용가능해지게 한다. 본 명세서에서 설명된 방법들 및 프로세스들에 의한 향상된 클라이언트들은, 표현들의 세그먼트 맵 파일들에 대한 적절한 URL들을 형성할 수 있고, 적절한 세그먼트 맵 파일들을 요청할 수 있고, 이들의 세그먼트 맵 파일들을 이용하여, 더 양호한 사용자 경험을 제공하기 위한 표현들의 시작 및 스위칭 선택 방법들을 안내할 수 있다. 이러한 향상된 클라이언트 방법들은, 간단한 방식들로 맵핑 정보를 이용할 수 있는데, 예를 들어, 클라이언트들은 바이트 범위 요청들없이 HTTP에 기초하여 전체 세그먼트 파일들을 여전히 다운로드할 수 있지만, 적어도, 스위칭을 위한 적절한 진입 및 이탈 포인트들을 갖고 스위칭을 위한 정확한 프리젠테이션 시간들을 갖는 다운로드할 정확한 세그먼트들을 세그먼트 맵 파일들로부터 정확하게 결정할 수 있다. HTTP 바이트 범위 요청들이 지원되면, 더 진보된 클라이언트들은 세그먼트 맵 파일들에 포함된 맵핑 정보를 더 효율적으로 이용할 수 있어서, 예를 들어, 표현들 사이에서 스위칭하는 경우 또는 컨텐츠 내의 특정된 프리젠테이션 시간에 시작하는 경우 ALS 세그먼트들의 어느 부분들을 다운로드할지를 정확하게 선택함으로서, 표현 스위칭 및 빠른 시작을 가능하게 한다.
향상된 AHS 클라이언트는, 주어진 컨텐츠에 대해 이러한 세그먼트 맵들이 이용가능하다는 어떠한 명시적 시그널링도 없이 세그먼트 맵 파일들을 다운로드하려 시도할 수 있다. 세그먼트 맵들이 이용가능하지 않은 컨텐츠의 경우, 클라이언트 다운로드 요청은 실패할 것이어서, 예를 들어, HTTP 응답은, 예를 들어, "HTTP error 404 - file not found" 응답으로 리턴할 것이고, 이 경우, 향상된 AHS 클라이언트는, 이 컨텐츠에 대해 세그먼트 맵들이 이용가능하지 않다고 도출할 수 있고, 향상되지 않은 AHS 클라이언트 동작으로 되돌아갈 수 있다.
본 명세서에서 설명되는 시스템들 및 방법들의 향상은, 각각의 특정한 컨텐츠에 대해 세그먼트 맵들이 이용가능하든 이용가능하지 않든, 예를 들어, MPEG DASH MPD 메타데이터 파일에서 각각의 컨텐츠에 대해 명시적으로 나타내는 것이다. 이 경우, 향상된 AHS 클라이언트들은 이를 이용하여, 세그먼트 맵들이 이용가능한지 여부를 결정할 수 있고, 따라서, 예를 들어, 세그먼트 맵들이 이용가능하지 않은 경우 세그먼트 맵들에 대한 HTTP 요청들을 행하고 "file not found" 응답을 역으로 수신하는 과도한 오버헤드를 회피할 수 있다. 이 경우, 향상된 AHS 클라이언트는, 세그먼트 맵들이 이용가능하지 않으면, 향상되지 않은 ALS 클라이언트 방법들 및 로직을 즉시 이용할 수 있다. 게다가, 세그먼트 맵들이 이용가능한 것으로 표시되지만, 어떠한 이유때문에 (예를 들어, 전체 컨텐츠 전달 네트워크의 일부들에서의 몇몇 실패들에 기인하여) 이들 전부가 이용가능하지는 않은 경우, 향상된 클라이언트 AHS 클라이언트 방법들은, 몇몇 요청들에 대해 "file not found" 응답이 되돌아오면, 즉, 다른 표현들 및 지속기간들에 대한 다른 세그먼트 맵들은 여전히 이용가능할 수 있으면, 무엇을 행해야 할지를 안다는 측면에서 더 견고할 수 있고, 향상된 AHS 클라이언트는, 몇몇 세그먼트 맵들이 이용가능하지 않은 경우에도, 이용가능할 수 있는 세그먼트 맵들에 대해 여전히 계속 요청할 수 있다.
다른 가능한 향상은, 기본 프레임 의존 구조 및 파일 포맷 순서와 더 양호하게 정렬하도록, 즉, 잘 선택된 진입 포인트들에서 세그먼트들을 시작하고 잘 선택된 이탈 포인트들에서 세그먼트들을 종료하는 식이 되도록 세그먼트 구조를 생성하는 것이다. 예를 들어, 세그먼트들은, 이들이 하나의 메이저 진입 포인트로부터 다음의 연속적인 메이저 진입 포인트까지 스팬하도록 구성될 수도 있다. 세그먼트 맵 파일들은, 세그먼트 파일들의 시간 스팬들과는 독립적인 시간 스팬들의 정규의 패턴을 여전히 가질 수 있다. 이것은, 향상된 AHS 클라이언트들이 세그먼트들을 다운로드하는 간단한 알고리즘을 제공하며, 이것은, HTTP 1.1 바이트 범위 요청들의 이용을 대부분 또는 모두 함께 회피하지만, 진입 포인트들에서 시작하고 이탈 포인트들에서 종료하는 부분들에서 표현들로부터의 컨텐츠를 다운로드할 수 있는 이점들을 여전히 향유할 수 있다. 이것은, HTTP 바이트 범위 요청들이 보편적으로 지원되지는 않을 수 있기 때문에, 이점이 될 수 있다.
세그먼트 맵들은 또한 다른 관련 정보를 포함할 수 있다. 예를 들어, 세그먼트 맵은, 특정한 표현들이 오직 오디오인지, 또는 오디오와 비디오의 혼합인지, 또는 오직 비디오인지를 나타낼 수 있다. 다른 예로서, 세그먼트 맵들은 FEC 복구 세그먼트들에 대한 URL들, 및 FEC 복구 세그먼트들에 대한 세그먼트 맵핑 정보, 예를 들어, Luby A4에서 개시된 포맷 또는 유사한 대안적 포맷의 세그먼트 맵핑 정보를 포함할 수 있다. 세그먼트 파일들에 관하여, 세그먼트 맵들은, 세그먼트 맵 파일 구조와는 독립적인 구조로, 다수의 또는 부분적인 FEC 복구 세그먼트들에 대한 URL들 및/또는 연관 맵핑 정보를 포함할 수 있고, AHS 클라이언트는 세그먼트 맵들의 URL에 기초하여 이 세그먼트 맵들에 액세스할 수 있고, 그 다음, 어느 FEC 복구 세그먼트들에 액세스할지를 결정하기 위해, 그리고 FEC 복구 세그먼트들의 구조를 결정하기 위해, 세그먼트 맵들에 포함된 정보를 이용할 수 있다.
세그먼트 타임라인 파일들을 이용하여 앞서 설명된 시스템의 경우, AHS 클라이언트는 다음과 같이 동작할 수도 있다. MPD로부터, AHS 클라이언트는, 세그먼트 타임라인 파일들의 프리젠테이션 시간 스팬들을 또한 나타내는 세그먼트 타임라인 파일들에 대한 URL들의 리스트를 구성할 수 있다. AHS 클라이언트는 또한, URL 구성 규칙으로부터 또는 이전에 설명된 다른 수단들로부터 세그먼트들에 대한 URL들의 리스트를 구성할 수 있다. AHS 클라이언트는, 현재의 실시간, 및 시청되고 있는 컨텐츠의 프리젠테이션 시간 라인과 현재의 실시간과의 관계에 기초하여, 세그먼트 타임라인 파일이 언제 이용가능한지 및 세그먼트 타임라인 파일을 언제 다운로드할지를 결정할 수 있다. 세그먼트 타임라인 파일로부터, AHS 클라이언트는, 관련 세그먼트 데이터 및 세그먼트 맵핑 정보를 포함하는, 어느 세그먼트 및 세그먼트 맵을 다운로드할지를 결정할 수 있다. 세그먼트 타임라인 파일에 리스트된 마지막 세그먼트의 경우, AHS 클라이언트는, 세그먼트 타임라인 파일에 리스트된 그 세그먼트의 시작 프리젠테이션 시간으로부터 및 임의의 세그먼트의 가장 긴 프리젠테이션 시간 스팬의 값 TSmax로부터, 그 세그먼트가 다운로드를 위해 이용가능할 때를 결정할 수 있다. 따라서, 컨텐츠가 다운로드되어 AHS 클라이언트에 의해 시청될 때까지 컨텐츠가 이용가능한 전체 종단간(end-to-end) 지연은 세그먼트 타임라인 파일들의 추가에 의해 영향받지 않는 반면, 세그먼트 타임라인 파일들은, 하나의 표현으로부터 다른 표현으로 스위칭할 때 또는 컨텐츠의 중간에 있는 프리젠테이션 시간으로부터 컨텐츠를 시작할 때 어느 세그먼트 및 세그먼트 맵들을 다운로드할지에 대해 AHS 클라이언트에 중요한 힌트들을 제공한다. 따라서, AHS 클라이언트들의 성능을 더 양호하게 하기 위해 세그먼트 타임라인 파일들을 제공하는데에는 많은 이점들이 존재한다.
도 15는, DASH 시스템에서 시그널링 세그먼트 타임라인 파일들의 일례를 도시한다. 도 15의 좌측은, 컨텐츠에 대해 이용가능해질 수도 있는 미디어 프리젠테이션 디스크립션(MPD)의 몇몇 관련 부분들을 도시하고, 이 예에서는 MPD에서 설명된 2개의 표현들, 즉, 대략 500 Kbps에서 그리고 640x480의 해상도로 인코딩된 비디오가 이용가능한 제 1 표현, 및 대략 250 Kbps에서 인코딩되고 또한 640x480의 해상도인 비디오가 이용가능한 제 2 표현이 존재하고, 둘 모두는, 컨텐츠로 100초에서 시작하는 기간 내에서 이용가능하다. 이 예의 컨텐츠 모두에 대한 baseURL은 http://www.example.com/이다.
도 15에 도시된 예와 같이, 제 1 표현에 대한 세그먼트 타임라인 파일들에 대한 타임스케일은 초당 1틱이고, 이 세그먼트 타임라인 파일들에 대한 URL 템플릿 패턴은 ./ahs-5-DUR4.EPT$2*Tind$.time이고, 여기서, 그 다음, 전체 URL은 baseURL과, 이 템플릿에 의해 정의되는 URL 부분의 연접이다. 여기서, DUR4는, 세그먼트 타임라인에 의해 커버되는 프리젠테이션 시간의 스팬이 4개의 틱들인 것, 또는 타임스케일 = 1이기 때문에, 동등하게 4초인 것을 나타내고, EPT$2*Tind$는, 스팬의 종료 프리젠테이션 시간이 2*Tind 틱들인 것, 또는 타임스케일 = 1이기 때문에, 동등하게 2*Tind초인 것을 나타내고, 여기서 Tind는 세그먼트 타임라인 파일의 인덱스를 나타낸다. 따라서, (Tind = 1인) 제 1 세그먼트 타임라인 파일에 대한 전체 URL은 http://www.example.com/ahs-5-DUR4.EPT2.time이고, (Tind = 2인) 제 1 세그먼트 타임라인 파일에 대한 전체 URL은 http://www.example.com/ahs-5-DUR4.EPT4.time인 식이다. 이것은, 모든 세그먼트 타임라인 파일들이 4초의 스팬을 커버하는 것, 및 제 1 세그먼트 타임라인 파일의 스팬이 프리젠테이션 시간 2초에서 종료하는 것(및 그에 따라 스팬의 처음 2초는 실제로는 존재하지 않는 것), 및 제 2 세그먼트 타임라인의 스팬은 프리젠테이션 시간 4초에서 종료하는 것 등을 나타낸다.
도 15에 도시된 바와 같이, 제 1 표현의 세그먼트 파일들에 대한 타임라인은 초당 30,000 틱들이고, 이 세그먼트 파일들에 대한 URL 템플릿 패턴은 ./ahs-5-$Sind$.3gs이고, 여기서 전체 URL은 baseURL과, 이 템플릿에 의해 정의되는 URL 부분의 연접이다. 여기서, Sind는 세그먼트 파일의 인덱스를 나타낸다. 따라서, (Sind = 1인) 제 1 세그먼트 파일에 대한 전체 URL은 http://www.example.com/ahs-5-1.3gs이고, (Sind = 2인) 제 2 세그먼트 파일에 대한 전체 URL은 http://www.example.com/ahs-5-2.3gs인 식이다.
도 15의 중간에 도시된 세그먼트 타임라인 파일들은, 세그먼트 타임라인 파일에 의해 커버되는 프리젠테이션 시간 스팬 내에서 시작 프리젠테이션 시간을 갖는 세그먼트 파일들 각각에 대한 Sind를 반송하고, 또한, 그 세그먼트 파일에서 반송되는 미디어의 대응하는 SPT(시작 프리젠테이션 시간)를 반송하며, 여기서 SPT는 세그먼트 타임스케일의 틱들의 단위들, 즉, 초당 30,000 틱들이다. 예를 들어, Sind = 5 및 SPT = 79,079인 제 5 세그먼트에 대한 정보는 제 2 세그먼트 타임라인 파일(Tind = 2) 및 제 3 세그먼트 타임라인 파일(Tind = 3) 모두에서 반송되는데, 이는, 79,079개의 틱들의 SPT가 79,079/30,000초에 대응하거나, 대략 2.64초가 제 2 및 제 3 세그먼트 타임라인 파일들 둘 모두의 시간 스팬 내에 있기 때문이다. 몇몇 실시예들에서, 예를 들어, 세그먼트들에 대한 세그먼트 맵들과 같은 다른 데이터가 또한 세그먼트 타임라인 파일들에서 반송된다.
도 15의 우측에 도시된 세그먼트 파일들은, 도시된 SPT에서 시작하는 미디어 데이터를 반송하고, 이 세그먼트 파일들 각각에 대한 URL이 도시된다. 세그먼트 파일들에서 반송되는 데이터의 벌크(bulk), 예를 들어, 미디어 데이터 자체, 및 가능하게는 세그먼트와 연관된 세그먼트 맵 등은 도 15에 표시되지 않는다.
도 15의 좌측에 도시된 MPD는 또한 제 2 표현과 연관된 세그먼트 파일 정보 및 세그먼트 타임라인 파일을 도시한다. 이 제 2 표현에 대해 대응하는 세그먼트 타임라인 파일들 및 세그먼트 파일들은 도 15에 도시되지 않는다. 도 15에 도시된 바와 같이, 제 2 표현에 대한 세그먼트 타임라인 파일들에 대한 타임스케일은 초당 1 틱이고, 이 세그먼트 타임라인 파일들에 대한 URL 템플릿 패턴은 ./ahs-2-DUR7.EPT$3*Tind$.time이고, 그 다음, 여기서, 전체 URL은 baseURL과, 이 템플릿에 의해 정의되는 URL 부분의 연접이다. 여기서, DUR7은, 세그먼트 타임라인에 의해 커버되는 프리젠테이션 시간의 스팬이 7개의 틱들인 것, 또는 타임스케일 = 1이기 때문에 동등하게 7초인 것을 나타내고, EPT$3*Tind$는, 스팬의 종료 프리젠테이션 시간이 3*Tind 틱들인 것, 또는 타임스케일 = 1이기 때문에 동등하게 3*Tind초인 것을 나타내고, 여기서 Tind는 세그먼트 타임라인 파일의 인덱스를 나타낸다. 따라서, (Tind = 1인) 제 1 세그먼트 타임라인 파일에 대한 전체 URL은 http://www.example.com/ahs-2-DUR7.EPT3.time이고, (Tind = 2인) 제 1 세그먼트 타임라인 파일에 대한 전체 URL은 http://www.example.com/ahs-2-DUR7.EPT6.time인 식이다. 이것은, 모든 세그먼트 타임라인 파일들이 7초의 스팬을 커버하는 것, 및 제 1 세그먼트 타임라인 파일의 스팬이 프리젠테이션 시간 3초에서 종료하는 것(및 그에 따라 스팬의 처음 4초는 실제로는 존재하지 않는 것), 및 제 2 세그먼트 타임라인의 스팬은 프리젠테이션 시간 6초에서 종료하는 것 등을 나타낸다. 도 15에 도시된 바와 같이, 제 2 표현의 세그먼트 파일들에 대한 타임스케일은 초당 30,000 틱들이고, 이 세그먼트 파일들에 대한 URL 템플릿 패턴은 ./ahs-2-$Sind$.3gs이고, 여기서, 전체 URL은 baseURL과, 이 템플릿에 의해 정의되는 URL 부분의 연접이다. 여기서, Sind는 세그먼트 파일의 인덱스를 나타낸다. 따라서, (Sind = 1인) 제 1 세그먼트 파일에 대한 전체 URL은 http://www.example.com/ahs-2-1.3gs이고, (Sind = 2인) 제 2 세그먼트 파일에 대한 전체 URL은 http://www.example.com/ahs-2-2.3gs인 식이다.
도 15에 도시된 예의 경우, AHS 클라이언트는 다음과 같이 동작할 수 있다. AHS 클라이언트는 MPD에 대한 URL을 이용하여 MPD를 다운로드할 수 있고, 앞서 설명된 바와 같이, MPD 내의 정보를 이용하여, 세그먼트 타임라인 파일들 및 세그먼트 파일들을 결정할 수 있다. AHS 클라이언트가, 초당 30,000 틱들의 세그먼트 타임스케일에서 대략 110,000 틱들의 프리젠테이션 시간에 제 1 표현으로 스위칭하기를 원한다고 가정한다. 110,000/30,000이 대략 3.67초이기 때문에, AHS 클라이언트는, 3.67초가 그 세그먼트 타임라인에 의해 커버되는 시간 스팬의 중간 어디엔가 존재하도록 세그먼트 타임라인 URL을 형성하도록 선택할 수 있는데, 예를 들어, 6초의 EPT 및 4초의 시간 스팬 지속기간을 갖는 Tind = 3인 세그먼트 타임라인 파일이 양호한 선택일 수도 있고, AHS 클라이언트는, MPD에서 제 1 표현에 대한 세그먼트 타임라인 URL 템플릿 구성 규칙들을 이용하여 이 세그먼트 타임라인 파일에 대한 URL을 http://www.example.com/ahs-5-DUR4.EPT6.time으로 결정할 수 있다. AHS 클라이언트는, 이 URL을 이용하여, 다음의 데이터 엘리먼트들을 포함하는 이러한 세그먼트 타임라인 파일을 다운로드할 수 있다
Sind = 5: SPT = 79079
Sind = 6: SPT = 125125
Sind = 7: SPT = 145145
Sind = 8: SPT = 175175
AHS 클라이언트는, 자신이 제 1 표현으로 스위칭하기를 원하는 포인트가 Sind = 5인 세그먼트 파일 내에 있다고 결정할 수 있는데, 이는, 79,079 < 110,000 < 125,125이기 때문이다. MPD에서 세그먼트 URL 템플릿 구성 규칙들 및 세그먼트 인덱스 Sind = 5에 기초하여, AHS 클라이언트는 이 세그먼트에 대한 URL을 http://www.example.com/ahs-5-5.3gs로서 형성할 수 있고, AHS 클라이언트는 이 URL을 이용하여 이 세그먼트를 다운로드할 수 있다.
상기한 것의 많은 변형들이 존재한다. 예를 들어, 라이브 스트리밍 서비스에서, AHS 클라이언트는, 현재의 프리젠테이션 시간에 기초하여 파일들이 다운로드를 위해 언제 이용가능한지를 결정할 수 있다. 예를 들어, 세그먼트 타임라인 파일은, 현재의 프리젠테이션 시간이 세그먼트 타임라인 파일의 종료 프리젠테이션 시간(EPT)에 도달한 후 즉시 또는 곧 다운로드를 위해 이용가능할 수도 있고, AHS 클라이언트는, 세그먼트 타임라인 URL 템플릿 구성 규칙들 및 현재의 프리젠테이션 시간에 기초하여 다운로드를 위해 어느 세그먼트 타임라인 파일들이 이용가능한지를 결정할 수 있다. 다른 예로서, 세그먼트 파일은, 현재의 프리젠테이션 시간이 후속 세그먼트 파일의 SPT에 도달한 후 즉시 또는 곧 다운로드를 위해 이용가능할 수도 있다. 따라서, AHS 클라이언트는, 세그먼트 타임라인 파일들에서 반송되는 세그먼트 인덱스들 및 이들의 대응하는 SPT들에 기초하여 어느 세그먼트 파일들이 이용가능한지를 결정할 수 있다. 예를 들어, AHS 클라이언트가, EPT = Z까지의 스간 스팬을 커버하는 세그먼트 타임라인 파일을 다운로드했고, 이 세그먼트 타임라인 파일이, 기껏해야 Z인 최대 프리젠테이션 시간을 갖는 미디어 데이터를 반송하는 Sind = 1인 세그먼트 파일에 대한 정보를 반송하면, AHS 클라이언트는, Sind = 1인 세그먼트 파일이 다운로드를 위해 이용가능하거나 또는 곧 이용가능해질 것으로 결정할 수 있다. 다른 예로, Sind = 1 및 SPT = Y인 세그먼트 파일이 세그먼트 타임라인 파일에 리스트된 마지막 세그먼트 파일이면, AHS 클라이언트는, 이용가능한 미디어 프리젠테이션 시간이 프리젠테이션 시간 Y + TSmax이거나 이를 넘을 때, Sind = 1인 세그먼트 파일이 다운로드를 위해 이용가능하다고 결정할 수 있고, 여기서, TSmax는, 상기와 같이, 세그먼트 파일의 시간 스팬에 대한 상한인 것으로 정의된다.
AHS 클라이언트는, 다음과 같이, 특정 프리젠테이션 시간 T에 대한 미디어 데이터를 어느 세그먼트 파일이 포함하는지를 결정할 수 있다. AHS 클라이언트는, T를 포함하는 프리젠테이션 시간 스팬을 갖는 세그먼트 타임라인 파일의 URL을 결정할 수 있는데, 즉, 지속기간 A의 프리젠테이션 시간 스팬을 갖는 세그먼트 타임라인 파일은 프리젠테이션 시간 Z-A에서 시작하여 프리젠테이션 시간 Z에서 종료하고, 여기서 Z-A≤T≤Z이다. 이것은, Z 및 A를 컴퓨팅하기 위해 T의 값을 이용하는 세그먼트 타임라인 URL 템플릿 구성 규칙들을 이용하여 행해질 수 있다. 몇몇 이러한 세그먼트 타임라인 파일들이 존재할 수도 있고, T가 프리젠테이션 시간 스팬의 중간에 가장 가까이 있게 하는 세그먼트 타임라인 파일이 바람직할 수도 있음을 주목한다. AHS 클라이언트는, 구성된 URL을 이용하여 세그먼트 타임라인 파일을 다운로드할 수 있다. 그 다음, 세그먼트 타임라인 파일의 정보에 기초하여, AHS 클라이언트는, 다음과 같이, 어느 세그먼트 파일이 T를 포함하는지를 결정할 수 있다. Y_1, Y_2, ..., Y_k를 k개의 세그먼트 파일들의 SPT들(이에 대한 정보를 세그먼트 타임라인 파일이 포함함)이라 하고, i+1, i+2, ..., i+k를 이러한 세그먼트 파일들의 인덱스들이라 하고, 여기서, k는 또한 세그먼트 타임라인 맵에서 파라미터로서 반송될 수 있고, 여기서, Z-A≤Y_1<Y_2<...<Y_k≤Z이다. Z-A≤T<Y_1이면, 인덱스 i를 갖는 세그먼트 파일은 프리젠테이션 시간 T를 포함하고; 2와 k 사이의 몇몇 j에 대해, Y_(j-1)≤T<Y_j이면, 인덱스 j-1을 갖는 세그먼트 파일은 프리젠테이션 시간 T를 포함하고; Y_k≤T<Z이면, 인덱스 k를 갖는 세그먼트 파일은 프리젠테이션 시간 T를 포함한다.
혼합된 시간-기반 및 인덱스-기반 세그먼트 URL 템플릿 생성
세그먼트 URL 템플릿 구성 규칙들은, 다음과 같이, 시간-기반 및 인덱스-기반 엘리먼트들 둘 모두를 포함하도록 증강될 수 있다. TimescaleSegURL을, 표현의 모든 세그먼트들에 대한 세그먼트 URL에 포함되는 시간-기반 정보에 대한 초당 틱들의 수를 표현하는데 이용되는 타임스케일이라 하고, Tind 및 Sind를 양의 정수 인덱스들이라 하고, TM을 양의 정수 상수라 한다. 그 다음, 세그먼트 URL 템플릿 구성 규칙은 다음의 형태일 수 있다:
1. Content_ID.Representation_ID.PT$Tind$.SEG$Sind$
TM의 값은, TM/TimescaleSegURL이 적어도 TSmax가 되도록 설정되어야 하고, 여기서, TSmax는, 이 표현 내의 임의의 세그먼트의 최대 프리젠테이션 시간 스팬이다. 예를 들어, TSmax = 2.2이고, TimescaleSegURL = 10이면, 이 경우 TM/TimescaleSegURL = 22/10초 ≥ TSmax이기 때문에, TM은 22와 동일하게 설정될 수 있다. 이것은, 각각의 양의 정수 Tind에 대해, TM*Tind가 기껏해야 표현의 총 프리젠테이션 시간 스팬이 되고, 적어도 하나의 세그먼트가 TM*(Tind-1)과 TM*Tind 사이의 프리젠테이션 시간의 인터벌에서 시작할 것을 보장하고, 여기서 모든 시간들은 시간 스케일 TimescaleSegURL에 대해 상대적이다.
각각의 세그먼트에 대해, 그 세그먼트에 대한 Tind 및 Sind의 값들은, 상기 세그먼트 URL 템플릿 구성 규칙에 따라 그 세그먼트에 대한 URL을 완전히 정의한다. 세그먼트에 대한 Tind 및 Sind의 값들은 다음과 같이 결정될 수 있다. 세그먼트에 대한 Tind의 값은 TM*(Tind-1) ≤ SPT < TM*Tind를 충족시키고, 여기서 SPT는 TimescaleSegURL의 타임스케일에서 세그먼트의 시작 프리젠테이션 시간 SPT이다. 앞서 설명된 바와 같이, 각각의 양의 Tind에 대해, Tind*TM이 기껏해야 표현의 총 프리젠테이션 시간 스팬이 되도록, 값 Tind를 할당받은 적어도 하나의 세그먼트가 존재한다. 값 Tind를 할당받는 이러한 세그먼트들 중, 가장 먼저의 SPT를 갖는 세그먼트가 값 Sind = 1을 할당받고, 그 다음으로 먼저의 SPT를 갖는 세그먼트가 값 Sind = 2를 할당받고, 그 다음으로 먼저의 SPT를 갖는 세그먼트가 값 Sind = 3을 할당받고, 여기서 최대로 이용되는 Sind의 값은 Tind의 상이한 값들에 대해 상이할 수 있는데, 이는, 세그먼트들의 수가 Tind의 상이한 값들에 대해 상이하기 때문이다.
도 16은, DASH 시스템에서 혼합된 시간-기반 및 인덱스-기반 세그먼트 URL 템플릿 생성을 도시한다. 도 16의 좌측은, 컨텐츠에 대해 이용가능해질 수도 있는 미디어 프리젠테이션 디스크립션(MPD)의 몇몇 관련 부분들을 도시하고, 이 예에서는 MPD에서 설명된 2개의 표현들, 즉, 대략 500 Kbps에서 그리고 640x480의 해상도로 인코딩된 비디오가 이용가능한 제 1 표현, 및 대략 250 Kbps에서 인코딩되고 또한 640x480의 해상도인 비디오가 이용가능한 제 2 표현이 존재하고, 둘 모두는, 컨텐츠로 100초에서 시작하는 기간 내에서 이용가능하다. 이 예의 컨텐츠 모두에 대한 baseURL은 http://www.example.com/이다.
도 16에 도시된 바와 같이, 제 1 표현의 세그먼트 URL에 대한 TimescaleSegURL은 초당 10 틱들이고, TM의 값은 22 틱들이고, 이 세그먼트 파일들에 대한 URL 템플릿 패턴은 ./ahs-5-$Tind$.$Sind$.3gs이고, 그 다음, 여기서 세그먼트에 대한 전체 URL은 baseURL과, 이 템플릿에 의해 정의되는 URL 부분의 연접이다. TM = 22이고 TimescaleSegURL = 10이기 때문에, 제 1 표현에 대한 임의의 세그먼트의 최대 프리젠테이션 시간 스팬은 22/10 = 2.2초임을 주목한다. TM*Tind는, Tind의 주어진 값을 갖는 세그먼트들의 시작 프리젠테이션 시간들의 스팬이 TimescaleSegURL의 시간 스케일에서 TM*Tind 틱들임을 나타내는데, 즉, 제 1 표현에 대해, Tind의 각각의 값은 세그먼트 시작 프리젠테이션 시간들의 2.2초를 커버한다. TM*(Tind-1)과 Tind 사이에서 가장 먼저의 시작 프리젠테이션 시간을 갖는 세그먼트는 Sind = 1을 갖고, TM*(Tind-1)과 Tind 사이에서 두번째로 먼저의 시작 프리젠테이션 시간을 갖는 세그먼트(이러한 세그먼트가 존재한다면)는 Sind = 2를 갖는 식이다. 따라서, Tind = 1인 제 1 세그먼트 파일에 대한 전체 URL은 http://www.example.com/ahs-5-1.1.3gs이고, Tind = 1인 제 2 세그먼트 파일에 대한 전체 URL은 http://www.example.com/ahs-5-1.2.3gs인 반면, Tind = 2인 제 1 세그먼트 파일은 http://www.example.com/ahs-5-2.1.3gs이다.
도 16에 도시된 바와 같이, 제 1 표현에 대한 TimescaleSeg는 초당 30,000 틱들이고, 이것은, 세그먼트 내의 미디어 프레임들에 대해 표현되는 프리젠테이션 시간들이 초당 30,000 틱들의 단위들임을 나타낸다. 따라서, 예를 들어, 세그먼트 내의 프레임의 프리젠테이션 시간이 10,010이면, 초 단위의 프리젠테이션 시간은 10,010/30,000, 즉, 대략적으로 0.33초이다.
도 16의 중간에 도시된 제 1 표현에 대한 세그먼트 파일들은, TimescaleSeg 단위들로 세그먼트의 시작 프리젠테이션 시간 SPT를 도시하고, 또한 세그먼트에 대한 URL을 도시한다. 예를 들어, 제 5 세그먼트는 SPT = 79,079를 갖고, 이는 79,079/30,000초, 즉, 대략적으로 2.636초에 대응한다. 이 SPT가 초당 TimescaleSegURL = 10 틱들의 단위들로 22와 44 틱들 사이, 즉, 2.2와 4.4초 사이에 있기 때문에, 이 세그먼트에 대해 Tind = 2이다. 게다가, 이 세그먼트는, SPT가 초당 TimescaleSegURL = 10 틱들의 단위들로 22와 44 틱들 사이에 있는 가장 먼저의 SPT를 갖는 세그먼트이기 때문에, 이 세그먼트에 대해 Sind = 1이다. 따라서, 세그먼트 5에 대한 세그먼트 URL은 도 16에 도시된 바와 같이, http://www.example.com/ahs-5-2.1.3gs이다. 도 16은, 세그먼트 파일들에서 반송되는 미디어 데이터 또는 세그먼트 맵 정보(존재한다면)를 도시하지 않는다.
도 16에 도시된 바와 같이, 제 2 표현의 세그먼트 URL에 대한 TimescaleSegURL은 초당 20 틱들이고, TM의 값은 30 틱들이고, 이 세그먼트 파일들에 대한 URL 템플릿 패턴은 ./ahs-2-$Tind$.$Sind$.3gs이고, 그 다음, 여기서 세그먼트에 대한 전체 URL은 baseURL과, 이 템플릿에 의해 정의되는 URL 부분의 연접이다. TM = 30이고 TimescaleSegURL = 20이기 때문에, 제 1 표현에 대한 임의의 세그먼트의 최대 프리젠테이션 시간 스팬은 30/20 = 1.5초임을 주목한다. TM*Tind는, Tind의 주어진 값을 갖는 세그먼트들의 시작 프리젠테이션 시간들의 스팬이 TimescaleSegURL의 시간 스케일에서 TM*Tind 틱들임을 나타내는데, 즉, 제 1 표현에 대해, Tind의 각각의 값은 세그먼트 시작 프리젠테이션 시간들의 1.5초를 커버한다. TM*(Tind-1)과 Tind 사이에서 가장 먼저의 시작 프리젠테이션 시간을 갖는 세그먼트는 Sind = 1을 갖고, TM*(Tind-1)과 Tind 사이에서 두번째로 먼저의 시작 프리젠테이션 시간을 갖는 세그먼트(이러한 세그먼트가 존재한다면)는 Sind = 2를 갖는 식이다. 따라서, Tind = 1인 제 1 세그먼트 파일에 대한 전체 URL은 http://www.example.com/ahs-5-1.1.3gs이고, Tind = 1인 제 2 세그먼트 파일에 대한 전체 URL은 http://www.example.com/ahs-5-1.2.3gs인 반면, Tind = 2인 제 1 세그먼트 파일은 http://www.example.com/ahs-5-2.1.3gs이다.
도 16에 도시된 바와 같이, 제 2 표현에 대한 TimescaleSeg는 초당 30,000 틱들이고, 이것은, 세그먼트 내의 미디어 프레임들에 대해 표현되는 프리젠테이션 시간들이 초당 30,000 틱들의 단위들임을 나타낸다. 따라서, 예를 들어, 세그먼트 내의 프레임의 프리젠테이션 시간이 11,011이면, 초 단위의 프리젠테이션 시간은 11,011/30,000, 즉, 대략적으로 0.67초이다.
도 16의 우측에 도시된 제 2 표현에 대한 세그먼트 파일들은, TimescaleSeg 단위들로 세그먼트의 시작 프리젠테이션 시간 SPT를 도시하고, 또한 세그먼트에 대한 URL을 도시한다. 예를 들어, 제 8 세그먼트는 SPT = 175,175를 갖고, 이는 175,175/30,000초, 즉, 대략적으로 5.84초에 대응한다. 이 SPT가 초당 TimescaleSegURL = 20 틱들의 단위들로 90과 120 틱들 사이, 즉, 4.5와 6초 사이에 있기 때문에, 이 세그먼트에 대해 Tind = 4이다. 게다가, 이 세그먼트는, SPT가 초당 TimescaleSegURL = 20 틱들의 단위들로 90과 120 틱들 사이에 있는 두번째로 먼저의 SPT를 갖는 세그먼트이기 때문에, 이 세그먼트에 대해 Sind = 2이다. 따라서, 세그먼트 8에 대한 세그먼트 URL은 도 16에 도시된 바와 같이, http://www.example.com/ahs-2-4.2.3gs이다.
표현의 세그먼트화를 수행하는 서버에 의한 상기 세그먼트 URL 템플릿 구성 규칙들에 따른 세그먼트 URL들의 생성은 간단한데, 즉, 세그먼트 URL에 대한 Tind는 세그먼트의 시작 프리젠테이션 시간에만 의존하고, URL에 대한 Sind는 동일한 Tind를 갖는 이전에 생성된 세그먼트들의 수에만 의존한다. 따라서, 세그먼트 URL들은 이러한 서버에 의해 실시간으로 생성될 수 있고, 세그먼트에서 반송되는 미디어가 이용가능하기 전에 그리고 세그먼트에서 반송되는 미디어의 프리젠테이션 시간들이 이용가능하기 전에 이용가능해질 수 있다.
앞서 설명된 혼합된 시간-기반 및 인덱스-기반 세그먼트 URL 템플릿 생성의 이점은, 정확한 세그먼트 프리젠테이션 시간 스팬들에 대한 선험적(a priori) 정보 없이, 그리고 세그먼트 URL 리스트들 또는 MPD들에 대한 복잡한 업데이트들 없이, 세그먼트들이 가변적 프리젠테이션 시간 스팬들을 가질 수 있는 한편, 이와 동시에, AHS 클라이언트들이 세그먼트 URL들을 구성하고 세그먼트들을 다운로드할 수 있다는 점인데, 즉, AHS 클라이언트는 관심있는 세그먼트들에 대한 URL들을 구축하기 위해 간단한 세그먼트 URL 템플릿 구성 규칙을 이용할 수 있다. 가변적 프리젠테이션 시간 스팬들을 갖는 세그먼트들의 이점은 이전에 설명되었는데, 예를 들어, 이것은, 세그먼트들이 메이저 진입 포인트들로 시작하도록 허용하고, 비디오 압축이 메이저 진입 포인트들을, 최상의 압축 및 재생 품질을 제공하는 자연스러운 프리젠테이션 시간 경계들에 유연하게 배치하도록 허용하는 것이며, 여기서 이러한 경계들은 컨텐츠 자체 내의 씬(scene) 변경들 또는 동작 시퀀스들에 의해 지정될 수도 있다.
AHS 클라이언트는 라이브 시스템에 대해, 혼합된 시간-기반 및 인덱스-기반 세그먼트 URL 템플릿 생성에 기초하여 다음과 같이 동작할 수 있다. AHS 클라이언트는, MPD를 다운로드하기 위해 MPD에 대한 URL을 이용할 수 있고, 앞서 설명된 바와 같이, MPD 내의 정보를 이용하여, 세그먼트 URL 템플릿 구성 규칙들 및 MPD의 다른 정보를 결정할 수 있다. 예를 들어, AHS 클라이언트는, 클라이언트가 요청할 수도 있는 가능한 표현들에 대한 TM 및 TimescaleSegURL의 값들을 이용하여, 임의의 이러한 관련 표현들에 대한 임의의 세그먼트의 프리젠테이션 시간 스팬에 대한 상한 TSmax를 결정할 수 있다. 예를 들어, 2개의 표현들이 존재하는 도 16에서, 두 표현들 모두가 클라이언트에 대해 가능한 선택들인 것으로 가정하면, 클라이언트는 22/10 및 30/20의 최대값으로서, 즉, 2.2 및 1.5초의 최대값으로서 TSmax를 계산할 수 있다.
AHS 클라이언트가 몇몇 실시간 T에 라이브 스트림으로부터의 표현을 요청 및 플레이 아웃하기 시작하는 것으로 결정한다고 가정하며, 여기서 T는 표현의 TimescaleSegURL 틱들의 단위들로 표현된다. AHS 클라이언트가 요청 및 재생하기를 원하는 표현에 대한 T 및 TM에 기초하여, 클라이언트는, M = floor(T/TM)를 컴퓨팅할 수 있고, 여기서 floor는, 그의 아규먼트와 동일하거나 그보다 작은 최대 정수를 도출하는 함수이다. 클라이언트는, Tind = M-1 및 Sind = 1에 대응하는 URL을 갖는 세그먼트(세그먼트 I로 지칭됨)를 요청할 수 있다. 시간 T에, 세그먼트 I는 이용가능한 것으로 보장되는데, 이는, Tind = M-1인 임의의 세그먼트의 시작 프리젠테이션 시간이 TimescaleSegURL의 단위들로 T 이전에 적어도 TM 틱들이기 때문이고, 세그먼트 I의 프리젠테이션 시간 스팬이 TimescaleSegURL의 단위들로 기껏해야 TM 틱들이기 때문에, 세그먼트 I의 종료는 T 이전이고 따라서 이용가능하다. 게다가, Tind = M-1인 적어도 하나의 세그먼트가 존재하기 때문에, Tind = 1 및 Sind = 1인 세그먼트 I가 존재할 것이다. 현재의 실시간 T와 세그먼트 I의 시작 프리젠테이션 시간 사이의 차가, 예를 들어, TSmax의 어떠한 배수이면, 예를 들어, 이 차가 적어도 TSmax 또는 적어도 2*TSmax이면, AHS 클라이언트는 세그먼트 I의 재생을 시작할 수 있다.
많은 가능한 AHS 클라이언트 전략들이 가능하다. 예를 들어, 초기 다운로드 레이트가 초기 재생 레이트보다 크면, 다운로드 지연들에 대한 탄력성을 개성하고 잠재적으로 시작 시간을 단축시키는 잠재적 이점들로, 클라이언트는 먼 과거에 미디어의 다운로드를 시작하고 재생을 위한 미디어의 버퍼를 구축할 수 있다.
이상 및 이하에서, 용어들 "실시간" 및 "T의 값" 및 "이용가능한"은 일반적으로, 컨텐츠가 생성된 시점과 컨텐츠가 재생을 위해 이용가능한 시점 사이에 가능한 한 적은 레이턴시로 클라이언트가 라이브 컨텐츠를 실시간으로 재생하려 시도하고 있는 상황을 설명하는 문맥에서 사용된다. 앞서 설명된 바와 같이, 클라이언트는 미디어 버퍼를 구축하기 위해 라이브 컨텐츠에 대한 프리젠테이션 시간보다 더 이전에 컨텐츠를 재생하고 있는 것으로 선택할 수 있고, 온-디맨드 컨텐츠에 대해 모든 컨텐츠는 시작부터 클라이언트에 이용가능할 수 있고, 따라서, 이러한 문맥들에서 "실시간"은 더 일반적으로, 클라이언트가 현재 다운로드하기를 원하는 미디어의 원하는 프리젠테이션 시간으로서 간주될 것이고, "T의 값"은, 클라이언트가 현재 다운로드를 시도하고 있는 컨텐츠의 대략적인 프리젠테이션 시간이고, 클라이언트가 다운로드를 시도하고 있는 모든 컨텐츠는 이용가능하다.
AHS 클라이언트가 세그먼트 I를 다운로드했다면, 또는 세그먼트 I의 종료 프리젠테이션 시간에 액세스했다면, AHS 클라이언트는 또한, 다음 세그먼트 I+1의 시작 프리젠테이션 시간을 안다. 세그먼트 I+1의 시작 프리젠테이션 시간은, 세그먼트 I+1이 Tind = M-1 및 Sind = 2를 갖는지 여부, 즉, 세그먼트 I+1의 시작 프리젠테이션 시간이 TimescaleSegURL 단위들에서 TM*(M-1) 미만인지 여부, 또는 세그먼트 I+1이 Tind = 1 및 Sind = 1을 갖는지 여부, 즉, 세그먼트 I+1의 시작 프리젠테이션 시간이 TimescaleSegURL 단위들에서 TM*(M-1)보다 큰지 또는 그와 동일한지 여부를 결정하는데 이용될 수 있다. 이러한 방식으로 계속하여, AHS 클라이언트는 표현 내에서 현재의 세그먼트에 후속하는 세그먼트에 대한 Tind 및 Sind, 및 그에 따라 그러한 다음 세그먼트에 대한 URL을 항상 결정할 수 있다.
어떠한 이유로, AHS 클라이언트가 표현의 Tind = M-1인 특정한 세그먼트 또는 특정한 세그먼트에 대한 정보에 액세스할 수 없으면, AHS 클라이언트는, 이전 단락에서 설명된 절차를 이용하여 그 누락된 세그먼트 이후의 후속 세그먼트에 대한 URL을 결정하지 못할 수 있다. 그러나, AHS 클라이언트는 Tind = M 및 Sind = 1인 세그먼트의 URL을 결정할 수 있고, 각각의 Tind에 대해 적어도 하나의 세그먼트가 존재하기 때문에, Tind = M 및 Sind = 1인 세그먼트는 어떠한 지점에서 이용가능해야 한다. 따라서, 예를 들어, 서버 또는 네트워크 전달 에러 때문에, AHS 클라이언트가 표현으로부터 세그먼트를 누락하면, AHS 클라이언트는 다음의 더 큰 Tind 값을 갖는 제 1 세그먼트로 스킵할 수 있고, 그에 따라, 기껏해야 미디어 컨텐츠의 2*TM/TimescaleSegURL 프리젠테이션 시간의 스팬의 재생을 누락할 수 있다.
AHS 클라이언트는 제 1 표현으로부터 제 2 표현으로 스위칭하기 위해 다음 전략을 이용할 수 있다. TM 및 TimescaleSegURL을, 스위칭될 제 2 표현에 대한 것이라 하고, T를, 스위칭 결정이 행해진 TimescaleSegURL의 틱 단위들로 표현되는 실시간이라 한다. TM으로 균등하게 나눠진 다음 값에 T가 도달하자 마자(즉, M = T/TM은 정수임), AHS 클라이언트는 제 2 표현으로부터 세그먼트 I로 지칭되는 세그먼트에 대해 Tind = M-1 및 Sind = 1에 대응하는 URL을 생성할 수 있고, 세그먼트 I의 시작 프리젠테이션 시간에 제 2 표현으로 스위칭할 수 있다. 그 동안, AHS 클라이언트는, 자신이 제 2 표현의 세그먼트 I의 적어도 시작 프리젠테이션 시간까지 플레이 아웃할 수 있을 때까지 제 1 표현으로부터 세그먼트들의 다운로드를 계속할 수 있고, 그 다음, 제 2 표현의 세그먼트 I의 플레이 아웃을 시작하기 위해 스위칭을 행할 수 있다. 이 단락에서 설명되는 방법들을 이용하여, 실시간과 플레이 아웃되는 프리젠테이션 시간 사이의 차가 적어도 2*TSmax이면, 제 1 표현으로부터 제 2 표현으로의 스위칭은, 세그먼트들이 다운로드를 위해 요청된 시점과, 세그먼트의 플레이아웃을 시작하기 위해 적어도 충분한 세그먼트가 AHS 클라이언트에 도달한 시점 사이의 시간을 고려하지 않고, 어떠한 스터터링들 또는 중단들없이 실행될 수 있다.
AHS 클라이언트 방법의 일례로서, 도 16을 고려한다. MPD로부터, 클라이언트는, 이 2개의 표현들에 대해 TSmax = max{22/10, 30/20} = 2.2초인 것으로 결정할 수 있다. 클라이언트가 초당 TimescaleSegURL = 10 틱들의 단위들로 실시간 T = 52에, 즉, 실시간 5.2초에 제 1 표현에 참여한다고 결정한 것으로 가정한다. 제 1 클라이언트 전략은, 클라이언트가 M = floor(T/TM)를 컴퓨팅하는 것이고, 여기서 TM = 22 및 그에 따라 M = 2이다. 이에 기초하여, 클라이언트는 Tind = M-1 = 1 및 Sind = 1에 대응하는 세그먼트, 즉 세그먼트 1에 대한 URL을 생성할 수 있고, 그 다음, 세그먼트 1을 요청 및 다운로드할 수 있다. 세그먼트 1은 이 시점에 이용가능한데, 이는, 세그먼트 1의 종료 프리젠테이션 시간이 기껏해야 세그먼트 2의 시작 프리젠테이션 시간이기 때문이고, 세그먼트 2의 시작 프리젠테이션 시간은 10,010/30,000, 즉, 대략적으로 0.333초이다. 클라이언트는 세그먼트 1의 적어도 일부를 수신할 때 미디어 컨텐츠의 플레이 아웃을 시작할 수 있고, 따라서 실시간과 프리젠테이션 시간 사이의 랙(lag)은, 이 예에서 대략적으로 5.2 - 0.33 = 4.87초이고, 이 제 1 클라이언트 전략을 이용하면 일반적으로 기껏해야 3*TSmax이다.
제 1 클라이언트 전략을 이용하는 상기 예로 계속하여, 세그먼트 1에 대한 정보, 구체적으로는 세그먼트 1의 종료 프리젠테이션 시간이 이용가능하면, 다음 세그먼트의 시작 프리젠테이션 시간, 즉, 19,019/30,000이 계산될 수 있고, 이로부터, 이러한 다음 세그먼트 2의 Tind = 1 및 Sind = 2가 결정될 수 있고, URL 템플릿 구성 규칙에 따라 구성된 세그먼트 2의 URL 및 세그먼트 2가 세그먼트 2의 URL에 기초하여 요청될 수 있다. 어떠한 이유 때문에, Tind = 1 및 Sind = 2인 세그먼트 2가 이용가능하지 않다고 가정한다. 그 다음, AHS 클라이언트는 세그먼트들 3 및 4에 대한 URL을 결정하지 못할 수 있지만, AHS 클라이언트는 Tind = 2 및 Sind = 1인 세그먼트 5에 대한 URL을 결정할 수 있고, 표현 1의 세그먼트 5 및 후속하는 세그먼트들을 요청 및 플레이 아웃할 수 있다. 이 예에서, AHS 클라이언트는 세그먼트 1을 플레이 아웃할 수 있고, 세그먼트들 2, 3 및 4의 플레이아웃을 스킵할 수 있고, 그 다음, 세그먼트 5 및 후속 세그먼트들로 계속할 수 있고, 따라서, 총 (79,079 - 10,010)/30,000, 즉, 대략적으로 2.3초의 미디어 컨텐츠의 플레이아웃을 스킵하며, 이것은 일반적으로 이러한 제 3 클라이언트 전략을 이용하면, 기껏해야 2*Tmax이다.
상기와 같이, 클라이언트가 초당 TimescaleSegURL = 10 틱들의 단위들로 실시간 T = 52에, 즉, 실시간 5.2초에 제 1 표현에 참여한다고 결정한 것으로 가정한다. 제 2의 대안적인 클라이언트 전략은, 실시간이 TM 틱들의 배수일 때까지, 즉, 실시간 T가 3*TM/TimescaleSegURL = 6.6초에 도달할 때까지 클라이언트가 대기하고, 그 다음, M = T/TM = 3을 컴퓨팅하기 위해 상기와 같이 진행하고, 그 다음, Tind = M-1 = 2 및 Sind = 1, 즉 세그먼트 5에 대응하는 URL을 형성하고, 그 다음, 79,079/30,000, 즉, 대략적으로 2.636초의 시작 프리젠테이션 시간을 갖는 세그먼트 5로부터 플레이 아웃을 요청 및 시작하는 것이다. 이 경우, 플레이아웃은, 클라이언트가 표현 1로부터 플레이 아웃하기로 결정한 시간으로부터 적어도 6.6 - 5.2초 = 1.4초만큼, 즉, 일반적으로 이 제 2 클라이언트 전략을 이용하여 기껏해야 TSmax초의 지연만큼 지연되지만, 실시간과 프리젠테이션 시간 사이에 6.6 - 2.636 = 3.964초의 개선된 랙을 갖고, 이것은 일반적으로 이 제 2 클라이언트 전략을 이용하면 기껏해야 2*TSmax이다. 이 경우, 클라이언트는, 랙이 2*TSmax와 동일하도록 플레이아웃을 지연하는 것으로 결정할 수도 있는데, 즉, 프리젠테이션 시간 2.636초에서 시작하는 컨텐츠는 실시간 2.636 + 2*2.2 = 7.036초에 플레이 아웃을 시작할 것이어서, 동일한 표현의 세그먼트들에 대한 후속 표현 스위칭들 또는 요청들에 기인한 어떠한 스터터링들 또는 중단들이 존재하지 않는다.
상기 예로 계속하여, AHS 클라이언트가 실시간 T = 10초에 제 1 표현으로부터 제 2 표현으로 스위칭하는 것으로 결정한다고 가정한다. 제 2 표현에 대해 특정되는 바와 같이, TM = 30 및 TimescaleSegURL = 20이라 한다. TimescaleSegURL의 단위들에서 TM으로 균등하게 나눠진 다음 값에 T가 도달하자 마자(즉, M = T*TimescaleSegURL/TM은 정수이고, 이것은 T = 10.5초인 경우 M = 7에서 발생함), AHS 클라이언트는 제 2 표현의 세그먼트 10에 대해 Tind = 6 및 Sind = 1에 대응하는 URL을 생성할 수 있고, 여기서, 이 세그먼트의 시작 프리젠테이션 시간은 230,230/30,000, 즉 대략적으로 7.674초이다. 이 예에 대해 이전 단락에서 설명된 바와 같이, 플레이 아웃되고 있는 것의 실시간과 프리젠테이션 시간 사이의 랙이 4.4초이면, 이 세그먼트의 플레이아웃은 실시간으로 대략 12.0743초에서 시작할 것이다. 그 동안, AHS 클라이언트는, 자신이 제 2 표현의 세그먼트 10의 적어도 시작 프리젠테이션 시간까지 플레이 아웃할 수 있을 때까지 제 1 표현으로부터 세그먼트들의 다운로드를 계속할 수 있고, 그 다음, 제 2 표현의 세그먼트 10의 플레이 아웃을 시작하기 위해 스위칭을 행할 수 있다.
상기 방법들의 많은 변형들이 존재한다. 예를 들어, 표현에 대한 TM 및 TimescaleSegURL은, TM/TimescaleSegURL이 그 표현의 세그먼트의 최대 프리젠테이션 시간 스팬보다 작게 될 수도 있다. 이 대안에서, TimescaleSegURL의 틱 단위들에서 TM*(M-1)과 TM*M 사이에 시작 프리젠테이션 시간을 갖는, 표현의 어떠한 세그먼트도 존재하지 않도록 하는 몇몇 양의 정수값들 M이 존재하는 것이 가능할 수도 있다. 이러한 경우들에서, 클라이언트가 Tind = M 및 Sind = 1에 대응하는 세그먼트의 URL을 형성하는 경우, 그 URL에 대응하는 표현의 어떠한 세그먼트도 존재하지 않을 수 있다. 이 경우에, 클라이언트가 HTTP를 이용하여 형성된 URL에 기초하여 세그먼트를 요청하는 것으로 결정하면, 클라이언트는 "HTTP 404 file not found" 에러 응답을 수신할 수도 있고, 클라이언트는 이 응답을 이용하여, 형성된 URL에 대응하는 어떠한 세그먼트도 존재하지 않는다고 해석할 수도 있다.
변형의 다른 예로서, 동일한 Tind 인덱스를 갖는 세그먼트들의 경우, 세그먼트들의 Sind 인덱스들은, 세그먼트들의 증가하는 시작 프리젠테이션 시간들의 순서 대신에, 세그먼트들의 감소하는 시작 프리젠테이션 시간들의 순서로 증가중일 수 있다. 예를 들어, 세그먼트 1의 시작 프리젠테이션 시간이 1.1초이면, 세그먼트 2의 시작 프리젠테이션 시간은 1.3초이고, 세그먼트 3의 시작 프리젠테이션 시간은 2.4초이고, 3개의 세그먼트들 모두는 동일한 Tind 값을 가지며, 그 다음, 세그먼트 3의 Sind 값은 1일 수 있고, 세그먼트 2의 Sind 값은 2일 수 있고, 세그먼트 1의 Sind 값은 3일 수 있다.
변형들의 다른 예들로서, 세그먼트와 연관된 Tind 값은 시작 프리젠테이션 시간 대신에 세그먼트의 종료 프리젠테이션 시간에 기초할 수도 있거나, 세그먼트와 연관된 Tind 값은 세그먼트의 평균 프리젠테이션 시간에 기초할 수도 있거나, 또는 세그먼트의 중간 바이트 위치에 있는 프레임의 프리젠테이션 시간에 기초할 수도 있다.
변형의 다른 예로서, 세그먼트 URL 템플릿 구성 규칙들은, 세그먼트 맵 URL 템플릿 구성 규칙들에 적용하도록 또는 세그먼트 맵들 및 미디어 데이터의 조합을 포함하는 세그먼트들에 적용하도록 변형될 수도 있다.
시간-기반 및 인덱스-기반 세그먼트 URL 템플릿 생성의 다수의 URL 버전들
시간-기반 및 인덱스-기반 엘리먼트들 모두를 포함하는 세그먼트 URL 템플릿 구성 규칙들은 다음과 같이 더 증강될 수 있는데, 즉, URL 템플릿 구성 규칙들은 세그먼트에 대해 하나보다 많은 URL을 특정하는데 이용될 수도 있어서, 즉, 동일한 세그먼트가 다수의 URL들에 대응할 수도 있고, 다수의 URL들 중 임의의 URL이 세그먼트를 식별하기 위해, 예를 들어, 세그먼트를 요청 및 다운로드하기 위해 이용될 수 있다.
이전과 같이, TimescaleSegURL을, 표현의 모든 세그먼트들에 대한 세그먼트 URL에 포함된 시간-기반 정보에 대한 초당 틱들의 수를 표현하는데 이용되는 타임스케일이라 하고, Tind 및 Sind를 양의 정수 인덱스들이라 하고, TM을 양의 정수 상수라 한다. 그 다음, 세그먼트 URL 템플릿 구성 규칙은 다음의 형태일 수 있다:
1. Content_ID.Representation_ID.$Tind$.$Sind$
이 대안에서, 가능하게는 다수의 값들의 Tind 및 Sind가 각각의 세그먼트에 대해 결정될 수도 있고, 여기서 그 세그먼트에 대한 각각의 (Tind, Sind)-쌍은 그 세그먼트에 대한 URL을 정의한다. 세그먼트에 대응하는 URL들을 구성하기 위한 규칙(이하, 세그먼트-URL 교차 규칙 구성이라 지칭함)은 다음과 같아서, 즉, SPT 및 EPT를, TimescaleSegURL의 틱 타임스케일에서 세그먼트의 시작 및 종료 프리젠테이션 시간들이라 하고, 여기서 세그먼트의 종료 프리젠테이션 시간은 후속 세그먼트의 시작 프리젠테이션 시간이다. 그 다음, 하기 3개의 조건들, 즉,
SPT ≤ TM*(M-1) ≤ EPT
TM*(M-1) ≤ SPT 및 EPT ≤ TM*M
SPT ≤ TM*M ≤ EPT
중 임의의 하나 또는 그 초과의 조건이 충족되면, 세그먼트에 할당된 Tind = M에 대응하는 URL이 존재한다.
즉, [SPT, EPT]에 의해 정의되는 프리젠테이션 시간 스팬이, Tind = M을 갖는 URL 템플릿 구성 규칙에 의해 정의되는 시간 스팬 [TM*(M-1), TM*M]과 비어있지 않은 교차를 가지면, 세그먼트에 할당된 Tind = M에 대응하는 URL이 존재한다. 세그먼트가 3개의 조건들 중 하나보다 많은 조건을 충족시킬 수 있는 것, 예를 들어, SPT ≤ TM*(M-1) 및 EPT ≤ TM*M이면, 조건들 1 및 3 모두가 충족되는 것을 주목한다. 세그먼트에 할당된 각각의 Tind = M에 대해, 세그먼트에 할당된 Sind 값은, 표현 내의 세그먼트들에 할당된 동일한 Tind = M을 갖는 세그먼트들의 순서에 따를 수 있다. 따라서, EPTi = SPTi+1가 되도록, 세그먼트들의 시작 및 종료 프리젠테이션 시간들 (SPT1, EPT1), (SPT2, EPT2), ..., (SPTN, EPTN)에 따라 순서화되는 URL 시간 스팬 [TM*(M-1), TM*M]과의 프리젠테이션 시간 교차들을 갖는 N개의 세그먼트들 1, 2, ..., N이 존재하면, Tind = M인 이 N개의 세그먼트들에 대한 Sind 값들은 각각 1, 2, ..., N이다.
세그먼트-URL 교차 규칙 구성을 이용하면, 세그먼트에 할당된 URL의 수는, 세그먼트의 프리젠테이션 시간 스팬이 교차하는 형태 [TM*(M-1), TM*M]의 URL 시간 스팬들의 수이다. 이 구성은, TM*M이 틱 타임스케일 TimescaleSegURL에서 기껏해야 표현의 종료 프리젠테이션 시간이 되게 하는 모든 각각의 M에 대해, Tind = M에 할당되는 적어도 하나의 세그먼트가 존재할 것이고, 그리고 그에 따라, 각각의 이러한 M에 대해 Tind = M 및 Sind = 1에 대응하는 URL을 갖는 세그먼트가 항상 존재하는 특성을 갖는다.
세그먼트-URL 교차 규칙 구성을 이용하면, 각각의 세그먼트는 적어도 하나의 URL 시간 스팬에 할당된다. 상세하게는, URL 시간 스팬 [TM*(M-1), TM*M]이, 세그먼트가 교차하는 제 1 URL 시간 스팬이고, 세그먼트가 총 N개의 URL 시간 스팬들과 교차하면, N개의 URL들이 세그먼트에 할당될 것이고, 여기서 제 1 URL은 몇몇 I≥1에 대해 Tind = M 및 Sind = I에 대응하고, 여기서 제 2 내지 제 N URL들은 각각 (Tind = M+1, Sind = 1), (Tind = M+2, Sind = 1), ..., (Tind = M+N-1, Sind = 1)에 대응한다. 따라서, 세그먼트에 대응하는 모든 URL들은, M이 최소 Tind 값인 URL의 (Tind = M, Sind = I)의 값들로부터 그리고 세그먼트에 할당된 URL들의 수 N으로부터 결정될 수 있다.
도 17은, 세그먼트-URL 교차 규칙 구성의 예를 도시한다. URL 시간 스팬들, 및 각각의 URL 시간 스팬에 할당된 값 Tind = M은 도 17의 바닥을 따라 도시되어 있고, 여기서 각각의 URL 시간 스팬에 대해 도시된 Tind 값은 TimescaleSegURL의 시간 스케일 단위들에서 스팬의 종료의 프리젠테이션 시간 M*TM이다. 세그먼트 시작 및 종료 포인트들은 URL 시간 스팬들의 바로 위에 도시되어 있고, 여기서 수직 라인들은 하나의 세그먼트의 종료 및 다음 세그먼트의 시작을 나타내는데, 즉, 수직 라인들은 연속적인 세그먼트들 사이의 경계들을 나타낸다. 각각의 세그먼트의 시작 및 종료 포인트 내에는, 그 세그먼트에 대응하는 URL들에 대응하는 (Tind, Sind) 값들의 세트가 리스트된다. 예를 들어, 값들 (1, 2), (2, 1), (3, 1)이 제 2 세그먼트에 대해 리스트되고, 이것은, 제 2 세그먼트에 대응하는 URL들이,
Content_ID.Representation_ID.1.2,
Content_ID.Representation_ID.2.1,
Content_ID.Representation_ID.3.1
형태인 것을 나타낸다.
세그먼트-URL 교차 규칙 구성의 AHS 클라이언트 이용의 일례로서, AHS 클라이언트가 어떠한 실시간 T에 라이브 스트림으로부터 표현의 요청 및 플레이 아웃을 시작하는 것으로 결정한다고 가정하고, 여기서 T는 표현의 TimescaleSegURL 틱들의 단위들로 표현된다. TSmax는 TimescaleSegURL의 타임스케일 단위들에서 TM과 양의 정수 MM의 곱인 것으로, 즉 TSmax = TM*MM으로 가정하였다. AHS 클라이언트가 요청 및 재생하기를 원하는 표현에 대한 T 및 TM에 기초하여, 클라이언트는 M = floor(T/TM)을 컴퓨팅할 수 있고, 여기서 floor는, 그의 아규먼트와 동일하거나 그보다 작은 최대 정수를 도출하는 함수이다. 클라이언트는, Tind = M-MM+1에 대응하는 URL 시간 스팬의 시작 경계와 교차하는, Tind = M-MM+1 및 Sind = 1에 대응하는 URL을 갖는 세그먼트(세그먼트 I로 지칭됨)를 요청할 수 있다. 시간 T에, 세그먼트 I는 이용가능한 것으로 보장되는데, 이는, Tind = M-MM+1에 대응하는 URL 시간 스팬의 경계의 시작이 TimescaleSegURL의 단위들로 T 이전에 적어도 TM*MM 틱들이기 때문이고, 세그먼트 I의 프리젠테이션 시간 스팬이 TimescaleSegURL의 단위들로 기껏해야 TM*MM 틱들이기 때문에, 세그먼트 I의 종료는 T 이전이고 따라서 이용가능하다. 세그먼트 I의 시작 프리젠테이션 시간은 T 이전에 기껏해야 2*TSmax 틱들임이 또한 검증될 수 있다. AHS 클라이언트는, 세그먼트 I의 현재의 실시간 T와 시작 프리젠테이션 시간 사이의 차가, 예를 들어, 적어도 2*TSmax이면 세그먼트 I를 재생하기 시작할 수 있다.
AHS 클라이언트가 세그먼트 I를 다운로드했다면, 또는 세그먼트 I의 종료 프리젠테이션 시간에 액세스했다면, AHS 클라이언트는 세그먼트 I 직후 다음 세그먼트 I+1의 시작 프리젠테이션 시간을 결정할 수 있고, AHS 클라이언트는, 세그먼트 I+1이 Tind = M-MM+1이고 Sind = 2를 갖는지 여부, 또는 세그먼트 I+1이 Tind = M-MM+2 및 Sind = 1을 갖는지 여부, 즉, 다음 세그먼트의 시작 프리젠테이션 시간이 TimescaleSegURL의 단위들로 TM*(M-MM+1)보다 작은지 또는 그와 동일한지 또는 그보다 큰지를 결정할 수 있다. 이 방식으로 계속하여, AHS 클라이언트는 표현 내에서 현재의 세그먼트에 후속하는 세그먼트에 대한 Tind 및 Sind를 항상 결정할 수 있고, 따라서 그 다음 세그먼트에 대한 URL을 결정할 수 있다.
어떠한 이유 때문에, AHS 클라이언트가 Tind = M인 세그먼트에 대해 유효하게 형성된 URL 요청에 대해 "not found" 응답을 수신하면(여기서 URL 요청은 세그먼트-URL 교차 규칙 구성에 기초하여 형성됨), AHS 클라이언트는 그 누락된 세그먼트 이후 후속 세그먼트에 대한 URL을 결정하지 못할 수 있다. 그러나, AHS 클라이언트는, 이용가능한 세그먼트가 발견될 때까지, N = M+1, M+2 등에 대해, Tind = N 및 Sind = 1에 대응하는 URL들을 갖는 세그먼트들에 대한 요청들을 발행할 수 있다. 물론, AHS 클라이언트는, 예를 들어, 세그먼트들이 생성되고 있고 실시간으로 이용가능한 경우, 요청의 시간에 대응하는 세그먼트가 이용가능하도록 이 요청들의 타이밍을 맞추어야 한다. 따라서, AHS 클라이언트가, 예를 들어, 서버 또는 네트워크 전달 에러 때문에 표현으로부터의 세그먼트를 누락하면, AHS 클라이언트는, 이용가능한 다음으로 더 큰 Tind = N 값을 갖는 제 1 세그먼트로 스킵할 수 있고, 따라서, 누락 세그먼트들에 기인하여 가능한 프리젠테이션 시간의 TM/TimescaleSegURL 초의 가산 팩터 내에서 재생을 최소량만큼 누락할 수 있다.
AHS 클라이언트는 다음의 전략을 이용하여, 제 1 표현으로부터 제 2 표현으로 스위칭할 수 있다. TM 및 TimescaleSegURL을, 스위칭될 제 2 표현에 관한 것이라 하고, 몇몇 양의 정수 MM에 대해 TSmax = TM*MM이라 하고, T를, 스위칭 결정이 행해진 TimescaleSegURL의 틱 단위들로 표현되는 실시간이라 한다. TM으로 균등하게 나눠진 다음 값에 T가 도달하자 마자(즉, M = T/TM은 정수임), AHS 클라이언트는 제 2 표현으로부터 세그먼트 I로 지칭되는 세그먼트에 대해 Tind = M-MM+1 및 Sind = 1에 대응하는 URL을 생성할 수 있고, 세그먼트 I의 시작 프리젠테이션 시간에 제 2 표현으로 스위칭할 수 있다. 그 동안, AHS 클라이언트는, 자신이 제 2 표현의 세그먼트 I의 적어도 시작 프리젠테이션 시간까지 플레이 아웃할 수 있을 때까지 제 1 표현으로부터 세그먼트들의 다운로드를 계속할 수 있고, 그 다음, 제 2 표현의 세그먼트 I의 플레이 아웃을 시작하기 위해 스위칭을 행할 수 있다. 이 단락에서 설명되는 방법들을 이용하여, 실시간과 플레이 아웃되는 프리젠테이션 시간 사이의 차가 적어도 2*TSmax이면, 제 1 표현으로부터 제 2 표현으로의 스위칭은, 세그먼트들이 다운로드를 위해 요청된 시점과, 세그먼트의 플레이아웃을 시작하기 위해 적어도 충분한 세그먼트가 AHS 클라이언트에 도달한 시점 사이의 시간을 고려하지 않고, 어떠한 스터터링들 또는 중단들없이 실행될 수 있다.
일례로서, 이 분야의 당업자가 인식할 바와 같이, 세그먼트-URL 교차 규칙 구성은, 향상된 ALS 클라이언트들에 대한 많은 이점들로, 다음과 같이 기존의 ALS 시스템에 적용될 수 있다. TimescaleSegURL 값은 1로 설정될 수 있는데, 즉, 항상 초당 1틱이 존재한다. TM의 값은 컨텐츠의 표현에서 세그먼트들의 광고된 지속기간으로부터 결정될 수 있는데, 예를 들어, 세그먼트 지속기간이 컨텐츠의 표현에 대해 10초로서 광고되면, TM은 컨텐츠의 그 표현에 대해 10으로 설정되는 반면, 세그먼트 지속기간이 컨텐츠의 표현에 대해 6초로서 광고되면, TM은 컨텐츠의 그 표현에 대해 6으로 설정된다. 세그먼트-URL 교차 규칙 구성을 통합하는 향상된 ALS 클라이언트들 및 향상된 세그먼트 URL 생성기들은 컨텐츠의 각각의 표현에 대해 동일한 TimescaleSegURL 값 및 TM 값을 이용해야 한다. 향상된 세그먼트 URL 생성기들은 세그먼트-URL 교차 규칙 구성을 이용하여 ALS 컨텐츠의 세그먼트들에 대한 URL들을 생성 및 연관시켜야 하는 반면, 향상된 ALS 클라이언트들은 이전에 설명된 바와 같이, 세그먼트-URL 교차 규칙 구성을 이용하여 세그먼트들에 대한 URL들을 결정해야 한다. 이 방법들이 기존의 ALS 시스템에 적용되면, 향상된 세그먼트 URL 생성기는 또한, 기존의 ALS 클라이언트들이 변형없이 동작을 계속할 수 있도록, 기존의 세그먼트 URL에 의한 컨텐츠에 대해 세그먼트 URL들의 리스트에서 생성되고 명시적으로 제공될 URL들을 추가적으로 생성 및 연관시킬 수도 있다. 대안적으로, 향상된 세그먼트 URL 생성기는 세그먼트-URL 교차 규칙 구성을 이용하여, ALS 컨텐츠의 세그먼트들에 대한 URL들을 생성 및 연관시킬 수도 있고, 추가적으로, 기존의 ALS 클라이언트들이 이러한 명시적 세그먼트 URL 리스트들을 이용하여 변형없이 동작할 수 있도록 리스트의 각각의 세그먼트에 대한 제 1 URL을 현재의 ALS 세그먼트 URL 리스트 포맷으로 제공할 수 있다.
세그먼트들의 적어도 일부에 할당되는 하나보다 많은 URL이 잠재적으로 존재하는 세그먼트 URL 템플릿 구성 규칙들의 많은 변형들이 존재한다. 예를 들어, 세그먼트들의 프리젠테이션 시간들의 증가하는 순서로 동일한 Tind 값을 갖는 세그먼트들에 대한 Sind 값들을 할당하는 대신에, Sind 값들은 세그먼트들의 프리젠테이션 시간들의 감소하는 순서로 할당될 수 있다.
세그먼트-URL 교차 규칙 구성의 변형으로서, 규칙은, EPTi = SPTi+1이 되도록 자신들의 시작 및 종료 프리젠테이션 시간들 (SPT1, EPT1), (SPT2, EPT2), ..., (SPTN, EPTN)에 따라 순서화되는, URL 시간 스팬 [TM*M, TM*(M+1)]과 프리젠테이션 시간 교차들을 갖는 N개의 세그먼트들 1, 2, ..., N이 존재하면, Tind = M에 대해 이러한 N개의 세그먼트들에 대한 Sind 값들은 각각 0, 1, ..., N-1인 것일 수도 있다.
세그먼트-URL 교차 규칙 구성의 다른 변형은, 세그먼트에 할당되는 하나보다 많은 URL이 존재하면, 예를 들어, N > 1인 URL들이 세그먼트에 할당되면, 세그먼트의 하나보다 많은 카피가 이용가능하다. 예를 들어, 개별 파일들로서 이용가능해진 세그먼트의 N개의 별개의 카피들이 존재할 수 있고, 여기서 각각의 카피는, 이러한 각각의 카피가 그에게 할당된 URL들 중 그 카피를 참조 또는 다운로드하는데 이용되는 정확한 URL을 갖는 점을 제외하고는 각각의 다른 카피와 동일하다. 다른 예로서, 세그먼트의 각각의 카피는 동일하지 않을 수 있는데, 즉, 각각의 카피는, 각각의 다른 카피와 정확하게 동일한 시간 스팬을 가질 수 있고, 동일한 표현에 대한 것일 수 있지만, 상이한 카피들은 상이한 방식들로 인코딩된 비디오일 수도 있는데; 예를 들어, 표현으로 스위칭할 세그먼트들로서 이용될 수도 있는 Sind = 1을 갖는 카피들은, 이들이 RAP로 시작하도록 인코딩될 수도 있는 반면, 동일한 표현의 이전의 세그먼트로부터 계속되도록 이용되는 Sind > 1을 갖는 카피들은, RAP들이 아닌 프레임들(그러나, 그 대신 동일한 표현의 이전의 세그먼트들로부터의 기준 피레임들)을 이용하여 더 효율적으로 인코딩될 수도 있다.
다른 변형으로서, 예를 들어, URL 시간 스팬들과 교차하는 세그먼트 시간 스팬들에 기초한 규칙 ―여기서, Sind 인덱싱은 증가하는 세그먼트 프리젠테이션 시간들의 순서임―, URL 시간 스팬들과 교차하는 세그먼트 시간 스팬들에 기초한 구칙 ―여기서, Sind 인덱싱은 감소하는 세그먼트 프리젠테이션 시간들의 순서임―, URL 시간 스팬에 포함된 세그먼트 시작 프리젠테이션 시간에 기초한 규칙 ―여기서 Sind 인덱싱은 증가하는 또는 감소하는 세그먼트 시작 프리젠테이션 시간들의 순서임―, URL 시간 스팬에 포함된 세그먼트 종료 프리젠테이션 시간에 기초한 규칙 ―여기서, Sind 인덱싱은 증가하는 또는 감소하는 세그먼트 종료 프리젠테이션 시간들의 순서임―, 동일한 표현에 대한 상이한 값들의 TM 또는 TimescaleSegURL을 갖는 규칙, 및 세그먼트들, 세그먼트 맵들, 또는 세그먼트들 또는 세그먼트 맵들의 조합들에 대한 상이한 규칙들과 같은 하나보다 많은 URL 구성 규칙이 동일한 표현에 대해 특정될 수 있다.
예를 들어, 일반적인 세그먼트 URL 템플릿 구성 규칙은 다음의 형태일 수 있는데, 여기서 "Content_ID"는 컨텐츠를 식별하고, "Representation_ID"는 표현을 식별하고, "Type"은 "SPT", "EPT" 또는 "INT"이고, "Direction"은 "I" 또는 "D"이다.
TM = value
TimescaleSegURL = value
Content_ID.Representation_ID.Type.Direction.$Tind$.$Sind$
상기 데이터 구조에서, "Type"은 규칙의 타입을 나타내는데, 즉, 이것이 "SPT"이면, 규칙은 세그먼트 시작 프리젠테이션 시간에 기초하고, 이것이 "EPT"이면, 규칙은 세그먼트 종료 프리젠테이션 시간에 기초하고, 이것이 "INT"이면, 규칙은 세그먼트 교차에 기초한다. "Direction"은 Sind 인덱싱의 방향을 나타내는데, 즉, 이것이 "I"이면, Sind 인덱싱은 증가하는 세그먼트 프리젠테이션 시간의 순서이고, 이것이 "D"이면, Sind 인덱싱은 감소하는 세그먼트 프리젠테이션 시간의 순서이다.
일례로서, URL 템플릿 구성 규칙:
TM = 20
TimescaleSegURL = 1
http://www.example.com/ahs-5-INT.I.$Tind$.$Sind$
은, 컨텐츠 및 표현이 "http://www.example.com/ahs-5-1.1.3gs"에 의해 식별되는 규칙을 나타내고, "INT"는, 규칙이 이전에 정의된 바와 같은 세그먼트 교차 규칙임을 나타내고, "I"는 Sind 인덱싱이 세그먼트 프리젠테이션 시간들의 측면에서 증가하는 것을 나타낸다. TimescaleSegURL = 1 및 TM = 20이기 때문에, 이 규칙에 의해 정의되는 각각의 URL 시간 스팬은 지속기간에서 20초이다.
간단한 세그먼트 URL 템플릿 생성
세그먼트 URL들은 템플릿에 따라 생성될 수 있는데, 여기서 템플릿 및/또는 구성 규칙들은, 세그먼트 요청들을 행하고 있을 클라이언트들에 조밀하게 전달된다. 이 템플릿들/규칙들은 간단하거나 복잡할 수 있다. 일례로서, 이제, 세극먼트 URL 생성 및 URL 템플릿 생성에 대한 간단한 프로세스가 설명될 것이다.
이전의 섹션에서 설명된 표기를 유지하여, TM은 틱들의 단위들로 표현되는 프리젠테이션 시간 파라미터이고, TimescaleSegURL은 초당 틱들의 수이다. URL 템플릿 생성(및 가능하게는 다른 목적들)을 위해, 2개의 추가적인 파라미터들, 즉, DeltaMinus 및 DeltaPlus가 존재하는데, 이들 모두는 틱들의 단위들로 표현되는 프리젠테이션 시간 파라미터들이다. 따라서, URL 템플릿 구성 규칙의 일례는 다음의 데이터 구조를 이용할 수도 있다
TM = 50
TimescaleSegURL = 10
DeltaMinus = 4
DeltaPlus = 6
http://www.example.com/ahs-8.$Sind$.3gp
가능하게는 클라이언트에 전달되거나 또는 그렇지 않으면 클라이언트에 의해 획득되는 상기 데이터 구조에서, Sind는, 다음과 같이 해석되는 URL 템플릿 구성 규칙에 대한 양의 정수 아규먼트이다. Sind = i인 세그먼트의 경우, 즉, URL http://www.example.com/ahs-8.i.3gp인 세그먼트의 경우, 세그먼트의 시작 프리젠테이션 시간 SPT는, 값 (TM*I-DeltaMinus)/TimescaleSegURL에 의해 특정되는 시간(초 단위)에 시작하고 값 (TM*I+DeltaPlus)/ TimescaleSegURL에 의해 특정되는 시간(초 단위)에 종료하는 프리젠테이션 시간 인터벌 내에 있다.
예를 들어, 상기 예에서 Sind = 17이면, URL http://www.example.com/ahs-8.17.3gp인 세그먼트의 시작 프리젠테이션 시간 SPT는 50*17 - 4 틱들 내지 50*17 + 6 틱들, 즉, 동등하게, 프리젠테이션 시간 84.6초 내지 프리젠테이션 시간 85.6초이다. 따라서, 이 예에서, 세그먼트의 시작 시간은 1초의 프리젠테이션 시간 인터벌에 속하는 반면, 평균 세그먼트 지속기간은 대략 TM/TimescaleSegURL = 5초이다. 원하는 시작 프리젠테이션 시간으로부터, 클라이언트는 쉽게 계산들을 수행하여, 요청할 세그먼트를 정확하게 또는 여전히 충분히 효율적일 만큼 가깝게 유도할 수 있다.
항상인 것은 아니지만 통상적으로, DeltaMinus 및 DeltaPlus는 TM의 프랙션(fraction)이다. 그러나, DeltaMinus 또는 DeltaPlus가 TM보다 더 커지도록 허용하는 것이 이점들을 제공하는 경우들이 존재한다.
상기 방법의 하나의 이점은, 이 방법이 비디오 인코딩 프로세스에서 유연성을 제공한다는 점인데, 즉, 세그먼트들의 시작 프리젠테이션 시간에서 유연성을 제공하는 것이, 몇몇 경우들에서는 각각의 세그먼트의 시작에 있는, SAP들의 프리젠테이션 시간에서 유연성을 또한 제공한다는 점이다. 많은 경우들에서 SAP가 IDR-프레임이기 때문에, 비디오 인코딩 프로세스에 의해 생성된 IDR-프레임들의 프리젠테이션 시간들에서 유연성을 갖는 것은, 이 비디오 인코딩 프로세스가, 고정된 프리젠테이션 시간 인터벌들에서 생성된 IDR-프레임들에 의한 비디오 압축에 비해, 동일한 스트림 레이트에 대해 더 양호한 압축을 제공하도록 허용한다.
다른 이점은, 이 방법은, TM + DeltaMinus + DeltaPlus만큼 작거나 그보다 더 작을 수 있는 종단간 레이턴시 사이의 트레이드-오프에 대한 제어, 및 IDR-프레임들의 배치에서 비디오 압축 유연성을 제공한다는 점이다. 추가적인 이점은, 추가적인 이점은, 이 방법이, AHS 클라이언트가 (DeltaMinus + DeltaPlus)/TimescaleSegURL초의 구성가능한 정확도 내에서, 이전의 또는 후속하는 세그먼트들에 대한 정보를 참조하지 않고, 대략적 프리젠테이션 시간 추정에 기초하여 자신이 요청해야 하는 세그먼트의 URL을 생성할 수 있도록 허용한다는 점이다.
추가적인 이점은, 이 방법이, 서버들이 이전의 또는 후속하는 세그먼트들 또는 URL들에 대한 정보를 참조하지 않고, 세그먼트들 및 연관된 URL들을 생성하도록 허용한다는 점이다. 이것은, 과도한 서버들을 갖는 라이브 스트리밍 솔루션의 지원시에 특히 유리할 수 있는데, 세그먼트들 및 URL들을 생성하고 있는 제 1 서버가 고장나고, 새로운 제 2 서버가 제 1 서버를 대체하기 위해 온라인이 되면, 제 2 서버는 고장난 제 1 서버의 상태와는 독립적으로 후속하는 세그먼트들 및 URL들을 생성할 수 있다. 비디오 컨텐츠, 및 제 2 서버에 의해 생성되는 세그먼트들 및 URL들에는 짧은 불연속이 존재할 수 있고, 여기서 이 불연속의 지속기간은, 제 1 서버가 고장난 시점과 제 2 서버가 제 1 서버를 대신하는 시점 사이의 시간 인터벌 플러스 (DeltaMinus + DeltaPlus)/TimescaleSegURL에 비례하는 시간 인터벌과 관련된다.
상기 방법의 하나의 변형에서, 미리 규정된 시간 인터벌에 속하는 세그먼트들의 시작 프리젠테이션 시간에 대한 제약은, 세그먼트의 시작에서 SAP를 갖는 세그먼트들에만 적용된다. 상기 방법의 다른 변형에서, 세그먼트들의 시작 프리젠테이션 시간에 대한 제약은, 몇몇 고정된 양의 정수 SAP_FREQ의 배수인 인덱스 Sind를 갖는 세그먼트들에만 적용되고, SAP_FREQ의 배수인 인덱스 Sind를 갖는 세그먼트들만이 시그널링된 SAP로 시작하도록 요구된다.
이 분야의 당업자가 본 개시를 읽으면 인식할 바와 같이, 상기 방법들의 많은 다른 방법들이 존재한다. 예시들로서, DeltaMinus 및 DeltaPlus의 값들은 각각의 적응 세트에 대해 MPD에서 시그널링될 수 있거나, 또는 적응 세트 내에서 표현마다 시그널링될 수 있거나, 또는 모든 적응 세트들에 대해 보편적으로 시그널링될 수 있다. 다른 예들로서, DeltaMinus 및 DeltaPlus의 값들 중 하나 또는 둘 모두는 명시적으로 시그널링되지 않을 수 있고, 예를 들어, 미리 정의된 프로파일에 기초하여 미리 결정된 값으로 설정될 수 있다. 예를 들어, DeltaMinus는 제로로 정의될 수도 있고, DeltaPlus는 미리 정의된 프로파일에 대해 TM/2로 정의될 수도 있다. 다른 예로, DeltaMinus 및 DeltaPlus는, DeltaMinus 및 DeltaPlus의 값들이 MPD에서 명시적으로 제공된 경우에만 오버라이드(override)되는 미리 규정된 디폴트 값들을 가질 수 있다. 다른 예들로서, 오직 단일의 시그널링된 파라미터 Delta가 존재할 수도 있고, DeltaMinus 및 DeltaPlus의 값들 모두는 Delta로 설정되거나 또는 DeltaMinus는 제로로 설정되고 DeltaPlus는 Delta로 설정된다. 다른 예로, DeltaMinus 및 DeltaPlus는 다른 파라미터들로부터 유도될 수도 있는데, 예를 들어, DeltaMinus 및 DeltaPlus 대신에 시그널링되는 2개의 파라미터들 FracDeltaMinus 및 FracDeltaPlus가 존재하고, 그 다음, DeltaMinus는 FracDeltaMinus*TM로 설정되고, DeltaPlus는 FracDeltaPlus*TM로 설정된다.
하드웨어 시스템 개관
다양한 플랫폼들 상에서 동작할 수 있는 다양한 실시예들, 특징들, 방법들 등이 앞서 설명되었다. 이 섹션은, 상기 교시들와 함께 이용될 수도 있는 몇몇 특정한 하드웨어 플랫폼들을 상세히 설명한다.
도 18에는, 컨텐트(1802)를 인제스팅하고, 그 컨텐트를 준비하고, 수집 시스템(1803) 및 HTTP 스트리밍 서버(1804) 모두에 액세스가능한 컨텐트 스토어(1810)에 컨텐트를 저장함으로써 HTTP 스트리밍 서버(1804)에 의한 서비스를 위해 컨텐트를 패키징하는 수집 시스템(1803)을 포함하는 블록 서빙 인프라구조("BSI")(1801)를 구비하는 블록-스트리밍 시스템(1800)이 도시되어 있다. 도시된 바와 같이, 시스템(1800)은 또한 HTTP 캐시(1806)를 포함할 수 있다. 동작 시에, HTTP 스트리밍 클라이언트와 같은 클라이언트(1808)는 HTTP 스트리밍 서버(1804)에 요청들(1812)을 전송하고, HTTP 스트리밍 서버(1804) 또는 HTTP 캐시(1806)로부터 응답들(1814)을 수신한다. 각각의 경우에, 도 18에 도시된 엘리먼트들은 적어도 부분적으로 소프트웨어로 구현될 수 있고, 소프트웨어는 프로세서 또는 다른 전자기기들 상에서 실행되는 프로그램 코드를 포함한다.
컨텐트는 영화들, 오디오, 2D 평면 비디오, 3D 비디오, 다른 유형들의 비디오, 이미지들, 정기적 텍스트, 정기적 메타데이터 등을 포함할 수 있다. 일부 컨텐트는, 플레이아웃되고 있는 다른 미디어와 함께 보조 정보(스테이션 식별자, 광고, 주식 시세, Flash™ 시퀀스들 등)를 제공하기 위한 데이터와 같이, 정기적 방식으로 제공되거나 소비될 데이터를 수반할 수 있다. 다른 미디어를 결합하고 그리고/또는 단순한 오디오 및 비디오를 넘는 다른 하이브리드 프리젠테이션이 또한 이용될 수 있다.
도 19에 도시된 바와 같이, 미디어 블록들은 블록 서빙 인프라구조(1801(1)) 내에 저장될 수 있고, 블록 서빙 인프라구조(1801(1))는, 예를 들어, HTTP 서버, 컨텐트 전달 네트워크 디바이스, HTTP 프록시, FTP 프록시 또는 서버, 또는 몇몇 다른 미디어 서버 또는 시스템일 수 있다. 블록 서빙 인프라구조(1801(1))는 네트워크(1822)에 접속되고, 네트워크(1822)는 예를 들어, 인터넷과 같은 인터넷 프로토콜("IP") 네트워크일 수 있다. 블록-요청 스트리밍 시스템 클라이언트는 6개의 기능 컴포넌트들, 즉, 전술한 메타데이터가 제공되고, 메타데이터에 의해 표시되는 복수의 이용가능한 블록들 중에서 요청될 블록들 또는 부분적 블록들을 선택하는 기능을 수행하는 블록 선택기(1823), 블록 선택기(1823)로부터의 요청 명령들을 수신하며, 특정한 블록, 블록의 일부들 또는 다수의 블록들에 대한 요청을 네트워크(1822)를 통해 블록 서빙 인프라구조(1801(1))에 전달하고, 리턴 시에 그 블록을 포함하는 데이터를 수신하는데 필요한 동작들을 수행하는 블록 요청기(1824) 뿐만 아니라 블록 버퍼(1825), 버퍼 모니터(1826), 미디어 디코더(1827) 및 미디어 소비를 용이하게 하는 하나 또는 그 초과의 미디어 트랜스듀서들(1828)을 갖는 것으로 도시되어 있다.
블록 요청기(1824)에 의해 수신되는 블록 데이터는 일시적 저장을 위해, 미디어 데이터를 저장하는 블록 버퍼(1825)에 전달된다. 대안적으로, 수신된 블록 데이터는 도 18에 도시된 바와 같이 블록 버퍼(1825) 내에 직접 저장될 수 있다. 미디어 디코더(1827)는 블록 버퍼(1825)에 의해 미디어 데이터를 제공받고, 이 데이터에 대해 미디어 트랜스듀서들(1828)에 적합한 입력을 제공하는데 필요한 변환들을 수행하고, 미디어 트랜스듀서들(1828)은 미디어를 사용자 또는 다른 소비에 적합한 형태로 렌더링한다. 미디어 트랜스듀서들의 예들은, 모바일 폰들, 컴퓨터 시스템들 또는 텔레비젼들에서 발견되는 것과 같은 시각적 디스플레이 디바이스들을 포함하고, 또한, 스피커들 또는 헤드폰들과 같은 오디오 렌더링 디바이스들을 포함할 수 있다.
미디어 디코더의 일예는, H.264 비디오 코딩 표준에서 설명되는 포맷의 데이터를, 각각의 프레임 또는 샘플에 대한 연관된 프리젠테이션 타임스탬프들과의 YUV-포맷 픽셀 맵과 같은, 비디오 프레임들의 아날로그 또는 디지털 표현들로 변환하는 기능일 것이다.
버퍼 모니터(1826)는 블록 버퍼(1825)의 컨텐트들과 관련된 정보를 수신하고, 이 정보 및 가능하게는 다른 정보에 기초하여, 블록 선택기(1823)로의 입력을 제공하고, 이 입력은 본 명세서에서 설명되는 바와 같이 요청할 블록들의 선택을 결정하는데 이용된다.
본 명세서에서 사용되는 용어에서, 각각의 블록은 "플레이아웃 시간" 또는 "지속시간"을 갖고, 이것은, 수신기가 그 블록에 포함된 미디어를 정규의 속도로 플레이하는데 소요될 시간량을 표현한다. 몇몇 경우들에서, 블록 내의 미디어의 플레이아웃은 이전 블록들로부터 이미 수신된 데이터를 갖는 것에 의존할 수 있다. 드문 경우들에서, 블록 내의 미디어의 일부의 플레이아웃은 후속 블록에 의존할 수 있고, 이 경우, 블록에 대한 플레이아웃 시간은 후속 블록을 참조함이 없이 블록 내에서 플레이아웃될 수 있는 미디어에 대해 정의되고, 후속 블록에 대한 플레이아웃 시간은 그 후속 블록을 수신한 후에만 플레이아웃할 수 있는 이 블록 내의 미디어의 플레이아웃 시간에 의해 증가된다. 후속 블록들에 의존하는 블록 내에 미디어를 포함시키는 것은 드문 경우이기 때문에, 본 명세서의 나머지 부분에서, 하나의 블록의 미디어는 후속 블록들에 의존하지 않는 것으로 가정하지만, 이러한 변형이 후술되는 실시예들에 쉽게 부가될 수 있음을 당업자는 인식할 것을 유의한다.
수신기는 "일시중지", "빨리감기", "되감기" 등과 같은 제어들을 가질 수 있고, 이것은 블록이 상이한 레이트의 플레이아웃에 의해 소비되는 것을 초래할 수 있지만, 수신기가, 시퀀스의 마지막 블록을 제외한 통합 플레이아웃 시간과 동일하거나 그보다 작은 통합 시간에서 블록들의 연속적 시퀀스 각각을 획득하고 디코딩할 수 있으면, 수신기는 스톨링없이 그 미디어를 사용자에게 제공할 수 있다. 본 명세서의 일부 설명들에서, 미디어 스트림의 특정한 위치는 미디어 내의 특정한 "시간"으로 지칭되고, 이것은, 미디어 플레이아웃의 시작과 비디오 스트림 내의 특정한 위치에 도달되는 시간 사이에 경과하게 될 시간에 대응한다. 미디어 스트림 내의 시간 또는 위치는 종래의 개념이다. 예를 들어, 비디오 스트림이 초당 24개의 프레임들을 포함하는 경우, 첫번째 프레임은 t=0.0 초의 위치 또는 시간을 가진다고 말할 수 있고, 241번째 프레임은 t=10.0 초의 위치 또는 시간을 가진다고 말할 수 있다. 물론, 프레임-기반 비디오 스트림에서, 241번째 프레임의 제 1 비트로부터 242번째 프레임의 제 1 비트 직전까지 스트림 내의 비트들 각각은 모두 동일한 시간 값을 가질 수 있기 때문에, 위치 또는 시간은 연속적일 필요가 없다.
상기 용어를 채택하면, 블록-요청 스트리밍 시스템(BRSS)은, 하나 또는 그 초과의 컨텐트 서버들(예를 들어, HTTP 서버들, FTP 서버들 등)에 요청하는 하나 또는 그 초과의 클라이언트들을 포함한다. 수집 시스템은 하나 또는 그 초과의 수집 프로세서들을 포함하고, 수집 프로세서는 컨텐트를 (실시간으로 또는 비실시간으로) 수신하고, BRSS에 의한 이용을 위해 컨텐트를 프로세싱하고, 또한 가능하게는 수집 프로세서에 의해 생성된 메타데이터와 함께 이 컨텐트를 컨텐트 서버들에 액세스가능한 저장부에 저장한다.
BRSS는 또한 컨텐트 서버들과 조정하는 컨텐트 캐시들을 포함할 수 있다. 컨텐트 서버들 및 컨텐트 채시들은, URL을 포함하는 HTTP 요청들의 형태로 파일들 또는 세그먼트들에 대한 요청들을 수신하는 종래의 HTTP 서버들 및 HTTP 캐시들일 수 있고, 또한, URL에 의해 표시되는 파일 또는 세그먼트 전부보다 덜 요청하기 위해 바이트 범위를 포함할 수 있다. 클라이언트들은, HTTP 서버들의 요청들을 행하고 이 요청들에 대한 응답들을 처리하는 종래의 HTTP 클라이언트를 포함할 수 있으며, 여기서, HTTP 클라이언트는, 요청들을 포뮬레이트하고(formulate), 이들을 HTTP 클라이언트에 전달하고, HTTP 클라이언트로부터 응답들을 획득하고, 이들을 클라이언트 디바이스에 의한 플레이아웃을 위해 프리젠테이션 플레이어에 제공하기 위해 이들을 프로세싱(또는 저장, 변환 등)하는 신규한 클라이언트 시스템에 의해 구동된다. 전형적으로, 클라이언트 시스템은 어떤 미디어가 요구될지를 미리 알지 못하고, 따라서, 미디어가 수신되자마자 또는 수신된 직후 "소비된다"는 점에서 "스트리밍" 시스템으로 불린다. 그 결과, 응답 지연들 및 대역폭 제한들은, 사용자가 프리젠테이션을 소비하고 있는 위치를 스트림이 따라잡을 때 프리젠테이션에서의 일시중지를 유발시키는 것과 같은, 프리젠테이션에서의 지연들을 유발시킬 수 있다.
양호한 품질인 것으로 인지되는 프리젠테이션을 제공하기 위해, 다수의 세부사항들이 BRSS에서 클라이언트 단, 수집 단, 또는 둘 모두에서 구현될 수 있다. 몇몇 경우들에서, 구현되는 세부사항들은 네트워크의 클라이언트-서버 인터페이스를 고려하고 이를 처리하도록 행해진다. 몇몇 실시예들에서, 클라이언트 시스템 및 수집 시스템 모두가 향상을 인식할 수 있는 한편, 다른 실시예들에서는, 오직 일측만이 향상을 인식할 수 있다. 이러한 경우들에서, 일측이 향상을 인식할 수 없는 경우에도 전체 시스템은 향상으로부터 이점이 있는 한편, 다른 경우들에서는, 양측 모두가 향상을 인식하면 이점이 오직 누적되지만, 일측이 인식하지 못하는 경우 여전히 실패없이 동작한다.
도 20에 도시된 바와 같이, 수집 시스템은 다양한 실시예들에 따라 하드웨어와 소프트웨어 컴포넌트들의 조합으로 구현될 수 있다. 수집 시스템은, 이 시스템으로 하여금 본 명세서에서 설명되는 방법들 중 임의의 하나 또는 그 초과를 수행하도록 실행될 수 있는 명령들의 세트를 포함할 수 있다. 시스템은 컴퓨터의 형태로 특수한 머신으로서 실현될 수 있다. 시스템은 서버 컴퓨터, 개인용 컴퓨터(PC), 또는 그 시스템에 의해 행해지는 동작들을 특정하는 명령들의 세트를 (순차적으로 또는 다른 방식으로) 실행할 수 있는 임의의 시스템일 수 있다. 추가적으로, 오직 단일 시스템이 도시되지만, 용어 "시스템"은 또한, 본 명세서에서 설명되는 방법들 중 임의의 하나 또는 그 초과를 수행하는 명령들의 세트(또는 다수의 세트들)를 개별적으로 또는 공동으로 실행하는 시스템들의 임의의 집합을 포함하는 것으로 사용될 수 있다.
수집 시스템은 수집 프로세서(2002)(예를 들어, 중앙 처리 장치(CPU)), 실행 동안 프로그램 코드를 저장할 수 있는 메모리(2004) 및 디스크 저장부(2006)를 포함할 수 있고, 이들 모두는 버스(2000)를 통해 서로 통신한다. 시스템은 비디오 디스플레이 유닛(2008)(예를 들어, 액정 디스플레이(LCD) 또는 음극선관(CRT))을 더 포함할 수 있다. 시스템은 또한 문자숫자식 입력 디바이스(2010)(예를 들어, 키보드) 및 컨텐트 소스를 수신하고 컨텐트 스토어를 전달하기 위한 네트워크 인터페이스 디바이스(2012)를 포함할 수 있다.
디스크 저장 유닛(2006)은, 본 명세서에서 설명되는 방법들 또는 기능들 중 임의의 하나 또는 그 초과를 구현하는 명령들(예를 들어, 소프트웨어) 중 하나 또는 그 초과의 세트들이 저장될 수 있는 머신-판독가능 매체를 포함할 수 있다. 명령들은 또한 시스템에 의한 실행 동안 메모리(2004) 내에 및/또는 수집 프로세서(2002) 내에 완전히 또는 적어도 부분적으로 상주할 수 있고, 메모리(2004) 및 수집 프로세서(2002)는 또한 머신-판독가능 매체를 구성한다.
도 21에 도시된 바와 같이, 클라이언트 시스템은 다양한 실시예들에 따라 하드웨어 및 소프트웨어 컴포넌트들의 조합으로서 구현될 수 있다. 클라이언트 시스템은, 이 시스템으로 하여금 본 명세서에서 설명되는 방법들 중 임의의 하나 또는 그 초과를 수행하도록 실행될 수 있는 명령들의 세트를 포함할 수 있다. 시스템은 컴퓨터의 형태로 특수한 머신으로서 실현될 수 있다. 시스템은 서버 컴퓨터, 개인용 컴퓨터(PC), 또는 그 시스템에 의해 행해지는 동작들을 특정하는 명령들의 세트를 (순차적으로 또는 다른 방식으로) 실행할 수 있는 임의의 시스템일 수 있다. 추가적으로, 오직 단일 시스템이 도시되지만, 용어 "시스템"은 또한, 본 명세서에서 설명되는 방법들 중 임의의 하나 또는 그 초과를 수행하는 명령들의 세트(또는 다수의 세트들)를 개별적으로 또는 공동으로 실행하는 시스템들의 임의의 집합을 포함하는 것으로 사용될 수 있다.
클라이언트 시스템은 클라이언트 프로세서(2102)(예를 들어, 중앙 처리 장치(CPU)), 실행 동안 프로그램 코드를 저장할 수 있는 메모리(2104) 및 디스크 저장부(2106)를 포함할 수 있고, 이들 모두는 버스(2100)를 통해 서로 통신한다. 시스템은 비디오 디스플레이 유닛(2108)(예를 들어, 액정 디스플레이(LCD) 또는 음극선관(CRT))을 더 포함할 수 있다. 시스템은 또한 문자숫자식 입력 디바이스(2110)(예를 들어, 키보드) 및 요청들을 전송하고 응답들을 수신하기 위한 네트워크 인터페이스 디바이스(2112)를 포함할 수 있다.
디스크 저장 유닛(2106)은, 본 명세서에서 설명되는 방법들 또는 기능들 중 임의의 하나 또는 그 초과를 구현하는 명령들(예를 들어, 소프트웨어) 중 하나 또는 그 초과의 세트들이 저장될 수 있는 머신-판독가능 매체를 포함할 수 있다. 명령들은 또한 시스템에 의한 실행 동안 메모리(2104) 내에 및/또는 수집 프로세서(2102) 내에 완전히 또는 적어도 부분적으로 상주할 수 있고, 메모리(2104) 및 수집 프로세서(2102)는 또한 머신-판독가능 매체를 구성한다.
개선된 방법들의 개관
하기 섹션들에서, 개선된 블록-요청 스트리밍 시스템들을 위한 방법이 설명된다. 이 개선들 중 일부는 본 출원의 요구들에 따라 이 개선들의 다른 부분들과 함께 또는 다른 부분들없이 이용될 수 있음을 이해해야 한다. 일반적 동작에서, 수신기는 데이터의 특정 블록들 또는 블록들의 일부들에 대해 서버 또는 다른 전송기들에 요청들을 행한다. 또한 세그먼트들로도 지칭되는 파일들은 다수의 블록들을 포함할 수 있고, 미디어 프리젠테이션의 하나의 표현과 연관된다.
바람직하게는, 플레이아웃 또는 디코딩 시간들로부터 세그먼트 내의 대응하는 블록들 또는 프래그먼트들의 바이트 오프셋들로의 매핑을 제공하는, "세그먼트 인덱싱" 또는 "세그먼트 맵"으로도 또한 지칭되는 인덱싱 정보가 생성된다. 이 세그먼트 인덱싱은 세그먼트 내에서 전형적으로 세그먼트의 시작부에 포함될 수 있고(세그먼트 맵의 적어도 일부가 시작부에 있음), 종종 작다. 세그먼트 인덱스는 또한 별개의 인덱스 세그먼트 또는 파일에서 제공될 수 있다. 특히, 세그먼트 인덱스가 세그먼트에 포함되는 경우들에서, 수신기는 이 세그먼트 맵의 일부 또는 전부를 신속하게 다운로드할 수 있고, 후속적으로 이를 이용하여, 시간 오프셋들과, 파일 내의 그 시간 오프셋들과 연관된 프래그먼트들의 대응하는 바이트 위치들 사이의 매핑을 결정할 수 있다.
수신기는, 관심있는 시간 오프셋들과 연관되지 않는 다른 프래그먼트들과 연관된 데이터의 전부를 다운로드할 필요없이, 특정한 시간 오프셋들과 연관된 프래그먼트들로부터 데이터를 요청하기 위한 바이트 오프셋을 이용할 수 있다. 이 방식으로, 세그먼트 맵 또는 세그먼트 인덱싱은, 개선된 컨텐트 재핑 시간들, 네트워크 조건들이 변할 때 하나의 표현으로부터 다른 표현으로 신속하게 변경할 수 있는 능력 및 수신기에서 플레이아웃되지 않는 미디어를 다운로드하는 네트워크 자원들의 낭비의 감소를 포함하는 이점들과 함께, 관심있는 현재의 시간 오프셋들과 관련된 세그먼트의 부분들에 수신기가 직접 액세스할 수 있는 능력을 크게 개선할 수 있다.
하나의 표현(본 명세서에서는 "스위칭-전" 표현으로 지칭됨)으로부터 다른 표현(본 명세서에서는 "스위칭-후" 표현으로 지칭됨)으로의 스위칭이 고려되는 경우, 세그먼트 인덱스가 또한 이용되어, 스위칭-후 표현의 플레이아웃이 랜덤 액세스 포인트로부터 끊김없이 시작할 수 있도록, 스위칭-전 표현의 미디어가 프리젠테이션 시간까지 다운로드된다는 관점에서 끊김없는 스위칭이 가능한 것을 보장하기 위해, 스위칭-전 표현에서 요청될 데이터량을 식별하기 위해 스위칭-후 표현에서 랜덤 액세스 포인트의 시작 시간을 식별할 수 있다.
이 블록들은, 수신기의 사용자를 위한 출력을 생성하기 위해, 요청하는 수신기가 요구하는 비디오 미디어 또는 다른 미디어의 세그먼트들을 표현한다. 미디어의 수신기는, 컨텐트를 전송하는 서버로부터 수신기가 컨텐트를 수신할 때와 같이, 클라이언트 디바이스일 수 있다. 예들은, 셋탑 박스들, 컴퓨터들, 게임 콘솔들, 특수하게 장착된 텔레비젼들, 핸드헬드 디바이스들, 특수하게 장착된 모바일 폰들, 또는 다른 클라이언트 수신기들을 포함한다.
다수의 개선된 버퍼 관리 방법들이 본 명세서에 설명된다. 예를 들어, 버퍼 관리 방법은 클라이언트들로 하여금, 시간상 연속적으로 플레이아웃되도록 수신될 수 있는 가장 높은 미디어 품질의 블록들을 요청하게 한다. 가변적 블록 사이즈 특징은 압축 효율을 개선시킨다. 요청들의 빈도를 제한하면서, 요청하는 디바이스에 블록들을 전송하기 위해 다수의 접속들을 갖는 능력은 개선된 전송 성능을 제공한다. 데이터의 부분적으로 수신된 블록들은 미디어 프리젠테이션을 계속하는데 이용될 수 있다. 접속은, 블록들의 특정한 세트에 대한 시작 시에 접속을 실행할 필요없이, 다수의 블록들에 대해 재사용될 수 있다. 다수의 클라이언트들에 의한 다수의 가능한 서버들로부터 서버들의 선택에서의 일관성이 개선되고, 이것은, 인근 서버들에서 복제된 컨텐트의 빈도를 감소시키고, 서버가 전체 파일을 포함할 가능성을 개선시킨다. 클라이언트들은, 미디어 블록들을 포함하는 파일들에 대한 URL들에 내장된 (이용가능한 미디어 인코딩들과 같은) 메타데이터에 기초하여 미디어 블록들을 요청할 수 있다. 시스템은, 미디어 플레이아웃에서 후속적인 일시중지들을 유발시키지 않고 컨텐트의 플레이아웃이 시작할 수 있기 전에 요구되는 버퍼링 시간량의 계산 및 최소화를 제공할 수 있다. 이용가능한 대역폭은 다수의 미디어 블록들 사이에서 공유되고, 각각의 블록의 플레이아웃 시간이 접근할 때 조정될 수 있어서, 필요하다면, 가장 가까운 플레이아웃 시간을 갖는 블록 쪽으로 이용가능한 대역폭의 더 큰 공유가 할당될 수 있다.
HTTP 스트리밍은 메타데이터를 이용할 수 있다. 프리젠테이션 레벨 메타데이터는, 예를 들어, 스트림 지속시간, 이용가능한 인코딩들(비트레이트들, 코덱들, 공간적 해상도들, 프레임 레이트들, 언어, 미디어 유형들), 각각의 인코딩에 대한 스트림 메타데이터에 대한 포인터들, 및 컨텐트 보호(디지털 권리 관리(DRM) 정보)를 포함한다. 스트림 메타데이터는 세그먼트 파일들에 대한 URL들일 수 있다.
세그먼트 메타데이터는 랜덤 액세스 포인트(RAP)들 또는 다른 탐색 포인트들의 식별자 및 세그먼트 내의 요청들에 대한 바이트 범위 대 시간 정보를 포함할 수 있고, 여기서, 이 정보의 일부 또는 전부는 세그먼트 인덱싱 또는 세그먼트 맵의 일부일 수 있다.
스트림들은 동일한 컨텐트의 다수의 인코딩들을 포함할 수 있다. 다음으로, 각각의 인코딩은 세그먼트들로 분해될 수 있고, 여기서, 각각의 세그먼트는 저장 단위 또는 파일에 대응한다. HTTP의 경우, 세그먼트는 전형적으로, URL에 의해 참조될 수 있는 자원이고, 이러한 URL의 요청은, 요청 응답 메시지의 엔티티 바디로서 세그먼트의 리턴을 초래한다. 세그먼트들은 다수의 영상 그룹(GoP)들을 포함할 수 있다. 각각의 GoP는 다수의 프래그먼트들을 더 포함할 수 있고, 여기서, 세그먼트 인덱싱은 각각의 프래그먼트에 대한 시간/바이트-오프셋 정보를 제공하는데, 즉, 인덱싱의 단위가 프래그먼트이다.
프래그먼트들 또는 프래그먼트들 중 일부들이 스루풋을 증가시키기 위해 병렬 TCP 접속들을 통해 요청될 수 있다. 이는 병목(bottleneck) 링크 상에서 접속들을 공유할 때 또는 정체(congestion)로 인해 접속들이 손실(lost)될 때 발생하는 문제들을 경감시킬 수 있어서 전달의 전체 속도 및 안정성을 증가시키며, 이는 컨텐트 잽핑(zapping) 시간의 속도 및 안정성을 실질적으로 향상시킨다. 대역폭은 과다 요청(over-requesting)에 의한 지연과 교환(trade)될 수 있지만, 고갈의 위험을 증가시킬 수 있는 너무 먼 장래까지 요청하는 것을 방지하기 위해 주의를 기울여야 한다.
동일한 서버 상의 세그먼트들에 대한 다수의 요청들이 TCP 시작 지연들을 회피하기 위해 파이프라이닝(현재 요청이 완료되기 전에 다음 요청을 함)될 수 있다. 연속적인 프래그먼트들에 대한 요청들은 하나의 요청으로 애그리게이팅(aggregated)될 수 있다.
일부 CDN들은 큰 파일들을 선호하며, 범위 요청을 처음 접할 때 근원(origin) 서버로부터 전체 파일의 백그라운드 페치들을 트리거링할 수 있다. 그러나 대부분의 CDN들은 데이터가 이용가능한 경우 캐시로부터 범위 요청들을 서빙할 것이다. 따라서, 클라이언트 요청들 중 일부가 전체 세그먼트 파일을 위한 것이 되게 하는 것은 유리할 수 있다. 이러한 요청들은 이후에 필요에 따라 취소(cancel)될 수 있다.
유효한 스위치 포인트들은 탐색 포인트들, 특히 예를 들어, 타겟 스트림에서 RAP들일 수 있다. (미디어의 시작에 기초하여 또는 GoP들에 기초하여) 스트림들에 걸친 RAP들의 정렬 또는 고정된 GoP 구조와 같은 상이한 구현들이 가능하다.
일 실시예에서, 세그먼트들 및 GoP들은 상이한 레이트 스트림들에 걸쳐 정렬될 수 있다. 이러한 실시예에서, GoP들은 가변 크기일 수 있고 다수의 프래그먼트들을 포함할 수 있지만, 프래그먼트들은 상이한 레이트 스트림들 사이에서 정렬되지 않는다.
일부 실시예들에서, 파일 리던던시가 이익을 얻기 위해 사용될 수 있다. 이러한 실시예들에서, 삭제(erasure) 코드가 각각의 프래그먼트에 적용되어 데이터의 리던던트 버전들을 생성한다. 바람직하게, 소스 포맷팅은 FEC의 사용으로 인해 변경되지 않으며, 예를 들어, FEC 보수 데이터를 포함하는, 본래의(original) 표현의 종속적인 표현으로서 추가의 보수 세그먼트들이 수집 시스템에서 추가의 단계로서 생성되고 이용가능하게 된다. 상기 프래그먼트에 대해 소스 데이터만을 이용하는 프래그먼트를 재구성할 수 있는 클라이언트는 서버들로부터 세그먼트 내의 프래그먼트에 대해 소스 데이터를 요청할 수만 있다. 서버들이 이용가능하지 않거나 서버들로의 접속들이 늦으면 ―이는 소스 데이터에 대한 요청 이전 또는 이후에 결정될 수 있음―, 추가의 보수 데이터가 보수 세그먼트로부터의 프래그먼트에 대해 요청될 수 있으며, 이는 프래그먼트의 소스 데이터를 복원하기 위해 수신된 소스 및 보수 데이터의 조합을 사용하기 위해 가능하게는 FEC 디코딩을 이용하여 프래그먼트를 복원하기에 충분한 데이터를 신뢰가능하게 전달하는 시간을 감소시킨다. 더욱이, 프래그먼트가 긴급하게 된 경우, 즉 프래그먼트의 플레이아웃 시간이 임박한 경우, 추가의 보수 데이터가 프래그먼트의 복원을 가능하게 하도록 요청될 수 있으며, 이는 링크 상의 상기 프래그먼트에 대한 데이터 공유를 증가시키지만, 대역폭을 넓히기(free up) 위해 링크 상의 다른 접속들을 종결하는 것보다 효율적이다. 이는 또한 병렬 접속들의 사용으로부터의 고갈의 위험을 경감시킬 수 있다.
프래그먼트 포맷은 실시간 트랜스포트 제어 프로토콜(RTCP)을 통해 달성되는 오디오/비디오 동기화를 갖는 실시간 트랜스포트 프로토콜(RTP) 패킷들의 저장된 스트림일 수 있다.
세그먼트 포맷은 또한 오디오/비디오 동기 달성된 MPEG-2 TS 내부 타이밍을 갖는 MPEG-2 TS 패킷들의 저장된 스트림일 수 있다.
1. 스트리밍을 더 효율적으로 만들기 위한 시그널링 및/또는 블록 생성의 사용
다수의 특징들이 개선된 성능을 제공하기 위해 블록 요청 스트리밍 시스템에서 사용될 수 있거나 그렇지 않을 수 있다. 성능은 클라이언트, 스톨링(stall), 대역폭 제약들 내에서 미디어 데이터의 획득, 및/또는 서버 및/또는 수집 시스템에서 제한된 프로세서 리소스들 내에서 그렇게 하지 않고 프리젠테이션을 플레이아웃하는 능력과 관련될 수 있다. 이러한 특징들 중 일부가 이제 설명될 것이다.
2. 세그먼트들 내에서의 인덱싱
영화 프래그먼트들에 대한 부분적인 GET 요청들을 포뮬레이팅하기 위해, 클라이언트에는, 파일 또는 세그먼트 내의 프래그먼트들에 포함된 모든 미디어 컴포넌트들의 프리젠테이션 시간 또는 디코딩에서의 시작 시간 및 바이트 오프셋이 통지되며, 또한 상기 프래그먼트들은 랜덤 액세스 포인트들 시작하거나 포함하며(그리고 대안적인 표현들 사이에서 스위치 포인트들로서 사용되는 것이 또한 적절함), 여기서 이러한 정보는 종종 세그먼트 인덱싱 또는 세그먼트 맵으로 지칭된다. 디코딩 또는 프리젠테이션 시간에서 시작 시간은 직접적으로 표현될 수 있거나, 기준 시간과 관련하여 델타들로서 표현될 수 있다.
이러한 시간 및 바이트 오프셋 인덱싱 정보는 영화 프래그먼트당 적어도 8 바이트 데이터를 필요로 할 수 있다. 예로써, 500ms 영화 프래그먼트들을 가진 단일 파일 내에 포함된 두 시간짜리 영화의 경우, 이는 총 대략 112 킬로바이트의 데이터일 것이다. 프리젠테이션의 시작 시 이러한 데이터 모두를 다운로딩하는 것은 현저한 추가의 구동 지연을 초래할 수 있다. 그러나 시간 및 바이트 오프셋 데이터는 계층적으로 인코딩될 수 있어서, 클라이언트는 시작하려고 하는 프리젠테이션에서의 포인트에 적절한 작은 크기의 시간 및 오프셋 데이터를 신속하게 발견할 수 있다. 정보는 또한 세그먼트 내에서 분배될 수 있어서 세그먼트 인덱스의 일부 개선이 미디어 데이터와 인터리빙되어 위치설정될 수 있다.
표현이 다수의 세그먼트들로 시간에 대해 세그먼트화되면, 각각의 세그먼트에 대한 완전한 시간 및 오프셋 데이터가 이미 상당히 작기 때문에 이러한 계층적 코딩의 사용은 필수적이지 않을 수 있음을 주목해야 한다. 예를 들어, 세그먼트들이 전술한 예에서 두 시간 대신에 1분인 경우, 시간 바이트 오프셋 인덱싱 정보는 약 1킬로바이트의 데이터이며, 이는 단일 TCP/IP 패킷 내에서 전형적으로 적합할 수 있다.
3. 상이한 옵션들이 프래그먼트 시간 및 바이트 오프셋 데이터를 3GPP 파일에 부가하기 위해 가능하다:
첫 번째, 영화 프래그먼트 랜덤 액세스 박스('MFRA')가 이러한 목적을 위해 사용될 수 있다. MFRA는 영화 프래그먼트들을 이용하여 파일에서 랜덤 액세스 포인트들을 찾는데 있어서 독자들을 지원할 수 있는 테이블을 제공한다. 이러한 기능의 지원에서, MFRA는 랜덤 액세스 포인트들을 포함하는 MFRA 박스들의 바이트 오프셋들을 부수적으로 포함한다. MFRA는 파일의 종단에 또는 종단 부분에 위치설정될 수 있지만, 이는 반드시 그러한 것은 아니다. 영화 프래그먼트 랜덤 액세스 오프셋 박스에 대한 파일의 종단으로부터의 스캐닝 및 그 내부의 크기 정보를 이용함으로써, 영화 프래그먼트 랜덤 액세스 박스의 시작을 위치설정할 수 있다. 그러나 HTTP 스트리밍에 대한 종단에 MFRA를 위치설정하는 것은 원하는 데이터를 액세스하기 위해 전형적으로 3-4 HTTP 요청들을 필요로 한다: 파일의 종단으로부터 MFRA를 요청하기 위한 적어도 하나, MFRA를 획득하기 위한 하나, 그리고 마지막으로 파일에서 원하는 프래그먼트를 획득하기 위한 하나. 따라서, MFRA가 단일 요청에서 제 1 미디어 데이터와 함께 다운로드되기 때문에 시작에서 위치설정하는 것은 바람직할 수 있다. 또한, HTTP 스트리밍을 위해 MFRA를 이용하는 것은 비효율적일 수 있는데, 그 이유는 'MFRA'에서의 정보 중 어떠한 것도 시간 및 moof_offset과 별개로 요구되지 않으며, 길이들 대신에 오프셋들을 특정하는 것은 더 많은 비트들을 필요로 하기 때문이다.
두 번째, 아이템 로케이션 박스('ILOC')가 사용될 수 있다. 'ILOC'는 메타데이터 자원들이 포함하는 파일, 그 파일 내에서의 이들의 오프셋, 및 이들의 길이를 위치설정함으로써 이러한 또는 다른 파일들에 메타데이터 리소스들의 디렉토리를 제공한다. 예를 들어, 시스템은 외부적으로 참조되는 모든 메타데이터 리소스들을 하나의 파일로 통합해서, 이에 따라 파일 오프셋들 및 파일 참조를 재조정할 수 있다. 그러나 'ILOC'는 메타데이터의 위치를 제공하기 위해 의도되며, 따라서 ILOC가 실제 데이터와 공존하는 것은 어려울 수 있다.
마지막은, 그리고 아마도 가장 적절하게, 효율적 방식으로 정확한 프래그먼트 시간들 또는 지속 기간 및 바이트 오프셋을 제공할 목적으로 특히 전용되는, 시간 인덱스 박스('TIDX')로서 지칭되는 새로운 박스의 기술이다. 이는 다음 섹션에서 더욱 상세하게 설명된다. 동일한 기능들을 갖는 대안적인 박스는 세그먼트 인덱스 박스('SIDX')일 수 있다. 여기서, 다르게 지시되지 않는다면, 두 박스들이 효율적인 방식으로 정확한 프래그먼트 시간들 또는 지속 기간들 및 바이트 오프셋을 제공하는 능력을 제공할 수 있기 때문에, 이러한 두 박스는 서로 교환가능하다. TIDX와 SIDX 사이의 차이는 이하에서 제공된다. 두 박스들이 세그먼트 인덱스를 구현하기 때문에, TIDX 박스들과 SIDX 박스들을 어떻게 교환하는 지는 명확할 것이다.
4. 세그먼트 인덱싱
세그먼트는 식별된 시작 시간 및 식별된 수의 바이트를 갖는다. 다수의 프래그먼트들이 단일 세그먼트로 연쇄될 수 있으며, 클라이언트는 프래그먼트의 서브셋 또는 요구되는 프래그먼트에 대응하는 세그먼트 내에서 특정 바이트 범위를 식별하는 요청들을 발행할 수 있다. 예를 들어, HTTP가 요청된 프로토콜로서 사용되면, HTTP 범위 헤더가 이러한 목적을 위해 사용될 수 있다. 이러한 방식은 상이한 프래그먼트들의 세그먼트 내의 위치를 특정하는 세그먼트의 "세그먼트 인덱스"에 클라이언트가 액세스하는 것을 필요로 한다. 이러한 "세그먼트 인덱스"는 메타데이터의 일부로서 제공될 수 있다. 이러한 방식은 각 블록마다 개별 파일에 보관되는 방식과 비교하여 훨씬 더 적은 파일들이 생성되고 관리될 필요가 있는 결과를 갖는다. (이를 테면, 1시간 프리젠테이션을 위해 수천 개까지 확장할 수 있는) 매우 큰 수의 파일들의 생성, 전달 및 저장의 관리는 복잡하고 에러가 발생하기 쉬울 수 있으며, 따라서 파일들의 수의 감소는 장점을 나타낸다.
클라이언트가 세그먼트의 더 작은 부분의 원하는 시작 시간을 단지 알고 있는 경우, 클라이언트는 전체 파일을 요청할 수 있으며, 그래서 적절한 플레이아웃 시작 위치를 결정하기 위해 파일 전체를 판독할 수 있다. 대역폭 사용을 개선하기 위해, 세그먼트들은 메타데이터로서 인덱스 파일을 포함할 수 있고, 여기서 인덱스 파일은 개별 블록들의 바이트 범위들을 블록들이 대응하는 시간 범위들과 맵핑시키며, 세그먼트 인덱싱 또는 세그먼트 맵으로 불린다. 이러한 메타데이터는 XML 데이터로서 포맷팅될 수 있고, 이들은 예를 들어, 3GPP 파일 포맷의 아톰(atom) 및 박스 구조를 따르는 이진수일 수 있다. 인덱싱은 단순할 수 있는데, 여기서 각 블록의 시간 및 바이트 범위는 파일의 시작에 관하여 절대적이거나, 또는 이들은 계층적일 수 있으며, 여기서 일부 블록들은 부모 블록들로 그룹화되고(부모 블록들은 조부모 블록들로 그룹화되는 등), 주어진 블록에 대한 시간 및 바이트 범위는 블록의 부모 블록의 시간 및/또는 바이트 범위에 관하여 표현된다.
5. 예시적인 인덱싱 맵 구조
일 실시예에서, 미디어 스트림의 하나의 표현을 위한 본래의 소스 데이터가 본 명세서에서 "미디어 세그먼트"로 불리는 하나 이상의 미디어 파일들에 포함될 수 있으며, 여기서 각각의 미디어 세그먼트는 미디어의 연속한 시간 세그먼트, 예를 들어, 5분의 미디어 플레이백을 플레이백하기 위해 사용되는 미디어 데이터를 포함한다.
도 22는 미디어 세그먼트의 예시적인 전체 구조를 도시한다. 시작 또는 소스 세그먼트 전체에 확산된 각각의 세그먼트 내에서, 인덱싱 정보가 존재할 수 있으며, 이는 시간/바이트-오프셋 세그먼트 맵을 포함한다. 일 실시예에서, 시간/바이트-오프셋 세그먼트 맵은 시간/바이트-오프셋 쌍들((T(0),B(0)), (T(l),B(l)), (T(i),B(i)),...,(T(n),B(n)))의 리스트일 수 있으며, 여기서, T(i-l)은 모든 미디어 세그먼트들 중에서 미디어의 초기 시작 시간에 관한 미디어의 i 번째 프래그먼트의 플레이백을 위한 세그먼트 내의 시작 시간을 나타내며, T(i)는 i 번째 프래그먼트에 대한 종료 시간(및 따라서 다음 프래그먼트에 대한 시작 시간)을 나타내며, 바이트-오프셋 B(i-l)은 이러한 소스 세그먼트 내에서 데이터의 시작의 대응하는 바이트 인덱스이며, 여기서, 미디어의 i 번째 프래그먼트는 소스 세그먼트의 처음에 관하여 시작되며, B(i)는 i 번째 프래그먼트의 대응하는 종료 바이트 인덱스(및 따라서 다음 프래그먼트의 첫 번째 바이트의 인덱스)이다. 세그먼트가 다수의 미디어 컴포넌트들을 포함하면, T(i) 및 B(i)는 절대적인 방식으로 세그먼트에서 각각의 컴포넌트에 대해 제공될 수 있거나 또는 이들은 기준 미디어 컴포넌트를 서빙하는 다른 미디어 컴포넌트에 관하여 표현될 수 있다.
이러한 실시예에서, 소스 세그먼트에서 프래그먼트들의 수는 n 이며, 여기서, n은 세그먼트마다 변화할 수 있다.
다른 실시예에서, 각각의 세그먼트에 대한 세그먼트 인덱스에서의 시간 오프셋은 제 1 프래그먼트의 절대적인 시작 시간과 각각의 세그먼트에 대한 지속 기간들로 결정될 수 있다. 이러한 경우, 세그먼트 인덱스는 세그먼트에 포함되는 모든 프래그먼트들의 지속 기간 및 제 1 프래그먼트의 시작 시간을 기록(document)할 수 있다. 세그먼트 인덱스는 또한 오직 프래그먼트들의 서브셋을 기록할 수 있다. 이러한 경우, 세그먼트 인덱스는, 포함하는 세그먼트의 종단에서 또는 다음 서브세그먼트의 처음에서 종료하는 하나 또는 그 초과의 연속한 프래그먼트들로서 정의되는 서브세그먼트의 지속 기간을 기록한다.
각각의 프래그먼트에 대해, 프래그먼트가 탐색 포인트, 즉 상기 포인트 이후에 어떠한 미디어도 상기 포인트에 앞서 임의의 미디어에 의존하지 않는 포인트에서 시작하는지 또는 탐색 포인트를 포함하는지를 결정하는 값이 존재할 수 있고, 따라서 상기 프래그먼트 포워드로부터의 미디어는 앞선 프래그먼트와 독립적으로 플레이아웃될 수 있다. 탐색 포인트들은 일반적으로, 플레이아웃이 모든 앞선 미디어에 독립적으로 시작할 수 있는 이디어의 포인트들이다. 도 22는 또한 소스 세그먼트에 대한 가능한 세그먼트 인덱싱의 단순한 예를 도시한다. 이 예에서, 시간 오프셋 값은 밀리초 단위이며, 따라서, 이러한 소스 세그먼트의 제 1 프래그먼트는 미디어의 처음으로부터 20초에서 시작하며, 제 1 프래그먼트는 485밀리초의 플레이아웃 시간을 갖는다. 제 1 프래그먼트의 시작의 바이트 오프셋은 1이며, 제 2 프래그먼트의 제 1 프래그먼트/시작의 종료의 바이트 오프셋은 50,245이며, 제 1 프래그먼트는 50,245 바이트의 크기이다. 프래그먼트 또는 서브세그먼트가 랜덤 액세스 포인트에서 시작하지 않지만, 랜덤 액세스 포인트는 프래그먼트 또는 서브세그먼트에 포함되면, 디코딩 시간 또는 시작 시간과 실제 RAP 시간 사이의 프리젠테이션 시간 차가 주어질 수 있다. 이는 이러한 미디어 세그먼트로의 스위칭의 경우, 표현으로부터의 스위칭이 제공될 필요가 있을 때까지의 시간을 클라이언트가 정확하게 알 수 있게 한다.
단순 또는 계층적 인덱싱에 부가적으로, 또는 이에 대신하여, 데이지 체인식(daisy-chained)의 인덱싱 및/또는 하이브리드 인덱싱이 사용될 수 있다.
상이한 트랙들 동안의 샘플 지속 기간들이 동일하지 않을 수 있기 때문에(예를 들어, 비디오 샘플들은 33ms 동안 디스플레이될 수 있는 반면, 오디오 샘플은 80ms 간 지속될 수 있음), 영화 프래그먼트에서의 상이한 트랙들이 정확히 동일한 시간에 시작 및 종료하지 않을 수 있으며, 즉 보상을 위해 오디오는 비디오의 약간 앞 또는 약간 뒤에서 시작할 수 있고, 앞선 프래그먼트에서는 그 반대이다. 모호함을 방지하기 위해, 바이트 오프셋 데이터 및 시간에서 특정된 시간스탬프들이 특정 트랙에 대해 특정될 수 있으며, 이는 각각의 표현에 대해 동일한 트랙일 수 있다. 일반적으로 이는 비디오 트랙일 것이다. 이는 클라이언트가 표현들을 스위칭하고 있을 때 다음 비디오 프레임을 정확하게 식별하게 한다.
상기한 문제에도 불구하고 오디오/비디오 동기화의 유지 및 유연한 플레이아웃을 보장하기 위해, 트랙 시간 스케일과 프리젠테이션 시간 사이의 엄격한 관계를 유지하도록 프리젠테이션 동안 주의가 취해질 수 있다.
세그먼트 맵을 포함하는 박스의 두 특정 예는 이하에서 제공되는데, 하나는 시간 인덱스 박스('TIDX')로 지칭되고 하나는 ('SIDX')로 지칭된다. 정의는 ISO 기반 미디어 파일 포맷에 따른 박스 구조를 따른다. 동일한 시멘틱스 및 기능들을 갖고 유사한 신택스를 정의하기 위한 이러한 박스들에 대한 다른 설계들이 독자에게 명백할 것이다.
6. 타임 인덱스 박스
정의(Definition)
박스 타입(Box Tyoe): 'tidx'
컨테이너(Container): 파일
의무사항(Mandatory): 없음
수량(Quantity): 임의의 수의 0 또는 1
시간 인덱스 박스는 파일의 어떤 영역들을 프리젠테이션의 어떤 시간 간격들과 관련시키는 바이트 오프셋 인덱스들 및 시간의 세트를 제공한다. 시간 인덱스 박스는 targettype(타겟 타입) 필드를 포함할 수 있고, 이는 참조된(referenced) 데이터의 타입을 나타낸다. 예를 들어, 타겟 타입 "moof"를 갖는 시간 인덱스 박스는 시간 및 바이트 오프셋들 모두의 관점에서 필드에 포함되는 미디어 프래그먼트들로 인덱스를 제공한다. 시간 인덱스 박스의 타겟 타입을 갖는 시간 인덱스 박스는 계층적 시간 인덱스를 구성하도록 사용될 수 있어서, 필드의 사용자들이 신속하게 인덱스의 원하는 부분으로 네비게이팅하게 한다.
세그먼트 인덱스는 예를 들어, 이하의 신택스를 포함한다:
Figure pct00006

시멘틱스
?argettype: 이러한 시간 인덱스 박스에 의해 참조되는 박스 데이터의 타입. 이는 영화 프래그먼트 헤더("moof") 또는 시간 인덱스 박스("tidx") 중 하나 일 수 있다.
time_reference_track_id: 이러한 인덱스에서 시간 오프셋들이 특정되는 관련된 트랙을 나타냄.
number_of_elements: 이러한 시간 인덱스 박스에 의해 인덱싱되는 엘리먼트들의 수.
first_element_offset: 제 1 인덱싱된 엘리먼트의 필드의 시작으로부터의 바이트 오프셋.
first_element_time: time_reference_track_id:에 의해 식별되는 트랙의 미디어 헤더 박스에서 특정되는 시간 스케일을 이용하는, 제 1 인덱싱된 엘리먼트의 시작 시간.
random_access_flag: 엘리먼트의 시작 시간이 랜덤 액세스 포인트인 경우 1. 그렇지 않은 경우 0.
length: 바이트 단위의 인덱싱된 엘리먼트의 길이.
deltaT: 이러한 엘리먼트의 시작 시간과 다음 엘리먼트의 시작 시간 사이의 time_reference_track_id에 의해 식별되는 트랙의 미디어 헤더 박스에서 특정되는 시간 스케일의 관점에서의 차이.
7. 세그먼트 인덱스 박스
세그먼트 인덱스 박스('sidx')는 세그먼트에서 영화 프래그먼트들의 컴팩트 인덱스 및 다른 세그먼트 인덱스 박스들을 제공한다. 세그먼트 인덱스 박스에는 두 개의 루프 구조들이 존재한다. 제 1 루프는 서브세그먼트의 제 1 샘플, 즉 제 2 루프에 의해 참조되는 제 1 영화 프래그먼트에서의 샘플을 기록한다. 제 2 루프는 서브세그먼트의 인덱스를 제공한다. 'sidx' 박스를 위한 컨테이너는 바로 파일 또는 세그먼트이다. 신택스는 다음과 같을 수도 있다:
Figure pct00007

시멘틱스:
reference_track_ID는 기준 트랙에 대한 track_ID를 제공한다.
track_count: 다음 루프에서 인덱싱되는 트랙들의 수(1 또는 그 초과);
reference_count: 제 2 루프에 의해 인덱싱되는 엘리먼트들의 수(1 또는 그 초과);
track_ID: 트랙의 ID로서, 이에 대해 트랙 프래그먼트가 이러한 인덱스에서 식별되는 제 1 영화 프래그먼트에 포함됨; 이러한 루프에서 정확하게 하나의 트랙 ID는 reference_track_ID와 동일함;
decoding_time: (트랙의 미디어 헤더 박스의 시간 스케일 필드에서 기록되는 바와 같이) 트랙의 시간 스케일에서 표현되는, 제 2 루프에서 제 1 아이템에 의해 참조되는 영화 프래그먼트에서의 track_ID에 의해 식별되는 트랙에서 제 1 샘플에 대한 디코딩 시간;
reference_type: 0으로 설정할 때, 참조가 영화 프래그먼트('moof') 박스에 대한 것임을 나타내고, 1로 설정될 때, 참조가 세그먼트 인덱스('sidx') 박스에 대한 것임을 나타냄;
reference_offset: 포함하는 세그먼트 인덱스 박스 이후의 제 1 바이트로부터 참조된 박스의 제 1 바이트까지의 바이트 단위의 거리;
subsegment_duration: 참조가 세그먼트 인덱스 박스에 대한 것일 때, 이 필드는 상기 박스의 제 2 루프의 subsegment_duration 필드들의 합을 전달; 참조가 영화 프래그먼트일 때, 이러한 필드는 루프에서 다음 엔트리에 의해 기록되는 제 1 영화 프래그먼트나 서브세그먼트의 종단 중 어느 쪽이든 더 이른 것까지 표시된 영화 프래그먼트 및 후속 영화 프래그먼트들에서, 기준 트랙의 샘플들의 샘플 지속 기간들의 합을 전달; 지속 기간은 (트팩의 미디어 헤더 박스의 시간 스케일 필드에 기록된 바와 같이) 트랙의 시간 스케일로 표현된다;
contains_RAP: 참조가 영화 프레임에 대한 것일 때, 참조 트랙 ID와 동일한 트랙 ID를 갖는 트랙에 대해 상기 영화 프래그먼트 내의 트랙 프래그먼트가 적어도 하나의 랜덤 액세스 포인트를 갖는 경우 이 비트는 1일 수 있고; 참조가 세그먼트 인덱스에 대한 것일 때, 세그먼트 인덱스의 임의의 참조들이 1로 설정된 이러한 비트를 갖기만 하면 이 비트는 1로 설정되며, 그렇지 않으면 0이다;
RAP_delta_time: contains_RAP가 1인 경우, 랜덤 액세스 포인트(RAP)의 표현(컴포지션) 시간을 제공함; contains_RAP가 0인 경우 값 0 으로 보존됨. 시간은 reference_track_ID와 동일한 track_ID를 갖는 트랙에서, 이러한 엔트리에 의해 기록되는 세그먼트의 제 1 샘플의 디코딩 시간과 랜덤 액세스 포인트의 표현(컴포지션) 시간 사이의 차로서 표현된다.
8. TIDX와 SIDX 사이의 차들
TIDX와 SIDX는 인덱싱에 관하여 동일한 기능을 제공한다. SIDX의 제 1 루프는 부가로 제 1 영화 프래그먼트에 대한 글로벌 타이밍을 제공하지만, 글로벌 타이밍은 또한 참조 트랙에 대해 절대적으로 또는 상대적으로 영화 프래그먼트 그 자체에 포함될 수 있다.
SIDX의 제 2 루프는 TIDX의 기능을 구현한다. 구체적으로, SIDX는 reference_type 의해 인용되는 각각의 인덱스에 대한 참조를 위해 타겟들의 혼합을 갖도록 허용하는 반면, TIDX는 오직 TIDX 또는 오직 MOOF 중 하나만을 참조한다. TIDX에서의 number_of_elements는 SIDX에서의 참조 카운트에 대응하며, TIDX에서의 time_reference_track_id는 SIDX에서의 reference_track_ID에 대응하며, TIDX에서의 first_element_offset은 제 2 루프의 제 1 엔트리에서의 reference_offset에 대응하며, TIDX에서의 first_element_time은 제 1 루프에서의 reference_track의 decoding_time에 대응하며, TIDX에서의 the random_access_flag는 SIDX에서 RAP가 프래그먼트의 시작에 필수적으로 위치하지 않을 수 있고 따라서 RAP_delta_time을 필요로 하는 추가의 자유도를 갖는 SIDX에서의 contains_RAP에 대응하며, TIDX에서의 길이는 SIDX에서의 reference_offset에 대응하며, 끝으로 TIDX에서의 deltaT는 SIDX에서의 subsegment_duration에 대응한다. 따라서, 두 박스들의 기능들은 등가이다.
9. 가변 블록 크기 설정 및 서브-GoP 블록들
비디오 미디어의 경우, 요청들을 위한 블록 구조와 비디오 인코딩 구조 사이의 관계가 중요할 수 있다. 예를 들어, 각각의 블록이 탐색 포인트, 이를 테면, 랜덤 액세스 포인트("RAP")에서 시작하고, 각각의 블록이 비디오 시간의 동일한 지속 기간을 표현하면, 비디오 미디어의 적어도 일부의 탐색 포인트들의 위치(positioning)는 고정되고 탐색 포인트들은 비디오 인코딩 내에서 규칙적인 간격들로 발생할 것이다. 비디오 인코딩 기술 분야의 당업자에게 잘 열려져 있듯이, 탐색 포인트들이 비디오 프레임들 사이의 관계에 따라 배치되고, 특히 이들이 이전 프레임들과 공통점이 별로 없는 프레임들에 배치될 경우 압축 효율은 개선될 수 있다. 따라서, 블록들이 동일한 양의 시간을 나타내는 이러한 요건은 비디오 인코딩에 제한을 두어서, 압축이 준최적(suboptimal)이 될 수 있다.
고정된 위치들에서의 탐색 포인트들을 요구하는 것보다, 비디오 프리젠테이션 내의 탐색 포인트들의 위치가 비디오 인코딩 시스템에 의해 선택되게 하는 것이 바람직하다. 비디오 인코딩 시스템이 탐색 포인트들을 선택가능 하게 하는 것은 개선된 비디오 압축을 초래하고 따라서 비디오 미디어의 더 높은 품질이 주어진 이용가능한 대역폭을 이용하여 제공될 수 있어서, 개선된 사용자 경험을 초래한다. 현재의 블록-요청 스트리밍 시스템들은 모든 블록들이 (비디오 시간에서) 동일한 지속 기간을 가지며, 각각의 블록이 탐색 포인트에서 시작해야 하는 것을 요구할 수 있으며, 따라서 이는 현존 시스템들의 장점이다.
전술한 것에 비해 장점을 제공하는 신규한 블록-요청 스트리밍 시스템이 이제 설명된다. 일 실시예에서, 비디오 컴포넌트의 제 1 버전의 비디오 인코딩 프로세스는, 압축 효율을 최적화하기 위해 탐색 포인트들의 위치들을 선택하도록 구성될 수 있지만, 탐색 포인트들 사이의 지속 기간에 최대치가 존재한다는 요건을 갖는다. 후자의 요건은 인코딩 프로세스에 의한 탐색 포인트들의 선택을 제한하고 결국 압축 효율을 감소시킨다. 그러나 탐색 포인트들 사이의 지속 기간의 최대치가 너무 작지 않음(예를 들어, 약 1초 초과)을 전제로, 규칙적인 고정된 위치들이 탐색 포인트들에 대해 요구되면, 압축 효율의 감소는 초래된 효율에 비해 작다. 더욱이, 탐색 포인트들 사이의 지속 기간의 최대치가 수 초이면, 탐색 포인트들의 완전한 자유 위치와 비교하여 압축 효율에서의 감소는 일반적으로 매우 적다.
본 실시예를 포함하는 많은 실시예들에서, 일부 RAP들은 탐색 포인트들이 아닐지 모르는데, 즉 예를 들어, RAP가 인근의 탐색 포인트들에 시간상으로 너무 근접하기 때문에, 또는 RAP에 선행 또는 후속하는 탐색 포인트와 RAP 사이의 미디어 데이터의 양이 너무 작기 때문에, 두 개의 연속한 탐색 포인트들 사이에 있고 탐색 포인트로 선택되지 않은 RAP인 프레임이 존재할 수 있다.
미디어 프리젠테이션의 모든 다른 버전들 내의 탐색 포인트들의 위치는 제 1 (예를 들어, 가장 높은 미디어 데이터 레이트) 버전에서 탐색 포인트들과 동일하도록 제한될 수 있다. 이는 탐색 포인트들의 인코더 자유 선택을 허용하는 것과 비교하여 이러한 다른 버전에 대한 압축 효율을 감소시킬 수 있다.
탐색 포인트들의 사용은 프레임이 독립적으로 디코딩 가능할 것을 전형적으로 요구하며, 이는 일반적으로 그 프레임에 대한 낮은 압축 효율을 초래한다. 독립적으로 디코딩 가능하도록 요구되지 않는 프레임들은 다른 프레임들의 데이터를 참조하여 인코딩될 수 있으며, 이는 일반적으로 인코딩될 프레임과 참조 프레임들 사이의 공통성의 양에 의존하는 양만큼 그 프레임에 대한 압축 효율을 증가시킨다. 탐색 포인트 위치의 효율적인 선택은 앞선 프레임들과 낮은 공통성을 갖는 프레임을 탐색 포인트 프레임으로서 선택하며, 그로 인해 독립적으로 디코딩 가능한 방식으로 프레임을 인코딩함으로써 유발되는 압축 효율 불이익을 최소화한다.
그러나 프레임과 잠재적인 참조 프레임들 사이의 공통성의 레벨은, 본래의 컨텐트가 동일하기 때문에, 컨텐트의 상이한 표현들에 걸쳐 높게 상관된다. 결과로서, 제 1 변형에서 탐색 포인트들과 동일한 위치들이 되도록 다른 변형들에서 탐색 포인트들을 제한하는 것은 압축 효율에 큰 차이를 형성하지 않을 수 있다.
탐색 포인트 구조는 바람직하게 블록 구조를 결정하는데 사용된다. 바람직하게, 각각의 탐색 포인트는 블록의 시작을 결정하고, 연속한 탐색 포인트들 사이에서 데이터를 압축하는 하나 이상의 블록들이 존재할 수 있다. 탐색 포인트들 사이의 지속 기간이 우수한 압축성을 갖는 인코딩을 위해 고정되지 않기 때문에, 모든 블록들이 동일한 플레이아웃 지속 기간을 갖도록 요구되는 것은 아니다. 일부 실시예들에서, 블록들은 컨텐트의 버전들 사이에서 정렬되는데, 즉 컨텐트의 하나의 버전에서 특정 그룹의 프레임들에 걸치는 블록이 존재하면, 컨텐트의 다른 버전에서 동일한 그룹의 프레임들에 걸치는 블록이 존재한다. 컨텐트의 주어진 버전의 블록들은 중첩하지 않으며, 컨텐트의 프레임 하나 하나가 각각의 버전의 정확하게 하나의 블록 내에 포함된다. 다른 실시예들에서, 탐색 포인트들을 포함하는 블록들만이 상이한 버전들에 걸쳐 정렬된다.
탐색 포인트들 사이의 가변 지속 기간들, 결국 가변 지속 기간 GoP들의 효율적인 사용을 가능하게 하는 인에이블 특징은 세그먼트에 포함될 수 있거나 다른 수단에 의해 클라이언트에 제공될 수 있는 세그먼트 인덱싱 또는 세그먼트 맵이며, 즉 이는 프리젠터이션의 각각의 블록의 시작 시간 및 지속 기간을 포함하는, 제공될 수 있는 이러한 표현의 이러한 세그먼트와 관련되는 메타데이터이다. 사용자가 세그먼트 내의 특정 포인트에서 프리젠테이션이 시작하게 요청한 경우 프리젠테이션을 시작할 블록을 결정할 때 클라이언트는 이러한 세그먼트 인덱싱 데이터를 사용할 수 있다. 이러한 메타데이터가 제공되지 않으면, (예를 들어, 시작 블록의 인덱스를 제공하기 위해 평균 블록 지속 기간에 의해 (시간상) 요청된 시작 포인트를 분할하여 시작 블록을 선택함으로써) 프리젠테이션은 컨텐트의 시작에서만 또는 원하는 포인트에 근접한 랜덤 또는 대략적인 포인트에서 시작될 수 있다.
일 실시예에서, 각각의 블록은 개별 파일로서 제공될 수 있다. 다른 실시예에서, 다수의 연속한 블록들이 세그먼트를 형성하기 위해 단일 파일로 애그리게이팅될 수 있다. 이러한 제 2 실시예에서, 각각의 블록의 시작 시간 및 지속 기간 및 블록이 시작하는 파일 내의 바이트 오프셋을 포함하는 각각의 버전에 대한 메타데이터가 제공될 수 있다. 이러한 메타데이터는 초기 프로토콜 요청에 응답하여 제공될 수 있거나, 즉 세그먼트 또는 파일로부터 개별적으로 이용가능하거나, 예를 들어, 파일의 처음에서 블록들 그 자체로서 동일한 파일 또는 세그먼트 내에 포함될 수 있다. 기술 분야의 당업자에게 명백하듯이, 메타데이터를 클라이언트에게 전달하기 위해 요구되는 네트워크 리소스들을 감소시키기 위해, 이러한 메타데이터는 압축된 형태, 이를 테면 gzip 또는 델타 인코딩 또는 2진 형태로 인코딩될 수 있다.
도 22는 세그먼트 인덱싱의 예를 도시하며, 여기서 블록들은 가변 크기이며, 블록들의 범위(scope)는 부분적인 GoP, 즉 하나의 RAP와 다음 RAP 사이의 미디어 데이터의 부분적인 양이다. 이러한 예에서, 탐색 포인트들은 RAP 표시자(indicator)에 의해 표시되며, 여기서 1의 RAP 표시자 값은 블록이 RAP 또는 탐색 포인트에서 시작하거나 RAP 또는 탐색 포인트를 포함하는 것을 나타내며, 0의 RAP 표시자는 블록이 RAP 또는 탐색 포인트를 포함하지 않음을 나타낸다. 이러한 예에서, 처음 3개의 블록들, 즉 바이트 0 내지 157,033은 제 1 GoP를 포함하며, 이는 1.623초의 프리젠테이션 지속 기간을 가지며, 컨텐트의 프리젠테이션 시간은 20초에서 21.623초까지 진행한다. 이러한 예에서, 처음 3개의 블록들 중 첫 번째는 .485초의 프리젠테이션 시간을 포함하며, 세그먼트에서 처음 50,245바이트의 미디어 데이터를 포함한다. 이러한 예에서, 블록4, 블록5 및 블록6은 제 2 GoP를 포함하며, 블록7 및 블록8은 제3 GoP를 포함하고, 블록9, 블록 10 및 블록 11은 제4 GoP를 포함한다. 탐색 포인트들로서 지정되지 않으며 따라서 세그먼트 맵에서 RAP들로서 표시되지 않는, 미디어 데이터에 다른 RAP들이 존재할 수 있음을 주목해야 한다.
도 22를 다시 참조하면, 클라이언트 또는 수신기가 대략 22초의 시간 오프셋에서 미디어 프리젠테이션을 시작하는 컨텐트에 액세스하기를 원하면, 클라이언트는 관련된 미디어 데이터가 이러한 세그먼트 내에 있는 지를 우선 결정하기 위해 이하에서 더욱 상세하게 설명되는 MPD와 같은 다른 정보를 우선 사용할 수 있다. 클라이언트는 세그먼트의 제 1 부분을 다운로드하여 세그먼트 인덱싱을 획득할 수 있으며, 이 경우, 세그먼트 인덱싱은 예를 들어, HTTP 바이트 범위 요청을 이용하는 단지 수 바이트이다. 세그먼트 인덱싱을 이용하여, 클라이언트는 자신이 다운로드해애 하는 제 1 블록이 기껏해야 22초이고 RAP, 즉 탐색 포인트에서 시작하는 시간 오프셋을 갖는 제 1 블록이라는 것을 결정할 수 있다. 이러한 예에서, 비록 블록5가 22초보다 작은 시간 오프셋을 가지만, 즉 블록5의 시간 오프셋은 21.965초이지만, 세그먼트 인덱싱은 블록5가 RAP에서 시작하지 않음을 나타내고, 따라서 대신에, 세그먼트 인덱싱에 기초하여, 블록4의 시작 시간이 기껏해야 22초이고, 즉 블록4의 시작 시간 오프셋이 21.623초이고 블록4가 RAP에서 시작하기 때문에, 클라이언트는 블록4를 다운로드하도록 선택한다. 따라서, 세그먼트 인덱싱에 기초하여, 클라이언트는 바이트 오프셋 157,034에서 시작하는 HTTP 범위 요청을 할 것이다.
만일 세그먼트 인덱싱이 이용가능하지 않으면, 클라이언트는 이러한 데이터를 다운로드하기 전에 모든 앞선 157,034 바이트의 데이터를 다운로드해야 할 수도 있으며, 이는 훨씬 긴 시작 시간, 또는 채널 잽핑 시간을 초래하고 그리고 이용가능하지 않은 데이터의 낭비적인 다운로딩을 초래한다. 대안적으로, 세그먼트 인덱싱이 이용가능하지 않으면, 클라이언트는 원하는 데이터가 세그먼트 내에서 시작하는 위치를 근사화할 수 있지만, 근사화는 조악할 수 있으며 대략적인 시간을 누락할 수 있고, 그 다음, 클라이언트가, 다시 시동(start up) 지연을 증가시키는 퇴보를 요구한다.
일반적으로, 각각의 블록은, 앞선 블록들과 함께 미디어 플레이어에 의해 플레이아웃될 수 있는 미디어 데이터의 부분을 포함한다. 따라서, 세그먼트 내에 포함되거나 또는 다른 수단을 통해 클라이언트에 제공되는, 세그먼트 인덱싱 블록 구조의 클라이언트로의 시그널링 및 블록 구조는 네트워크 변화 및 방해에도 불구하고 끊김 없는 플레이아웃 및 신속한 채널 잽핑을 제공하기 위해 클라이언트의 능력을 현저하게 개선할 수 있다. 가변 지속 기간 블록들의 지원 및 세그먼트 인덱싱에 의해 인에이블되는 GoP의 단지 일부들을 포함하는 블록들은 스트리밍 경험을 현저하게 개선할 수 있다. 예를 들어, 클라이언트가 대략 22초에서 프리젠테이션의 플레이아웃을 시작하기를 원하는 전술한 예 및 도 22를 다시 참조하면, 하나 이상의 요청들을 통해 클라이언트는 블록4 내의 데이터를 요청하고, 그리고 나서 데이터가 플레이백을 시작하도록 이용가능하자마자 이를 미디어 플레이어에 제공할 수 있다. 따라서, 이러한 예에서, 블록4의 41,011 바이트가 클라이언트에서 수신되자마자 플레이아웃이 시작되고, 따라서 신속한 채널 잽핑 시간을 가능케한다. 대신에 플레이아웃이 개시되기 전에 클라이언트가 전체 GoP를 요청할 필요가 있다면, 이는 144,211 바이트의 데이터이기 때문에 채널 잽핑 시간은 더 길어 질 것이다.
다른 실시예들에서, RAP들 또는 탐색 포인트들은 또한 블록의 중간에서 발생할 수 있으며, RAP 또는 탐색 포인트가 블록 또는 프래그먼트 내의 어디에 있는지를 나타내는 세그먼트 인덱싱에 데이터가 존재할 수 있다. 다른 실시예들에서, 시간 오프셋은, 블록 내의 제 1 프레임의 프리젠테이션 시간 대신에, 블록 내의 제 1 프레임의 디코딩 시간일 수 있다.
도 23(a) 및 (b)는 다수의 버전들 또는 표현에 걸쳐 정렬된 탐색 포인트 구조를 크기설정(sizing)하는 가변 블록의 예를 도시한다; 도 23(a)는 미디어 스트림의 다수의 버전들에 대한 정렬된 탐색 포인트들을 이용한 가변 블록 크기설정을 도시하며, 도 23(b)는 미디어 스트림의 다수의 버전들에 대한 비정렬된 탐색 포인트들을 이용한 가변 블록 크기설정을 도시한다.
시간은 초 단위로 상부에 가로질러 표시되고, 두 표현을 위한 두 개의 세그먼트의 블록들 및 탐색 포인트들이 이 시간 라인에 대한 이들의 타이밍 관점에서 좌에서 우로 표시되며, 따라서 도시된 각각의 블록의 길이는 블록의 플레이아웃 시간에 비례하며 블록의 바이트들의 수에 비례하지 않는다. 이러한 예에서, 두 표현들의 두 세그먼트들에 대한 세그먼트 인덱싱은 탐색 포인트들에 대해 동일한 시간이지만, 잠재적으로 탐색 포인트들 사이의 프래그먼트들 또는 블록들의 상이한 수들을 가질 것이며 각 블록의 미디어 데이터의 상이한 양으로 인해 블록들에 대해 상이한 바이트 오프셋들을 가질 것이다. 이러한 예에서, 클라이언트가 대략 23초인 프리젠테이션 시간에서 표현 1로부터 표현 2로 스위칭하기를 원하면, 클라이언트는 표현 1에 대한 세그먼트에서 블록 1.2를 통해 요청할 수 있고, 블록 2.2에서 시작하는 표현 2에 대해 세그먼트의 요청을 시작할 수 있으며, 따라서 스위칭은 표현 2의 탐색 포인트 2.2 와 동일한 시간에 있는 표현 1의 탐색 포인트 1.2와 일치하는 프리젠테이션 시간에 발생할 것이다.
전술한 사항으로부터 명백하듯이, 설명된 블록-요청 스트리밍 시스템은 컨텐트 내의 특정 위치들에 탐색 포인트들을 배치시키도록 비디오 인코딩을 강제하지 않으며, 이는 현존 시스템들의 문제들 중 하나를 경감시킨다.
전술한 실시예들에서, 동일한 컨텐트의 다양한 표현들에 대한 탐색 포인트들이 정렬되도록 시스템이 구성된다. 그러나, 많은 경우, 이러한 정렬 요건을 완화하는 것이 바람직하다. 예를 들어, 인코딩 툴들이 탐색 포인트 정렬된 표현들을 생성하기 위한 능력들을 갖지 않은 표현들을 생성하기 위해 사용되는 경우가 때때로 있다. 다른 예로서, 컨텐트 프리젠테이션은 상이한 표현들 사이에 어떠한 탐색 포인트 정렬도 없이, 독립적으로 상이한 표현들로 디코딩될 수 있다. 다른 예로서, 표현은 더 낮은 레이트들 갖거나 및 더 통상적으로 스위칭될 필요가 있기 때문에 더 많은 탐색 포인트들을 포함하거나 고속 빨리 감기 또는 되감기 또는 고속 탐색과 같은 트릭 모드들을 지원하기 위해 탐색 포인트들을 포함한다. 따라서, 블록-요청 스트리밍 시스템을 컨텐트 프리젠테이션을 위한 다양한 표현들에 걸쳐 비정렬된 탐색 포인트들을 효율적으로 그리고 끊김 없이 처리하기 할 수 있게 하는 방법들을 제공하는 것이 바람직하다.
이러한 실시예에서, 표현들에 걸친 탐색 포인트들의 위치들은 정렬되지 않을 수 있다. 새로운 블록이 각각의 탐색 포인트에서 시작하도록 블록들이 구성되며, 따라서 프리젠테이션의 상이한 버전들의 블록들 사이에 정렬이 존재하지 않을 수 있다. 상이한 표현들 사이의 이러한 비정렬된 탐색 포인트 구조의 예는 도 23(b)에 도시된다. 시간은 초 단위로 상부에 가로질러 도시되며, 두 표현들에 대한 두 세그먼트들의 블록들 및 탐색 포인트들이 이러한 시간 라인에 대해 이들의 타이밍 관점에서 좌에서 우로 도시되며, 따라서, 도시된 각 블록의 길이는 블록의 플레이아웃 시간에 비례하고 블록의 바이트들의 수에 비례하지 않는다. 이러한 예에서, 두 표현들의 두 세그먼트들에 대한 세그먼트 인덱싱은 탐색 포인트들에 대해 잠재적으로 상이한 시간 오프셋들, 및 또한 탐색 포인트들 사이의 프래그먼트들 또는 블록들의 잠재적으로 상이한 수들, 및 각 블록의 미디어 데이터의 상이한 양으로 인해 블록들에 대한 상이한 바이트 오프셋들을 가질 것이다. 이러한 예에서, 클라이언트가 대략 25초인 프리젠테이션 시간에서 표현 1로부터 표현 2로 스위칭하기를 원하면, 클라이언트는 표현 1에 대한 세그먼트에서 블록 1.3을 통해 요청할 수 있고, 블록 2.3에서 시작하는 표현 2에 대해 세그먼트의 요청을 시작할 수 있으며, 따라서 스위칭은 표현 1의 탐색 포인트 1.3의 플레이아웃의 중간에 있는 표현 2의 탐색 포인트 2.3과 일치하는 프리젠테이션에서 발생할 것이다.
이러한 실시예에서, 블록 선택기(1823)의 동작은 변경될 수 있어서, 앞서 선택된 버전과 상이한 표현으로부터 블록을 선택하는 것이 요구될 때마다, 마지막 선택된 블록의 마지막 프레임에 후속하는 프레임보다 첫 번째 프레임이 더 늦지 않은 가장 최근의 블록이 선택된다.
마지막에 설명된 이러한 실시예는 제 1 버전이 아닌 버전들 내에서 탐색 포인트들의 위치들을 제한하기 위한 요건을 제거할 수 있으며, 따라서 이러한 버전들에 대한 압축 효율을 증가시켜서 주어진 이용가능한 대역폭에 대한 더 높은 품질의 프리젠테이션 및 결국 개선된 사용자 경험을 초래한다. 추가의 고려 사항은 컨텐트의 다수의 인코딩들(버전들)에 걸쳐 탐색 포인트 정렬의 기능을 수행하는 비디오 인코딩 툴들이 널리 사용가능하지 않을 수 있으며, 따라서 맨 마지막에 설명된 이러한 실시예의 장점은 현재 이용가능한 비디오 인코딩 툴들이 사용될 수 있다는 것이다. 다른 장점은 컨텐트의 상이한 버전들의 인코딩이 상이한 버전들에 대한 인코딩 프로세스들 사이의 조정에 대한 어떠한 필요성 없이 동시에 진행될 수 있다는 것이다. 다른 장점은, 인코딩 툴들에 특정 탐색 포인트 위치들의 리스트를 제공하지 않고 컨텐트의 추가의 버전들이 인코딩되어 더 늦은 시간에 프리젠테이션에 부가된다는 것이다.
일반적으로, 픽쳐들이 픽쳐들의 그룹(GoP)들로 인코딩되는 경우, 시퀀스의 첫 번째 픽쳐는 탐색 포인트일 수 있지만, 언제나 그러할 필요는 없다.
미디어 프리젠테이션 데이터 모델
도 24는 도 18에 도시된 컨텐트 저장의 가능한 구조를 도시하며, 세그먼트들 및 미디어 프리젠테이션 기술("MPD") 파일들, 및 세그먼트들의 브레이크다운, 타이밍 및 MPD 파일 내의 다른 구조를 포함한다. MPD 구조들 또는 파일들의 가능한 구현들의 세부사항들이 이제 설명될 것이다. 많은 예들에서, MPD는 파일로서 설명되지만, 비-파일 구조들이 또한 사용될 수 있다.
도 24에 도시된 바와 같이, 컨텐트 저장(1810)은 다수의 소스 세그먼트들(2410), MPD들(2410) 및 보수 세그먼트들(2412)을 포함한다. MPD는 기간 기록들(2401)을 포함할 수 있고, 이는 차례로 초기화 세그먼트들(2404) 및 미디어 세그먼트들(2405)에 대한 참조들과 같이 세그먼트 정보(2403)를 포함하는 표현 기록들(2402)을 포함할 수 있다.
도 25는 예시적인 메타데이터 테이블(2500)을 도시하는 한편, 도 26은 HTTP 스트리밍 서버(2606)에 대한 접속을 통해 미디어 블록들(2604) 및 메타데이터 테이블(2600)을 HTTP 스트리밍 클라이언트(2602)가 어떻게 획득하는지의 예를 도시한다.
본 명세서에 설명된 방법들에서, 클라이언트에 이용가능한 미디어 프리젠테이션의 표현에 관한 정보를 포함하는 "미디어 프리젠테이션 디스크립션"이 제공된다. 표현들은 클라이언트가 상이한 대안들 중 하나를 선택한다는 점에서 대안적일 수 있거나, 이들은 클라이언트가 몇몇 표현들을 선택하고, 각각이 대안들의 세트로부터 또한 가능하며 이들을 연합하여 제공한다는 점에서 상보적일 수 있다. 표현들은 그룹들에 유리하게 할당될 수 있으며, 클라이언트는 하나의 그룹에서의 표현들에 대해 이들이 서로에 대해 각각의 대안들임을 이해하도록 프로그래밍 또는 구성되는 반편, 상이한 그룹들로부터의 표현은 하나보다 많은 표현이 연합하여 제공되는 그러한 것이다. 다시 말해서, 클라이언트는 프리젠테이션을 형성하기 위해 그룹에 하나보다 많은 표현이 존재하면, 그 그룹으로부터 하나의 표현을 선택하고, 다음 그룹에서 하나의 표현을 선택하는 식이다.
표현들을 설명하는 정보는, 표현, 비디오 프레임 레이트, 비디오 해상도 및 데이터 레이트를 디코딩하기 위해 요구되는 적용되는 미디어 코덱들의 레벨들 및 프로파일들을 포함하는 이러한 코덱들의 세부사항들을 유리하게 포함할 수 있다. "미디어 프리젠테이션 디스크립션"을 수신하는 클라이언트는 표현이 디코딩 또는 프리젠테이션에 대해 적절한 지를 앞서 결정하기 위해 이러한 정보를 사용할 수 있다. 이는 장점을 나타내는데, 그 이유는 표현의 이진 데이터에 차별 정보(differentiating information)가 유일하게 포함되면, 그 적합함에 대한 정보를 찾아내기 위해 모든 표현들로부터 이진 데이터를 요청하고 관련된 정보를 분석 및 추출하는 것이 필요할 것이다. 데이터의 이러한 다수의 요청들 및 분석 부가 추출(parsing annex extraction)은 다소의 시간이 걸리고 이는 긴 시동 시간 및 결국 열악한 사용자 경험을 초래할 것이다.
부가적으로, "미디어 프리젠테이션 디스크립션"은 하루 중의 시간에 기반하여 클라이언트 요청들을 제한하는 정보를 포함할 수 있다. 예를 들어, 라이브 서비스의 경우, 클라이언트는 프리젠테이션의 요청 부분들에 대해 제한될 수 있으며, 이는 "현재 브로드캐스트 시간"에 가깝다. 이는 장점을 나타내는데 그 이유는 라이브 브로드캐스트의 경우 현재 브로드캐스트 시간 이전에 제공되는 임계치보다 많이 브로드캐스트되는 컨텐트에 대해 서빙 인프라구조로부터 데이터를 제거하는 것이 바람직할 수 있기 때문이다. 이는 서빙 인프라구조 내에서 저장 리소스들의 재사용을 위해 바람직할 수 있다. 이는 또한 제공된 서비스 타입에 의존하여 또한 바람직할 수 있으며, 예를 들어, 일부 경우들에서, 수신 클라이언트 디바이스들의 어떤 가입(subscription) 모델로 인해 프리젠테이션은 단지 라이브만 이용가능할 수 있는 반면, 다른 미디어 프리젠테이션들이 라이브 및 주문형(on-demand)에 이용가능하게 될 수 있으며, 다른 프리젠테이션들은 클라이언트 디바이스들의 1등급(first class)에 대해서 단지 라이브만이 이용가능하고, 클라이언트 디바이스의 2등급에 대해서는 주문형만 가능하고, 클라이언트 디바이스들의 3등급에 대해서는 라이브 또는 주문형의 조합이 가능하게 될 수 있다. (이하의) "미디어 프리젠테이션 디스크립션"에서 설명되는 방법들은, 서빙 인프라구조에서 이용가능하지 않을 수 있는 데이터에 대해 클라이언트가 사용자에 대한 제공들을 조정하고 요청들 회피할 수 있도록 클라이언트에 이러한 정책들이 통보되게 한다. 대안으로서, 예를 들어, 클라이언트는 이러한 데이터가 이용가능하지 않다는 통보를 사용자에게 제공할 수 있다.
본 발명의 추가의 실시예에서, 미디어 세그먼트들은 ISO/IEC 14496-12 또는 파생 상세(specificatoin)들(이를 테면, 3GPP 기술 상세 26.244에 설명된 3GP 파일 포맷)에서 설명된 ISO 기반 미디어 파일 포맷을 준수할 수 있다. (전술한) 3GPP 파일 포맷 섹션의 사용은 블록-요청 스트리맹 시스템 내에서 이러한 파일 포맷의 데이터 구조의 효율적인 사용을 허용하는 ISO 기반 미디어 파일 포맷에 대한 새로운 개선을 설명한다. 이러한 참조에서 설명되듯이, 정보가 파일 내에 제공될 수 있어서 파일 내의 바이트 범위들과 미디어 프리젠테이션의 세그먼트들 사이의 신속하고 효율적인 맵핑을 허용한다. 미디어 데이터 그 자체는 ISO/IEC14496-12에 정의된 영화 프래그먼트 구성에 따라 구조화될 수 있다. 시간 및 바이트 오프셋들을 제공하는 이러한 정보는 계층적으로 또는 정보의 단일 블록으로서 구조화될 수 있다. 이러한 정보는 파일의 시작에서 제공될 수 있다. 3GPP 파일 포맷 섹션의 사용에서 설명된 바와 같이 효율적인 인코딩을 사용하는 이러한 정보의 제공은, 블록 요청 스트리밍 시스템에 의해 사용된 파일 다운로드 프로토콜이 HTTP인 경우, 예를 들어, HTTP 부분 GET 부분 요청들을 이용하여 이러한 정보를 클라이언트가 신속하게 리트리브(retrieve)할 수 있게 하며, 이는 짧은 시동, 탐색 또는 스트리밍 스위치 시간을 초래하고 따라서 개선된 사용자 경험을 초래한다.
미디어 프리젠테이션의 표현들은, 전형적으로 대안들인, 표현들에 걸쳐 끊김 없는 스위칭을 보장하고, 그리고 두 개 또는 그 보다 많은 표현들의 동기 프리젠테이션을 보장하도록 글로벌 시간 라인에서 동기화된다. 따라서, 적응형 HTTP 스트리밍 미디어 프리젠테이션 내에서 표현들의 함유된 미디어의 샘플 타이밍은 다수의 세그먼트들에 걸친 연속한 글로벌 시간 라인에 관련될 수 있다.
다수의 타입들의 미디어를 포함하는 인코딩된 미디어의 블록, 예를 들어 오디오 및 비디오는 상이한 타입들의 미디어에 대해 상이한 프리젠테이션 종료 시간들을 가질 수 있다. 블록 요청 스트리밍 시스템에서, 각각의 미디어 블록들은, 각각의 미디어 타입이 연속적으로 플레이되고 따라서 하나의 블록으로부터의 하나의 타입의 미디어 샘플들이 다른 타입의 선행 블록의 미디어 샘플들 이전에 플레이 아웃될 수 있는 방식으로 연속적으로 플레이아웃될 수 있으며, 이는 본 명세서에서 "연속한 블록 스플라이싱"으로 지칭된다. 대안으로서, 이러한 미디어 블록들은 임의의 타입의 하나의 블록의 가장 이른 샘플이 임의의 타입의 선행 블록의 가장 늦은 샘플 이후에 플레이되는 식으로 플레이아웃될 수 있으며, 이는 본 명세서에서 "불연속 블록 스플라이싱"으로 지칭된다. 두 블록들이 순서대로 또는 다른 경우들로 인코딩된 연속한 컨텐트 아이템 및 동일한 표현으로부터 미디어를 포함할 때 연속한 블록 스플라이싱이 적절할 수 있다. 전형적으로, 하나의 표현 내에서, 연속한 블록 스플라이싱이 두 블록들을 스플라이싱할 때 적용될 수 있다. 이는 유리한데, 그 이유는 현존 인코딩이 적용될 수 있고 세그멘테이션이 블록 경계들에서 미디어 트랙들을 정렬할 필요 없이 수행될 수 있기 때문이다.
1. 미디어 프리젠테이션 디스크립션
미디어 프리젠테이션은 HTTP-스트리밍 서버 상의 파일들의 구조화된 컬렉션(collection)으로서 여겨질 수 있다. HTTP-스트리밍 클라이언트는 스트리밍 서비스를 사용자에게 제공하기 위해 충분한 정보를 다운로드할 수 있다. 대안적인 표현들은 3GP 파일로부터 또는 3GP 파일로 쉽게 변환될 수 있는 적어도 잘 정의된 데이터 구조들의 세트에 또는 3GPP 파일 포맷에 따르는 3GP 파일의 일부들 또는 하나 또는 그보다 많은 3GP 파일들로 구성될 수 있다.
미디어 프리젠테이션은 미디어 프리젠테이션 디스크립션에 의해 설명될 수 있다. 미디어 프리젠테이션 디스크립션(MPD)은, 적절한 시간에 데이터에 액세스하고 스트리밍 서비스를 사용자에게 제공하기 위해 클라이언트가 적절한 파일 요청들, 예를 들어, HTTP GET 요청들을 구성하도록 사용할 수 있는 메타데이터를 포함할 수 있다. 미디어 프리젠테이션 디스크립션은 적절한 3GPP 파일들 및 파일들의 부분(piece)들을 선택하도록 HTTP 스트리밍 클라이언트에 충분한 정보를 제공할 수 있다. 클라이언트에게 액세스 가능하다고 시그널링되는 유닛들은 세그먼트들로 지칭된다.
특히, 미디어 프리젠테이션 디스크립션은 다음과 같이 엘리먼트들 및 속성들을 포함할 수 있다.
2. 미디어 프리젠테이션 디스크립션 엘리먼트
엘리먼트 캡슐화 메카데이터는 스트리밍 서비스를 최종 사용자에게 제공하기 위해 HTTP 스트리밍 클라이언트에 의해 사용된다. MediaPresentationDescription Element는 이하의 속성들 및 엘리먼트들 중 하나 이상을 포함할 수 있다.
Version: 확장 가능을 보장하기 위한 프로토콜에 대한 버전 번호.
PresentationIdentifier: 프리젠테이션이 다른 프리젠테이션들 사이에서 고유하게 식별되게 하는 정보. 개별적인 필드들 또는 네임들을 또한 포함할 수 있음.
UpdateFrequency: 미디어 프리젠테이션 디스크립션의 업데이트 빈도, 즉 얼마나 자주 클라이언트가 실제 미디어 프리젠테이션 디스크립션을 리로드할 수 있는 지를 나타냄. 존재하지 않으면, 미디어 프리젠테이션은 고정적일 수 있음. 미디어 프리젠테이션의 업데이트는 미디어 프리젠테이션이 캐싱될 수 없음을 의미할 수 있음.
MediaPresentationDescriptionURI: 미디어 프리젠테이션 디스크립션을 업데이팅하기 위한 URI.
스트리밍: 스트림 또는 미디어 프리젠테이션의 타입을 설명: 비디오, 오디오 또는 텍스트. 비디오 스트림 타입은 오디오를 포함할 수 있고 텍스트를 포함할 수 있음.
Service: 추가의 속성들을 갖는 서비스 타입을 설명. 서비스 타입들은 라이브 및 주문형일 수 있음. 이는 어느 정도의 현재 시간을 초월하여 탐색 및 액세스가 허용되지 않음을 클라이언트에게 통보하기 위해 사용될 수 있음.
MaximumClientPreBufferTime: 클라이언트가 미디어 스트림을 프리버퍼링할 수 있는 최대량의 시간. 클라이언트가 이러한 최대 프리버퍼 시간을 초과하여 다운로드하는 것이 제한되는 경우, 이러한 타이밍은 점진적인 다운로드로부터의 스트리밍을 식별할 수 있다. 프리버퍼링의 관점에서 어떠한 제한들도 적용될 수 없음을 나타내는 값이 제공되지 않을 수 있다.
SafetyGuardlntervalLiveService: 서버에서 라이브 서비스의 최대 턴어라운드(turn-around) 시간에 대한 정보. 현재 시간에서 이미 액세스 가능한 정보가 무엇인지의 표시를 클라이언트에게 제공. 이 정보는, 클라이언트 및 서버가 UTC 시간 상에서 동작하도록 예상되고 어떠한 긴밀한 시간 동기화도 제공되지 않은 경우 필수적일 수 있다.
TimeShiftBufferDepth: 클라이언트가 현재 시간에 대해 라이브 서비스에 어디까지 이동할 수 있는 지에 대한 정보. 이러한 깊이의 확장에 의해, 시간 시프트 뷰잉(viewing) 및 캐치업(catch-up) 서비스는 서비스 제공에서 특정 변경들 없이 허용될 수 있다.
LocalCachingPermitted: 이러한 플래그는 HTTP 클라이언트가 다운로드된 데이터가 플레이된 후 이를 국부적으로 캐싱할 수 있는 지를 나타냄.
LivePresentationInterval: 시간 간격들을 포함하며, 이 시간 간격들 동안 프리젠테이션은 시작 시간들 및 종료 시간들을 특정함으로써 이용가능할 수 있다. 시작 시간은 서비스들의 시작 시간을 나타내며, 종료 시간은 서비스의 종료 시간을 나타낸다. 종료 시간이 특정되지 않으면, 종료 시간은 현재 시간에서 알려지지 않으며, 업데이트 빈도는 서비스의 실제 종료 시간 이전에 종료 시간에 대한 액세스를 클라이언트들이 획득하는 것을 보장할 수 있다.
OnDemandAvailabilityInterval: 프리젠테이션 간격은 네트워크 상에서의 서비스의 이용가능성을 나타낸다. 다수의 프리젠테이션 간격들이 제공될 수 있다. HTTP 클라이언트는 임의의 특정 시간 윈도우 밖의 서비스를 액세스하지 못할 수 있다. 주문형 간격의 제공에 의해, 추가의 시간 시프트 뷰잉이 특정될 수 있다. 이러한 속성은 또한 라이브 서비스에 대해 존재할 수 있다. 속성이 라이브 서비스에 대해 존재하는 경우, 서버는 모든 제공되는 이용가능성 간격들 동안 클라이언트가 주문형 서비스로서 서비스에 액세스할 수 있음을 보장할 수 있다. 따라서, 라이브 프리젠테이션 간격은 임의의 주문형 이용가능성 간격과 중첩하지 않을 수 있다.
MPDFileInfoDynamic: 이는 미디어 프리젠테이션에서 파일들의 디폴트 동적 구성을 설명한다. 더욱 상세한 사항들은 이하에서 제공된다. 몇몇 또는 모든 대안적인 표현에 대해 동일한 규칙들이 사용되면 MPD 레벨에 대한 디폴트 상세는 불필요한 반복을 면하게 할 수 있다.
MPDCodecDescription: 이는 미디어 프리젠테이션에서 메인 디폴트 코덱들을 설명한다. 더욱 상세한 사항들은 이하에서 설명된다. MPD 레벨에 대한 디폴트 상세는, 몇몇 또는 모든 표현들에 대해 동일한 코덱들이 사용되는 경우 불필요한 반복을 면하게 할 수 있다.
MPDMoveBoxHeaderSizeDoesNotChange: 이는 전체 미디어 프리젠테이션 내의 개별 파일들 중에서 MoveBox Header가 크기에서 변화하는 지를 나타내기 위한 플래그이다. 이러한 플래그는 다운로드를 최적화하기 위해 사용될 수 있으며, 특정 세그먼트 포맷들의 경우, 특히 세그먼트들이 moov 헤더를 포함하는 경우 유일하게 존재할 수 있다.
FileURIPattern: 이는, 미디어 프리젠테이션 내의 파일들에 대해 요청 메시지들을 생성하기 위해 클라이언트에 의해 사용되는 패턴이다. 상이한 속성들이 미디어 프리젠테이션 내의 파일들 각각에 대해 유일한 URI들의 생성을 허용한다. 베이스 URI는 HTTP URI일 수 있다.
Alternative Representation: 이는 표현들의 리스트를 설명한다.
1. 대안적인 표현 엘리먼트(AlternativeRepresentation Element)
하나의 표현에 대한 모든 메타데이터를 캡슐화하는 XML 엘리먼트. AlternativeRepresentation Element는 이하의 속성들 및 엘리먼트들을 포함할 수 있다.
RepresentationID: 미디어 프리젠테이션 내에서 이러한 특정한 Alternative Representation에 대한 고유한 ID.
FilesInfo Static: 하나의 대안적인 프리젠테이션의 모든 파일들의 URI 및 시작 시간들의 명시적인 리스트를 제공. 파일들의 리스트의 고정적인 제공은 미디어 디스크립션의 정확한 타이밍 디스크립션의 장점을 제공할 수 있지만, 특히 대안적인 표현이 많은 파일들을 포함하는 경우, 그렇게 컴팩트하지 않을 수 있다. 또한, 파일 네임들은 임의의 네임들을 가질 수 있다.
FilesInfoDynamic: 하나의 대안적인 프리젠테이션의 URI 및 시작 시간들의 리스트를 구성하기 위한 암시적 방식을 제공한다. 파일들의 리스트의 동적 제공은 더 많은 컴팩트 표현의 장점을 제공할 수 있다. 시작 시간들의 시퀀스만이 제공되면, 타이밍 장점들이 또한 여기서 유지되지만, 파일 네임들은 FilePatternURI에 동적으로 기반을 두고 구성될 것이다. 각각의 세그먼트의 지속 기간이 제공되기만 하면, 표현은 컴팩트하며, 라이브 서비스들 내에서 사용하기에 적절할 수 있지만, 파일들의 생성은 글로벌 타이밍에 의해 좌우될 수 있다.
APMoveBoxHeaderSizeDoesNotChange: Alternative Description 내에서 개별 파일들 중에서 MoveBox Header가 크기에서 변화하는 경우를 나타내는 플래그. 이러한 플래그는 다운로드를 최적화하기 위해 사용될 수 있고, 특정 세그먼트 포맷들의 경우, 특히 세그먼트들이 moov 헤더를 포함하는 경우 유일하게 존재할 수 있다.
APCodecDescription: 대안적인 프리젠테이션에서 파일들의 메인 코덱들을 설명.
미디어 디스크립션 엘리먼트(Media Description Element)
MediaDescription: 이러한 표현에 포한된 미디어에 대한 모든 메타데이터를 캡슐화할 수 있는 엘리먼트. 특히, 이는, 적용가능한 경우, 추천된 트랙들의 그룹은 물론 이러한 대안적인 프리젠테이션의 트랙들에 대한 정보를 포함할 수 있다. MediaDescription Attribute은 이하의 속성들을 포함한다:
TrackDescription: 이러한 표현에 포함된 미디어에 대한 모든 메타데이터를 캡슐화하는 XML 속성. TrackDescription Attribute는 이하의 속성들을 포함한다:
TrackID: 대안적인 표현 내의 트랙에 대한 고유한 ID. 이는 트랙이 그룹 디스크립션의 일부인 경우 사용될 수 있다.
Bitrate : 트랙의 비트레이트.
TrackCodecDescription: 이러한 트랙에 사용된 코덱에 대한 모든 속성들을 포함하는 XML 속성. TrackCodecDescription Attribute는 이하의 속성들을 포함한다:
MediaName: 미디어 타입을 정의하는 속성. 미디어 타입들은 "오디오", "비디오", "텍스트", "애플리케이션" 및 "메시지"를 포함한다.
Codec: CodecType은 프로파일 및 레벨을 포함한다.
LanguageTag: 적용가능한 경우, LanguageTag.
Max Width, MaxHeight: 비디오의 경우, 픽셀에서 포함된 비디오의 높이 및 폭.
SamplingRate: 오디오의 경우, 샘플링 레이트.
GroupDescription: 상이한 파라미터들에 기반하여 적절한 그룹핑을 위해 클라이언트에 추천을 제공하는 속성.
GroupType: 클라이언트가 트랙들을 어떻게 그룹핑할지를 결정하는데 기반하는 타입.
미디어 프리젠테이션 디스크립션에서의 정보는, 예를 들어, 액세스 대역폭, 디스플레이 능력들, 코덱 능력들 등은 물론 언어 등과 같은 사용자의 선호들의 관점에서 그 능력들을 매칭하는 적절한 표현으로부터 세그먼트들을 선택하는, 적절한 시간들에서 파일들/세그먼트들 또는 그들의 부분들에 대한 요청들을 수행하기 위해 HTTP 스트리밍 클라이언트에 의해 유리하게 사용된다. 더욱이, 미디어 프리젠테이션 디스크립션은 글로벌 시간라인에 시간 정렬되고 맵핑되는 표현을 기술하기 때문에, 클라이언트는 연합하여 표현을 제공하거나 미디어 프리젠테이션 내에서 탐색하기 위해, 표현들에 걸쳐 스위칭하기 위한 적절한 동작들을 개시하기 위한 진행중인 미디어 프리젠테이션 동안 MPD에서 정보를 사용할 수 있다.
1. 시그널링 세그먼트 시작 시간들(Signalling Segment Start Times)
표현은 시간에 대해 다수의 세그먼트들로 분할될 수 있다. 인터-트랙 타이밍 문제가 하나의 세그먼트의 마지막 프래그먼트와 다음 세그먼트의 다음 프래그먼트 사이에 존재한다. 또한, 다른 타이밍 문제가 일정한 지속시간의 세그먼트들이 사용되는 경우에 존재한다.
각각의 세그먼트에 대해 동일한 지속 기간을 사용하는 것은 MPD가 컴팩트하고 고정적이라는 장점을 가질 수 있다. 그러나 각각의 세그먼트는 여전히 랜덤 액세스 포인트에서 시작할 수 있다. 따라서, 비디오 인코딩이 이러한 특정 포인트들에서 랜덤 액세스 포인트들을 제공하도록 제한될 수 있거나, 실제 세그먼트 지속시간들이 MPD에서 특정되는 것처럼 정밀하지 않을 수 있다. 스트리밍 시스템이 비디오 인코딩 프로세스를 불필요하게 제한하지 않는 것이 바람직할 수 있으며, 따라서 두 번째 옵션이 바람직할 수 있다.
구체적으로, 파일 지속시간이 d초로 MPD에서 특정되면, n 번째 파일은 시간 (n-1)d 에서 또는 그 직후 랜덤 액세스 포인트부터 시작할 수 있다.
이러한 해결책(approach)에서, 각각의 파일은 글로벌 프리젠테이션 시간의 면에서는 세그먼트의 정확한 시작(start) 시간에 관한 정보를 포함할 수 있다. 이를 시그널링하기 위한 3개의 가능한 방식들은 하기의 것들을 포함한다.
(1) 첫째, MPD에 지정된(specified) 것처럼 정확한 타이밍에 대해 각각의 세그먼트의 시작 시간을 제한한다. 그러나, 이후 미디어 인코더(media encoder)는 IDR 프레임들의 배치(placement)에 대한 임의의 탄력성(flexibility) 갖지 않을 수 있고 파일 스트리밍을 위한 특정한 인코딩을 요구할 수 있다.
(2) 둘째, 각각의 세그먼트에 대한 MPD에 정확한 시작 시간을 부가한다. 온-디멘드(on-demand) 경우에 대해, MPD의 압축성(compactness)은 감소될 수 있다. 라이브(live) 경우에 대해, 이는 MPD의 정규(regular) 업데이트를 요구할 수 있으며 이는 확장성(scalability)을 감소시킬 수 있다.
(3) 셋째, 세그먼트가 이 정보를 포함한다는 점에서, 글로벌 시간 또는 표현(representation)의 발표된(announced) 시작 시간에 관한 정확한 시작 시간 또는 MPD의 세그먼트의 발표된 시작 시간을 세그먼트에 부가한다. 이는 적응식 스트리밍(adaptive streaming)에 전용된 새로운 박스(new box)에 부가될 수 있다. 이 박스는 또한 "TIDX" 또는 "SIDX" 박스에 의해 제공되는 것과 같은 정보를 포함할 수 있다. 이러한 세번째 해결책의 결과는, 세그먼트들 중 하나의 시작부(beginning) 부근의 특정 위치를 탐색(seeking)할 때, 클라이언트는 MPD에 기초하여, 요구되는 탐색 포인트를 포함하는 것에 대한 차후의 세그먼트를 선택할 수 있다는 것이다. 이 경우 간단한 응답은 리트리브된 세그먼트의 시작으로(즉, 탐색 포인트 이후 다음 랜덤 액세스 포인트로) 탐색 포인트 전방(forward) 이동시키는 것일 수 있다. 통상적으로, 랜덤 액세스 포인트들은 적어도 몇 초마다 제공되며 (그리고 여기에는 종종 이들을 덜 빈번하게 만드는 적은(little) 인코딩 이득이 제공되며) 최악의 경우 지정된 것보다 몇 초 늦게 탐색 포인트가 이동될 수 있다. 대안적으로, 클라이언트는 요청된 탐색 포인트가 사실상 이전 세그먼트에 있다는 세그먼트에 대한 헤더 정보를 리트리빙시에 결정할 수 있고 대신 그 세그먼트를 요청할 수 있다. 이는 탐색 동작(operation)을 실행하기 위해 요구되는 시간에서의 간헐적 증가(occasional increase)를 야기할 수 있다.
2. 액세스가능한 세그먼트들 리스트
미디어 프리젠테이션(media presentation)은, 각각이 오리지널 미디어 컨텐트에 대한 일부 상이한 버전의 인코딩을 제공하는 표현들의 세트를 포함한다. 표현들 자체는, 유리하게 다른 파라미터들에 비해 표현을 구별하는 파라미터들에 대한 정보를 포함한다. 이들은 또한, 액세스가능한 세그먼트들의 리스트를 명시적으로 또는 암시적으로 포함한다.
세그먼트들은 메타데이터만을 포함하는 타임-리스(time-less) 세그먼트들 및 주로(primarily) 미디어 데이터를 포함하는 미디어 세그먼트들에서 구별될 수 있다. 미디어 프리젠테이션 디스크립션(MPD)은 유리하게 암시적으로 또는 명시적으로, 세그먼트들 각각을 식별하고 세그먼트들 각각에 서로다른 속성들을 할당한다. 유리하게 각각의 세그먼트에 할당된 속성들은 세그먼트가 액세스가능한 기간, 그를 통해 세그먼트들이 액세스가능한 자원들 및 프로토콜들을 포함한다. 또한, 미디어 세그먼트들에는 유리하게, 미디어 프리젠테이션에서 세그먼트의 시작 시간, 및 미디어 프리젠테이션에서 세그먼트의 지속시간과 같은 속성들이 할당된다.
미디어 프리젠테이션이, 유리하게
Figure pct00008
과 같은 미디어 프리젠테이션 디스크립션에서의 속성에 의해 표시되 것처럼 "온-디멘드(on-demand)" 타입이면, 통상적으로 미디어 프리젠테이션 디스크립션은 전체 세그먼트들을 기술하며 또한 세그먼트들이 액세스가능할 때 그리고 세그먼트들이 액세스가능하지 않을 때의 표시를 제공한다. 세그먼트들의 시작 시간들은 유리하게, 동일한 미디어 프리젠테션들(그러나 상이한 시간들에서)의 플레이-백(play-back)을 시작하는 2 클라이언트들이 동일한 미디어 세그먼트들 뿐만 아니라 동일한 미디어 프리젠테이션 디스크립션을 이용할 수 있도록, 미디어 프리젠테이션의 시작에 관해 표현된다. 이는 유리하게 세그먼트들을 캐시(cache)하는 능력을 개선한다.
미디어 프리젠테이션이, 유리하게 속성 Service와 같은 미디어 프리젠테이션 디스크립션에서의 속성에 의해 표시되는 것처럼 "라이브(live)" 타입이면, 하루 중 실제 시간을 지난(beyond) 미디어 프리젠테이션을 포함하는 세그먼트들은, 세그먼트들이 MPD에 완전히 기술됨에도 불구하고 일반적으로 생성되지 않거나 또는 적어도 액세스가능하지 않다. 그러나, 미디어 프리젠테이션 서비스가 "라이브" 타입이라는 표시를 이용하여, 클라이언트는 MPD의 다운로드 시간 및 MPD에 포함된 정보에 기초하여 월-클록 타임(wall-clock time)에서 클라이언트 내부 시간 NOW에 대한 타이밍 속성들과 함께 액세스가능한 세그먼트들의 리스트를 생성할 수 있다. 서버는 월-클록 타임 NOW에서 MPD의 인스턴스(instance)로 동작하는 레퍼런스 클라이언트가 자원들을 액세스할 수 있도록, 자원을 액세스가능하게 만든다는 점에서 유리하게 동작한다.
특정하게, 레퍼런스 클라이언트는 MPD의 다운로드 시간 및 MPD에 포함된 정보에 기초하여 월-클록 타임에서 클라이언트 내부 시간 NOW에 대한 타이밍 속성들과 함께 액세스가능한 세그먼트들의 리스트를 생성한다. 시간이 진행(advancing)됨에 따라, 클라이언트는 동일한 MPD를 이용할 것이며 미디어 프리젠테이션을 연속적으로 플레이아웃(playout)하기 위해 사용될 수 있는 새로운 액세스가능한 세그먼트 리스트를 생성할 것이다. 따라서, 서버는 이러한 세그먼트들이 실제적으로 액세스가능하기 전에 MPD에서 세그먼트들을 발표할 수 있다. 이는, MPD의 빈번한 업데이팅 및 다운로딩을 감소시키기 때문에 유리하다.
각각이 시작 시간(tS)을 갖는 세그먼트들의 리스트가
Figure pct00009
과 같은 엘리먼트들의 플레이 리스트에 의해 명시적으로 또는
Figure pct00010
과 같은 엘리먼트를 사용함으로써 암시적으로 기술된다고 가정한다.
Figure pct00011
를 이용하는 세그먼트 리스트를 생성하는 유리한 방법이 하기에 기술된다. 이러한 구성 룰(construction rule)에 기초하여, 클라이언트는 본 명세서에서
Figure pct00012
로서 지칭되는 각각의 표현(r)에 대한 URL들의 리스트에 대한 액세스, 및 인덱스(i)를 갖는 각각의 세그먼먼트에 대한 시작 시간
Figure pct00013
을 갖는다.
세그먼트들의 액세스가능한 시간 윈도우를 생성하기 위한 MPD의 정보 사용은 하기의 룰들을 이용하여 수행될 수 있다.
"온-디멘드" 타입의 서비스에 대해, Service와 같은 속성에 의해 유리하게 표시되는 것처럼, 클라이언트에서 현재의 월-클록 타임 NOW가
Figure pct00014
과 같은 MPD 엘리먼트에 의해 유리하게 표현되는 가용성(availability)의 임의의 범위 내에 있다면, 이러한 온-디멘드 프리젠테이션의 기술된 모든 세그먼트들은 액세스가능하다. 클라이언트에서 현재의 월-클록 타임 NOW가 가용성의 임의의 범위를 벗어나면, 이러한 온-디멘드 프리젠테이션의 기술된 세그먼트들 어느 것도 액세스될 수 없다.
"라이브" 타입의 서비스에 대해, Service와 같은 속성에 의해 유리하게 표시되는 것처럼, 시작 시간
Figure pct00015
은 월-클록 타임에 가용성의 시간을 유리하게 표현한다. 가용성 시작 시간은 이벤트의 라이브 서비스 시간 및 캡처링(capturing), 인코딩, 및 공개(publishing)를 위한 서버에서의 소정의 턴-어라운드(turn-around) 시간의 조합으로서 유추(derive)될 수 있다. 예를 들어, 이러한 프로세스에 대한 시간은, 예를 들어 MPD에
Figure pct00016
로서 지정된 예에 대해 지정된 안전 가드(safety guard) 인터벌 tG를 사용하여 MPD에 지정될 수 있다. 이는 HTTP 스트리밍 서버에 대한 데이터의 가용성과 UTC 시간 간의 최소 차를 제공할 수 있다. 또 다른 실시예에서, MPD는 이벤트 라이브 시간 및 턴-어라운드 시간 간의 차로서 턴-어라운드 시간을 제공하지 않고도 MPD의 세그먼트의 가용성 시간을 명시적으로 지정한다. 하기 설명들에서, 임의의 글로벌 시간들이 가용성 시간들로서 지정된다는 것이 가정된다. 라이브 미디어 브로드캐스팅 기술분야의 업자들은 본 설명을 판독한 후 미디어 프리젠테이션 디스크립션에서의 적절한 정보로부터 이러한 정보를 유추할 수 있다.
클라이언트에서 현재의 월-클록 타임 NOW이
Figure pct00017
와 같은 MPD 엘리먼트에 의해 유리하게 표현되는 라이브 프리젠테이션 인터벌의 임의의 범위를 벗어나면, 이 라이브 프리젠테이션의 기술된 세그먼트들 어느 것도 액세스될 수 없다. 클라이언트에서 현재의 월-클록 타임 NOW이 라이브 프리젠테이션 인터벌 내에 있다면, 이 라이브 프리젠테이션의 기술된 세그먼트들의 적어도 특정 세그먼트들은 액세스가능할 수 있다.
액세스가능한 세그먼트들의 제약(restriction)은 하기의 값들에 의해 제어된다:
(클라이언트에 대해 이용가능한 것으로서의) 월-클록 타임 NOW.
미디어 프리젠테이션 디스크립션에
Figure pct00018
로서 지정된 예에 대해 허용된 시간-이동 버퍼 깊이 tTSB.
관련 이벤트 시간 t1에서의 클라이언트는 단지, (NOW - tTSB) 및 NOW의 인터벌에서의 또는 지속시간 d을 갖는 세그먼트의 마지막 시간이 또한 포함되어
Figure pct00019
및 NOW의 인터벌을 야기하게 하는 인터벌에서의 시작 시간들
Figure pct00020
을 갖는 세그먼트들을 요청하도록 허용될 수 있다.
3. MPD 업데이팅
일부 실시예들에서, 서버는, 예를 들어 서버 로케이션이 변경할 때, 또는 미디어 프리젠테이션이 서로 다른 서버로부터의 일부 광고를 포함할 때, 또는 미디어 프리젠테이션의 지속시간이 미지(unknown)일 때, 또는 서버가 이후의(following) 세그먼트들에 대한 로케이터를 혼란시키길(to obfuscate) 원할 때, 세그먼트들의 시작 시간들 및 파일 또는 세그먼트 로케이터를 사전에 인지할 수 없다.
이러한 실시예들에서, 서버는 MPD의 이러한 인스턴스가 공개된 이후 짧게 액세스가능한 또는 이미 액세스가능한 세그먼트들만을 기술할 수 있다. 또한, 일부 실시예들에서, 클라이언트는 사용자가 미디어 컨텐트의 생성을 위해 가능한 근접하게 포함된 미디어 프로그램을 경험하도록, MPD에 기술된 미디어에 근접한 미디어를 유리하게 소모한다. 클라이언트가 MPD의 기술된 미디어 세그먼트들의 마지막에 도달한다는 것을 예상하자마자, 클라이언트는 새로운 미디어 세그먼트들을 기술하는 새로운 MPD를 서버가 공개한다는 예상으로 연속적 플레이-아웃을 지속하기 위해 MPD의 새로운 인스턴스를 유리하게 요청한다. 서버는 MPD의 새로운 인스턴스들을 유리하게 생성하며 클라이언트들이 연속적 업데이트들에 대한 프로시저들에 대해 의지할 수 있도록 MPD를 업데이트한다. 서버는, 공통 클라이언트로서의 동작들이 동작할 수 있는 레퍼런스 클라이언트의 프로시저들에 대한 세그먼트 생성 및 공개와 함께 그의 MPD 업데이트 프로시저들을 적응할 수 있다.
MPD의 새로운 인스턴스가 단지 짧은 시간 진행(short time advance)을 기술하면, 클라이언트들은 MPD의 새로운 인스턴스들을 빈번하게 요청할 것을 필요로 한다. 이는 불필요한 빈번한 요청들로 인해 확장성 문제들 및 불필요한 업링크 및 다운링크 트래픽을 야기할 수 있다.
따라서, 한편으로는 세그먼트들을 아직 액세스가능하게 만들 필요없이 가능한 추후에 그 세그먼트들을 기술하고, 다른 한편으로는 MPD 내의 예측하지 못한 업데이트들이 새로운 서버 위치들을 표현하거나, 광고들과 같은 새로운 컨텐트의 삽입을 허용하거나, 또는 코덱 파라미터들에서의 변화들을 제공하는 것을 가능케하는 것이 적절하다.
또한, 일부 실시예들에서, 미디어 세그먼트들의 지속시간은 몇 초 범위로 작을 수 있다. 미디어 세그먼트들의 지속시간은 전달 또는 캐싱 특성들에 대해 최적화될 수 있는 적절한 세그먼트 크기들로 조절되고, 세그먼트들의 저장 또는 전달을 다루는 다른 양상들 또는 라이브 서비스들에서의 종대종 지연(end-to-end), 또는 다른 요인들에 대해 보상하도록 유리하게 탄력적이다. 특히 세그먼트들이 미디어 프리젠테이션 지속시간에 비해 작은 경우들이면, 상당한 양의 미디어 세그먼트 자원들 및 시작 시간들이 미디어 프리젠테이션 디스크립션에 기술될 필요가 있다. 결과적으로, 미디어 프리젠테이션 디스크립션의 크기는 클 수 있고 이는 미디어 프리젠테이션 디스크립션의 다운로드 시간에 악영향을 미칠 수 있고 이로 인해 미디어 프리젠테이션의 시동(start-up) 지연 및 또한 액세스 링크에 대한 대역폭 사용에 영향을 미칠 수 있다. 따라서, 플레이리스트들을 이용하여 미디어 세그먼트들의 리스트의 디스크립션을 허용할 뿐 아니라, 템플릿들 또는 URL 구성 룰들을 이용함으로써 디스크립션을 허용하는 것이 유리하다. 템플릿들 및 URL 구성 룰들은 이러한 디스크립션에서 동의어로 사용된다.
또한, 템플릿들은 현재 시간을 지난(beyond) 라이브 경우들에서 세그먼트 로케이터들을 기술하는데 유리하게 이용될 수 있다. 이러한 경우들에서, MPD의 업데이트 그 자체는 로케이터들처럼 불필요하며 뿐만 아니라 세그먼트 리스트는 템플릿들에 의해 기술된다. 그러나, 프리젠테이션들 또는 세그먼트들의 디스크립션에서 변화들을 요구하는 예측하지 못한 이벤트들이 여전히 발생할 수 있다. 적응식(adaptive) HTTP 스트리밍 미디어 프리젠테이션 디스크립션에서의 변화들은 다수의 서로 다른 소스들로부터의 컨텐트가 서로 결합될 때, 예를 들면 광고가 삽입되었을 때, 요구될 수 있다. 서로 다른 소스들로부터의 컨텐트는 다양한 방식들로 상이할 수 있다. 또 다른 원인은, 라이브 프리젠테이션들 동안, 하나의 라이브 원서버(origin server)로부터 다른 서버에 페일-오버(fail-over)를 제공하기 위해 컨텐트 파일들에 대해 사용되는 URL들을 변화시킬 필요가 있을 수 있다는 것이다.
일부 실시예들에서, MPD가 업데이트되면, MPD에 대한 업데이트들은, 레퍼런스 클라이언트 및 이에 따른 임의의 구현된 클라이언트가 MPD의 이전 인스턴스로부터 행해질 수 있는 것처럼, 이전의 PMD의 유효 시간까지 임의의 시간 동안 업데이트된 MPD로부터 액세스가능한 세그먼트들의 동일한 기능 리스트를 생성한다는 점에따라 업데이트된 MPD가 이전의 PMD와 호환되도록 실행되는 것이 유리하다. 이러한 요구조건은, (a) 클라이언트는, 업데이트 시간 이전에 구(old) MPD와 호환되기 때문에, 구(old) MPD와의 동기화 없이 새로운 MPD를 이용하여 즉시 시작될 수 있고; (b) 업데이트 시간이 MPD에 대한 실제 변화가 발생하는 시간과 동기화될 필요가 없다는 것을 보장한다. 다른 말로, MPD에 대한 업데이트들은 사전에 광고될 수 있으며 서버는, MPD의 서로 다른 버전들을 유지하지 않고도 새로운 정보가 이용될 수 있다면 MPD의 구 인스턴스를 교체할 수 있다.
2개의 가능성들은 모든 프리젠테이션들 또는 프리젠테이션들의 세트에 대한 MPD 업데이트에 대한 미디어 타이밍에 대해 존재할 수 있다. (a) 존재하는 글로벌 타임라인이 MPD 업데이트에 대해 지속되거나(본 명세서에서 "연속적 MPD 업데이트"로서 지칭됨), 또는 (b) 현재 타임라인이 종료(end)되고 새로운 타임라인이 변화에 따라 세그먼트로 시작된다(본 명세서에서 "불연속 MPD 업데이트"로 지칭됨).
이러한 옵션들 간의 차는 미디어 프래그먼트(Media Fragment) 및 이에 따른 세그먼트의 트랙들이 일반적으로 시작되지 않고 트랙들에 대한 상이한 샘플 입상도(granularity) 때문에 동일한 시간에 종료되는 것이 고려될 때 증명될 수 있다. 정규(normal) 프리젠테이션 동안, 프래그먼트의 하나의 트랙의 샘플들은 이전 프래그먼트의 또 다른 트랙의 일부 샘플들 이전에 렌더링될 수 있다, 즉 싱글 트랙 내에서는 오버랩되지 않을 수 있지만 프래그먼트들 사이에서는 일부 형태(kind)의 오버랩이 있다.
(a)와 (b) 사이의 차는, 이러한 오버랩이 MPD 업데이트에 대해 인에이블될 수 있는지 여부에 있다. MPD 업데이트가 완전한 분리 컨텐트의 결합(splicing) 때문인 경우, 이러한 오버랩은, 새로운 컨텐트가 이전의 컨텐트와 결합될 새로운 인코딩을 필요로함에 따라 일반적으로 달성하기 어렵다. 따라서, 특정 세그먼트들에 대한 타임라인을 재시작함으로써 미디어 프리젠테이션을 불연속적으로 업데이트하는 능력을 제공하고 가능하면 또한 업데이트 이후 프리젠테이션들의 새로온 세트를 한정하는 것이 유리하다. 또한, 컨텐트가 독립적으로 인코딩되고 세그먼트화되었다면, 컨텐트의 이전 피스(piece)의 글로벌 타임라인 내에 핏팅되게 타임스탬프들를 조정하는 것이 회피된다.
업데이트가 기술된 미디어 세그먼트들의 리스트에 단지 새로운 미디어 세그먼트들을 부가하는 것과 같은 극소 원인들(lesser reason)에 대한 것일 때, 또는 URL들의 로케이션이 변경되면, 오버랩 및 연속적 업데이트가 허용될 수 있다.
불연속 MPD 업데이트의 경우, 이전 프리젠테이션의 최종(lsat) 세그먼트의 타임라인은 세그먼트의 임의의 샘플의 가장 최종의 프리젠테이션 마지막 시간(latest presentation end time)에 종료된다. 다음 프리젠테이션의 타임라인(또는 보다 정확하게는, 미디어 프리젠테이션의 새로운 파트의 제 1 미디어 세그먼트의 제 1 프리젠테이션 시간, 또한 새로운 기간(period)으로 지칭됨)은 시임리스(seamless) 및 연속적 플레이아웃이 보장되도록 최종 기간의 프리젠테이션의 마지막과 동일한 이 인스턴트에서 통상적으로 그리고 유리하게 시작한다.
2가지 경우들이 도 27에 예시된다.
세그먼트 경계들(boundaries)에 대해 MPD 업데이트들을 제한하는 것이 바람직하고 유리하다. 세그먼트 경계들에 대한 이러한 변화들 또는 업데이트들을 제한하는 이유는 다음과 같다. 첫째, 각각의 표현, 통상적으로 무비 헤더(Movie Header)에 대한 바이너리 메타데이터(binary metadata)에 대한 변화들은, 적어도 세그먼트 경계들에서 발생할 수 있다. 둘째, 미디어 프리젠테이션 디스크립션은 세그먼트들에 대한 포인터들(URL들)을 포함할 수 있다. 어떤 의미에서, MPD는 미디어 프리젠테이션과 연관된 모든 세그먼트 파일들과 함께 그룹화되는 "엄브렐라(umbrella)" 데이터 구조이다. 이러한 포함 관계를 유지하기 위해, 각각의 세그먼트는 싱글 MPD에 의해 참조될 수 있으며 MPD가 업데이트될 때, 이는 유리하게 세그먼트 경계에서만 업데이트된다.
세그먼트 경계들은 일반적으로 정렬될 것이 요구되지 않지만, 서로 다른 소스들로부터 결합되는 컨텐트의 경우에 대해, 그리고 일반적으로 불연속 MPD 업데이트들에 대해, (특정하게, 각각의 표현의 최종(last) 세그먼트는 동일한 비디오 프레임에서 종료될 수 있으며 그 프레임의 프리젠테이션 보다 늦은 프리젠테이션 시작 시간을 갖는 오디오 샘플들을 포함하지 않을 수 있는) 세그먼트 경계들을 정렬하는 것이 합리적이다. 이후 불연속 업데이트는 기간(period)으로 지칭되는 공통 시간 인스턴트(instant)에서 표현들의 새로운 세트를 시작할 수 있다. 이러한 표현들의 새로운 세트의 유효(validity)의 시작 시간은, 예를 들어 기간 시작 시간에 의해 제공된다. 각각의 표현의 상대 시작 시간은 제로로 리셋되며 기간의 시작 시간은 글로벌 미디어 프리젠테이션 타임라인의 이러한 새로운 기간에서의 표현들의 세트를 배치한다(places).
연속적 MPD 업데이트들에 대해, 세그먼트 경계들은 정렬되게 요구되지 않는다. 각각의 대안적 표현의 각각의 세그먼트는 싱글 미디어 프리젠테이션 디스크립션에 의해 제어될 수 있으며, 따라서 추가의 미디어 세그먼트들이 동작하는 MPD에서 기술되지 않는다는 예측(anticipation)에 의해 일반적으로 트리거되는 미디어 프리젠테이션 디스크립션의 새로운 인스턴스들에 대한 업데이트 요청들은 소모될 것으로 예측되는 표현들의 세트를 포함하는 표현들의 소모된 세트에 따라 서로 다른 시간들에서 발생할 수 있다.
보다 일반적인 경우에서의 속성들 및 MPD 엘리먼트들에서의 업데이트들을 지원하기 위해, 표현들의 세트 또는 프리젠테이션들만이 아닌 임의의 엘리먼트들은 유효 시간(validity time)과 연관될 수 있다. 따라서, MPD의 특정 엘리먼트들이 업데이트될 필요가 있다면, 예를 들어 표현들의 수가 변경되거나 URL 구성 룰들이 변경되는 경우, 이러한 엘리먼트들은 엘리먼트들의 다수의 카피들을 해체(disjoint) 유효 시간들에 제공함으로써, 지정된 시간들에서 개별적으로 각각 업데이트될 수 있다.
유효성은 글로벌 미디어 시간과 바람직하게 연관되어, 유효 시간과 관련하여 연관되어 기술된 엘리먼트는 미디어 프리젠테이션의 글로벌 타임라인의 기간에서 유효하다.
앞서 논의된 것처럼, 일 실시예에서, 유효 시간들은 표현들의 풀 세트에 단지 추가된다. 이후 각각의 풀 세트는 기간을 형성한다. 이후 유효 시간은 기간의 시작 시간을 형성한다. 다른말로, 유효 엘리먼트를 이용하는 특정 경우에서, 표현들의 풀 세트는 표현들의 세트에 대한 글로벌 유효 시간에 의해 표시되는 시간에 관한 기간에 대해 유효할 수 있다. 표현들의 세트의 유효 시간은 기간으로 지칭된다. 새로운 기간의 시작시, 이전 세트 표현의 유효성은 만료되며 표현들의 새로운 세트는 유효하다. 기간들의 유효 시간들은 바람직하게 해체된다는 것이 다시 주목된다.
앞서 논의된 것처럼, 미디어 프리젠테이션 디스크립션에 대한 변화들은 세그먼트 경계들에서 발생하며, 각각의 표현에 대해, 엘리먼트 변화는 실제로 다음 세그먼트 경계에서 발생한다. 이후 클라이언트는 미디어의 프리젠테이션 시간 내의 시간의 각각의 인스턴트에 대해 세그먼트들의 리스트를 포함하는 유효 MPD를 형성할 수 있다.
불연속 블록 결합은, 블록들이 서로 다른 표현들로부터, 또는 서로 다른 컨텐트로부터, 예를 들어 컨텐트의 세그먼트 및 광고로부터 미디어 데이터를 포함하는 경우들에서, 또는 다른 경우들에서 적절할 수 있다. 이는 블록 경계들에서만 프리젠테이션 메타데이터에 대한 변화들이 발생하는 블록 요청 스트리밍 시스템에서 요구될 수 있다. 이는, 블록 내의 미디어 디코더 파라미터들을 업데이트하는 것은 블록들 사이에서만 이들을 업데이트하는 것보다 더 복잡할 수 있기 때문에, 구현 이유들에 대해 유리할 수 있다. 이 경우, 앞서 기술된 것처럼 유효 인터벌들은 근사치(approximate)로서 해석될 수 있고, 이로 인해 엘리먼트는 지정된 유효 인터벌의 시작 보다 앞서지 않은 제 1 블록 경계로부터 지정된 유효 인터벌의 마지막 보다 앞서지 않는 제 1 블록 경계까지 유효한 것으로 고려되게 유리하게 지정될 수 있다.
블록-요청 스트리밍 시스템에 대한 새로운 강화들을 기술하는 상기 예시적 실시예는 미디어 프리젠테이션들에 대한 변화들이란 명칭의 이후 제시되는 섹션에 기술된다.
4. 세그먼트 지속기간 시그널링
불연속 업데이트들은 프리젠테이션을 기간으로서 지칭되는 일련의 해체 인터벌들로 효과적으로 분할한다. 각각의 기간은 미디어 샘플 타이밍에 대한 그 자신의 타임라인을 갖는다. 기간 내의 표현의 미디어 타이밍은 각각의 기간 동안 또는 기간내의 각각의 표현 동안 세그먼트 지속시간들의 개별(separate) 콤팩트한 리스트를 지정함으로써 유리하게 표시될 수 있다.
예를 들어 기간 시작 시간으로 지칭되며, MPD 내의 엘리먼트들과 연관되는 속성은 미디어 프리젠테이션 시간 내의 특정 엘리먼트들의 유효 시간을 지정할 수 있다. 이러한 속성은 MPD의 임의의 엘리먼트들에 부가될 수 있다(유효성에 할당될 수 있는 속성들은 엘리먼트들에 대해 변경될 수 있다).
불연속 MPD 업데이트들에 대해, 모든 표현들의 세그먼트들은 불연속성으로 중단될 수 있다. 이는 일반적으로 적어도, 불연속성이 이전의 최종 세그먼트가 이전의 것들과 서로 다른 지속시간을 갖는다는 것을 의미한다. 시그널링 세그먼트 지속시간은 각 세그먼트에 대한 개별 지속시간을 표시하거나 또는 모든 세그먼트들이 동일한 지속시간을 갖는다는 것을 표시하는 것을 수반할 수 있다. 이들 중 다수가 동일한 지속시간을 갖는 경우 효과적인 세그먼트 지속시간들의 리스트에 대한 콤팩트한 표현을 갖는 것이 바람직할 수 있다.
하나의 표현 또는 표현들의 세트에서 각각의 세그먼트의 지속시간들은 불연속 업데이트의 시작, 즉 MPD에 최종 미디어 세그먼트가 기술될 때까지 기간의 시작로부터의 싱글 인터벌 동안 모든 세그먼트 지속시간들을 지정하는 싱글 스트링으로 유리하게 실행될 수 있다. 일 실시예에서, 이러한 엘리먼트의 포맷은 세그먼트 지속시간 엔트리들의 리스트를 포함하는 프로덕션(production)에 따르는 텍스트 스트링이며, 각각의 엔트리는 지속시간 속성 dur, 및 이러한 표현이 제 1 엔트리의 지속시간 <dur>의 제 1 엔트리 세그먼트들의 <mult>를, 이후에 제 2 엔트리의 지속시간 <dur>의 제 2 엔트리 세그먼트들의 <mult> 등을 포함하는 것을 표시하는 속성의 선택적 멀티플라이어 mult를 포함한다.
각각의 지속시간 엔트리는 하나 이상의 세그먼트들의 지속시간을 지정한다. <dur> 값이 "*" 문자 및 숫자로 이어지면, 이러한 숫자는 이러한 지속시간(초 단위)을 갖는 연이은(consecutive) 세그먼트들의 수를 지정한다. 멀티플라이어 부호 "*"가 없다면, 세그먼먼트들의 수는 1이다. "*"가 존재하고 숫자가 후속하지 않은다면, 모든 후속 세그먼트들은 지정된 지속시간을 가지며 리스트에는 추가 엔트리들이 없을 수 있다. 예를 들어, 스트링 "30*"은 30초의 지속시간을 갖는 모든 세그먼트들을 의미한다. 스트링 "30* 12 10.5"은 30초의 지속시간을 갖는 12개의 세그먼트들에 이어 10.5초의 지속시간을 갖는 1개의 세그먼트를 표시한다.
세그먼트 지속시간들이 각각의 대안적 표현에 대해 개별적으로 지정되는 경우, 각각의 인터벌 내의 세그먼트 지속시간들의 합은 각각의 표현에 대해 동일할 수 있다. 비디오 트랙들의 경우, 인터벌은 각각의 대안적 표현에서 동일한 프레임에 대해 종료될 수 있다.
통상의 당업자들은, 이 개시물을 판독시에, 콤팩트한 방식으로 세그먼트 지속시간들을 표현하는 유사한 그리고 등가적인 방식들을 찾을 수 있을 것이다.
다른 실시예에서, 세그먼트의 지속시간은 신호 지속시간 속성 <duration>에 의한 최종의 것을 제외하고 표현에서의 모든 세그먼트들에 대해 일정하게 시그널링된다. 불연속 업데이트 이전의 최종 세그먼트의 지속시간은 다음 불연속 업데이트의 시작 포인트 또는 새로운 기간의 시작이 제공되는 한 더 짧을 수 있고, 이는 이후 다음 기간의 시작에 이르는 최종 세그먼트의 지속시간을 암시한다.
추가적인 실시예들은 본 발명을 읽은 이후에 당업자에게 구상될 수 있다. 다른 실시예들에서는, 위에서 설명된 본 발명의 조합들 또는 서브-조합들이 유리하게 이루어질 수 있다. 예시적인 컴포넌트들의 배열들이 예시의 목적들을 위해서 도시되어 있고, 조합들, 추가들, 재배열들 등이 본 발명의 대안적인 실시예들에서 고찰된다는 점이 이해되어야 한다. 따라서, 비록 본 발명은 예시적인 실시예들에 대해 설명되었지만, 당업자는 다수의 변경들이 가능함을 인지할 것이다.
예컨대, 여기서 설명된 프로세스들은 하드웨어 컴포넌트들, 소프트웨어 컴포넌트들, 및/또는 이들의 임의의 조합을 사용하여 구현될 수 있다. 일부 경우들에 있어서, 소프트웨어는 미디어에 제공되거나 또는 미디어로부터 분리되는 하드웨어 상에서의 실행을 위해 유형의 비일시적인 매체들 상에 제공될 수 있다. 명세서 및 도면들은 따라서 제약적인 의미보다는 예시적인 것으로 간주되어야 한다. 그러나, 다양한 변경들 및 변화들이 청구항들에서 설명된 바와 같은 본 발명의 사상 및 범위로부터 벗어나지 않고 본 발명에 대해 이루어질 수 있다는 점 및 본 발명이 모든 변경들 및 등가물들을 아래의 청구항들의 범위 내에 포함시키도록 의도된다는 점이 명백할 것이다.

Claims (21)

  1. 서버로부터 클라이언트에 전송되는 미디어 스트림에서, 적응형 HTTP 스트리밍을 위해 표현들 사이에서 스위칭하기 위한 시그널링 방법으로서,
    표현의 세그먼트들과 세그먼트 맵들을 연관시키는 단계 ―세그먼트 맵은, 바이트 오프셋 정보와 함께, 연관된 세그먼트들 내의 시간적 진입 및 시간적 이탈 포인트들 모두를 포함함―; 및
    상기 연관된 세그먼트들의 시간 스팬(span)들과는 독립적인 예측가능한 시간 스팬 패턴들을 갖는 세그먼트 맵들을 생성하는 단계를 포함하는,
    적응형 HTTP 스트리밍을 위해 표현들 사이에서 스위칭하기 위한 시그널링 방법.
  2. 복수의 표현들로서 스트리밍되는 컨텐츠를 포맷하는 방법으로서,
    상기 복수의 표현들 각각은 컨텐츠의 아이템에 대한 대안(alternative)이고, 상기 컨텐츠는, 상기 컨텐츠가 이용되는 프리젠테이션 내의 시간들을 정의하는 프리젠테이션 시간들을 정의하고,
    상기 방법은,
    각각의 표현을 상기 표현에 대한 복수의 세그먼트들로서 구성하는 단계 ―세그먼트는, 상기 표현에 대한 다른 세그먼트들 사이에서 시간적 순서를 갖는 컨텐츠의 일부와 관련된 데이터를 포함하고, 상기 세그먼트는, 이전 세그먼트에 액세스하지 않은 수신기에 의해 이용가능하게 되고, 세그먼트의 시간적 진입 시간 및 시간적 이탈 시간은, 상기 세그먼트의 데이터를 이용하여 제시가능한 상기 프리젠테이션의 일부를 나타냄―;
    표현의 바이트 오프셋들 및 상기 컨텐츠의 프리젠테이션 시간들을 맵핑하는 바이트 오프셋 정보와 함께, 상기 컨텐츠의 프리젠테이션 시간들에 대응하는 시간적 전이 포인트들을 포함하는 세그먼트 맵을 생성하는 단계; 및
    적어도, 상기 시간적 진입 포인트들 중 일부 및 상기 시간적 이탈 포인트들 중 일부를 정렬시키는 단계를 포함하고,
    상기 정렬은, 제 1 표현의 세그먼트에 대한 시간적 진입 포인트에 대한 프리젠테이션 시간이, 제 2 표현의 세그먼트에 대한 시간적 이탈 포인트에 대한 프리젠테이션 시간에 매칭되게 하고, 상기 정렬은 복수의 매칭들을 도출하는,
    복수의 표현들로서 스트리밍되는 컨텐츠를 포맷하는 방법.
  3. 제 2 항에 있어서,
    각각의 세그먼트에 대해 파일명칭을 결정하는 단계; 및
    저장된 각각의 세그먼트의 상기 파일명칭을 이용하여, 각각의 세그먼트의 컨텐츠를 복수의 파일들로서 저장하는 단계를 더 포함하는, 복수의 표현들로서 스트리밍되는 컨텐츠를 포맷하는 방법.
  4. 제 3 항에 있어서,
    클라이언트 소모 컨텐츠에서, 컨텐츠 요청을 결정하는 단계 ―상기 컨텐츠 요청은 적어도 하나의 표현 및 프리젠테이션 시간 범위를 특정함―;
    상기 컨텐츠 요청에 대응하는 세그먼트들을 표현하는 복수의 파일들에서 파일들에 대한 하나 또는 그 초과의 URL들의 세트를 결정하는 단계;
    상기 URL들의 세트를 이용하여 세그먼트들을 요청하는 단계;
    상기 세그먼트들을 수신하는 단계; 및
    상기 세그먼트들로부터의 컨텐츠를 상기 클라이언트의 컨텐츠 소모기에 제공하는 단계를 더 포함하는, 복수의 표현들로서 스트리밍되는 컨텐츠를 포맷하는 방법.
  5. 네트워크에 접속할 수 있고, 상기 네트워크에 요청들을 행할 수 있고, 넌제로(nonzero) 플레이아웃 시간을 갖는 컨텐츠를 제시할 수 있는 클라이언트 디바이스를 이용하여, 컨텐츠를 요청하는 방법으로서,
    컨텐츠 요청을 결정하는 단계 ―상기 컨텐츠 요청은 적어도 하나의 프리젠테이션 및 프리젠테이션 시간 범위를 특정하고, 상기 프리젠테이션 시간 범위는 요청되고 있는 프리젠테이션 중 전부 또는 몇몇의 일부를 정의함―;
    저장된 미디어 프리젠테이션 데이터세트로부터, 요청 포맷 템플릿, 세그먼트 시간 길이 및 가변 세그먼트 범위를 판독하는 단계 ―상기 가변 세그먼트 범위는 세그먼트들에 대한 프리젠테이션 시간 범위에서의 변동을 정의하고, 상기 변동은 상기 미디어 프리젠테이션 데이터세트에 저장된 세그먼트 시간에 대한 것임―;
    초기 세그먼트 인덱스를 결정하기 위해, 세그먼트 시간 길이의 값을, 상기 프리젠테이션 시간 범위의 시작에 대응하는 시간적 진입 포인트에 비교하는 단계;
    원하는 세그먼트 인덱스를 결정하기 위해, 상기 초기 세그먼트 인덱스, 상기 가변 세그먼트 범위, 상기 세그먼트 시간 길이 및 상기 가변 세그먼트 범위를 평가하는 단계;
    상기 원하는 세그먼트 인덱스 및 상기 요청 포맷 템플릿에 기초하여, 상기 컨텐츠 요청에 대응하는 파일 요청을 생성하는 단계; 및
    상기 파일 요청을 이용하여 적어도 하나의 파일을 요청하는 단계를 포함하는,
    컨텐츠를 요청하는 방법.
  6. 제 5 항에 있어서,
    상기 파일 요청은 URL이고, 적어도 하나의 파일을 요청하는 단계는 상기 URL을 이용하는 HTTP 요청들을 이용하여 수행되는, 컨텐츠를 요청하는 방법.
  7. 제 5 항에 있어서,
    상기 초기 세그먼트 인덱스는, 상기 시간적 진입 포인트를 상기 세그먼트 시간 길이로 나누기(dividing)함으로써 결정되고, 상기 원하는 세그먼트 인덱스는, 상기 나누기로부터의 나머지가 상기 가변 세그먼트 범위보다 작은 경우 초기 세그먼트 인덱스로서 결정되고, 상기 나누기로부터의 나머지가 상기 가변 세그먼트 범위와 동일하거나 그보다 큰 경우 상기 초기 세그먼트 직전의 세그먼트 인덱스로서 결정되는, 컨텐츠를 요청하는 방법.
  8. 제 5 항에 있어서,
    상기 프리젠테이션 시간 범위의 종료에 대응하거나 그보다 더 늦은 시간적 이탈 포인트를 갖는 컨텐츠를 포함하는 세그먼트가 수신될 때까지 파일 요청들을 반복하는 단계를 더 포함하는, 컨텐츠를 요청하는 방법.
  9. 제 5 항에 있어서,
    상기 세그먼트 시간 길이에 대한 변동은, 세그먼트 프리젠테이션 시간이, 상기 세그먼트 시간 길이 내지 상기 세그먼트 시간 길이 플러스 상기 변동의 시간 범위에 있게 하는 시간 범위인, 컨텐츠를 요청하는 방법.
  10. 제 5 항에 있어서,
    상기 세그먼트 시간 길이에 대한 변동은, 세그먼트 프리젠테이션 시간이, 상기 세그먼트 시간 길이의 1.0배 내지 상기 세그먼트 시간 길이의 1+P배가 되게 하는 비율(proportion) P인, 컨텐츠를 요청하는 방법.
  11. 제 5 항에 있어서,
    상기 세그먼트 시간 길이에 대한 변동은, 세그먼트 프리젠테이션 시간이, 상기 변동의 시간 범위에 걸쳐서(ranging over) 상기 세그먼트 시간 길이보다 크거나 또는 작게될 수 있게 하는 시간 범위인, 컨텐츠를 요청하는 방법.
  12. 제 11 항에 있어서,
    상기 프리젠테이션 시간 범위의 종료에 대응하거나 그보다 더 늦은 시간적 이탈 포인트를 갖는 컨텐츠를 포함하는 세그먼트가 수신될 때까지 파일 요청들을 반복하는 단계를 더 포함하는, 컨텐츠를 요청하는 방법.
  13. 제 5 항에 있어서,
    세그먼트들은 복수의 표현들 중 하나로부터 요청되고, 상기 복수의 표현들 각각은 컨텐츠의 아이템에 대한 대안인, 컨텐츠를 요청하는 방법.
  14. 네트워크를 통해 요청할 수 있고 네트워크를 통해 리트리브되는 컨텐츠를 제시할 수 있는 클라이언트 디바이스로서,
    상기 컨텐츠는 넌제로 플레이아웃 시간을 갖고,
    상기 클라이언트 디바이스는,
    저장된 명령들을 실행할 수 있는 프로세싱 엘리먼트;
    데이터를 저장할 수 있는 메모리;
    명령들을 저장할 수 있는 메모리;
    컨텐츠 요청을 결정하기 위한 프로그램 코드 ―상기 컨텐츠 요청은 적어도 하나의 프리젠테이션 및 프리젠테이션 시간 범위를 특정하고, 상기 프리젠테이션 시간 범위는 요청되고 있는 프리젠테이션 중 전부 또는 몇몇의 일부를 정의함―;
    저장된 미디어 프리젠테이션 데이터세트로부터, 요청 포맷 템플릿, 세그먼트 시간 길이 및 가변 세그먼트 범위를 판독하기 위한 프로그램 코드 ―상기 가변 세그먼트 범위는 세그먼트들에 대한 프리젠테이션 시간 범위에서의 변동을 정의하고, 상기 변동은 상기 미디어 프리젠테이션 데이터세트에 저장된 세그먼트 시간에 대한 것임―;
    초기 세그먼트 인덱스를 결정하기 위해, 세그먼트 시간 길이의 값을, 상기 프리젠테이션 시간 범위의 시작에 대응하는 시간적 진입 포인트에 비교하기 위한 프로그램 코드;
    원하는 세그먼트 인덱스를 결정하기 위해, 상기 초기 세그먼트 인덱스, 상기 가변 세그먼트 범위, 상기 세그먼트 시간 길이 및 상기 가변 세그먼트 범위를 평가하기 위한 프로그램 코드;
    상기 원하는 세그먼트 인덱스 및 상기 요청 포맷 템플릿에 기초하여, 상기 컨텐츠 요청에 대응하는 파일 요청을 생성하기 위한 프로그램 코드;
    상기 네트워크에 메시지들을 전송하고 상기 네트워크로부터 메시지들을 수신하기 위한 네트워크 인터페이스; 및
    상기 파일 요청을 이용하여 적어도 하나의 파일을 요청하기 위한 프로그램 코드를 포함하는,
    클라이언트 디바이스.
  15. 제 14 항에 있어서,
    상기 네트워크 인터페이스는 무선 네트워크 인터페이스인, 클라이언트 디바이스.
  16. 제 14 항에 있어서,
    상기 네트워크 인터페이스는 유선 네트워크 인터페이스인, 클라이언트 디바이스.
  17. 제 14 항에 있어서,
    상기 파일 요청은 URL이고, 요청들은 상기 URL을 이용하는 HTTP 요청들인, 클라이언트 디바이스.
  18. 제 14 항에 있어서,
    상기 프리젠테이션 시간 범위의 종료에 대응하거나 그보다 더 늦은 시간적 이탈 포인트를 갖는 컨텐츠를 포함하는 세그먼트가 수신될 때까지 파일 요청들을 반복하기 위한 프로그램 코드를 더 포함하는, 클라이언트 디바이스.
  19. 제 14 항에 있어서,
    상기 세그먼트 시간 길이에 대한 변동은, 세그먼트 프리젠테이션 시간이, 상기 세그먼트 시간 길이 내지 상기 세그먼트 시간 길이 플러스 상기 변동의 시간 범위에 있게 하는 시간 범위인, 클라이언트 디바이스.
  20. 제 14 항에 있어서,
    상기 세그먼트 시간 길이에 대한 변동은, 세그먼트 프리젠테이션 시간이, 상기 세그먼트 시간 길이의 1.0배 내지 상기 세그먼트 시간 길이의 1+P배가 되게 하는 비율 P인, 클라이언트 디바이스.
  21. 제 14 항에 있어서,
    상기 세그먼트 시간 길이에 대한 변동은, 세그먼트 프리젠테이션 시간이, 상기 변동의 시간 범위에 걸쳐서 상기 세그먼트 시간 길이보다 크거나 또는 작게될 수 있게 하는 시간 범위인, 클라이언트 디바이스.
KR1020147008391A 2011-08-31 2012-08-31 적응형 http 스트리밍을 위한 표현들 사이에서 개선된 스위칭을 제공하는 스위칭 시그널링 방법들 KR101575740B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201161529656P 2011-08-31 2011-08-31
US61/529,656 2011-08-31
US13/545,697 2012-07-10
US13/545,697 US9253233B2 (en) 2011-08-31 2012-07-10 Switch signaling methods providing improved switching between representations for adaptive HTTP streaming
PCT/US2012/053394 WO2013033565A1 (en) 2011-08-31 2012-08-31 Switch signaling methods providing improved switching between representations for adaptive http streaming

Publications (2)

Publication Number Publication Date
KR20140054400A true KR20140054400A (ko) 2014-05-08
KR101575740B1 KR101575740B1 (ko) 2015-12-08

Family

ID=46852386

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147008391A KR101575740B1 (ko) 2011-08-31 2012-08-31 적응형 http 스트리밍을 위한 표현들 사이에서 개선된 스위칭을 제공하는 스위칭 시그널링 방법들

Country Status (6)

Country Link
US (1) US9253233B2 (ko)
EP (1) EP2752025A1 (ko)
JP (1) JP6054398B2 (ko)
KR (1) KR101575740B1 (ko)
CN (1) CN103858440B (ko)
WO (1) WO2013033565A1 (ko)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016129768A1 (ko) * 2015-02-09 2016-08-18 한국전자통신연구원 대역폭에 적응적인 대쉬 기반 컨텐츠 제공 장치 및 방법
KR20160107617A (ko) * 2015-03-04 2016-09-19 주식회사 알티캐스트 영상 서비스 제공 방법, 사용자 단말기 및 컴퓨터 프로그램
KR20170116027A (ko) * 2015-02-10 2017-10-18 퀄컴 인코포레이티드 저 레이턴시 비디오 스트리밍
KR20170121195A (ko) * 2015-03-02 2017-11-01 퀄컴 인코포레이티드 부분 세그먼트에 대한 표시
KR102287429B1 (ko) * 2020-02-03 2021-08-06 주식회사 엘지유플러스 스트리밍 서비스를 통한 동영상 출력 방법 및 장치

Families Citing this family (150)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7068729B2 (en) 2001-12-21 2006-06-27 Digital Fountain, Inc. Multi-stage code generator and decoder for communication systems
US6307487B1 (en) 1998-09-23 2001-10-23 Digital Fountain, Inc. Information additive code generator and decoder for communication systems
US9240810B2 (en) 2002-06-11 2016-01-19 Digital Fountain, Inc. Systems and processes for decoding chain reaction codes through inactivation
KR101143282B1 (ko) 2002-10-05 2012-05-08 디지털 파운튼, 인크. 연쇄 반응 코드의 체계적 인코딩 및 디코딩
WO2005036753A2 (en) * 2003-10-06 2005-04-21 Digital Fountain, Inc. Error-correcting multi-stage code generator and decoder for communication systems having single transmitters or multiple transmitters
EP2202888A1 (en) 2004-05-07 2010-06-30 Digital Fountain, Inc. File download and streaming system
US7721184B2 (en) * 2004-08-11 2010-05-18 Digital Fountain, Inc. Method and apparatus for fast encoding of data symbols according to half-weight codes
EP1985021A4 (en) 2006-02-13 2013-05-29 Digital Fountain Inc CONTINUOUS TRANSMISSION AND BUFFER DELIVERY USING CONTINUOUS MONITORING OVERVIEW AND PERIODS OF PROTECTION
US9270414B2 (en) 2006-02-21 2016-02-23 Digital Fountain, Inc. Multiple-field based code generator and decoder for communications systems
WO2007134196A2 (en) 2006-05-10 2007-11-22 Digital Fountain, Inc. Code generator and decoder using hybrid codes
US9209934B2 (en) 2006-06-09 2015-12-08 Qualcomm Incorporated Enhanced block-request streaming using cooperative parallel HTTP and forward error correction
US9386064B2 (en) 2006-06-09 2016-07-05 Qualcomm Incorporated Enhanced block-request streaming using URL templates and construction rules
US9432433B2 (en) 2006-06-09 2016-08-30 Qualcomm Incorporated Enhanced block-request streaming system using signaling or block creation
US9380096B2 (en) 2006-06-09 2016-06-28 Qualcomm Incorporated Enhanced block-request streaming system for handling low-latency streaming
US9178535B2 (en) 2006-06-09 2015-11-03 Digital Fountain, Inc. Dynamic stream interleaving and sub-stream based delivery
US9419749B2 (en) 2009-08-19 2016-08-16 Qualcomm Incorporated Methods and apparatus employing FEC codes with permanent inactivation of symbols for encoding and decoding processes
US11303684B2 (en) 2006-09-14 2022-04-12 Opentv, Inc. Methods and systems for data transmission
US8335873B2 (en) * 2006-09-14 2012-12-18 Opentv, Inc. Method and systems for data transmission
MX2010002829A (es) 2007-09-12 2010-04-01 Digital Fountain Inc Generacion y comunicacion de informacion para identificacion de fuentes para permitir comunicaciones seguras.
US9281847B2 (en) 2009-02-27 2016-03-08 Qualcomm Incorporated Mobile reception of digital video broadcasting—terrestrial services
US9288010B2 (en) 2009-08-19 2016-03-15 Qualcomm Incorporated Universal file delivery methods for providing unequal error protection and bundled file delivery services
US9917874B2 (en) 2009-09-22 2018-03-13 Qualcomm Incorporated Enhanced block-request streaming using block partitioning or request controls for improved client-side handling
KR101781873B1 (ko) * 2010-04-19 2017-09-26 엘지전자 주식회사 인터넷 기반 컨텐츠 송수신 방법 및 그를 이용한 송수신 장치
US9049497B2 (en) 2010-06-29 2015-06-02 Qualcomm Incorporated Signaling random access points for streaming video data
US8918533B2 (en) 2010-07-13 2014-12-23 Qualcomm Incorporated Video switching for streaming video data
US9185439B2 (en) 2010-07-15 2015-11-10 Qualcomm Incorporated Signaling data for multiplexing video components
US9596447B2 (en) 2010-07-21 2017-03-14 Qualcomm Incorporated Providing frame packing type information for video coding
US8806050B2 (en) 2010-08-10 2014-08-12 Qualcomm Incorporated Manifest file updates for network streaming of coded multimedia data
US8938619B2 (en) * 2010-12-29 2015-01-20 Adobe Systems Incorporated System and method for decrypting content samples including distinct encryption chains
US9270299B2 (en) 2011-02-11 2016-02-23 Qualcomm Incorporated Encoding and decoding using elastic codes with flexible source block mapping
US8958375B2 (en) 2011-02-11 2015-02-17 Qualcomm Incorporated Framing for an improved radio link protocol including FEC
US9264508B2 (en) 2011-08-19 2016-02-16 Time Warner Cable Enterprises Llc Apparatus and methods for reduced switching delays in a content distribution network
US9843844B2 (en) 2011-10-05 2017-12-12 Qualcomm Incorporated Network streaming of media data
WO2013058684A1 (en) * 2011-10-17 2013-04-25 Telefonaktiebolaget L M Ericsson (Publ) Method for adaptive streaming, local storing and post-storing quality increase of a content file
KR101922552B1 (ko) * 2011-12-06 2018-11-29 삼성전자주식회사 멀티미디어 컨텐트 전송 시스템에서 적응적 스트리밍을 이용한 트래픽 제어 방법 및 장치
US9930379B2 (en) 2012-01-31 2018-03-27 Comcast Cable Communications, Llc System and method for data stream fragmentation
EP2829012A4 (en) * 2012-03-21 2015-12-23 Irdeto Bv METHOD AND SYSTEM FOR CHAIN TRANSFORMATION
US9294226B2 (en) 2012-03-26 2016-03-22 Qualcomm Incorporated Universal object delivery and template-based file delivery
US9438883B2 (en) * 2012-04-09 2016-09-06 Intel Corporation Quality of experience reporting for combined unicast-multicast/broadcast streaming of media content
KR101603136B1 (ko) * 2012-04-27 2016-03-14 후아웨이 테크놀러지 컴퍼니 리미티드 템플릿 모드에서의 짧은 암호 사용기간의 지원
JP2015527795A (ja) * 2012-06-28 2015-09-17 アズキ システムズ, インク. インターネット経由で配信されるライブメディアデリバリー(LiveMediaDelivery)において広告を挿入するための方法及びシステム
EP2850845A1 (en) 2012-07-09 2015-03-25 Huawei Technologies Co., Ltd. Dynamic adaptive streaming over http client behavior framework and implementation of session management
KR20180112099A (ko) * 2012-07-09 2018-10-11 브이아이디 스케일, 인크. 멀티 레이어 비디오 코딩용 코덱 아키텍처
US9813740B2 (en) * 2012-08-24 2017-11-07 Google Inc. Method and apparatus for streaming multimedia data with access point positioning information
CN103702237A (zh) * 2012-09-28 2014-04-02 北京大学 Http流媒体的速率自适方法及装置
FR2996715A1 (fr) * 2012-10-09 2014-04-11 France Telecom Heritage de parametres d'identifiant universel de ressource (uri)
KR101925606B1 (ko) * 2012-10-12 2018-12-05 캐논 가부시끼가이샤 데이터를 스트리밍하기 위한 방법, 데이터를 제공하기 위한 방법, 데이터를 획득하기 위한 방법, 컴퓨터 판독 가능 저장 매체, 서버 장치, 및 클라이언트 장치
KR101703268B1 (ko) 2012-10-26 2017-02-06 인텔 코포레이션 비디오 방향 조정(cvo)를 갖는 스트리밍
EP3148290B1 (en) 2012-10-26 2023-08-30 Apple Inc. Multimedia adaptation based on video orientation
US9357239B2 (en) * 2012-11-16 2016-05-31 Adobe Systems Incorporated Converting live streaming content to video-on-demand streaming content
US8868964B2 (en) * 2012-11-20 2014-10-21 Adobe Systems Incorporated Method and apparatus for supporting failover for live streaming video
CN103873926B (zh) * 2012-12-13 2017-03-22 腾讯科技(深圳)有限公司 下载并播放媒体文件的方法及系统
EP2944089B1 (en) * 2013-01-11 2018-03-07 Telefonaktiebolaget LM Ericsson (publ) Technique for operating client and server devices in a broadcast communication network
EP2904764B1 (en) * 2013-01-16 2016-09-21 Huawei Technologies Co., Ltd. Url parameter insertion and addition in adaptive streaming
EP2896189B1 (en) * 2013-01-16 2016-09-14 Huawei Technologies Co., Ltd. Storing and transmitting content for downloading and streaming
US9258289B2 (en) * 2013-04-29 2016-02-09 Arbor Networks Authentication of IP source addresses
FR3005820B1 (fr) 2013-05-17 2015-05-29 Envivio France Procede de gestion de listes de lecture personnalisees du type comprenant un gabarit d'uri et une liste d'identifiants de segments.
US9722852B2 (en) 2013-05-24 2017-08-01 Cisco Technology, Inc. On-demand encapsulating of timed metadata in a network environment
JP2015012305A (ja) * 2013-06-26 2015-01-19 ソニー株式会社 コンテンツ供給装置、コンテンツ供給方法、プログラム、端末装置、およびコンテンツ供給システム
US9814037B2 (en) * 2013-06-28 2017-11-07 Intel Corporation Method for efficient channel estimation and beamforming in FDD system by exploiting uplink-downlink correspondence
JP6149562B2 (ja) * 2013-07-12 2017-06-21 富士通株式会社 ストリーム配信システム、ストリーム作成装置、ストリーム配信方法およびストリーム作成方法
JP6653575B2 (ja) * 2013-07-17 2020-02-26 サターン ライセンシング エルエルシーSaturn Licensing LLC コンテンツ供給装置、コンテンツ供給方法、プログラム、端末装置、端末装置の動作方法、およびコンテンツ供給システム
JP6498882B2 (ja) 2013-07-22 2019-04-10 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカPanasonic Intellectual Property Corporation of America 蓄積方法、再生方法、蓄積装置、および再生装置
FR3009161B1 (fr) * 2013-07-24 2015-09-11 Expway Procede de synchronisation lors du traitement par un lecteur multimedia d'un contenu multimedia transmis par un service mbms
US8718445B1 (en) 2013-09-03 2014-05-06 Penthera Partners, Inc. Commercials on mobile devices
US20150089073A1 (en) 2013-09-25 2015-03-26 Ericsson Television Inc System and method for effectuating fast channel change in an adpative streaming environment
US9444856B2 (en) 2013-09-25 2016-09-13 Ericsson Ab System and method for managing adjacent channels in an adaptive streaming environment
US9244916B2 (en) * 2013-10-01 2016-01-26 Penthera Partners, Inc. Downloading media objects
WO2015050857A1 (en) * 2013-10-02 2015-04-09 Dolby Laboratories Licensing Corporation Transmitting display management metadata over hdmi
US9270721B2 (en) * 2013-10-08 2016-02-23 Qualcomm Incorporated Switching between adaptation sets during media streaming
US10116943B2 (en) * 2013-10-16 2018-10-30 Nvidia Corporation Adaptive video compression for latency control
JP6239102B2 (ja) * 2013-10-25 2017-11-29 華為技術有限公司Huawei Technologies Co.,Ltd. アダプティブ・ストリーミングにおいてリプレゼンテーション(Representation)を関連付けるシステムおよび方法
US9621613B1 (en) * 2013-11-05 2017-04-11 Visualon, Inc. Bitrate adaptation transitioning using key frames
KR101854895B1 (ko) * 2013-11-27 2018-05-04 인터디지탈 패튼 홀딩스, 인크 미디어 프리젠테이션 디스크립션
DE112014005455A5 (de) * 2013-11-28 2016-08-11 Patrick Faulwetter Plattform-Vorrichtung zur Bereitstellung qualitativen Schwarm-Wissens
US11657109B2 (en) 2013-11-28 2023-05-23 Patrick Faulwetter Platform device for providing quantitative collective knowledge
GB2521845B (en) * 2014-01-03 2021-07-07 British Broadcasting Corp Content delivery
US9210207B2 (en) * 2014-02-13 2015-12-08 Ericsson Ab Time-sensitive content manipulation in adaptive streaming buffer
US10504200B2 (en) 2014-03-13 2019-12-10 Verance Corporation Metadata acquisition using embedded watermarks
US20150261753A1 (en) * 2014-03-13 2015-09-17 Verance Corporation Metadata acquisition using embedded codes
WO2015138798A1 (en) 2014-03-13 2015-09-17 Verance Corporation Interactive content acquisition using embedded codes
US9596281B2 (en) 2014-03-18 2017-03-14 Qualcomm Incorporated Transport accelerator implementing request manager and connection manager functionality
US9794311B2 (en) 2014-03-18 2017-10-17 Qualcomm Incorporated Transport accelerator implementing extended transmission control functionality
US9596323B2 (en) 2014-03-18 2017-03-14 Qualcomm Incorporated Transport accelerator implementing client side transmission functionality
US9350484B2 (en) 2014-03-18 2016-05-24 Qualcomm Incorporated Transport accelerator implementing selective utilization of redundant encoded content data functionality
US9860612B2 (en) * 2014-04-10 2018-01-02 Wowza Media Systems, LLC Manifest generation and segment packetization
CN105100887A (zh) * 2014-05-15 2015-11-25 中兴通讯股份有限公司 节目播放控制方法及装置
US20150350622A1 (en) * 2014-05-30 2015-12-03 Apple Inc. Packed i-frames
KR101757306B1 (ko) * 2014-07-31 2017-07-12 엘지전자 주식회사 방송 신호 송/수신 처리 방법 및 장치
US9639911B2 (en) 2014-08-20 2017-05-02 Verance Corporation Watermark detection using a multiplicity of predicted patterns
US9596285B2 (en) * 2014-09-11 2017-03-14 Harman International Industries, Incorporated Methods and systems for AVB networks
KR101919396B1 (ko) * 2014-09-23 2019-02-08 후아웨이 테크놀러지 컴퍼니 리미티드 스트리밍 미디어 내의 콘텐츠 콤포넌트의 소유권 식별, 시그널링, 및 핸들링
US10187680B2 (en) * 2014-11-11 2019-01-22 Cisco Technology, Inc. Adaptive bit rate system architectures using named domain networking
US10735293B2 (en) * 2014-11-27 2020-08-04 Cellos Software Ltd Method and network monitoring device for estimating web page download time on a user device
US9602891B2 (en) 2014-12-18 2017-03-21 Verance Corporation Service signaling recovery for multimedia content using embedded watermarks
EP3062474B1 (en) * 2015-02-24 2018-09-26 Alcatel-Lucent España, S.A. Method, device, computer program product and storage medium for distributing file requests in adaptive streaming systems
CN106034262B (zh) * 2015-03-13 2021-01-22 中兴通讯股份有限公司 自适应流媒体处理方法及装置
US9883221B1 (en) 2015-03-25 2018-01-30 Concurrent Computer Corporation System and method for optimizing real-time video-on-demand recording in a content delivery network
WO2016155800A1 (en) * 2015-03-31 2016-10-06 Irdeto B.V. Accessing content
US9973562B2 (en) 2015-04-17 2018-05-15 Microsoft Technology Licensing, Llc Split processing of encoded video in streaming segments
US20160308934A1 (en) * 2015-04-20 2016-10-20 Qualcomm Incorporated Further Device Timing Adjustments and Methods for Supporting DASH Over Broadcast
US11057446B2 (en) * 2015-05-14 2021-07-06 Bright Data Ltd. System and method for streaming content from multiple servers
CN104869477A (zh) * 2015-05-14 2015-08-26 无锡天脉聚源传媒科技有限公司 一种视频分段播放的方法及装置
GB2538997A (en) * 2015-06-03 2016-12-07 Nokia Technologies Oy A method, an apparatus, a computer program for video coding
WO2017034506A1 (en) * 2015-08-27 2017-03-02 Intel IP Corporation Indication of tdd uplink and downlink configurations
WO2017044980A1 (en) * 2015-09-11 2017-03-16 YipTV, Inc. Method and apparatus for viewing and filtering media content
US10152080B2 (en) * 2015-09-23 2018-12-11 Adobe Systems Incorporated Power efficient multimedia content streaming based on media segment duration
US10158682B2 (en) 2015-09-23 2018-12-18 Adobe Systems Incorporated Power efficient multimedia content streaming based on a server push
CN105898392A (zh) * 2015-11-24 2016-08-24 乐视云计算有限公司 在线直播视频播放器及方法
WO2017130201A1 (en) * 2016-01-28 2017-08-03 Subply Solutions Ltd. Method and system for providing audio content
KR102287703B1 (ko) * 2016-02-16 2021-08-10 프라운호퍼 게젤샤프트 쭈르 푀르데룽 데어 안겐반텐 포르슝 에. 베. 효율적인 적응적 스트리밍
US10652594B2 (en) 2016-07-07 2020-05-12 Time Warner Cable Enterprises Llc Apparatus and methods for presentation of key frames in encrypted content
US11617019B2 (en) * 2016-07-28 2023-03-28 Qualcomm Incorporated Retrieving and accessing segment chunks for media streaming
CN106303562B (zh) * 2016-09-20 2019-03-01 天津大学 基于pi控制的多视点视频自适应传输控制算法
CN107888993B (zh) * 2016-09-30 2020-11-06 华为技术有限公司 一种视频数据的处理方法及装置
US20180109577A1 (en) * 2016-10-13 2018-04-19 Sharp Laboratories Of America, Inc. Systems and methods for enabling communications associated with digital media distribution
WO2018087309A1 (en) 2016-11-10 2018-05-17 Telefonaktiebolaget Lm Ericsson (Publ) Resource segmentation to improve delivery performance
US10642917B2 (en) * 2016-11-14 2020-05-05 Triton Us Vp Acquisition Co. Method and device for sharing segmented video content across multiple manifests
US10666707B2 (en) * 2017-01-11 2020-05-26 Microsoft Technology Licensing, Llc Nonconsecutive file downloading
US10225603B2 (en) * 2017-03-13 2019-03-05 Wipro Limited Methods and systems for rendering multimedia content on a user device
CN108668179B (zh) * 2017-03-27 2021-05-14 华为技术有限公司 媒体索引文件的传输方法及相关设备
US10499066B2 (en) * 2017-04-14 2019-12-03 Nokia Technologies Oy Method and apparatus for improving efficiency of content delivery based on consumption data relative to spatial data
US10873775B2 (en) * 2017-06-12 2020-12-22 Netflix, Inc. Staggered key frame video encoding
CN107426629B (zh) * 2017-06-19 2020-06-23 网宿科技股份有限公司 一种流媒体文件处理方法及直播系统
US10652166B2 (en) * 2017-06-27 2020-05-12 Cisco Technology, Inc. Non-real time adaptive bitrate recording scheduler
US10958948B2 (en) * 2017-08-29 2021-03-23 Charter Communications Operating, Llc Apparatus and methods for latency reduction in digital content switching operations
US10939142B2 (en) 2018-02-27 2021-03-02 Charter Communications Operating, Llc Apparatus and methods for content storage, distribution and security within a content distribution network
US11146852B2 (en) 2018-05-11 2021-10-12 Qualcomm Incorporated Signaling missing sections of media data for network streaming in a segment
JP7116196B2 (ja) 2018-06-07 2022-08-09 ソニーグループ株式会社 ネットワーク容量に制約のあるシナリオにおける共同メディア制作のためのネットワーク制御上りリンクメディア伝送
FR3082386A1 (fr) * 2018-06-08 2019-12-13 Orange Adaptation de debit d'une session de communication en voix sur ip
EP3841721A1 (en) 2018-08-20 2021-06-30 Sony Corporation Method and system for utilizing event specific priority in a network controlled uplink media transmission for a collaborative media production
US11368512B2 (en) 2018-08-20 2022-06-21 Sony Group Corporation Method and system for utilizing network conditions feedback for improving quality of a collaborative media production
JP7073584B2 (ja) * 2018-09-17 2022-05-23 グーグル エルエルシー マニフェストなしストリーミングメディアコンテンツを配信するための方法、システム、および媒体
CN109274696A (zh) * 2018-09-20 2019-01-25 青岛海信电器股份有限公司 基于dash协议的流媒体播放方法及装置
US10986387B1 (en) 2018-09-26 2021-04-20 Amazon Technologies, Inc. Content management for a distributed cache of a wireless mesh network
US11089103B1 (en) * 2018-09-26 2021-08-10 Amazon Technologies, Inc. Content management in a distributed cache of a wireless mesh network
JP6485935B1 (ja) * 2018-10-18 2019-03-20 ベルフェイス株式会社 オンラインコミュニケーションのレビューシステム、方法、及びコンピュータプログラム
US11356715B2 (en) * 2018-12-28 2022-06-07 Tencent America LLC Dynamic shortening of advertisement duration during live streaming
US11176269B2 (en) * 2019-03-08 2021-11-16 International Business Machines Corporation Access control of specific encrypted data segment
US11871065B2 (en) * 2019-03-11 2024-01-09 Sony Group Corporation Information processing apparatus, reproduction processing apparatus, information processing method, and reproduction processing method
CN113574903B (zh) * 2019-03-14 2023-07-28 诺基亚技术有限公司 针对媒体内容中的后期绑定的方法和装置
CN114145037B (zh) * 2019-07-22 2024-04-19 上海诺基亚贝尔股份有限公司 信息段传输
US11564018B2 (en) 2019-10-02 2023-01-24 Qualcomm Incorporated Random access at resync points of dash segments
US11128688B2 (en) 2019-10-16 2021-09-21 Disney Enterprises, Inc. Transcoder conditioning for segment fluidity
CN110995788B (zh) * 2019-11-13 2022-02-22 广州辰河质检技术有限公司 一种http服务器断点续传上传文件存储的实现方法
CN112969089B (zh) * 2019-12-03 2022-07-12 华为技术有限公司 一种http请求传输方法及设备
US11228796B2 (en) * 2020-01-07 2022-01-18 Tencent America LLC Pattern addressing for session-based dash operations
US11722741B2 (en) 2021-02-08 2023-08-08 Verance Corporation System and method for tracking content timeline in the presence of playback rate changes
US11531660B2 (en) * 2021-04-20 2022-12-20 Cisco Technology, Inc. Analyzing data module versions for aliases and backwards compatibility
US11799700B1 (en) * 2022-08-31 2023-10-24 Qualcomm Incorporated Decoding multi-level coded (MLC) systems

Family Cites Families (554)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3909721A (en) 1972-01-31 1975-09-30 Signatron Signal processing system
US4365338A (en) 1980-06-27 1982-12-21 Harris Corporation Technique for high rate digital transmission over a dynamic dispersive channel
US4965825A (en) 1981-11-03 1990-10-23 The Personalized Mass Media Corporation Signal processing apparatus and methods
US4589112A (en) 1984-01-26 1986-05-13 International Business Machines Corporation System for multiple error detection with single and double bit error correction
US4901319A (en) 1988-03-18 1990-02-13 General Electric Company Transmission system with adaptive interleaving
GB8815978D0 (en) 1988-07-05 1988-08-10 British Telecomm Method & apparatus for encoding decoding & transmitting data in compressed form
US5136592A (en) 1989-06-28 1992-08-04 Digital Equipment Corporation Error detection and correction system for long burst errors
US5421031A (en) 1989-08-23 1995-05-30 Delta Beta Pty. Ltd. Program transmission optimisation
US5701582A (en) 1989-08-23 1997-12-23 Delta Beta Pty. Ltd. Method and apparatus for efficient transmissions of programs
US7594250B2 (en) 1992-04-02 2009-09-22 Debey Henry C Method and system of program transmission optimization using a redundant transmission sequence
US5329369A (en) 1990-06-01 1994-07-12 Thomson Consumer Electronics, Inc. Asymmetric picture compression
US5455823A (en) 1990-11-06 1995-10-03 Radio Satellite Corporation Integrated communications terminal
US5164963A (en) 1990-11-07 1992-11-17 At&T Bell Laboratories Coding for digital transmission
US5465318A (en) 1991-03-28 1995-11-07 Kurzweil Applied Intelligence, Inc. Method for generating a speech recognition model for a non-vocabulary utterance
US5379297A (en) 1992-04-09 1995-01-03 Network Equipment Technologies, Inc. Concurrent multi-channel segmentation and reassembly processors for asynchronous transfer mode
EP0543070A1 (en) 1991-11-21 1993-05-26 International Business Machines Corporation Coding system and method using quaternary codes
US5371532A (en) 1992-05-15 1994-12-06 Bell Communications Research, Inc. Communications architecture and method for distributing information services
US5425050A (en) 1992-10-23 1995-06-13 Massachusetts Institute Of Technology Television transmission system using spread spectrum and orthogonal frequency-division multiplex
US5372532A (en) 1993-01-26 1994-12-13 Robertson, Jr.; George W. Swivel head cap connector
EP0613249A1 (en) 1993-02-12 1994-08-31 Altera Corporation Custom look-up table with reduced number of architecture bits
DE4316297C1 (de) 1993-05-14 1994-04-07 Fraunhofer Ges Forschung Frequenzanalyseverfahren
AU665716B2 (en) 1993-07-05 1996-01-11 Mitsubishi Denki Kabushiki Kaisha A transmitter for encoding error correction codes and a receiver for decoding error correction codes on a transmission frame
US5590405A (en) 1993-10-29 1996-12-31 Lucent Technologies Inc. Communication technique employing variable information transmission
JP2576776B2 (ja) 1993-11-10 1997-01-29 日本電気株式会社 パケット伝送方法・パケット伝送装置
US5517508A (en) 1994-01-26 1996-05-14 Sony Corporation Method and apparatus for detection and error correction of packetized digital data
CA2140850C (en) 1994-02-24 1999-09-21 Howard Paul Katseff Networked system for display of multimedia presentations
US5566208A (en) 1994-03-17 1996-10-15 Philips Electronics North America Corp. Encoder buffer having an effective size which varies automatically with the channel bit-rate
US5432787A (en) 1994-03-24 1995-07-11 Loral Aerospace Corporation Packet data transmission system with adaptive data recovery method
US5757415A (en) 1994-05-26 1998-05-26 Sony Corporation On-demand data transmission by dividing input data into blocks and each block into sub-blocks such that the sub-blocks are re-arranged for storage to data storage means
US5802394A (en) 1994-06-06 1998-09-01 Starlight Networks, Inc. Method for accessing one or more streams in a video storage system using multiple queues and maintaining continuity thereof
US5739864A (en) 1994-08-24 1998-04-14 Macrovision Corporation Apparatus for inserting blanked formatted fingerprint data (source ID, time/date) in to a video signal
US5568614A (en) 1994-07-29 1996-10-22 International Business Machines Corporation Data streaming between peer subsystems of a computer system
US5668948A (en) 1994-09-08 1997-09-16 International Business Machines Corporation Media streamer with control node enabling same isochronous streams to appear simultaneously at output ports or different streams to appear simultaneously at output ports
US5926205A (en) 1994-10-19 1999-07-20 Imedia Corporation Method and apparatus for encoding and formatting data representing a video program to provide multiple overlapping presentations of the video program
US5659614A (en) 1994-11-28 1997-08-19 Bailey, Iii; John E. Method and system for creating and storing a backup copy of file data stored on a computer
US5617541A (en) 1994-12-21 1997-04-01 International Computer Science Institute System for packetizing data encoded corresponding to priority levels where reconstructed data corresponds to fractionalized priority level and received fractionalized packets
JP3614907B2 (ja) 1994-12-28 2005-01-26 株式会社東芝 データ再送制御方法及びデータ再送制御システム
EP0823153A4 (en) 1995-04-27 1999-10-20 Stevens Inst Technology HIGH INTEGRITY TRANSPORT METHOD FOR TIME-CRITICAL MULTIMEDIA NETWORK APPLICATIONS
US5835165A (en) 1995-06-07 1998-11-10 Lsi Logic Corporation Reduction of false locking code words in concatenated decoders
US5805825A (en) 1995-07-26 1998-09-08 Intel Corporation Method for semi-reliable, unidirectional broadcast information services
US6079041A (en) 1995-08-04 2000-06-20 Sanyo Electric Co., Ltd. Digital modulation circuit and digital demodulation circuit
US5754563A (en) 1995-09-11 1998-05-19 Ecc Technologies, Inc. Byte-parallel system for implementing reed-solomon error-correcting codes
KR0170298B1 (ko) 1995-10-10 1999-04-15 김광호 디지탈 비디오 테이프의 기록 방법
US5751336A (en) 1995-10-12 1998-05-12 International Business Machines Corporation Permutation based pyramid block transmission scheme for broadcasting in video-on-demand storage systems
JP3305183B2 (ja) 1996-01-12 2002-07-22 株式会社東芝 ディジタル放送受信端末装置
US6012159A (en) 1996-01-17 2000-01-04 Kencast, Inc. Method and system for error-free data transfer
US5852565A (en) 1996-01-30 1998-12-22 Demografx Temporal and resolution layering in advanced television
US5936659A (en) 1996-01-31 1999-08-10 Telcordia Technologies, Inc. Method for video delivery using pyramid broadcasting
US5903775A (en) 1996-06-06 1999-05-11 International Business Machines Corporation Method for the sequential transmission of compressed video information at varying data rates
US5745504A (en) 1996-06-25 1998-04-28 Telefonaktiebolaget Lm Ericsson Bit error resilient variable length code
US5940863A (en) 1996-07-26 1999-08-17 Zenith Electronics Corporation Apparatus for de-rotating and de-interleaving data including plural memory devices and plural modulo memory address generators
US5936949A (en) 1996-09-05 1999-08-10 Netro Corporation Wireless ATM metropolitan area network
KR100261706B1 (ko) 1996-12-17 2000-07-15 가나이 쓰도무 디지탈방송신호의 수신장치와 수신 및 기록재생장치
US6141053A (en) 1997-01-03 2000-10-31 Saukkonen; Jukka I. Method of optimizing bandwidth for transmitting compressed video data streams
US6044485A (en) 1997-01-03 2000-03-28 Ericsson Inc. Transmitter method and transmission system using adaptive coding based on channel characteristics
US6011590A (en) 1997-01-03 2000-01-04 Ncr Corporation Method of transmitting compressed information to minimize buffer space
US5946357A (en) 1997-01-17 1999-08-31 Telefonaktiebolaget L M Ericsson Apparatus, and associated method, for transmitting and receiving a multi-stage, encoded and interleaved digital communication signal
US5983383A (en) 1997-01-17 1999-11-09 Qualcom Incorporated Method and apparatus for transmitting and receiving concatenated code data
EP0854650A3 (en) 1997-01-17 2001-05-02 NOKIA TECHNOLOGY GmbH Method for addressing a service in digital video broadcasting
US6014706A (en) 1997-01-30 2000-01-11 Microsoft Corporation Methods and apparatus for implementing control functions in a streamed video display system
KR20000075982A (ko) 1997-03-07 2000-12-26 다카노 야스아키 디지탈 방송 수신기 및 디스플레이 장치
US6115420A (en) 1997-03-14 2000-09-05 Microsoft Corporation Digital video signal encoder and encoding method
DE19716011A1 (de) 1997-04-17 1998-10-22 Abb Research Ltd Verfahren und Vorrichtung zur Informationsübertragung über Stromversorgungsleitungen
US6226259B1 (en) 1997-04-29 2001-05-01 Canon Kabushiki Kaisha Device and method for transmitting information device and method for processing information
US5970098A (en) 1997-05-02 1999-10-19 Globespan Technologies, Inc. Multilevel encoder
US5844636A (en) 1997-05-13 1998-12-01 Hughes Electronics Corporation Method and apparatus for receiving and recording digital packet data
JPH1141211A (ja) 1997-05-19 1999-02-12 Sanyo Electric Co Ltd ディジタル変調回路と変調方法、ディジタル復調回路と復調方法
JP4110593B2 (ja) 1997-05-19 2008-07-02 ソニー株式会社 信号記録方法及び信号記録装置
EP0933768A4 (en) 1997-05-19 2000-10-04 Sanyo Electric Co DIGITAL MODULATION AND DEMODULATION
US6128649A (en) 1997-06-02 2000-10-03 Nortel Networks Limited Dynamic selection of media streams for display
US6081907A (en) 1997-06-09 2000-06-27 Microsoft Corporation Data delivery system and method for delivering data and redundant information over a unidirectional network
US5917852A (en) 1997-06-11 1999-06-29 L-3 Communications Corporation Data scrambling system and method and communications system incorporating same
KR100240869B1 (ko) 1997-06-25 2000-01-15 윤종용 이중 다이버서티 시스템을 위한 데이터 전송 방법
US6175944B1 (en) 1997-07-15 2001-01-16 Lucent Technologies Inc. Methods and apparatus for packetizing data for transmission through an erasure broadcast channel
US5933056A (en) 1997-07-15 1999-08-03 Exar Corporation Single pole current mode common-mode feedback circuit
US6047069A (en) 1997-07-17 2000-04-04 Hewlett-Packard Company Method and apparatus for preserving error correction capabilities during data encryption/decryption
US6904110B2 (en) 1997-07-31 2005-06-07 Francois Trans Channel equalization system and method
US6178536B1 (en) 1997-08-14 2001-01-23 International Business Machines Corporation Coding scheme for file backup and systems based thereon
FR2767940A1 (fr) 1997-08-29 1999-02-26 Canon Kk Procedes et dispositifs de codage et de decodage et appareils les mettant en oeuvre
EP0903955A1 (en) 1997-09-04 1999-03-24 STMicroelectronics S.r.l. Modular architecture PET decoder for ATM networks
US6088330A (en) 1997-09-09 2000-07-11 Bruck; Joshua Reliable array of distributed computing nodes
US6134596A (en) 1997-09-18 2000-10-17 Microsoft Corporation Continuous media file server system and method for scheduling network resources to play multiple files having different data transmission rates
US6272658B1 (en) 1997-10-27 2001-08-07 Kencast, Inc. Method and system for reliable broadcasting of data files and streams
US6163870A (en) 1997-11-06 2000-12-19 Compaq Computer Corporation Message encoding with irregular graphing
US6081918A (en) 1997-11-06 2000-06-27 Spielman; Daniel A. Loss resilient code with cascading series of redundant layers
US6073250A (en) 1997-11-06 2000-06-06 Luby; Michael G. Loss resilient decoding technique
US6195777B1 (en) 1997-11-06 2001-02-27 Compaq Computer Corporation Loss resilient code with double heavy tailed series of redundant layers
US6081909A (en) 1997-11-06 2000-06-27 Digital Equipment Corporation Irregularly graphed encoding technique
JP3472115B2 (ja) 1997-11-25 2003-12-02 Kddi株式会社 マルチチャンネルを用いるビデオデータ伝送方法及びその装置
US5870412A (en) 1997-12-12 1999-02-09 3Com Corporation Forward error correction system for packet based real time media
US6243846B1 (en) 1997-12-12 2001-06-05 3Com Corporation Forward error correction system for packet based data and real time media, using cross-wise parity calculation
US6849803B1 (en) 1998-01-15 2005-02-01 Arlington Industries, Inc. Electrical connector
US6097320A (en) 1998-01-20 2000-08-01 Silicon Systems, Inc. Encoder/decoder system with suppressed error propagation
US6226301B1 (en) 1998-02-19 2001-05-01 Nokia Mobile Phones Ltd Method and apparatus for segmentation and assembly of data frames for retransmission in a telecommunications system
US6141788A (en) 1998-03-13 2000-10-31 Lucent Technologies Inc. Method and apparatus for forward error correction in packet networks
US6278716B1 (en) 1998-03-23 2001-08-21 University Of Massachusetts Multicast with proactive forward error correction
JP2002510947A (ja) 1998-04-02 2002-04-09 サーノフ コーポレイション 圧縮ビデオ・データのバースト状データ伝送
US6185265B1 (en) 1998-04-07 2001-02-06 Worldspace Management Corp. System for time division multiplexing broadcast channels with R-1/2 or R-3/4 convolutional coding for satellite transmission via on-board baseband processing payload or transparent payload
US6067646A (en) 1998-04-17 2000-05-23 Ameritech Corporation Method and system for adaptive interleaving
US6018359A (en) 1998-04-24 2000-01-25 Massachusetts Institute Of Technology System and method for multicast video-on-demand delivery system
US6445717B1 (en) 1998-05-01 2002-09-03 Niwot Networks, Inc. System for recovering lost information in a data stream
US6421387B1 (en) 1998-05-15 2002-07-16 North Carolina State University Methods and systems for forward error correction based loss recovery for interactive video transmission
US6937618B1 (en) 1998-05-20 2005-08-30 Sony Corporation Separating device and method and signal receiving device and method
US6333926B1 (en) 1998-08-11 2001-12-25 Nortel Networks Limited Multiple user CDMA basestation modem
KR100778647B1 (ko) 1998-09-04 2007-11-22 에이티 앤드 티 코포레이션 다중-안테나 장치내의 결합된 채널 코딩 및 공간-블록 코딩
US6415326B1 (en) 1998-09-15 2002-07-02 Microsoft Corporation Timeline correlation between multiple timeline-altered media streams
US7068729B2 (en) 2001-12-21 2006-06-27 Digital Fountain, Inc. Multi-stage code generator and decoder for communication systems
US6320520B1 (en) 1998-09-23 2001-11-20 Digital Fountain Information additive group code generator and decoder for communications systems
US6307487B1 (en) 1998-09-23 2001-10-23 Digital Fountain, Inc. Information additive code generator and decoder for communication systems
US7243285B2 (en) 1998-09-23 2007-07-10 Digital Fountain, Inc. Systems and methods for broadcasting information additive codes
US6704370B1 (en) 1998-10-09 2004-03-09 Nortel Networks Limited Interleaving methodology and apparatus for CDMA
IT1303735B1 (it) 1998-11-11 2001-02-23 Falorni Italia Farmaceutici S Acidi ialuronici reticolati e loro usi medici.
US6408128B1 (en) 1998-11-12 2002-06-18 Max Abecassis Replaying with supplementary information a segment of a video
US6483736B2 (en) 1998-11-16 2002-11-19 Matrix Semiconductor, Inc. Vertically stacked field programmable nonvolatile memory and method of fabrication
JP2000151426A (ja) 1998-11-17 2000-05-30 Toshiba Corp インターリーブ・デインターリーブ回路
US6166544A (en) 1998-11-25 2000-12-26 General Electric Company MR imaging system with interactive image contrast control
US6876623B1 (en) 1998-12-02 2005-04-05 Agere Systems Inc. Tuning scheme for code division multiplex broadcasting system
JP3464981B2 (ja) 1998-12-03 2003-11-10 フラウンホーファー−ゲゼルシャフト・ツール・フェルデルング・デル・アンゲヴァンテン・フォルシュング・アインゲトラーゲネル・フェライン 情報送信装置及びその方法並びに情報受信装置及びその方法
US6637031B1 (en) 1998-12-04 2003-10-21 Microsoft Corporation Multimedia presentation latency minimization
US6496980B1 (en) 1998-12-07 2002-12-17 Intel Corporation Method of providing replay on demand for streaming digital multimedia
US6223324B1 (en) 1999-01-05 2001-04-24 Agere Systems Guardian Corp. Multiple program unequal error protection for digital audio broadcasting and other applications
JP3926499B2 (ja) 1999-01-22 2007-06-06 株式会社日立国際電気 畳み込み符号軟判定復号方式の受信装置
US6618451B1 (en) 1999-02-13 2003-09-09 Altocom Inc Efficient reduced state maximum likelihood sequence estimator
US6041001A (en) 1999-02-25 2000-03-21 Lexar Media, Inc. Method of increasing data reliability of a flash memory device without compromising compatibility
WO2000052600A1 (fr) 1999-03-03 2000-09-08 Sony Corporation Emetteur, recepteur, systeme d'emetteur/recepteur, procede de transmission et procede de reception
US6785323B1 (en) 1999-11-22 2004-08-31 Ipr Licensing, Inc. Variable rate coding for forward link
US6466698B1 (en) 1999-03-25 2002-10-15 The United States Of America As Represented By The Secretary Of The Navy Efficient embedded image and video compression system using lifted wavelets
US6609223B1 (en) 1999-04-06 2003-08-19 Kencast, Inc. Method for packet-level fec encoding, in which on a source packet-by-source packet basis, the error correction contributions of a source packet to a plurality of wildcard packets are computed, and the source packet is transmitted thereafter
JP3256517B2 (ja) 1999-04-06 2002-02-12 インターナショナル・ビジネス・マシーンズ・コーポレーション 符号化回路、回路、パリティ生成方法及び記憶媒体
US6535920B1 (en) 1999-04-06 2003-03-18 Microsoft Corporation Analyzing, indexing and seeking of streaming information
US6804202B1 (en) 1999-04-08 2004-10-12 Lg Information And Communications, Ltd. Radio protocol for mobile communication system and method
US7885340B2 (en) 1999-04-27 2011-02-08 Realnetworks, Inc. System and method for generating multiple synchronized encoded representations of media data
FI113124B (fi) 1999-04-29 2004-02-27 Nokia Corp Tiedonsiirto
MY130203A (en) 1999-05-06 2007-06-29 Sony Corp Methods and apparatus for data processing, methods and apparatus for data reproducing and recording media
KR100416996B1 (ko) 1999-05-10 2004-02-05 삼성전자주식회사 이동 통신시스템에서 라디오링크프로토콜에 따른 가변 길이의 데이터 송수신 장치 및 방법
US6229824B1 (en) 1999-05-26 2001-05-08 Xm Satellite Radio Inc. Method and apparatus for concatenated convolutional endcoding and interleaving
US6154452A (en) 1999-05-26 2000-11-28 Xm Satellite Radio Inc. Method and apparatus for continuous cross-channel interleaving
AU5140200A (en) 1999-05-26 2000-12-18 Enounce, Incorporated Method and apparatus for controlling time-scale modification during multi-media broadcasts
JP2000353969A (ja) 1999-06-11 2000-12-19 Sony Corp デジタル音声放送の受信機
US6577599B1 (en) 1999-06-30 2003-06-10 Sun Microsystems, Inc. Small-scale reliable multicasting
IL141800A0 (en) 1999-07-06 2002-03-10 Samsung Electronics Co Ltd Rate matching device and method for a data communication system
US6643332B1 (en) 1999-07-09 2003-11-04 Lsi Logic Corporation Method and apparatus for multi-level coding of digital signals
JP3451221B2 (ja) 1999-07-22 2003-09-29 日本無線株式会社 誤り訂正符号化装置、方法及び媒体、並びに誤り訂正符号復号装置、方法及び媒体
US6279072B1 (en) 1999-07-22 2001-08-21 Micron Technology, Inc. Reconfigurable memory with selectable error correction storage
US6453440B1 (en) 1999-08-04 2002-09-17 Sun Microsystems, Inc. System and method for detecting double-bit errors and for correcting errors due to component failures
JP2001060934A (ja) 1999-08-20 2001-03-06 Matsushita Electric Ind Co Ltd Ofdm通信装置
US6430233B1 (en) 1999-08-30 2002-08-06 Hughes Electronics Corporation Single-LNB satellite data receiver
US6332163B1 (en) 1999-09-01 2001-12-18 Accenture, Llp Method for providing communication services over a computer network system
JP4284774B2 (ja) 1999-09-07 2009-06-24 ソニー株式会社 送信装置、受信装置、通信システム、送信方法及び通信方法
JP2001094625A (ja) 1999-09-27 2001-04-06 Canon Inc データ通信装置、データ通信方法及び記憶媒体
WO2001024474A1 (en) 1999-09-27 2001-04-05 Koninklijke Philips Electronics N.V. Partitioning of file for emulating streaming
US7529806B1 (en) 1999-11-04 2009-05-05 Koninklijke Philips Electronics N.V. Partitioning of MP3 content file for emulating streaming
US20050160272A1 (en) 1999-10-28 2005-07-21 Timecertain, Llc System and method for providing trusted time in content of digital data files
US6523147B1 (en) 1999-11-11 2003-02-18 Ibiquity Digital Corporation Method and apparatus for forward error correction coding for an AM in-band on-channel digital audio broadcasting system
US6678855B1 (en) 1999-12-02 2004-01-13 Microsoft Corporation Selecting K in a data transmission carousel using (N,K) forward error correction
US6748441B1 (en) 1999-12-02 2004-06-08 Microsoft Corporation Data carousel receiving and caching
US6798791B1 (en) 1999-12-16 2004-09-28 Agere Systems Inc Cluster frame synchronization scheme for a satellite digital audio radio system
US6487692B1 (en) 1999-12-21 2002-11-26 Lsi Logic Corporation Reed-Solomon decoder
US6965636B1 (en) 2000-02-01 2005-11-15 2Wire, Inc. System and method for block error correction in packet-based digital communications
US20020009137A1 (en) 2000-02-01 2002-01-24 Nelson John E. Three-dimensional video broadcasting system
US7304990B2 (en) 2000-02-03 2007-12-04 Bandwiz Inc. Method of encoding and transmitting data over a communication medium through division and segmentation
WO2001058130A2 (en) 2000-02-03 2001-08-09 Bandwiz, Inc. Coding method
IL140504A0 (en) 2000-02-03 2002-02-10 Bandwiz Inc Broadcast system
JP2001251287A (ja) 2000-02-24 2001-09-14 Geneticware Corp Ltd ハードウエア保護内部秘匿鍵及び可変パスコードを利用する機密データ伝送方法
DE10009443A1 (de) 2000-02-29 2001-08-30 Philips Corp Intellectual Pty Empfänger und Verfahren zum Detektieren und Dekodieren eines DQPSK-modulierten und kanalkodierten Empfangssignals
US6765866B1 (en) 2000-02-29 2004-07-20 Mosaid Technologies, Inc. Link aggregation
US6384750B1 (en) 2000-03-23 2002-05-07 Mosaid Technologies, Inc. Multi-stage lookup for translating between signals of different bit lengths
JP2001274776A (ja) 2000-03-24 2001-10-05 Toshiba Corp 情報データ伝送システムとその送信装置及び受信装置
US6510177B1 (en) 2000-03-24 2003-01-21 Microsoft Corporation System and method for layered video coding enhancement
WO2001076077A2 (en) 2000-03-31 2001-10-11 Ted Szymanski Transmitter, receiver, and coding scheme to increase data rate and decrease bit error rate of an optical data link
US6473010B1 (en) 2000-04-04 2002-10-29 Marvell International, Ltd. Method and apparatus for determining error correction code failure rate for iterative decoding algorithms
US8572646B2 (en) 2000-04-07 2013-10-29 Visible World Inc. System and method for simultaneous broadcast for personalized messages
DE60121930T2 (de) 2000-04-08 2007-07-26 Sun Microsystems, Inc., Santa Clara Methode zum streamen einer einzelnen medienspur zu mehreren clients
US6631172B1 (en) 2000-05-01 2003-10-07 Lucent Technologies Inc. Efficient list decoding of Reed-Solomon codes for message recovery in the presence of high noise levels
US6742154B1 (en) 2000-05-25 2004-05-25 Ciena Corporation Forward error correction codes for digital optical network optimization
US6694476B1 (en) 2000-06-02 2004-02-17 Vitesse Semiconductor Corporation Reed-solomon encoder and decoder
US6738942B1 (en) 2000-06-02 2004-05-18 Vitesse Semiconductor Corporation Product code based forward error correction system
GB2366159B (en) 2000-08-10 2003-10-08 Mitel Corp Combination reed-solomon and turbo coding
US6834342B2 (en) 2000-08-16 2004-12-21 Eecad, Inc. Method and system for secure communication over unstable public connections
KR100447162B1 (ko) 2000-08-19 2004-09-04 엘지전자 주식회사 래디오 링크 콘트롤(rlc)에서 프로토콜 데이터 유닛(pdu) 정보의 길이 지시자(li) 처리방법
JP2002073625A (ja) 2000-08-24 2002-03-12 Nippon Hoso Kyokai <Nhk> 放送番組に同期した情報提供の方法、サーバ及び媒体
US7340664B2 (en) 2000-09-20 2008-03-04 Lsi Logic Corporation Single engine turbo decoder with single frame size buffer for interleaving/deinterleaving
US7151754B1 (en) 2000-09-22 2006-12-19 Lucent Technologies Inc. Complete user datagram protocol (CUDP) for wireless multimedia packet networks using improved packet level forward error correction (FEC) coding
US6486803B1 (en) 2000-09-22 2002-11-26 Digital Fountain, Inc. On demand encoding with a window
US7031257B1 (en) 2000-09-22 2006-04-18 Lucent Technologies Inc. Radio link protocol (RLP)/point-to-point protocol (PPP) design that passes corrupted data and error location information among layers in a wireless data transmission protocol
US7490344B2 (en) 2000-09-29 2009-02-10 Visible World, Inc. System and method for seamless switching
US6411223B1 (en) 2000-10-18 2002-06-25 Digital Fountain, Inc. Generating high weight encoding symbols using a basis
US7613183B1 (en) 2000-10-31 2009-11-03 Foundry Networks, Inc. System and method for router data aggregation and delivery
US6694478B1 (en) 2000-11-07 2004-02-17 Agere Systems Inc. Low delay channel codes for correcting bursts of lost packets
US6732325B1 (en) 2000-11-08 2004-05-04 Digeo, Inc. Error-correction with limited working storage
US20020133247A1 (en) 2000-11-11 2002-09-19 Smith Robert D. System and method for seamlessly switching between media streams
US7072971B2 (en) 2000-11-13 2006-07-04 Digital Foundation, Inc. Scheduling of multiple files for serving on a server
US7240358B2 (en) 2000-12-08 2007-07-03 Digital Fountain, Inc. Methods and apparatus for scheduling, serving, receiving media-on demand for clients, servers arranged according to constraints on resources
ES2342357T3 (es) 2000-12-15 2010-07-06 British Telecommunications Public Limited Company Transmision y recepcion de material de audio y/o video.
JP4087706B2 (ja) 2000-12-15 2008-05-21 ブリティッシュ・テレコミュニケーションズ・パブリック・リミテッド・カンパニー オーディオおよび、またはビデオマテリアルの送信および受信
US6850736B2 (en) 2000-12-21 2005-02-01 Tropian, Inc. Method and apparatus for reception quality indication in wireless communication
US7143433B1 (en) 2000-12-27 2006-11-28 Infovalve Computing Inc. Video distribution system using dynamic segmenting of video data files
US20020085013A1 (en) 2000-12-29 2002-07-04 Lippincott Louis A. Scan synchronized dual frame buffer graphics subsystem
NO315887B1 (no) 2001-01-04 2003-11-03 Fast Search & Transfer As Fremgangsmater ved overforing og soking av videoinformasjon
US20080059532A1 (en) 2001-01-18 2008-03-06 Kazmi Syed N Method and system for managing digital content, including streaming media
DE10103387A1 (de) 2001-01-26 2002-08-01 Thorsten Nordhoff Windkraftanlage mit einer Einrichtung zur Hindernisbefeuerung bzw. Nachtkennzeichnung
FI118830B (fi) 2001-02-08 2008-03-31 Nokia Corp Tietovirran toisto
US6868083B2 (en) 2001-02-16 2005-03-15 Hewlett-Packard Development Company, L.P. Method and system for packet communication employing path diversity
US20020129159A1 (en) 2001-03-09 2002-09-12 Michael Luby Multi-output packet server with independent streams
KR100464360B1 (ko) 2001-03-30 2005-01-03 삼성전자주식회사 고속 패킷 데이터 전송 이동통신시스템에서 패킷 데이터채널에 대한 효율적인 에너지 분배 장치 및 방법
US20020143953A1 (en) 2001-04-03 2002-10-03 International Business Machines Corporation Automatic affinity within networks performing workload balancing
US6785836B2 (en) 2001-04-11 2004-08-31 Broadcom Corporation In-place data transformation for fault-tolerant disk storage systems
US6820221B2 (en) 2001-04-13 2004-11-16 Hewlett-Packard Development Company, L.P. System and method for detecting process and network failures in a distributed system
US7010052B2 (en) 2001-04-16 2006-03-07 The Ohio University Apparatus and method of CTCM encoding and decoding for a digital communication system
US7035468B2 (en) 2001-04-20 2006-04-25 Front Porch Digital Inc. Methods and apparatus for archiving, indexing and accessing audio and video data
US20020191116A1 (en) 2001-04-24 2002-12-19 Damien Kessler System and data format for providing seamless stream switching in a digital video recorder
US6497479B1 (en) 2001-04-27 2002-12-24 Hewlett-Packard Company Higher organic inks with good reliability and drytime
US7962482B2 (en) 2001-05-16 2011-06-14 Pandora Media, Inc. Methods and systems for utilizing contextual feedback to generate and modify playlists
US6633856B2 (en) 2001-06-15 2003-10-14 Flarion Technologies, Inc. Methods and apparatus for decoding LDPC codes
US7076478B2 (en) 2001-06-26 2006-07-11 Microsoft Corporation Wrapper playlists on streaming media services
US6745364B2 (en) 2001-06-28 2004-06-01 Microsoft Corporation Negotiated/dynamic error correction for streamed media
JP2003018568A (ja) 2001-06-29 2003-01-17 Matsushita Electric Ind Co Ltd 再生システム、サーバ装置及び再生装置
US6895547B2 (en) 2001-07-11 2005-05-17 International Business Machines Corporation Method and apparatus for low density parity check encoding of data
US6928603B1 (en) 2001-07-19 2005-08-09 Adaptix, Inc. System and method for interference mitigation using adaptive forward error correction in a wireless RF data transmission system
US6961890B2 (en) 2001-08-16 2005-11-01 Hewlett-Packard Development Company, L.P. Dynamic variable-length error correction code
US7110412B2 (en) 2001-09-18 2006-09-19 Sbc Technology Resources, Inc. Method and system to transport high-quality video signals
FI115418B (fi) 2001-09-20 2005-04-29 Oplayo Oy Adaptiivinen mediavirta
US6990624B2 (en) 2001-10-12 2006-01-24 Agere Systems Inc. High speed syndrome-based FEC encoder and decoder and system using same
US7480703B2 (en) 2001-11-09 2009-01-20 Sony Corporation System, method, and computer program product for remotely determining the configuration of a multi-media content user based on response of the user
US7363354B2 (en) 2001-11-29 2008-04-22 Nokia Corporation System and method for identifying and accessing network services
US7003712B2 (en) 2001-11-29 2006-02-21 Emin Martinian Apparatus and method for adaptive, multimode decoding
JP2003174489A (ja) 2001-12-05 2003-06-20 Ntt Docomo Inc ストリーミング配信装置、ストリーミング配信方法
FI114527B (fi) 2002-01-23 2004-10-29 Nokia Corp Kuvakehysten ryhmittely videokoodauksessa
KR100959573B1 (ko) 2002-01-23 2010-05-27 노키아 코포레이션 비디오 코딩시 이미지 프레임들의 그루핑
US7483489B2 (en) 2002-01-30 2009-01-27 Nxp B.V. Streaming multimedia data over a network having a variable bandwith
US7249291B2 (en) 2002-02-15 2007-07-24 Digital Fountain, Inc. System and method for reliably communicating the content of a live data stream
JP4126928B2 (ja) 2002-02-28 2008-07-30 日本電気株式会社 プロキシサーバ及びプロキシ制御プログラム
JP4116470B2 (ja) 2002-03-06 2008-07-09 ヒューレット・パッカード・カンパニー メディア・ストリーミング配信システム
FR2837332A1 (fr) 2002-03-15 2003-09-19 Thomson Licensing Sa Dispositif et procede d'insertion de codes de correction d'erreurs et de reconstitution de flux de donnees, et produits correspondants
EP1495566A4 (en) 2002-04-15 2005-07-20 Nokia Corp RLP LOGIC LAYER OF A COMMUNICATION STATION
US6677864B2 (en) 2002-04-18 2004-01-13 Telefonaktiebolaget L.M. Ericsson Method for multicast over wireless networks
JP3689063B2 (ja) 2002-04-19 2005-08-31 松下電器産業株式会社 データ受信装置及びデータ配信システム
JP3629008B2 (ja) 2002-04-19 2005-03-16 松下電器産業株式会社 データ受信装置及びデータ配信システム
EP1501318A4 (en) 2002-04-25 2006-12-06 Sharp Kk BILDCODER, IMAGE DECODER, RECORDING MEDIA AND IMAGE RECORDER
US20030204602A1 (en) 2002-04-26 2003-10-30 Hudson Michael D. Mediated multi-source peer content delivery network architecture
US7177658B2 (en) 2002-05-06 2007-02-13 Qualcomm, Incorporated Multi-media broadcast and multicast service (MBMS) in a wireless communications system
US7200388B2 (en) 2002-05-31 2007-04-03 Nokia Corporation Fragmented delivery of multimedia
ES2400239T3 (es) 2002-06-11 2013-04-08 Digital Fountain, Inc. Descodificación de códigos de reacción en cadena mediante la inactivación de símbolos recuperados
WO2003105484A1 (en) 2002-06-11 2003-12-18 Telefonaktiebolaget L M Ericsson (Publ) Generation of mixed media streams
US9240810B2 (en) 2002-06-11 2016-01-19 Digital Fountain, Inc. Systems and processes for decoding chain reaction codes through inactivation
US6956875B2 (en) 2002-06-19 2005-10-18 Atlinks Usa, Inc. Technique for communicating variable bit rate data over a constant bit rate link
JP4154569B2 (ja) 2002-07-10 2008-09-24 日本電気株式会社 画像圧縮伸長装置
JP4120461B2 (ja) 2002-07-12 2008-07-16 住友電気工業株式会社 伝送データ生成方法及び伝送データ生成装置
EP1547382A4 (en) 2002-07-16 2013-10-30 Nokia Corp METHOD FOR DIRECT ACCESS AND UNIQUE IMAGE REFRESHING IN VIDEO CODING
WO2004019521A1 (ja) 2002-07-31 2004-03-04 Sharp Kabushiki Kaisha データ通信装置、その間欠通信方法、その方法を記載するプログラム、及びそのプログラムを記録する記録媒体
JP2004070712A (ja) 2002-08-07 2004-03-04 Nippon Telegr & Teleph Corp <Ntt> データ配信方法,データ配信システム,分割配信データ受信方法,分割配信データ受信装置および分割配信データ受信プログラム
MXPA05001714A (es) 2002-08-13 2005-04-19 Nokia Corp Intercalacion de simbolo.
US6985459B2 (en) 2002-08-21 2006-01-10 Qualcomm Incorporated Early transmission and playout of packets in wireless communication systems
JP3836858B2 (ja) 2002-09-27 2006-10-25 富士通株式会社 データ配信方法、システム、伝送方法及びプログラム
JP3534742B1 (ja) 2002-10-03 2004-06-07 株式会社エヌ・ティ・ティ・ドコモ 動画像復号方法、動画像復号装置、及び動画像復号プログラム
KR101143282B1 (ko) 2002-10-05 2012-05-08 디지털 파운튼, 인크. 연쇄 반응 코드의 체계적 인코딩 및 디코딩
JP2004135013A (ja) 2002-10-10 2004-04-30 Matsushita Electric Ind Co Ltd 伝送装置及び伝送方法
FI116816B (fi) 2002-10-14 2006-02-28 Nokia Corp Median suoratoisto
US8320301B2 (en) 2002-10-25 2012-11-27 Qualcomm Incorporated MIMO WLAN system
US7289451B2 (en) 2002-10-25 2007-10-30 Telefonaktiebolaget Lm Ericsson (Publ) Delay trading between communication links
WO2004040831A1 (en) 2002-10-30 2004-05-13 Koninklijke Philips Electronics N.V. Adaptative forward error control scheme
JP2004165922A (ja) 2002-11-12 2004-06-10 Sony Corp 情報処理装置および方法、並びにプログラム
GB0226872D0 (en) 2002-11-18 2002-12-24 British Telecomm Video transmission
AU2003283600A1 (en) 2002-11-18 2004-06-15 British Telecommunications Public Limited Company Transmission of video
KR100502609B1 (ko) 2002-11-21 2005-07-20 한국전자통신연구원 Ldpc 코드를 이용한 부호화기 및 부호화 방법
US7086718B2 (en) 2002-11-23 2006-08-08 Silverbrook Research Pty Ltd Thermal ink jet printhead with high nozzle areal density
JP2004192140A (ja) 2002-12-09 2004-07-08 Sony Corp データ通信システム、データ送信装置、データ受信装置、および方法、並びにコンピュータ・プログラム
JP2004193992A (ja) 2002-12-11 2004-07-08 Sony Corp 情報処理システム、情報処理装置および方法、記録媒体、並びにプログラム
US8135073B2 (en) 2002-12-19 2012-03-13 Trident Microsystems (Far East) Ltd Enhancing video images depending on prior image enhancements
US7164882B2 (en) 2002-12-24 2007-01-16 Poltorak Alexander I Apparatus and method for facilitating a purchase using information provided on a media playing device
WO2004068715A2 (en) 2003-01-29 2004-08-12 Digital Fountain, Inc. Systems and processes for fast encoding of hamming codes
US7756002B2 (en) 2003-01-30 2010-07-13 Texas Instruments Incorporated Time-frequency interleaved orthogonal frequency division multiplexing ultra wide band physical layer
US7525994B2 (en) 2003-01-30 2009-04-28 Avaya Inc. Packet data flow identification for multiplexing
US7231404B2 (en) 2003-01-31 2007-06-12 Nokia Corporation Datacast file transmission with meta-data retention
US7062272B2 (en) 2003-02-18 2006-06-13 Qualcomm Incorporated Method and apparatus to track count of broadcast content recipients in a wireless telephone network
EP1455504B1 (en) 2003-03-07 2014-11-12 Samsung Electronics Co., Ltd. Apparatus and method for processing audio signal and computer readable recording medium storing computer program for the method
JP4173755B2 (ja) 2003-03-24 2008-10-29 富士通株式会社 データ伝送サーバ
US7610487B2 (en) 2003-03-27 2009-10-27 Microsoft Corporation Human input security codes
US7266147B2 (en) 2003-03-31 2007-09-04 Sharp Laboratories Of America, Inc. Hypothetical reference decoder
US7526565B2 (en) * 2003-04-03 2009-04-28 International Business Machines Corporation Multiple description hinting and switching for adaptive media services
US7408486B2 (en) 2003-04-21 2008-08-05 Qbit Corporation System and method for using a microlet-based modem
JP2004343701A (ja) 2003-04-21 2004-12-02 Matsushita Electric Ind Co Ltd データ受信再生装置、データ受信再生方法及びデータ受信再生処理プログラム
US20050041736A1 (en) 2003-05-07 2005-02-24 Bernie Butler-Smith Stereoscopic television signal processing method, transmission system and viewer enhancements
KR100492567B1 (ko) 2003-05-13 2005-06-03 엘지전자 주식회사 이동통신 시스템의 http 기반 비디오 스트리밍 장치및 방법
US7113773B2 (en) 2003-05-16 2006-09-26 Qualcomm Incorporated Reliable reception of broadcast/multicast content
JP2004348824A (ja) 2003-05-21 2004-12-09 Toshiba Corp Eccエンコード方法、eccエンコード装置
US8161116B2 (en) 2003-05-23 2012-04-17 Kirusa, Inc. Method and system for communicating a data file over a network
JP2004362099A (ja) 2003-06-03 2004-12-24 Sony Corp サーバ装置、情報処理装置、および情報処理方法、並びにコンピュータ・プログラム
JP2006514806A (ja) 2003-06-07 2006-05-11 サムスン エレクトロニクス カンパニー リミテッド マルチメディアデータの提供装置及びその提供方法並びにその方法を記録した記録媒体
KR101003413B1 (ko) 2003-06-12 2010-12-23 엘지전자 주식회사 이동통신 단말기의 전송데이터 압축/해제 방법
US7603689B2 (en) 2003-06-13 2009-10-13 Microsoft Corporation Fast start-up for digital video streams
RU2265960C2 (ru) 2003-06-16 2005-12-10 Федеральное государственное унитарное предприятие "Калужский научно-исследовательский институт телемеханических устройств" Способ передачи информации с использованием адаптивного перемежения
US7391717B2 (en) 2003-06-30 2008-06-24 Microsoft Corporation Streaming of variable bit rate multimedia content
US20050004997A1 (en) 2003-07-01 2005-01-06 Nokia Corporation Progressive downloading of timed multimedia content
US8149939B2 (en) 2003-07-07 2012-04-03 Samsung Electronics Co., Ltd. System of robust DTV signal transmissions that legacy DTV receivers will disregard
US7254754B2 (en) 2003-07-14 2007-08-07 International Business Machines Corporation Raid 3+3
KR100532450B1 (ko) 2003-07-16 2005-11-30 삼성전자주식회사 에러에 대해 강인한 특성을 가지는 데이터 기록 방법,이에 적합한 데이터 재생 방법, 그리고 이에 적합한 장치들
US20050028067A1 (en) 2003-07-31 2005-02-03 Weirauch Charles R. Data with multiple sets of error correction codes
CN1871804B (zh) 2003-08-21 2010-09-01 高通股份有限公司 广播/多播内容的外部编码方法及其相关装置
US8694869B2 (en) 2003-08-21 2014-04-08 QUALCIMM Incorporated Methods for forward error correction coding above a radio link control layer and related apparatus
IL157886A0 (en) 2003-09-11 2009-02-11 Bamboo Mediacasting Ltd Secure multicast transmission
IL157885A0 (en) 2003-09-11 2004-03-28 Bamboo Mediacasting Ltd Iterative forward error correction
JP4183586B2 (ja) 2003-09-12 2008-11-19 三洋電機株式会社 映像表示装置
EP2426940A1 (en) 2003-09-15 2012-03-07 The DirecTV Group, Inc. Method and system for adaptive transcoding and transrating in a video network
KR100608715B1 (ko) 2003-09-27 2006-08-04 엘지전자 주식회사 QoS보장형 멀티미디어 스트리밍 서비스 시스템 및 방법
EP1521373B1 (en) 2003-09-30 2006-08-23 Telefonaktiebolaget LM Ericsson (publ) In-place data deinterleaving
US7559004B1 (en) 2003-10-01 2009-07-07 Sandisk Corporation Dynamic redundant area configuration in a non-volatile memory system
WO2005036753A2 (en) 2003-10-06 2005-04-21 Digital Fountain, Inc. Error-correcting multi-stage code generator and decoder for communication systems having single transmitters or multiple transmitters
US7516232B2 (en) 2003-10-10 2009-04-07 Microsoft Corporation Media organization for distributed sending of media data
US7614071B2 (en) 2003-10-10 2009-11-03 Microsoft Corporation Architecture for distributed sending of media data
EP1673690B1 (en) 2003-10-14 2010-08-25 Panasonic Corporation Data converter
US7650036B2 (en) 2003-10-16 2010-01-19 Sharp Laboratories Of America, Inc. System and method for three-dimensional video coding
US7168030B2 (en) 2003-10-17 2007-01-23 Telefonaktiebolaget Lm Ericsson (Publ) Turbo code decoder with parity information update
EP1528808A3 (en) 2003-10-27 2008-03-26 Matsushita Electric Industrial Co., Ltd. Apparatus for receiving a broadcast signal
JP2005136546A (ja) 2003-10-29 2005-05-26 Sony Corp 送信装置および方法、記録媒体、並びにプログラム
EP1528702B1 (en) 2003-11-03 2008-01-23 Broadcom Corporation FEC (forward error correction) decoding with dynamic parameters
US20050102371A1 (en) 2003-11-07 2005-05-12 Emre Aksu Streaming from a server to a client
US7412641B2 (en) 2003-12-01 2008-08-12 Digital Fountain, Inc. Protection of data from erasures using subsymbol based codes
US7428669B2 (en) 2003-12-07 2008-09-23 Adaptive Spectrum And Signal Alignment, Inc. Adaptive FEC codeword management
US7574706B2 (en) 2003-12-15 2009-08-11 Microsoft Corporation System and method for managing and communicating software updates
US7590118B2 (en) 2003-12-23 2009-09-15 Agere Systems Inc. Frame aggregation format
JP4536383B2 (ja) 2004-01-16 2010-09-01 株式会社エヌ・ティ・ティ・ドコモ データ受信装置およびデータ受信方法
KR100770902B1 (ko) 2004-01-20 2007-10-26 삼성전자주식회사 고속 무선 데이터 시스템을 위한 가변 부호율의 오류 정정부호 생성 및 복호 장치 및 방법
KR100834750B1 (ko) 2004-01-29 2008-06-05 삼성전자주식회사 엔코더 단에서 스케일러빌리티를 제공하는 스케일러블비디오 코딩 장치 및 방법
JP4321284B2 (ja) 2004-02-03 2009-08-26 株式会社デンソー ストリーミングデータ送信装置、および情報配信システム
US7599294B2 (en) 2004-02-13 2009-10-06 Nokia Corporation Identification and re-transmission of missing parts
KR100596705B1 (ko) 2004-03-04 2006-07-04 삼성전자주식회사 비디오 스트리밍 서비스를 위한 비디오 코딩 방법과 비디오 인코딩 시스템, 및 비디오 디코딩 방법과 비디오 디코딩 시스템
KR100586883B1 (ko) 2004-03-04 2006-06-08 삼성전자주식회사 비디오 스트리밍 서비스를 위한 비디오 코딩방법, 프리디코딩방법, 비디오 디코딩방법, 및 이를 위한 장치와, 이미지 필터링방법
US7609653B2 (en) 2004-03-08 2009-10-27 Microsoft Corporation Resolving partial media topologies
US20050207392A1 (en) 2004-03-19 2005-09-22 Telefonaktiebolaget Lm Ericsson (Publ) Higher layer packet framing using RLP
US7240236B2 (en) 2004-03-23 2007-07-03 Archivas, Inc. Fixed content distributed data storage using permutation ring encoding
JP4433287B2 (ja) 2004-03-25 2010-03-17 ソニー株式会社 受信装置および方法、並びにプログラム
US8842175B2 (en) 2004-03-26 2014-09-23 Broadcom Corporation Anticipatory video signal reception and processing
US20050216472A1 (en) 2004-03-29 2005-09-29 David Leon Efficient multicast/broadcast distribution of formatted data
KR20070007810A (ko) 2004-03-30 2007-01-16 코닌클리케 필립스 일렉트로닉스 엔.브이. 디스크 기반 멀티미디어 콘텐츠에 대한 개선된 트릭 모드수행을 지원하는 시스템 및 방법
TW200534875A (en) 2004-04-23 2005-11-01 Lonza Ag Personal care compositions and concentrates for making the same
FR2869744A1 (fr) 2004-04-29 2005-11-04 Thomson Licensing Sa Methode de transmission de paquets de donnees numeriques et appareil implementant la methode
EP2202888A1 (en) 2004-05-07 2010-06-30 Digital Fountain, Inc. File download and streaming system
US7633970B2 (en) 2004-05-07 2009-12-15 Agere Systems Inc. MAC header compression for use with frame aggregation
US20050254575A1 (en) 2004-05-12 2005-11-17 Nokia Corporation Multiple interoperability points for scalable media coding and transmission
US20060037057A1 (en) 2004-05-24 2006-02-16 Sharp Laboratories Of America, Inc. Method and system of enabling trick play modes using HTTP GET
US8331445B2 (en) 2004-06-01 2012-12-11 Qualcomm Incorporated Method, apparatus, and system for enhancing robustness of predictive video codecs using a side-channel based on distributed source coding techniques
US20070110074A1 (en) 2004-06-04 2007-05-17 Bob Bradley System and Method for Synchronizing Media Presentation at Multiple Recipients
US8112531B2 (en) 2004-07-14 2012-02-07 Nokia Corporation Grouping of session objects
US7139660B2 (en) 2004-07-14 2006-11-21 General Motors Corporation System and method for changing motor vehicle personalization settings
US8544043B2 (en) 2004-07-21 2013-09-24 Qualcomm Incorporated Methods and apparatus for providing content information to content servers
US7409626B1 (en) 2004-07-28 2008-08-05 Ikanos Communications Inc Method and apparatus for determining codeword interleaver parameters
US7376150B2 (en) 2004-07-30 2008-05-20 Nokia Corporation Point-to-point repair response mechanism for point-to-multipoint transmission systems
US7590922B2 (en) 2004-07-30 2009-09-15 Nokia Corporation Point-to-point repair request mechanism for point-to-multipoint transmission systems
US7930184B2 (en) 2004-08-04 2011-04-19 Dts, Inc. Multi-channel audio coding/decoding of random access points and transients
US7721184B2 (en) 2004-08-11 2010-05-18 Digital Fountain, Inc. Method and apparatus for fast encoding of data symbols according to half-weight codes
JP4405875B2 (ja) 2004-08-25 2010-01-27 富士通株式会社 エラー訂正用データの生成方法及び生成装置並びに生成プログラム及び同プログラムを格納したコンピュータ読み取り可能な記録媒体
JP2006074335A (ja) 2004-09-01 2006-03-16 Nippon Telegr & Teleph Corp <Ntt> 伝送方法、伝送システム及び伝送装置
JP4576936B2 (ja) 2004-09-02 2010-11-10 ソニー株式会社 情報処理装置、情報記録媒体、コンテンツ管理システム、およびデータ処理方法、並びにコンピュータ・プログラム
JP2006115104A (ja) 2004-10-13 2006-04-27 Daiichikosho Co Ltd 高能率符号化された時系列情報をパケット化してリアルタイム・ストリーミング送信し受信再生する方法および装置
US7529984B2 (en) 2004-11-16 2009-05-05 Infineon Technologies Ag Seamless change of depth of a general convolutional interleaver during transmission without loss of data
US7751324B2 (en) 2004-11-19 2010-07-06 Nokia Corporation Packet stream arrangement in multimedia transmission
WO2006057938A2 (en) 2004-11-22 2006-06-01 Thomson Research Funding Corporation Method and apparatus for channel change in dsl system
EP1817859A1 (en) 2004-12-02 2007-08-15 THOMSON Licensing Adaptive forward error correction
KR20060065482A (ko) 2004-12-10 2006-06-14 마이크로소프트 코포레이션 스트리밍 미디어 데이터의 코딩 비트 레이트의 제어 시스템및 프로세스
JP2006174032A (ja) 2004-12-15 2006-06-29 Sanyo Electric Co Ltd 画像データ伝送システム、画像データ受信装置及び画像データ送信装置
JP2006174045A (ja) 2004-12-15 2006-06-29 Ntt Communications Kk 画像配信装置、プログラム及び方法
US7398454B2 (en) 2004-12-21 2008-07-08 Tyco Telecommunications (Us) Inc. System and method for forward error correction decoding using soft information
JP4391409B2 (ja) 2004-12-24 2009-12-24 株式会社第一興商 高能率符号化された時系列情報をリアルタイム・ストリーミング送信し受信再生する方法と受信装置
EP1847087A1 (en) 2005-02-08 2007-10-24 Telefonaktiebolaget LM Ericsson (publ) On-demand multi-channel streaming session over packet-switched networks
US7925097B2 (en) 2005-02-18 2011-04-12 Sanyo Electric Co., Ltd. Image display method, image coding apparatus, and image decoding apparatus
US7822139B2 (en) 2005-03-02 2010-10-26 Rohde & Schwarz Gmbh & Co. Kg Apparatus, systems, methods and computer products for providing a virtual enhanced training sequence
EP1856911A4 (en) 2005-03-07 2010-02-24 Ericsson Telefon Ab L M SWITCHING MULTIMEDIA CHANNELS
US8028322B2 (en) 2005-03-14 2011-09-27 Time Warner Cable Inc. Method and apparatus for network content download and recording
US7219289B2 (en) 2005-03-15 2007-05-15 Tandberg Data Corporation Multiply redundant raid system and XOR-efficient method and apparatus for implementing the same
US7418649B2 (en) 2005-03-15 2008-08-26 Microsoft Corporation Efficient implementation of reed-solomon erasure resilient codes in high-rate applications
US7450064B2 (en) 2005-03-22 2008-11-11 Qualcomm, Incorporated Methods and systems for deriving seed position of a subscriber station in support of unassisted GPS-type position determination in a wireless communication system
JP4487028B2 (ja) 2005-03-31 2010-06-23 ブラザー工業株式会社 配信速度制御装置、配信システム、配信速度制御方法、及び配信速度制御用プログラム
US7715842B2 (en) 2005-04-09 2010-05-11 Lg Electronics Inc. Supporting handover of mobile terminal
RU2377736C2 (ru) 2005-04-13 2009-12-27 Нокиа Корпорейшн Кодирование, хранение и передача информации о масштабируемости
JP4515319B2 (ja) 2005-04-27 2010-07-28 株式会社日立製作所 コンピュータシステム
US7961700B2 (en) 2005-04-28 2011-06-14 Qualcomm Incorporated Multi-carrier operation in data transmission systems
US8683066B2 (en) 2007-08-06 2014-03-25 DISH Digital L.L.C. Apparatus, system, and method for multi-bitrate content streaming
JP2006319743A (ja) 2005-05-13 2006-11-24 Toshiba Corp 受信装置
US8228994B2 (en) 2005-05-20 2012-07-24 Microsoft Corporation Multi-view video coding based on temporal and view decomposition
MX2007014744A (es) 2005-05-24 2008-02-14 Nokia Corp Metodo y aparatos para transmision/recepcion jerarquica en transmision digital.
US7676735B2 (en) 2005-06-10 2010-03-09 Digital Fountain Inc. Forward error-correcting (FEC) coding and streaming
US7644335B2 (en) 2005-06-10 2010-01-05 Qualcomm Incorporated In-place transformations with applications to encoding and decoding various classes of codes
JP2007013436A (ja) 2005-06-29 2007-01-18 Toshiba Corp 符号化ストリーム再生装置
US20070006274A1 (en) 2005-06-30 2007-01-04 Toni Paila Transmission and reception of session packets
JP2007013675A (ja) 2005-06-30 2007-01-18 Sanyo Electric Co Ltd ストリーミング配信システム及びサーバ
US7725593B2 (en) 2005-07-15 2010-05-25 Sony Corporation Scalable video coding (SVC) file format
US20070022215A1 (en) 2005-07-19 2007-01-25 Singer David W Method and apparatus for media data transmission
ATE514246T1 (de) 2005-08-19 2011-07-15 Hewlett Packard Development Co Andeutung von verlorenen segmenten über schichtgrenzen
JP3996631B2 (ja) 2005-09-09 2007-10-24 松下電器産業株式会社 画像処理方法、画像記録方法、画像処理装置および画像ファイルフォーマット
US7924913B2 (en) 2005-09-15 2011-04-12 Microsoft Corporation Non-realtime data transcoding of multimedia content
US20070067480A1 (en) 2005-09-19 2007-03-22 Sharp Laboratories Of America, Inc. Adaptive media playout by server media processing for robust streaming
US8879856B2 (en) 2005-09-27 2014-11-04 Qualcomm Incorporated Content driven transcoder that orchestrates multimedia transcoding using content information
US20070078876A1 (en) 2005-09-30 2007-04-05 Yahoo! Inc. Generating a stream of media data containing portions of media files using location tags
US7720062B2 (en) 2005-10-05 2010-05-18 Lg Electronics Inc. Method of processing traffic information and digital broadcasting system
US7164370B1 (en) 2005-10-06 2007-01-16 Analog Devices, Inc. System and method for decoding data compressed in accordance with dictionary-based compression schemes
DE602006051050C5 (de) 2005-10-11 2022-10-27 Nokia Technologies Oy System and method for efficient scalable stream adaptation
CN100442858C (zh) 2005-10-11 2008-12-10 华为技术有限公司 分组网络中多媒体实时传输的唇同步方法及其装置
US7720096B2 (en) 2005-10-13 2010-05-18 Microsoft Corporation RTP payload format for VC-1
WO2007047736A2 (en) 2005-10-19 2007-04-26 Thomson Licensing Multi-view video coding using scalable video coding
JP4727401B2 (ja) 2005-12-02 2011-07-20 日本電信電話株式会社 無線マルチキャスト伝送システム、無線送信装置及び無線マルチキャスト伝送方法
FR2894421B1 (fr) 2005-12-07 2008-01-18 Canon Kk Procede et dispositif de decodage d'un flux video code suivant un codage hierarchique
KR100759823B1 (ko) 2005-12-08 2007-09-18 한국전자통신연구원 제로 복귀 신호 발생 장치 및 그 방법
JP4456064B2 (ja) 2005-12-21 2010-04-28 日本電信電話株式会社 パケット送信装置、受信装置、システム、およびプログラム
US20070157267A1 (en) 2005-12-30 2007-07-05 Intel Corporation Techniques to improve time seek operations
KR101353620B1 (ko) 2006-01-05 2014-01-20 텔레폰악티에볼라겟엘엠에릭슨(펍) 미디어 컨테이너 파일 관리
US8214516B2 (en) 2006-01-06 2012-07-03 Google Inc. Dynamic media serving infrastructure
JP4874343B2 (ja) 2006-01-11 2012-02-15 ノキア コーポレイション スケーラブルビデオ符号化における、下位互換性のあるピクチャの集約
EP1977593A4 (en) 2006-01-12 2010-06-16 Lg Electronics Inc PROCESSING MORE VIEW VIDEO
WO2007086654A1 (en) 2006-01-25 2007-08-02 Lg Electronics Inc. Digital broadcasting system and method of processing data
US7262719B2 (en) 2006-01-30 2007-08-28 International Business Machines Corporation Fast data stream decoding using apriori information
RU2290768C1 (ru) 2006-01-30 2006-12-27 Общество с ограниченной ответственностью "Трафиклэнд" Система медиавещания в инфраструктуре оператора мобильной связи
GB0602314D0 (en) 2006-02-06 2006-03-15 Ericsson Telefon Ab L M Transporting packets
US20110087792A2 (en) 2006-02-07 2011-04-14 Dot Hill Systems Corporation Data replication method and apparatus
US8239727B2 (en) 2006-02-08 2012-08-07 Thomson Licensing Decoding of raptor codes
EP1985021A4 (en) 2006-02-13 2013-05-29 Digital Fountain Inc CONTINUOUS TRANSMISSION AND BUFFER DELIVERY USING CONTINUOUS MONITORING OVERVIEW AND PERIODS OF PROTECTION
US9270414B2 (en) 2006-02-21 2016-02-23 Digital Fountain, Inc. Multiple-field based code generator and decoder for communications systems
US20070200949A1 (en) 2006-02-21 2007-08-30 Qualcomm Incorporated Rapid tuning in multimedia applications
JP2007228205A (ja) 2006-02-23 2007-09-06 Funai Electric Co Ltd ネットワークサーバ
US8320450B2 (en) 2006-03-29 2012-11-27 Vidyo, Inc. System and method for transcoding between scalable and non-scalable video codecs
US20090100496A1 (en) 2006-04-24 2009-04-16 Andreas Bechtolsheim Media server system
US20080010153A1 (en) 2006-04-24 2008-01-10 Pugh-O'connor Archie Computer network provided digital content under an advertising and revenue sharing basis, such as music provided via the internet with time-shifted advertisements presented by a client resident application
US7640353B2 (en) 2006-04-27 2009-12-29 Microsoft Corporation Guided random seek support for media streaming
WO2007134196A2 (en) 2006-05-10 2007-11-22 Digital Fountain, Inc. Code generator and decoder using hybrid codes
US7525993B2 (en) 2006-05-24 2009-04-28 Newport Media, Inc. Robust transmission system and method for mobile television applications
US9380096B2 (en) 2006-06-09 2016-06-28 Qualcomm Incorporated Enhanced block-request streaming system for handling low-latency streaming
US9209934B2 (en) 2006-06-09 2015-12-08 Qualcomm Incorporated Enhanced block-request streaming using cooperative parallel HTTP and forward error correction
TWM302355U (en) 2006-06-09 2006-12-11 Jia-Bau Jeng Fixation and cushion structure of knee joint
US20100211690A1 (en) 2009-02-13 2010-08-19 Digital Fountain, Inc. Block partitioning for a data stream
US9178535B2 (en) 2006-06-09 2015-11-03 Digital Fountain, Inc. Dynamic stream interleaving and sub-stream based delivery
US9386064B2 (en) 2006-06-09 2016-07-05 Qualcomm Incorporated Enhanced block-request streaming using URL templates and construction rules
US9432433B2 (en) 2006-06-09 2016-08-30 Qualcomm Incorporated Enhanced block-request streaming system using signaling or block creation
US9419749B2 (en) 2009-08-19 2016-08-16 Qualcomm Incorporated Methods and apparatus employing FEC codes with permanent inactivation of symbols for encoding and decoding processes
JP2008011404A (ja) 2006-06-30 2008-01-17 Toshiba Corp コンテンツ処理装置及びコンテンツ処理方法
JP4392004B2 (ja) 2006-07-03 2009-12-24 インターナショナル・ビジネス・マシーンズ・コーポレーション パケット回復のための符号化および復号化技術
WO2008011549A2 (en) 2006-07-20 2008-01-24 Sandisk Corporation Content distribution system
US7711797B1 (en) 2006-07-31 2010-05-04 Juniper Networks, Inc. Optimizing batch size for prefetching data over wide area networks
JP4241781B2 (ja) * 2006-08-10 2009-03-18 エプソンイメージングデバイス株式会社 電気光学装置、駆動回路および電子機器
US8209736B2 (en) 2006-08-23 2012-06-26 Mediatek Inc. Systems and methods for managing television (TV) signals
US20080066136A1 (en) 2006-08-24 2008-03-13 International Business Machines Corporation System and method for detecting topic shift boundaries in multimedia streams using joint audio, visual and text cues
WO2008023328A2 (en) 2006-08-24 2008-02-28 Nokia Corporation System and method for indicating track relationships in media files
JP2008109637A (ja) 2006-09-25 2008-05-08 Toshiba Corp 動画像符号化装置及びその方法
US8428013B2 (en) 2006-10-30 2013-04-23 Lg Electronics Inc. Method of performing random access in a wireless communcation system
JP2008118221A (ja) 2006-10-31 2008-05-22 Toshiba Corp 復号装置及び復号方法
WO2008054100A1 (en) 2006-11-01 2008-05-08 Electronics And Telecommunications Research Institute Method and apparatus for decoding metadata used for playing stereoscopic contents
US8345743B2 (en) 2006-11-14 2013-01-01 Qualcomm Incorporated Systems and methods for channel switching
US8027328B2 (en) 2006-12-26 2011-09-27 Alcatel Lucent Header compression in a wireless communication network
EP3901779B1 (en) 2007-01-05 2022-10-26 DivX, LLC Video distribution system including progressive playback
US20080168516A1 (en) 2007-01-08 2008-07-10 Christopher Lance Flick Facilitating Random Access In Streaming Content
WO2008084348A1 (en) 2007-01-09 2008-07-17 Nokia Corporation Method for supporting file versioning in mbms file repair
US20080172430A1 (en) 2007-01-11 2008-07-17 Andrew Thomas Thorstensen Fragmentation Compression Management
WO2008084876A1 (en) 2007-01-11 2008-07-17 Panasonic Corporation Method for trick playing on streamed and encrypted multimedia
WO2008085013A1 (en) 2007-01-12 2008-07-17 University-Industry Cooperation Group Of Kyung Hee University Packet format of network abstraction layer unit, and algorithm and apparatus for video encoding and decoding using the format, qos control algorithm and apparatus for ipv6 label switching using the format
KR20080066408A (ko) 2007-01-12 2008-07-16 삼성전자주식회사 3차원 영상 처리 장치 및 방법
US7949195B2 (en) 2007-01-16 2011-05-24 Cisco Technology, Inc. Per block breakpoint determining for hybrid variable length coding
US7721003B2 (en) 2007-02-02 2010-05-18 International Business Machines Corporation System and method to synchronize OSGi bundle inventories between an OSGi bundle server and a client
KR101385190B1 (ko) * 2007-02-07 2014-04-15 삼성디스플레이 주식회사 액정 표시 패널 및 이의 제조 방법
US20080192818A1 (en) 2007-02-09 2008-08-14 Dipietro Donald Vincent Systems and methods for securing media
US20080232357A1 (en) 2007-03-19 2008-09-25 Legend Silicon Corp. Ls digital fountain code
JP4838191B2 (ja) 2007-05-08 2011-12-14 シャープ株式会社 ファイル再生装置、ファイル再生方法、ファイル再生を実行させるプログラム及びそのプログラムを記録した記録媒体
US20080278415A1 (en) * 2007-05-09 2008-11-13 Pioneer Corporation Method for driving plasma display panel
JP2008283571A (ja) 2007-05-11 2008-11-20 Ntt Docomo Inc コンテンツ配信装置、コンテンツ配信システム、およびコンテンツ配信方法
US8275002B2 (en) 2007-05-14 2012-09-25 Samsung Electronics Co., Ltd. Broadcasting service transmitting apparatus and method and broadcasting service receiving apparatus and method for effectively accessing broadcasting service
KR101494028B1 (ko) 2007-05-16 2015-02-16 톰슨 라이센싱 신호를 인코딩 및 디코딩하는 장치 및 방법
FR2917262A1 (fr) 2007-06-05 2008-12-12 Thomson Licensing Sas Dispositif et procede de codage d'un contenu video sous la forme d'un flux scalable.
US8487982B2 (en) 2007-06-07 2013-07-16 Reald Inc. Stereoplexing for film and video applications
EP2501137A3 (en) 2007-06-11 2012-12-12 Samsung Electronics Co., Ltd. Method and apparatus for generating header information of stereoscopic image
US8340113B2 (en) 2007-06-20 2012-12-25 Telefonaktiebolaget Lm Erricsson (Publ) Method and arrangement for improved media session management
EP2174502A2 (en) 2007-06-26 2010-04-14 Nokia Corporation System and method for indicating temporal layer switching points
US7917702B2 (en) 2007-07-10 2011-03-29 Qualcomm Incorporated Data prefetch throttle
JP2009027598A (ja) 2007-07-23 2009-02-05 Hitachi Ltd 映像配信サーバおよび映像配信方法
US8327403B1 (en) 2007-09-07 2012-12-04 United Video Properties, Inc. Systems and methods for providing remote program ordering on a user device via a web server
MX2010002829A (es) 2007-09-12 2010-04-01 Digital Fountain Inc Generacion y comunicacion de informacion para identificacion de fuentes para permitir comunicaciones seguras.
US8233532B2 (en) 2007-09-21 2012-07-31 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Information signal, apparatus and method for encoding an information content, and apparatus and method for error correcting an information signal
US8346959B2 (en) 2007-09-28 2013-01-01 Sharp Laboratories Of America, Inc. Client-controlled adaptive streaming
EP2046044B1 (en) 2007-10-01 2017-01-18 Cabot Communications Ltd A method and apparatus for streaming digital media content and a communication system
EP2181541B1 (en) 2007-10-09 2018-12-05 Samsung Electronics Co., Ltd. Apparatus and method for generating mac pdu in a mobile communication system
US8635360B2 (en) 2007-10-19 2014-01-21 Google Inc. Media playback point seeking using data range requests
US8706907B2 (en) 2007-10-19 2014-04-22 Voxer Ip Llc Telecommunication and multimedia management method and apparatus
US20090125636A1 (en) 2007-11-13 2009-05-14 Qiong Li Payload allocation methods for scalable multimedia servers
WO2009065526A1 (en) 2007-11-23 2009-05-28 Media Patents S.L. A process for the on-line distribution of audiovisual contents with advertisements, advertisement management system, digital rights management system and audiovisual content player provided with said systems
US8543720B2 (en) 2007-12-05 2013-09-24 Google Inc. Dynamic bit rate scaling
JP5385598B2 (ja) 2007-12-17 2014-01-08 キヤノン株式会社 画像処理装置及び画像管理サーバ装置及びそれらの制御方法及びプログラム
US9313245B2 (en) 2007-12-24 2016-04-12 Qualcomm Incorporated Adaptive streaming for on demand wireless services
KR101506217B1 (ko) 2008-01-31 2015-03-26 삼성전자주식회사 스테레오스코픽 영상의 부분 데이터 구간 재생을 위한스테레오스코픽 영상 데이터스트림 생성 방법과 장치, 및스테레오스코픽 영상의 부분 데이터 구간 재생 방법과 장치
EP2086237B1 (en) 2008-02-04 2012-06-27 Alcatel Lucent Method and device for reordering and multiplexing multimedia packets from multimedia streams pertaining to interrelated sessions
US8151174B2 (en) 2008-02-13 2012-04-03 Sunrise IP, LLC Block modulus coding (BMC) systems and methods for block coding with non-binary modulus
US20090219985A1 (en) 2008-02-28 2009-09-03 Vasanth Swaminathan Systems and Methods for Processing Multiple Projections of Video Data in a Single Video File
US7984097B2 (en) 2008-03-18 2011-07-19 Media Patents, S.L. Methods for transmitting multimedia files and advertisements
US8606996B2 (en) 2008-03-31 2013-12-10 Amazon Technologies, Inc. Cache optimization
US20090257508A1 (en) 2008-04-10 2009-10-15 Gaurav Aggarwal Method and system for enabling video trick modes
CN103795511B (zh) 2008-04-14 2018-05-01 亚马逊技术股份有限公司 一种在基站接收上行链路传输的方法及基站
US20100049865A1 (en) 2008-04-16 2010-02-25 Nokia Corporation Decoding Order Recovery in Session Multiplexing
WO2009130561A1 (en) 2008-04-21 2009-10-29 Nokia Corporation Method and device for video coding and decoding
TW201014366A (en) 2008-05-07 2010-04-01 Digital Fountain Inc Fast channel zapping and high quality streaming protection over a broadcast channel
WO2009140208A2 (en) 2008-05-12 2009-11-19 Swarmcast, Inc. Live media delivery over a packet-based computer network
JP5022301B2 (ja) 2008-05-19 2012-09-12 株式会社エヌ・ティ・ティ・ドコモ プロキシサーバおよび通信中継プログラム、並びに通信中継方法
CN101287107B (zh) 2008-05-29 2010-10-13 腾讯科技(深圳)有限公司 媒体文件的点播方法、系统和设备
US7925774B2 (en) 2008-05-30 2011-04-12 Microsoft Corporation Media streaming using an index file
US20100011274A1 (en) 2008-06-12 2010-01-14 Qualcomm Incorporated Hypothetical fec decoder and signalling for decoding control
US8775566B2 (en) 2008-06-21 2014-07-08 Microsoft Corporation File format for media distribution and presentation
US8387150B2 (en) 2008-06-27 2013-02-26 Microsoft Corporation Segmented media content rights management
US8468426B2 (en) 2008-07-02 2013-06-18 Apple Inc. Multimedia-aware quality-of-service and error correction provisioning
US8539092B2 (en) 2008-07-09 2013-09-17 Apple Inc. Video streaming using multiple channels
US20100153578A1 (en) 2008-07-16 2010-06-17 Nokia Corporation Method and Apparatus for Peer to Peer Streaming
US8638796B2 (en) 2008-08-22 2014-01-28 Cisco Technology, Inc. Re-ordering segments of a large number of segmented service flows
KR101019634B1 (ko) 2008-09-04 2011-03-07 에스케이 텔레콤주식회사 미디어 전송 시스템 및 방법
US8325796B2 (en) 2008-09-11 2012-12-04 Google Inc. System and method for video coding using adaptive segmentation
US8370520B2 (en) 2008-11-24 2013-02-05 Juniper Networks, Inc. Adaptive network content delivery system
US20100169458A1 (en) 2008-12-31 2010-07-01 David Biderman Real-Time or Near Real-Time Streaming
US8743906B2 (en) 2009-01-23 2014-06-03 Akamai Technologies, Inc. Scalable seamless digital video stream splicing
CN104717521B (zh) 2009-01-26 2018-06-01 汤姆森特许公司 用于视频解码的方法
US9025670B2 (en) 2009-01-29 2015-05-05 Dolby Laboratories Licensing Corporation Methods and devices for sub-sampling and interleaving multiple images, EG stereoscopic
US9281847B2 (en) 2009-02-27 2016-03-08 Qualcomm Incorporated Mobile reception of digital video broadcasting—terrestrial services
US8909806B2 (en) 2009-03-16 2014-12-09 Microsoft Corporation Delivering cacheable streaming media presentations
US8621044B2 (en) 2009-03-16 2013-12-31 Microsoft Corporation Smooth, stateless client media streaming
WO2010120804A1 (en) 2009-04-13 2010-10-21 Reald Inc. Encoding, decoding, and distributing enhanced resolution stereoscopic video
US9807468B2 (en) 2009-06-16 2017-10-31 Microsoft Technology Licensing, Llc Byte range caching
WO2011009205A1 (en) 2009-07-22 2011-01-27 Jigsee Inc. Method of streaming media to heterogeneous client devices
US8355433B2 (en) * 2009-08-18 2013-01-15 Netflix, Inc. Encoding video streams for adaptive video streaming
US9288010B2 (en) 2009-08-19 2016-03-15 Qualcomm Incorporated Universal file delivery methods for providing unequal error protection and bundled file delivery services
US20120151302A1 (en) 2010-12-10 2012-06-14 Qualcomm Incorporated Broadcast multimedia storage and access using page maps when asymmetric memory is used
CA2772100C (en) 2009-09-02 2016-06-28 Hang Zhang Mac packet data unit construction for wireless systems
US9917874B2 (en) 2009-09-22 2018-03-13 Qualcomm Incorporated Enhanced block-request streaming using block partitioning or request controls for improved client-side handling
US20110096828A1 (en) 2009-09-22 2011-04-28 Qualcomm Incorporated Enhanced block-request streaming using scalable encoding
US9438861B2 (en) 2009-10-06 2016-09-06 Microsoft Technology Licensing, Llc Integrating continuous and sparse streaming data
JP2011087103A (ja) 2009-10-15 2011-04-28 Sony Corp コンテンツ再生システム、コンテンツ再生装置、プログラム、コンテンツ再生方法、およびコンテンツサーバを提供
EP3786806A1 (en) 2009-11-04 2021-03-03 Virginia Wireless and Streaming Technologies LLC System and method for media content streaming
KR101786051B1 (ko) 2009-11-13 2017-10-16 삼성전자 주식회사 데이터 제공 방법 및 장치와 데이터 수신 방법 및 장치
KR101786050B1 (ko) 2009-11-13 2017-10-16 삼성전자 주식회사 데이터 전송 방법 및 장치
CN101729857A (zh) 2009-11-24 2010-06-09 中兴通讯股份有限公司 一种接入视频服务的方法及视频播放系统
CN102687518B (zh) 2009-12-11 2016-06-01 诺基亚技术有限公司 用于流媒体文件内表示的描述和定时的装置及方法
RU2012139959A (ru) * 2010-02-19 2014-03-27 Телефонактиеболагет Л М Эрикссон (Пабл) Способ и устройство для переключения воспроизведений в потоковой передачи по протоколу передачи гипертекста
US9112933B2 (en) 2010-02-19 2015-08-18 Telefonaktiebolaget L M Ericsson (Publ) Method and arrangement for adaption in HTTP streaming
JP5071495B2 (ja) 2010-03-04 2012-11-14 ウシオ電機株式会社 光源装置
PL2547001T3 (pl) 2010-03-11 2016-11-30 Sposób i urządzenie do nadawania i odbierania danych w systemie mimo
US20110280311A1 (en) 2010-05-13 2011-11-17 Qualcomm Incorporated One-stream coding for asymmetric stereo video
US9497290B2 (en) 2010-06-14 2016-11-15 Blackberry Limited Media presentation description delta file for HTTP streaming
US8918533B2 (en) 2010-07-13 2014-12-23 Qualcomm Incorporated Video switching for streaming video data
US9185439B2 (en) 2010-07-15 2015-11-10 Qualcomm Incorporated Signaling data for multiplexing video components
KR20120010089A (ko) 2010-07-20 2012-02-02 삼성전자주식회사 Http 기반의 멀티미디어 스트리밍 서비스의 품질 향상을 위한 방법 및 장치
US9131033B2 (en) 2010-07-20 2015-09-08 Qualcomm Incoporated Providing sequence data sets for streaming video data
US9596447B2 (en) 2010-07-21 2017-03-14 Qualcomm Incorporated Providing frame packing type information for video coding
US8711933B2 (en) 2010-08-09 2014-04-29 Sony Computer Entertainment Inc. Random access point (RAP) formation using intra refreshing technique in video coding
US8806050B2 (en) 2010-08-10 2014-08-12 Qualcomm Incorporated Manifest file updates for network streaming of coded multimedia data
KR101737325B1 (ko) 2010-08-19 2017-05-22 삼성전자주식회사 멀티미디어 시스템에서 멀티미디어 서비스의 경험 품질 감소를 줄이는 방법 및 장치
US8615023B2 (en) 2010-10-27 2013-12-24 Electronics And Telecommunications Research Institute Apparatus and method for transmitting/receiving data in communication system
US9270299B2 (en) 2011-02-11 2016-02-23 Qualcomm Incorporated Encoding and decoding using elastic codes with flexible source block mapping
US20120208580A1 (en) 2011-02-11 2012-08-16 Qualcomm Incorporated Forward error correction scheduling for an improved radio link protocol
US8958375B2 (en) 2011-02-11 2015-02-17 Qualcomm Incorporated Framing for an improved radio link protocol including FEC
US9590814B2 (en) * 2011-08-01 2017-03-07 Qualcomm Incorporated Method and apparatus for transport of dynamic adaptive streaming over HTTP (DASH) initialization segment description fragments as user service description fragments
US9843844B2 (en) 2011-10-05 2017-12-12 Qualcomm Incorporated Network streaming of media data
US9294226B2 (en) 2012-03-26 2016-03-22 Qualcomm Incorporated Universal object delivery and template-based file delivery
US9129214B1 (en) 2013-03-14 2015-09-08 Netflix, Inc. Personalized markov chains

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016129768A1 (ko) * 2015-02-09 2016-08-18 한국전자통신연구원 대역폭에 적응적인 대쉬 기반 컨텐츠 제공 장치 및 방법
US10506009B2 (en) 2015-02-09 2019-12-10 Electronics & Telecommunications Research Institute Apparatus and method for providing content on basis of DASH adaptive to bandwidth
KR20170116027A (ko) * 2015-02-10 2017-10-18 퀄컴 인코포레이티드 저 레이턴시 비디오 스트리밍
KR20170121195A (ko) * 2015-03-02 2017-11-01 퀄컴 인코포레이티드 부분 세그먼트에 대한 표시
KR20160107617A (ko) * 2015-03-04 2016-09-19 주식회사 알티캐스트 영상 서비스 제공 방법, 사용자 단말기 및 컴퓨터 프로그램
KR102287429B1 (ko) * 2020-02-03 2021-08-06 주식회사 엘지유플러스 스트리밍 서비스를 통한 동영상 출력 방법 및 장치

Also Published As

Publication number Publication date
EP2752025A1 (en) 2014-07-09
US9253233B2 (en) 2016-02-02
KR101575740B1 (ko) 2015-12-08
WO2013033565A1 (en) 2013-03-07
JP6054398B2 (ja) 2016-12-27
CN103858440B (zh) 2017-10-31
JP2014529970A (ja) 2014-11-13
CN103858440A (zh) 2014-06-11
US20130246643A1 (en) 2013-09-19

Similar Documents

Publication Publication Date Title
KR101575740B1 (ko) 적응형 http 스트리밍을 위한 표현들 사이에서 개선된 스위칭을 제공하는 스위칭 시그널링 방법들
US11743317B2 (en) Enhanced block-request streaming using block partitioning or request controls for improved client-side handling
US11770432B2 (en) Enhanced block-request streaming system for handling low-latency streaming
US9191151B2 (en) Enhanced block-request streaming using cooperative parallel HTTP and forward error correction
US9386064B2 (en) Enhanced block-request streaming using URL templates and construction rules
KR101741484B1 (ko) 저-레이턴시 스트림을 처리하기 위한 개선된 블록-요청 스트리밍 시스템
DK2481198T3 (en) IMPROVED BLOCK REQUEST STREAMING USING SCALABLE CODING
US20130007223A1 (en) Enhanced block-request streaming system for handling low-latency streaming

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee