KR102076064B1 - Dash의 강건한 라이브 동작 - Google Patents
Dash의 강건한 라이브 동작 Download PDFInfo
- Publication number
- KR102076064B1 KR102076064B1 KR1020167021661A KR20167021661A KR102076064B1 KR 102076064 B1 KR102076064 B1 KR 102076064B1 KR 1020167021661 A KR1020167021661 A KR 1020167021661A KR 20167021661 A KR20167021661 A KR 20167021661A KR 102076064 B1 KR102076064 B1 KR 102076064B1
- Authority
- KR
- South Korea
- Prior art keywords
- period
- data
- media
- media data
- time
- Prior art date
Links
- 238000000034 method Methods 0.000 claims description 65
- 230000011664 signaling Effects 0.000 claims description 23
- 230000004044 response Effects 0.000 claims description 20
- 238000004891 communication Methods 0.000 claims description 9
- 230000003044 adaptive effect Effects 0.000 claims description 4
- 230000006978 adaptation Effects 0.000 description 23
- 230000000875 corresponding effect Effects 0.000 description 20
- 238000005538 encapsulation Methods 0.000 description 17
- 238000002360 preparation method Methods 0.000 description 15
- 238000012545 processing Methods 0.000 description 14
- 230000005540 biological transmission Effects 0.000 description 11
- 239000012634 fragment Substances 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 230000002123 temporal effect Effects 0.000 description 8
- 230000008569 process Effects 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 4
- 238000009877 rendering Methods 0.000 description 4
- 230000001360 synchronised effect Effects 0.000 description 4
- 230000006835 compression Effects 0.000 description 3
- 238000007906 compression Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 239000000470 constituent Substances 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 239000013598 vector Substances 0.000 description 2
- FMYKJLXRRQTBOR-UBFHEZILSA-N (2s)-2-acetamido-4-methyl-n-[4-methyl-1-oxo-1-[[(2s)-1-oxohexan-2-yl]amino]pentan-2-yl]pentanamide Chemical group CCCC[C@@H](C=O)NC(=O)C(CC(C)C)NC(=O)[C@H](CC(C)C)NC(C)=O FMYKJLXRRQTBOR-UBFHEZILSA-N 0.000 description 1
- 239000000969 carrier Substances 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000005465 channeling Effects 0.000 description 1
- 230000001010 compromised effect Effects 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/61—Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
-
- H04L65/4069—
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/234—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
- H04N21/2343—Processing 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/235—Processing of additional data, e.g. scrambling of additional data or processing content descriptors
- H04N21/2355—Processing of additional data, e.g. scrambling of additional data or processing content descriptors involving reformatting operations of additional data, e.g. HTML pages
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/4302—Content synchronisation processes, e.g. decoder synchronisation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/60—Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client
- H04N21/61—Network physical structure; Signal processing
- H04N21/6106—Network physical structure; Signal processing specially adapted to the downstream path of the transmission network
- H04N21/6125—Network physical structure; Signal processing specially adapted to the downstream path of the transmission network involving transmission via Internet
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/80—Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
- H04N21/83—Generation or processing of protective or descriptive data associated with content; Content structuring
- H04N21/845—Structuring of content, e.g. decomposing content into time segments
- H04N21/8455—Structuring 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/80—Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
- H04N21/83—Generation or processing of protective or descriptive data associated with content; Content structuring
- H04N21/845—Structuring of content, e.g. decomposing content into time segments
- H04N21/8456—Structuring 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
하나의 예에서, 스트리밍 미디어 데이터와 관련된 데이터를 수신하기 위한 디바이스는, 네트워크를 통해 데이터를 전송 및 수신하도록 구성되는 하나 또는 그 초과의 네트워크 인터페이스들 및 하나 또는 그 초과의 프로세서들을 포함하고, 하나 또는 그 초과의 프로세서들은, 네트워크 인터페이스들을 통해, 제 1 기간의 미디어 컨텐츠 및 제 2 기간의 미디어 컨텐츠에 대한 데이터를 수신하고 ― 제 1 기간에 대한 데이터는 제 1 기간의 적어도 일부의 미디어 데이터가 이용가능하지 않음을 표시하고, 제 2 기간에 대한 데이터는 제 2 기간 동안 이용가능한 미디어 데이터를 표시함 ― , 그리고 제 1 기간 및 제 2 기간에 대한 데이터에 기초하여, 제 1 기간에 대한 데이터가 이용가능하지 않음을 표시하는 제 1 기간의 미디어 데이터에 대한 요청들을 생략하고, 제 2 기간의 미디어 데이터에 대한 하나 또는 그 초과의 요청들을 전송하도록 구성된다.
Description
[0001] 본 출원은 2014년 1월 16일자로 출원된 미국 가출원 번호 제61/928,381호에 대한 우선권을 주장하고, 상기 가출원의 전체 내용들은 그에 의해 인용에 의해 포함된다.
[0002] 본 개시 내용은 코딩된 미디어 데이터의 전송에 관한 것이다.
[0003] 디지털 비디오 능력들은 디지털 텔레비전들, 디지털 직접 브로드캐스트 시스템들, 무선 브로드캐스트 시스템들, PDA(personal digital assistant)들, 랩탑 또는 데스크탑 컴퓨터들, 디지털 카메라들, 디지털 레코딩 디바이스들, 디지털 미디어 플레이어들, 비디오 게이밍 디바이스들, 비디오 게임 콘솔들, 셀룰러 또는 위성 라디오 전화들, 비디오 원격회의 디바이스들 등을 포함하는 광범위한 디바이스들에 포함될 수 있다. 디지털 비디오 디바이스들은 디지털 비디오 정보를 더 효율적으로 송신 및 수신하기 위해서, MPEG-2, MPEG-4, ITU-T H.263 또는 ITU-T H.264/MPEG-4, Part 10, AVC(Advanced Video Coding), ITU-T H.265/MPEG-H, Part 2 HEVC(High Efficiency Video Coding) 및 이러한 표준들의 확장들에 의해 정의되는 표준들에서 설명되는 것들과 같은 비디오 압축 기법들을 구현한다.
[0004] 비디오 압축 기법들은 비디오 시퀀스들에 고유한 리던던시를 감소 또는 제거하기 위해서 공간적 예측 및/또는 시간적 예측을 수행한다. 블록-기반 비디오 코딩을 위해서, 비디오 프레임 또는 슬라이스는 매크로블록들로 파티셔닝될 수 있다. 각각의 매크로블록은 추가로 파티셔닝될 수 있다. 인트라-코딩된(I) 프레임 또는 슬라이스에서의 매크로블록들은 이웃 매크로블록들에 대한 공간적 예측을 사용하여 인코딩된다. 인터-코딩된(P 또는 B) 프레임 또는 슬라이스에서의 매크로블록들은 동일한 프레임 또는 슬라이스에서의 이웃 매크로블록들에 대한 공간적 예측, 또는 다른 참조 프레임들에 대한 시간적 예측을 사용할 수 있다.
[0005] 비디오 데이터가 인코딩된 이후, 비디오 데이터는 송신 또는 저장을 위해서 패킷화될 수 있다. 비디오 데이터는 ISO(International Organization for Standardization) 기반 미디어 파일 포맷 및 그것의 확장들, 이를테면, NAL 유닛 구조화된 비디오의 캐리지(Carriage)와 같은 다양한 표준들 중 임의의 것에 따라 비디오 파일로 어셈블링될 수 있다.
[0006] 일반적으로, 본 개시 내용은 DASH(Dynamic Adaptive Streaming over HTTP)의 강건성(robustness)을 향상시키는데 사용될 수 있는 기법들을 설명한다. 특히, DASH 스트리밍 서버 또는 다른 이러한 스트리밍 서버가 하나 또는 그 초과의 클라이언트 디바이스들로 스트리밍될 라이브 미디어 데이터를 수신하는 경우들이 존재할 수 있다. 예를 들어, DASH 스트리밍 서버는, 라이브 기반으로, 예를 들어, 실시간 온 더 플라이로(in real time on the fly) 컨텐츠 생성기로부터 미디어 데이터를 수신할 수 있다. 컨텐츠 생성기와 DASH 스트리밍 서버 사이의 통신 세션은 신뢰성이 없을 수 있는데, 예를 들어, 미디어 데이터의 손실들을 초래할 수 있다. 본 개시 내용의 기법들은, 서버에 의해, 손실들에 대응하는 미디어 데이터가 이용가능하지 않음을 표시하는 데이터를 시그널링하는 것을 포함한다. 이러한 방식으로, 클라이언트 디바이스는 시그널링된 데이터를 수신하고, 유실 미디어 데이터에 대한 요청들을 전송하는 것을 생략할 수 있다. 이 기법들은 서버가 이용가능하지 않을 것으로 결정한 데이터에 대한 요청들을 회피함으로써 대역폭 소비를 감소시킬 수 있다. 이 기법들은 또한, 클라이언트로부터의 미디어 데이터에 대한 요청들에 대한 응답으로, 요청된 미디어 데이터가 이용가능하지 않음을 표시하는, 서버로부터의 과도한 에러 응답들에 기인한 연결 종료를 방지할 수 있다.
[0007] 하나의 예에서, 스트리밍 미디어 데이터와 관련된 데이터를 수신하는 방법은, 제 1 기간의 미디어 컨텐츠 및 제 2 기간의 미디어 컨텐츠에 대한 데이터를 수신하는 단계 ― 제 1 기간에 대한 데이터는 제 1 기간의 적어도 일부의 미디어 데이터가 이용가능하지 않음을 표시하고, 제 2 기간에 대한 데이터는 제 2 기간에 대한 이용가능한 미디어 데이터를 표시함 ― , 및 제 1 기간 및 제 2 기간에 대한 데이터에 기초하여, 제 1 기간에 대한 데이터가 이용가능하지 않음을 표시하는 제 1 기간의 미디어 데이터에 대한 요청들을 생략하고, 제 2 기간의 미디어 데이터에 대한 하나 또는 그 초과의 요청들을 전송하는 단계를 포함한다.
[0008] 또 다른 예에서, 스트리밍 미디어 데이터와 관련된 데이터를 수신하기 위한 디바이스는, 네트워크를 통해 데이터를 전송 및 수신하도록 구성되는 하나 또는 그 초과의 네트워크 인터페이스들, 및 하나 또는 그 초과의 프로세서들을 포함하고, 하나 또는 그 초과의 프로세서들은, 네트워크 인터페이스들을 통해, 제 1 기간의 미디어 컨텐츠 및 제 2 기간의 미디어 컨텐츠에 대한 데이터를 수신하고 ― 제 1 기간에 대한 데이터는 제 1 기간의 적어도 일부의 미디어 데이터가 이용가능하지 않음을 표시하고, 제 2 기간에 대한 데이터는 제 2 기간에 대한 이용가능한 미디어 데이터를 표시함 ― , 그리고 제 1 기간 및 제 2 기간에 대한 데이터에 기초하여, 제 1 기간에 대한 데이터가 이용가능하지 않음을 표시하는 제 1 기간의 미디어 데이터에 대한 요청들을 생략하고, 제 2 기간의 미디어 데이터에 대한 하나 또는 그 초과의 요청들을 전송하도록 구성된다.
[0009] 또 다른 예에서, 스트리밍 미디어 데이터와 관련된 데이터를 시그널링하는 방법은, 미디어 컨텐츠의 제 1 부분이 손실되었고, 미디어 컨텐츠의 제 2 부분이 수신되었음을 결정하는 단계, 제 1 기간의 적어도 일부의 미디어 데이터가 제 1 기간 동안 이용가능하지 않음을 표시하는, 적어도 제 1 부분을 포함하는 제 1 기간의 미디어 컨텐츠에 대한 데이터를 시그널링하고, 그리고 미디어 데이터가 제 2 기간 동안 이용가능함을 표시하는, 제 2 부분에 대응하는 제 2 기간의 미디어 컨텐츠에 대한 데이터를 시그널링하는 단계, 데이터를 시그널링한 이후, 제 2 기간의 미디어 데이터에 대한 하나 또는 그 초과의 요청들을 수신하는 단계, 및 요청들에 대한 응답으로, 요청된 제 2 기간의 미디어 데이터를 전송하는 단계를 포함한다.
[0010] 또 다른 예에서, 스트리밍 미디어 데이터와 관련된 데이터를 시그널링하기 위한 디바이스는, 네트워크를 통해 데이터를 전송 및 수신하도록 구성되는 하나 또는 그 초과의 네트워크 인터페이스들, 및 하나 또는 그 초과의 프로세서들을 포함하고, 하나 또는 그 초과의 프로세서들은, 미디어 컨텐츠의 제 1 부분이 손실되었고, 미디어 컨텐츠의 제 2 부분이 수신되었음을 결정하고, 네트워크 인터페이스들을 통해, 제 1 기간의 적어도 일부의 미디어 데이터가 제 1 기간 동안 이용가능하지 않음을 표시하는, 적어도 제 1 부분을 포함하는 제 1 기간의 미디어 컨텐츠에 대한 데이터를 시그널링하고, 그리고 미디어 데이터가 제 2 기간 동안 이용가능함을 표시하는, 제 2 부분에 대응하는 제 2 기간의 미디어 컨텐츠에 대한 데이터를 시그널링하고, 데이터를 시그널링한 이후, 네트워크 인터페이스들을 통해, 제 2 기간의 미디어 데이터에 대한 하나 또는 그 초과의 요청들을 수신하고, 요청들에 대한 응답으로, 네트워크 인터페이스들을 통해, 요청된 제 2 기간의 미디어 데이터를 전송하도록 구성된다.
[0011] 본 개시 내용의 하나 또는 그 초과의 예들의 세부사항들은 첨부한 도면들 및 아래의 설명에서 기술된다. 다른 특징들, 목적들 및 이점들은 설명 및 도면들로부터 그리고 청구항들로부터 명백해질 것이다.
[0012] 도 1은 네트워크를 통해 미디어 데이터를 스트리밍하기 위한 기법들을 구현하는 예시적 시스템을 예시하는 블록도이다.
[0013] 도 2는 예시적 멀티미디어 컨텐츠의 엘리먼트들을 예시하는 개념도이다.
[0014] 도 3은 본 개시 내용의 기법들을 수행하기 위한 시스템을 예시하는 블록도이다.
[0015] 도 4는 일정 기간의 미디어 컨텐츠에 대한 미디어 데이터가 이용가능하지 않음을 표시하는 정보를 교환하기 위한 예시적 방법을 예시하는 흐름도이다.
[0013] 도 2는 예시적 멀티미디어 컨텐츠의 엘리먼트들을 예시하는 개념도이다.
[0014] 도 3은 본 개시 내용의 기법들을 수행하기 위한 시스템을 예시하는 블록도이다.
[0015] 도 4는 일정 기간의 미디어 컨텐츠에 대한 미디어 데이터가 이용가능하지 않음을 표시하는 정보를 교환하기 위한 예시적 방법을 예시하는 흐름도이다.
[0016] 일반적으로, 본 개시 내용은 DASH(Dynamic Adaptive Streaming over HTTP), 또는 다른 HTTP 스트리밍 기반 기술들과 관련된 기법들을 설명한다. 라이브 스트리밍의 경우, DASH 동작의 강건성(robustness)은 다음의 이유들에 기인하여 손상될 수 있다: 1. 예를 들어, 클라이언트 클럭이 시스템 클럭에 대해 드리프트하여, 클라이언트가 시간-소스에 대해 충분히 빈번하게 동기화하지 않을 경우, 부정확하게 시간 동기화된 클라이언트들. 2. MPD(Media presentation description) 및 세그먼트 생성은 DASH 클라이언트와는 상이한 시간 소스에 대해 동기화될 수 있음. 3. 인코더 또는 DASH 미디어 제시는 동기화를 손실할 수 있거나 또는 컨텐츠를 획득하지 않음. 예들은 a. 동기화의 손실(예를 들어, 입력 스트림에 대한 CRC(cyclical redundancy check) 실패) b. 소스에 대한 전력 결함(glitch) c. 누군가가 케이블을 당기는 것임. 4. 인코더 클럭 드리프트는, 예를 들어, 인코더 클럭 허용오차에 기인하여 전송기와 수신기들(더 긴 기간 문제) 사이에서 발생할 수 있음.
[0017] 위의 문제들은 다음 3개의 기술들 중 임의의 하나 또는 그 초과의 기술들에 의해 본 개시 내용의 기법들에 따라 처리될 수 있다: 1. 2014년 1월 2일자로 Stockhammer 등에 의해 출원된 미국 특허 출원 일련번호 제14/146,536호, "LIVE TIMING FOR DYNAMIC ADAPTIVE STREAMING OVER HTTP (DASH)" ― 그에 의해 그 전체가 인용에 의해 포함됨 ― 에서 정의되는 바와 같은 RESTful API(application programming interface)를 제공함. 2. HTTP 404 응답의 경우 구체적으로 포맷팅된 시간 코드를 통해 서버의 시간을 표시하는 파라미터를 포함하는 특정 HTTP 응답에 응답함. 파라미터는 메시지 바디에 추가될 수 있다. 클라이언트는 제공하는 미디어 제시와 동기화하도록 자신의 시간 기준을 조정하기 위해서 이 정보를 사용할 수 있다. 이것은 상기로부터의 문제들 1, 2 및 4를 처리할 수 있다. 3. 아웃티지(outage)의 최소 듀레이션을 시그널링하는 엠티(empty) 기간을 추가함. 듀레이션은 새로운 미디어가 제공될 때까지 MPD 업데이트에서 연장될 수 있다. 클라이언트는 클라이언트가 어떠한 미디어도 이 시간 시퀀스에 대해 생성되지 않았음(또는 이용가능하지 않음)을 통지받도록 일부 블랙아웃을 나타내기 위한 정보를 사용할 수 있다. 4. 기간에 대한 듀레이션을 추가하고, 이전 기간의 시작과 이전 기간의 듀레이션의 합보다 큰 시작 시간에 따라 새로운 기간을 시작함 ― 여기서, 이전 기간의 끝과 새로운 기간의 시작 사이의 부분이 어떠한 미디어도 갖지 않는 엠티 기간으로 지칭될 수 있고, 이 기간의 시작과 이 기간의 듀레이션의 합이 다음 기간의 시작보다 작도록 듀레이션 속성을 포함하는 기간이 일찍 종료된 기간으로 알려져 있음 ― .
[0018] 본 개시 내용의 기법들에 따라, 위에서 논의되는 바와 같이, DASH 스트리밍 서버와 같은 스트리밍 서버는 어떠한 미디어 데이터도 이용가능하지 않은 일정 기간의 미디어 컨텐츠를 시그널링할 수 있다. 예를 들어, 스트리밍 서버는 기간 동안 임의의 다른 엘리먼트들을 시그널링하지 않고 시작 시간 및 기간에 대한 듀레이션을 시그널링할 수 있다. 결국, 단지 시작 및 듀레이션 엘리먼트들만이 기간 동안 시그널링되기 때문에, 클라이언트 디바이스는 기간의 미디어 데이터가 이용가능하지 않음을 결정할 수 있다. 또 다른 버전에서, 서버는 기간의 듀레이션을 추가하는 기간에서 미디어의 끝을 시그널링할 수 있으며, 이후에, 단지 이전 기간과 이전 기간의 듀레이션의 합보다 큰 시작 시간에 따라 새로운 기간을 시작할 수 있다. 이전 기간에서의 미디어의 끝과 새로운 기간의 시작 사이의 시간은 또한 엠티 기간으로 지칭되고, 이 기간의 시작과 이 기간의 듀레이션의 합이 다음 기간의 시작보다 작도록 듀레이션 속성을 포함하는 기간은 일찍 종료된 기간으로 알려져 있다. 따라서, 클라이언트 디바이스는, 예를 들어, 그 기간의 미디어 데이터에 대한 요청들의 전송을 회피하고, 대신에, 후속하는 기간 동안 이용가능한 미디어 데이터를 설명하는 미디어 컨텐츠에 대한 업데이트된 MPD에 대한 응답으로, 후속하는 기간의 미디어 데이터에 대한 요청들을 전송할 수 있다.
[0019] 본 개시 내용의 기법들 모두 또는 그들 중 임의의 것은 DASH 표준 또는 라이브 스트리밍에 대한 다른 이러한 표준들에 포함될 수 있다.
[0020] HTTP 스트리밍에서, 빈번히 사용되는 동작들은 HEAD, GET, 및 부분적 GET를 포함한다. HEAD 동작은 주어진 URL(uniform resource locator) 또는 URN(uniform resource name)과 연관된 페이로드를 리트리브하지 않고 URL 또는 URN과 연관된 파일의 헤더를 리트리브한다. GET 동작은 주어진 URL 또는 URN과 연관된 전체 파일을 리트리브한다. 부분적 GET 동작은 입력 파라미터로서 바이트 범위를 수신하며, 연속적 다수의 파일의 바이트들을 리트리브하고, 여기서, 바이트들의 수는 수신된 바이트 범위에 대응한다. 따라서, 부분적 GET 동작이 하나 또는 그 초과의 개별 무비 프래그먼트들을 획득할 수 있기 때문에, 무비 프래그먼트(movie fragment)들은 HTTP 스트리밍에 대해 제공될 수 있다. 무비 프래그먼트에서, 상이한 트랙들의 몇몇 트랙 프래그먼트들이 존재할 수 있다. HTTP 스트리밍에서, 미디어 제시는 클라이언트에 액세스가능한 데이터의 구조화된 집합일 수 있다. 클라이언트는 스트리밍 서비스를 사용자에게 제시하기 위해서 미디어 데이터 정보를 요청 및 다운로딩할 수 있다.
[0021] HTTP 스트리밍을 사용하는 스트리밍 3GPP 데이터의 예에서, 멀티미디어 컨텐츠의 비디오 및/또는 오디오 데이터에 대한 다수의 표현들이 존재할 수 있다. 아래에서 설명되는 바와 같이, 상이한 표현들은 상이한 코딩 특성들(예를 들어, 비디오 코딩 표준의 상이한 프로파일들 또는 레벨들), 코딩 표준들의 상이한 코딩 표준들 또는 확장들(이를테면, 멀티뷰 및/또는 실척가능한 확장들), 또는 상이한 비트레이트들에 대응할 수 있다. 이러한 표현들의 매니페스트(manifest)는 MPD(Media Presentation Description) 데이터 구조에서 정의될 수 있다. 미디어 제시는 HTTP 스트리밍 클라이언트 디바이스에 액세스가능한 데이터의 구조화된 집합에 대응할 수 있다. HTTP 스트리밍 클라이언트 디바이스는 스트리밍 서비스를 클라이언트 디바이스의 사용자에게 제시하기 위해서 미디어 데이터 정보를 요청 및 다운로딩할 수 있다. 미디어 제시는 MPD의 업데이트들을 포함할 수 있는 MPD 데이터 구조에서 설명될 수 있다.
[0022] 미디어 제시는 하나 또는 그 초과의 기간들의 시퀀스를 포함할 수 있다. 기간들은 MPD에서 Period 엘리먼트에 의해 정의될 수 있다. 각각의 기간은 MPD에서 속성 start를 가질 수 있다. MPD는 각각의 기간에 대한 start 속성 및 availableStartTime 속성을 포함할 수 있다. 라이브 서비스들에 있어서, 기간의 start 속성과 MPD 속성 availableStartTime의 합은 UTC 포맷으로 기간의 이용가능성 시간을 특정할 수 있고, 특히, 대응하는 기간에서의 각각의 표현의 제 1 미디어 세그먼트는 이 기간의 시간 시작 및 제 1 미디어 세그먼트의 시그널링된 듀레이션에 의해 특정된다. 온-디멘드(on-demand) 서비스들에 있어서, 제 1 기간의 start 속성은 0일 수 있다. 임의의 다른 기간에 있어서, start 속성은 제 1 기간의 시작 시간에 대해 대응하는 기간의 시작 시간 사이의 시간 오프셋을 특정할 수 있다. 각각의 기간은 다음의 기간의 시작까지 또는 마지막 기간의 경우 미디어 제시의 끝까지 연장될 수 있다. 그러나, 일찍 종료된 기간들의 경우, 이 기간에서의 미디어는 컨텐츠 제공에서의 갭을 표시하는 새로운 기간의 시작보다 더 일찍 종료될 수 있다. 기간 시작 시간들은 정확할 수 있다. 이들은 모든 이전의 기간들의 미디어를 재생하는 것으로부터 발생하는 실제 타이밍을 반영할 수 있다.
[0023] 각각의 기간은 동일한 미디어 컨텐츠에 대한 하나 또는 그 초과의 표현들을 포함할 수 있다. 표현은 오디오 또는 비디오 데이터의 다수의 대안적 인코딩된 버전들 중 하나일 수 있다. 표현들은, 인코딩 타입들에 의해, 예를 들어, 비디오 데이터에 대한 비트레이트, 해상도 및/또는 코덱, 오디오 데이터에 대한 비트레이트, 언어, 및/또는 코덱에 의해 다를 수 있다. 표현이라는 용어는 멀티미디어 컨텐츠의 특정 기간에 대응하는 인코딩된 오디오 또는 비디오 데이터의 섹션을 지칭하는데 사용될 수 있으며, 특정 방식으로 인코딩될 수 있다.
[0024] 특정 기간의 표현들은 표현들이 속하는 적응 세트를 표시하는 MPD에서의 속성에 의해 표시되는 그룹에 할당될 수 있다. 동일한 적응 세트에서의 표현들은 일반적으로, 클라이언트 디바이스가, 예를 들어, 대역폭 적응을 수행하기 위해서, 이 표현들 사이에서 동적으로 그리고 끊김없이(seamlessly) 스위칭할 수 있다는 점에서, 서로에 대한 대안들로 고려된다. 예를 들어, 특정 기간에 대한 비디오 데이터의 각각의 표현은, 표현들 중 임의의 것이 대응하는 기간에 대한 멀티미디어 컨텐츠의 미디어 데이터, 이를테면, 비디오 데이터 또는 오디오 데이터를 제시하기 위한 디코딩을 위해서 선택될 수 있도록, 동일한 적응 세트에 할당될 수 있다. 하나의 기간 내의 미디어 컨텐츠는, 존재하는 경우, 그룹 0으로부터의 하나의 표현, 또는 일부 예들에서 각각의 넌-제로 그룹으로부터의 최대한(at most) 하나의 표현의 결합에 의해 표현될 수 있다. 기간의 각각의 표현에 대한 타이밍 데이터는 기간의 시작 시간에 대해 표현될 수 있다.
[0025] 표현은 하나 또는 그 초과의 세그먼트들을 포함할 수 있다. 각각의 표현은 초기화 세그먼트를 포함할 수 있거나, 또는 표현의 각각의 세그먼트는 자기-초기화할 수 있다. 존재하는 경우, 초기화 세그먼트는 표현에 액세스하기 위한 초기화 정보를 포함할 수 있다. 일반적으로, 초기화 세그먼트는 미디어 데이터를 포함하지 않는다. 세그먼트는 URL(uniform resource locator), URN(uniform resource name), 또는 URI(uniform resource identifier)와 같은 식별자에 의해 고유하게 참조될 수 있다. MPD는 각각의 세그먼트에 대한 식별자들을 제공할 수 있다. 일부 예들에서, MPD는 또한, URL, URN 또는 URI에 의해 액세스가능한 파일 내의 세그먼트에 대한 데이터에 대응할 수 있는 range 속성의 형태로 바이트 범위들을 제공할 수 있다.
[0026] 상이한 표현들은 상이한 타입들의 미디어 데이터에 대한 실질적으로 동시적 리트리브를 위해서 선택될 수 있다. 예를 들어, 클라이언트 디바이스는 세그먼트들을 리트리브할 오디오 표현, 비디오 표현 및 타이밍된 텍스트 표현을 선택할 수 있다. 일부 예들에서, 클라이언트 디바이스는 대역폭 적응을 수행하기 위한 특정 적응 세트들을 선택할 수 있다. 즉, 클라이언트 디바이스는 비디오 표현들을 포함하는 적응 세트, 오디오 표현들을 포함하는 적응 세트 및/또는 타이밍된 텍스트를 포함하는 적응 세트를 선택할 수 있다. 대안적으로, 클라이언트 디바이스는 특정 타입들의 미디어(예를 들어, 비디오)에 대한 적응 세트들을 선택하고, 다른 타입들의 미디어(예를 들어, 오디오 및/또는 타이밍된 텍스트)에 대한 표현들을 직접적으로 선택할 수 있다.
[0027] 도 1은 네트워크를 통해 미디어 데이터를 스트리밍하기 위한 기법들을 구현하는 예시적 시스템(10)을 예시하는 블록도이다. 이 예에서, 시스템(10)은 컨텐츠 준비 디바이스(20), 서버 디바이스(60) 및 클라이언트 디바이스(40)를 포함한다. 클라이언트 디바이스(40) 및 서버 디바이스(60)는 인터넷을 포함할 수 있는 네트워크(74)에 의해 통신가능하게 커플링된다. 일부 예들에서, 컨텐츠 준비 디바이스(20) 및 서버 디바이스(60)는 또한, 네트워크(74) 또는 또 다른 네트워크에 의해 커플링될 수 있거나, 또는 직접적으로 통신가능하게 커플링될 수 있다. 일부 예들에서, 컨텐츠 준비 디바이스(20) 및 서버 디바이스(60)는 동일한 디바이스를 포함할 수 있다.
[0028] 도 1의 예에서, 컨텐츠 준비 디바이스(20)는 오디오 소스(22) 및 비디오 소스(24)를 포함한다. 오디오 소스(22)는, 예를 들어, 오디오 인코더(26)에 의해 인코딩될 캡처된 오디오 데이터를 표현하는 전기 신호들을 생성하는 마이크로폰을 포함할 수 있다. 대안적으로, 오디오 소스(22)는 사전 레코딩된 오디오 데이터를 저장하는 저장 매체, 컴퓨터화된 신시사이저(synthesizer)와 같은 오디오 데이터 제너레이터(generator), 또는 오디오 데이터의 임의의 다른 소스를 포함할 수 있다. 비디오 소스(24)는 비디오 인코더(28)에 의해 인코딩될 비디오 데이터를 생성하는 비디오 카메라, 사전 레코딩된 비디오 데이터를 통해 인코딩된 저장 매체, 컴퓨터 그래픽 소스와 같은 비디오 데이터 생성 유닛 또는 비디오 데이터의 임의의 다른 소스를 포함할 수 있다. 컨텐츠 준비 디바이스(20)는 반드시 모든 예들에서 서버 디바이스(60)에 통신가능하게 커플링되는 것은 아니지만, 서버 디바이스(60)에 의해 판독되는 별개의 매체에 멀티미디어 컨텐츠를 저장할 수 있다.
[0029] 미가공(raw) 오디오 및 비디오 데이터는 아날로그 또는 디지털 데이터를 포함할 수 있다. 아날로그 데이터는 오디오 인코더(26) 및/또는 비디오 인코더(28)에 의해 인코딩되기 전에 디지털화될 수 있다. 오디오 소스(22)는 말하는 참여자가 말하고 있는 동안 말하는 참여자로부터 오디오 데이터를 획득할 수 있고, 동시에, 비디오 소스(24)는 말하는 참여자의 비디오 데이터를 획득할 수 있다. 다른 예들에서, 오디오 소스(22)는 저장된 오디오 데이터를 포함하는 컴퓨터 판독가능한 저장 매체를 포함할 수 있고, 비디오 소스(24)는 저장된 비디오 데이터를 포함하는 컴퓨터 판독가능한 저장 매체를 포함할 수 있다. 이러한 방식으로, 본 개시 내용에서 설명되는 기법들은 라이브, 스트리밍, 실시간 오디오 및 비디오 데이터에 또는 달성된, 사전-레코딩된 오디오 및 비디오 데이터에 적용될 수 있다.
[0030] 비디오 프레임들에 대응하는 오디오 프레임들은 일반적으로, 비디오 프레임들 내에 포함되는 비디오 소스(24)에 의해 캡처(또는 생성)된 비디오 데이터와 동시에, 오디오 소스(22)에 의해 캡처(또는 생성)되었던 오디오 데이터를 포함하는 오디오 프레임들이다. 예를 들어, 말하는 참여자가 일반적으로 말함으로써 오디오 데이터를 생성하는 동안, 오디오 소스(22)는 오디오 데이터를 캡처하고, 즉, 오디오 소스(22)가 오디오 데이터를 캡처하는 동안에 동시에 비디오 소스(24)는 말하는 참여자의 비디오 데이터를 캡처한다. 따라서, 오디오 프레임은 하나 또는 그 초과의 특정 비디오 프레임들에 시간적으로 대응할 수 있다. 따라서, 비디오 프레임에 대응하는 오디오 프레임은 일반적으로, 오디오 데이터 및 비디오 데이터가 동시에 캡처되었고, 오디오 프레임 및 비디오 프레임이 동시에 캡처된 오디오 데이터 및 비디오 데이터를 각각 포함하는 상황에 대응한다.
[0031] 일부 예들에서, 오디오 인코더(26)는 인코딩된 오디오 프레임에 대한 오디오 데이터가 레코딩되었던 시간을 표현하는 시간스탬프를 각각의 인코딩된 오디오 프레임에 인코딩할 수 있고, 유사하게, 비디오 인코더(28)는 인코딩된 비디오 프레임에 대한 비디오 데이터가 레코딩되었던 시간을 표현하는 시간스탬프를 각각의 인코딩된 비디오 프레임에 인코딩할 수 있다. 이러한 예들에서, 비디오 프레임에 대응하는 오디오 프레임은 시간스탬프를 포함하는 오디오 프레임 및 동일한 시간스탬프를 포함하는 비디오 프레임을 포함할 수 있다. 컨텐츠 준비 디바이스(20)는 오디오 인코더(26) 및/또는 비디오 인코더(28)가 시간스탬프들을 생성할 수 있는 내부 클럭을 포함할 수 있거나, 또는 그 오디오 소스(22) 및 비디오 소스(24)는 오디오 및 비디오 데이터를 시간스탬프와 각각 연관시키도록 사용될 수 있다.
[0032] 일부 예들에서, 오디오 소스(22)는 오디오 데이터가 레코딩되었던 시간에 대응하는 데이터를 오디오 인코더(26)에 전송할 수 있고, 비디오 소스(24)는 비디오 데이터가 레코딩되었던 시간에 대응하는 데이터를 비디오 인코더(28)에 전송할 수 있다. 일부 예들에서, 오디오 인코더(26)는 오디오 데이터가 레코딩되었던 절대 시간을 표시할 필요없이, 인코딩된 오디오 데이터의 상대적 시간적 순서를 표시하기 위해서 인코딩된 오디오 데이터에 시퀀스 식별자를 인코딩할 수 있고, 유사하게, 비디오 인코더(28)는 또한 인코딩된 비디오 데이터의 상대적 시간적 순서를 표시하기 위해서 시퀀스 식별자들을 사용할 수 있다. 유사하게, 일부 예들에서, 시퀀스 식별자는 맵핑될 수 있거나 또는 그렇지 않으면, 시간스탬프와 상관될 수 있다.
[0033] 오디오 인코더(26)는 일반적으로 인코딩된 오디오 데이터의 스트림을 생성하는 반면, 비디오 인코더(28)는 인코딩된 비디오 데이터의 스트림을 생성한다. 데이터(오디오든 비디오든 간에)의 각각의 개별 스트림은 엘리먼터리(elementary) 스트림으로 지칭될 수 있다. 엘리먼터리 스트림은 표현의 단일의 디지털로 코딩되는(가능하게는 압축되는) 컴포넌트이다. 예를 들어, 표현의 코딩된 비디오 또는 오디오 부분은 엘리먼터리 스트림일 수 있다. 엘리먼터리 스트림은 비디오 파일 내에서 캡슐화되기 전에 PES(packetized elementary stream)로 변환될 수 있다. 동일한 표현 내에서, 스트림 ID는 하나의 엘리먼터리 스트림에 속하는 PES-패킷들을 다른 것과 구별하는데 사용될 수 있다. 엘리먼터리 스트림의 데이터의 기본 유닛은 PES(packetized elementary stream) 패킷이다. 따라서, 코딩된 비디오 데이터는 일반적으로, 엘리먼터리 비디오 스트림들에 대응한다. 유사하게, 오디오 데이터는 하나 또는 그 초과의 각각의 엘리먼터리 스트림들에 대응한다.
[0034] ITU-T H.264/AVC 및 HEVC(High Efficiency Video Coding) 표준과 같은 많은 비디오 코딩 표준들은 에러가 없는(error-free) 비트스트림들에 대한 신택스(syntax), 시맨틱스(semantics) 및 디코딩 프로세스를 정의하며, 이들 중 임의의 것은 특정 프로파일 또는 레벨에 따른다. 비디오 코딩 표준들은 전형적으로 인코더를 특정하지 않지만, 인코더는 생성된 비트스트림들이 디코더에 대해 표준-호환적이게 보장하도록 태스킹된다. 비디오 코딩 표준들의 맥락에서, "프로파일"은 서브세트의 알고리즘들, 특징들 또는 툴들 및 이들에 적용되는 제약들에 대응한다. H.264 및 H.265 표준들에 의해 정의되는 바와 같이, 예를 들어, "프로파일"은 H.264 또는 H.265 표준들에 의해 특정되는 서브세트의 전체 비트스트림 신택스이다. "레벨"은 픽처(picture)들의 해상도, 비트레이트 및 블록 프로세싱 레이트와 관련되는, 예를 들어, 디코더 메모리 및 컴퓨테이션과 같은 디코더 자원 소비의 제한들에 대응한다. 프로파일은 profile_idc(프로파일 표시자) 값을 통해 시그널링될 수 있는 반면, 레벨은 level_idc(레벨 표시자) 값을 통해 시그널링될 수 있다.
[0035] H.264 표준은, 예를 들어, 주어진 프로파일의 신택스에 의해 부과되는 바운드들 내에서, 디코딩된 픽처들의 특정된 크기와 같은 비트스트림에서의 신택스 엘리먼트들에 의해 취해지는 값들에 따라 인코더들 및 디코더들의 수행의 큰 변화를 요구하는 것이 여전히 가능하다는 것을 인지한다. H.264 표준은, 많은 애플리케이션들에서, 특정 프로파일 내의 신택스의 모든 가설적 이용들을 다룰 수 있는 디코더를 구현하는 것이 실용적이지도 경제적이지도 않다는 것을 추가로 인지한다. 따라서, H.264 표준은 비트스트림에서 신택스 엘리먼트들의 값들에 대해 부과되는 제약들의 특정된 세트로서 "레벨"을 정의한다. 이 제약들은 값들에 대한 단순한 제한들일 수 있다. 대안적으로, 이 제약들은 값들의 산술적 결합들(예를 들어, 초당 디코딩되는 픽처들의 수 곱하기 픽처 높이 곱하기 픽처 폭)에 대한 제약들의 형태를 취할 수 있다. H.264 표준은 개별 구현들이 각각의 지원되는 프로파일에 대한 상이한 레벨을 지원할 수 있음을 추가로 제공한다.
[0036] 프로파일에 따른 디코더는 보통 프로파일에서 정의되는 모든 특징들을 지원한다. 예를 들어, 코딩 특징으로서, B-픽처 코딩은 H.264/AVC의 베이스라인 프로파일에서 지원되지 않지만, H.264/AVC의 다른 프로파일들에서 지원된다. 레벨에 따른 디코더는 레벨에서 정의되는 제한들을 넘어서는 자원들을 요구하지 않는 임의의 비트스트림을 디코딩할 수 있어야 한다. 프로파일들 및 레벨들의 정의들은 해석가능성(interpretability)에 도움이 될 수 있다. 예를 들어, 비디오 송신 동안, 한 쌍의 프로파일 및 레벨 정의들은 협상되어 전체 송신 세션에 동의될 수 있다. 더 구체적으로, H.264/AVC에서, 레벨은 프로세싱될 필요가 있는 매크로블록들의 수, DPB(decoded picture buffer) 크기, CPB(coded picture buffer) 크기, 수직 모션 벡터 범위, 2개의 연속적 MB들당 모션 벡터들의 최대 수, 및 B-블록이 8x8 픽셀들보다 적은 서브-매크로블록 파티션들을 가질 수 있는지 여부에 대한 제한들을 정의할 수 있다. 이러한 방식으로, 디코더는 디코더가 비트스트림을 적절히 디코딩할 수 있는지 여부를 결정할 수 있다.
[0037] 도 1의 예에서, 컨텐츠 준비 디바이스(20)의 캡슐화 유닛(30)은 비디오 인코더(28)로부터 코딩된 비디오 데이터를 포함하는 엘리먼터리 스트림들을 그리고 오디오 인코더(26)로부터 코딩된 오디오 데이터를 포함하는 엘리먼터리 스트림들을 수신한다. 일부 예들에서, 비디오 인코더(28) 및 오디오 인코더(26)는 인코딩된 데이터로부터의 PES 패킷들을 형성하기 위한 패킷타이저(packetizer)들을 각각 포함할 수 있다. 다른 예들에서, 비디오 인코더(28) 및 오디오 인코더(26)는 인코딩된 데이터로부터의 PES 패킷들을 형성하기 위한 각각의 패킷타이저들과 각각 인터페이싱할 수 있다. 여전히 다른 예들에서, 캡슐화 유닛(30)은 인코딩된 오디오 및 비디오 데이터로부터의 PES 패킷들을 형성하기 위한 패킷타이저들을 포함할 수 있다.
[0038] 비디오 인코더(28)는 픽셀 해상도들, 프레임 레이트들, 다양한 코딩 표준들을 준수, 다양한 프로파일들 및/또는 다양한 코딩 표준들에 대한 프로파일들 또는 레벨들을 준수, (예를 들어, 2-차원 또는 3-차원 재생을 위한) 하나 또는 다수의 뷰들을 갖는 표현들과 같은 다양한 특성들 또는 다른 이러한 특성들을 통해 그리고 다양한 비트레이트들에서 멀티미디어 컨텐츠의 상이한 표현들을 생성하기 위해서, 다양한 방식들로 멀티미디어 컨텐츠의 비디오 데이터를 인코딩할 수 있다. 본 개시 내용에서 사용되는 바와 같은 표현은 (예를 들어, 폐쇄된 캡션들에 대한) 오디오 데이터, 비디오 데이터, 텍스트 데이터 중 하나, 또는 다른 이러한 데이터를 포함할 수 있다. 표현은 오디오 엘리먼터리 스트림 또는 비디오 엘리먼터리 스트림과 같은 엘리먼터리 스트림을 포함할 수 있다. 각각의 PES 패킷은 PES 패킷이 속하는 엘리먼터리 스트림을 식별하는 stream_id를 포함할 수 있다. 캡슐화 유닛(30)은 다양한 표현들의 비디오 파일들(예를 들어, 세그먼트들)로 엘리먼터리 스트림들을 어셈블링하는 것을 담당한다.
[0039] 캡슐화 유닛(30)은 오디오 인코더(26) 및 비디오 인코더(28)로부터의 표현의 엘리먼터리 스트림들에 대한 PES 패킷들을 수신하며, PES 패킷들로부터의 대응하는 NAL(network abstraction layer) 유닛들을 형성한다. H.264/AVC(Advanced Video Coding)의 예에서, 코딩된 비디오 세그먼트들은 비디오 텔레포니, 저장, 브로드캐스트 또는 스트리밍과 같은 "네트워크-친화적" 비디오 표현 어드레싱 애플리케이션들을 제공하는 NAL 유닛들로 조직화된다. NAL 유닛들은 VCL(Video Coding Layer) NAL 유닛들 및 넌-VCL NAL 유닛들로 카테고리화될 수 있다. VCL 유닛들은 코어 압축 엔진을 포함할 수 있으며, 블록, 매크로블록 및/또는 슬라이스 레벨 데이터를 포함할 수 있다. 다른 NAL 유닛들은 넌-VCL NAL 유닛들일 수 있다. 일부 예들에서, 1차 코딩된 픽처로서 보통 제시되는 하나의 시간 인스턴스에서 코딩된 픽처는 하나 또는 그 초과의 NAL 유닛들을 포함할 수 있는 액세스 유닛에 포함될 수 있다.
[0040] 넌-VCL NAL 유닛들은, 그 중에서도, 파라미터 세트 NAL 유닛들 및 SEI NAL 유닛들을 포함할 수 있다. 파라미터 세트들은 (SPS(sequence parameter sets)에) 시퀀스-레벨 헤더 정보 및 (PPS(picture parameter sets)에) 드물게 변화하는 픽처-레벨 헤더 정보를 포함할 수 있다. 파라미터 세트들(예를 들어, PPS 및 SPS)에 있어서, 드물게 변화하는 정보는 각각의 시퀀스 또는 픽처에 대해 반복될 필요가 없으며, 따라서, 코딩 효율성은 향상될 수 있다. 게다가, 파라미터 세트들의 사용은 중요한 헤더 정보의 밴드-외 송신을 가능하게 할 수 있어서, 에러 리질리언스(resilience)에 대한 리던던트 송신들에 대한 필요성을 회피한다. 대역-외 송신 예들에서, 파라미터 세트 NAL 유닛들은 SEI NAL 유닛들과 같은 다른 NAL 유닛들과 상이한 채널 상에서 송신될 수 있다.
[0041] SEI(supplemental Enhancement Information)는 VCL NAL 유닛들로부터의 코딩된 픽처 샘플들을 디코딩할 필요가 없는 정보를 포함할 수 있지만, 디코딩, 디스플레이, 에러 리질리언스 및 다른 목적들과 관련된 프로세스들을 보조할 수 있다. SEI 메시지들은 넌-VCL NAL 유닛들에 포함될 수 있다. SEI 메시지들은 일부 표준 규격들의 규범적 부분이며, 따라서, 표준 호환적 디코더 구현에 항상 필수적이지 않다. SEI 메시지들은 시퀀스 레벨 SEI 메시지들 또는 픽처 레벨 SEI 메시지들일 수 있다. 일부 시퀀스 레벨 정보는, SVC의 예에서의 실척가능성 정보 SEI 메시지들 및 MVC에서의 뷰 실척가능성 정보 SEI 메시지들과 같은 SEI 메시지들에 포함될 수 있다. 이 예시적 SEI 메시지들은, 예를 들어, 동작 포인트들의 추출 및 동작 포인트들의 특성들에 대한 정보를 전달할 수 있다. 또한, 캡슐화 유닛(30)은 표현들의 특성들을 설명하는 MPD(media presentation descriptor)와 같은 매니페스트 파일을 형성할 수 있다. 캡슐화 유닛(30)은 XML(extensible markup language)에 따라 MPD를 포맷팅할 수 있다.
[0042] 캡슐화 유닛(30)은 매니페스트 파일(예를 들어, MPD)과 함께 멀티미디어 컨텐츠의 하나 또는 그 초과의 표현들에 대한 데이터를 출력 인터페이스(32)에 제공할 수 있다. 출력 인터페이스(32)는, 네트워크 인터페이스 또는 저장 매체에 기록하기 위한 인터페이스, 이를테면, USB(universal serial bus) 인터페이스, CD 또는 DVD 라이터(writer) 또는 버너(burner), 자기 또는 플래시 저장 매체들로의 인터페이스, 또는 미디어 데이터를 저장 또는 송신하기 위한 다른 인터페이스들을 포함할 수 있다. 캡슐화 유닛(30)은, 네트워크 송신 또는 저장 매체들을 통해 서버 디바이스(60)에 데이터를 전송할 수 있는 출력 인터페이스(32)에 멀티미디어 컨텐츠의 표현들 각각에 대한 데이터를 제공할 수 있다. 마찬가지로, 서버 디바이스(60)는 컨텐츠 준비 디바이스(20)로부터 입력 인터페이스(76)를 통해 데이터를 수신할 수 있다. 도 1의 예에서, 서버 디바이스(60)는, 각각의 매니페스트 파일(66) 및 하나 또는 그 초과의 표현들(68A-68N)(표현들(68))을 각각 포함하는 다양한 멀티미디어 컨텐츠들(64)을 저장하는 저장 매체(62)를 포함한다.
[0043] 일부 예들에서, 표현들(68)은 적응 세트들로 분리될 수 있다. 즉, 다양한 서브세트들의 표현들(68)은, 특성들의 각각의 공통 세트들, 이를테면, 코덱, 프로파일 및 레벨, 해상도, 뷰들의 수, 세그먼트들에 대한 파일 포맷, 예를 들어, 스피커들에 의해 디코딩 및 제시될 표현 및/또는 오디오 데이터를 통해 디스플레이될 텍스트의 언어 또는 다른 특성들을 식별할 수 있는 텍스트 타입 정보, 적응 세트에서의 표현들에 대한 씬(scene)의 카메라 각도 또는 실-세계 카메라 관점을 설명할 수 있는 카메라 각도 정보, 특정 청중들에 대한 컨텐츠 적합성을 설명하는 레이팅 정보 등을 포함할 수 있다.
[0044] 매니페스트 파일(66)은 특정 적응 세트들뿐만 아니라 적응 세트들에 대한 공통 특성들에 대응하는 서브세트들의 표현들(68)을 표시하는 데이터를 포함할 수 있다. 매니페스트 파일(66)은 또한, 적응 세트들의 개별 표현들에 대한 개별 특성들, 이를테면, 비트레이트들을 표현하는 데이터를 포함할 수 있다. 이러한 방식으로, 적응 세트는 간략화된 네트워크 대역폭 적응을 제공할 수 있다. 적응 세트에서의 표현들은 매니페스트 파일(66)의 적응 세트 엘리먼트의 자식 엘리먼트들을 사용하여 표시될 수 있다.
[0045] 서버 디바이스(60)는 입력 인터페이스(76), 요청 프로세싱 유닛(70) 및 네트워크 인터페이스(72)를 포함한다. 일부 예들에서, 서버 디바이스(60)는 복수의 네트워크 인터페이스들을 포함할 수 있다. 게다가, 서버 디바이스(60)의 특징들 모두 또는 그들 중 임의의 것은 라우터들, 브릿지들, 프록시 디바이스들, 스윗치들 또는 다른 디바이스들과 같은 컨텐츠 전달 네트워크의 다른 디바이스들로 구현될 수 있다. 일부 예들에서, 컨텐츠 전달 네트워크의 중간 디바이스들은, 멀티미디어 컨텐츠(64)의 데이터를 캐싱하고, 실질적으로 서버 디바이스(60)의 컴포넌트들에 따르는 컴포넌트들을 포함할 수 있다. 일반적으로, 네트워크 인터페이스(72)는 네트워크(74)를 통해 데이터를 전송 및 수신하도록 구성된다.
[0046] 요청 프로세싱 유닛(70)은 저장 매체(62)의 데이터에 대한 클라이언트 디바이스들, 이를테면, 클라이언트 디바이스(40)로부터 네트워크 요청들을 수신하도록 구성된다. 예를 들어, 요청 프로세싱 유닛(70)은 1999년 6월에 네트워크 워킹 그룹 IETF의 RFC 2616에서 설명되는 바와 같은 HTTP(hypertext transfer protocol) 버전 1.1, 즉, R. Fielding 등에 의한 "Hypertext Transfer Protocol - HTTP/1.1"을 구현할 수 있다. 즉, 요청 프로세싱 유닛(70)은 HTTP GET 또는 부분적 GET 요청들을 수신하고, 요청들에 대한 응답으로 멀티미디어 컨텐츠(64)의 데이터를 제공하도록 구성될 수 있다. 요청들은, 예를 들어, 세그먼트의 URL을 사용하여, 표현들(68) 중 하나에 대한 세그먼트를 특정할 수 있다. 일부 예들에서, 요청들은 또한, 세그먼트의 하나 또는 그 초과의 바이트 범위들을 특정할 수 있어서, 따라서, 부분적 GET 요청들을 포함한다. 요청 프로세싱 유닛(70)은 표현들(68) 중 하나에 대한 세그먼트의 헤더 데이터를 제공하기 위해서 HTTP HEAD 요청들을 서비스하도록 추가로 구성될 수 있다. 어떤 경우든, 요청 프로세싱 유닛(70)은 요청된 데이터를 클라이언트 디바이스(40)와 같은 요청 디바이스에 제공하기 위해서 요청들을 프로세싱하도록 구성될 수 있다.
[0047] 추가적으로 또는 대안적으로, 요청 프로세싱 유닛(70)은 eMBMS와 같은 브로드캐스트 또는 멀티캐스트 프로토콜을 통해 미디어 데이터를 전달하도록 구성될 수 있다. 컨텐츠 준비 디바이스(20)는, 실질적으로 설명되는 바와 동일한 방식으로 DASH 세그먼트들 및/또는 서브-세그먼트들을 생성할 수 있지만, 서버 디바이스(60)는 eMBMS 또는 또 다른 브로드캐스트 또는 멀티캐스트 네트워크 전송 프로토콜을 사용하여 이 세그먼트들 또는 서브-세그먼트들을 전달할 수 있다. 예를 들어, 요청 프로세싱 유닛(70)은 클라이언트 디바이스(40)로부터 멀티캐스트 그룹 조인 요청을 수신하도록 구성될 수 있다. 즉, 서버 디바이스(60)는 특정 미디어 컨텐츠(예를 들어, 라이브 이벤트의 브로드캐스트)와 연관된, 멀티캐스트 그룹과 연관된 인터넷 프로토콜(IP) 어드레스를 클라이언트 디바이스(40)를 포함하는 클라이언트 디바이스들에 광고할 수 있다. 차례로, 클라이언트 디바이스(40)는, 멀티캐스트 그룹에 조인하기 위한 요청을 제출(submit)할 수 있다. 이 요청은 네트워크(74), 예를 들어, 네트워크(74)를 구성하는 라우터들을 통해 전파될 수 있어서, 라우터들이 멀티캐스트 그룹과 연관된 IP 어드레스로 예정된 트래픽을 클라이언트 디바이스(40)와 같은 가입 클라이언트 디바이스들에 지향하게 한다.
[0048] 도 1의 예에 예시되는 바와 같이, 멀티미디어 컨텐츠(64)는 MPD(media presentation description)에 대응할 수 있는 매니페스트 파일(66)을 포함한다. 매니페스트 파일(66)은 상이한 대안적 표현들(68)(예를 들어, 상이한 품질들을 갖는 비디오 서비스들)의 설명을 포함할 수 있고, 설명은, 예를 들어, 표현들(68)의 코덱 정보, 프로파일 값, 레벨 값, 비트레이트 및 다른 설명적 특성들을 포함할 수 있다. 클라이언트 디바이스(40)는 표현들(68)의 세그먼트들에 액세스하는 방법을 결정하기 위해서 미디어 제시의 MPD를 리트리브할 수 있다.
[0049] 특히, 리트리브 유닛(retrieval unit)(52)은 비디오 디코더(48)의 디코딩 능력들 및 비디오 출력(44)의 렌더링 능력들을 결정하기 위해서 클라이언트 디바이스(40)의 구성 데이터(도시되지 않음)를 리트리브할 수 있다. 구성 데이터는 또한, 클라이언트 디바이스(40)의 사용자에 의해 선택되는 언어 선호도, 클라이언트 디바이스(40)의 사용자에 의해 세팅되는 깊이 선호도들에 대응하는 하나 또는 그 초과의 카메라 관점들, 및/또는 클라이언트 디바이스(40)의 사용자에 의해 선택되는 레이팅 선호도 모두 또는 그들 중 임의의 것을 포함할 수 있다. 리트리브 유닛(52)은, 예를 들어, HTTP GET 및 부분적 GET 요청들을 제출하도록 구성되는 미디어 클라이언트 또는 웹 브라우저를 포함할 수 있다. 리트리브 유닛(52)은 클라이언트 디바이스(40)의 하나 또는 그 초과의 프로세서들 또는 프로세싱 유닛들(도시되지 않음)에 의해 실행되는 소프트웨어 명령들에 대응할 수 있다. 일부 예들에서, 리트리브 유닛(52)에 대해 설명되는 기능의 전부 또는 그 부분들은 하드웨어 또는 하드웨어, 소프트웨어 및/또는 펌웨어의 결합으로 구현될 수 있고, 여기서, 필요한 하드웨어는 소프트웨어 또는 펌웨어에 대한 명령들을 실행하도록 제공될 수 있다.
[0050] 리트리브 유닛(52)은 클라이언트 디바이스(40)의 디코딩 및 렌더링 능력들을 매니페스트 파일(66)의 정보에 의해 표시되는 표현들(68)의 특성들과 비교할 수 있다. 리트리브 유닛(52)은 표현들(68)의 특성들을 결정하기 위해서 매니페스트 파일(66)의 적어도 일부분을 초기에 리트리브할 수 있다. 예를 들어, 리트리브 유닛(52)은 하나 또는 그 초과의 적응 세트들의 특성들을 설명하는 매니페스트 파일(66)의 일부분을 요청할 수 있다. 리트리브 유닛(52)은 클라이언트 디바이스(40)의 코딩 및 렌더링 능력들에 의해 만족될 수 있는 특성들을 갖는 서브세트의 표현들(68)(예를 들어, 적응 세트)을 선택할 수 있다. 그 다음, 리트리브 유닛(52)은 적응 세트에서의 표현들에 대한 비트레이트들을 결정하고, 네트워크 대역폭의 현재 이용가능한 양을 결정하고, 네트워크 대역폭에 의해 만족될 수 있는 비트레이트를 갖는 표현들 중 하나로부터 세그먼트들을 리트리브할 수 있다.
[0051] 일반적으로, 더 높은 비트레이트 표현들은 더 높은 품질 비디오 재생을 산출할 수 있는 반면, 더 낮은 비트레이트 표현들은 이용가능한 네트워크 대역폭이 감소하는 경우 충분한 품질 비디오 재생을 제공할 수 있다. 따라서, 이용가능한 네트워크 대역폭이 비교적 높은 경우, 리트리브 유닛(52)은 비교적 높은 비트레이트 표현들로부터 데이터를 리트리브할 수 있는 반면, 이용가능한 네트워크 대역폭이 낮은 경우, 리트리브 유닛(52)은 비교적 낮은 비트레이트 표현들로부터 데이터를 리트리브할 수 있다. 이러한 방식으로, 클라이언트 디바이스(40)는, 또한 네트워크(74)의 변화하는 네트워크 대역폭 이용가능성에 적응하면서 네트워크(74)를 통해 멀티미디어 데이터를 스트리밍할 수 있다.
[0052] 추가적으로 또는 대안적으로, 리트리브 유닛(52)은 eMBMS 또는 IP 멀티캐스트와 같은 브로드캐스트 또는 멀티캐스트 네트워크 프로토콜에 따라 데이터를 수신하도록 구성될 수 있다. 이러한 예들에서, 리트리브 유닛(52)은 특정 미디어 컨텐츠와 연관된 멀티캐스트 네트워크 그룹에 조인하기 위한 요청을 제출할 수 있다. 멀티캐스트 그룹에 조인한 이후, 리트리브 유닛(52)은 서버 디바이스(60) 또는 컨텐츠 준비 디바이스(20)에 발행되는 추가 요청들없이도 멀티캐스트 그룹의 데이터를 수신할 수 있다. 리트리브 유닛(52)은, 멀티캐스트 그룹의 데이터가 더이상, 예를 들어, 재생을 중단하거나 또는 채널들을 상이한 멀티캐스트 그룹으로 변경할 필요가 없는 경우 멀티캐스트 그룹을 이탈하기 위한 요청을 제출할 수 있다.
[0053] 네트워크 인터페이스(54)는 선택된 표현의 세그먼트들의 데이터를 수신하여 리트리브 유닛(52)에 제공할 수 있고, 리트리브 유닛(52)은 차례로 세그먼트들을 캡슐화해제 유닛(50)에 제공할 수 있다. 캡슐화해제 유닛(50)은, 비디오 파일의 엘리먼트들을 구성 PES 스트림들로 캡슐화해제하고, 인코딩된 데이터를 리트리브하기 위해서 PES 스트림들을 패킷화해제하고, 예를 들어, 스트림의 PES 패킷 헤더들에 의해 표시되는 바와 같이, 인코딩된 데이터가 오디오 또는 비디오 스트림의 부분인지에 따라, 인코딩된 데이터를 오디오 디코더(46) 또는 비디오 디코더(48)에 전송할 수 있다. 오디오 디코더(46)는 인코딩된 오디오 데이터를 디코딩하며, 디코딩된 오디오 데이터를 오디오 출력(42)에 전송하는 반면, 비디오 디코더(48)는 인코딩된 비디오 데이터를 디코딩하며, 디코딩된 비디오 데이터를 전송하는데, 이는 비디오 출력(44)으로의 스트림의 복수의 뷰들을 포함할 수 있다.
[0054] 비디오 인코더(28), 비디오 디코더(48), 오디오 인코더(26), 오디오 디코더(46), 캡슐화 유닛(30), 리트리브 유닛(52) 및 캡슐화해제 유닛(50)은 각각, 적용가능한 바에 따라, 하나 또는 그 초과의 마이크로프로세서들, DSP(digital signal processor)들, ASIC(application specific integrated circuit)들, FPGA(field programmable gate array)들, 이산 로직 회로, 소프트웨어, 하드웨어, 펌웨어 또는 이들의 임의의 결합들과 같은 다양한 적합한 프로세싱 회로 중 임의의 것으로서 구현될 수 있다. 비디오 인코더(28) 및 비디오 디코더(48) 각각은 하나 또는 그 초과의 인코더들 또는 디코더들에 포함될 수 있고, 이들 중 어느 하나는 결합형 비디오 CODEC(encoder/decoder)의 부분으로서 통합될 수 있다. 마찬가지로, 오디오 인코더(26) 및 오디오 디코더(46) 각각은 하나 또는 그 초과의 인코더들 또는 디코더들에 포함될 수 있고, 이들 중 어느 하나는 결합형 CODEC의 부분으로서 통합될 수 있다. 비디오 인코더(28), 비디오 디코더(48), 오디오 인코더(26), 오디오 디코더(46), 캡슐화 유닛(30), 리트리브 유닛(52) 및/또는 캡슐화해제 유닛(50)을 포함하는 장치는 집적 회로, 마이크로프로세서 및/또는 무선 통신 디바이스, 이를테면, 셀룰러 전화를 포함할 수 있다.
[0055] 클라이언트 디바이스(40), 서버 디바이스(60) 및/또는 컨텐츠 준비 디바이스(20)는 본 개시 내용의 기법들에 따라 동작하도록 구성될 수 있다. 예시를 목적으로, 본 개시 내용은 클라이언트 디바이스(40) 및 서버 디바이스(60)에 대해 이 기법들을 설명한다. 그러나, 컨텐츠 준비 디바이스(20)는, 서버 디바이스(60) 대신에(또는 이와 더불어), 이 기법들을 수행하도록 구성될 수 있다는 것이 이해되어야 한다.
[0056] 캡슐화 유닛(30)은, NAL 유닛이 속하는 프로그램을 식별하는 헤더뿐만 아니라, 페이로드, 예를 들어, 오디오 데이터, 비디오 데이터, 또는 NAL 유닛이 대응하는 전송 또는 프로그램 스트림을 설명하는 데이터를 포함하는 NAL 유닛들을 형성할 수 있다. 예를 들어, H.264/AVC에서, NAL 유닛은 1-바이트 헤더 및 다양한 크기의 페이로드를 포함한다. 자신의 페이로드에 비디오 데이터를 포함하는 NAL 유닛은 비디오 데이터의 다양한 입도(granularity) 레벨들을 포함할 수 있다. 예를 들어, NAL 유닛은 비디오 데이터의 블록, 복수의 블록들, 비디오 데이터의 슬라이스 또는 비디오 데이터의 전체 픽처를 포함할 수 있다. 캡슐화 유닛(30)은 엘리먼터리 스트림들의 PES 패킷들의 형태로 비디오 인코더(28)로부터 인코딩된 비디오 데이터를 수신할 수 있다. 캡슐화 유닛(30)은 각각의 엘리먼터리 스트림을 대응하는 프로그램과 연관시킬 수 있다.
[0057] 캡슐화 유닛(30)은 또한, 복수의 NAL 유닛들로부터의 액세스 유닛들을 어셈블링할 수 있다. 일반적으로, 액세스 유닛은 비디오 데이터의 프레임뿐만 아니라 오디오 데이터가 이용가능한 경우 프레임에 대응하는 이러한 오디오 데이터를 표현하기 위한 하나 또는 그 초과의 NAL 유닛들을 포함할 수 있다. 액세스 유닛은 일반적으로, 하나의 출력 시간 인스턴스에 대한 모든 NAL 유닛들, 예를 들어, 하나의 시간 인스턴스에 대한 모든 오디오 및 비디오 데이터를 포함한다. 예를 들어, 각각의 뷰가 초당 20 프레임들(fps)의 프레임 레이트를 가지면, 각각의 시간 인스턴스는 0.05초의 시간 인터벌에 대응할 수 있다. 이 시간 인터벌 동안, 동일한 액세스 유닛(동일한 시간 인스턴스)의 모든 뷰들에 대한 특정 프레임들은 동시에 렌더링될 수 있다. 하나의 예에서, 액세스 유닛은 1차 코딩된 픽처로서 제시될 수 있는 하나의 시간 인스턴스에 코딩된 픽처를 포함할 수 있다.
[0058] 따라서, 액세스 유닛은, 공통 시간적 인스턴스의 모든 오디오 및 비디오 프레임들, 예를 들어, 시간 X에 대응하는 모든 뷰들을 포함할 수 있다. 본 개시 내용은 또한, "뷰 컴포넌트"로서 특정 뷰의 인코딩된 픽처를 지칭한다. 즉, 뷰 컴포넌트는 특정 시간에 특정 뷰에 대한 인코딩된 픽처(또는 프레임)를 포함할 수 있다. 따라서, 액세스 유닛은 공통 시간적 인스턴스의 모든 뷰 컴포넌트들을 포함하는 것으로서 정의될 수 있다. 액세스 유닛들의 디코딩 순서는 반드시 출력 또는 디스플레이 순서와 동일할 필요는 없다.
[0059] 미디어 제시는 상이한 대안적 표현들(예를 들어, 상이한 품질들을 갖는 비디오 서비스들)의 설명들을 포함할 수 있는 MPD(media presentation description)를 포함할 수 있고, 설명은 예를 들어, 코덱 정보, 프로파일 값 및 레벨 값을 포함할 수 있다. MPD는 매니페스트 파일(66)과 같은 매니페스트 파일의 하나의 예이다. 클라이언트 디바이스(40)는 다양한 제시들의 무비 프래그먼트들에 액세스하는 방법을 결정하기 위해서 미디어 제시의 MPD를 리트리브할 수 있다. 무비 프래그먼트들은 비디오 파일들의 무비 프래그먼트 박스들(무프(moof) 박스들)에 로케이팅될 수 있다.
[0060] 매니페스트 파일(66)(예를 들어, MPD를 포함할 수 있음)은 표현들(68)의 세그먼트들의 이용가능성을 광고할 수 있다. 즉, MPD는 표현들(68) 중 하나에 대한 제 1 세그먼트가 이용가능해지는 월-클럭 시간을 표시하는 정보뿐만 아니라, 표현들(68) 내의 세그먼트들의 듀레이션들을 표시하는 정보를 포함할 수 있다. 이러한 방식으로, 클라이언트 디바이스(40)의 리트리브 유닛(52)은 시작 시간뿐만 아니라 특정 세그먼트에 선행하는 세그먼트들의 듀레이션들에 기초하여, 각각의 세그먼트가 언제 이용가능한지를 결정할 수 있다.
[0061] 캡슐화 유닛(30)이 수신된 데이터에 기초하여 NAL 유닛들 및/또는 액세스 유닛들을 비디오 파일로 어셈블링한 이후, 캡슐화 유닛(30)은 출력을 위해서 비디오 파일을 출력 인터페이스(32)로 전달한다. 일부 예들에서, 캡슐화 유닛(30)은 비디오 파일을 로컬로 저장하거나, 또는 비디오 파일을 출력 인터페이스(32)를 통해 서버 디바이스(60)와 같은 원격 서버에 전송할 수 있다. 출력 인터페이스(32)는, 예를 들어, 송신기, 트랜시버, 예를 들어, 광 드라이브, 자기 미디어 드라이브(예를 들어, 플로피 드라이브)와 같은 컴퓨터 판독가능한 매체에 데이터를 기록하기 위한 디바이스, USB(universal serial bus) 포트, 네트워크 인터페이스 또는 다른 출력 인터페이스를 포함할 수 있다. 출력 인터페이스(32)는 예를 들어, 송신 신호, 자기 매체, 광 매체, 메모리, 플래시 드라이브와 같은 컴퓨터 판독가능한 매체(34) 또는 다른 컴퓨터 판독가능한 매체로 비디오 파일을 출력한다.
[0062] 네트워크 인터페이스(54)는 네트워크(74)를 통해 NAL 유닛 또는 액세스 유닛을 수신하고, NAL 유닛 또는 액세스 유닛을 리트리브 유닛(52)을 통해 캡슐화해제 유닛(50)에 제공할 수 있다. 캡슐화해제 유닛(50)은, 비디오 파일의 엘리먼트들을 구성 PES 스트림들로 캡슐화해제하고, 인코딩된 데이터를 리트리브하기 위해서 PES 스트림들을 패킷화해제하고, 예를 들어, 스트림의 PES 패킷 헤더들에 의해 표시되는 바와 같이, 인코딩된 데이터가 오디오 또는 비디오 스트림의 부분인지에 따라, 인코딩된 데이터를 오디오 디코더(46) 또는 비디오 디코더(48)에 전송할 수 있다. 오디오 디코더(46)는 인코딩된 오디오 데이터를 디코딩하며, 디코딩된 오디오 데이터를 오디오 출력(42)에 전송하는 반면, 비디오 디코더(48)는 인코딩된 비디오 데이터를 디코딩하며, 디코딩된 비디오 데이터를 전송하는데, 이는 비디오 출력(44)으로의 스트림의 복수의 뷰들을 포함할 수 있다.
[0063] 위에서 논의된 바와 같이, 컨텐츠 준비 디바이스(20)는 미디어 데이터, 예를 들어, 라이브 미디어 데이터를 서버 디바이스(60)에 제공한다. 예를 들어, 컨텐츠 준비 디바이스(20)는 미디어 데이터가 캡처 및 인코딩될 때 미디어 데이터를 출력 인터페이스(32)를 통해 입력 인터페이스(76)에 송신할 수 있다. 일부 경우들에서, 미디어 데이터의 손실들이 발생할 수 있다. 따라서, 본 개시 내용의 기법들에 따라, 서버 디바이스(60)는 어떠한 미디어 데이터도 이용가능하지 않은 하나 또는 그 초과의 기간들의 미디어 컨텐츠, 이를테면, 멀티미디어 컨텐츠(64)에 대한 데이터를 시그널링할 수 있다.
[0064] 예를 들어, 서버 디바이스(60)는 어떠한 미디어 데이터도 이용가능하지 않은 재생 시간을 표현하는 기간 엘리먼트를 포함하기 위해서 매니페스트 파일(66)(예를 들어, MPD)을 생성 또는 수정할 수 있다. 기간 엘리먼트는 기간에 대한 시작 시간 및 듀레이션을 표현하는 데이터를 포함할 수 있다. 듀레이션은 어떠한 미디어 데이터도 이용가능하지 않은 기간에 대한 시작 시간으로부터의 최소량의 시간에 대응할 수 있다. 서버 디바이스(60)는 매니페스트 파일(66)을 네트워크(74)를 통해 클라이언트 디바이스(40)에 제공할 수 있다. MPD의 이러한 기간 엘리먼트는 어떠한 미디어 데이터도 기간 동안 이용가능하지 않음을 표시하는 데이터의 예이다.
[0065] 클라이언트 디바이스(40)의 리트리브 유닛(52)은 어떠한 미디어 데이터도 이용가능하지 않은 기간을 결정하기 위해서 매니페스트 파일(66)을 사용할 수 있다. 이러한 기간이 발견되는 경우, 리트리브 유닛(52)은 기간 내에서의 미디어 데이터에 대한 요청들의 제출을 회피할 수 있다. 일부 예들에서, 리트리브 유닛(52)은 매니페스트 파일(66)에서 표시되는 시작 시간과 듀레이션의 합 이후 미디어 데이터에 대한 하나 또는 그 초과의 요청들을 제출할 수 있다. 서버 디바이스(60)가 미디어 데이터가 어떠한 미디어 데이터도 이용가능하지 않은 기간 이후 이용가능함을 결정하면, 서버 디바이스(60)는 이용가능한 미디어 데이터를 클라이언트 디바이스(40)에 전송할 수 있다.
[0066] 그러나, 위에서 서술된 바와 같이, 듀레이션은 어떠한 미디어 데이터도 이용가능하지 않은 시작 시간으로부터의 최소량의 시간을 표현할 수 있다. 따라서, 서버 디바이스(60)는 대신에, HTTP 404 "이용가능하지 않은" 에러로 미디어 데이터에 대한 요청(들)에 응답할 수 있다. 에러는, 예를 들어, HTTP 헤더의 확장에서, 언제 미디어 데이터가 이용가능할 것인지에 대한 표시를 더 포함할 수 있다. 언제 미디어 데이터가 이용가능할 것인지에 대한 표시는 NTP(network time protocol)에서 표현되는 동기화 시간, ISO(International Organization for Standardization) 시간 포맷 등에 대응할 수 있다. 추가적으로 또는 대안적으로, 서버 디바이스(60)는 미디어 데이터가 이용가능하지 않은 후속하는 기간의 표시를 포함하는 업데이트된 매니페스트 파일을 클라이언트 디바이스(40)에 전송할 수 있다.
[0067] 게다가, 본 개시 내용은 일부 경우들에서, 클라이언트 디바이스(40)의 내부 클럭이 미디어 데이터가 MPD에서 이용가능한 것으로서 광고되는 "월 클럭" 시간들에 관해, 서버 디바이스(60)의 클럭에 대해 비동기화되게 될 수 있다는 것을 인지한다. 따라서, 본 개시 내용의 기법들은 또한, 클라이언트 디바이스(40)의 내부 클럭이 서버 디바이스(60)의 클럭에 대해 드리프트하는 경우 사용될 수 있다. 위에서 서술된 바와 같이, 서버 디바이스(60)는 클라이언트 디바이스(40)로부터의 이용가능하지 않은 미디어 데이터에 대한 요청에 대해 HTTP 404 에러 응답을 전송할 수 있다. 또한, 에러 응답은 후속하는 미디어 데이터가 이용가능할 시간 및/또는 동기화 방법 및/또는 서버를 표시할 수 있다. 따라서, 클라이언트 디바이스(40)는 이 데이터를 사용하여, 서버 디바이스(60)의 클럭과 재동기화하고, 그리고/또는 일정 기간의 미디어 데이터가 리트리브를 위해서 이용가능할 월 클럭 시간을 결정할 수 있다. 이러한 에러 응답은 일정 기간의 미디어 데이터가 이용가능하지 않음(즉, 어떠한 일정 기간의 미디어 데이터도 이용가능하지 않음)을 표시하는 데이터의 또 다른 예이다.
[0068] 도 2는 예시적 멀티미디어 컨텐츠(102)의 엘리먼트들을 예시하는 개념도이다. 멀티미디어 컨텐츠(102)는 멀티미디어 컨텐츠(64)(도 1) 또는 메모리(62)에 저장된 또 다른 멀티미디어 컨텐츠에 대응할 수 있다. 도 2의 예에서, 멀티미디어 컨텐츠(102)는 MPD(media presentation description)(104) 및 복수의 표현들(110A-110N)(표현들(110))을 포함한다. 표현들(110A)은 선택적 헤더 데이터(112) 및 세그먼트들(114A-114N)(세그먼트들(114))을 포함하는 반면, 표현(110N)은 선택적 헤더 데이터(122) 및 세그먼트들(124A-124N)(세그먼트들(124))을 포함한다. 문자 N은 편의상 표현들(110) 각각에서 마지막 무비 프래그먼트를 지정하기 위해서 사용된다. 일부 예들에서, 표현들(110) 사이에 상이한 수들의 무비 프래그먼트들이 존재할 수 있다.
[0069] MPD(104)는 표현들(110)로부터 분리되는 데이터 구조를 포함할 수 있다. MPD(104)는 도 1의 매니페스트 파일(66)에 대응할 수 있다. 마찬가지로, 표현들(110)은 도 1의 표현들(68)에 대응할 수 있다. 일반적으로, MPD(104)는, 일반적으로 표현들(110)의 특성들, 이를테면, 코딩 및 렌더링 특성들, 적응 세트들, MPD(104)가 대응하는 프로파일, 텍스트 타입 정보, 카메라 각도 정보, 레이팅 정보, 트릭 모드 정보(예를 들어, 시간적 서브-시퀀스들을 포함하는 표현들을 표시하는 정보) 및/또는 원격 기간들을 리트리브하기 위한(예를 들어, 재생 동안 미디어 컨텐츠로의 타겟팅된 광고 삽입을 위한) 정보를 설명하는 데이터를 포함할 수 있다.
[0070] 본 개시 내용의 기법들에 따라, MPD(104)는 어떠한 미디어 데이터도 이용가능하지 않은 기간 엘리먼트를 포함할 수 있다. 예를 들어, MPD(104)는 다른 엘리먼트들 없이, Period@start 엘리먼트 및 Period@duration 엘리먼트를 포함하는 기간 엘리먼트를 포함할 수 있다. 클라이언트 디바이스(40)와 같은 클라이언트 디바이스는 MPD(104)의 이 데이터로부터의 어떠한 미디어 데이터도 이러한 기간 동안 이용가능하지 않음을 결정할 수 있고, 그에 의해, 이용가능하지 않은 미디어 데이터에 대한 요청들의 제출을 회피하며, 이는 네트워크 대역폭을 보존하고, 서버 및 클라이언트 둘다에 의해 수행되는 프로세싱 전력을 감소시킬 수 있다.
[0071] 본 개시 내용의 기법들에 대한 또 다른 예에서, MPD(104)는 미디어 데이터가 단지 제 1 부분에 대해서는 이용가능하지만 끝에서는 이용가능하지 않은 기간 엘리먼트를 포함할 수 있다. 예를 들어, MPD(104)는 Period@start 엘리먼트 및 Period@duration 엘리먼트를 포함하는 기간 엘리먼트, 및 제 1 기간의 Period@start와 Period@duration의 합보다 큰 Period@start를 갖는 새로운 기간 엘리먼트를 포함할 수 있다. 클라이언트 디바이스(40)와 같은 클라이언트 디바이스는 어떠한 미디어 데이터도 제 1 기간의 2개의 엘리먼트들과 다음 기간의 시작의 합 사이의 시간 동안 이용가능하지 않음을 결정할 수 있고, 그에 의해, 이용가능하지 않은 미디어 데이터에 대한 요청들의 제출을 회피하며, 이는 네트워크 대역폭을 보존하고, 서버 및 클라이언트 둘다에 의해 수행되는 프로세싱 전력을 감소시킬 수 있다.
[0072] 단일 MPD(104)가 도 2에 도시되지만, MPD(104)가 실제로 복수의 데이터 세트들: 초기 MPD 및 초기 MPD에 대한 하나 또는 그 초과의 업데이트들에 의해 실현될 수 있다는 것이 이해되어야 한다. 예를 들어, 초기(또는 이전) MPD에 대한 업데이트들은 멀티미디어 컨텐츠(102)에 대한 새로운 기간 엘리먼트들을 포함할 수 있다. 일부 예들에서, 기간은 표현들(110) 중 하나의 표현에 대응할 수 있는 반면, 다른 예들에서, 기간은 다수의(예를 들어, 모든 또는 서브세트의) 표현들(110)에 대응할 수 있다.
[0073] 제시되는 경우, 헤더 데이터(112)는 세그먼트들(114)의 특성들, 예를 들어, RAP(random access point)들(또한 SAP(as stream access point)들로 지칭됨)의 시간적 위치들, 세그먼트들(114) 중 어떤 것이 랜덤 액세스 포인트들을 포함하는지, 세그먼트들(114) 내의 랜덤 액세스 포인트들로의 바이트 오프셋들, 세그먼트들(114)의 URL(uniform resource locator)들 또는 세그먼트들(114)의 다른 양상들을 설명할 수 있다. 제시되는 경우, 헤더 데이터(122)는 세그먼트들(124)에 대한 유사한 특성들을 설명할 수 있다. 추가적으로 또는 대안적으로, 이러한 특성들은 MPD(104) 내에 완전히 포함될 수 있다.
[0074] 세그먼트들(114, 124)은 하나 또는 그 초과의 코딩된 비디오 샘플들을 포함하며, 이들 각각은 비디오 데이터의 프레임들 또는 슬라이스들을 포함할 수 있다. 세그먼트들(114)의 코딩된 비디오 샘플들 각각은 유사한 특성들, 예를 들어, 높이, 폭 및 대역폭 요건들을 가질 수 있다. 이러한 특성들은 MPD(104)의 데이터에 의해 설명될 수 있지만, 이러한 데이터는 도 2의 예에 예시되지 않는다. MPD(104)는 본 개시 내용에서 설명되는 시그널링된 정보 모두 또는 그들 중 임의의 것의 추가에 따라, 3GPP 규격에 의해 설명되는 바와 같은 특성들을 포함할 수 있다.
[0075] 세그먼트들(114, 124) 각각은 고유한 URL(uniform resource locator)과 연관될 수 있다. 따라서, 세그먼트들(114, 124) 각각은 DASH와 같은 스트리밍 네트워크 프로토콜을 사용하여 독립적으로 리트리브가능할 수 있다. 이러한 방식으로, 클라이언트 디바이스(40)와 같은 목적지 디바이스는 HTTP GET 요청을 사용하여 세그먼트들(114 또는 124)을 리트리브할 수 있다. 일부 예들에서, 클라이언트 디바이스(40)는 HTTP 부분적 GET 요청들을 사용하여 세그먼트들(114 또는 124)의 특정 바이트 범위들을 리트리브할 수 있다.
[0076] 도 3은 본 개시 내용의 기법들을 수행할 수 있는 시스템(150)을 예시하는 블록도이다. 도 3의 시스템은 DASH 미디어 제시 서버(152) 및 DASH 클라이언트(154)를 포함한다. DASH 미디어 제시 서버(152)는 도 1의 서버 디바이스(60)에 대응할 수 있는 반면, DASH 클라이언트(154)는 도 1의 클라이언트 디바이스(40)에 대응할 수 있다. DASH 미디어 제시 서버(152)는 아웃티지들을 갖는 라이브 비디오 스트림(156)을 수신할 수 있다. DASH 미디어 제시 서버(152)는 본 개시 내용의 기법들에 따라, 아웃티지들을 DASH 클라이언트(154)로 시그널링할 수 있다(158).
[0077] 예를 들어, DASH 미디어 제시 서버(152)는 HTTP 404 응답의 경우 구체적으로 포맷팅된 시간 코드를 갖는 서버의 시간을 포함하는 특정 HTTP 응답을 통해 요청(예를 들어, DASH 클라이언트(154)로부터의 HTTP GET 또는 부분적 GET 요청)에 응답할 수 있다. 파라미터는 메시지 바디에 추가될 수 있다. DASH 클라이언트(154)는 클럭을 미디어 제시의 제공과 동기화하도록 자신의 시간 기준(예를 들어, DASH 클라이언트(154)의 로컬 클럭)을 조정하기 위해서 이 정보를 사용할 수 있다.
[0078] 추가적으로 또는 대안적으로, DASH 미디어 제시 서버(152)는 아웃티지의 최소 듀레이션을 시그널링하는 엠티 기간을 표현의 데이터에 추가할 수 있다. 듀레이션은 새로운 미디어가 제공될 때까지 MPD(media presentation description) 업데이트에서 연장될 수 있다. DASH 클라이언트(154)는 일부 블랙아웃을 나타내기 위한 정보를 사용할 수 있지만, DASH 클라이언트(154)는 어떠한 미디어도 이 시간 시퀀스 동안 생성되지 않았음을 통지받는다. 이러한 방식으로, 아웃티지들이 DASH 미디어 제시 서버(152)에 의해 수신되는 비디오 데이터에 존재하는 경우, DASH 클라이언트(154)는 어떠한 미디어 데이터도 아웃티지가 발생하였던 시간 동안 존재하지 않음을 결정하고, 따라서, 예를 들어, DASH 미디어 제시 서버(152)와 시간적으로 동기화되게 유지할 수 있다.
[0079] 도 4는 일정 기간의 미디어 컨텐츠가 이용가능하지 않음을 표시하는 정보를 교환하기 위한 예시적 방법을 예시하는 흐름도이다. 도 4의 방법은 도 1의 클라이언트 디바이스(40) 및 서버 디바이스(60)에 대해 설명된다. 그러나, 다른 디바이스들이 이러한 또는 유사한 방법을 수행하도록 구성될 수 있다는 것이 이해되어야 한다.
[0080] 초기에, 도 4의 예에서, 클라이언트 디바이스(40)는 서버 디바이스(60)로부터의 미디어 컨텐츠에 대한 MPD를 요청한다(160). 서버 디바이스(60)는 MPD에 대한 요청을 수신하고(162), 어떠한 미디어 데이터도 갖지 않는 기간을 표시하는 초기 MPD를 전송한다(164). 도 4에 도시되지 않지만, 서버 디바이스(60)는 미디어 데이터의 일부분이, 예를 들어, 컨텐츠 준비 디바이스(20)로부터 수신되지 않았음을 결정할 수 있다. 수신되지 않았던 미디어 데이터의 재송신을 기다리기 보다는, 후속하는 미디어 데이터의 지연들을 회피하기 위해서, 서버 디바이스(60)는 수신되지 않았던 미디어 데이터에 대응하는 기간이 이용가능한 미디어 데이터를 갖지 않음을 표시하기 위해서 초기 MPD를 준비할 수 있다. 예를 들어, 초기 MPD는 기간에 대해 시그널링되는 다른 엘리먼트들을 갖지 않고, 기간에 대한 기간 시작 시간(Period@start) 및 듀레이션(Period@duration)을 시그널링하여, 미디어 데이터가 그 기간 동안 이용가능하지 않음을 표시할 수 있다. 또 다른 예로서, MPD는 합이 다음 기간의 Period@start보다 작은 제 1 기간에 대한 Period@start 및 Period@duration를 시그널링할 수 있다. 그 사이 시간 갭 동안, 어떠한 미디어도 이용가능하지 않다. "초기 MPD"라는 용어는 MPD의 순서적으로(ordinal) 제 1 인스턴스 또는 MPD의 업데이트된 버전을 지칭할 수 있다.
[0081] 클라이언트 디바이스(40)는 초기 MPD를 수신할 수 있다(166). 어떠한 미디어 데이터도 이용가능하지 않은 기간 이전에 하나 또는 그 초과의 기간들이 존재한다고 가정하면, 클라이언트 디바이스(40)는 초기 MPD를 사용하여 어떠한 미디어 데이터도 갖지 않는 기간 이전에 기간들의 미디어 데이터를 요청할 수 있다(168). 예를 들어, 이러한 요청들은 HTTP GET 또는 부분적 GET 요청들을 포함할 수 있다. 서버 디바이스(60)는 미디어 데이터에 대한 요청들을 수신하고(170), 요청들에 대한 응답으로, 요청된 미디어 데이터를 전송할 수 있다(172). 클라이언트 디바이스(40)는, 예를 들어, 미디어 데이터를 디코딩하고, 미디어 데이터를 사용자에게 제시함으로써, 수신된 미디어 데이터를 프로세싱할 수 있다(174).
[0082] 도 4의 예에서, 서버 디바이스(60)는 추후 기간, 즉, 어떠한 미디어 데이터도 이용가능하지 않은 기간 이후의 기간 동안 이용가능한 미디어 데이터를 표시하는 업데이트된 MPD를 전송한다(176). 일부 예들에서, 서버 디바이스(60)는 업데이트된 MPD를 자동으로 전송할 수 있는 반면, 다른 예들에서, 서버 디바이스(60)는 클라이언트 디바이스(40)로부터의 요청에 대한 응답으로, 업데이트된 MPD를 전송할 수 있다(도시되지 않음). 어떤 경우든, 클라이언트 디바이스(40)는 업데이트된 MPD를 수신하고(178), 업데이트된 MPD를 사용하여 어떠한 미디어 데이터를 갖지 않는 기간 이후 기간의 미디어 데이터를 요청한다(180). 이러한 방식으로, 클라이언트 디바이스(40)는 어떠한 미디어 데이터도 이용가능하지 않은 기간의 미디어 데이터에 대한 요청들의 전송을 생략한다. 서버 디바이스(60)는 클라이언트 디바이스(40)로부터 미디어 데이터에 대한 요청들을 수신하며(182), 요청들에 대한 응답으로, 요청된 미디어 데이터를 클라이언트 디바이스(40)에 전송한다(184). 클라이언트 디바이스(40)는, 예를 들어, 수신된 미디어 데이터를 디코딩 및 제시함으로써, 수신된 미디어 데이터를 프로세싱한다(186).
[0083] 이러한 방식으로, 도 4의 방법은, 제 1 기간의 미디어 컨텐츠 및 제 2 기간의 미디어 컨텐츠에 대한 데이터를 수신하는 단계 ― 제 1 기간에 대한 데이터는 어떠한 미디어 데이터도 제 1 기간 동안 이용가능하지 않음을 표시하고, 제 2 기간에 대한 데이터는 제 2 기간에 대한 이용가능한 미디어 데이터를 표시함 ― , 및 제 1 기간 및 제 2 기간에 대한 데이터에 기초하여, 제 1 기간의 미디어 데이터에 대한 요청들을 생략하고, 제 2 기간의 미디어 데이터에 대한 하나 또는 그 초과의 요청들을 전송하는 단계를 포함하는 방법의 예를 표현한다.
[0084] 도 4의 방법은 또한, 미디어 컨텐츠의 제 1 부분이 손실되었고, 미디어 컨텐츠의 제 2 부분이 수신되었음을 결정하는 단계, 미디어 데이터가 제 1 기간 동안 이용가능하지 않음을 표시하는, 제 1 부분에 대응하는 제 1 기간의 미디어 컨텐츠에 대한 데이터를 시그널링하고, 그리고 미디어 데이터가 제 2 기간 동안 이용가능함을 표시하는, 제 2 부분에 대응하는 제 2 기간의 미디어 컨텐츠에 대한 데이터를 시그널링하는 단계, 데이터를 시그널링한 이후, 제 2 기간의 미디어 데이터에 대한 하나 또는 그 초과의 요청들을 수신하는 단계, 및 요청들에 대한 응답으로, 요청된 제 2 기간의 미디어 데이터를 전송하는 단계를 포함하는 방법의 예를 표현한다.
[0085] 하나 또는 그 초과의 예들에서, 설명되는 기능들은 하드웨어, 소프트웨어, 펌웨어 또는 이들의 임의의 결합으로 구현될 수 있다. 소프트웨어로 구현되는 경우, 기능들은 컴퓨터 판독가능한 매체 상에 하나 또는 그 초과의 명령들 또는 코드로서 저장되거나 또는 이를 통해 송신되며, 하드웨어-기반 프로세싱 유닛에 의해 실행될 수 있다. 컴퓨터 판독가능한 매체들은, 예를 들어, 통신 프로토콜에 따라 하나의 장소에서 다른 장소로 컴퓨터 프로그램의 이전을 가능하게 하는 임의의 매체를 포함하는 통신 매체들 또는 데이터 저장 매체들과 같은 유형의 매체에 대응하는 컴퓨터 판독가능한 저장 매체들을 포함할 수 있다. 이러한 방식으로, 컴퓨터 판독가능한 매체들은 일반적으로, (1) 비-일시적 유형의 컴퓨터 판독가능한 저장 매체들 또는 (2) 신호 또는 반송파와 같은 통신 매체에 대응할 수 있다. 데이터 저장 매체들은 본 개시 내용에서 설명되는 기법들의 구현을 위한 명령들, 코드 및/또는 데이터 구조들을 리트리브하기 위해서 하나 또는 그 초과의 컴퓨터들 또는 하나 또는 그 초과의 프로세서들에 의해 액세스될 수 있는 임의의 이용가능한 매체들일 수 있다. 컴퓨터 프로그램 물건은 컴퓨터-판독가능한 매체를 포함할 수 있다.
[0086] 제한이 아닌 예로서, 이러한 컴퓨터 판독가능한 저장 매체들은 RAM, ROM, EEPROM, CD-ROM 또는 다른 광학 디스크 저장소, 자기 디스크 저장소 또는 다른 자기 저장 디바이스들, 플래시 메모리, 또는 명령들 또는 데이터 구조들의 형태로 요구되는 프로그램 코드를 저장하는데 사용될 수 있고, 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함할 수 있다. 또한, 임의의 연결수단(connection)이 컴퓨터 판독가능한 매체로 적절히 지칭된다. 예를 들어, 명령들이 동축 케이블, 광섬유 케이블, 트위스티드 페어(twisted pair), DSL(digital subscriber line), 또는 (적외선, 라디오, 및 마이크로웨이브와 같은) 무선 기술들을 사용하여 웹사이트, 서버, 또는 다른 원격 소스로부터 송신되는 경우, 동축 케이블, 광섬유 케이블, 트위스티드 페어, DSL, 또는 (적외선, 라디오, 및 마이크로웨이브와 같은) 무선 기술들이 매체의 정의 내에 포함된다. 그러나, 컴퓨터 판독가능한 저장 매체들 및 데이터 저장 매체들은 연결들, 반송파들, 신호들, 또는 다른 일시적 매체들을 포함하지 않지만, 대신에 비-일시적 유형의 저장 매체들과 관련된다는 것이 이해되어야 한다. 본원에서 사용되는 바와 같은 디스크(disk 및 disc)는 CD(compact disc), 레이저 디스크(disc), 광 디스크(disc), DVD(digital versatile disc), 플로피 디스크(disk) 및 블루-레이 디스크(disc)를 포함하며, 여기서 디스크(disk)들은 통상적으로 데이터를 자기적으로 재생하는 반면, 디스크(disc)들은 레이저들을 이용하여 데이터를 광학적으로 재생한다. 위의 것들의 결합들은 또한 컴퓨터 판독가능한 매체들의 범위 내에 포함되어야 한다.
[0087] 명령들은 하나 또는 그 초과의 프로세서들, 이를테면, 하나 또는 그 초과의 DSP(digital signal processor)들, 범용 마이크로프로세서들, ASIC(application specific integrated circuit)들, FPGA(field programmable logic array)들 또는 다른 동등한 집적 또는 이산 로직 회로에 의해 실행될 수 있다. 따라서, 본원에서 사용되는 바와 같은 "프로세서"라는 용어는 본원에서 설명되는 기법들의 구현에 적합한 앞서 설명한 구조 또는 임의의 다른 구조 중 임의의 것을 지칭할 수 있다. 또한, 일부 양상들에서, 본원에서 설명되는 기능은 인코딩 및 디코딩하기 위해서 구성되는 전용 하드웨어 및/또는 소프트웨어 모듈들 내에서 제공되거나, 또는 결합형 코덱에 포함될 수 있다. 또한, 기법들은 하나 또는 그 초과의 회로들 또는 로직 엘리먼트들로 완전히 구현될 수 있다.
[0088] 본 개시 내용의 기법들은 무선 핸드셋, IC(integrated circuit) 또는 IC들의 세트(예를 들어, 칩셋)를 포함하는 아주 다양한 디바이스들 또는 장치들로 구현될 수 있다. 다양한 컴포넌트들, 모듈들 또는 유닛들은 개시되는 기법들을 수행하도록 구성되는 디바이스들의 기능적 양상들을 강조하기 위해서 본 개시 내용에서 설명되지만, 상이한 하드웨어 유닛들에 의해 반드시 실현을 요구하는 것은 아니다. 오히려, 위에서 설명된 바와 같이, 다양한 유닛들은 코덱 하드웨어 유닛에서 결합되거나, 또는 적합한 소프트웨어 및/또는 펌웨어와 함께, 위에서 설명된 바와 같은 하나 또는 그 초과의 프로세서들을 포함하는 상호동작적 하드웨어 유닛들의 수집에 의해 제공될 수 있다.
[0089] 다양한 예들이 설명되었다. 이러한 그리고 다른 예들은 다음의 청구항들의 범위 내에 있다.
Claims (30)
- 클라이언트 디바이스에 의한, 서버 디바이스로부터의 미디어 데이터의 DASH(Dynamic Adaptive Streaming over HTTP) 방법으로서, 상기 서버 디바이스는 신뢰성이 없고 적어도 일부 미디어 데이터가 손실될 수 있는 통신 세션에서 라이브 미디어 데이터를 수신하며,
상기 방법은,
미디어 컨텐츠의 제 1 기간에 대한 데이터 및 상기 미디어 컨텐츠의 제 2 기간에 대한 데이터를 수신하는 단계 ― 상기 제 1 기간에 대한 데이터는 상기 제 1 기간의 적어도 일부의 미디어 데이터가 이용가능하지 않음을 그리고 어떠한 미디어 데이터도 이용가능하지 않은 상기 제 1 기간으로부터의 듀레이션을 표시하고, 상기 제 2 기간에 대한 데이터는 상기 제 2 기간에 대한 이용가능한 미디어 데이터를 표시함 ― ; 및
상기 제 1 기간에 대한 데이터 및 상기 제 2 기간에 대한 데이터에 기초하여, 상기 제 1 기간에 대한 데이터가 이용가능하지 않음을 표시하는 상기 제 1 기간의 듀레이션 내의 상기 제 1 기간의 미디어 데이터에 대한 요청들을 생략하고, 상기 제 2 기간의 미디어 데이터에 대한 하나 또는 그 초과의 요청들을 전송하는 단계를 포함하는,
미디어 데이터의 DASH 방법. - 제 1 항에 있어서,
상기 제 1 기간에 대한 데이터를 수신하는 단계는 상기 제 1 기간의 미디어 데이터에 대한 요청에 응답한 HTTP 404 에러를 수신하는 단계를 포함하며,
상기 데이터는 월 클럭 시간(wall clock time) 동기화를 위한 동기화 데이터를 추가로 표시하고,
상기 방법은 월 클럭 시간 동기화를 위한 상기 데이터에 따라 내부 클럭을 동기화하는 단계를 더 포함하는,
미디어 데이터의 DASH 방법. - 제 1 항에 있어서,
상기 미디어 컨텐츠의 제 1 기간에 대한 데이터 및 상기 미디어 컨텐츠의 제 2 기간에 대한 데이터를 수신하는 단계는,
초기 MPD(media presentation description)에서 상기 제 1 기간에 대한 데이터를 수신하는 단계; 및
상기 초기 MPD에 대응하는 업데이트된 MPD에서 상기 제 2 기간에 대한 데이터를 수신하는 단계를 포함하는,
미디어 데이터의 DASH 방법. - 제 1 항에 있어서,
상기 제 1 기간에 대한 데이터는 상기 제 1 기간에 대한 제 1 Period@start 엘리먼트 및 상기 제 1 기간에 대한 제 1 Period@duration 엘리먼트를 포함하고,
상기 제 2 기간에 대한 데이터는 상기 제 1 Period@start와 상기 제 1 Period@duration의 합보다 큰 값을 갖는 제 2 Period@start를 포함하는,
미디어 데이터의 DASH 방법. - 제 4 항에 있어서,
상기 제 1 Period@start 엘리먼트는 상기 제 1 기간의 시작에 대한 재생 시간을 표현하고,
상기 제 1 Period@duration 엘리먼트는 상기 제 1 기간의 시작으로부터 상기 제 1 기간에서 이용가능한 미디어 데이터의 끝까지의 재생 시간의 듀레이션을 표현하는,
미디어 데이터의 DASH 방법. - 제 5 항에 있어서,
상기 제 1 Period@start와 상기 제 1 Period@duration의 합에 의해 표시되는 시간으로부터 시작해서 상기 제 2 Period@start 엘리먼트에 의해 표시되는 시간까지 상기 제 1 기간에 대한 미디어 데이터의 재생을 생략하는 단계; 및
상기 제 2 Period@start 엘리먼트에 의해 표시되는 시간에서 상기 제 2 기간의 미디어 데이터의 재생을 시작하는 단계를 더 포함하는,
미디어 데이터의 DASH 방법. - 서버 디바이스로부터 DASH 미디어 데이터를 스트리밍하는 것과 관련된 데이터를 수신하기 위한 디바이스로서,
상기 서버 디바이스는 신뢰성이 없고 적어도 일부 미디어 데이터가 손실될 수 있는 통신 세션에서 라이브 미디어 데이터를 수신하며,
상기 디바이스는
네트워크를 통해 데이터를 전송 및 수신하도록 구성되는 하나 또는 그 초과의 네트워크 인터페이스들; 및
하나 또는 그 초과의 프로세서들을 포함하고,
상기 하나 또는 그 초과의 프로세서들은,
상기 네트워크 인터페이스들을 통해 미디어 컨텐츠의 제 1 기간에 대한 데이터 및 상기 미디어 컨텐츠의 제 2 기간에 대한 데이터를 수신하고 ― 상기 제 1 기간에 대한 데이터는 상기 제 1 기간의 적어도 일부의 미디어 데이터가 이용가능하지 않음을 그리고 어떠한 미디어 데이터도 이용가능하지 않은 상기 제 1 기간의로부터의 듀레이션을 표시하고, 상기 제 2 기간에 대한 데이터는 상기 제 2 기간에 대한 이용가능한 미디어 데이터를 표시함 ―; 그리고
상기 제 1 기간에 대한 데이터 및 상기 제 2 기간에 대한 데이터에 기초하여, 상기 제 1 기간에 대한 데이터가 이용가능하지 않음을 표시하는 상기 제 1 기간의 듀레이션 내의 상기 제 1 기간의 미디어 데이터에 대한 요청들을 생략하고, 상기 제 2 기간의 미디어 데이터에 대한 하나 또는 그 초과의 요청들을 전송하도록 구성되는,
서버 디바이스로부터 DASH 미디어 데이터를 스트리밍하는 것과 관련된 데이터를 수신하기 위한 디바이스. - 제 7 항에 있어서,
상기 디바이스는 내부 클럭을 더 포함하고,
상기 제 1 기간에 대한 데이터는 상기 제 1 기간의 미디어 데이터에 대한 요청에 응답한 HTTP 404 에러를 포함하며,
상기 데이터는 월 클럭 시간(wall clock time) 동기화를 위한 동기화 데이터를 추가로 표시하고,
상기 하나 또는 그 초과의 프로세서들은 월 클럭 시간 동기화를 위한 상기 데이터에 따라 상기 내부 클럭을 동기화하도록 추가로 구성되는,
서버 디바이스로부터 DASH 미디어 데이터를 스트리밍하는 것과 관련된 데이터를 수신하기 위한 디바이스. - 제 7 항에 있어서,
상기 제 1 기간에 대한 데이터는 상기 제 1 기간에 대한 제 1 Period@start 엘리먼트 및 상기 제 1 기간에 대한 제 1 Period@duration 엘리먼트를 포함하고,
상기 제 2 기간에 대한 데이터는 상기 제 1 Period@start와 상기 제 1 Period@duration의 합보다 큰 값을 갖는 제 2 Period@start를 포함하는,
서버 디바이스로부터 DASH 미디어 데이터를 스트리밍하는 것과 관련된 데이터를 수신하기 위한 디바이스. - 제 9 항에 있어서,
상기 제 1 Period@start 엘리먼트는 상기 제 1 기간의 시작에 대한 재생 시간을 표현하고,
상기 제 1 Period@duration 엘리먼트는 상기 제 1 기간의 시작으로부터 상기 제 1 기간에서 이용가능한 미디어 데이터의 끝까지의 재생 시간의 듀레이션을 표현하는,
서버 디바이스로부터 DASH 미디어 데이터를 스트리밍하는 것과 관련된 데이터를 수신하기 위한 디바이스. - 제 10 항에 있어서,
상기 하나 또는 그 초과의 프로세서들은, 상기 제 1 Period@start와 상기 제 1 Period@duration의 합에 의해 표시되는 시간으로부터 시작해서 상기 제 2 Period@start 엘리먼트에 의해 표시되는 시간까지 상기 제 1 기간에 대한 미디어 데이터의 재생을 생략하고, 그리고 상기 제 2 Period@start 엘리먼트에 의해 표시되는 시간에서 상기 제 2 기간의 미디어 데이터의 재생을 시작하도록 추가로 구성되는,
서버 디바이스로부터 DASH 미디어 데이터를 스트리밍하는 것과 관련된 데이터를 수신하기 위한 디바이스. - 서버 디바이스에 의해 클라이언트 디바이스로 DASH 미디어 데이터를 스트리밍하는 것과 관련된 데이터를 시그널링하는 방법으로서,
상기 서버 디바이스는 신뢰성이 없고 적어도 일부 미디어 데이터가 손실될 수 있는 통신 세션에서 라이브 미디어 데이터를 수신하며,
상기 방법은,
미디어 컨텐츠의 제 1 부분이 손실되었고, 상기 미디어 컨텐츠의 제 2 부분이 수신되었음을 결정하는 단계;
상기 미디어 컨텐츠의 제 1 기간의 적어도 일부의 미디어 데이터가 상기 제 1 기간 동안 이용가능하지 않음을 그리고 어떠한 미디어 데이터도 이용가능하지 않은 상기 제 1 기간으로부터의 듀레이션을 표시함으로써, 적어도 상기 제 1 부분을 포함하는 상기 미디어 컨텐츠의 제 1 기간에 대한 데이터를 시그널링 하고, 미디어 데이터가 상기 미디어 컨텐츠의 제 2 기간 동안 이용가능함을 표시하는 상기 제 2 부분에 대응하는 상기 미디어 컨텐츠의 제 2 기간에 대한 데이터를 시그널링하는 단계;
상기 데이터를 시그널링한 이후, 상기 제 2 기간의 미디어 데이터에 대한 하나 또는 그 초과의 요청들을 수신하는 단계; 및
상기 요청들에 대한 응답으로, 요청된 상기 제 2 기간의 미디어 데이터를 전송하는 단계를 포함하는,
서버 디바이스에 의해 클라이언트 디바이스로 DASH 미디어 데이터를 스트리밍하는 것과 관련된 데이터를 시그널링하는 방법. - 서버 디바이스에 의해 클라이언트 디바이스로 DASH 미디어 데이터를 스트리밍하는 것과 관련된 데이터를 시그널링하기 위한 디바이스로서,
상기 서버 디바이스는 신뢰성이 없고 적어도 일부 미디어 데이터가 손실될 수 있는 통신 세션에서 라이브 미디어 데이터를 수신하며,
상기 디바이스는,
네트워크를 통해 데이터를 전송 및 수신하도록 구성되는 하나 또는 그 초과의 네트워크 인터페이스들; 및
하나 또는 그 초과의 프로세서들을 포함하고,
상기 하나 또는 그 초과의 프로세서들은,
미디어 컨텐츠의 제 1 부분이 손실되었고, 상기 미디어 컨텐츠의 제 2 부분이 수신되었음을 결정하고;
상기 미디어 컨텐츠의 제 1 기간의 적어도 일부의 미디어 데이터가 상기 제 1 기간 동안 이용가능하지 않음을 그리고 어떠한 미디어 데이터도 이용가능하지 않은 상기 제 1 기간으로부터의 듀레이션을 표시함으로써, 적어도 상기 제 1 부분을 포함하는 상기 미디어 컨텐츠의 제 1 기간에 대한 데이터를 상기 네트워크 인터페이스들을 통해 시그널링 하고;
미디어 데이터가 상기 미디어 컨텐츠의 제 2 기간 동안 이용가능함을 표시하는 상기 제 2 부분에 대응하는 상기 미디어 컨텐츠의 제 2 기간에 대한 데이터를 시그널링하고;
상기 데이터를 시그널링한 이후, 상기 제 2 기간의 미디어 데이터에 대한 하나 또는 그 초과의 요청들을 상기 네트워크 인터페이스들을 통해 수신하고; 그리고
상기 요청들에 대한 응답으로, 요청된 상기 제 2 기간의 미디어 데이터를 상기 네트워크 인터페이스들을 통해 전송하도록 구성되는,
서버 디바이스에 의해 클라이언트 디바이스로 DASH 미디어 데이터를 스트리밍하는 것과 관련된 데이터를 시그널링하기 위한 디바이스. - 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201461928381P | 2014-01-16 | 2014-01-16 | |
US61/928,381 | 2014-01-16 | ||
US14/598,110 US9699229B2 (en) | 2014-01-16 | 2015-01-15 | Robust live operation of dash |
US14/598,110 | 2015-01-15 | ||
PCT/US2015/011817 WO2015109228A1 (en) | 2014-01-16 | 2015-01-16 | Robust live operation of dash |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20160110424A KR20160110424A (ko) | 2016-09-21 |
KR102076064B1 true KR102076064B1 (ko) | 2020-03-02 |
Family
ID=53522372
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020167021661A KR102076064B1 (ko) | 2014-01-16 | 2015-01-16 | Dash의 강건한 라이브 동작 |
Country Status (9)
Country | Link |
---|---|
US (1) | US9699229B2 (ko) |
EP (1) | EP3095247B1 (ko) |
JP (1) | JP6254291B2 (ko) |
KR (1) | KR102076064B1 (ko) |
CN (1) | CN105900445B (ko) |
CA (1) | CA2933203C (ko) |
ES (1) | ES2764224T3 (ko) |
HU (1) | HUE047072T2 (ko) |
WO (1) | WO2015109228A1 (ko) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2015136059A (ja) * | 2014-01-17 | 2015-07-27 | ソニー株式会社 | 通信装置、通信データ生成方法、および通信データ処理方法 |
US10284821B2 (en) * | 2014-02-19 | 2019-05-07 | Canon Kabushiki Kaisha | Imaging apparatus and imaging system |
US10044831B2 (en) * | 2014-03-10 | 2018-08-07 | Samsung Electronics Co., Ltd. | Method and apparatus for transmitting messages to a dash client |
US9860294B2 (en) * | 2014-12-24 | 2018-01-02 | Intel Corporation | Media content streaming |
US10271093B1 (en) * | 2016-06-27 | 2019-04-23 | Amazon Technologies, Inc. | Systems and methods for routing content to an associated output device |
WO2018147089A1 (ja) * | 2017-02-10 | 2018-08-16 | ソニー株式会社 | 情報処理装置および方法 |
US9872062B1 (en) * | 2017-02-22 | 2018-01-16 | Wyse Technology L.L.C. | Enforcing synchronization by embedding audio within video frame data |
CN108668179B (zh) * | 2017-03-27 | 2021-05-14 | 华为技术有限公司 | 媒体索引文件的传输方法及相关设备 |
US10652166B2 (en) * | 2017-06-27 | 2020-05-12 | Cisco Technology, Inc. | Non-real time adaptive bitrate recording scheduler |
US11146852B2 (en) * | 2018-05-11 | 2021-10-12 | Qualcomm Incorporated | Signaling missing sections of media data for network streaming in a segment |
US11012761B1 (en) * | 2019-12-17 | 2021-05-18 | Sony Corporation | Techniques for replacement content signaling in advanced television systems committee (ATSC) 3.0 television |
CA3126585A1 (en) * | 2020-08-03 | 2022-02-03 | Comcast Cable Communications, Llc | Video content processing systems and methods |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120272281A1 (en) | 2011-04-22 | 2012-10-25 | Samsung Electronics Co., Ltd. | Method and apparatus for transmitting media data, and method and apparatus for receving media data |
US20130091251A1 (en) | 2011-10-05 | 2013-04-11 | Qualcomm Incorporated | Network streaming of media data |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7683940B2 (en) * | 2003-09-12 | 2010-03-23 | Canon Kabushiki Kaisha | Streaming non-continuous video data |
DE102007026531A1 (de) * | 2006-10-31 | 2008-05-08 | Siemens Ag | Verfahren zur Synchronisierung von Szene-Datenfiles und Mediendatenströmen in einem unidirektionalen Datenübertragungssystem |
WO2012046487A1 (ja) * | 2010-10-05 | 2012-04-12 | シャープ株式会社 | コンテンツ再生装置、コンテンツ配信システム、コンテンツ再生装置の同期方法、制御プログラム、および、記録媒体 |
WO2013022470A1 (en) * | 2011-08-11 | 2013-02-14 | Intel Corporation | Methods for switching between a mbms download and an http-based delivery of dash formatted content over an ims network |
US9591361B2 (en) * | 2011-09-07 | 2017-03-07 | Qualcomm Incorporated | Streaming of multimedia data from multiple sources |
US10616297B2 (en) * | 2012-07-09 | 2020-04-07 | Futurewei Technologies, Inc. | Content-specific identification and timing behavior in dynamic adaptive streaming over hypertext transfer protocol |
US9954717B2 (en) * | 2012-07-11 | 2018-04-24 | Futurewei Technologies, Inc. | Dynamic adaptive streaming over hypertext transfer protocol as hybrid multirate media description, delivery, and storage format |
-
2015
- 2015-01-15 US US14/598,110 patent/US9699229B2/en active Active
- 2015-01-16 JP JP2016546022A patent/JP6254291B2/ja active Active
- 2015-01-16 KR KR1020167021661A patent/KR102076064B1/ko active IP Right Grant
- 2015-01-16 ES ES15703165T patent/ES2764224T3/es active Active
- 2015-01-16 HU HUE15703165A patent/HUE047072T2/hu unknown
- 2015-01-16 CN CN201580004423.3A patent/CN105900445B/zh active Active
- 2015-01-16 WO PCT/US2015/011817 patent/WO2015109228A1/en active Application Filing
- 2015-01-16 EP EP15703165.9A patent/EP3095247B1/en active Active
- 2015-01-16 CA CA2933203A patent/CA2933203C/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120272281A1 (en) | 2011-04-22 | 2012-10-25 | Samsung Electronics Co., Ltd. | Method and apparatus for transmitting media data, and method and apparatus for receving media data |
US20130091251A1 (en) | 2011-10-05 | 2013-04-11 | Qualcomm Incorporated | Network streaming of media data |
Also Published As
Publication number | Publication date |
---|---|
EP3095247A1 (en) | 2016-11-23 |
JP6254291B2 (ja) | 2017-12-27 |
HUE047072T2 (hu) | 2020-04-28 |
ES2764224T3 (es) | 2020-06-02 |
CN105900445A (zh) | 2016-08-24 |
CA2933203A1 (en) | 2015-07-23 |
US9699229B2 (en) | 2017-07-04 |
WO2015109228A1 (en) | 2015-07-23 |
EP3095247B1 (en) | 2019-10-02 |
JP2017509196A (ja) | 2017-03-30 |
US20150200986A1 (en) | 2015-07-16 |
KR20160110424A (ko) | 2016-09-21 |
CA2933203C (en) | 2021-06-22 |
CN105900445B (zh) | 2019-03-29 |
BR112016016434A2 (pt) | 2017-08-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10397295B2 (en) | Processing continuous multi-period content | |
KR102076064B1 (ko) | Dash의 강건한 라이브 동작 | |
KR102454839B1 (ko) | 미디어 스트리밍을 위한 세그먼트 청크들의 취출 및 액세스 | |
US20160337424A1 (en) | Transferring media data using a websocket subprotocol | |
US11438647B2 (en) | Signaling missing sections of media data for network streaming in a manifest file | |
KR102434300B1 (ko) | 샘플 엔트리들 및 랜덤 액세스 | |
US20180176278A1 (en) | Detecting and signaling new initialization segments during manifest-file-free media streaming | |
US11843840B2 (en) | Random access at resync points of DASH segments | |
KR102434299B1 (ko) | 샘플 엔트리들 및 랜덤 액세스 | |
US11388427B2 (en) | Multiple decoder interface for streamed media data | |
KR20230030589A (ko) | 스위칭 세트들을 갖는 어드레스가능한 리소스 인덱스 트랙을 포함하는 미디어 데이터의 스트리밍 | |
US11184665B2 (en) | Initialization set for network streaming of media data | |
KR20220157957A (ko) | 미디어 데이터의 네트워크 스트리밍을 위한 데이터의 청크들의 가용성의 결정 | |
US20230224532A1 (en) | Dynamic resolution change hints for adaptive streaming | |
US20210344992A1 (en) | Calculating start time availability for streamed media data | |
BR112016016434B1 (pt) | Método de transmissão adaptativa dinâmica através de http, dispositivo para receber, a partir de um dispositivo de servidor, dados relacionados a dados de mídia de transmissão contínua dash, método e dispositivo de sinalização |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |