KR101614632B1 - 미디어 데이터의 네트워크 스트리밍을 위한 세그먼트들의 시그널링 특성들 - Google Patents

미디어 데이터의 네트워크 스트리밍을 위한 세그먼트들의 시그널링 특성들 Download PDF

Info

Publication number
KR101614632B1
KR101614632B1 KR1020147010625A KR20147010625A KR101614632B1 KR 101614632 B1 KR101614632 B1 KR 101614632B1 KR 1020147010625 A KR1020147010625 A KR 1020147010625A KR 20147010625 A KR20147010625 A KR 20147010625A KR 101614632 B1 KR101614632 B1 KR 101614632B1
Authority
KR
South Korea
Prior art keywords
segment
segments
representations
candidate
priority values
Prior art date
Application number
KR1020147010625A
Other languages
English (en)
Other versions
KR20140063862A (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 KR20140063862A publication Critical patent/KR20140063862A/ko
Application granted granted Critical
Publication of KR101614632B1 publication Critical patent/KR101614632B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/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
    • 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
    • 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/1066Session management
    • H04L65/1083In-session procedures
    • 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/613Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for the control of the source by the destination
    • 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/80Responding to QoS
    • 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/25Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
    • H04N21/266Channel or content management, e.g. generation and management of keys and entitlement messages in a conditional access system, merging a VOD unicast channel into a multicast channel
    • H04N21/2662Controlling the complexity of the video stream, e.g. by scaling the resolution or bitrate of the video stream based on the client capabilities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/442Monitoring of processes or resources, e.g. detecting the failure of a recording device, monitoring the downstream bandwidth, the number of times a movie has been viewed, the storage space available from the internal hard disk
    • H04N21/44209Monitoring of downstream path of the transmission network originating from a server, e.g. bandwidth variations of a wireless network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/442Monitoring of processes or resources, e.g. detecting the failure of a recording device, monitoring the downstream bandwidth, the number of times a movie has been viewed, the storage space available from the internal hard disk
    • H04N21/4424Monitoring of the internal components or processes of the client device, e.g. CPU or memory load, processing speed, timer, counter or percentage of the hard disk space used
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/63Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
    • H04N21/633Control signals issued by server directed to the network components or client
    • H04N21/6332Control signals issued by server directed to the network components or client directed to client
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/63Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
    • H04N21/643Communication protocols
    • H04N21/64322IP
    • 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
    • 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/234327Processing 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 by decomposing into layers, e.g. base layer and one or more enhancement layers

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Databases & Information Systems (AREA)
  • Business, Economics & Management (AREA)
  • General Business, Economics & Management (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Information Transfer Between Computers (AREA)
  • Computer And Data Communications (AREA)

Abstract

비디오 데이터는 서버로부터 취출된다. 비디오 데이터의 취출 동안, 클라이언트 디바이스는 멀티미디어 컨텐츠의 표현들의 비트 레이트들을 표시하는 정보를 수신한다. 또한, 클라이언트 디바이스는 표현들의 세그먼트들에 대한 우선순위 값들을 표시하는 정보를 수신한다. 세그먼트들은 표현들의 특정한 시간적인 섹션들에 대응한다. 클라이언트 디바이스는 세그먼트들에 대한 우선순위 값들 및 추정된 스루풋에 기초하여 세그먼트들 중의 선택된 세그먼트들을 요청한다. 일부 사례들에서는, 클라이언트 디바이스가 HTTP 상에서의 동적 적응적 스트리밍 (Dynamic Adaptive Streaming over HTTP; DASH) 과 같은 적응적 스트리밍 네트워크 프로토콜에 따라 세그먼트들을 요청한다.

Description

미디어 데이터의 네트워크 스트리밍을 위한 세그먼트들의 시그널링 특성들{SIGNALING CHARACTERISTICS OF SEGMENTS FOR NETWORK STREAMING OF MEDIA DATA}
본 출원은 2011 년 9 월 21 일자로 출원된 미국 가특허출원 제 61/537,407 호의 이익을 주장하고, 그 전체 내용은 참조를 위하여 여기에 통합된다.
본 개시물은 미디어 데이터의 네트워크 스트리밍에 관한 것이다.
통신 네트워크들 상에서 미디어 데이터를 스트리밍 (streaming) 하기 위하여 많은 기술들이 개발되었다. 이 기술들은 HTTP 상에서의 동적 적응적 스트리밍 (Dynamic Adaptive Streaming over HTTP; DASH) 과 같은 하이퍼텍스트 전송 프로토콜 스트리밍 (HTTP 스트리밍) 을 포함한다. DASH에서는, 멀티미디어 컨텐츠가 다양한 상이한 방식들로 인코딩되고, 멀티미디어 컨텐츠의 상이한 표현들을 생성한다. 표현들의 각각은 일련의 세그먼트들로 분할된다. 세그먼트들은 멀티미디어 컨텐츠의 샘플들을 나타내는 데이터를 포함한다. 예를 들어, 세그먼트들의 각각은 멀티미디어 컨텐츠의 샘플들의 상이한 3-초 시퀀스 (three-second sequence) 를 나타낼 수 있다. 세그먼트들의 각각은 상이한 URL (Uniform Resource Locator) 를 가질 수도 있다.
DASH 에서는, 클라이언트 디바이스가 멀티미디어 컨텐츠의 다양한 표현들의 특성들을 설명하는 매니페스트 파일 (manifest file) 을 수신한다. 매니페스트 파일은 표현들의 세그먼트들의 URL들을 표시하는 정보를 포함할 수도 있다. 서버 디바이스로부터 멀티미디어 컨텐츠의 데이터를 스트리밍하기 위하여, 클라이언트는 요청들, 예를 들어, GET 또는 부분적인 GET 요청들을 시간에 걸쳐 서버로 전송한다. 요청들은 매니페스트 파일에서 표시된 바와 같이 특정한 표현들의 세그먼트들에 대한 URL 들을 특정한다. 클라이언트 디바이스가 서버 디바이스로부터 세그먼트들을 수신함에 따라, 클라이언트 디바이스는 세그먼트들을 프로세싱하여 (예를 들어, 세그먼트들의 코딩된 비디오 데이터를 디코딩하고 렌더링하여) 세그먼트들에 의해 나타내어지는 미디어 컨텐츠의 샘플들을 제시한다.
대체로, 이 개시물의 기술들은 네트워크 상에서 서버 디바이스로부터 클라이언트 디바이스로 멀티미디어 컨텐츠의 데이터를 스트리밍할 때, 사용자 경험을 개선시키기 위하여 정보를 제공 및 이용하는 것에 관한 것이다. 멀티미디어 컨텐츠의 다양한 표현들은 다양한 비트 레이트들에서 인코딩된다. 더 높은 비트 레이트 표현들은 상대적으로 더 높은 재생 품질을 제공할 수도 있는 반면, 더 낮은 비트 레이트 표현들은 더욱 효율적인 대역폭 사용을 제공할 수도 있다. 컨텐츠 준비 디바이스는 표현들을 형성한다. 또한, 컨텐츠 준비 디바이스는 멀티미디어 컨텐츠의 세그먼트들에 대한 우선순위들을 알리는 우선순위 값들을 발생할 수도 있다. 일부 예들에서, 특정한 세그먼트에 대한 우선순위 값은 클라이언트 디바이스가 상대적으로 더 높은 또는 더 낮은 비트 레이트 표현으로부터 세그먼트에 대한 데이터를 요청해야 하는지를 표시한다. 이러한 방식으로, 클라이언트 디바이스는 다양한 표현들의 우선순위들을 설명하는 정보를 얻을 수도 있고, 우선순위들에 기초하여 멀티미디어 컨텐츠의 세그먼트들을 표현들로부터 취출하기 위한 그러한 표현들을 결정할 수도 있다.
하나의 예에서, 이 개시물은 비디오 데이터를 프로세싱하는 방법을 설명한다. 방법은 추정된 스루풋을 결정하는 단계를 포함한다. 방법은 추정된 스루풋과, 멀티미디어 컨텐츠의 표현들의 세그먼트들에 대한 우선순위 값들에 적어도 부분적으로 기초하여, 세그먼트들 중의 하나 이상을 선택하는 단계를 또한 포함한다. 표현들은 상이한 비트 레이트들에서 인코딩된 비디오 데이터를 포함하고, 세그먼트들의 각각은 개별적으로 취출가능하고, 세그먼트들은 표현들의 특정한 시간적인 섹션 (temporal section) 들에 대응한다. 방법은 하나 이상의 선택된 세그먼트들을 프로세싱하는 단계를 또한 포함한다.
또 다른 예에서, 이 개시물은 추정된 스루풋을 결정하도록 구성된 하나 이상의 프로세서들을 포함하는 컴퓨팅 디바이스를 설명한다. 하나 이상의 프로세서들은 추정된 스루풋과, 멀티미디어 컨텐츠의 표현들의 세그먼트들에 대한 우선순위 값들에 적어도 부분적으로 기초하여, 세그먼트들의 중의 하나 이상을 선택하도록 구성된다. 표현들은 상이한 비트 레이트들에서 인코딩된 비디오 데이터를 포함하고, 세그먼트들의 각각은 개별적으로 취출가능하고, 세그먼트들은 표현들의 특정한 시간적인 섹션들에 대응한다. 하나 이상의 프로세서들은 하나 이상의 선택된 세그먼트들을 프로세싱하도록 또한 구성된다.
또 다른 예에서, 이 개시물은 추정된 스루풋을 결정하는 수단을 포함하는 컴퓨팅 디바이스를 설명한다. 컴퓨팅 디바이스는 추정된 스루풋과, 멀티미디어 컨텐츠의 표현들의 세그먼트들에 대한 우선순위 값들에 적어도 부분적으로 기초하여, 세그먼트들 중의 하나 이상을 선택하는 수단을 또한 포함한다. 표현들은 상이한 비트 레이트들에서 인코딩된 비디오 데이터를 포함하고, 세그먼트들의 각각은 개별적으로 취출가능하고, 세그먼트들은 표현들의 특정한 시간적인 섹션들에 대응한다. 또한, 컴퓨팅 디바이스는 하나 이상의 선택된 세그먼트들을 프로세싱하는 수단을 포함한다.
또 다른 예에서, 이 개시물은, 실행될 경우, 프로세서로 하여금 추정된 스루풋을 결정하도록 하는 명령들을 저장한 컴퓨터-판독가능 저장 매체를 설명한다. 명령은 또한 프로세서로 하여금, 추정된 스루풋과, 멀티미디어 컨텐츠의 표현들의 세그먼트들에 대한 우선순위 값들에 적어도 부분적으로 기초하여, 세그먼트들 중의 하나 이상을 선택하도록 한다. 표현들은 상이한 비트 레이트들에서 인코딩된 비디오 데이터를 포함하고, 세그먼트들의 각각은 개별적으로 취출가능하고, 세그먼트들은 표현들의 특정한 시간적인 섹션들에 대응한다. 명령들은 또한 프로세서로 하여금 하나 이상의 선택된 세그먼트들을 프로세싱하도록 한다.
또 다른 예에서, 이 개시물은 적응적 스트리밍 네트워크 프로토콜을 통해 비디오 데이터를 제공하는 방법을 설명한다. 방법은 세그먼트들에 대한 우선순위 값들을 표시하는 정보를 전송하는 단계를 포함한다. 세그먼트들의 각각은 개별적으로 취출가능하다. 세그먼트들은 멀티미디어 컨텐츠의 표현들의 특정한 시간적인 섹션들에 대응한다. 멀티미디어 컨텐츠의 표현들의 각각은 상이한 비트 레이트에서 인코딩된 비디오 데이터를 포함한다. 또한, 방법은 클라이언트 디바이스로부터의 하나 이상의 요청들에 응답하여 적응적 스트리밍 네트워크 프로토콜을 통해 요청된 세그먼트들을 전송하는 단계를 포함하고, 요청된 세그먼트들은 세그먼트들 중에서 요청들에 의해 특정된 세그먼트들이다.
또 다른 예에서, 이 개시물은 세그먼트들에 대한 우선순위 값들을 표시하는 정보를 전송하도록 구성된 하나 이상의 프로세서들을 포함하는 컴퓨팅 디바이스를 설명한다. 세그먼트들의 각각은 개별적으로 취출가능하다. 세그먼트들은 멀티미디어 컨텐츠의 표현들의 특정한 시간적인 섹션들에 대응한다. 멀티미디어 컨텐츠의 표현들의 각각은 상이한 비트 레이트에서 인코딩된 비디오 데이터를 포함한다. 하나 이상의 프로세서들은 클라이언트 디바이스로부터의 하나 이상의 요청들에 응답하여 적응적 스트리밍 네트워크 프로토콜을 통해 요청된 세그먼트들을 전송하도록 또한 구성된다. 요청된 세그먼트들은 세그먼트들 중에서 요청들에 의해 특정된 세그먼트들이다.
또 다른 예에서, 이 개시물은 세그먼트들에 대한 우선순위 값들을 표시하는 정보를 전송하는 수단을 포함하는 컴퓨팅 디바이스를 설명한다. 세그먼트들의 각각은 개별적으로 취출가능하다. 세그먼트들은 멀티미디어 컨텐츠의 표현들의 특정한 시간적인 섹션들에 대응한다. 멀티미디어 컨텐츠의 표현들의 각각은 상이한 비트 레이트에서 인코딩된 비디오 데이터를 포함한다. 컴퓨팅 디바이스는 클라이언트로부터의 하나 이상의 요청들에 응답하여 적응적 스트리밍 네트워크 프로토콜을 통해 요청된 세그먼트들을 전송하는 수단을 또한 포함한다. 요청된 세그먼트들은 세그먼트들 중에서 요청들에 의해 특정된 세그먼트들이다.
또 다른 예에서, 이 개시물은 실행될 경우, 프로세서로 하여금 세그먼트들에 대한 우선순위 값들을 표시하는 정보를 전송하도록 하는 명령들을 저장한 컴퓨터-판독가능 저장 매체를 설명한다. 세그먼트들의 각각은 개별적으로 취출가능하다. 세그먼트들은 멀티미디어 컨텐츠의 표현들의 특정한 시간적인 섹션들에 대응한다. 멀티미디어 컨텐츠의 표현들의 각각은 상이한 비트 레이트에서 인코딩된 비디오 데이터를 포함한다. 명령들의 실행은 또한 컴퓨팅 디바이스로 하여금, 클라이언트 디바이스로부터의 하나 이상의 요청들에 응답하여 적응적 스트리밍 네트워크 프로토콜을 통해 요청된 세그먼트들을 전송하도록 한다. 요청된 세그먼트들은 세그먼트들 중에서 요청들에 의해 특정된 세그먼트들이다.
개시물의 하나 이상의 양상들의 세부 사항들은 첨부 도면들 및 설명에서 이하에서 기술된다. 이 개시물에서 설명된 교시 내용들의 다른 특징들, 목적들, 및 장점들은 설명 및 도면들로부터, 그리고 청구항들로부터 명백할 것이다.
도 1 은 미디어 컨텐츠를 사용자에게 제시하기 위하여 클라이언트 디바이스가 네트워크 상에서 서버 디바이스와 통신하는 일 예의 시스템을 예시하는 개념도이다.
도 2 는 프레임들을 포함하는 일 예의 비디오를 예시하는 개념도이다.
도 3 은 서버 디바이스의 일 예의 구성을 예시하는 블록도이다.
도 4 는 검색을 위하여 미디어 자원을 준비하기 위한 일 예의 동작을 예시하는 흐름도이다.
도 5 는 클라이언트 디바이스의 일 예의 구성을 예시하는 블록도이다.
도 6 은 미디어 컨텐츠를 사용자에게 제시하기 위하여 클라이언트 디바이스에 의해 수행되는 일 예의 동작을 예시하는 흐름도이다.
도 7 은 업커밍 (upcoming) 시간 기간에 대한 세그먼트 조합을 선택하기 위하여 클라이언트 디바이스에 의해 수행되는 일 예의 동작을 예시하는 흐름도이다.
도 8 은 업커밍 시간 기간에 대한 세그먼트 조합을 선택하기 위하여 클라이언트 디바이스에 의해 수행되는 일 예의 동작을 예시하는 흐름도이다.
도 9 는 일 예의 컴퓨팅 디바이스를 예시하는 블록도이다.
대체로, 이 개시물의 기술들은 네트워크 상에서 멀티미디어 컨텐츠의 데이터를 스트리밍할 때, 사용자 경험을 개선시키기 위한 정보를 제공 및 이용하는 것에 관한 것이다. 컨텐츠 전달 시스템의 디바이스들은 클라이언트 디바이스들의 다양한 디코딩 및 렌더링 능력들에 대비하기 위하여 멀티미디어 컨텐츠의 다양한 표현들을 어셈블링할 수도 있다. 예를 들어, 컨텐츠 준비 디바이스는 다양한 스크린 크기들, 2-차원, 3-차원, 또는 멀티-뷰 (multi-view) 재생, 프레임 레이트 (frame rate) 들, 스크린 상에 제시된 다른 텍스트 또는 자막 방송 (closed captioning) 을 위한 다양한 언어들, 다양한 프로파일들 및/또는 다양한 표준들의 레벨들을 준수하는 디코더들, 또는 다른 특성들을 갖는 디바이스들을 위한 표현들을 생성할 수도 있다. 또한, 컨텐츠 준비 디바이스는 네트워크 대역폭 가용성 (network bandwidth availability) 에 있어서의 변동들을 수용하기 위하여, 유사한 코딩 및 렌더링 특성들을 갖는 표현들의 세트 (set) 를 다양한 비트 레이트들에서 인코딩할 수도 있다. 이러한 방식으로, 클라이언트 디바이스는 클라이언트 디바이스의 디코딩 및 렌더링 능력들을 위해 적절한 표현들의 세트를 결정할 수도 있고, 네트워크 대역폭의 이용가능한 양을 결정할 수도 있고, 결정된 세트 내의 표현들 중의 하나로부터 데이터를 요청할 수도 있다.
이 개시물의 기술들에 따르면, 컨텐츠 준비 디바이스는 멀티미디어 컨텐츠의 다양한 시간적인 섹션 (temporal section) 들에 대한 우선순위 값들의 형태로 힌트 (hint) 정보를 클라이언트 디바이스에 제공할 수도 있다. 예를 들어, 컨텐츠 준비 디바이스는 각각의 표현의 각각의 세그먼트에 대한, 또는 멀티미디어 컨텐츠의 시간적인 섹션들 (예를 들어, 서브-세그먼트들) 에 대한 우선순위 값들을 제공할 수도 있다. 우선순위 값들은 멀티미디어 컨텐츠의 특정한 시간적인 섹션에 대한 더 높은 품질의 비디오 데이터의 상대적인 중요도 (relative importance) 를 일반적으로 표시할 수도 있다. 추가적으로 또는 대안적으로, 우선순위 값들은 높은 비트 레이트 표현으로부터 세그먼트를 선택하는 것과 낮은 비트 레이트 표현으로부터 세그먼트를 선택하는 것 사이의 품질 차이의 상대적인 양을 표시할 수도 있다.
클라이언트 디바이스는, 멀티미디어 컨텐츠의 특정한 시간적인 섹션들에 대한 세그먼트들을 요청할 표현들을 결정할 때, 이용가능한 대역폭의 양을 결정하는 것에 부가하여, 우선순위 값들을 분석하도록 구성될 수도 있다. 이러한 방식으로, 클라이언트 디바이스는 더 만족스러운 사용자 경험을 사용자에게 제공하도록 구성될 수도 있다. 예를 들어, 클라이언트 디바이스는 복수의 업커밍 세그먼트들에 대한 이용가능한 네트워크 대역폭의 양을 결정할 수도 있다. 업커밍 세그먼트들을 통해 이용가능한 것으로 결정된 대역폭에 의해 충족될 수 있는 최고 비트 레이트 표현으로부터 데이터를 요청하기보다는, 클라이언트 디바이스는 더 낮은-비트 레이트 표현들로부터 상대적으로 낮은 우선순위를 갖는 세그먼트들을 요청하고, 더 높은-비트 레이트 표현들로부터 상대적으로 높은 우선순위를 갖는 세그먼트들을 요청하도록 구성될 수 있다. 이러한 방식으로, 클라이언트 디바이스는 그렇지 않을 경우에 높은-우선순위의 시간적인 섹션들에 대해 수신되었을 것보다 상대적으로 더 높은-품질의 비디오 데이터를 수신할 수도 있고, 낮은-우선순위의 시간적인 섹션들에 대해 더욱 비트 레이트-효율적인 데이터를 수신할 수도 있다.
첨부된 도면들은 이 개시물에서 설명된 기술들의 예들을 예시한다. 첨부된 도면들에서 참조 번호들에 의해 표시된 요소들은 다음의 설명에서 유사한 참조 번호들에 의해 표시된 요소들에 대응한다. 첨부된 도면들에서, 타원들은 타원들에 의해 분리된 것들과 유사한 하나 이상의 요소들의 존재를 표시한다. 또한, 첨부된 도면들에서 적층된 요소들은 하나 이상의 유사한 요소들의 존재를 표시한다. 유사한 요소들에 대한 참조 번호들 상의 알파벳 접미사들은 특정한 수들의 요소들의 존재를 표시하도록 의도된 것이 아니다. 이 개시물에서, 순서 관련 단어들 (예를 들어, "제 1", "제 2", "제 3", 등) 과 함께 시작하는 명칭들을 갖는 요소들은 요소들이 특정한 순서를 가지는 것임을 반드시 암시하지는 않는다. 오히려, 이러한 순서 관련 단어들은 단지 유사한 요소들을 지칭하기 위해 이용된다.
도 1 은 미디어 컨텐츠의 데이터를 사용자 (108) 에게 제시하기 위하여 클라이언트 (102) 가 네트워크 (106) 상에서 서버 디바이스 (104) 와 통신하는 일 예의 시스템 (100) 을 예시하는 개념도이다. 클라이언트 디바이스 (102) 및 서버 디바이스 (104) 는 하나 이상의 컴퓨팅 디바이스들을 각각 포함한다. 클라이언트 디바이스 (120) 및 서버 디바이스 (104) 는 다양한 유형들의 컴퓨팅 디바이스들을 포함할 수 있다. 예를 들어, 도 1 은 클라이언트 디바이스 (102) 를 랩톱 컴퓨터 (laptop computer) 로서 예시한다. 다른 예들에서는, 클라이언트 디바이스 (102) 가 데스크톱 컴퓨터 (desktop computer), 태블릿 컴퓨터 (tablet computer), 스마트폰 (smart phone), 텔레비전 셋톱 박스 (television set top box), 차량내 컴퓨터 (in-car computer), 비디오 게임 콘솔 (video game console), 개인용 미디어 플레이어 (personal media player), 또는 또 다른 유형의 컴퓨팅 디바이스를 포함할 수 있다. 또한, 도 1 의 예는 서버 디바이스 (104) 를 스탠드얼론 (standalone) 서버 디바이스로서 예시한다. 다른 예들에서는, 서버 디바이스 (104) 가 하나 이상의 블레이드 (blade) 서버 디바이스들, 데스크톱 컴퓨터들, 메인프레임 (mainframe) 컴퓨터들, 및/또는 다른 유형들의 컴퓨팅 디바이스들을 포함할 수 있다.
네트워크 (106) 는 클라이언트 디바이스 (102) 와 서버 디바이스 (104) 사이의 통신을 용이하게 할 수도 있다. 네트워크 (106) 는 컴퓨팅 디바이스들과 컴퓨팅 디바이스들 사이의 통신 링크들의 세트 (set) 를 포함할 수도 있다. 네트워크 (106) 는 다양한 유형들의 컴퓨팅 디바이스들을 포함할 수 있다. 예를 들어, 네트워크 (106) 는 라우터 (router) 들, 브릿지 (bridge) 들, 캐쉬 시스템 (cache system) 들, 컨텐츠 전달 시스템들, 방화벽 (firewall) 디바이스들, 허브 (hub) 들, 및 다른 유형들의 중간 네트워크 디바이스들을 포함할 수 있다. 일부 예들에서는, 네트워크 (106) 가 인터넷 (Internet) 을 포함한다. 또한, 일부 예들에서는, 네트워크 (106) 가 로컬 영역 네트워크 (local area network) 를 포함한다.
네트워크 (106) 는 클라이언트 디바이스 (102) 와 서버 디바이스 (104) 사이에서 주어진 대역폭으로 데이터를 송신할 수도 있다. 예를 들어, 네트워크 (106) 는 초당 7 메가비트 (megabit per second; Mbps) 의 대역폭으로 서버 디바이스 (104) 로부터 클라이언트 디바이스 (102) 로 데이터를 송신할 수 있을 수도 있다. 주어진 대역폭은 일부 상황들에서 변화할 수도 있다. 예를 들어, 네트워크 (106) 가 높은 트래픽 레벨들로 인해 혼잡해질 경우, 네트워크 (106) 가 서버 디바이스 (104) 로부터 클라이언트 디바이스 (102) 로 데이터를 송신할 수 있는 레이트 (rate) 는 7 Mbps 로부터 5 Mbps 로 하락할 수도 있다. 이 예에서는, 네트워크 (106) 가 서버 디바이스 (104) 로부터 클라이언트 디바이스 (102) 로 데이터를 송신할 수 있는 레이트가 나중에 5 Mbps 로부터 8 Mbps 로, 등등과 같이 증가할 수도 있다.
사용자는 다양한 목적들을 위하여 클라이언트 디바이스 (102) 를 이용할 수 있다. 예를 들어, 사용자는 업무, 가정용, 레크리에이션, 또는 다른 목적들을 위하여 클라이언트 디바이스 (102) 를 이용할 수 있다. 사용자는 클라이언트 디바이스 (102) 를 이용하면서 멀티미디어 컨텐츠 (일반적으로 미디어 컨텐츠라고도 지칭됨) 를 시청하는 것을 택할 수도 있다. 예를 들어, 사용자는 멀티미디어 컨텐츠를 시청하는 것을 요청하기 위하여, 클라이언트 디바이스 (102) 에 의해 실행되는 웹 브라우저 애플리케이션 (web browser application) 또는 다른 애플리케이션과 상호작용할 수도 있다. 이 예에서는, 멀티미디어 컨텐츠가 서버 디바이스 (104) 에 의해 저장될 수도 있다. 일 예로서, 사용자는 멀티미디어 컨텐츠의 하이퍼링크 (hyperlink) 를 선택함으로써 미디어 컨텐츠를 시청하는 것을 택할 수도 있다. 멀티미디어 컨텐츠는 연속적인 미디어를 포함할 수도 있다. 연속적인 미디어는 고유의 시간 관념을 가지는 미디어일 수도 있다. 예를 들어, 미디어 컨텐츠는 비디오 스트림, 오디오 스트림, 음성 스트림, 또는 또 다른 유형의 미디어를 포함할 수도 있다.
미디어 컨텐츠는 시간적인 시퀀스 (temporal sequence) 를 포함할 수도 있다. DASH 표준에서 정의된 바와 같이, 시간적인 시퀀스는 하나 이상의 기간들을 포함할 수 있다. 기간들의 각각은 미디어 컨텐츠의 시간적인 섹션이다. 다양한 예들에서는, 미디어 컨텐츠의 시간적인 섹션들이 다양한 시간적인 길이들을 가진다. 예를 들어, 미디어 컨텐츠의 기간은 길이가 10 초와 60 초 사이인 시간적인 길이에 대응할 수도 있다.
서버 (104) 는 기간들의 각각에 대한 다수의 표현들을 저장할 수도 있다. 표현들의 각각은 클라이언트 디바이스들의 다양한 코딩 및/또는 렌더링 능력들을 수용하는 것 및 다양한 비트 레이트들에서 코딩하는 것과 같은, 특정한 특성들을 가질 수도 있다. 서버 디바이스 (104) 는 공통의 코딩 및 렌더링 특성들, 그러나 상이한 비트 레이트들을 갖는 표현들의 세트를 저장할 수도 있고, 여기서, 이러한 표현들의 세트는 적응 세트 (adaptation set) 를 형성할 수도 있다. 적응 세트의 표현들은 다양한 비트 레이트들에서 코딩될 수도 있다. 예를 들어, 미디어 컨텐츠의 기간의 제 1 표현은 3.0 Mbps 의 비트 레이트에서 코딩될 수도 있다. 이 예에서, 기간의 제 2 표현은 1.5 Mbps 의 비트 레이트에서 코딩될 수도 있다. 이 예에서, 기간의 제 3 표현은 초당 500 킬로비트들 (kilobit per second; Kbps) 에서 코딩될 수도 있다.
표현들의 각각은 하나 이상의 세그먼트들로 분할된다. 표현의 세그먼트들의 각각은 표현의 상이한 시간적인 섹션에 대응한다. 다양한 예들에서, 세그먼트들은 다양한 시간적인 길이들을 갖는 시간적인 섹션들에 대응할 수 있다. 예를 들어, 표현의 세그먼트들의 각각은 대략 2 초의 재생 지속기간 (playback duration) 들을 갖는 표현의 시간적인 섹션에 대응할 수 있다. 다른 예들에서는, 세그먼트들 및 기간들이 더 짧거나 더 긴 시간적인 재생 지속기간들을 가질 수 있다.
세그먼트들의 각각은 미디어 컨텐츠의 코딩된 샘플들의 시퀀스를 나타내는 데이터를 포함할 수도 있다. 세그먼트에 대응하는 시간적인 섹션은 세그먼트에 의해 나타내어지는 코딩된 샘플들의 시퀀스를 포함한다. 예를 들어, 세그먼트들의 각각은 프레임 (frame) 들, 슬라이스 (slice) 들, 픽처 (picture) 들의 그룹들, 또는 비디오 데이터의 다른 코딩된 단위들의 시퀀스를 나타낼 수 있다. 이 예에서, 비디오의 프레임들이 0 으로부터 시작하는 프레임 번호 값들에 따라 인덱싱 (indexing) 되는 경우, 비디오의 제 1 세그먼트는 프레임 번호들 0 내지 74 를 나타낼 수 있고, 비디오의 제 2 세그먼트는 프레임 번호들 75 내지 149 를 나타낼 수 있고, 비디오의 제 3 세그먼트는 프레임 번호들 150 내지 224 를 나타낼 수 있으며, 이하 등등과 같다. 또 다른 예에서는, 미디어 컨텐츠가 오디오 스트림을 포함하는 경우, 세그먼트들의 각각은 오디오 샘플들의 시퀀스를 나타낼 수 있다. 클라이언트 디바이스 (102) 는 세그먼트에 의해 나타내어지는 샘플들의 시퀀스를 재생하기 위하여 세그먼트 내의 데이터를 이용할 수 있다.
미디어 컨텐츠가 비디오 데이터를 포함하는 예들에서는, 세그먼트들의 각각은 코딩된 네트워크 추상화 계층 (network abstraction layer; NAL) 유닛들의 시퀀스 내에 포함될 수 있다. NAL 유닛들은 디코딩될 때에 비디오 프레임들을 형성한다. 프레임들의 각각은 정지 이미지 (still image) 를 포함할 수 있다. 클라이언트 디바이스 (102) 가 비디오를 사용자 (108) 에게 제시할 때, 클라이언트 디바이스 (102) 는 프레임들을 사용자 (108) 에게 급속히 연속적으로 (예를 들어, 초당 25 프레임들 (frame per second; fps) 로 디스플레이한다. 클라이언트 디바이스 (102) 가 프레임들을 급속히 연속적으로 디스플레이할 때, 사용자 (108) 는 프레임들 내의 객체들이 움직이고 있는 것으로 인지할 수도 있다. 미디어 컨텐츠가 오디오 스트림을 포함하는 예들에서는, 미디어 컨텐츠가 오디오 샘플들의 시퀀스를 포함할 수도 있다. 클라이언트 디바이스 (102) 가 오디오 스트림을 제시할 때, 클라이언트 디바이스 (102) 는 오디오 샘플들을 음파 (sound wave) 들로 변환할 수도 있다.
DASH 의 기술들에 따르면, 멀티미디어 컨텐츠의 기간의 세그먼트들은 시간적으로 정렬될 수도 있지만, 필수적인 것은 아니다. 세그먼트들이 기간 내에 시간적으로 정렬될 때, 기간에 대한 표현들의 각각은 기간 내의 동일한 시간적인 섹션들에 대응하는 세그먼트들을 포함할 수도 있다. 즉, 세그먼트들이 시간적으로 정렬될 때, 기간에 대한 각각의 표현의 n 번째 세그먼트는 동일한 시간적인 섹션에 대응할 수도 있다. 상이한 표현들의 세그먼트들이 시간적으로 정렬될 수도 있다. 예를 들어, 미디어 컨텐츠는, 2 개의 표현들 X 및 Y 에 대하여, m 이 n 과 동일하지 않을 때, X 의 m 번째 세그먼트가 Y 의 n 번째 세그먼트와 중첩할 수 있는지를 표시하는 세그먼트 정렬 플래그 (segment alignment flag) 를 포함할 수도 있다.
설명의 용이함을 위하여, 이 개시물은 미디어 컨텐츠의 동일한 시간적인 섹션을 나타내는 세그먼트들을 지칭하기 위하여 용어 "세그먼트 그룹 (segment group)" 을 이용한다. 미디어 컨텐츠의 상이한 시간적인 섹션들에 대응하는 세그먼트들은 상이한 세그먼트 그룹들 내에 있다. 즉, 기간의 세그먼트들이 시간적으로 정렬될 때, 세그먼트 그룹은 멀티미디어 컨텐츠의 기간에 대한 각각의 표현의 n 번째 세그먼트를 포함할 수도 있다.
이 개시물의 기술들에 따르면, 미디어 컨텐츠의 세그먼트들, 세그먼트 그룹들, 또는 시간적인 섹션들의 각각은 우선순위 값과 연관된다. 서버 디바이스 (104) 는 우선순위 값들을 미디어 컨텐츠의 세그먼트들, 세그먼트 그룹들, 또는 시간적인 섹션들에 배정할 수도 있다. 서버 디바이스 (104) 는 세그먼트들 또는 세그먼트 그룹들에 대한 우선순위 값들을 표시하는 정보를 포함하는, 매니페스트 파일, 세그먼트 인덱스 박스 (segment index box), 또는 코딩된 미디어 스트림 내의 또 다른 메타데이터 박스와 같은 데이터 구조를 제공할 수도 있다. 다양한 예들에서는, 세그먼트들이 다양한 방식들로 우선순위 값들과 연관된다. 예를 들어, 별개의 우선순위 값들이 각각의 표현의 각각의 세그먼트에 배정될 수 있다. 또 다른 예에서는, 별개의 우선순위 값들이 미디어 컨텐츠의 각각의 세그먼트 그룹 또는 시간적인 섹션에 배정될 수 있다. 이 예에서는, 주어진 세그먼트 그룹 내의 세그먼트들의 각각 (즉, 미디어 컨텐츠 내의 주어진 시간적인 섹션을 나타내는 세그먼트들의 각각) 은 동일한 우선순위 값과 연관될 수도 있다.
우선순위 값들은 특정한 시간적인 섹션에서 미디어 컨텐츠의 데이터의 높은 품질의 버전 (version) 을 취출 (retrieve) 하는 상대적인 중요도를 일반적으로 표시할 수도 있다. 예를 들어, 높은 우선순위 값은, 대응하는 시간적인 섹션에 대하여, 클라이언트 디바이스 (102) 가 시간적인 섹션에 대한 상대적으로 높은 품질의 버전 (예를 들어, 상대적으로 높은 비트 레이트 표현으로부터의 세그먼트) 을 취출하는 것을 시도해야 함을 표시할 수도 있다. 또 다른 예로서, 낮은 우선순위 값은, 대응하는 시간적인 섹션에 대하여, 클라이언트 디바이스 (102) 가 시간적인 섹션에 대한 데이터의, 더욱 대역폭-효율적이지만 더 낮은 품질의 버전을 취출함으로써 사용자 경험에 대한 많은 열화 (degradation) 를 경험하지 않을 것임을 표시할 수도 있다. 이러한 방식으로, 상대적으로 더 높은 비트 레이트 표현들로부터 적어도 일부의 세그먼트들을 취출하기에 충분한 이용가능한 대역폭이 있지만, 가장 높은 비트 레이트 표현으로부터 모든 세그먼트들을 취출하기에 충분한 이용가능한 대역폭은 없는 상황들에서, 우선순위 값들은 클라이언트 디바이스 (102) 가 미디어 컨텐츠의 표현들로부터 세그먼트들을 선택하기 위해 이용할 수도 있는 정보를 제공할 수도 있다.
클라이언트 디바이스 (102) 는 예를 들어, 미디어 컨텐츠에 대한 매니페스트 파일을 취출함으로써, 세그먼트들과 연관된 우선순위 값들을 표시하는 정보를 수신할 수도 있다. 또한, 클라이언트 디바이스 (102) 는 예를 들어, 미디어 컨텐츠에 대한 매니페스트 파일을 취출함으로써, 세그먼트들의 비트 레이트들을 표시하는 정보를 수신할 수도 있다. 추후에, 클라이언트 디바이스 (102) 는 미디어 컨텐츠의 각각의 기간에서 각각의 세그먼트 그룹에 대한 세그먼트들을 선택하는 선택 동작을 수행할 수도 있다. 선택 동작 동안, 클라이언트 디바이스 (102) 는 클라이언트 디바이스 (102) 가 서버 (104) 로부터 세그먼트들을 수신할 수 있도록 하는 대역폭을 추정할 수도 있다. 또한, 선택 동작 동안, 클라이언트 디바이스 (102) 는 세그먼트들 및/또는 세그먼트 그룹들에 대해 연관된 우선순위 값들 및 추정된 대역폭에 기초하여 세그먼트들을 선택할 수도 있다. 일부 예들에서는, 클라이언트 디바이스 (102) 가 추정된 대역폭, 세그먼트들과 연관된 우선순위 값들, 및 추가적으로 재생 버퍼 내의 비디오 데이터의 현재의 재생 지속기간에 기초하여 세그먼트들을 선택할 수도 있다. 예를 들어, 클라이언트 디바이스 (102) 는 업커밍 시간 기간에 대한 세그먼트 조합을 선택할 수도 있다. 이 예에서, 세그먼트 조합은 업커밍 시간 기간 내의 각각의 세그먼트 그룹으로부터의 하나의 세그먼트를 포함할 수도 있다. 이 예에서, 클라이언트 디바이스 (102) 는, 선택된 세그먼트들의 누적 비트 레이트가 추정된 대역폭보다 실질적으로 크지 않도록, 세그먼트 조합에서 세그먼트들을 선택할 수도 있다. 또 다른 예에서, 클라이언트 디바이스 (102) 는, 선택된 세그먼트들에 대한 추정된 전송 시간이 선택된 세그먼트들의 재생 지속기간과 재생 버퍼 내의 비디오 데이터의 현재의 재생 지속기간의 합보다 작거나 동일하도록, 세그먼트 조합 내의 세그먼트들을 선택할 수도 있다. 이 예에서, 선택된 세그먼트들에 대한 추정된 전송 시간은 선택된 센그먼트들 내의 비트들의 총 수와, 추정된 대역폭 또는 다른 추정된 스루풋 (throughput) 에 기초할 수도 있다. 또한, 이 예에서는, 클라이언트 디바이스 (102) 가 업커밍 시간 기간의 세그먼트 그룹들 내의 세그먼트들의 우선순위 값들에 기초하여 세그먼트들을 선택할 수도 있다. 추정된 대역폭은 서버 디바이스 (104) 가 데이터를 클라이언트 디바이스 (102) 에 제공할 수 있도록 하는 대역폭의 추정치일 수도 있다.
추정된 대역폭, 우선순위 값들, 및 일부 예들에서는, 재생 버퍼 내의 비디오 데이터의 현재의 재생 지속기간에 기초하여 세그먼트들을 선택함으로써, 클라이언트 디바이스 (102) 는 이용가능한 대역폭과 비교되는 표현에 대한 비트 레이트에만 기초하여 오직 하나의 표현을 단지 선택하는 것에 비해, 추정된 대역폭을 고려해볼 때, 개선된 사용자 경험을 제공하는 세그먼트들을 선택할 수 있을 수도 있다. 이 개시물의 다른 곳에서 설명된 바와 같이, 클라이언트 디바이스 (102) 는 우선순위 값들을 이용하여 세그먼트들을 선택할 수 있고 추정된 대역폭을 다양한 방식들로 발생할 수 있다.
클라이언트 디바이스 (102) 는 적응적 스트리밍 네트워크 프로토콜에 따라 선택된 세그먼트들을 요청할 수도 있다. 적응적 스트리밍 네트워크 프로토콜은 선택된 세그먼트들의 비트 레이트들을 적응적으로 변화시키는 것을 허용할 수도 있다. 다양한 예들에서는, 클라이언트 디바이스 (102) 가 선택된 세그먼트들을 다양한 방식들로 요청할 수도 있다. 예를 들어, 클라이언트 디바이스 (102) 는 세그먼트 요청 메시지들을 서버 디바이스 (104) 로 전송함으로써 선택된 세그먼트들을 요청할 수 있다. 세그먼트 요청 메시지들은 HTTP/1.1 (RFC 2616) 에서 특정된 바와 같이 GET 또는 부분적인 GET 요청들을 포함할 수도 있다. 클라이언트 디바이스 (102) 는 GET 요청을 이용하여 주어진 범용 자원 로케이터 (URL) 또는 범용 자원 명칭 (uniform resource name; URN) 과 연관된 전체 파일을 취출할 수도 있다. 클라이언트 디바이스가 요청에 의해 특정된 파일의, 부분적인 GET 요청에서 특정된 바이트 범위에 대응하는 파일의 연속적인 수의 바이트들을 취출하기 위하여, GET 요청에 대한 입력 파라미터로서 바이트 범위를 특정할 수도 있다는 것을 제외하고는, 부분적인 GET 요청은 GET 요청과 유사할 수도 있다. 따라서, 클라이언트 디바이스 (102) 가 세그먼트의 하나 이상의 개별적인 무비 프래그먼트 (movie fragment) 들을 취출하기 위하여 부분적인 GET 요청을 제출할 수도 있기 때문에, 네트워크 스트리밍을 위하여 무비 프래그먼트가 제공될 수도 있다.
클라이언트 디바이스 (102) 가 선택된 세그먼트들을 요청할 때, 서버 디바이스 (104) 는 선택된 세그먼트들의 복사본 (copy) 들을 클라이언트 디바이스 (102) 로 전송할 수도 있다. 클라이언트 디바이스 (102) 가 세그먼트의 복사본을 수신할 때, 클라이언트 디바이스 (102) 는 세그먼트에 의해 나타내어지는 샘플들을 발생하기 위하여 세그먼트의 복사본을 디코딩 및 렌더링할 수도 있다. 다음으로, 클라이언트 디바이스 (102) 는 샘플들을 출력할 수 있다. 예를 들어, 미디어 컨텐츠가 오디오 스트림을 포함할 경우, 클라이언트 디바이스 (102) 는 샘플들을 음파로 변환함으로써 샘플들을 출력할 수 있다. 마찬가지로, 미디어 컨텐츠가 비디오 데이터를 포함할 경우, 클라이언트 디바이스 (102) 는 특정한 프레임 레이트에서 샘플들을 재구성된 픽처들로서 출력할 수도 있다. 이러한 방식으로, 세그먼트 요청 메시지들을 전송하고 세그먼트 요청 메시지들에 응답하여 수신된 세그먼트들을 프로세싱함으로써, 클라이언트 디바이스 (102) 는 서버 디바이스 (104) 로부터 미디어 컨텐츠의 데이터를 취출할 수도 있다. 또한, 세그먼트 요청 메시지들을 시간에 걸쳐 주기적으로 전송함으로써, 클라이언트 디바이스 (102) 는 서버 디바이스 (104) 로부터 미디어 컨텐츠의 데이터를 스트리밍할 수도 있다.
따라서, 이 개시물의 기술들은 예를 들어, HTTP 상에서의 동적 적응적 스트리밍 (DASH) 에 따라, HTTP 스트리밍과 같은 네트워크 스트리밍 프로토콜들에 적용가능할 수도 있다. DASH 를 이용하여 데이터를 스트리밍하는 예에서는, 멀티미디어 컨텐츠의 비디오 및/또는 오디오 데이터에 대한 다수의 표현들이 있을 수도 있다. 이러한 표현들의 매니페스트는 미디어 프리젠테이션 디스크립션 (Media Presentation Description; MPD) 데이터 구조에서 정의될 수도 있다. 미디어 프리젠테이션은 클라이언트 디바이스 (102) 와 같은 HTTP 스트리밍 클라이언트 디바이스에 의해 액세스 가능한 구조화된 데이터의 집합에 대응할 수도 있다. HTTP 스트리밍 클라이언트 디바이스는 스트리밍 서비스를 클라이언트 디바이스의 사용자에게 제시하기 위하여 미디어 데이터 정보를 요청 및 다운로딩할 수도 있다. 미디어 프리젠테이션은 MPD 의 업데이트들을 포함할 수도 있는 MPD 데이터 구조에서 설명될 수도 있다.
미디어 컨텐츠는 하나 이상의 기간들의 시퀀스를 포함할 수도 있다. 기간들은 MPD 에서 Period 요소에 의해 정의될 수도 있다. 각각의 기간은 MPD 에서 속성 (attribute) start 를 가질 수도 있다. MPD 는 각각의 기간에 대한 start 속성 및 availableStartTime 속성을 포함할 수도 있다. 라이브 (live) 서비스들을 위하여, 기간의 start 속성과 MPD 속성 availableStartTime 의 합은 UTC 포맷의 기간의 가용성 시간, 특히 대응하는 기간 내의 각각의 표현의 제 1 미디어 세그먼트를 특정할 수도 있다. 온-디맨드 (on-demand) 서비스들을 위하여, 제 1 기간의 start 속성은 0 일 수도 있다. 임의의 다른 기간에 대하여, start 속성은 제 1 기간의 시작 시간에 대한 대응하는 기간의 시작 시간 사이의 시간 오프셋 (time offset) 을 특정할 수도 있다. 각각의 기간은 다음 기간의 시작까지, 또는 최종 기간의 경우에는 미디어 컨텐츠의 종점까지 연장될 수도 있다. 기간 시작 시간들은 정밀할 수도 있다. 이들은 모든 이전 기간들의 미디어를 플레이 (play) 하는 것으로부터 기인하는 실제의 타이밍을 반영할 수도 있다.
각각의 기간은 동일한 미디어 컨텐츠에 대한 하나 이상의 표현들을 포함할 수도 있다. 표현은 오디오 또는 비디오 데이터의 다수의 대안적인 인코딩된 버전들 중의 하나일 수도 있다. 표현들은 인코딩 유형들에 의해, 예를 들어, 비디오 데이터에 대한 비트 레이트, 해상도, 및/또는 코덱과, 오디오 데이터에 대한 비트 레이트, 언어, 및/또는 코덱에 의해 상이할 수도 있다. 용어 표현은 멀티미디어 컨텐츠의 특정한 기간에 대응하며 특정한 방식으로 인코딩되는 인코딩된 오디오 또는 비디오 데이터의 섹션을 지칭하기 위하여 이용될 수도 있다.
특정한 기간의 표현들은 MPD 내의 그룹 속성에 의해 표시되는 그룹에 배정될 수도 있다. 동일한 그룹 내의 표현들은 대체로 서로에 대한 대안들로서 고려된다. 예를 들어, 특정한 기간에 대한 비디오 데이터의 각각의 표현은 동일한 그룹에 배정될 수도 있어서, 표현들 중의 임의의 것은 대응하는 기간에 대한 멀티미디어 컨텐츠의 비디오 데이터를 디스플레이하기 위한 디코딩을 위해 선택될 수도 있다. 하나의 기간 내에서의 미디어 컨텐츠가, 만약 존재한다면, 그룹 0 으로부터의 어느 하나의 표현에 의해, 또는 일부 예들에서는, 각각의 비-제로 (non-zero) 그룹으로부터의 최대 하나의 표현의 조합에 의해 나타내어질 수도 있다. 기간의 각각의 표현에 대한 타이밍 데이터는 기간의 시작 시간에 대해 표현될 수도 있다.
표현은 하나 이상의 세그먼트들을 포함할 수도 있다. 각각의 표현은 초기화 세그먼트 (initialization segment) 를 포함할 수도 있거나, 표현의 각각의 세그먼트는 자체-초기화 (self-initializing) 할 수도 있다. 초기화 세그먼트가 존재할 때, 초기화 세그먼트는 표현을 액세스하기 위한 초기화 정보를 포함할 수도 있다. 대체로, 초기화 세그먼트는 미디어 데이터를 포함하지 않는다. 세그먼트는 URL, URN, 또는 범용 자원 식별자 (uniform resource identifier; URI) 와 같은 식별자에 의해 고유하게 참조될 수도 있다. MPD 는 각각의 세그먼트에 대한 식별자들을 제공할 수도 있다. 일부 예들에서는, MPD 가 URL, URN, 또는 URI 에 의해 액세스가능한 파일 내에서의 세그먼트에 대한 데이터에 대응할 수도 있는 바이트 범위들을 범위 속성의 형태로 또한 제공할 수도 있다.
H.264/AVC (Advanced Video Coding; 어드밴스드 비디오 코딩) 의 예에서는, 코딩된 비디오 샘플들이 네트워크 추상화 계층 (NAL) 유닛들로 편성되고, 이 유닛들은 비디오 전화, 저장 장치, 브로드캐스트 또는 스트리밍과 같은 애플리케이션들을 어드레싱 (addressing) 하는 "네트워크 친화적 (network friendly)" 비디오 표현을 제공한다. NAL 유닛들은 비디오 코딩 계층 (Video Coding Layer; VCL) NAL 유닛들 및 비-VCL (non-VCL) NAL 유닛들로 분류될 수 있다. VCL 유닛들은 코어 압축 엔진을 포함할 수도 있고, 블록, 매크로블록, 및/또는 슬라이스 레벨 데이터를 포함할 수도 있다. 다른 NAL 유닛들은 비-VCL NAL 유닛들일 수도 있다. 일부 예들에서는, 1 차 코딩된 픽처로서 통상적으로 제시되는, 일 시간 인스턴스에서 코딩된 픽처가 하나 이상의 NAL 유닛들을 포함할 수도 있는 액세스 유닛 내에 포함될 수도 있다.
비-VCL NAL 유닛들은 그 중에서도, 파라미터 세트 NAL 유닛들 및 보충 강화정보 (supplemental enhancement information; SEI) NAL 유닛들을 포함할 수도 있다. 파라미터 세트들은 (시퀀스 파라미터 세트 (sequence parameter set; SPS) 들 내의) 시퀀스-레벨 헤더 정보 및 (픽처 파라미터 세트 (picture parameter set; PPS) 들 내의) 픽처-레벨 헤더 정보를 포함할 수도 있다. 파라미터 세트들 (예를 들어, PPS 및 SPS) 에 의해, 드물게 변화하는 정보는 각각의 시퀀스 또는 픽처에 대해 반복될 필요가 없고, 이에 따라 코딩 효율이 개선될 수도 있다. 또한, 파라미터 세트들의 이용은 중요한 헤더 정보의 대역외 (out-of-band) 송신을 가능하게 할 수도 있고, 에러 복원을 위한 중복 송신들에 대한 필요성을 회피할 수도 있다. 대역외 송신의 예들에서는, 파라미터 세트 NAL 유닛들이 SEI NAL 유닛들과 같은 다른 NAL 유닛들과는 상이한 채널 상에서 송신될 수도 있다.
SEI NAL 유닛들은 SEI 메시지들을 포함할 수도 있다. SEI 메시지들은 VCL NAL 유닛들로부터의 코딩된 픽처들을 디코딩하기 위해 필수적인 것은 아닌 정보를 포함할 수도 있지만, 디코딩, 디스플레이, 에러 복원, 및 다른 목적들과 관련된 프로세스들을 보조할 수도 있다. SEI 메시지들은 비-VCL NAL 유닛들 내에 포함될 수도 있다. SEI 메시지들은 일부 표현 사양들의 규범 부분이며, 따라서 표준 호환 디코더 구현을 위하여 항상 의무적인 것은 아니다. SEI 메시지들은 시퀀스 레벨 SEI 메시지들 또는 픽처 레벨 SEI 메시지들일 수도 있다. 일부 시퀀스 레벨 정보는 SVC의 예에서의 확장성 (scalability) 정보 SEI 메시지들 및 MVC 에서의 시청 확장성 정보 SEI 메시지들과 같은, SEI 메시지들 내에 포함될 수도 있다. 이 예의 SEI 메시지들은 예를 들어, 동작점들의 추출 및 동작점들의 특성들에 대한 정보를 전달할 수도 있다.
각각의 표현은 하나 이상의 미디어 컴포넌트 (component) 들을 포함할 수도 있고, 여기서 각각의 미디어 컴포넌트는 오디오, 비디오, 또는 (예를 들어, 자막 방송 (closed captioning) 을 위한) 타이밍된 (timed) 테스트와 같은, 하나의 개별적인 미디어 유형의 인코딩된 버전에 대응할 수도 있다. 미디어 컴포넌트들은 하나의 표현 내의 연속 미디어 세그먼트들의 경계들에 걸쳐 시간-연속적일 수도 있다.
많은 비디오 코딩 표준들에서와 마찬가지로, H.264/AVC 는 에러 없는 비트스트림들에 대한 신택스 (syntax), 시맨틱 (semantic) 들, 및 디코딩 프로세스를 정의하며, 이들 중 임의의 것은 특정 프로파일 또는 레벨을 준수한다. H.264/AVC 는 인코더를 특정하지 않지만, 인코더는 발생된 비트스트림들이 디코더에 대해 표준-호환성이 있음을 보장하는 작업이 할당된다. 비디오 코딩 표준들의 문맥에서, "프로파일" 은 알고리즘들, 특징들, 또는 도구들과, 이들에 적용하는 제약들의 서브세트 (subset) 에 대응한다. 예를 들어, H.264 표준에 의해 정의된 바와 같이, "프로파일" 은 H.264 표준에 의해 특정되어 있는 전체 비트스트림 신택스의 서브세트이다. "레벨" 은 픽처들의 해상도, 비트 레이트, 및 블록 프로세싱 레이트와 관련되는, 예를 들어, 디코더 메모리 및 연산과 같은 디코더 자원 소비의 제한들에 대응한다. 프로파일은 profile_idc (프로파일 표시자) 값으로 시그널링될 수도 있는 반면, 레벨은 level_idc (레벨 표시자) 값으로 시그널링될 수도 있다.
예를 들어, H.264 표준은 주어진 프로파일의 신택스에 의해 부과된 한도들 내에서, 디코딩된 픽처들의 특정된 크기와 같은 비트스트림 내의 신택스 요소들에 의해 취해진 값들에 따라 인코더들 및 디코더들의 성능에 있어서 큰 변동을 요구하는 것이 여전히 가능할 수도 있다는 것을 인식한다. H.264 표준은 많은 애플리케이션들에서, 특정한 프로파일 내에서의 신택스의 모든 가상적인 이용들을 다룰 수 있는 디코더를 구현하는 것은 실용적이지도 않고 경제적이지도 않다는 것을 더 인식한다. 따라서, H.264 표준은 "레벨"을 비트스트림 내의 신택스 요소들의 값들에 대해 부과된 제약들의 특정된 세트로서 정의한다. 이 제약들은 값들에 대한 간단한 한계들일 수도 있다. 대안적으로, 이 제약들은 값들의 산술적 조합들 (예를 들어, 픽처 폭 × 픽처 높이 × 초당 디코딩된 픽처들의 수) 에 대한 제약들의 형태를 취할 수도 있다. H.264 표준은 개별적인 구현예들이 각각의 지원된 프로파일에 대해 상이한 레벨을 지원할 수도 있다는 것을 더 규정한다. 따라서, 미디어 컨텐츠의 다양한 표현들은 다양한 디바이스들의 디코더들에 의해 지원되는 비디오 코딩 표준의 다양한 프로파일들 및 레벨들을 설명하기 위하여 제공될 수도 있다.
프로파일을 준수하는 디코더는 프로파일에서 정의된 모든 특징들을 정상적으로 지원한다. 예를 들어, 코딩 특징으로서, B-픽처 코딩은 H.264/AVC 의 베이스라인 프로파일 (baseline profile) 에서는 지원되지 않지만, H.264/AVC 의 다른 프로파일들에서는 지원된다. 레벨을 준수하는 디코더는 레벨에서 정의된 제한들을 넘어서 자원들을 요구하지는 않는 임의의 비트스트림을 디코딩할 수 있어야 한다. 프로파일들 및 레벨들의 정의들은 해독능력을 위해 도움이 될 수도 있다. 예를 들어, 비디오 송신 동안, 한 쌍의 프로파일 및 레벨은 전체 송신 세션에 대해 협상되고 합의될 수도 있다. 더 구체적으로, H.264/AVC 에서, 레벨은 예를 들어, 처리될 필요가 있는 매크로블록 (macroblock) 들 ("블록들" 또는 "MB 들" 이라고도 지칭됨) 의 수, 디코딩된 픽처 버퍼 (decoded picture buffer; DPB) 크기, 코딩된 픽처 버퍼 (coded picture buffer; CPB) 크기, 수직 움직임 벡터 범위, 2 개의 연속 MB 들 당 움직임 벡터들의 최대 수, 및 B-블록이 8×8 화소들 미만의 서브-매크로블록 파티션들을 가질 수 있는지에 대한 제한들을 정의할 수도 있다. 이러한 방식으로, 디코더는 디코더가 멀티미디어 컨텐츠의 특정한 표현과 같은 비트스트림을 적절하게 디코딩할 수 있는지를 결정할 수도 있다.
도 2 는 프레임들 (200A 내지 200P) (총칭하여, "프레임들 (200)") 을 포함하는 일 예의 비디오를 예시하는 개념도이다. 프레임들 (200) 의 각각은 이 예에서 정지 이미지를 포함한다. 클라이언트 디바이스 (102) 가 프레임들 (200) 을 연속적으로 제시할 때, 사용자 (108) 는 프레임들 (200) 내의 객체들이 움직이고 있는 것으로 인지할 수도 있다.
프레임들 (200) 은 샘플 시퀀스들 (202A 내지 202D) (총칭하여, "샘플 시퀀스들 (202)") 에 속한다. 샘플 시퀀스들 (202) 의 각각은 도 2 의 예에서 별개의 행 (row) 으로서 예시되어 있다. 샘플 시퀀스들 (202) 의 각각은 멀티미디어 컨텐츠의 각각의 시간적인 섹션에 대응할 수도 있다. 비디오의 각각의 표현은 샘플 시퀀스 (202A) 를 나타내는 세그먼트, 샘플 시퀀스 (202B) 를 나타내는 세그먼트, 샘플 시퀀스 (202C) 를 나타내는 세그먼트, 및 샘플 시퀀스 (202D) 를 나타내는 세그먼트를 포함할 수도 있다. 도 2 의 예에서, 샘플 시퀀스들 (202) 은 4 개의 프레임들을 각각 포함한다. 독자들은 비디오의 샘플 시퀀스들이 4 개보다 많거나 적은 프레임들을 포함할 수 있다는 것을 이해할 것이다.
비디오의 상이한 세그먼트들은 상이한 유형들의 장면 (scene) 들을 포함할 수 있다. 예를 들어, 도 2 의 예에서는, 비디오가 자전거 경주를 보여준다. 샘플 시퀀스들 (202A 및 202B) 은 자전거의 페달을 밟는 사람의 장면들을 포함한다. 샘플 시퀀스 (202C) 는 경주를 설명하는 책상에 않아 있는 해설자들의 장면을 포함한다. 샘플 시퀀스들 (202D) 은 경주 상에서 맴돌고 있는 헬리콥터로부터 보여지는 것과 같은 경주 장면을 포함한다.
일부 유형들의 장면들에서는, 각각의 프레임이 선행하는 프레임들로부터 거의 변화하지 않는다. 설명의 용이함을 위하여, 이 개시물은 이러한 장면들을 낮은-액션 (low-action) 장면들로서 지칭할 수도 있다. 다른 유형들의 장면들에서는, 각각의 프레임이 선행하는 프레임과는 상당히 상이하다. 설명의 용이함을 위하여, 이 개시물은 이러한 장면들을 높은-액션 (high-action) 장면들로서 지칭할 수도 있다. 도 2 의 예에서, 샘플 시퀀스 (202C) 는 대화하는 해설자들의 상대적으로 정지된 이미지들을 포함하는 낮은-액션 장면을 나타낸다. 결과적으로, 샘플 시퀀스 (202C) 내의 각각의 프레임은 선행하는 프레임으로부터 거의 변화하지 않는다. 대조적으로, 샘플 시퀀스들 (202A 및 202B) 은 자전거의 페달을 밟는 사람의 빠른 페이스의 움직임을 보여주는 높은-액션 장면들을 포함한다. 결과적으로, 샘플 시퀀스들 (202A 및 202B) 내의 각각의 프레임은 선행하는 프레임으로부터 상당히 변화한다.
세그먼트들은 인코딩 포맷을 이용하여 인코딩된 데이터를 포함한다. 예를 들어, 미디어 컨텐츠가 비디오인 경우, 세그먼트들은 H.264/AVC 포맷, VC-2 포맷, MPEG-4 파트 2 포맷, H.263 포맷, 또는 또 다른 비디오 코딩 포맷을 이용하여 인코딩된 데이터를 포함할 수 있다. 이러한 인코딩 포맷들에서는, 높은-액션 장면들 내의 프레임들을 주어진 최대 왜곡 (distortion) 레벨에서 나타내기 위하여, 낮은-액션 장면들 내의 프레임들을 동일한 주어진 최대 왜곡 레벨에서 나타내기 위해 요구될 수도 있는 것보다 더 큰 수의 비트들이 요구될 수도 있다. 다시 말해서, 높은-액션 장면들을 최대 왜곡 레벨에서 제시하기 위하여 더 높은 비트 레이트가 요구될 수도 있는 반면, 낮은-액션 장면들을 동일한 최대 왜곡 레벨에서 제시하기 위해서는 더 낮은 비트 레이트가 충분할 수도 있다. 예를 들어, 샘플 시퀀스들 (202A 및 202B) 내의 높은-액션 장면들을 주어진 최대 왜곡 레벨에서 나타내기 위하여 더 높은 비트 레이트가 요구될 수도 있는 반면, 샘플 시퀀스들 (202C 및 202D) 내의 낮은-액션 장면들을 주어진 최대 왜곡 레벨에서 나타내기 위해서는 더 낮은 비트 레이트들이 충분할 수도 있다.
미디어 컨텐츠가 오디오 스트림인 예들에서는, 세그먼트들이 MP3 포맷, 보비스 (Vorbis) 포맷, 어드밴스드 오디오 코딩 (Advanced Audio Coding; AAC), 윈도우즈 미디어 오디오 (Windows Media Audio; WMA), 디지털 음성 표준 (Digital Speech Standard; DSS), 또는 또 다른 오디오 코딩 포맷을 이용하여 인코딩된 샘플들을 나타낼 수 있다. 이러한 인코딩 포맷들에서는, 많은 주파수들을 나타내는 일련의 샘플들을 나타내기 위하여, 더 적은 주파수들을 나타내는 일련의 샘플들을 나타내기 위해 요구될 수도 있는 것보다 더 큰 수의 비트들이 요구될 수도 있다.
추정된 대역폭은 서버 디바이스 (104) 가 얼마나 많은 데이터를 클라이언트 디바이스 (102) 로 전송할 수 있는지에 대한 상한 (upper limit) 을 나타낼 수 있다. 결과적으로, 대역폭은 재생에 있어서 중단을 야기하지 않으면서 최고 비트 레이트를 갖는 세그먼트들만을 전송할 정도로 충분히 크지 않을 수도 있다. 예를 들어, 주어진 표현 내의 세그먼트들의 각각은 3 초 지속되는 미디어의 시간적인 섹션에 대응할 수 있고, 3.0 Mbps 의 비트 레이트를 가질 수 있다. 이 예에서, 업커밍 시간 기간은 4 개의 세그먼트 그룹들을 포함할 수 있다. 이에 따라, 이 예에서는, 업커밍 시간 기간이 12 초 지속된다. 추정된 대역폭이 1.75 Mbps 인 경우, 이 12 초 동안에 21.0 메가비트 (megabit) 들이 클라이언트 디바이스 (102) 로 전송될 수 있다. 대조적으로, 3.0 Mbps 의 비트 레이트들을 갖는 4 개의 세그먼트들이 전송될 경우, 36.0 메가비트들이 전송될 것이다.
위에서 논의된 바와 같이, 동일한 최대 왜곡 레벨에서 낮은-액션 장면들보다 높은-액션 장면들을 나타내기 위하여 더 높은 비트 레이트들이 요구될 수도 있다. 업커밍 시간 기간과 연관된 시간 동안에는 제한된 양의 데이터만이 전송될 수 있으므로, 클라이언트 디바이스 (102) 는 조합 내에 포함하기 위한 세그먼트들을 선택하기 위하여 세그먼트들에 대한 우선순위 값들 및 추정된 대역폭을 이용할 수 있다. 조합은 높은 비트 레이트들을 갖는 일부 세그먼트들과, 더 낮은 비트 레이트들을 갖는 일부 세그먼트들을 포함할 수 있다. 클라이언트 디바이스 (102) 는 높은-액션 장면들을 나타내는 세그먼트들이 더 높은 비트 레이트들을 가지며 낮은-액션 장면들을 나타내는 세그먼트들이 더 낮은 비트 레이트들을 가지는 조합을 선정하기 위하여 세그먼트들과 연관된 우선순위 값들을 이용할 수 있다. 이러한 방식으로, 조합 내의 세그먼트들에 의해 표현된 프레임들의 전체 왜곡 레벨은 감소될 수 있다.
예를 들어, 클라이언트 디바이스 (102) 는, 그 조합의 세그먼트들의 평균 비트 레이트들이 추정된 대역폭보다 작거나 동일하도록, 업커밍 시간 기간의 세그먼트 그룹들 내의 세그먼트들의 조합을 선택할 수 있다. 또 다른 예에서, 클라이언트 디바이스 (102) 는 재생 버퍼 내에 현재 있는 비디오 데이터의 재생 지속기간에 적어도 부분적으로 기초하여 세그먼트들의 조합을 또한 선택할 수 있다. 이 예에서, 클라이언트 디바이스 (102) 는, 선택된 세그먼트들에 대한 추정된 전송 시간이 선택된 세그먼트들의 재생 지속기간과 재생 버퍼 내의 비디오 데이터의 재생 지속기간의 합보다 작거나 동일하도록, 업커밍 시간 기간의 세그먼트 그룹들 내의 세그먼트들의 조합을 선택할 수 있다.
일부 예들에서는, 클라이언트 디바이스 (102) 가 특정한 상황들에 응답하여 재생 버퍼의 길이를 증가시킬 수 있다. 예를 들어, 클라이언트 디바이스 (102) 가 비디오의 재생을 시작할 때, 높은 품질의 재생을 보장하는 것을 돕기 위하여, 클라이언트 디바이스 (102) 는 비디오의 시작 시에 재생 버퍼의 길이를 증가시킬 수도 있다. 일부 이러한 예들에서, 서버 디바이스 (104) 는 클라이언트 디바이스 (102) 가 재생 버퍼를 증가시키도록 지시하기 위하여 비트스트림 내에 데이터를 포함할 수도 있다. 비디오의 시작 시에 버퍼의 길이를 증가시키는 것은 높은-액션 장면들과 함께 시작하는 비디오들에 대해 특히 유익할 수도 있다.
도 3 은 서버 디바이스 (104) 의 일 예의 구성을 예시하는 블록도이다. 도 3 의 예에서 예시된 바와 같이, 서버 디바이스 (104) 는 데이터 저장 시스템 (300), 세그먼테이션 유닛 (302), 우선순위 유닛 (304), 매니페스트 발생 유닛 (306), 및 서버 애플리케이션 (308) 을 포함할 수도 있다. 일부 다른 예들에서는, 서버 디바이스 (104) 가 도 3 의 예에 예시된 것들에 부가하여 시스템들을 제공할 수도 있다. 다른 예들에서는, 서버 디바이스 (104) 가 도 3 의 예에서 예시된 시스템들의 각각을 제공하지 않는다. 예를 들어, 서버 디바이스 (104) 는 세그먼테이션 유닛 (302), 우선순위 유닛 (304) 또는 매니페스트 발생 유닛 (306) 을 제공하지 않을 수도 있지만, 그 대신에, 멀티미디어 컨텐츠의 발생된 세그먼트들, 멀티미디어 컨텐츠에 대한 매니페스트 파일, 및 서버 디바이스 (104) 외부의 컨텐츠 준비 시스템 또는 컨텐츠 준비 디바이스로부터의 우선순위 값들을 수신할 수도 있다.
도 3 의 예에서 예시된 바와 같이, 데이터 저장 시스템 (300) 은 복수의 세그먼트들 (310) 및 매니페스트 파일 (312) 을 저장할 수도 있다. 일부 예들에서는, 데이터 저장 시스템 (300) 이 세그먼트들 (310) 및 매니페스트 파일 (312) 을 3 세대 파트너쉽 프로젝트 (Third Generation Partnership Project; 3GPP) 파일 포맷으로 저장할 수도 있다. 다른 예들에서는, 데이터 저장 시스템 (300) 이 세그먼트들 (310) 및 매니페스트 파일 (312) 을 다른 방식들로 저장할 수도 있다.
데이터 저장 시스템 (300) 은 세그먼트들 (310) 및 매니페스트 파일 (312) 과 같은 데이터를 저장하는 하나 이상의 컴퓨터 저장 매체들을 포함할 수도 있다. 이 개시물은 매니페스트 파일 (312) 을 "파일"로서 지칭할 수도 있지만, 일부 예들은 매니페스트 파일 (312) 을 파일로서 저장하지 않는다. 예를 들어, 일부 예들에서는, 매니페스트 발생 유닛 (308) 이 매니페스트 파일 (312) 의 데이터를 동적으로 발생한다. 다른 예들에서, 멀티미디어 컨텐츠의 다양한 기간들은, 사전-발생될 수도 있거나, 동적으로 발생될 수도 있거나, 또는 매니페스트 파일의 이전 버전에 대한 관련 업데이트들의 형태로 표시될 수도 있는 상이한 매니페스트 파일 데이터와 연관될 수도 있다. 일부 사례들에서는, 매니페스트 파일 (312) 이 미디어 프리젠테이션 디스크립션 (MPD) 파일이다.
도 3 의 예에서는, 데이터 저장 시스템 (300) 이 서버 디바이스 (104) 의 하우징 내부에 물리적으로 위치되어 있다. 다른 예들에서는, 데이터 저장 시스템 (300) 이 부분적으로 또는 완전히 서버 디바이스 (104) 의 하우징 외부에 있다. 예를 들어, 데이터 저장 시스템 (300) 은 네트워크-연결 저장 (Network-Attached Storage; NAS) 시스템 또는 직접 연결 저장 (Direct Attached Storage; DAS) 시스템의 일부일 수도 있다.
세그먼테이션 유닛 (302) 은 세그먼트들 (310) 을 발생할 수도 있다. 이 개시물의 다른 곳에서 상세하게 설명된 바와 같이, 세그먼테이션 유닛 (302) 의 다양한 예들은 세그먼트들 (310) 을 다양한 방식들로 발생할 수도 있다. 우선순위 유닛 (304) 은 우선순위 값들을 세그먼트들 (310) 과 연관시킬 수도 있다. 이 개시물의 다른 곳에서 상세하게 설명된 바와 같이, 우선순위 유닛 (304) 의 다양한 예들은 우선순위 값들을 세그먼트들 (310) 과 다양한 방식들로 연관시킬 수도 있다. 매니페스트 발생 유닛 (306) 은 매니페스트 파일 (312) 을 발생할 수도 있다. 이 개시물의 다른 곳에서 상세하게 설명된 바와 같이, 매니페스트 발생 유닛 (306) 의 다양한 예들은 매니페스트 파일 (312) 을 다양한 방식들로 발생할 수도 있다. 서버 애플리케이션 (308) 은 클라이언트 디바이스 (102) 와 같은 클라이언트 디바이스들로부터 수신된 요청들에 대해 응답할 수도 있다. 이 개시물의 다른 곳에서 상세하게 설명된 바와 같이, 서버 애플리케이션 (308) 의 다양한 예들은 클라이언트 디바이스 (102) 로부터 수신된 요청들에 대해 다양한 방식들로 응답할 수도 있다.
서버 디바이스 (104) 는 세그먼테이션 유닛 (302), 우선순위 유닛 (304), 매니페스트 발생 유닛 (306), 및 서버 애플리케이션 (308) 을 다양한 방식들로 구현할 수 있다. 예를 들어, 서버 디바이스 (104) 를 구현하는 컴퓨팅 디바이스들의 하나 이상의 프로세싱 유닛들이 특정 명령들을 실행할 때, 서버 디바이스 (104) 는 세그먼테이션 유닛 (302), 우선순위 유닛 (304), 매니페스트 발생 유닛 (306), 및/또는 서버 애플리케이션 (308) 을 구현할 수 있다. 또 다른 예에서, 서버 디바이스 (104) 를 구현하는 컴퓨팅 디바이스들은 서버 디바이스 (104) 가 세그먼테이션 유닛 (302), 우선순위 유닛 (304), 매니페스트 발생 유닛 (306), 및/또는 서버 애플리케이션 (308)을 구현하도록 하는 하나 이상의 ASIC 들을 포함할 수 있다.
세그먼트들 (310) 의 각각은 미디어 컨텐츠 내의 샘플들의 시퀀스를 나타낼 수도 있다. 예를 들어, 미디어 컨텐츠는 비디오 데이터를 포함할 수 있다. 이 예에서, 세그먼트들 (310) 중의 하나는 샘플 시퀀스 (202A) 를 나타낼 수 있고, 세그먼트들 (310) 중의 또 다른 하나는 샘플 시퀀스 (202B) 를 나타낼 수 있으며, 이하 등등과 같다. 또 다른 예에서, 미디어 컨텐츠는 오디오 스트림일 수 있다. 이 예에서, 세그먼트 (310) 중의 하나는 제 1 일련의 오디오 샘플들을 나타낼 수 있고, 세그먼트들 (310) 중의 또 다른 하나는 제 2 일련의 오디오 샘플들을 나타낼 수 있으며, 이하 등등과 같다.
세그먼트들 (310) 은 복수의 세그먼트 그룹들 (314A 내지 314N) (총칭하여, "세그먼트 그룹들 (314)") 에 속할 수도 있다. 세그먼트 그룹들 (314) 중의 하나 내의 세그먼트들 (310) 의 각각은 미디어 컨텐츠의 동일한 샘플들을 나타낼 수도 있다. 예를 들어, 미디어 컨텐츠가 도 2 의 비디오인 경우, 세그먼트 그룹 (314A) 내의 세그먼트들 (310) 의 각각은 샘플 시퀀스 (202A) 내의 프레임들을 나타낼 수 있고, 세그먼트 그룹 (314N) 내의 세그먼트들 (310) 의 각각은 샘플 시퀀스 (202B) 내의 프레임들을 나타낼 수 있으며, 이하 등등과 같다.
세그먼트들 (310) 은 복수의 표현들 (316A 내지 316N) (총칭하여, "표현들 (316)") 에 속할 수도 있다. 표현들 (316) 의 각각은 상이한 비트 레이트와 연관될 수도 있다. 주어진 표현 내의 세그먼트들 (310) 은 주어진 표현과 연관된 비트 레이트에서 미디어 컨텐츠의 샘플들을 나타낼 수도 있다. 예를 들어, 표현 (316A) 내의 세그먼트들 (310) 은 3.0 Mbps 의 비트 레이트에서 미디어 컨텐츠를 나타낼 수 있다. 이 예에서, 표현 (316N) 내의 세그먼트들 (310) 은 500 Kbps 의 비트 레이트에서 미디어 컨텐츠를 나타낼 수 있다.
표현들 (316) 의 각각은 상이한 비트 레이트와 연관될 수도 있으므로, 세그먼트 그룹들 (314) 각각 내의 세그먼트들은 상이한 비트 레이트들을 가질 수도 있다. 예를 들어, 세그먼트 그룹 (314A) 내의 제 1 세그먼트는 초당 3.0 메가비트들 (Mbps) 의 비트 레이트를 가질 수 있고, 세그먼트 그룹 (314A) 내의 제 2 세그먼트는 1.0 Mbps 의 비트 레이트를 가질 수 있고, 세그먼트 그룹 (314A) 내의 제 3 세그먼트는 초당 500 킬로비트들 (Kbps) 의 비트 레이트를 가질 수 있으며, 이하 등등과 같다.
세그먼트의 비트 레이트는 재생 시간의 단위 동안에 제시된 미디어 컨텐츠의 시간적인 섹션을 나타내기 위하여 세그먼트가 얼마나 많은 비트들을 이용하는지를 표시할 수도 있다. 예를 들어, 미디어 컨텐츠의 표현이 25 fps 의 프레임 레이트를 가질 경우, 표현의 세그먼트의 비트 레이트는 25 프레임들을 나타내기 위하여 세그먼트가 얼마나 많은 비트들을 이용하는지를 표시할 수 있다.
이 개시물의 다른 곳에서 상세하게 설명된 바와 같이, 클라이언트 디바이스 (102) 는 세그먼트 그룹들 (314) 의 각각으로부터 하나의 세그먼트를 선택할 수도 있다. 예를 들어, 제 1 세그먼트 그룹은 세그먼트들 A, B 및 C 를 포함할 수 있고; 제 2 세그먼트 그룹은 세그먼트들 D, E, 및 F 를 포함할 수 있고; 제 3 세그먼트 그룹은 세그먼트들 G, H, 및 I 를 포함할 수 있다. 이 예에서, 클라이언트 디바이스 (102) 는 제 1 세그먼트 그룹으로부터 세그먼트 B 를, 제 2 세그먼트 그룹으로부터 세그먼트 D 를, 그리고 제 3 세그먼트 그룹으로부터 세그먼트 G 를 선택할 수 있다.
일부 예들에서, 매니페스트 파일 (312) 은 세그먼트들 (310) 과 연관된 우선순위 값들을 나타내는 정보를 포함할 수도 있다. 이 개시물의 다른 곳에서 상세하게 설명된 바와 같이, 클라이언트 디바이스 (102) 는 매니페스트 파일 (312) 의 복사본 (copy) 을 수신할 수도 있다. 일부 예들에서는, 클라이언트 디바이스 (102) 가 세그먼트 그룹들 (314) 의 각각으로부터 하나의 세그먼트를 선택하기 위하여, 매니페스트 파일 (312) 에 의해 특정된 우선순위 값들 및 추정된 대역폭을 이용할 수도 있다.
대안적으로, 표현들 (316) 자체는 세그먼트들 (310) 과 연관된 우선순위 값들을 나타내는 정보를 포함할 수도 있다. 예를 들어, 표현들의 세그먼트 인덱스 (또는 "SIDX") 박스는 서브-세그먼트 스위칭 (sub-segment switching) 을 허용하는 대응하는 표현의 세그먼트들에 대한 인덱스들에 부가하여, 대응하는 세그먼트들에 대한 우선순위 값들을 제공할 수도 있다. 이러한 방식으로, 표현들 (316) 의 각각은 표현의 세그먼트들에 대한 우선순위 값들을 표시하는 정보를 포함하는 세그먼트 인덱스 박스를 포함할 수도 있다.
여전히 또 다른 예로서, 우선순위 유닛 (304) 은 우선순위 값들에 대응하는 힌트 정보를 제공하는 메타데이터 트랙 (metadata track) 내의 우선순위 값들을 표시하는 정보를 제공할 수도 있다. ISO 기반 미디어 파일 포맷 및 그 확장물들 (예를 들어, 3GPP) 에 따르면, 메타데이터는 마치 비디오 트랙과 같이, 파일 포맷 샘플들의 시퀀스로서 구조화될 수 있다. 이러한 트랙은 메타데이터 트랙으로서 지칭될 수도 있다. 각각의 메타데이터 샘플은 메타데이터 스테이트먼트 (metadata statement) 로서 구조화될 수도 있다. 대응하는 파일-포맷 샘플 또는 그 구성 샘플들에 대해 문의될 수 있는 다양한 질문들에 대응하는 다양한 종류들의 스테이트먼트들이 있다.
도 4 는 취출을 위하여 미디어 컨텐츠의 데이터를 준비하기 위한 일 예의 동작 (400) 을 예시하는 흐름도이다. 서버 디바이스 (104) 가 동작 (400) 을 시작한 후, 서버 디바이스 (104) 는 미디어 컨텐츠의 원래의 버전을 수신할 수도 있다 (402). 서버 디바이스 (104) 는 미디어 컨텐츠의 원래 버전을 다양한 방식들로 수신할 수 있다. 예를 들어, 서버 디바이스 (104) 는 서버 디바이스 (104) 에 접속된 비디오 카메라 또는 마이크로폰 (microphone) 으로부터 미디어 컨텐츠의 원래의 버전을 원시 (raw) 오디오 및/또는 비디오 데이터로서 수신할 수 있다. 또 다른 예에서, 개인은 미디어 컨텐츠의 원래의 버전을 서버 디바이스 (104) 에 업로딩 (uploading) 하기 위하여 컴퓨팅 디바이스를 이용할 수 있다. 이 예에서, 미디어 컨텐츠의 원래의 버전은 주어진 포맷으로 이미 인코딩될 수 있다. 또 다른 예에서, 미디어 설계자는 미디어 컨텐츠의 원래의 버전을 생성하기 위하여 서버 디바이스 (104) 에서 실행되는 하나 이상의 소프트웨어 애플리케이션들을 이용할 수 있다. 서버 디바이스 (104) 에 의해 수행되는 것으로서 설명되었지만, 다른 디바이스들이 도 4 의 방법을 실행하도록 또한 구성될 수도 있다는 것을 이해해야 한다. 예를 들어, 컨텐츠 준비 디바이스 또는 컨텐츠 준비 시스템은 도 4 에 대하여 설명된 방법을 실질적으로 준수하는 방법을 수행하도록 구성될 수도 있다.
미디어 컨텐츠의 원래의 버전을 수신한 후, 세그먼테이션 유닛 (302) 은 세그먼트들 (310) 을 발생할 수도 있다 (404). 다양한 예들에서, 세그먼테이션 유닛 (302) 은 세그먼트들 (310) 을 다양한 방식들로 발생할 수 있다. 예를 들어, 세그먼테이션 유닛 (302) 은 먼저, 미디어 컨텐츠의 원래의 버전을 하나 이상의 기간들로 분할 수 있다. 다음으로, 세그먼테이션 유닛 (302) 은 기간들의 각각에 대하여 NAL 유닛들의 다수의 세트들을 발생할 수도 있다. 기간에 대한 NAL 유닛들의 각각의 세트는 기간의 상이한 표현에 대응할 수도 있다. 기간에 대한 NAL 유닛들은 기간 내에서 프레임들 또는 다른 샘플들을 나타내는 인코딩된 비디오 데이터를 포함할 수도 있다. 기간의 NAL 유닛들의 상이한 세트들은 상이한 특성들을 가질 수도 있다. 예를 들어, NAL 유닛들의 상이한 세트들 내의 비디오 데이터는 상이한 비트 레이트들에서 코딩될 수 있다. 다음으로, NAL 유닛들의 각각의 세트에 대하여, 세그먼테이션 유닛 (302) 은 기간 내의 프레임들 또는 샘플들의 시퀀스를 함께 나타내는 비디오 데이터를 포함하는 NAL 유닛들을 캡슐화 (encapsulate) 함으로써 세그먼트들 (310) 을 발생할 수도 있다. 이러한 방식으로, 세그먼테이션 유닛 (302) 은 표현들 (316) 의 각각에 대한 세그먼트들 (310) 을 발생할 수 있다. 미디어 컨텐츠의 원래의 버전이 원시 비디오 또는 오디오 데이터를 포함하는 일부 예들에서는, 세그먼테이션 유닛 (302) 이 원시 비디오 또는 오디오 데이터로부터 인코딩된 비디오 데이터를 발생할 수도 있다.
세그먼테이션 유닛 (302) 은, ISO 기반 미디어 파일 포맷의 확장물인, ISO 기반 미디어 파일 포맷 또는 3GPP 파일 포맷과 같은 파일 캡슐화 표준에 따라 세그먼트들 (310) 을 발생할 수도 있다. ISO 기반 미디어 파일 포맷은 미디어의 교환, 관리, 편집, 및 프리젠테이션을 용이하게 하는 유연하고 확장가능한 포맷으로 프리젠테이션을 위한 타이밍된 미디어 정보를 포함하도록 설계된다. ISO 기반 미디어 파일 포맷 (ISO/IEC 14496-12:2004) 은 시간-기반 미디어 파일들에 대한 일반적인 구조를 정의하는 MPEG-4 파트-12에서 특정된다. ISO 기반 미디어 파일 포맷은 H.264/MPEG-4 AVC 비디오 압축에 대한 지원이 정의된 AVC 파일 포맷 (ISO/IEC 14496-15), 3GPP 파일 포맷, SVC 파일 포맷, 및 MVC 파일 포맷과 같은 패밀리에서 다른 파일 포맷들에 대한 기초로서 이용된다. 3GPP 파일 포맷 및 MVC 파일 포맷은 AVC 파일 포맷의 확장물들이다. ISO 기반 미디어 파일 포맷은 시청각 (audio-visual) 표현들과 같은, 미디어 데이터의 타이밍된 시퀀스들에 대한 타이밍, 구조, 및 미디어 정보를 포함한다. 파일 구조는 객체-지향적 (object-oriented) 일 수도 있다. 파일은 기본 객체들로 매우 간단하게 분해될 수 있고, 객체들의 구조는 그 유형으로부터 암시될 수도 있다.
ISO 기반 미디어 파일 포맷 (및 그 확장물들) 을 준수하는 파일들은 "박스 (box) 들" 이라고 불리는 일련의 객체들로서 형성될 수도 있다. ISO 기반 미디어 파일 포맷의 데이터는 박스들 내에 포함될 수도 있어서, 다른 데이터는 파일 내부에 포함될 필요가 없고 박스들의 외부의 데이터가 파일 내에 있을 필요가 없다. 이것은 특정 파일 포맷에 의해 요구된 임의의 초기 서명 (signature) 을 포함한다. "박스" 는 고유한 유형 식별자 및 길이에 의해 정의되는 객체-지향적 빌딩 블록 (building block) 일 수도 있다. 전형적으로, 세그먼트는 하나의 파일 내에 포함된다. 무비 컨테이너 (무비 박스) 는 파일의 다른 박스들에 대한 메타데이터를 포함할 수도 있고, 비디오 및 오디오 프레임들은 미디어 데이터 컨테이너들, 미디어 프래그먼트들, 또는 다른 요소들 내에 포함될 수도 있고, 다른 파일들에서 제공될 수도 있다. 일부 예들에서는, 세그먼트들 (310) 중의 하나 이상이, 스트림 액세스 포인트들에 대응할 수도 있으며 표현의 추후의 세그먼트들에 대한 초기화 데이터를 포함할 수도 있는 초기화 세그먼트 (initialization segment) 들을 포함할 수도 있다. 대안적으로, 세그먼트들 (310) 은 자체 초기화할 수도 있다.
세그먼테이션 유닛 (302) 은 세그먼트들 (310) 을 데이터 저장 시스템 (300) 내에 저장할 수도 있다 (406). 세그먼테이션 유닛 (302) 의 다양한 예들은 세그먼트들 (310) 을 다양한 방식들로 저장할 수도 있다. 예를 들어, 세그먼테이션 유닛 (302) 은 세그먼트들 (310) 을 별개의 파일들로서 저장할 수 있다. 또 다른 예에서는, 세그먼테이션 유닛 (302) 이 세그먼트들 (310) 을 하나 이상의 관계형 데이터베이스 (relational database) 들 내의 2 진 대용량 객체 (binary large object; BLOB) 들로서 저장할 수 있다.
세그먼테이션 유닛 (302) 이 세그먼트들 (310) 을 발생 및 저장한 후, 우선순위 유닛 (304) 은 우선순위 값들을 세그먼트들 (310) 과 연관시킬 수도 있다 (408). 우선순위 유닛 (304) 은 우선순위 값들을 세그먼트들 (310) 과 다양한 방식들로 연관시킬 수 있다. 예를 들어, 우선순위 유닛 (304) 은 별개의 우선순위 값들을 세그먼트들 (310) 의 각각에 배정함으로써 우선순위 값들을 세그먼트들 (310) 과 연관시킬 수 있다. 또 다른 예에서는, 우선순위 유닛 (304) 이 별개의 우선순위 값들을 미디어 컨텐츠의 각각의 세그먼트 그룹에 배정함으로써 우선순위 값들을 세그먼트들 (310) 과 연관시킬 수 있다. 다시 말해서, 세그먼트 그룹들 (314) 의 각각에는 별개의 우선순위 값이 배정될 수도 있다. 이에 따라, 이 예에서는, 우선순위 유닛 (304) 이 주어진 세그먼트 그룹 내의 세그먼트들의 각각을, 주어진 세그먼트 그룹에 배정된 우선순위 값과 연관시킬 수도 있다.
우선순위 값들은 다양한 방식들로 나타내어질 수 있다. 일부 예들에서, 우선순위 유닛 (304) 은 높은 우선순위 값들 (즉, 거의 또는 전혀 없는 재생 품질 차이들) 을 높은 수 (number) 들로서 나타낼 수도 있고, 낮은 우선순위 값들 (즉, 큰 품질 차이들) 을 낮은 수들로서 나타낼 수도 있다. 예를 들어, 이 예들 중의 일부에서는, 1.0 이 최고 가능한 우선순위 값이고, 0.0 은 최저 가능한 우선순위 값이다. 다른 예들은 높은 우선순위 값들을 낮은 수들로서 나타내고, 낮은 우선순위 값들을 높은 수들로서 나타낸다. 예를 들어, 이 예들 중의 일부에서는, 0.0 은 최고 가능한 우선순위 값이고, 1.0 은 최저 가능한 우선순위 값이다. 이러한 방식으로, 우선순위 값들은 미디어 컨텐츠의 더 높은 비트 레이트 표현으로부터 특정한 시간적인 섹션에 대한 세그먼트를 선택하는 상대적인 중요도를 설명할 수도 있다.
우선순위 유닛 (304) 이 별개의 우선순위 값들을 세그먼트들 (310) 의 각각에 배정하는 예들에서는, 우선순위 유닛 (304) 은 우선순위 값들을 다양한 방식들로 배정할 수 있다. 예를 들어, 우선순위 유닛 (304) 은, 세그먼트의 우선순위 값이 세그먼트 내의 연산된 왜곡의 양과 상관 (correlate) 되도록 우선순위 값들을 세그먼트들 (310) 에 배정할 수 있다. 미디어 컨텐츠가 비디오인 예들에서는, 컬러 또는 형상에 있어서의 부정확성들, 블록 아티팩트 (blocky artifact) 들, 링잉 아티팩트 (ringing artifact) 들, 및 다른 부정확성들이 연산된 왜곡의 더 큰 양들에 기여한다. 이 예에서는, 우선순위 유닛 (304) 이 세그먼트들 (310) 의 각각에 대한 왜곡 평가 프로세스를 수행할 수 있다. 우선순위 유닛 (304) 이 세그먼트들 (310) 중의 하나에 대한 왜곡 평가 프로세스를 수행할 때, 우선순위 유닛 (304) 은 세그먼트 내의 연산된 왜곡의 양을 결정할 수도 있다. 이 예에서는, 세그먼트가 작은 양의 연산된 왜곡을 가질 때, 우선순위 유닛 (304) 은 높은 우선순위 값을 세그먼트에 배정할 수도 있다. 대조적으로, 세그먼트가 더 큰 양의 연산된 왜곡을 가질 때에는, 우선순위 유닛 (304) 이 더 낮은 우선순위 값을 세그먼트에 배정할 수도 있다. 다시 말해서, 세그먼트 내의 연산된 왜곡의 양이 증가함에 따라, 우선순위 유닛 (304) 은 계속해서 더 낮은 우선순위 값들을 세그먼트에 배정할 수도 있다.
일부 예들에서는, (예를 들어, 세그먼테이션 유닛 (302) 의) 비디오 인코더가 비디오 데이터의 프레임들 또는 슬라이스들의 블록들에 대한 잔차 값 (residual value) 들을 우선순위 유닛 (304) 에 제공할 수도 있다. 우선순위 유닛 (304) 은 세그먼트 내의 픽처들 또는 슬라이스들에 대한 누적 (또는 평균) 잔차 값들에 기초하여 우선순위 값들을 배정할 수도 있다. 추가적으로 또는 대안적으로, 인간 운영자는 우선순위 유닛 (304) 을 이용하여 우선순위들을 세그먼트들에 배정할 수도 있다. 일부 사례들에서는, 인간 운영자가 원하는 시각적 품질을 달성하기 위하여 더 넓은 범위의 우선순위들을 더 높은 액션 장면들에 배정할 수도 있는 반면, 인간 운영자는 더 좁은 범위의 우선순위들을 더 낮은 액션 장면들에 배정할 수 있을 수도 있다. 일부 예들에서, 우선순위 유닛 (304) 은 세그먼트에 대한 비트 레이트를, 인간 운영자에 의해 조절될 수도 있는 피크 비트 레이트 (peak bit rate) 에 의해 분할함으로써 세그먼트의 우선순위를 배정할 수도 있다. 세그먼트에 대한 비트 레이트가 피크 비트 레이트보다 작으므로, 세그먼트의 우선순위는 최대값, 예를 들어, 1.0 에서 효과적으로 캡핑 (capping) 될 수도 있다. 일부 예들에서는, 피크 비트 레이트가 미디어 데이터의 모든 시간적인 섹션들에 대해 고정되어 있지 않다. 예를 들어, 더 높은 액션 장면들은 피크 비트 레이트에 대한 더 높은 값을 가질 수도 있는 반면, 더 낮은 액션 장면들은 피크 비트 레이트에 대한 더 낮은 값을 가질 수도 있다. 이러한 방식으로, 세그먼트들에 대한 우선순위 값들은 예를 들어, 우선순위 유닛 (304) 에 의해 자동으로 또는 반자동으로 배정될 수도 있다.
아래에 제시된 표 1 은 세그먼트 그룹들 (314) 내의 세그먼트들 (310) 에 배정된 일 예의 우선순위 값들을 포함한다.
Figure 112014037940169-pct00001
도 2 의 예에 대하여, 세그먼트 그룹들 (314A - 314D) 은 비디오 시퀀스들 (202A -202D) 에 각각 대응할 수도 있다.
또한, 우선순위 유닛 (304) 이 우선순위 값들을 세그먼트들에 배정하는 예들에서는, 우선순위 유닛 (304) 은 우선순위 값들을 다양한 방식들로 배정할 수 있다. 예를 들어, 미디어 컨텐츠는 비디오일 수 있다. 이 예에서, 우선순위 유닛 (304) 은 세그먼트 그룹 내의 더 낮은 비트 레이트 세그먼트들에서 시각적 품질이 줄어드는 정도에 기초하여 우선순위 값들을 세그먼트 그룹 내의 세그먼트들에 배정할 수도 있다. 예를 들어, 세그먼트 그룹 내의 더 낮은 비트 레이트 세그먼트들이 현저하게 줄어든 시각적 품질을 가질 경우, 우선순위 유닛 (304) 은 상대적으로 높은 우선순위 값들을 세그먼트 그룹 내의 더 높은 비트 레이트 세그먼트에 배정할 수도 있다. 반대로, 세그먼트 그룹 내의 더 낮은 비트 레이트 세그먼트들이 덜 현저하게 줄어든 시각적 품질을 가질 경우에는, 우선순위 유닛 (304) 이 상대적으로 낮은 우선순위 값들을 세그먼트 그룹 내의 더 높은 비트 레이트 세그먼트들에 배정할 수도 있다. 이러한 방식으로, 세그먼트들의 우선순위 값들은 (예를 들어, 색차 (chrominance) 상의 휘도 (luminance) 에 우선순위를 부여하여) 인간 신경계 (human nervous system) 에 의해 세그먼트들에서 인지가능한 인지 왜곡의 양들과 상관될 수도 있다. 다른 예들에서는, 우선순위 유닛 (304) 이 ITU-T 추천안 BT.500 에 설명된 비디오 평균 의견 점수 (video mean opinion score; VMOS) 에 기초하여 우선순위 값들을 세그먼트들에 배정할 수도 있다.
우선순위 유닛 (304) 이 우선순위 값들을 세그먼트 그룹들 (314) 에 배정하는 또 다른 예에서는, 우선순위 유닛 (304) 의 예들이 세그먼트 그룹들 (314) 의 각각에 대한 비교 동작을 수행할 수도 있다. 이 예에서는, 세그먼트 그룹에 대한 비교 동작 동안, 우선순위 유닛 (304) 이 세그먼트 그룹 내의 상이한 세그먼트들에서의 왜곡의 양들을 비교할 수도 있다. 이 예에서는, 우선순위 유닛 (304) 이, 세그먼트 그룹 내의 세그먼트들 중에서 왜곡 레벨들이 상이하게 하는 양들에 기초하여 우선순위 값들을 세그먼트 그룹들 (314) 내의 각각의 세그먼트들에 배정할 수 있다. 이 예에서는, 세그먼트 그룹의 세그먼트들 내의 왜곡의 양들이 상대적으로 큰 양만큼 상이할 때, 우선순위 유닛 (304) 은 상대적으로 높은 우선순위 값들을 세그먼트 그룹 내의 더 높은 비트 레이트 세그먼트들에 배정할 수 있다. 이 예에서는, 세그먼트 그룹의 세그먼트들 내의 왜곡의 양들이 상대적으로 작은 양만큼 상이할 때, 우선순위 유닛 (304) 은 상대적으로 낮은 우선순위 값들을 세그먼트 그룹 내의 더 높은 비트 레이트 세그먼트들에 배정할 수 있다. 예를 들어, 압축되지 않은 비디오 프레임을 압축된, 이에 따라 왜곡된 비디오 프레임과 비교함으로써, 왜곡은 피크 신호 대 잡음 비율 (Peak Signal to Noise Ratio; PSNR) 로 측정될 수 있다. 이 예에서, 33 dB 를 초과하는 PSNR 은 높은 품질, 그리고 이에 따라 낮은 왜곡으로 고려될 수도 있고; 28 dB 미만의 PSNR 은 낮은 품질, 그리고 이에 따라 높은 왜곡으로 고려될 수도 있으며; 28 dB - 33 dB 사이의 PSNR 값은 중간 품질 및 중간 왜곡으로 고려될 수도 있다.
또 다른 예에서, 우선순위 유닛 (304) 은 비디오 프레임 내부에서 객체들에 의해 경험되는 움직임의 양에 기초하여 우선순위 값들을 배정할 수 있다. 예를 들어, 각각의 비디오 프레임에 대한 움직임 흐름 필드 (motion flow field) 를 추정하기 위하여 광학-흐름 (optical-flow) 기반 움직임 추정 기술들이 이용될 수도 있다. 움직임 흐름 필드는 비디오 프레임의 각각의 공간 영역에 대한 (방향 및 크기로 이루어진) 움직임 벡터들로 구성될 수 있다. 비디오의 주어진 시간적인 섹션에 대한 움직임의 전체적인 양을 표시하기 위하여 비디오 프레임들의 시간적인 섹션에 따른 움직임 벡터 크기들의 집합이 이용될 수 있다.
우선순위 값들이 세그먼트들 (310) 과 연관된 후, 매니페스트 발생 유닛 (306) 은 메니페스트 파일 (312) 을 발생한다 (410). 데이터 저장 시스템 (300) 은 매니페스트 파일 (312) 을 저장한다 (412). 일부 예들에서는, 매니페스트 발생 유닛 (306) 이 우선순위 유닛 (304) 으로부터 우선순위 값들을 수신할 수도 있다. 이러한 예들에서는, 매니페스트 파일 (312) 이 세그먼트들 (310) 과 연관된 우선순위 값들을 특정하도록, 매니페스트 발생 유닛 (306) 은 매니페스트 파일 (312) 을 발생할 수도 있다. 또한, 일부 예들에서는, 매니페스트 파일 (312) 이 세그먼트들 (310) 에 대한 URL 들을 특정한다. 이 개시물의 다른 곳에서 논의된 바와 같이, 일부 예들에서는, 클라이언트 디바이스 (102) 가 서버 디바이스 (104) 로부터 세그먼트들 (310) 을 취출하기 위하여 세그먼트들 (310) 에 대한 URL 들을 이용할 수 있다.
매니페스트 파일 (312) 은 다양한 방식들로 포맷 (format) 될 수 있다. 예를 들어, 매니페스트 파일 (312) 은 확장가능 마크업 언어 (Extensible Markup Language; XML) 문서로서 포맷될 수 있다. 이 예에서, 매니페스트 파일 (312) 은 세그먼트들에 대응하는 세그먼트 요소들을 포함할 수도 있다. 세그먼트에 대응하는 세그먼트 요소는 세그먼트의 URL 을 특정하는 URL 요소와, 세그먼트와 연관된 우선순위 값을 특정하는 우선순위 요소를 포함할 수도 있다.
추후에, 서버 애플리케이션 (308) 은 클라이언트 디바이스 (102) 로부터 매니페스트 요청 메시지를 수신할 수도 있다 (414). 메시지에 응답하여, 서버 애플리케이션 (308) 은 매니페스트 파일 (312) 의 복사본을 클라이언트 디바이스 (102) 로 전송할 수도 있다 (416).
서버 애플리케이션 (308) 이 매니페스트 파일 (312) 의 복사본을 클라이언트 디바이스 (102) 로 전송한 후, 서버 애플리케이션 (308) 은 클라이언트 디바이스 (102) 로부터 일련의 세그먼트 요청 메시지들을 수신할 수도 있다 (418). 세그먼트 요청 메시지들의 각각은 세그먼트들 (310) 중의 하나 이상의 세그먼트의 복사본들을 요청할 수 있다. 요청된 세그먼트들은 상이한 표현들 (316) 로부터의 것일 수도 있다. 즉, 클라이언트 디바이스 (102) 로부터 수신된 세그먼트 요청 메시지들은 표현들 (316) 중의 상이한 표현들의 세그먼트들을 특정할 수 있다. 서버 애플리케이션 (308) 은 세그먼트 요청 메시지들에 응답하여 세그먼트들 (310) 의 요청된 복사본들을 클라이언트 디바이스 (102) 로 전송할 수도 있다 (420).
이러한 방식으로, 도 4 의 방법은 적응적 스트리밍 네트워크 프로토콜을 통해 비디오 데이터를 제공하는 방법의 예를 나타낼 수도 있다. 방법은 세그먼트들에 대한 우선순위들을 표시하는 정보를 전송하는 것을 포함할 수도 있다. 세그먼트들 (310) 의 각각은 개별적으로 취출될 수도 있다. 세그먼트들 (310) 은 멀티미디어 컨텐츠의 표현들 (316) 의 특정한 시간적인 섹션들에 대응할 수도 있다. 멀티미디어 컨텐츠의 표현들 (316) 의 각각은 상이한 비트 레이트에서 인코딩된 비디오 데이터를 포함할 수도 있다. 방법은 클라이언트 디바이스 (102) 로부터의 하나 이상의 요청들에 응답하여 적응적 스트리밍 네트워크 프로토콜을 통해 요청된 세그먼트들을 전송하는 것을 또한 포함할 수도 있다. 요청된 세그먼트들은 요청들에 의해 특정된 세그먼트들 (310) 중의 세그먼트들일 수도 있다.
도 4 의 예에서는, 우선순위 값들이 매니페스트 파일 내에 포함된다. 다른 예들에서는, 우선순위 값들이 매니페스트 파일 대신에, 미디어 스트림의 메타데이터 박스들 내에 포함될 수도 있다. 일부 예들에서는, 메타데이터 박스들이 미디어 컨텐이너 포맷의 기존의 메타데이터 박스들일 수도 있다. 예를 들어, 우선순위 값들은 ISO 기반 미디어 파일 포맷 (base media file format; BMFF) 을 갖는 MPEG-4 표준으로 SIDX 박스들 내에 포함될 수도 있다. 다른 예들에서는, 우선순위 값들이 하나 이상의 기존의 미디어 컨테이너 포맷들에 추가된 전용 메타데이터 박스들 내에 포함될 수도 있다.
도 5 는 클라이언트 디바이스 (102) 의 일 예의 구성을 예시하는 블록도이다. 도 5 의 예에서는, 클라이언트 디바이스 (102) 가 제어 유닛 (500), 선택 유닛 (502), 취출 유닛 (504), 재생 버퍼 (505), 렌더링 유닛 (506), 및 출력 유닛 (508) 을 구현한다. 클라이언트 디바이스 (102) 는 제어 유닛 (500), 선택 유닛 (502), 취출 유닛 (504), 재생 버퍼 (505), 렌더링 유닛 (506), 및 출력 유닛 (508) 을 다양한 방식들로 구현할 수 있다. 예를 들어, 클라이언트 디바이스 (102) 의, 범용 마이크로프로세서들 또는 그래픽 프로세싱 유닛들과 같은 하나 이상의 프로세싱 유닛들이 특정한 명령들을 실행할 때, 클라이언트 디바이스 (102) 는 제어 유닛 (500), 선택 유닛 (502), 취출 유닛 (504), 렌더링 유닛 (506), 및/또는 출력 유닛 (508) 을 구현할 수 있다. 또 다른 예에서, 클라이언트 디바이스 (102) 는 클라이언트 디바이스 (102)가 제어 유닛 (500), 선택 유닛 (502), 취출 유닛 (504), 렌더링 유닛 (506), 및/또는 출력 유닛 (508) 을 구현하도록 하는 하나 이상의 ASIC 들을 포함할 수 있다. 다양한 예들에서, 클라이언트 디바이스 (102) 는 다양한 유형들의 컴퓨터 저장 매체들을 이용하여 재생 버퍼 (505) 를 구현할 수 있다.
도 6 은 미디어 컨텐츠를 사용자 (108) 에게 제시하기 위하여 클라이언트 디바이스 (102) 에 의해 수행되는 일 예의 동작 (600) 을 예시하는 흐름도이다. 클라이언트 디바이스 (102) 가 동작 (600) 을 시작한 후, 클라이언트 디바이스 (102) 의 제어 유닛 (500) 은 매니페스트 요청 메시지를 서버 디바이스 (104) 로 전송 (602) 함으로써 매니페스트 파일 (312) 을 취출할 수도 있다. 일부 예들에서는, 매니페스트 요청 메시지가 매니페스트 파일 (312) 의 복사본을 요청한다. 다른 예들에서는, 매니페스트 요청 메시지가 대체로 미디어 컨텐츠와 연관된 경로를 특정한다. 매니페스트 요청 메시지는 다양한 방식들로 포맷될 수 있다. 예를 들어, 매니페스트 요청 메시지는 HTTP 요청을 포함할 수도 있다.
제어 유닛 (500) 은 미디어 컨텐츠에 대한 매니페스트 파일 (312) 을 저장한다 (604). 도 6 의 예에서, 제어 유닛 (500) 은 매니페스트 요청 메시지에 응답하여 매니페스트 파일 (312) 을 수신한 후에 매니페스트 파일 (312) 을 저장할 수도 있다. 도 6 과 일치하는 예들에서는, 매니페스트 파일 (312) 이 세그먼트들 (310) 과 연관된 우선순위 값들을 특정할 수도 있다. 이러한 방식으로, 클라이언트 디바이스 (102) 는 세그먼트들 (310) 과 연관된 우선순위 값들을 수신할 수도 있다. 또한, 도 6 과 일치하는 예들에서는, 매니페스트 파일 (312) 이 세그먼트들 (310) 의 URL 들을 특정할 수도 있다.
독자들은 다른 예들에서, 클라이언트 디바이스 (102) 가 세그먼트들 (310) 과 연관된 우선순위 값들 및/또는 세그먼트들 (310) 의 URL 들을 다양한 방식들로 수신한다. 예를 들어, 클라이언트 디바이스 (102) 는 세그먼트들 (310) 의 세그먼트 인덱스 박스들로부터 우선순위 값들을 수신할 수 있다. 또 다른 예에서, 클라이언트 디바이스 (102) 는 미디어 컨텐츠의 메타데이터 트랙으로부터 우선순위 값들을 수신할 수 있다.
매니페스트 파일 (312) 을 수신한 후, 클라이언트 디바이스 (102) 의 선택 유닛 (502) 은 업커밍 시간 기간에 대한 세그먼트 조합을 선택할 수도 있다 (606). 세그먼트 조합은 업커밍 시간 기간 내의 각각의 세그먼트 그룹으로부터의 하나의 세그먼트를 포함하는 세그먼트들의 세트이다. 업커밍 시간 기간은 미디어 컨텐츠의 시간적인 섹션에 대응할 수도 있다. 설명의 용이함을 위하여, 이 문서는 업커밍 시간 기간의 시간적인 섹션 내에서의 시간적인 섹션들에 대응하는 세그먼트들을 포함하는 세그먼트 그룹들을, 업커밍 시간 기간 내의 세그먼트 그룹들이라고 지칭할 수도 있다. 예를 들어, 세그먼트 그룹들 (314A 및 314B) 은 하나의 윈도우 (window) 내에 있을 수 있고, 미디어 컨텐츠의 세그먼트 그룹 (314N) 및 또 다른 세그먼트 그룹은 또 다른 윈도우 내에 있을 수 있으며, 이하 등등과 같다.
다양한 예들에서는, 윈도우들이 다양한 수들의 세그먼트 그룹들을 포함할 수도 있다. 예를 들어, 윈도우들은 고정된 수의 세그먼트 그룹들을 포함할 수 있다. 예를 들어, 윈도우들은 3 개의 세그먼트 그룹들을 각각 포함할 수 있다. 또 다른 예에서, 윈도우들은 4 개의 세그먼트 그룹들을 각각 포함할 수 있다. 윈도우들이 고정된 수들의 윈도우들을 포함하는 예들에서는, 최종 윈도우가 고정된 수보다 더 적은 세그먼트 그룹들을 포함할 수 있다. 또 다른 예에서, 윈도우들은 미디어 컨텐츠의 모든 세그먼트 그룹들을 포함할 수 있다. 또 다른 예에서는, 윈도우들이 다양한 수들의 세그먼트 그룹들을 포함할 수 있다.
선택 유닛 (502) 은 업커밍 시간 기간에 대한 세그먼트 조합을 다양한 방식들로 선택할 수 있다. 이하에서 상세하게 설명된 도 7 및 도 8 은 업커밍 시간 기간에 대한 세그먼트 조합을 선택하기 위하여 선택 유닛 (502) 에 의해 수행되는 일 예의 동작들을 예시한다. 독자들은 선택 유닛 (502) 이 업커밍 시간 기간에 대한 세그먼트 조합을 선택하기 위하여 도 7 및 도 8 의 예들에서 예시된 것과는 다른 동작들을 수행할 수도 있다는 것을 이해할 것이다. 설명의 용이함을 위하여, 이 문서는 선택된 세그먼트 조합 내의 세그먼트들을 선택된 세그먼트들로서 지칭할 수 있다.
선택 유닛 (502) 이 업커밍 시간 기간에 대한 세그먼트 조합을 선택한 후, 클라이언트 디바이스 (102) 의 취출 유닛 (504) 은 적응적 스트리밍 네트워크 프로토콜에 따라 서버 디바이스 (104) 로부터 선택된 세그먼트들을 취출할 수도 있다 (608). 취출 유닛 (504) 은 서버 디바이스 (104) 로부터 선택된 세그먼트들을 다양한 방식들로 취출할 수 있다. 예를 들어, 매니페스트 파일 (312) 은 세그먼트들 (310) 에 대한 URL 들을 특정할 수 있다. 이 예에서는, 취출 유닛 (504) 이 선택된 세그먼트들에 대한 URL 들에 의해 식별되는 자원들을 요청하는 세그먼트 요청 메시지들을 전송할 수 있다. 취출 유닛 (504) 은 세그먼트 요청 메시지들에 응답하여 서버 디바이스 (104) 로부터 선택된 세그먼트들을 수신할 수도 있다. 일부 이러한 예들에서는, 세그먼트 요청 메시지들이 선택된 세그먼트들의 복사본들을 요청하는 HTTP 메시지들이다. HTTP 메시지들은 선택된 세그먼트들의 URL들의 도메인 명칭 (domain name) 부분들과 연관된 컴퓨팅 디바이스들로 어드레싱된다. HTTP 메시지들은 선택된 세그먼트들의 URL 들의 경로 부분들에 의해 표시되는 자원들을 요청할 수도 있다. 다시 말해서, 취출 유닛 (504) 은 선택된 세그먼트의 복사본을 요청하는 HTTP 요청 메시지를 발생하기 위하여 선택된 세그먼트에 대한 URL 을 이용할 수도 있다. 서버 디바이스 (104) 가 다수의 세그먼트들 (310) 을 단일 파일에 저장하는 예들에서는, HTTP 요청 메시지들이 HTTP 부분적인 겟 요청 (partial get request) 들일 수 있다.
일단 클라이언트 디바이스 (102) 가 서버 디바이스 (104) 로부터 선택된 세그먼트들을 취출하였으면, 취출 유닛 (504) 은 선택된 세그먼트들을 재생 버퍼 (505) 내에 저장할 수도 있다 (609). 렌더링 유닛 (506) 은 재생 버퍼 (505) 로부터 세그먼트들을 제거할 수도 있고, 출력 유닛 (508) 에 의한 출력을 위해 적당한 샘플들을 생성하기 위하여 세그먼트 조합 내의 세그먼트들을 디코딩할 수도 있다 (610). 예를 들어, 렌더링 유닛 (506) 은 비디오 프레임들 또는 오디오 샘플들을 생성하기 위하여 선택된 세그먼트들을 디코딩할 수 있다. 다음으로, 출력 유닛 (508) 은 선택된 세그먼트들에 의해 표현된 샘플들을 출력할 수도 있다 (612). 이러한 방식으로, 출력 유닛 (508) 은 선택된 세그먼트들을 재생할 수도 있다.
출력 유닛 (508) 이 선택된 세그먼트들에 의해 표현된 샘플들을 출력한 후에 미디어 컨텐츠의 재생이 종결되는 경우 (614 의 "예"), 동작 (600) 은 종료될 수도 있다. 미디어 컨텐츠의 재생은 다양한 이유들로 종결될 수 있다. 예를 들어, 미디어 컨텐츠가 비디오인 경우, 출력 유닛 (508) 이 비디오 최종 프레임을 제시하였을 때, 미디어 컨텐츠의 재생이 종결될 수 있다. 또 다른 예에서는, 사용자 (108) 가 미디어 컨텐츠의 재생을 종결하도록 클라이언트 디바이스 (102) 에 지시할 때, 미디어 컨텐츠의 재생이 종결될 수 있다.
출력 유닛 (508) 이 선택된 세그먼트들에 의해 표현된 미디어를 출력한 후에 미디어 컨텐츠의 재생이 종결되지 않을 경우 (614 의 "아니오"), 선택 유닛 (502) 은 다음 업커밍 시간 기간에 대한 세그먼트 조합을 선택할 수도 있다 (606). 다음 업커밍 시간 기간은 현재의 업커밍 시간 기간의 세그먼트 그룹들 내의 세그먼트들에 대응하는 미디어 컨텐츠의 시간적인 섹션들을 뒤따르는 미디어 컨텐츠의 시간적인 섹션들에 대응하는 세그먼트들을 포함하는 세그먼트 그룹들을 포함할 수 있다. 다음으로, 단계들 (608, 610, 612, 및 614) 은 미디어 컨텐츠의 재생이 종결될 때까지 반복될 수도 있다.
도 7 은 업커밍 시간 기간에 대한 세그먼트 조합을 선택하기 위하여 클라이언트 디바이스 (102) 에 의해 수행되는 일 예의 동작 (700) 을 예시하는 흐름도이다. 동작 (700) 이 시작된 후, 선택 유닛 (502) 은 추정된 대역폭을 계산할 수도 있다 (702). 추정된 대역폭은 클라이언트 디바이스 (102) 가 네트워크 (106) 를 통해 서버 디바이스 (104) 로부터 데이터를 수신할 수 있게 할 레이트의 추정치일 수도 있다. 예를 들어, 선택 유닛 (502) 은 클라이언트 디바이스 (102) 가 0.58 Mbps 의 레이트에서 서버 디바이스 (104) 로부터 데이터를 수신할 수 있을 것이라고 결정할 수 있다.
선택 유닛 (502) 은 추정된 대역폭을 다양한 방식들로 계산할 수 있다. 예를 들어, 선택 유닛 (502) 은 클라이언트 디바이스 (102) 가 과거 60 초 동안에 서버 디바이스 (104) 로부터 얼마나 많은 데이터를 수신할 수 있었는지에 기초하여 추정된 대역폭을 계산할 수 있다. 또 다른 예에서, 서버 디바이스 (104) 는 대역폭 메시지들을 클라이언트 디바이스 (102) 로 전송할 수도 있다. 대역폭 메시지들은 서버 디바이스 (104) 가 데이터를 클라이언트 디바이스 (102) 로 전송하게 할 최대 레이트를 표시할 수도 있다. 이 예에서, 선택 유닛 (502) 은 대역폭 메시지들에 의해 표시되는 레이트들에 적어도 부분적으로 기초하여 추정된 대역폭을 결정할 수도 있다.
또한, 선택 유닛 (502) 은 적용가능한 세그먼트들과 연관된 우선순위 값들을 매니페스트 파일 (312) 로부터 판독할 수도 있다 (704). 적용가능한 세그먼트들의 각각은 업커밍 시간 기간 내의 세그먼트 그룹 내에 있을 수도 있다. 예를 들어, 도 2 의 예에서는, 업커밍 시간 기간이 세그먼트 그룹들 (314A 및 314B) 을 포함하는 경우, 세그먼트 그룹들 (314A 및 314B) 내의 세그먼트들 (310) 은 적용가능한 세그먼트들일 수도 있다.
다른 예들에서는, 선택 유닛 (502) 이 적용가능한 세그먼트들과 연관된 우선순위 값들을 다른 소스 (source) 들로부터 판독할 수 있다. 예를 들어, 선택 유닛 (502) 은 적용가능한 세그먼트들과 연관된 우선순위 값들을 세그먼트들의 세그먼트 인덱스 박스들로부터 판독할 수 있다. 또 다른 예에서, 선택 유닛 (502) 은 적용가능한 세그먼트들과 연관된 우선순위 값들을 미디어 컨텐츠의 메타데이터 트랙으로부터 판독할 수 있다.
또한, 선택 유닛 (502) 은 재생 버퍼 (505) 내의 비디오 데이터의 현재의 재생 지속기간을 결정할 수도 있다 (705). 일부 예들에서, 재생 버퍼 (505) 내의 비디오 데이터의 현재의 재생 지속기간은, 취출 유닛 (504) 이 새로운 비디오 데이터 (예를 들어, 세그먼트들) 를 재생 버퍼 (505) 에 전혀 추가하지 않았을 경우에 렌더링 유닛 (506) 및 출력 유닛 (508) 이 재생 버퍼 (505) 내에 저장된 비디오 데이터를 재생하기 위해 경과할 시간의 양일 수도 있다. 예를 들어, 취출 유닛 (504) 이 새로운 비디오 데이터를 재생 버퍼 (505) 에 전혀 추가하지 않았더라도, 렌더링 유닛 (506) 및 출력 유닛 (508) 은 재생 버퍼 (505) 로부터의 비디오 데이터를 계속 재생할 수도 있다.
이용가능한 대역폭을 추정한 후, 적용가능한 세그먼트들에 대한 우선순위 값들을 판독한 후, 그리고 재생 버퍼 (505) 내의 비디오 데이터의 현재의 재생 지속기간을 결정한 후, 선택 유닛 (502) 은 하나 이상의 후보 (candidate) 조합들을 식별할 수도 있다 (706). 세그먼트 조합은 업커밍 시간 기간 내의 각각의 세그먼트 그룹으로부터의 하나의 세그먼트를 포함하는 세그먼트들의 세트일 수도 있다. 상이한 예들에서, 선택 유닛 (502) 은 세그먼트 조합들을 상이한 방식들로 식별할 수도 있다.
일부 예들에서는, 세그먼트 조합 내의 세그먼트들의 누적 비트 레이트가 추정된 대역폭보다 상당히 크지 않을 때, 선택 유닛 (502) 은 세그먼트 조합을 후보 조합으로서 식별할 수도 있다. 일부 예들에서는, 세그먼트들의 누적 비트 레이트가 세그먼트들의 비트 레이트들의 평균이다. 예를 들어, 세그먼트들 (310) 의 각각이 3 초 가치의 샘플들을 나타내며 업커밍 시간 기간이 4 개의 세그먼트 그룹들을 포함하는 경우, 업커밍 시간 기간과 연관된 시간의 양은 12 초일 수 있다. 다시 말해서, 업커밍 시간 기간의 재생 지속기간은 12 초이다. 이 예에서, 선택 유닛 (502) 은 1.75 Mbps 의 추정된 대역폭을 계산할 수 있다. 이에 따라, 이 예에서는, 클라이언트 디바이스 (102) 가 12 초마다 서버 디바이스 (104) 로부터 대략 21.0 메가비트들을 수신할 수 있을 수도 있다. 또한, 이 예에서는, 세그먼트들 A 및 B 가 제 1 세그먼트 그룹에 대응하고, 세그먼트들 C 및 D 가 제 2 세그먼트 그룹에 대응하며, 세그먼트들 E 및 F 가 제 3 세그먼트 그룹에 대응한다. 이 예에서는, 세그먼트들 A, C, 및 E 가 3.0 Mbps 의 비트 레이트들을 가지고, 세그먼트들 B, D, 및 F 가 1.0 Mbps 의 비트 레이트들을 가진다. 이 예에서, 이용가능한 세그먼트 조합들은 A-C-E, A-C-F, A-D-E, A-D-F, B-C-E, B-C-F, B-D-E, 및 B-D-F 이다. 그러나, 세그먼트 조합 A-C-E 에 대한 평균 비트 레이트는 3.0 Mbps 이다. 결과적으로, 클라이언트 디바이스 (102) 는 미디어 컨텐츠의 재생을 재버퍼링 (rebuffering) 하지 않으면서 조합 A-C-E 를 수신하기 위하여 12 초 내에 36.0 메가비트들을 수신할 필요가 있을 것이다. 36.0 메가비트들은 서버 디바이스 (104) 가 12 초 내에 클라이언트 디바이스 (102) 로 전송할 수 있는 21.0 메가비트들보다 크다. 이에 따라, 세그먼트 조합 A-C-E 는 후보 조합이 아니다. 나머지 세그먼트 조합들의 평균 비트 레이트들이 추정된 대역폭보다 작으므로, 나머지 세그먼트 조합들은 후보 조합들이다.
일부 예들에서는, 세그먼트 조합 내의 세그먼트들의 평균 비트 레이트가 추정된 대역폭을 엄밀히 초과하지 않을 때에만, 선택 유닛 (502) 이 세그먼트 조합을 후보 조합으로서 식별할 수도 있다. 다른 예들에서는, 세그먼트 조합 내의 세그먼트들의 평균 비트 레이트가 추정된 대역폭보다 약간 클 경우에도, 선택 유닛 (502) 이 세그먼트 조합을 후보 조합으로서 식별할 수도 있다. 예를 들어, 세그먼트 조합 내의 세그먼트들의 비트 레이트들의 평균이 추정된 대역폭보다 큰 10 % 보다 작을 때에는, 세그먼트 조합이 후보 조합일 수 있다.
일부 예들에서는, 선택 유닛 (502) 이 세그먼트들에 대한 우선순위 값들, 추정된 대역폭, 및 재생 버퍼 (505) 내의 비디오 데이터의 현재의 재생 지속기간에 기초하여 세그먼트들을 선택할 수도 있다. 재생 버퍼 (505) 는 비디오 데이터가 재생될 때까지 비디오 데이터를 저장할 수도 있다. 재생 버퍼 (505) 내에 비디오 데이터를 저장하는 것은 일시적인 네트워크 대역폭 감소들로 인한 비디오 데이터의 재생 동안의 중단들을 방지할 수도 있다. 이러한 예들에서는, 세그먼트 조합 내의 세그먼트들에 대한 추정된 전송 시간이 세그먼트 조합 내의 세그먼트들의 재생 지속기간과, 재생 버퍼 (505) 내의 비디오 데이터의 현재의 재생 지속기간의 합보다 작거나 동일할 때, 선택 유닛 (502) 은 세그먼트 조합을 후보 조합으로서 식별할 수도 있다.
세그먼트 조합 내의 세그먼트들에 대한 추정된 전송 시간은 추정된 대역폭과, 선택된 세그먼트들 내의 비트들의 총 수에 기초할 수도 있다. 예를 들어, 세그먼트 조합 내의 세그먼트들에 대한 추정된 전송 시간은 추정된 대역폭에 의해 분할되는 선택된 세그먼트들 내의 비트들의 총 수와 동일할 수도 있다. 이 예에서, 세그먼트들 내의 비트들의 총 수가 36.0 메가비트들이며 추정된 대역폭이 1.75 Mbps 일 경우, 세그먼트들에 대한 추정된 전송 시간은 대략 20.6 초일 수도 있다. 이 예에서, 세그먼트들의 재생 지속기간은 12.0 초일 수도 있다. 이에 따라, 이 예에서는, 재생 버퍼 (505) 내의 비디오 데이터의 현재의 재생 지속기간이 8.6 초 (즉, 20.6 초 - 12.0 초) 보다 클 경우, 선택 유닛 (502) 은 세그먼트 조합을 후보 조합인 것으로 고려할 수도 있다.
일부 예들에서는, 세그먼트 조합에 대한 추정된 전송 시간이 세그먼트 조합의 재생 지속기간과, 재생 버퍼 (505) 내의 비디오 데이터의 현재의 재생 지속기간에 기초한 시간 지속기간의 합보다 작거나 동일할 때, 선택 유닛 (502) 은 세그먼트 조합이 후보 조합인 것으로 결정할 수도 있다. 예를 들어, 선택 유닛 (502) 은 재생 버퍼 (505) 내의 비디오 데이터의 전체적인 현재의 재생 지속기간으로부터 주어진 시간의 양을 감산함으로써 지속기간 값을 발생할 수도 있다. 이 예에서, 선택 유닛 (502) 은, 세그먼트 조합에 대한 추정된 전송 시간이 세그먼트 조합의 재생 지속기간과 발생된 지속기간 값의 합보다 작거나 동일한지를 결정함으로써, 세그먼트 조합이 후보 조합인지를 결정할 수도 있다. 또 다른 예에서, 선택 유닛 (502) 은 유사한 지속기간 값을, 재생 버퍼 (505) 내의 비디오 데이터의 전체적인 현재의 재생 지속기간의 부분으로서 발생할 수도 있고, 이 지속기간 값을 유사한 방식으로 이용할 수도 있다.
후보 조합들을 식별한 후, 선택 유닛 (502) 은 후보 조합들의 각각에 대한 서비스 품질 (Quality of Service; QoS) 점수들을 계산할 수도 있다 (708). 후보 조합에 대한 QoS 점수는 후보 조합에서의 세그먼트들과 연관된 우선순위 값들에 기초할 수도 있다. 예를 들어, 후보 조합이 세그먼트들 A, B, 및 C 를 포함할 경우, 후보 조합에 대한 QoS 점수는 세그먼트들 A, B, 및 C 와 연관된 우선순위 값들에 기초할 수도 있다.
선택 유닛 (502) 은 후보 조합들에 대한 QoS 점수들을 다양한 방식들로 계산할 수 있다. 예를 들어, 별개의 우선순위 값들이 세그먼트들 (310) 의 각각에 배정될 수 있다. 이 예에서, 선택 유닛 (502) 은 주어진 후보 조합 내의 세그먼트들에 배정된 우선순위 값들을 합산함으로써 주어진 후보 조합에 대한 QoS 점수를 계산할 수 있다. 예를 들어, 주어진 후보 조합 내의 세그먼트들에 배정된 우선순위 값들이 1.0, 1.0, 및 0.8 인 경우, 주어진 후보 조합에 대한 QoS 점수는 2.8 일 수도 있다. 또 다른 예에서, 후보 조합의 세그먼트들과 연관된 우선순위 값들은 세그먼트들에 대한 PSNR 값들에 기초할 수도 있다. 이에 따라, 이 예에서, 선택 유닛 (502) 은 주어진 후보 조합 내의 세그먼트들의 PSNR 값들에 기초하여 주어진 후보 조합에 대한 QoS 점수를 결정할 수도 있다. 이 예에서, 소정의 후보 조합에 대한 QoS 점수는 주어진 후보 조합의 전체 PSNR 값과 동일할 수도 있다.
또 다른 예에서, 별개의 우선순위 값들은 세그먼트들 (310) 의 각각에 배정될 수도 있다. 이 예에서, 선택 유닛 (502) 은 주어진 후보 조합 내의 세그먼트들에 배정된 우선순위 값들의 기하 평균 (geometric mean) 을 계산함으로써 소정의 후보 조합에 대한 QoS 점수를 계산할 수 있다. 다시 말해서, 주어진 후보 조합 내에 n 개의 세그먼트들이 있을 경우, 선택 유닛 (502) 은 세그먼트들에 배정된 우선순위 값들을 승산함으로써 그리고 결과적인 값의 n 번째 루트 (root) 를 취함으로써, 주어진 후보 조합에 대한 QoS 점수를 계산할 수도 있다. 예를 들어, 주어진 후보 조합 내의 세그먼트들에 배정된 우선순위 값들이 0.1, 1.0, 1.0, 및 0.3 일 경우, 주어진 후보 조합에 대한 QoS 점수는 0.4162 일 수도 있다.
또 다른 예에서는, 별개의 우선순위 값들이 세그먼트 그룹들 (314) 의 각각에 배정될 수도 있다. 이 예에서, 선택 유닛 (502) 은 세그먼트들 (310) 의 각각에 대한 별개의 우선순위 값들을 계산하기 위하여 세그먼트 그룹들 (314) 에 배정된 우선순위 값들을 이용한다. 다양한 예들에서는, 선택 유닛 (502) 이 세그먼트들 (310) 의 각각에 대한 별개의 우선순위 값들을 다양한 방식들로 계산하기 위하여 세그먼트 그룹들 (314) 에 배정된 우선순위 값들을 이용할 수 있다. 예를 들어, 선택 유닛 (502) 은 주어진 세그먼트의 비트 레이트를, 주어진 세그먼트 그룹에 배정된 우선순위 점수와 승산함으로써, 주어진 세그먼트 그룹 내의 소정의 세그먼트에 대한 우선순위 값을 계산하기 위하여, 주어진 세그먼트 그룹에 배정된 우선순위 값을 이용할 수 있다. 이전의 단락의 예를 계속하면, 후보 조합들 각각 내의 세그먼트들의 각각에 대한 우선순위 점수들을 계산한 후, 선택 유닛 (502) 은 후보 조합들에 대한 QoS 점수들을 계산할 수도 있다. 선택 유닛 (502) 은 후보 조합들에 대한 QoS 점수들을 다양한 방식들로 계산할 수 있다. 예를 들어, 선택 유닛 (502) 은 후보 조합들 내의 세그먼트들에 대한 우선순위 값들을 합산함으로써, 또는 후보 조합들 내의 세그먼트들에 대한 우선순위 값들의 기하 평균을 계산함으로써, 또는 후보 조합들에 대한 QoS 점수들을 또 다른 방식으로 계산함으로써, 후보 조합들에 대한 QoS 점수들을 계산할 수 있다.
일부 사례들에서는, 클라이언트 디바이스 (102) 에 의해 해결되고 있는 문제의 본질이 "냅색 (knapsack)" 문제에 의해 설명될 수도 있다. "냅색" 문제는 Papadimitirou, C., 및 K. Steiglitz, Combinational Optimization: Algorithms and Complexity, New Jersey: Prentice-Hall, 1982에 설명되어 있다. 일반적으로, 이 문제는 최대 분량 (volume) 들의 객체들을 제한된 용량을 갖는 유한한 크기의 "냅색" 으로 얼마나 최적으로 팩킹 (packign) 할지를 결정하는 것으로서 설명될 수도 있다. 이 개시물의 기술들에 대하여, 문제는 클라이언트 디바이스 (102) 가 업커밍 N 개의 세그먼트들에 대한 최대 전체 우선순위 세트를 고정된 빈 (bin), 즉, N 세그먼트들을 취출하기 위해 이용가능한 것으로 결정되는 대역폭의 양으로 패킹하도록 시도하는 것에 대응할 수도 있다. 많은 유형들의 냅색 문제들은 NP-하드 (NP-hard) (여기서, "NP" 는 "비결정적 다항 시간 (nondeterministic polynomial time)" 에 대한 두문자어임) 이지만, 의사 다항 시간 (pseudo-polynomial time) 내에 실행되는 일부 알고리즘들은 알려져 있다.
후보 조합들에 대한 QoS 점수들을 계산한 후, 선택 유닛 (502) 은 후보 조합들 중으로부터 승리 조합 (winning combination) 을 식별할 수도 있다 (710). 선택 유닛 (502) 은 승리 조합을 다양한 방식들로 식별할 수 있다. 예를 들어, 높은 우선순위 값들이 높은 수치 값들을 가지는 사례들에서는, 승리 조합이 후보 조합들의 각각의 다른 하나에 대한 QoS 점수들보다 크거나 동일한 QoS 점수를 가진다. 예를 들어, 후보 조합들이 0.416, 0.4695, 및 0.221 의 QoS 점수들을 가질 경우, 승리 조합은 0.4695 의 QoS 점수를 갖는 후보 조합일 수도 있다. 높은 우선순위 값들이 낮은 수치 값들을 가지는 사례들에서는, 승리 조합이 후보 조합들의 각각의 다른 하나에 대한 QoS 점수들보다 작거나 동일한 QoS 점수를 가질 수도 있다. 이러한 방식으로, 선택 유닛 (502) 은 세그먼트 그룹 내의 세그먼트들의 우선순위 값들과, 세그먼트 시퀀스의 추가적인 자원들의 그룹들에 속하는 세그먼트들의 우선순위 값들에 적어도 부분적으로 기초하여, 세그먼트 시퀀스의 세그먼트 그룹들 중의 하나 내의 세그먼트들 중으로부터 주어진 세그먼트를 선택할 수도 있다. 또 다른 예에서, 승리 조합은 최소-최대 최적화 (min-max optimization) 를 통해 결정될 수도 있고, 여기서 목적은 최소-QoS 세그먼트를 최대화하는 것이다. 이 예에서는, 높은 우선순위들이 높은 서비스 품질을 표시하고, 후보 조합들이 0.32, 0.40, 및 0.4125 의 최소 QoS 값들을 가질 경우, 승리 조합은 0.4125 의 QoS 점수를 갖는 후보 조합일 수도 있다.
도 8 은 업커밍 시간 기간에 대한 세그먼트 조합을 선택하기 위하여 클라이언트 디바이스 (102) 에 의해 수행되는 일 예의 동작 (750) 을 예시하는 흐름도이다. 상기 논의는 대역폭에 초점이 맞추어져 있다. 그러나, 이 개시물의 기술들은 그렇게 제한되지 않는다. 오히려, 이 개시물의 기술들은 추정된 스루풋 (throughput) 에 포괄적으로 적용가능할 수도 있다. 스루풋은 주어진 기간 동안에 다루어지는 데이터의 분량일 수도 있다. 네트워크 (106) 의 대역폭은 업커밍 시간 기간 내에 네트워크 (106) 상에서 전송되는 데이터의 분량일 수도 있다. 도 8 의 예에서, 추정된 스루풋은 업커밍 시간 기간에서 하나 이상의 프로세서들에 의해 디코딩될 수 있는 인코딩된 미디어 데이터의 분량이다.
동작 (750) 은 동작 (700) (도 7) 과 일부의 방식들에 있어서 유사하다. 그러나, 동작 (750) 은 네트워크 대역폭 대신에 프로세싱 용량을 이용한다. 동작 (750) 을 이용하는 예들에서는, 클라이언트 디바이스 (102) 가 비디오 데이터를 미리 저장할 수도 있고, 서버 디바이스 (104) 와 같은 서버 디바이스로부터 임의의 데이터를 반드시 전송하지는 않는다.
동작 (750) 이 시작된 후, 선택 유닛 (502) 은 업커밍 시간 기간에 대한 추정된 이용가능한 프로세싱 용량을 계산할 수도 있다 (752). 업커밍 시간 기간에 대한 추정된 이용가능한 프로세싱 용량은 클라이언트 디바이스 (102) 가 업커밍 시간 기간 동안에 디코딩할 수 있을 인코딩된 미디어 데이터의 양의 추정치일 수도 있다. 또한, 선택 유닛 (502) 은 적용가능한 세그먼트들과 연관된 우선순위 값들을 매니페스트 파일 (312) 또는 다른 소스들로부터 판독할 수도 있다 (754). 적용가능한 세그먼트들의 각각은 업커밍 시간 기간 내에의 세그먼트 그룹 내에 있을 수도 있다.
선택 유닛 (502) 은 재생 버퍼 (505) 내의 비디오 데이터의 현재의 재생 지속기간을 결정할 수도 있다 (755). 일부 예들에서, 재생 버퍼 (505) 내의 비디오 데이터의 현재의 재생 지속기간은, 취출 유닛 (504) 이 새로운 디코딩된 비디오 데이터 (예를 들어, 세그먼트들) 를 재생 버퍼 (505) 에 전혀 추가하지 않았을 경우에 렌더링 유닛 (506) 및 출력 유닛 (508) 이 재생 버퍼 (505) 내에 저장된 비디오 데이터를 재생하기 위해 경과할 시간의 양일 수도 있다. 이용가능한 프로세싱 용량을 추정한 후, 적용가능한 세그먼트들에 대한 우선순위 값들을 판독한 후, 그리고 재생 버퍼 (505) 내의 비디오 데이터의 현재의 재생 지속기간을 결정한 후, 선택 유닛 (502) 은 하나 이상의 후보 조합들을 식별할 수도 있다 (756). 세그먼트 조합은 업커밍 시간 기간 내의 각각의 세그먼트 그룹으로부터의 하나의 세그먼트를 포함하는 세그먼트들의 세트일 수도 있다.
일부 예들에서는, 세그먼트 조합 내의 세그먼트들의 인코딩된 미디어 데이터의 양이 추정된 이용가능한 프로세싱 용량 (또는 더욱 일반적으로, 추정된 스루풋) 보다 상당히 크지 않을 때, 선택 유닛 (502) 은 세그먼트 조합을 후보 조합으로서 식별할 수도 있다. 일부 예들에서는, 세그먼트 조합 내의 세그먼트들의 인코딩된 데이터의 정규화된 양이 업커밍 시간 기간에 대한 추정된 이용가능한 프로세싱 용량을 엄밀히 초과하지 않을 때에만, 선택 유닛 (502) 이 세그먼트 조합을 후보 조합으로서 식별할 수도 있다.
일부 예들에서는, 선택 유닛 (502) 이 세그먼트들에 대한 우선순위 값들, 추정된 이용가능한 프로세싱 용량, 및 재생 버퍼 (505) 내의 비디오 데이터의 현재의 재생 지속기간에 기초하여 세그먼트들을 선택할 수도 있다. 재생 버퍼 (505) 는 디코딩된 비디오 데이터가 재생될 때까지 디코딩된 비디오 데이터를 저장할 수도 있다. 디코딩된 비디오 데이터를 재생 버퍼 (505) 내에 저장하는 것은 일시적인 네트워크 대역폭 감소들로 인한 디코딩된 비디오 데이터의 재생 동안의 중단들을 방지할 수도 있다. 이러한 예들에서는, 이용가능한 프로세싱 용량이 주어질 경우에 세그먼트 조합 내의 세그먼트들을 디코딩하기 위한 추정된 시간이 세그먼트 조합 내의 세그먼트들의 재생 지속기간과, 재생 버퍼 (505) 내의 비디오 데이터의 현재의 재생 지속기간의 합보다 작거나 동일할 때, 선택 유닛 (502) 은 세그먼트 조합을 후보 조합으로서 식별할 수도 있다.
후보 조합들을 식별한 후, 선택 유닛 (502) 은 후보 조합들의 각각에 대한 서비스 품질 (QoS) 점수들을 계산할 수 있다 (758). 후보 조합에 대한 QoS 점수는 후보 조합 내의 세그먼트들과 연관된 우선순위 값들에 기초할 수도 있다. 선택 유닛 (502) 은 도 7 에 대하여 위에서 제공된 예들에 의해 설명된 방식들로 후보 조합들에 대한 QoS 점수들을 계산할 수도 있다.
후보 조합들에 대한 QoS 점수들을 계산한 후, 선택 유닛 (502) 은 후보 조합들 중으로부터 승리 조합을 식별할 수도 있다 (760). 선택 유닛 (502) 은 도 7 에 관해 위에서 설명된 방식들과 같은 다양한 방식들로 승리 조합을 식별할 수 있다.
이러한 방식으로, 클라이언트 디바이스 (102) 는 추정된 스루풋을 결정할 수도 있고, 추정된 스루풋과, 멀티미디어 컨텐츠의 표현들의 세그먼트들에 대한 우선순위 값들에 적어도 부분적으로 기초하여, 세그먼트들 중의 하나 이상을 선택할 수도 있다. 표현들은 상이한 비트 레이트들에서 인코딩된 비디오 데이터를 포함하고, 세그먼트들의 각각은 개별적으로 취출가능하며, 세그먼트들은 표현들의 특정한 시간적인 섹션들에 대응한다. 클라이언트 디바이스 (102) 는 하나 이상의 선택된 세그먼트들을 프로세싱 (예를 들어, 취출 및/또는 디코딩) 할 수도 있다.
도 9 는 일 예의 컴퓨팅 디바이스 (800) 의 블록도이다. 컴퓨팅 디바이스 (800) 는 정보를 프로세싱하는 물리적 디바이스이다. 일부 사례들에서는, 클라이언트 디바이스 (102) 및 서버 디바이스 (104) 가 컴퓨팅 디바이스 (800) 와 유사한 하나 이상의 컴퓨팅 디바이스들을 포함한다.
컴퓨팅 디바이스 (800) 는 데이터 저장 시스템 (802), 메모리 (804), 보조 저장 시스템 (806), 프로세싱 시스템 (808), 입력 인터페이스 (810), 디스플레이 인터페이스 (812), 통신 인터페이스 (814), 및 하나 이상의 통신 매체들 (816) 을 포함한다. 통신 매체들 (816) 은 프로세싱 시스템 (808), 입력 인터페이스 (810), 디스플레이 인터페이스 (812), 통신 인터페이스 (814), 메모리 (804), 및 보조 저장 시스템 (806) 사이의 데이터 통신을 가능하게 할 수도 있다. 독자들은 컴퓨팅 디바이스 (800) 가 도 9 의 예에 도시된 것들에 부가하여 부품들을 포함할 수 있다는 것을 이해할 것이다. 또한, 독자들은 일부 컴퓨팅 디바이스들이 도 9 의 예에 도시된 부품들의 전부를 포함하지는 않는다는 것을 이해할 것이다.
컴퓨터-판독가능 매체는 프로세싱 시스템 (808) 이 그로부터 데이터를 판독할 수 있는 매체일 수도 있다. 용어 컴퓨터-판독가능 매체들은 컴퓨터 저장 매체들 및 통신 매체들을 지칭할 수 있다. 컴퓨터 저장 매체들은 추후의 취출을 위하여 데이터를 저장하는 물리적 디바이스들을 포함할 수도 있다. 컴퓨터 저장 매체들은 비-일시적 (non-transitory) 일 수도 있다. 예를 들어, 컴퓨터 저장 매체들은 전파된 신호 (propagated signal) 들을 배타적으로 포함하지는 않는다. 컴퓨터 저장 매체들은 휘발성 저장 매체들 및 비-휘발성 저장 매체들을 포함할 수도 있다. 일 예의 유형들의 컴퓨터 저장 매체들은 랜덤-액세스 메모리 (random-access memory; RAM) 유닛들, 판독-전용 메모리 (read-only memory; ROM) 디바이스들, 고체 상태 메모리 디바이스들, 광학 디스크들 (예를 들어, 컴팩트 디스크들, DVD 들, 블루레이 (BluRay) 디스크들, 등), 자기 디스크 드라이브들, 자기 테이프 드라이브들, 및 추후의 취출을 위하여 데이터를 저장하는 다른 유형들의 디바이스들을 포함할 수 있다. 통신 매체는 하나의 디바이스가 그 상에서 또 다른 디바이스로 데이터를 통신할 수 있는 매체를 포함할 수도 있다. 일 예의 유형들의 통신 매체들은 통신 네트워크들, 통신 케이블들, 무선 통신 링크들, 통신 버스들, 및 하나의 디바이스가 그 상에서 또 다른 디바이스로 데이터를 통신할 수 있는 다른 매체를 포함할 수도 있다.
데이터 저장 시스템 (802) 은 추후의 취출을 위하여 데이터를 저장하는 시스템일 수도 있다. 도 9 의 예에서는, 데이터 저장 시스템 (802) 이 메모리 (804) 및 보조 저장 시스템 (806) 을 포함한다. 메모리 (804) 및 보조 저장 시스템 (806) 은 나중의 취출을 위하여 데이터를 저장할 수도 있다. 도 9 의 예에서는, 메모리 (804) 가 컴퓨터 판독가능 명령들 (818) 및 프로그램 데이터 (820) 를 저장한다. 보조 저장 시스템 (806) 은 컴퓨터-판독가능 명령들 (822) 및 프로그램 데이터 (824) 를 저장한다. 물리적으로, 메모리 (804) 및 보조 저장 시스템 (806) 은 하나 이상의 컴퓨터 저장 매체들을 각각 포함할 수도 있다.
프로세싱 시스템 (808) 은 데이터 저장 시스템 (802) 에 결합될 수도 있다. 프로세싱 시스템 (808) 은 컴퓨터-판독가능 명령들을 판독 및 실행할 수도 있다. 프로세싱 시스템 (808) 에 의한 컴퓨터-판독가능 명령들의 실행은 컴퓨팅 디바이스 (800) 가 컴퓨터-판독가능 명령들에 의해 표시된 작업들을 수행하도록 할 수도 있다. 예를 들어, 프로세싱 시스템 (808) 에 의한 컴퓨터-판독가능 명령들의 실행은 컴퓨팅 디바이스 (800) 가 기본 입력/출력 시스템 (Basic Input/Output System) 들, 오퍼레이팅 시스템들, 시스템 프로그램들, 애플리케이션 프로그램들을 제공하도록 할 수 있거나, 컴퓨팅 디바이스 (800) 가 다른 기능성을 제공하도록 할 수 있다. 또 다른 예에서, 프로세싱 시스템 (808) 에 의한 컴퓨터-판독가능 명령들의 실행은 컴퓨팅 디바이스 (800) 가 서버 디바이스 (104) 의 세그먼테이션 유닛 (302), 우선순위 유닛 (304), 매니페스트 발생 유닛 (306), 및/또는 서버 애플리케이션 (308) 을 제공하도록 할 수 있다. 또 다른 예에서, 프로세싱 시스템 (808) 에 의한 컴퓨터-판독가능 명령들의 실행은 컴퓨팅 디바이스 (800) 가 클라이언트 디바이스 (102) 의 제어 유닛 (500), 선택 유닛 (502), 취출 유닛 (504), 렌더링 유닛 (506), 및 출력 유닛 (508)을 제공하도록 할 수 있다.
프로세싱 시스템 (808) 은 하나 이상의 컴퓨터-판독가능 매체들로부터 컴퓨터-판독가능 명령들을 판독할 수도 있다. 예를 들어, 프로세싱 시스템 (808) 은 메모리 (804) 및 보조 저장 시스템 (806) 상에 저장된 컴퓨터-판독가능 명령들 (818 및 822) 을 판독 및 실행할 수 있다.
프로세싱 시스템 (808) 은 하나 이상의 프로세싱 유닛들 (826) 을 포함할 수도 있다. 프로세싱 유닛들 (826) 은 컴퓨터-판독가능 명령들을 실행하는 물리적 디바이스들을 포함할 수도 있다. 프로세싱 유닛들 (826) 은 컴퓨터-판독가능 명령들을 실행하는 다양한 유형들의 물리적 디바이스들을 포함할 수 있다. 예를 들어, 프로세싱 유닛들 (826) 중의 하나 이상은 컴퓨터-판독가능 명령들을 실행하는, 마이크로프로세서, 마이크로프로세서 내의 프로세싱 코어, 디지털 신호 프로세서, 그래픽 프로세싱 유닛들, 범용 그래픽 프로세싱 유닛, 또는 또 다른 디바이스 또는 물리적 디바이스를 포함할 수 있다.
입력 인터페이스 (810) 는 컴퓨팅 디바이스 (800) 가 입력 디바이스 (828) 로부터 입력을 수신하는 것을 가능하게 할 수도 있다. 입력 디바이스 (828) 는 사용자로부터 입력을 수신하는 디바이스를 포함할 수도 있다. 입력 디바이스 (828) 는 사용자들로부터 입력을 수신하는 다양한 유형들의 디바이스들을 포함할 수 있다. 예를 들어, 입력 디바이스 (828) 는 사용자로부터 입력을 수신하는, 키보드, 터치 스크린, 마우스, 마이크로폰, 키패드, 조이스틱, 두뇌-컴퓨터 (brain-computer) 인터페이스 디바이스, 또는 또 다른 유형의 디바이스를 포함할 수 있다. 일부 사례들에서는, 입력 디바이스 (828) 가 컴퓨팅 디바이스 (800) 의 하우징 내부로 통합될 수도 있다. 다른 사례들에서는, 입력 디바이스 (828) 가 컴퓨팅 디바이스 (800) 의 하우징 외부에 있을 수도 있다.
디스플레이 인터페이스 (812) 는 컴퓨팅 디바이스 (800) 가 디스플레이 디바이스 (830) 상에 출력을 디스플레이하는 것을 가능하게 할 수도 있다. 디스플레이 디바이스 (830) 는 출력을 디스플레이하는 디바이스일 수도 있다. 일 예의 유형들의 디스플레이 디바이스들은 출력을 디스플레이 하는, 모니터들, 터치 스크린들, 디스플레이 스크린들, 텔레비전들, 및 다른 유형들의 디바이스들일 수도 있다. 일부 사례들에서는, 디스플레이 디바이스 (830) 가 컴퓨팅 디바이스 (800) 의 하우징 내부로 통합될 수도 있다. 다른 사례들에서는, 디스플레이 디바이스 (830) 가 컴퓨팅 디바이스 (800) 의 하우징 외부에 있을 수도 있다.
통신 인터페이스 (814) 는 통신 디바이스 (800) 가 하나 이상의 통신 매체들 상에서 데이터를 전송 및 수신하는 것을 가능하게 할 수도 있다. 통신 인터페이스 (814) 는 다양한 유형들의 디바이스들을 포함할 수 있다. 예를 들어, 통신 인터페이스 (814) 는 컴퓨팅 디바이스 (800) 가 하나 이상의 통신 매체들 상에서 데이터를 전송 및 수신하는 것을 가능하게 하는, 네트워크 인터페이스 카드 (Network Interface Card; NIC), 무선 네트워크 어댑터, 범용 직렬 버스 (Universal Serial Bus; USB) 포트, 또는 또 다른 유형의 디바이스를 포함할 수 있다.
하나 이상의 예들에서는, 설명된 기능들이 하드웨어, 소프트웨어, 펌웨어, 또는 그 임의의 조합으로 구현될 수도 있다. 소프트웨어로 구현될 경우, 기능들은 컴퓨터-판독가능 매체 상의 하나 이상의 명령들 또는 코드로서 저장 도는 송신될 수도 있고, 하드웨어-기반 프로세싱 유닛에 의해 실행될 수도 있다. 컴퓨터-판독가능 매체들은 데이터 저장 매체들과 같은 실재적인 매체에 대응하는 컴퓨터-판독가능 저장 매체들, 또는 예를 들어, 통신 프로토콜에 따라 하나의 장소로부터 또 다른 장소로 컴퓨터 프로그램의 전송을 용이하게 하는 임의의 매체를 포함하는 통신 매체들을 포함할 수도 있다. 이러한 방식으로, 컴퓨터-판독가능 매체들은 (1) 비-일시적인 실재적인 컴퓨터-판독가능 저장 매체들, 또는 (2) 신호 또는 반송파와 같은 통신 매체에 대응할 수도 있다. 데이터 저장 매체들은 이 개시물에서 설명된 기술들의 구현을 위하여 명령들, 코드 및/또는 데이터 구조들을 취출하기 위해 하나 이상의 컴퓨터들 또는 하나 이상의 프로세서들에 의해 액세스될 수 있는 임의의 이용가능한 매체들일 수도 있다. 컴퓨터 프로그램 제품은 컴퓨터-판독가능 매체를 포함할 수도 있다.
제한이 아닌 예로서, 이러한 컴퓨터-판독가능 저장 매체들은, 명령들 또는 데이터 구조들의 형태로 원하는 프로그램 코드를 저장하기 위해 이용될 수 있으며 컴퓨터에 의해 액세스될 수 있는, RAM, ROM, EEPROM, CD-ROM 또는 다른 광학 디스크 저장 장치, 자기 디스크 저장 장치, 또는 다른 자기 저장 디바이스들, 플래쉬 메모리, 또는 임의 다른 매체를 포함할 수 있다. 또한, 임의의 접속은 컴퓨터-판독가능 매체라고 적절하게 칭해진다. 예를 들어, 동축 케이블, 광섬유 케이블, 트위스트 페어 (twisted pair), 디지털 가입자 회선 (digital subscriber line; DSL), 또는 적외선, 라디오 (radio), 및 마이크로파 (microwave) 와 같은 무선 기술들을 이용하여 웹사이트, 서버, 또는 다른 원격 소스로부터 명령들이 송신되는 경우, 동축 케이블, 광섬유 케이블, 트위스트 페어, DSL, 또는 적외선, 라디오, 및 마이크로파와 같은 무선 기술들은 매체의 정의 내에 포함된다. 그러나, 컴퓨터-판독가능 저장 매체들 및 데이터 저장 매체들은 접속들, 반송파들, 신호들, 또는 다른 일시적인 매체들을 포함하지 않지만, 그 대신에, 비-일시적인, 실재적인 저장 매체들에 관한 것이라는 것을 이해해야 한다. 여기에서 이용된 바와 같은 디스크 (disk) 및 디스크 (disc) 는 컴팩트 디스크 (compact disc; CD), 레이저 디스크, 광학 디스크, 디지털 다기능 디스크 (digital versatile disc; DVD), 플로피 디스크 및 블루레이 디스크 (Blu-ray disc) 를 포함하고, 여기서 디스크 (disk) 들은 통상 데이터를 자기적으로 재생하는 반면, 디스크 (disc) 들은 데이터를 레이저들로 광학적으로 재생한다. 상기의 조합들은 컴퓨터-판독가능 매체들의 범위 내에 또한 포함되어야 한다.
명령들은 하나 이상의 디지털 신호 프로세서 (digital signal processor; DSP) 들, 범용 마이크로프로세서들, 애플리케이션 특정 집적 회로 (application specific integrated circuit; ASIC) 들, 필드 프로그래밍가능 로직 어레이 (field programmable logic array; FPGA) 들, 또는 다른 등가의 집적된 또는 별개의 로직 회로와 같은 하나 이상의 프로세서들에 의해 실행될 수도 있다. 따라서, 여기에서 이용되는 바와 같은 용어 "프로세서" 는 상기한 구조 중의 임의의 것 또는 여기에서 설명된 기술들의 구현을 위해 적당한 임의의 다른 구조를 지칭할 수도 있다. 또한, 일부 양상들에서는, 여기에서 설명된 기능성이 인코딩 및 디코딩을 위해 구성되거나 조합된 코덱 (codec) 내에 통합되는 전용 하드웨어 및/또는 소프트웨어 모듈들 내에 제공될 수도 있다. 또한, 기술들은 하나 이상의 회로들 또는 로직 요소들 내에서 완전히 구현될 수 있다.
이 개시물의 기술들은 무선 핸드셋 (wireless handset), 집적 회로 (integrated circuit; IC) 또는 IC 의 세트 (예를 들어, 칩셋) 를 포함하는 광범위한 디바이스들 또는 장치들 내에 구현될 수도 있다. 다양한 부품들, 모듈들, 또는 유닛들은 개시된 기술들을 수행하도록 구성된 디바이스들의 기능적 양상들을 강조하기 위하여 이 개시물에서 설명되지만, 상이한 하드웨어 유닛들에 의한 실현을 반드시 요구하지는 않는다. 오히려, 위에서 설명된 바와 같이, 다양한 유닛들은 코덱 하드웨어 유닛 내에 조합될 수도 있거나, 적당한 소프트웨어 및/또는 펌웨어와 함께, 위에서 설명된 바와 같은 하나 이상의 프로세서들을 포함하는 상호작용 하드웨어 유닛들의 집합에 의해 제공될 수도 있다.
다양한 예들이 설명되었다. 이러한 그리고 다른 예들은 다음의 청구항들에 의해 정의된 발명의 범위 내에 있다.

Claims (70)

  1. 비디오 데이터를 프로세싱하는 방법으로서,
    추정된 스루풋 (throughput) 을 결정하는 단계,
    서버 디바이스로부터, 복수의 세그먼트 그룹들의 각각의 세그먼트 그룹에 대한 각각의 우선순위 값을 표시하는 정보를 수신하는 단계로서,
    상기 복수의 세그먼트 그룹들의 각각의 세그먼트 그룹에 대해:
    상기 각각의 세그먼트 그룹은 각각의 복수의 세그먼트들을 포함하고,
    상기 각각의 세그먼트 그룹은 나머지 세그먼트 그룹들과는 상이한 각각의 미디어 컨텐츠의 시간적인 섹션에 대응되며,
    상기 각각의 세그먼트 그룹의 각각의 세그먼트는 상기 미디어 컨텐츠의 동일한 각각의 시간적인 섹션들을 나타내고, 상기 각각의 세그먼트는 개별적으로 취출가능하며, 상기 미디어 컨텐츠의 복수의 표현들의 상이한 표현으로부터의 것이고, 상기 표현들의 각각은 상이한 비트 레이트로 인코딩되며, 상기 각각의 세그먼트 그룹에 대한 각각의 우선순위 값은, 다른 표현들보다 더 높은 비트 레이트를 갖는 상기 복수의 표현들에서의 표현으로부터의 상기 각각의 시간적인 섹션에 대한 세그먼트를 선택하는 것의 중요도를 나타내는, 상기 각각의 우선순위 값을 표시하는 정보를 수신하는 단계;
    상기 복수의 세그먼트 그룹들 중 각각의 세그먼트 그룹의 세그먼트를 선택하는 선택 동작을 수행하는 단계로서, 상기 선택 동작을 수행하는 단계는, 상기 추정된 스루풋과 상기 세그먼트 그룹들에 대한 상기 우선순위 값들에 적어도 부분적으로 기초하여, 상기 각각의 세그먼트 그룹의 세그먼트들을 선택하는 단계를 포함하는, 상기 선택 동작을 수행하는 단계; 및
    상기 하나 이상의 선택된 세그먼트들을 프로세싱하는 단계를 포함하는, 비디오 데이터를 프로세싱하는 방법.
  2. 제 1 항에 있어서,
    상기 추정된 스루풋은 통신 네트워크의 대역폭인, 비디오 데이터를 프로세싱하는 방법.
  3. 제 2 항에 있어서,
    적응적 스트리밍 네트워크 프로토콜에 따라 상기 선택된 세그먼트들을 요청하는 단계를 더 포함하는, 비디오 데이터를 프로세싱하는 방법.
  4. 제 1 항에 있어서,
    상기 추정된 스루풋은 하나 이상의 프로세서들이 업커밍 시간 기간 동안에 디코딩할 수 있는 미디어 데이터의 양의 추정치인, 비디오 데이터를 프로세싱하는 방법.
  5. 제 1 항에 있어서,
    상기 세그먼트들을 선택하는 단계는, 상기 세그먼트 그룹들에 대한 상기 우선순위 값들, 상기 추정된 스루풋, 및 추가적으로 재생 버퍼에서의 비디오 데이터의 현재의 재생 지속기간에 기초하여 상기 각각의 세그먼트 그룹의 세그먼트들을 선택하는 단계를 포함하는, 비디오 데이터를 프로세싱하는 방법.
  6. 제 1 항에 있어서,
    상기 추정된 스루풋은 통신 네트워크의 추정된 대역폭이고,
    상기 선택된 세그먼트들에 대한 추정된 전송 시간은, 상기 선택된 세그먼트들의 재생 지속기간과 재생 버퍼에서의 비디오 데이터의 상기 현재의 재생 지속기간의 합보다 작거나 동일하고, 상기 선택된 세그먼트들에 대한 상기 추정된 전송 시간은, 상기 추정된 대역폭과 상기 선택된 세그먼트들 내의 비트들의 총 수에 적어도 부분적으로 기초하는, 비디오 데이터를 프로세싱하는 방법.
  7. 제 1 항에 있어서,
    상기 선택된 세그먼트들에 의해 표현된 프레임들의 시퀀스들을 렌더링하는 단계, 및
    상기 프레임들의 시퀀스들을 디스플레이 디바이스 상에 제시하는 단계를 더 포함하는, 비디오 데이터를 프로세싱하는 방법.
  8. 제 1 항에 있어서,
    매니페스트 파일을 저장하는 단계로서, 상기 복수의 세그먼트 그룹들의 각각의 세그먼트 그룹에 대해서, 상기 매니페스트 파일은 상기 각각의 세그먼트 그룹의 상기 세그먼트들에 대한 URL 들과, 상기 각각의 세그먼트 그룹에 대한 상기 우선순위 값들을 표시하는 정보를 특정하는, 상기 매니페스트 파일을 저장하는 단계, 및
    상기 선택된 세그먼트들에 대한 요청을 생성하기 위해 상기 선택된 세그먼트들에 대한 ULR 들을 이용하는 단계를 더 포함하는, 비디오 데이터를 프로세싱하는 방법.
  9. 제 1 항에 있어서,
    상기 선택된 세그먼트들을 프로세싱하는 단계는, 상기 선택된 세그먼트들을 디코딩하는 단계를 포함하는, 비디오 데이터를 프로세싱하는 방법.
  10. 제 9 항에 있어서,
    상기 각각의 세그먼트 그룹의 세그먼트들을 선택하는 단계는,
    복수의 후보 조합들을 식별하는 단계로서, 상기 복수의 후보 조합들의 각각의 후보 조합들에 대하여,
    상기 각각의 후보 조합은 업커밍 (upcoming) 시간 기간 내에 있는 각각의 상기 세그먼트 그룹들 중 하나의 세그먼트를 포함하고,
    상기 각각의 후보 조합 내의 세그먼트들의 비트 레이트들의 평균은, 상기 추정된 스루풋보다 상당히 크지 않은, 상기 복수의 후보 조합들을 식별하는 단계;
    상기 업커밍 시간 기간 내에 있는 상기 세그먼트 그룹들에 대한 상기 우선순위 값들에 기초하여, 상기 복수의 후보 조합들의 각각의 후보 조합에 대한 각각의 점수들을 계산하는 단계, 및
    상기 후보 조합들에 대한 상기 점수들에 기초하여, 상기 복수의 후보 조합들 로부터 승리 조합을 식별하는 단계를 포함하는, 비디오 데이터를 프로세싱하는 방법.
  11. 제 10 항에 있어서,
    상기 선택 동작을 수행하는 단계는, 상기 업커밍 시간 기간 내에 있는 세그먼트 그룹의 각각의 세그먼트에 대한 각각의 우선순위 값들을 계산하기 위해, 상기 업커밍 시간 기간 내에 있는 상기 세그먼트 그룹들에 대한 상기 우선순위 값들을 이용하는 단계를 포함하고;
    상기 복수의 후보 조합들의 각각의 후보 조합에 대한 각각의 점수들을 계산하는 단계는, 상기 복수의 후보 조합들의 각각의 후보 조합에 대하여, 각각의 후보 조합에서의 상기 세그먼트들에 대한 우선순위 값들을 합산함으로써, 상기 각각의 후보 조합에 대한 상기 각각의 점수들을 계산하는 단계를 포함하는, 비디오 데이터를 프로세싱하는 방법.
  12. 제 10 항에 있어서,
    상기 복수의 후보 조합들의 상기 각각의 후보 조합들에 대한 상기 각각의 점수들을 계산하는 단계는, 상기 복수의 후보 조합들의 각각의 후보 조합에 대하여, 상기 각각의 후보 조합 내의 상기 세그먼트들의 피크 신호-대-잡음비 값들에 기초하여 상기 각각의 후보 조합에 대한 상기 각각의 점수를 계산하는 단계를 포함하는, 비디오 데이터를 프로세싱하는 방법.
  13. 제 10 항에 있어서,
    상기 선택 동작을 수행하는 단계는, 상기 업커밍 시간 기간 내에 있는 세그먼트 그룹의 각각의 세그먼트에 대한 각각의 우선순위 값들을 계산하기 위해, 상기 업커밍 시간 기간 내에 있는 상기 세그먼트 그룹들에 대한 상기 우선순위 값들을 이용하는 단계를 포함하고,
    상기 복수의 후보 조합들의 각각의 후보 조합에 대한 각각의 점수들을 계산하는 단계는, 상기 복수의 후보 조합들의 각각의 후보 조합에 대하여, 각각의 후보 조합에서의 상기 세그먼트들에 대한 우선순위 값들의 기하 평균 계산함으로써, 상기 각각의 후보 조합에 대한 상기 각각의 점수들을 계산하는 단계를 포함하는, 비디오 데이터를 프로세싱하는 방법.
  14. 삭제
  15. 삭제
  16. 컴퓨팅 디바이스로서,
    비디오 데이터를 저장하도록 구성된 하나 이상의 컴퓨터 저장 매체; 및
    하나 이상의 프로세서들을 포함하고,
    상기 하나 이상의 프로세서들은,
    추정된 스루풋을 결정하고,
    서버 디바이스로부터, 복수의 세그먼트 그룹들의 각각의 세그먼트 그룹에 대한 우선순위 값들을 표시하는 정보를 수신하는 것으로서,
    상기 복수의 세그먼트 그룹들의 각각의 세그먼트 그룹에 대해:
    상기 각각의 세그먼트 그룹은 각각의 복수의 세그먼트들을 포함하고,
    상기 각각의 세그먼트 그룹은 나머지 세그먼트 그룹들과는 상이한 각각의 미디어 컨텐츠의 시간적인 섹션에 대응되며,
    상기 각각의 세그먼트 그룹의 각각의 세그먼트는 상기 미디어 컨텐츠의 동일한 각각의 시간적인 섹션들을 나타내고, 상기 각각의 세그먼트는 개별적으로 취출가능하며, 상기 미디어 컨텐츠의 복수의 표현들의 상이한 표현으로부터의 것이고, 상기 표현들의 각각은 상이한 비트 레이트로 인코딩되며, 상기 각각의 세그먼트 그룹에 대한 각각의 우선순위 값은, 다른 표현들보다 더 높은 비트 레이트를 갖는 상기 복수의 표현들에서의 표현으로부터의 상기 각각의 시간적인 섹션에 대한 세그먼트를 선택하는 것의 중요도를 나타내는, 상기 우선순위 값들을 표시하는 정보를 수신하고;
    상기 복수의 세그먼트 그룹들 중 각각의 세그먼트 그룹의 세그먼트를 선택하는 선택 동작을 수행하는 것으로서, 상기 선택 동작을 수행하는 것은, 상기 추정된 스루풋과 상기 세그먼트 그룹들에 대한 상기 우선순위 값들에 적어도 부분적으로 기초하여, 상기 각각의 세그먼트 그룹의 세그먼트들을 선택하는 것을 포함하는, 상기 선택 동작을 수행하고; 그리고
    상기 선택된 세그먼트들을 프로세싱하도록 구성되는, 컴퓨팅 디바이스.
  17. 제 16 항에 있어서,
    상기 추정된 스루풋은 통신 네트워크의 대역폭인, 컴퓨팅 디바이스.
  18. 제 17 항에 있어서,
    상기 하나 이상의 프로세서들은 적응적 스트리밍 네트워크 프로토콜에 따라 상기 선택된 세그먼트들을 요청하도록 구성되는, 컴퓨팅 디바이스.
  19. 제 16 항에 있어서,
    상기 추정된 스루풋은 상기 하나 이상의 프로세서들이 업커밍 시간 기간 동안에 디코딩할 수 있는 미디어 데이터의 양의 추정치인, 컴퓨팅 디바이스.
  20. 제 16 항에 있어서,
    상기 하나 이상의 프로세서들은 상기 세그먼트 그룹에 대한 상기 우선순위 값들, 상기 추정된 스루풋, 및 추가적으로 재생 버퍼에서의 비디오 데이터의 현재의 재생 지속기간에 기초하여, 각각의 세그먼트 그룹의 상기 세그먼트들을 선택하도록 구성되는, 컴퓨팅 디바이스.
  21. 제 16 항에 있어서,
    상기 추정된 스루풋은 통신 네트워크의 추정된 대역폭이고,
    상기 선택된 세그먼트들에 대한 추정된 전송 시간은, 상기 선택된 세그먼트들의 재생 지속기간과 재생 버퍼에서의 비디오 데이터의 현재의 재생 지속기간의 합보다 작거나 동일하고, 상기 선택된 세그먼트들에 대한 상기 추정된 전송 시간은, 상기 추정된 대역폭과 상기 선택된 세그먼트들 내의 비트들의 총 수에 기초하는, 컴퓨팅 디바이스.
  22. 제 16 항에 있어서,
    상기 선택된 세그먼트들을 프로세싱하기 위해, 상기 하나 이상의 프로세서들은,
    상기 선택된 세그먼트들에 의해 표현된 프레임들의 시퀀스들을 렌더링하고, 그리고
    상기 프레임들의 시퀀스들을 디스플레이 디바이스 상에 제시하는, 컴퓨팅 디바이스.
  23. 제 16 항에 있어서,
    상기 컴퓨팅 디바이스는 매니페스트 파일을 저장하고, 상기 복수의 세그먼트 그룹들의 각각의 세그먼트 그룹에 대해서, 상기 매니페스트 파일은 상기 각각의 세그먼트 그룹의 상기 세그먼트들에 대한 URL 들과, 상기 각각의 세그먼트 그룹에 대한 상기 우선순위 값들을 표시하는 정보를 특정하고,
    상기 하나 이상의 프로세서들은 상기 선택된 세그먼트들에 대한 요청들을 발생하기 위하여 상기 선택된 세그먼트들에 대한 ULR 들을 이용하도록 구성되는, 컴퓨팅 디바이스.
  24. 제 16 항에 있어서,
    상기 하나 이상의 프로세서들은,
    상기 선택된 세그먼트들을 디코딩하도록 구성되는, 컴퓨팅 디바이스.
  25. 제 16 항에 있어서,
    상기 하나 이상의 프로세서들은,
    복수의 후보 조합들을 식별하는 것으로서, 상기 복수의 후보 조합들의 각각의 후보 조합에 대하여,
    상기 각각의 후보 조합은 업커밍 시간 기간 내에 있는 각각의 상기 세그먼트 그룹들 중 하나의 세그먼트를 포함하고,
    상기 각각의 후보 조합 내의 세그먼트들의 비트 레이트들의 평균은 상기 추정된 스루풋보다 상당히 크지 않은, 상기 복수의 후보 조합들을 식별하고,
    상기 업커밍 시간 기간 내에 있는 상기 세그먼트 그룹들에 대한 상기 우선순위 값들에 기초하여, 상기 복수의 후보 조합들의 각각의 후보 조합에 대한 각각의 점수를 계산하며, 그리고
    상기 후보 조합들의 상기 점수들에 기초하여, 상기 복수의 후보 조합들로부터 승리 조합을 식별하도록
    구성되는, 컴퓨팅 디바이스.
  26. 제 25 항에 있어서,
    상기 하나 이상의 프로세서들은:
    상기 업커밍 시간 기간 내에 있는 세그먼트 그룹의 각각의 세그먼트에 대한 각각의 우선순위 값들을 계산하기 위해, 상기 업커밍 시간 기간 내에 있는 상기 세그먼트 그룹들에 대한 상기 우선순위 값들을 이용하고,
    상기 복수의 후보 조합들의 각각의 후보 조합에 대하여, 각각의 후보 조합에서의 상기 세그먼트들에 대한 우선순위 값들을 합산함으로써, 상기 각각의 후보 조합에 대한 상기 각각의 점수들을 계산하도록 구성되는, 컴퓨팅 디바이스.
  27. 제 25 항에 있어서,
    상기 하나 이상의 프로세서들은,
    상기 복수의 후보 조합들의 각각의 후보 조합에 대하여, 상기 각각의 후보 조합 내의 상기 세그먼트들의 피크 신호-대-잡음비 값들에 기초하여 상기 각각의 후보 조합에 대한 상기 각각의 점수를 계산하도록 구성되는, 컴퓨팅 디바이스.
  28. 제 25 항에 있어서,
    상기 하나 이상의 프로세스들은,
    상기 업커밍 시간 기간 내에 있는 세그먼트 그룹의 각각의 세그먼트에 대한 각각의 우선순위 값들을 계산하기 위해, 상기 업커밍 시간 기간 내에 있는 상기 세그먼트 그룹들에 대한 상기 우선순위 값들을 이용하고,
    상기 복수의 후보 조합들의 각각의 후보 조합에 대하여, 각각의 후보 조합에서의 상기 세그먼트들에 대한 우선순위 값들의 기하 평균을 계산함으로써, 상기 각각의 후보 조합에 대한 상기 각각의 점수들을 계산하도록 구성되는, 컴퓨팅 디바이스.
  29. 삭제
  30. 삭제
  31. 컴퓨팅 디바이스로서,
    추정된 스루풋을 결정하는 수단,
    서버 디바이스로부터, 복수의 세그먼트 그룹들의 각각의 세그먼트 그룹에 대한 각각의 우선순위 값을 표시하는 정보를 수신하는 수단으로서,
    상기 복수의 세그먼트 그룹들의 각각의 세그먼트 그룹에 대해:
    상기 각각의 세그먼트 그룹은 각각의 복수의 세그먼트들을 포함하고,
    상기 각각의 세그먼트 그룹은 나머지 세그먼트 그룹들과는 상이한 각각의 미디어 컨텐츠의 시간적인 섹션에 대응되며,
    상기 각각의 세그먼트 그룹의 각각의 세그먼트는 상기 미디어 컨텐츠의 동일한 각각의 시간적인 섹션들을 나타내고, 상기 각각의 세그먼트는 개별적으로 취출가능하며, 상기 미디어 컨텐츠의 복수의 표현들의 상이한 표현으로부터의 것이고, 상기 표현들의 각각은 상이한 비트 레이트로 인코딩되며, 상기 각각의 세그먼트 그룹에 대한 각각의 우선순위 값은, 다른 표현들보다 더 높은 비트 레이트를 갖는 상기 복수의 표현들에서의 표현으로부터의 상기 각각의 시간적인 섹션에 대한 세그먼트를 선택하는 것의 중요도를 나타내는, 상기 각각의 우선순위 값을 표시하는 정보를 수신하는 수단;
    상기 복수의 세그먼트 그룹들 중 각각의 세그먼트 그룹의 세그먼트를 선택하는 선택 동작을 수행하는 수단으로서, 상기 선택 동작을 수행하는 수단은, 상기 추정된 스루풋과 상기 세그먼트 그룹들에 대한 상기 우선순위 값들에 적어도 부분적으로 기초하여, 상기 각각의 세그먼트 그룹의 세그먼트들을 선택하는 수단을 포함하는, 상기 선택 동작을 수행하는 수단; 및
    상기 선택된 세그먼트들을 프로세싱하는 수단을 포함하는, 컴퓨팅 디바이스.
  32. 제 31 항에 있어서,
    상기 추정된 스루풋은 통신 네트워크의 대역폭인, 컴퓨팅 디바이스.
  33. 제 31 항에 있어서,
    적응적 스트리밍 네트워크 프로토콜에 따라 상기 선택된 세그먼트들을 요청하는 수단을 더 포함하는, 컴퓨팅 디바이스.
  34. 제 31 항에 있어서,
    상기 추정된 스루풋은 하나 이상의 프로세서들이 업커밍 시간 기간 동안에 디코딩할 수 있는 미디어 데이터의 양의 추정치인, 컴퓨팅 디바이스.
  35. 제 31 항에 있어서,
    상기 선택된 세그먼트들을 디코딩하는 수단을 포함하는, 컴퓨팅 디바이스.
  36. 제 31 항에 있어서,
    복수의 후보 조합들을 식별하는 수단으로서, 상기 복수의 후보 조합들의 각각의 후보 조합들에 대하여,
    상기 각각의 후보 조합은 업커밍 시간 기간 내에 있는 각각의 상기 세그먼트 그룹들 중 하나의 세그먼트를 포함하고,
    상기 각각의 후보 조합 내의 세그먼트들의 비트 레이트들의 평균은, 상기 추정된 스루풋보다 상당히 크지 않은, 상기 복수의 후보 조합들을 식별하는 수단,
    상기 업커밍 시간 기간 내에 있는 상기 세그먼트 그룹들에 대한 상기 우선순위 값들에 기초하여, 상기 복수의 후보 조합들의 각각의 후보 조합에 대한 각각의 점수들을 계산하는 수단, 및
    상기 후보 조합들에 대한 상기 점수들에 기초하여, 상기 복수의 후보 조합들로부터 승리 조합을 식별하는 수단을 포함하는, 컴퓨팅 디바이스.
  37. 삭제
  38. 삭제
  39. 명령들을 저장한 컴퓨터-판독가능 저장 매체로서,
    상기 명령들은, 실행될 경우, 하나 이상의 프로세서들로 하여금,
    추정된 스루풋을 결정하도록 하고,
    서버 디바이스로부터, 복수의 세그먼트 그룹들의 각각의 세그먼트 그룹에 대한 각각의 우선순위 값을 표시하는 정보를 수신하는 것으로서,
    상기 복수의 세그먼트 그룹들의 각각의 세그먼트 그룹에 대해:
    상기 각각의 세그먼트 그룹은 각각의 복수의 세그먼트들을 포함하고,
    상기 각각의 세그먼트 그룹은 나머지 세그먼트 그룹들과는 상이한 각각의 미디어 컨텐츠의 시간적인 섹션에 대응되며,
    상기 각각의 세그먼트 그룹의 각각의 세그먼트는 상기 미디어 컨텐츠의 동일한 각각의 시간적인 섹션들을 나타내고, 상기 각각의 세그먼트는 개별적으로 취출가능하며, 상기 미디어 컨텐츠의 복수의 표현들의 상이한 표현으로부터의 것이고, 상기 표현들의 각각은 상이한 비트 레이트로 인코딩되며,
    상기 각각의 세그먼트 그룹에 대한 각각의 우선순위 값은, 다른 표현들보다 더 높은 비트 레이트를 갖는 상기 복수의 표현들에서의 표현으로부터의 상기 각각의 시간적인 섹션에 대한 세그먼트를 선택하는 것의 중요도를 나타내는, 상기 각각의 우선순위 값을 표시하는 정보를 수신하고;
    상기 복수의 세그먼트 그룹들 중 각각의 세그먼트 그룹의 세그먼트를 선택하는 선택 동작을 수행하는 것으로서, 상기 선택 동작을 수행하는 것은, 상기 추정된 스루풋과 상기 세그먼트 그룹들에 대한 상기 우선순위 값들에 적어도 부분적으로 기초하여, 상기 각각의 세그먼트 그룹의 세그먼트들을 선택하는 것을 포함하는, 상기 선택 동작을 수행하고; 그리고
    상기 선택된 세그먼트들을 프로세싱하도록 하는, 명령들을 저장한 컴퓨터-판독가능 저장 매체.
  40. 제 39 항에 있어서,
    상기 추정된 스루풋은 통신 네트워크의 대역폭인, 명령들을 저장한 컴퓨터-판독가능 저장 매체.
  41. 제 40 항에 있어서,
    상기 명령들은, 실행될 경우, 상기 하나 이상의 프로세서들로 하여금,
    적응적 스트리밍 네트워크 프로토콜에 따라 상기 선택된 세그먼트들을 요청하게 하는, 명령들을 저장한 컴퓨터-판독가능 저장 매체.
  42. 제 39 항에 있어서,
    상기 추정된 스루풋은 상기 하나 이상의 프로세서들이 업커밍 시간 기간 동안에 디코딩할 수 있는 미디어 데이터의 양의 추정치인, 명령들을 저장한 컴퓨터-판독가능 저장 매체.
  43. 제 39 항에 있어서,
    상기 명령들은, 실행될 경우, 상기 하나 이상의 프로세서들로 하여금 상기 선택된 세그먼트들을 디코딩하도록 하는, 명령들을 저장한 컴퓨터-판독가능 저장 매체.
  44. 제 39 항에 있어서,
    상기 명령들은, 실행될 경우, 상기 하나 이상의 프로세서들로 하여금,
    복수의 후보 조합들을 식별하도록 하는 것으로서, 상기 복수의 후보 조합들의 각각의 후보 조합에 대하여,
    상기 각각의 후보 조합은 업커밍 시간 기간 내에 있는 각각의 상기 세그먼트 그룹들 중 하나의 세그먼트를 포함하고,
    상기 각각의 후보 조합 내의 세그먼트들의 비트 레이트들의 평균은 상기 추정된 스루풋보다 상당히 크지 않은, 상기 복수의 후보 조합들을 식별하도록 하고,
    상기 업커밍 시간 기간 내에 있는 상기 세그먼트 그룹들에 대한 상기 우선순위 값들에 기초하여, 상기 복수의 후보 조합들의 각각의 후보 조합에 대한 각각의 점수를 계산하도록 하고, 그리고
    상기 후보 조합들의 상기 점수들에 기초하여, 상기 복수의 후보 조합들로부터 승리 조합을 식별하도록 하는, 명령들을 저장한 컴퓨터-판독가능 저장 매체.
  45. 삭제
  46. 삭제
  47. 적응적 스트리밍 네트워크 프로토콜을 통해 비디오 데이터를 제공하는 방법으로서,
    복수의 세그먼트 그룹들의 각각의 세그먼트 그룹에 대한 각각의 우선순위 값을 표시하는 정보를 전송하는 단계로서,
    상기 복수의 세그먼트 그룹들의 각각의 세그먼트 그룹에 대해:
    상기 각각의 세그먼트 그룹은 각각의 복수의 세그먼트들을 포함하고,
    상기 각각의 세그먼트 그룹은 나머지 세그먼트 그룹들과는 상이한 각각의 미디어 컨텐츠의 시간적인 섹션에 대응되며,
    상기 각각의 세그먼트 그룹의 각각의 세그먼트는 상기 미디어 컨텐츠의 동일한 각각의 시간적인 섹션들을 나타내고, 상기 각각의 세그먼트는 개별적으로 취출가능하며, 상기 미디어 컨텐츠의 복수의 표현들의 상이한 표현으로부터의 것이고, 상기 표현들의 각각은 상이한 비트 레이트로 인코딩되며, 상기 각각의 세그먼트 그룹에 대한 각각의 우선순위 값은, 다른 표현들보다 더 높은 비트 레이트를 갖는 상기 복수의 표현들에서의 표현으로부터의 상기 각각의 시간적인 섹션에 대한 세그먼트를 선택하는 것의 중요도를 나타내는, 상기 각각의 우선순위 값을 표시하는 정보를 전송하는 단계;
    클라이언트 디바이스로부터의 하나 이상의 요청들에 응답하여 상기 적응적 스트리밍 네트워크 프로토콜을 통해 요청된 세그먼트들을 전송하는 단계로서, 상기 요청된 세그먼트들은 상기 세그먼트들 중에서 상기 하나 이상의 요청들에 의해 특정된 세그먼트들인, 상기 요청된 세그먼트들을 전송하는 단계를 포함하는, 적응적 스트리밍 네트워크 프로토콜을 통해 비디오 데이터를 제공하는 방법.
  48. 제 47 항에 있어서,
    상기 우선순위 값들을 상기 세그먼트 그룹들에 배정하는 단계, 및
    상기 우선순위 값들을 상기 미디어 컨텐츠에 대한 매니페스트 파일에 저장하는 단계를 더 포함하는, 적응적 스트리밍 네트워크 프로토콜을 통해 비디오 데이터를 제공하는 방법.
  49. 삭제
  50. 삭제
  51. 삭제
  52. 컴퓨팅 디바이스로서,
    비디오 데이터를 저장하도록 구성된 하나 이상의 컴퓨터 저장 매체; 및
    상기 하나 이상의 프로세서들을 포함하고,
    상기 하나 이상의 프로세서들은,
    복수의 세그먼트 그룹들의 각각의 세그먼트 그룹에 대한 각각의 우선순위 값을 표시하는 정보를 전송하는 것으로서,
    상기 복수의 세그먼트 그룹들의 각각의 세그먼트 그룹에 대해:
    상기 각각의 세그먼트 그룹은 각각의 복수의 세그먼트들을 포함하고,
    상기 각각의 세그먼트 그룹은 나머지 세그먼트 그룹들과는 상이한 각각의 미디어 컨텐츠의 시간적인 섹션에 대응되며,
    상기 각각의 세그먼트 그룹의 각각의 세그먼트는 상기 미디어 컨텐츠의 동일한 각각의 시간적인 섹션들을 나타내고, 상기 각각의 세그먼트는 개별적으로 취출가능하며, 상기 미디어 컨텐츠의 복수의 표현들의 상이한 표현으로부터의 것이고, 상기 표현들의 각각은 상이한 비트 레이트로 인코딩되며, 상기 각각의 세그먼트 그룹에 대한 각각의 우선순위 값은, 다른 표현들보다 더 높은 비트 레이트를 갖는 상기 복수의 표현들에서의 표현으로부터의 상기 각각의 시간적인 섹션에 대한 세그먼트를 선택하는 것의 중요도를 나타내는, 상기 각각의 우선순위 값을 표시하는 정보를 전송하고;
    클라이언트 디바이스로부터의 하나 이상의 요청들에 응답하여 적응적 스트리밍 네트워크 프로토콜을 통해 요청된 세그먼트들을 전송하는 것으로서, 상기 요청된 세그먼트들은 상기 세그먼트들 중에서 상기 요청들에 의해 특정된 세그먼트들인, 상기 요청된 세그먼트들을 전송하도록
    구성되는, 컴퓨팅 디바이스.
  53. 제 52 항에 있어서,
    상기 하나 이상의 프로세서들은,
    상기 우선순위 값들을 상기 세그먼트 그룹들에 배정하고, 그리고
    상기 우선순위 값들을 상기 미디어 컨텐츠에 대한 매니페스트 파일에 저장하도록
    구성되는, 컴퓨팅 디바이스.
  54. 삭제
  55. 삭제
  56. 삭제
  57. 컴퓨팅 디바이스로서,
    복수의 세그먼트 그룹들의 각각의 세그먼트 그룹에 대한 각각의 우선순위 값을 표시하는 정보를 전송하는 수단으로서,
    상기 복수의 세그먼트 그룹들의 각각의 세그먼트 그룹에 대해:
    상기 각각의 세그먼트 그룹은 각각의 복수의 세그먼트들을 포함하고,
    상기 각각의 세그먼트 그룹은 나머지 세그먼트 그룹들과는 상이한 각각의 미디어 컨텐츠의 시간적인 섹션에 대응되며,
    상기 각각의 세그먼트 그룹의 각각의 세그먼트는 상기 미디어 컨텐츠의 동일한 각각의 시간적인 섹션들을 나타내고, 상기 각각의 세그먼트는 개별적으로 취출가능하며, 상기 미디어 컨텐츠의 복수의 표현들의 상이한 표현으로부터의 것이고, 상기 표현들의 각각은 상이한 비트 레이트로 인코딩되며, 상기 각각의 세그먼트 그룹에 대한 각각의 우선순위 값은, 다른 표현들보다 더 높은 비트 레이트를 갖는 상기 복수의 표현들에서의 표현으로부터의 상기 각각의 시간적인 섹션에 대한 세그먼트를 선택하는 것의 중요도를 나타내는, 상기 각각의 우선순위 값을 표시하는 정보를 전송하는 수단; 및
    클라이언트 디바이스로부터의 하나 이상의 요청들에 응답하여 적응적 스트리밍 네트워크 프로토콜을 통해 요청된 세그먼트들을 전송하는 수단으로서, 상기 요청된 세그먼트들은 상기 세그먼트들 중에서 상기 요청들에 의해 특정된 세그먼트들인, 상기 요청된 세그먼트들을 전송하는 수단을 포함하는, 컴퓨팅 디바이스.
  58. 제 57 항에 있어서,
    상기 우선순위 값들을 상기 세그먼트 그룹들에 배정하는 수단, 및
    상기 우선순위 값들을 상기 미디어 컨텐츠에 대한 매니페스트 파일에 저장하는 수단을 더 포함하는, 컴퓨팅 디바이스.
  59. 삭제
  60. 삭제
  61. 삭제
  62. 명령들을 저장한 컴퓨터-판독가능 저장 매체로서,
    상기 명령들은 컴퓨팅 디바이스의 하나 이상의 프로세서들에 의해 실행될 경우, 상기 컴퓨팅 디바이스로 하여금,
    복수의 세그먼트 그룹들의 각각의 세그먼트 그룹에 대한 각각의 우선순위 값을 표시하는 정보를 전송하는 것으로서,
    상기 복수의 세그먼트 그룹들의 각각의 세그먼트 그룹에 대해:
    상기 각각의 세그먼트 그룹은 각각의 복수의 세그먼트들을 포함하고,
    상기 각각의 세그먼트 그룹은 나머지 세그먼트 그룹들과는 상이한 각각의 미디어 컨텐츠의 시간적인 섹션에 대응되며,
    상기 각각의 세그먼트 그룹의 각각의 세그먼트는 상기 미디어 컨텐츠의 동일한 각각의 시간적인 섹션들을 나타내고, 상기 각각의 세그먼트는 개별적으로 취출가능하며, 상기 미디어 컨텐츠의 복수의 표현들의 상이한 표현으로부터의 것이고, 상기 표현들의 각각은 상이한 비트 레이트로 인코딩되며, 상기 각각의 세그먼트 그룹에 대한 각각의 우선순위 값은, 다른 표현들보다 더 높은 비트 레이트를 갖는 상기 복수의 표현들에서의 표현으로부터의 상기 각각의 시간적인 섹션에 대한 세그먼트를 선택하는 것의 중요도를 나타내는, 상기 각각의 우선순위 값을 표시하는 정보를 전송하도록 하고, 그리고
    클라이언트 디바이스로부터의 하나 이상의 요청들에 응답하여 적응적 스트리밍 네트워크 프로토콜을 통해 요청된 세그먼트들을 전송하도록 하는 것으로서, 상기 요청된 세그먼트들은 상기 세그먼트들 중에서 상기 요청들에 의해 특정된 세그먼트들인, 요청된 세그먼트들을 전송하도록 하는, 명령들을 저장한 컴퓨터-판독가능 저장 매체.
  63. 제 62 항에 있어서,
    상기 명령들은, 상기 하나 이상의 프로세서들에 의해 실행될 경우, 상기 컴퓨팅 디바이스로 하여금,
    상기 우선순위 값들을 상기 세그먼트 그룹들에 배정하도록 하고, 그리고
    상기 우선순위 값들을 상기 미디어 컨텐츠에 대한 매니페스트 파일에 저장하도록 하는, 명령들을 저장한 컴퓨터-판독가능 저장 매체.
  64. 삭제
  65. 삭제
  66. 삭제
  67. 삭제
  68. 삭제
  69. 삭제
  70. 삭제
KR1020147010625A 2011-09-21 2012-09-21 미디어 데이터의 네트워크 스트리밍을 위한 세그먼트들의 시그널링 특성들 KR101614632B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201161537407P 2011-09-21 2011-09-21
US61/537,407 2011-09-21
US13/623,589 US9445136B2 (en) 2011-09-21 2012-09-20 Signaling characteristics of segments for network streaming of media data
US13/623,589 2012-09-20
PCT/US2012/056568 WO2013044025A2 (en) 2011-09-21 2012-09-21 Signaling characteristics of segments for network streaming of media data

Publications (2)

Publication Number Publication Date
KR20140063862A KR20140063862A (ko) 2014-05-27
KR101614632B1 true KR101614632B1 (ko) 2016-04-29

Family

ID=47324355

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147010625A KR101614632B1 (ko) 2011-09-21 2012-09-21 미디어 데이터의 네트워크 스트리밍을 위한 세그먼트들의 시그널링 특성들

Country Status (6)

Country Link
US (1) US9445136B2 (ko)
EP (1) EP2759113B1 (ko)
JP (1) JP6058677B2 (ko)
KR (1) KR101614632B1 (ko)
CN (1) CN103814562B (ko)
WO (1) WO2013044025A2 (ko)

Families Citing this family (87)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9055136B2 (en) * 2011-10-13 2015-06-09 Qualcomm Incorporated Controlling streaming delay in networks
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
WO2013090280A2 (en) 2011-12-15 2013-06-20 Dolby Laboratories Licensing Corporation Bandwidth adaptation for dynamic adaptive transferring of multimedia
US8977704B2 (en) 2011-12-29 2015-03-10 Nokia Corporation Method and apparatus for flexible caching of delivered media
US9401968B2 (en) * 2012-01-20 2016-07-26 Nokia Techologies Oy Method and apparatus for enabling pre-fetching of media
US9392304B2 (en) * 2012-02-29 2016-07-12 Hulu, LLC Encoding optimization using quality level of encoded segments
US9438883B2 (en) * 2012-04-09 2016-09-06 Intel Corporation Quality of experience reporting for combined unicast-multicast/broadcast streaming of media content
WO2013163464A1 (en) * 2012-04-25 2013-10-31 Huawei Technologies Co., Ltd. Systems and methods for controlling client behavior in adaptive streaming
WO2014031885A1 (en) 2012-08-22 2014-02-27 Huawei Technologies Co., Ltd. Carriage of iso-bmff event boxes in an mpeg-2 transport stream
KR101473249B1 (ko) * 2012-10-30 2014-12-17 주식회사 케이티 콘텐츠 재생 속도 테이블 생성 서버, 디바이스 및 방법
US20140282792A1 (en) * 2013-03-15 2014-09-18 Cygnus Broadband, Inc. Video streaming with buffer occupancy prediction based quality adaptation
CN104105012B (zh) * 2013-04-03 2018-04-20 华为技术有限公司 流媒体的片段准备方法和装置
US20140372569A1 (en) * 2013-06-14 2014-12-18 Samsung Electronics Co., Ltd. Controlling dash client rate adaptation
US10033658B2 (en) * 2013-06-20 2018-07-24 Samsung Electronics Co., Ltd. Method and apparatus for rate adaptation in motion picture experts group media transport
WO2015007795A1 (en) * 2013-07-16 2015-01-22 Bitmovin Gmbh Apparatus and method for cloud assisted adaptive streaming
US20150032854A1 (en) * 2013-07-24 2015-01-29 Futurewei Technologies Inc. System and method for network-assisted adaptive streaming
US20150030071A1 (en) * 2013-07-24 2015-01-29 Broadcom Corporation Motion vector reuse for adaptive bit rate streaming
WO2015022434A1 (en) * 2013-08-16 2015-02-19 Bitmovin Gmbh Apparatus and method for constant quality optimization for adaptive streaming
JP6327809B2 (ja) * 2013-08-20 2018-05-23 キヤノン株式会社 受信装置、制御方法及びプログラム
US8850055B1 (en) * 2013-09-17 2014-09-30 Google Inc. Intelligently streaming portions of media at higher quality over a limited bandwidth connection
US9661044B2 (en) * 2013-11-08 2017-05-23 Disney Enterprises, Inc. Systems and methods for delivery of localized media assets
CN109379576B (zh) 2013-11-27 2021-07-06 交互数字专利控股公司 计算设备和调度mpeg-dash事件的方法
JP6289076B2 (ja) * 2013-12-18 2018-03-07 キヤノン株式会社 情報処理装置、情報処理方法及びプログラム
US9330101B2 (en) 2013-12-18 2016-05-03 Microsoft Technology Licensing, Llc Using constraints on media file formats to improve performance
WO2015105327A1 (ko) * 2014-01-08 2015-07-16 한국전자통신연구원 Dash를 사용하는 비디오 재생을 위한 비트 깊이 표현 방법
KR20160106701A (ko) * 2014-01-10 2016-09-12 톰슨 라이센싱 세그먼트들로 분할된 멀티미디어 콘텐츠를 수신하도록 구성된 클라이언트 단말에 의해 네트워크 정보를 획득하기 위한 방법
EP2894870A1 (en) * 2014-01-10 2015-07-15 Thomson Licensing Method for downloading, at a client terminal, an upcoming sequence of segments of a multimedia content, and corresponding terminal
WO2015104146A1 (en) * 2014-01-10 2015-07-16 Thomson Licensing Method for obtaining network information by a client terminal configured for receiving a multimedia content divided into segments
EP2894871A1 (en) * 2014-01-10 2015-07-15 Thomson Licensing Method for obtaining a network information by a client terminal configured for receiving a multimedia content divided into segments
WO2015104149A1 (en) * 2014-01-10 2015-07-16 Thomson Licensing Method for obtaining network information by a client terminal configured for receiving a multimedia content divided into segments
WO2015104147A1 (en) * 2014-01-10 2015-07-16 Thomson Licensing Method for obtaining network information by a client terminal configured for receiving a multimedia content divided into segments
JP2015136057A (ja) * 2014-01-17 2015-07-27 ソニー株式会社 通信装置、通信データ生成方法、および通信データ処理方法
EP2897337B1 (en) * 2014-01-21 2022-01-05 Alcatel Lucent Improved playback control device and method for streaming media content
US20150261425A1 (en) * 2014-03-14 2015-09-17 Apple Inc. Optimized presentation of multimedia content
FR3020544A1 (fr) * 2014-04-24 2015-10-30 Orange Transmission et telechargement de contenu decompose en segments de donnees temporels
US20170055046A1 (en) * 2014-05-21 2017-02-23 Lg Electronics Inc. Broadcast signal transmitting/receiving method and device
CN104010232B (zh) * 2014-05-23 2017-12-12 惠州Tcl移动通信有限公司 一种智能播放在线视频的方法、系统、播放器及移动终端
US20150350714A1 (en) * 2014-05-29 2015-12-03 Apple Inc. Playback of video on demand
JP6419848B2 (ja) * 2014-06-30 2018-11-07 ディッシュ テクノロジーズ エル.エル.シー.DISH Technologies L.L.C. 帯域幅最適化のための適応的データセグメント配信調停
US10129312B2 (en) * 2014-09-11 2018-11-13 Microsoft Technology Licensing, Llc Dynamic video streaming based on viewer activity
EP3001633B1 (en) * 2014-09-26 2017-08-16 Alcatel Lucent Server, client, method and computer program product for adaptive streaming of media content to a client
US9794601B2 (en) * 2014-10-21 2017-10-17 Cisco Technology, Inc. Dynamic programming across multiple streams
US10142386B2 (en) 2014-10-29 2018-11-27 DLVR, Inc. Determining manifest file data used in adaptive streaming video delivery
US9426089B2 (en) 2014-10-29 2016-08-23 DLVR, Inc. Systems and methods for session-based resource assignment, delivery, performance management and measurement in a networked environment
US10084838B2 (en) 2014-10-29 2018-09-25 DLVR, Inc. Generating and using manifest files including content delivery network authentication data
US9509742B2 (en) 2014-10-29 2016-11-29 DLVR, Inc. Configuring manifest files referencing infrastructure service providers for adaptive streaming video
US10924184B2 (en) * 2014-11-07 2021-02-16 Sony Corporation Transmission apparatus, transmission method, reception apparatus, and reception method
US10268698B2 (en) * 2014-11-21 2019-04-23 Adobe Inc. Synchronizing different representations of content
US10666698B1 (en) 2014-12-19 2020-05-26 Amazon Technologies, Inc. Bit rate selection for streaming media
US10708331B1 (en) * 2014-12-19 2020-07-07 Amazon Technologies, Inc. Generating requests for streaming media
US9686332B1 (en) * 2014-12-19 2017-06-20 Amazon Technologies, Inc. Live stream manifests for on demand content
CN107431833B (zh) 2015-02-27 2021-08-27 索尼公司 发送装置、发送方法、接收装置和接收方法
KR102352679B1 (ko) * 2015-03-25 2022-01-18 삼성전자주식회사 다중 경로 전송 제어 프로토콜을 지원하는 디바이스 및 디바이스에서 영상 데이터를 스트리밍으로 수신하는 방법
JP6601066B2 (ja) * 2015-09-01 2019-11-06 富士通コネクテッドテクノロジーズ株式会社 通信方法、通信装置及び通信プログラム
JP6601068B2 (ja) 2015-09-01 2019-11-06 富士通コネクテッドテクノロジーズ株式会社 通信方法、通信装置及び通信プログラム
JP6574974B2 (ja) 2015-09-29 2019-09-18 Run.Edge株式会社 動画像再生装置、動画像配信サーバ、動画像再生方法、動画像配信方法、動画像再生プログラム、及び動画像配信プログラム
WO2017061854A1 (en) * 2015-10-08 2017-04-13 Tradecast B.V. Client and method for playing a sequence of video streams, and corresponding server and computer program product
US10735485B2 (en) * 2015-12-04 2020-08-04 Telefonaktiebolaget Lm Ericsson (Publ) Technique for adaptive streaming of temporally scaling media segment levels
EP3387835A1 (en) * 2015-12-11 2018-10-17 VID SCALE, Inc. Scheduling multiple-layer video segments
US10291680B2 (en) * 2015-12-23 2019-05-14 Board Of Trustees Of Michigan State University Streaming media using erasable packets within internet queues
US10512109B2 (en) * 2016-01-15 2019-12-17 Telefonaktiebolaget Lm Ericsson (Publ) Transmitting communication device, receiving communication device and methods performed thereby
US10230812B1 (en) * 2016-01-29 2019-03-12 Amazon Technologies, Inc. Dynamic allocation of subtitle packaging
JP2017143475A (ja) * 2016-02-12 2017-08-17 日本放送協会 配信管理装置、受信装置、分散処理システム、及びプログラム
JP6920578B2 (ja) * 2016-03-02 2021-08-18 パナソニックIpマネジメント株式会社 映像ストリーミング装置、映像編集装置および映像配信システム
WO2017175047A1 (en) * 2016-04-07 2017-10-12 Telefonaktiebolaget Lm Ericsson (Publ) Media stream prioritization
GB2549970A (en) * 2016-05-04 2017-11-08 Canon Europa Nv Method and apparatus for generating a composite video from a pluarity of videos without transcoding
US10701415B2 (en) * 2016-05-19 2020-06-30 Arris Enterprises Llc Method and apparatus for segmenting data
US10389785B2 (en) * 2016-07-17 2019-08-20 Wei-Chung Chang Method for adaptively streaming an audio/visual material
US10063612B2 (en) * 2016-09-30 2018-08-28 Amazon Technologies, Inc. Request-based encoding for streaming content portions
WO2018060489A1 (en) * 2016-09-30 2018-04-05 British Telecommunications Public Limited Company Viewer importance adaptive bit rate delivery
EP3520421B1 (en) * 2016-09-30 2023-03-22 British Telecommunications public limited company Viewer importance adaptive bit rate delivery
EP3539270B1 (en) * 2016-11-10 2022-07-20 Telefonaktiebolaget LM Ericsson (PUBL) Resource segmentation to improve delivery performance
US10595069B2 (en) 2016-12-05 2020-03-17 Adobe Inc. Prioritizing tile-based virtual reality video streaming using adaptive rate allocation
JP6247782B1 (ja) * 2017-02-15 2017-12-13 パナソニック株式会社 端末装置、映像配信システムおよび映像配信方法
EP3896979A1 (en) * 2017-06-02 2021-10-20 Vid Scale, Inc. 360-degree video delivery over next generation network
US10652166B2 (en) * 2017-06-27 2020-05-12 Cisco Technology, Inc. Non-real time adaptive bitrate recording scheduler
JP7142040B2 (ja) * 2017-07-06 2022-09-26 フラウンホーファー-ゲゼルシャフト・ツール・フェルデルング・デル・アンゲヴァンテン・フォルシュング・アインゲトラーゲネル・フェライン 分割ビデオストリーミングの概念
US10318301B2 (en) * 2017-08-31 2019-06-11 Micron Technology, Inc. Managed multiple die memory QoS
GB201721847D0 (en) * 2017-12-22 2018-02-07 Telecom Paris Tech Priority map for media files
WO2019130763A1 (ja) * 2017-12-28 2019-07-04 ソニー株式会社 情報処理装置、情報処理方法およびプログラム
CN107948206B (zh) * 2018-01-02 2020-11-20 联想(北京)有限公司 一种多媒体数据下载/或上传的方法及系统
CN110111793B (zh) 2018-02-01 2023-07-14 腾讯科技(深圳)有限公司 音频信息的处理方法、装置、存储介质及电子装置
US10623788B2 (en) * 2018-03-23 2020-04-14 At&T Intellectual Property I, L.P. Methods to estimate video playback buffer
US10623736B2 (en) * 2018-06-14 2020-04-14 Telefonaktiebolaget Lm Ericsson (Publ) Tile selection and bandwidth optimization for providing 360° immersive video
US11019123B2 (en) * 2018-06-22 2021-05-25 International Business Machines Corporation Multi-bitrate component sharding
US11196795B2 (en) * 2020-03-25 2021-12-07 Arris Enterprises Llc Method and apparatus for predicting video decoding time
US11425182B1 (en) * 2020-12-30 2022-08-23 Meta Platforms, Inc. Systems and methods for dynamically encoding media streams

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090282162A1 (en) 2008-05-12 2009-11-12 Microsoft Corporation Optimized client side rate control and indexed file layout for streaming media
US20090292819A1 (en) 2008-05-23 2009-11-26 Porto Technology, Llc System and method for adaptive segment prefetching of streaming media
US20090300204A1 (en) 2008-05-30 2009-12-03 Microsoft Corporation Media streaming using an index file

Family Cites Families (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6446125B1 (en) * 1997-03-28 2002-09-03 Honeywell International Inc. Ripple scheduling for end-to-end global resource management
SE513188C2 (sv) * 1998-03-25 2000-07-24 Ericsson Telefon Ab L M Kvotalgoritm för övervakning av störningsprocesser
WO2003009581A1 (en) * 2001-07-19 2003-01-30 British Telecommunications Public Limited Company Video stream switching
US6880051B2 (en) * 2002-03-14 2005-04-12 International Business Machines Corporation Method, system, and program for maintaining backup copies of files in a backup storage device
US7483487B2 (en) * 2002-04-11 2009-01-27 Microsoft Corporation Streaming methods and systems
US20030233464A1 (en) 2002-06-10 2003-12-18 Jonathan Walpole Priority progress streaming for quality-adaptive transmission of data
US20030236904A1 (en) * 2002-06-19 2003-12-25 Jonathan Walpole Priority progress multicast streaming for quality-adaptive transmission of data
KR100486713B1 (ko) * 2002-09-17 2005-05-03 삼성전자주식회사 멀티미디어 스트리밍 장치 및 방법
SG111978A1 (en) 2002-11-20 2005-06-29 Victor Company Of Japan An mpeg-4 live unicast video streaming system in wireless network with end-to-end bitrate-based congestion control
CN101065963B (zh) 2003-08-29 2010-09-15 Rgb网络有限公司 提供低延迟类vcr效果和节目改变的视频多路复用器系统
DE60318451T2 (de) * 2003-11-12 2008-12-11 Sony Deutschland Gmbh Automatische Zusammenfassung für eine Vorschlagsmaschine von Fernsehprogrammen beruhend auf Verbraucherpräferenzen
US7504968B2 (en) * 2004-02-13 2009-03-17 Hewlett-Packard Development Company, L.P. Media data decoding device
JP4408383B2 (ja) 2004-03-18 2010-02-03 国立大学法人 奈良先端科学技術大学院大学 情報配信装置、情報配信システムおよび情報配信方法
US7818444B2 (en) * 2004-04-30 2010-10-19 Move Networks, Inc. Apparatus, system, and method for multi-bitrate content streaming
KR100631743B1 (ko) 2004-11-26 2006-10-11 삼성전자주식회사 스케일러블 비트스트림의 효율적 전송 방법 및 장치
US9209956B2 (en) 2005-08-22 2015-12-08 Qualcomm Incorporated Segment sensitive scheduling
JP2007158414A (ja) 2005-11-30 2007-06-21 Matsushita Electric Ind Co Ltd コンテンツ配信システム及びコンテンツ仲介サーバ
US9432433B2 (en) * 2006-06-09 2016-08-30 Qualcomm Incorporated Enhanced block-request streaming system using signaling or block creation
US8606966B2 (en) * 2006-08-28 2013-12-10 Allot Communications Ltd. Network adaptation of digital content
US7640358B2 (en) * 2006-11-09 2009-12-29 Sharp Laboratories Of America, Inc. Methods and systems for HTTP streaming using an intelligent HTTP client
US8576858B2 (en) 2006-12-13 2013-11-05 Viasat, Inc. Multiple transmission paths for hierarchical layers
US8351513B2 (en) 2006-12-19 2013-01-08 Allot Communications Ltd. Intelligent video signal encoding utilizing regions of interest information
US8578045B2 (en) * 2007-02-14 2013-11-05 Microsoft Corporation Adaptive bandwidth utilization
US9396024B2 (en) * 2008-10-14 2016-07-19 Vmware, Inc. Online computation of cache occupancy and performance
US20100121974A1 (en) * 2008-11-11 2010-05-13 Einarsson Torbjoem Stepwise probing for adaptive streaming in a packet communication network
WO2010111261A1 (en) * 2009-03-23 2010-09-30 Azuki Systems, Inc. Method and system for efficient streaming video dynamic rate adaptation
US8484368B2 (en) * 2009-10-02 2013-07-09 Disney Enterprises, Inc. Method and system for optimizing download and instantaneous viewing of media files
JP2011087103A (ja) 2009-10-15 2011-04-28 Sony Corp コンテンツ再生システム、コンテンツ再生装置、プログラム、コンテンツ再生方法、およびコンテンツサーバを提供
US9124642B2 (en) * 2009-10-16 2015-09-01 Qualcomm Incorporated Adaptively streaming multimedia
US9294526B2 (en) * 2009-12-28 2016-03-22 Microsoft Technology Licensing, Llc Managing multiple dynamic media streams
RU2690755C2 (ru) * 2010-02-19 2019-06-05 Телефонактиеболагет Л М Эрикссон (Пабл) Способ и устройство для переключения воспроизведений в потоковой передаче по протоколу передачи гипертекста
EP2360923A1 (en) 2010-02-24 2011-08-24 Thomson Licensing Method for selectively requesting adaptive streaming content and a device implementing the method
US8516147B2 (en) * 2010-02-26 2013-08-20 Simula Innovation Sa Data segmentation, request and transfer method
US8504713B2 (en) * 2010-05-28 2013-08-06 Allot Communications Ltd. Adaptive progressive download
US8190677B2 (en) * 2010-07-23 2012-05-29 Seawell Networks Inc. Methods and systems for scalable video delivery
CN103222276B (zh) * 2010-09-20 2017-04-19 数码士有限公司 将在http流式传输中发生表达切换时实现的处理方法
US9479739B2 (en) * 2010-10-04 2016-10-25 Telefonaktiebolaget Lm Ericsson (Publ) Methods and apparatuses for adaptive control of streaming
US20120143994A1 (en) * 2010-12-03 2012-06-07 Motorola-Mobility, Inc. Selectively receiving media content
WO2012107788A1 (en) * 2011-02-08 2012-08-16 Telefonaktiebolaget L M Ericsson (Publ) Method and system for mobility support for caching adaptive http streaming content in cellular networks

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090282162A1 (en) 2008-05-12 2009-11-12 Microsoft Corporation Optimized client side rate control and indexed file layout for streaming media
US20090292819A1 (en) 2008-05-23 2009-11-26 Porto Technology, Llc System and method for adaptive segment prefetching of streaming media
US20090300204A1 (en) 2008-05-30 2009-12-03 Microsoft Corporation Media streaming using an index file

Also Published As

Publication number Publication date
US20130103849A1 (en) 2013-04-25
WO2013044025A2 (en) 2013-03-28
US9445136B2 (en) 2016-09-13
CN103814562B (zh) 2017-03-08
EP2759113A2 (en) 2014-07-30
JP2015501090A (ja) 2015-01-08
KR20140063862A (ko) 2014-05-27
EP2759113B1 (en) 2017-01-04
CN103814562A (zh) 2014-05-21
JP6058677B2 (ja) 2017-01-11
WO2013044025A3 (en) 2013-06-27

Similar Documents

Publication Publication Date Title
KR101614632B1 (ko) 미디어 데이터의 네트워크 스트리밍을 위한 세그먼트들의 시그널링 특성들
EP3459247B1 (en) Most-interested region in an image
US9270721B2 (en) Switching between adaptation sets during media streaming
EP2764674B1 (en) Switching between representations during network streaming of coded multimedia data
JP5937275B2 (ja) ネットワークストリーミングのための失われたメディアデータの置換
US9042449B2 (en) Systems and methods for dynamic transcoding of indexed media file formats
US11665219B2 (en) Processing media data using a generic descriptor for file format boxes
US20150095450A1 (en) Utilizing multiple switchable adaptation sets for streaming media data
US11765444B2 (en) Streaming media data including an addressable resource index track

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
LAPS Lapse due to unpaid annual fee