KR20150144458A - Method and device for delivery of scalable digital content - Google Patents
Method and device for delivery of scalable digital content Download PDFInfo
- Publication number
- KR20150144458A KR20150144458A KR1020140073171A KR20140073171A KR20150144458A KR 20150144458 A KR20150144458 A KR 20150144458A KR 1020140073171 A KR1020140073171 A KR 1020140073171A KR 20140073171 A KR20140073171 A KR 20140073171A KR 20150144458 A KR20150144458 A KR 20150144458A
- Authority
- KR
- South Korea
- Prior art keywords
- data segments
- layer data
- base layer
- server
- enhancement layer
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 53
- 238000004891 communication Methods 0.000 claims abstract description 187
- 230000003044 adaptive effect Effects 0.000 claims description 15
- 238000012546 transfer Methods 0.000 claims description 14
- 230000000750 progressive effect Effects 0.000 claims description 12
- 230000002123 temporal effect Effects 0.000 claims description 8
- 230000005540 biological transmission Effects 0.000 description 46
- 238000010586 diagram Methods 0.000 description 29
- 230000004044 response Effects 0.000 description 22
- 230000015654 memory Effects 0.000 description 14
- 230000006870 function Effects 0.000 description 4
- 230000011664 signaling Effects 0.000 description 4
- 230000006978 adaptation Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000011161 development Methods 0.000 description 2
- 230000018109 developmental process Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000036541 health Effects 0.000 description 2
- 230000007774 longterm Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/234—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
- H04N21/2343—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
- H04N21/234327—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements by decomposing into layers, e.g. base layer and one or more enhancement layers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/234—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
- H04N21/2343—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
- H04N21/234345—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements the reformatting operation being performed only on part of the stream, e.g. a region of the image or a time segment
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/238—Interfacing the downstream path of the transmission network, e.g. adapting the transmission rate of a video stream to network bandwidth; Processing of multiplex streams
- H04N21/2383—Channel coding or modulation of digital bit-stream, e.g. QPSK modulation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/238—Interfacing the downstream path of the transmission network, e.g. adapting the transmission rate of a video stream to network bandwidth; Processing of multiplex streams
- H04N21/2385—Channel allocation; Bandwidth allocation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/24—Monitoring of processes or resources, e.g. monitoring of server load, available bandwidth, upstream requests
- H04N21/2405—Monitoring of the internal components or processes of the server, e.g. server load
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- General Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
Description
본 개시내용은 일반적으로 스케일러블(scalable) 디지털 콘텐츠의 스트리밍에 관한 것이다.This disclosure relates generally to the streaming of scalable digital content.
통신 기술의 최근 진보는 단순한 텍스트 및 음성 통신을 넘어 멀티미디어 통신의 증가를 초래했다. 특히, 인터넷의 급증으로, 넷플릭스(Netflix), 훌루(Hulu), 유튜브(YouTube) 등과 같은 다양한 온라인 멀티미디어 콘텐츠 제공자들이 최근 몇년 사이에 급속히 생겨났다. 이에 더해, 디지털 멀티미디어 및 다른 관련 기술들의 개발로 인해, 이러한 온라인 멀티미디어 콘텐츠 제공자들로부터의 콘텐츠를 수신할 수 있는 최종-사용자 디바이스들(end-user devices)의 범위는 몇몇 예를 들자면, 개인용 컴퓨터로부터 스마트폰, 디지털 텔레비전, 및 비디오 게임 콘솔로 확대되었다. 최근, 멀티미디어 트래픽은 인터넷의 대역폭의 전부는 아니더라도 적어도 상당한 부분을 차지한다.Recent advances in communication technology have resulted in an increase in multimedia communications beyond simple text and voice communications. In particular, with the surge in the Internet, a variety of online multimedia content providers such as Netflix, Hulu, and YouTube have emerged in recent years. In addition, due to the development of digital multimedia and other related technologies, the range of end-user devices capable of receiving content from such on-line multimedia content providers may range, for example, from a personal computer Smart phones, digital televisions, and video game consoles. In recent years, multimedia traffic occupies at least a substantial portion of the bandwidth of the Internet, if not all of it.
위 전개에 발맞추어, 온라인 멀티미디어 콘텐츠 제공자들에 의해 제공되는 서비스를 이용하는 최종-사용자가 최선의 경험을 할 수 있도록 인터넷을 통한 디지털 콘텐츠의 전달을 최적화하기 위한 지속적인 노력이 있어왔다. 멀티미디어 콘텐츠는 가변적인 품질로 그 최종-사용자들에게 제공될 수 있다. 예를 들어, 유튜브는 현재 360p, 480p, 720p와 같은 다양한 디스플레이 해상도로 비디오 콘텐츠를 제공한다. 그러나, 전달되는 콘텐츠의 품질은 콘텐츠를 요청하는 최종-사용자 디바이스의 성능(예를 들어, 최종-사용자 디바이스의 처리 능력 및 디스플레이의 크기) 및 디지털 콘텐츠 전달 당시의 이용가능한 네트워크 대역폭과 같은 다양한 인자들에 따라 각각의 전달시 마다 달라질 수 있고, 심지어 콘텐츠를 전달하는 동안에도 일정한 조정이 필요할 수 있다.In keeping with the above developments, there has been a continuing effort to optimize the delivery of digital content over the Internet so that end-users using the services provided by online multimedia content providers may have the best experience. The multimedia content can be provided to the end-users with variable quality. For example, YouTube currently offers video content at various display resolutions such as 360p, 480p, and 720p. However, the quality of the content delivered may depend on various factors such as the performance of the end-user device requesting the content (e.g., the processing power of the end-user device and the size of the display) and the available network bandwidth at the time of digital content delivery , And may require some adjustment even during delivery of the content.
개시된 내용의 실시예들은 통신 네트워크의 대역폭을 낭비하지 않으면서 빠르고 효율적인 방식으로 통신 네트워크를 통해 전달되는 디지털 콘텐츠의 품질을 동적으로 조정하는 방법들 및 디바이스들을 제공하는 것에 관한 것이다. 후속하는 요약은 개시된 내용의 다양한 실시예의 일부 측면의 기본적인 이해를 제공하기 위해서 개시된 내용을 간략하게 요약한 것이다. 이 요약은 개시된 내용을 빠짐 없이 요약한 것이 아니다. 그것은 개시된 내용의 핵심 또는 중요 요소를 식별하기 위한 것도 아니고, 개시된 내용의 범위를 기술하기 위한 것도 아니다. 그 유일한 목적은 추후 논의되는 더욱 상세한 설명에 대한 서문으로서 간략화된 형태로 일부 개념들을 제시하는 것이다.Embodiments of the disclosed subject matter relate to providing methods and devices for dynamically adjusting the quality of digital content delivered over a communications network in a fast and efficient manner without wasting bandwidth of the communications network. The following summary is a brief summary of the disclosure in order to provide a basic understanding of some aspects of the various embodiments of the disclosure. This summary is not an exhaustive summary of the disclosure. It is not intended to identify key or critical elements of the disclosed subject matter nor to delineate the scope of the disclosed subject matter. Its sole purpose is to present some concepts in a simplified form as a preface to a more detailed explanation to be discussed later.
일부 실시예들은 예를 들어, 디지털 콘텐츠를 요청하기 위한 방법을 제공한다. 그러한 실시예들에 있어서, 위 방법은 서버와의 제1 통신 접속을 설정하는 단계; 상기 서버와의 제2 통신 접속을 설정하는 단계; 상기 제1 통신 접속을 통해 복수의 기본 계층 데이터 세그먼트에 대한 제1 요청을 상기 서버로 송신하는 단계; 및 상기 제2 통신 접속을 통해 하나 이상의 향상 계층 데이터 세그먼트에 대한 하나 이상의 제2 요청을 상기 서버로 송신하는 단계 - 상기 하나 이상의 향상 계층 데이터 세그먼트와 상기 복수의 기본 계층 데이터 세그먼트의 적어도 일부는 상기 디지털 콘텐츠의 인코딩된 스트림의 적어도 일부를 구성함 - 를 포함할 수 있다.Some embodiments provide a method for requesting digital content, for example. In such embodiments, the method comprises: establishing a first communication connection with the server; Establishing a second communication connection with the server; Sending a first request for a plurality of base layer data segments over the first communication connection to the server; And transmitting at least one second request for one or more enhancement layer data segments over the second communication connection to the server, wherein the at least a portion of the one or more enhancement layer data segments and the plurality of base layer data segments comprises the digital And configure at least a portion of the encoded stream of content.
위 실시예들에 있어서, 상기 하나 이상의 향상 계층 데이터 세그먼트를 상기 복수의 기본 계층 데이터 세그먼트의 상기 적어도 일부와 함께 수신해서 디코딩하여 상기 인코딩된 스트림의 디코딩된 스트림을 제공하는 단계를 더 포함할 수 있다. 상기 제1 및 제2 통신 접속은 각각 상기 기본 계층 및/또는 향상 계층 데이터 세그먼트들의 순서화되고, 오류-검사되고 그리고/또는 신뢰가능한 전달을 제공하는 전송층 접속일 수 있다. 상기 제1 요청을 송신하는 단계는 프로그레시브 스트리밍 모드로 상기 제1 통신 접속을 통해 상기 복수의 데이터 세그먼트를 송신한도록 하는 요청을 상기 서버로 송신하는 단계를 포함할 수 있다. 위 방법은 상기 기본 계층 및 향상 계층 데이터 세그먼트들을 버퍼에 저장하는 단계; 상기 버퍼의 풀니스(fullness) 레벨을 결정하는 단계; 및 상기 버퍼의 풀니스 레벨에 기초하여 상기 복수의 기본 계층 데이터 세그먼트의 전송 레이트를 제한하기 위해 상기 서버와 통신하는 단계를 더 포함할 수 있다. 상기 서버와 통신하는 단계는 상기 서버로 송신될 복수의 확인응답(ACK) 간의 시간적 이격을 변조하는 단계 - 상기 복수의 확인 응답 각각은 상기 복수의 기본 계층 데이터 세그먼트 중 적어도 일부의 성공적 수신에 응답하여 송신됨 - 를 포함할 수 있다. 상기 서버와 통신하는 단계는 상기 버퍼의 풀니스 레벨에 반비례하도록 상기 전송 레이트를 제한하기 위해 상기 서버와 통신하는 단계를 포함할 수 있다. 상기 하나 이상의 제2 요청을 송신하는 단계는 적응적 스트리밍 방식에 기초해서 상기 제2 통신 접속을 통해 상기 하나 이상의 제2 요청을 송신하는 단계를 포함할 수 있다. 위 방법은 상기 기본 계층 및 향상 계층 데이터 세그먼트들을 버퍼에 저장하는 단계; 이용가능한 네트워크 대역폭을 추정하는 단계; 상기 추정된 이용가능한 네트워크 대역폭 및 상기 버퍼의 풀니스 레벨에 기초하여, 후속하여 수신할 하나 이상의 향상 계층 데이터 세그먼트를 결정하는 단계를 더 포함할 수 있다. 상기 이용가능한 네트워크 대역폭을 추정하는 단계는 상기 제1 통신 접속을 사용해서 이용가능한 네트워크 대역폭을 추정하는 단계를 포함할 수 있다. 상기 후속하여 수신할 하나 이상의 향상 계층 데이터 세그먼트를 결정하는 단계는 상기 추정된 이용가능한 네트워크 대역폭에 기초하여 상기 제2 통신 접속에 할당될 네트워크 대역폭을 결정하는 단계를 포함할 수 있다.In the above embodiments, the method may further comprise receiving and decoding the one or more enhancement layer data segments along with the at least a portion of the plurality of base layer data segments to provide a decoded stream of the encoded stream . The first and second communication connections may each be a transport layer connection that provides ordered, error-checked, and / or reliable delivery of the base layer and / or enhancement layer data segments. The transmitting the first request may include sending a request to the server to transmit the plurality of data segments via the first communication connection in a progressive streaming mode. The method includes storing the base layer and enhancement layer data segments in a buffer; Determining a fullness level of the buffer; And communicating with the server to limit the transfer rate of the plurality of base layer data segments based on the level of integrity of the buffer. Wherein communicating with the server comprises modulating a temporal spacing between a plurality of acknowledgments (ACKs) to be sent to the server, each of the plurality of acknowledgments responding to successful receipt of at least some of the plurality of base layer data segments Transmitted < / RTI > Communicating with the server may include communicating with the server to limit the transfer rate to inversely proportionate to the level of integrity of the buffer. Wherein transmitting the one or more second requests may include transmitting the one or more second requests over the second communication connection based on an adaptive streaming scheme. The method includes storing the base layer and enhancement layer data segments in a buffer; Estimating an available network bandwidth; And determining one or more enhancement layer data segments to be subsequently received based on the estimated available network bandwidth and the integrity level of the buffer. Estimating the available network bandwidth may include estimating available network bandwidth using the first communication connection. The step of determining the one or more enhancement layer data segments to be subsequently received may comprise determining a network bandwidth to be allocated to the second communication connection based on the estimated available network bandwidth.
다른 실시예들은, 예를 들어, 디지털 콘텐츠를 제공하기 위한 방법을 제공할 수 있다. 상기 방법은 제1 통신 접속을 통해 클라이언트로부터 복수의 기본 계층 데이터 세그먼트에 대한 제1 요청을 수신하는 단계; 상기 제1 요청에 응답하여 상기 클라이언트에 상기 제1 통신 접속을 통해 상기 복수의 기본 계층 데이터 세그먼트를 순차적으로 송신하는 단계; 제2 통신 접속을 통해 상기 클라이언트로부터 하나 이상의 향상 계층 데이터 세그먼트에 대한 적어도 하나의 제2 요청을 수신하는 단계 - 상기 하나 이상의 향상 계층 데이터 세그먼트와 상기 복수의 기본 계층 데이터 세그먼트의 적어도 일부는 상기 디지털 콘텐츠의 인코딩된 스트림의 적어도 일부를 구성함 - ; 및 상기 적어도 하나의 제2 요청에 응답하여 상기 클라이언트에 상기 제2 통신 접속을 통해 상기 하나 이상의 향상 계층 데이터 세그먼트를 송신하는 단계를 포함하할 수 있다. Other embodiments may provide a method for providing digital content, for example. The method includes receiving a first request for a plurality of base layer data segments from a client over a first communication connection; Sequentially transmitting the plurality of base layer data segments via the first communication connection to the client in response to the first request; Receiving at least one second request for one or more enhancement layer data segments from the client over a second communication connection, the at least one enhancement layer data segment and at least a portion of the plurality of base layer data segments being associated with the digital content ≪ / RTI > And transmitting the one or more enhanced layer data segments over the second communication connection to the client in response to the at least one second request.
위 실시예들에 있어서, 상기 제1 통신 접속 및 제2 통신 접속은 각각 상기 기본 계층 및/또는 향상 계층 데이터 세그먼트들의 순서화되고, 오류-검사되고 그리고/또는 신뢰가능한 전달을 제공하는 전송층 접속일 수 있다. 상기 복수의 기본 계층 데이터 세그먼트를 송신하는 단계는 프로그레시브 스트리밍 모드로 상기 복수의 기본 계층 데이터 세그먼트를 송신하는 단계를 포함할 수 있다. 상기 하나 이상의 향상 계층 데이터 세그먼트를 송신하는 단계는 적응적 스트리밍 모드로 상기 하나 이상의 향상 계층 데이터 세그먼트를 송신하는 단계를 포함할 수 있다. In the above embodiments, the first communication connection and the second communication connection are each a transport layer connection number that provides ordered, error-checked and / or reliable delivery of the base layer and / or enhancement layer data segments, have. The transmitting of the plurality of base layer data segments may comprise transmitting the plurality of base layer data segments in a progressive streaming mode. The transmitting of the one or more enhancement layer data segments may comprise transmitting the one or more enhancement layer data segments in an adaptive streaming mode.
또 다른 실시예들은, 예를 들어, 디지털 콘텐츠를 수신하기 위한 방법을 제공할 수 있다. 위 방법은 서버로부터 수신한 복수의 기본 계층 데이터 세그먼트 및 하나 이상의 향상 계층 데이터 세그먼트를 저장하기 위한 버퍼의 풀니스 레벨을 결정하는 단계; 및 상기 버퍼의 상기 풀니스 레벨에 기초해서 상기 복수의 기본 계층 데이터 세그먼트 및 상기 하나 이상의 향상 계층 데이터 세그먼트 중 적어도 하나에 이용가능한 네트워크 대역폭을 할당하는 단계를 포함할 수 있다.Still other embodiments may provide a method for receiving digital content, for example. The method comprising: determining a level of integrity of a buffer for storing a plurality of base layer data segments received from a server and one or more enhancement layer data segments; And allocating available network bandwidth to at least one of the plurality of base layer data segments and the one or more enhancement layer data segments based on the level of vulnerability of the buffer.
위 실시예들에 있어서, 상기 이용가능한 네트워크 대역폭을 할당하는 단계는, 상기 버퍼의 상기 풀니스 레벨에 기초하여 상기 복수의 기본 계층 데이터 세그먼트의 전송 레이트를 제한하기 위해 상기 서버와 통신하는 단계를 더 포함할 수 있다. 상기 이용가능한 네트워크 대역폭을 할당하는 단계는, 상기 버퍼의 풀니스 레벨에 기초하여 후속하여 수신할 하나 이상의 향상 계층 데이터 세그먼트를 결정하는 단계를 더 포함할 수 있다. 상기 서버와 통신하는 단계는 상기 기본 계층 액세스 유닛은 상기 서버로 송신될 복수의 확인응답(ACK) 간의 시간적 이격을 변조하는 단계 - 상기 복수의 확인 응답 각각은 상기 복수의 기본 계층 데이터 세그먼트 중 적어도 일부의 성공적 수신에 응답하여 송신되는 것임 - 를 포함할 수 있다. 상기 서버와 통신하는 단계는 상기 버퍼의 풀니스 레벨에 반비례하여 상기 전송 레이트를 제한하도록 상기 서버와 통신하는 단계를 포함할 수 있다. 위 방법은 상기 복수의 기본 계층 데이터 세그먼트를 수신하기 위한 제1 통신 접속 및 상기 하나 이상의 향상 계층 데이터 세그먼트를 수신하기 위한 제2 통신 접속을 설정하는 단계를 더 포함할 수 있다. 위 방법은 상기 제1 통신 접속을 사용해서 이용가능한 네트워크 대역폭을 추정하는 단계를 더 포함할 수 있다.In the above embodiments, allocating the available network bandwidth may further comprise communicating with the server to limit the transfer rate of the plurality of base layer data segments based on the level of vulnerability of the buffer . The step of allocating the available network bandwidth may further comprise determining one or more enhancement layer data segments to be subsequently received based on the level of integrity of the buffer. Wherein communicating with the server comprises modulating the temporal spacing between a plurality of acknowledgments (ACKs) to be sent to the base layer access unit, each of the plurality of acknowledgments including at least some of the plurality of base layer data segments Lt; / RTI > is received in response to successful receipt of the request. Communicating with the server may include communicating with the server to limit the transfer rate in inverse proportion to the level of the integrity of the buffer. The method may further comprise establishing a first communication connection for receiving the plurality of base layer data segments and a second communication connection for receiving the one or more enhancement layer data segments. The method may further include estimating an available network bandwidth using the first communication connection.
또다른 실시예들은, 예를 들어, 디지털 콘텐츠를 요청하기 위한 디바이스를 제공할 수 있다. 위 디바이스는 서버와의 제1 통신 접속을 설정하고 상기 제1 통신 접속을 통해 순차적인 복수의 기본 계층 데이터 세그먼트에 대한 제1 요청을 수신하도록 구성되는 기본 계층 액세스 유닛; 및 상기 서버와의 제2 통신 접속을 설정하고 상기 제2 통신 접속을 통해 하나 이상의 향상 계층 데이터 세그먼트에 대한 적어도 하나의 제2 요청을 송신하도록 구성되는 향상 계층 액세스 유닛 - 상기 하나 이상의 향상 계층 데이터 세그먼트와 상기 복수의 기본 계층 데이터 세그먼트의 적어도 일부는 상기 디지털 콘텐츠의 인코딩된 스트림의 적어도 일부를 구성함 - 을 포함할 수 있다.Still other embodiments may provide, for example, a device for requesting digital content. Wherein the device is configured to establish a first communication connection with a server and receive a first request for a plurality of sequential base layer data segments over the first communication connection; And an enhancement layer access unit configured to establish a second communications connection with the server and to transmit at least one second request for one or more enhancement layer data segments over the second communications connection, And at least a portion of the plurality of base layer data segments constitute at least a portion of an encoded stream of the digital content.
위 실시예들에 있어서, 위 디바이스는 상기 하나 이상의 향상 계층 데이터 세그먼트를 상기 복수의 기본 계층 데이터 세그먼트 중 상기 적어도 일부와 함께 디코딩하여 상기 인코딩된 스트림의 상기 적어도 일부의 디코딩된 스트림을 제공하도록 구성되는 디코더를 더 포함할 수 있다. 상기 제1 및 제2 통신 접속들은 각각 상기 기본 계층 및/또는 향상 계층 데이터 세그먼트들의 순서화되고, 오류-검사되고 그리고/또는 신뢰가능한 전달을 제공하는 전송층 접속일 수 있다. 상기 제1 요청은 프로그레시브 스트리밍 모드로 상기 제1 통신 접속을 통해 상기 복수의 기본 계층 데이터 세그먼트를 송신하도록 하는 요청을 포함할 수 있다. 상기 디바이스는 상기 기본 계층 및 향상 계층 데이터 세그먼트들을 저장하기 위한 버퍼를 더 포함하고, 상기 통신 유닛은 상기 버퍼의 풀니스 레벨을 결정하도록 구성되는 버퍼 풀리스 할당 유닛 및 상기 버퍼의 풀니스 레벨에 기초하여 상기 복수의 기본 계층 데이터 세그먼트의 전송 레이트를 제한하기 위해 상기 서버와 통신하도록 구성된 스로틀링 유닛을 더 포함할 수 있다. 상기 스로틀링 유닛은 상기 서버로 송신될 복수의 확인응답(ACK) 간의 시간적 이격을 변조하도록 구성되고, 상기 복수의 확인 응답 각각은 상기 복수의 기본 계층 데이터 세그먼트 중 적어도 일부의 성공적 수신에 응답하여 송신되는 것일 수 있다. 상기 스로틀링 유닛은 상기 버퍼의 풀니스 레벨에 반비례하여 상기 전송 레이트를 제한하도록 상기 서버와 통신하도록 구성될 수 있다. 상기 향상 계층 액세스 유닛은 적응적 스트리밍 방식에 기초해서 상기 제2 통신 접속을 통해 상기 하나 이상의 제2 요청을 송신하도록 구성될 수 있다. 상기 디바이스는 상기 기본 계층 및 향상 계층 데이터 세그먼트들을 저장하기 위한 버퍼를 더 포함하고, 상기 통신 유닛은 이용가능한 네트워크를 추정하도록 구성된 대역폭 추정 유닛을 더 포함하고, 상기 향상 계층 액세스 유닛은 상기 추정된 이용가능한 네트워크 대역폭 및 상기 버퍼의 풀니스 레벨에 기초하여 후속해서 수신할 하나 이상의 향상 계층 데이터 세그먼트들를 결정하도록 구성되는 스케쥴링 유닛을 포함할 수 있다. 상기 대역폭 추정 유닛은 상기 제1 통신 접속을 사용해서 이용가능한 네트워크 대역폭을 추정하도록 구성될 수 있다. In the above embodiments, the device is configured to decode the one or more enhancement layer data segments with the at least a portion of the plurality of base layer data segments to provide the at least a portion of the decoded stream of the encoded stream Decoder. The first and second communication connections may each be a transport layer connection providing ordered, error-checked, and / or reliable delivery of the base layer and / or enhancement layer data segments. The first request may include a request to transmit the plurality of base layer data segments over the first communication connection in a progressive streaming mode. Wherein the device further comprises a buffer for storing the base layer and enhancement layer data segments, the communication unit comprising: a buffer poolless allocation unit configured to determine a level of integrity of the buffer; And a throttling unit configured to communicate with the server to limit the transmission rate of the plurality of base layer data segments. Wherein the throttling unit is configured to modulate the temporal spacing between a plurality of acknowledgments (ACKs) to be sent to the server, each of the plurality of acknowledgments being transmitted in response to successful receipt of at least a portion of the plurality of base layer data segments . The throttling unit may be configured to communicate with the server to limit the transmission rate in inverse proportion to the level of the buffer ' s buffer. The enhancement layer access unit may be configured to transmit the one or more second requests over the second communication connection based on an adaptive streaming scheme. Wherein the device further comprises a buffer for storing the base layer and enhancement layer data segments, wherein the communication unit further comprises a bandwidth estimation unit configured to estimate an available network, the enhancement layer access unit comprising: And a scheduling unit configured to determine one or more enhancement layer data segments to be subsequently received based on a possible network bandwidth and a health level of the buffer. The bandwidth estimation unit may be configured to estimate the available network bandwidth using the first communication connection.
또다른 실시예들은, 예를 들어, 디지털 콘텐츠를 제공하기 위한 디바이스를 제공할 수 있다. 그러한 실시예들에서, 상기 디바이스는 상기 디지털 콘텐츠의 인코딩된 버전을 구성하는 복수의 기본 계층 데이터 세그먼트 및 복수의 향상 계층 데이터 세그먼트을 함께 저장하는 저장 유닛; 및 제1 통신 접속을 통해 클라이언트로부터 상기 복수의 기본 계층 데이터 세그먼트에 대한 제1 요청을 수신하고; 상기 제1 요청에 응답하여 상기 클라이언트에 상기 제1 통신 접속을 통해 상기 복수의 기본 계층 데이터 세그먼트를 순차적으로 송신하고; 제2 통신 접속을 통해 상기 클라이언트로부터 상기 복수의 향상 계층 데이터 세그먼트 중 하나 이상의 세그먼트에 대한 적어도 하나의 제2 요청을 수신하고; 상기 적어도 하나의 제2 요청에 응답하여 상기 클라이언트에 상기 제2 통신 접속을 통해 상기 하나 이상의 향상 계층 데이터 세그먼트를 송신하도록 구성되는 통신 유닛을 포함할 수 있다.Still other embodiments may provide, for example, a device for providing digital content. In such embodiments, the device comprises: a storage unit for storing together a plurality of base layer data segments and a plurality of enhancement layer data segments constituting an encoded version of the digital content; And receive a first request for the plurality of base layer data segments from a client over a first communication connection; Sequentially send the plurality of base layer data segments via the first communication connection to the client in response to the first request; Receive at least one second request for one or more segments of the plurality of enhancement layer data segments from the client over a second communication connection; And a communication unit configured to transmit the one or more enhanced layer data segments over the second communication connection to the client in response to the at least one second request.
위 실시예들에 있어서, 상기 제1 통신 접속 및 상기 제2 통신 접속은 각각 상기 기본 계층 및/또는 향상 계층 데이터 세그먼트들의 순서화되고, 오류-검사되고 그리고/또는 신뢰가능한 전달을 제공하는 전송층 접속일 수 있다. 상기 통신 유닛은 프로그레시브 스트리밍 모드로 상기 복수의 기본 계층 데이터 세그먼트를 송신하도록 구성될 수 있다. 상기 통신 유닛은 적응적 스트리밍 모드로 상기 하나 이상의 향상 계층 데이터 세그먼트들을 송신하도록 구성될 수 있다. In the above embodiments, the first communication connection and the second communication connection are each a transport layer connection that provides ordered, error-checked and / or reliable delivery of the base layer and / or enhancement layer data segments, . The communication unit may be configured to transmit the plurality of base layer data segments in a progressive streaming mode. The communication unit may be configured to transmit the one or more enhancement layer data segments in an adaptive streaming mode.
또 다른 실시예들은, 예를 들어, 디지털 콘텐츠를 수신하기 위한 디바이스를 제공할 수 있다. 상기 디바이스는 복수의 기본 계층 데이터 세그먼트 및 하나 이상의 향상 계층 데이터 세그먼트를 수신하도록 구성되는 통신 유닛; 및 상기 기본 계층 및 향상 계층 데이터 세그먼트들을 저장하도록 구성되는 버퍼를 포함하고, 상기 통신 유닛은 상기 버퍼의 풀니스 레벨에 기초해서 상기 복수의 기본 계층 데이터 세그먼트 및 상기 하나 이상의 향상 계층 데이터 세그먼트 중 적어도 하나에 이용가능한 네크워크 대역폭을 할당하도록 추가적으로 구성될 수 있다.Still other embodiments may provide, for example, a device for receiving digital content. The device comprising: a communication unit configured to receive a plurality of base layer data segments and one or more enhancement layer data segments; And a buffer configured to store the base layer and enhancement layer data segments, wherein the communication unit is configured to store the plurality of base layer data segments and at least one of the one or more enhancement layer data segments based on a level of health of the buffer Lt; RTI ID = 0.0 > network bandwidth. ≪ / RTI >
위 실시예들에 있어서, 상기 통신 유닛은, 상기 버퍼의 상기 풀니스 레벨을 결정하도록 구성되는 버퍼 풀니스 결정 유닛; 및 상기 버퍼의 상기 풀니스 레벨에 기초하여 상기 복수의 기본 계층 데이터 세그먼트의 전송 레이트를 제한하기 위해 상기 서버와 통신하도록 구성되는 기본 계층 액세스 유닛을 더 포함할 수 있다. 상기 통신 유닛은, 상기 버퍼의 상기 풀니스 레벨을 결정하도록 구성되는 버퍼 풀니스 결정 유닛; 및 상기 버퍼의 상기 풀니스 레벨에 기초하여 후속하여 수신할 하나 이상의 향상 계층 데이터 세그먼트를 결정하도록 구성되는 향상 계층 액세스 유닛을 더 포함할 수 있다. 상기 기본 계층 액세스 유닛은 상기 서버로 송신될 복수의 확인응답(ACK) 간의 시간적 이격을 변조하도록 구성되고, 상기 복수의 확인 응답 각각은 상기 복수의 기본 계층 데이터 세그먼트 중 적어도 일부의 성공적 수신에 응답하여 송신되는 것일 수 있다. 상기 기본 계층 액세스 유닛은 상기 버퍼의 풀니스 레벨에 반비례하여 상기 전송 레이트를 제한하도록 상기 서버와 통신하도록 구성될 수 있다. 상기 통신 유닛은 상기 복수의 기본 계층 데이터 세그먼트를 수신하기 위한 제1 통신 접속 및 상기 하나 이상의 향상 계층 데이터 세그먼트를 수신하기 위한 제2 통신 접속을 설정하도록 구성될 수 있다. 상기 통신 유닛은 상기 제1 통신 접속을 사용해서 이용가능한 네트워크 대역폭을 추정하도록 구성되는 대역폭 결정 유닛을 더 포함할 수 있다. In the above embodiments, the communication unit may further include: a buffer fullness determination unit configured to determine the level of the flexibility of the buffer; And a base layer access unit configured to communicate with the server to limit the transmission rate of the plurality of base layer data segments based on the level of the security of the buffer. Wherein the communication unit comprises: a buffer fullness determination unit configured to determine the level of the integrity of the buffer; And an enhancement layer access unit configured to determine one or more enhancement layer data segments to be subsequently received based on the level of the security of the buffer. Wherein the base layer access unit is configured to modulate temporal spacing between a plurality of acknowledgments (ACKs) to be transmitted to the server, each of the plurality of acknowledgments responding to successful receipt of at least some of the plurality of base layer data segments May be transmitted. The base layer access unit may be configured to communicate with the server to limit the transmission rate in inverse proportion to the level of the buffer's integrity. The communication unit may be configured to establish a first communication connection for receiving the plurality of base layer data segments and a second communication connection for receiving the one or more enhanced layer data segments. The communication unit may further comprise a bandwidth determination unit configured to estimate an available network bandwidth using the first communication connection.
도 1은 일부 실시예들에 따라 디지털 콘텐츠를 제공하기 위한 시스템의 개략도이다.
도 2는 도 1에 도시된 서버와 같은, 서버를 예시하는 상세화된 블록도이다.
도 3은 일부 실시예들에 따른, H.264/AVC(advanced video coding) 표준의 스케일러블 비디오 코딩 확장의 계층화된 스트림 구조의 비한정적인 예시의 도면이다.
도 4는 도 1에 도시된 클라이언트와 같은 클라이언트 디바이스를 예시하는 상세화된 블록도이다.
도 5는 일부 실시예들에 따른, 이용가능한 네트워크 대역폭의 양에 기초하여 하나 이상의 향상 계층 서브-스트림들을 선택하는 것을 예시하는 도면이다.
도 6은 일부 실시예들에 따른, 디지털 콘텐츠를 수신하기 위한, 도 1의 클라이언트와 같은 클라이언트 디바이스에 의해 수행되는 방법의 흐름도이다.
도 7a는 일부 실시예들에 따른, 프로그레시브 스트리밍 모드에서의 메시지 교환을 예시하는 개념적 시그널링 도면이다.
도 7b는 일부 실시예들에 따른, 적응적 스트리밍 모드에서의 메시지 교환을 예시하는 개념적 시그널링 도면이다.
도 8은 일부 실시예들에 따른, 디지털 콘텐츠를 제공하기 위해 도 1의 서버와 같은 서버 디바이스에 의해 수행되는 방법의 흐름도이다.
도 9는 도 1에 도시된 클라이언트와 같은 클라이언트 디바이스의 또다른 실시예를 예시하는 상세화된 블록도이다.
도 10은 도 9에 도시된 기본 계층(BL) 액세스 유닛의 실시예를 예시하는 상세화된 블록도이다.
도 11은 일부 실시예들에 따른, 버퍼 풀니스(fullness)로부터 스로틀링(throttling) 파라미터를 결정하는 것에 대한 도면이다.
도 12는 도 9에 도시된 향상 계층(EL) 액세스 유닛의 실시예를 예시하는 상세화된 블록도이다.
도 13a 및 13b는 일부 실시예들에 따른, 하나 이상의 향상 계층 데이터 세그먼트들을 선택하는 것을 예시하는 도면이다.
도 14는 일부 실시예들에 따른 기본 계층 및 향상 계층 데이터 세그먼트들에 대한 네트워크 대역폭을 나누기 위해, 도 1의 클라이언트와 같은 클라이언트 디바이스에 의해 수행되는 흐름도이다.
도 15는 본원에 기술된 구성요소들 및 그 프로세스들 중 하나 이상을 구현하기 위해 사용될 수 있는 컴퓨팅 시스템 아키텍쳐를 예시하는 블록도이다.1 is a schematic diagram of a system for providing digital content in accordance with some embodiments.
2 is a detailed block diagram illustrating a server, such as the server shown in FIG.
3 is a non-limiting illustrative drawing of a layered stream structure of a scalable video coding extension of the H.264 / AVC (Advanced Video Coding) standard, in accordance with some embodiments.
4 is a detailed block diagram illustrating a client device, such as the client shown in FIG.
5 is a diagram illustrating selecting one or more enhancement layer sub-streams based on the amount of available network bandwidth, in accordance with some embodiments.
Figure 6 is a flow diagram of a method performed by a client device, such as the client of Figure 1, for receiving digital content, in accordance with some embodiments.
7A is a conceptual signaling diagram illustrating message exchange in a progressive streaming mode, in accordance with some embodiments.
7B is a conceptual signaling diagram illustrating message exchange in an adaptive streaming mode, in accordance with some embodiments.
Figure 8 is a flow diagram of a method performed by a server device, such as the server of Figure 1, to provide digital content, in accordance with some embodiments.
9 is a detailed block diagram illustrating another embodiment of a client device, such as the client shown in FIG.
10 is a detailed block diagram illustrating an embodiment of a base layer (BL) access unit shown in FIG.
11 is a diagram of determining throttling parameters from buffer fullness, in accordance with some embodiments.
12 is a detailed block diagram illustrating an embodiment of the enhancement layer (EL) access unit shown in FIG.
13A and 13B are diagrams illustrating selecting one or more enhancement layer data segments, in accordance with some embodiments.
FIG. 14 is a flow chart performed by a client device, such as the client of FIG. 1, to divide network bandwidth for base layer and enhancement layer data segments according to some embodiments.
15 is a block diagram illustrating a computing system architecture that may be used to implement one or more of the components and processes thereof described herein.
다양한 실시예들이 이제 도면들과 관련하여 기술되며, 여기서 동일한 참조 번호들은 전반에 걸쳐 동일한 구성요소들을 지칭하는데 사용된다. 후속하는 내용에서, 설명의 목적으로 다수의 특정 상세항목이 하나 이상의 구성요소에 대한 철저한 이해를 제공하기 위해 설명된다. 그러나, 이러한 실시예(들)가 이들 특정 상세항목들 없이도 구현될 수 있다는 점이 명백할 수 있다. 다른 경우들에서, 공지된 구조들 및 디바이스들이 하나 이상의 실시예들의 기재를 용이하게 하기 위해 블록도 형태로 도시되어 있다.Various embodiments are now described with reference to the drawings, wherein like reference numerals are used to refer to like elements throughout. In the following description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of one or more of the constituent elements. It may be evident, however, that such embodiment (s) may be implemented without these specific details. In other instances, well-known structures and devices are shown in block diagram form in order to facilitate describing one or more embodiments.
본 개시내용의 일부 실시예들에 따르면 도 1은 디지털 콘텐츠를 제공하기 위한 시스템(100)의 개략도이다. 도 1을 참조하면, 시스템(100)은 디지털 콘텐츠를 제공하도록 구성된 서버(110), 통신 네트워크(120), 및 서버(110)에 디지털 콘텐츠를 요청하고 수신하기 위해 통신 네트워크(120)에 통신상으로 연결된 복수의 클라이언트(131-133)(이하에서 집합적으로 클라이언트들(130)로서 지칭될 수 있음)를 포함할 수 있다. 설명의 편의를 위해 도 1에 3개의 클라이언트들(131-133)만이 예시되었지만, 더 적거나 더 많은 수의 클라이언트 디바이스들이 서버(110)에 액세스하기 위해 통신 네트워크(120)에 접속될 수 있다는 점이 인지되어야 한다.According to some embodiments of the present disclosure, Figure 1 is a schematic diagram of a
서버(110)는 통신 네트워크(120)를 통해 클라이언트들(130)과 그리고 선택적으로는 다른 통신 엔티티들(미도시)과 통신하기 위한 하나 이상의 컴퓨팅 디바이스 또는 그 내부에 설치된 소프트웨어 및/또는 하드웨어 모듈(들)로 구성될 수 있다(예를 들어, 웹 서버). 이러한 컴퓨팅 디바이스의 예로서 클라이언트-서버 아키텍쳐 하에서 동작할 수 있는 전용 컴퓨터 또는 복수의 네트워킹된 컴퓨터를 포함하지만 이에 한정되지 않는다.The
일 실시예에서, 서버(110)는 다양한 품질 또는 "스케일러블" 레벨로(예를 들어, 360p, 480p, 760p, 또는 1080p의 디스플레이 해상도로) 전달되도록 인코딩된 디지털 콘텐츠를 저장하도록 구성될 수 있다. 일 실시예에서, 서버(110)는 클라이언트들(131, 132, 및/또는 133)로부터 디지털 콘텐츠에 대한 요청을 수신하고, 그 응답으로, 복수의 상이한 타입의 서브-스트림(예를 들어, 기본 품질의 비디오를 제공하도록 독립적으로 디코딩될 수 있는 기본 계층 서브-스트림 및 개선된 또는 향상된 품질의 디지털 콘텐츠를 제공하기 위해 기본 계층 서브-스트림과 함께 사용(예를 들어, 결합, 디코딩 등)될 수 있는 하나 이상의 향상 계층 서브-스트림들)을 전달할 수 있다. 디지털 콘텐츠의 예들은, 임의의 타입의 오디오(예를 들어, 음악, 잡음 등), 비디오(오디오와 선택적으로 결합된 동영상), 이미지(예를 들어, 정지 화상), 텍스트(예를 들어, 단순 텍스트 메시지, 하이퍼텍스트 메시지, 이메일, 단문 메시지 서비스(SMS) 메시지 등), 및 다른 멀티미디어 콘텐츠를 포함할 수 있지만 이에 한정되지 않는다.In one embodiment, the
통신 네트워크(120)는, 이를 통해 접속된 임의의 엔티티들 사이에서(예를 들어, 서버(110) 및 클라이언트들(131, 132 및/또는 133) 사이에서) 통신 접속들을 설정하도록 통신 요청들이 릴레이 및/또는 라우팅될 수 있는, POTS(plain old telephone service) 네트워크, 모바일 네트워크, 데이터 통신 네트워크 등을 포함할 수 있다. 일 실시예에서, 통신 네트워크(120)는 또한 하나 이상의 공중 및/또는 개인 통신 네트워크들로 구성될 수 있다. 이러한 통신 네트워크들의 예들은 PSTN(Public Switched Telephone Network:공중 교환 전화망), PLMN(Public Land Mobile Network : 공중 지상 모바일 네트워크), UMTS(Universal Mobile Telecommunications System: 유니버설 모바일 통신 시스템), LTE(Long-Term Evolution: 롱 텀 에볼루션) 네트워크, 인터넷 등을 포함하지만 이에 한정되지 않는다.
클라이언트들(130)은 각각 통신 네트워크(120)를 통해 서버(110)와 통신하기 위한 최종-사용자 디바이스 또는 이에 설치된 소프트웨어 및/또는 하드웨어 모듈(들)일 수 있다(예를 들어, 웹 브라우저). 이러한 최종-사용자 디바이스들의 예들은, 개인용 컴퓨터, 개인 디지털 보조 단말(PDA), 스마트 폰, 디지털 텔레비전, 비디오 게임 콘솔, 및 서버(110)로부터 수신된 디지털 콘텐츠를 재생할 수 있는 임의의 타입의 디바이스를 포함하지만 이에 한정되지 않는다.
일 실시예에서, 클라이언트들(130)은 각각 예를 들어, 기본 계층 서브-스트림 및/또는 하나 이상의 향상 계층 서브-스트림의 형태로, 서버(110)로부터 디지털 콘텐츠를 요청하고 수신하도록 구성될 수 있다. 다른 실시예에서, 클라이언트들(130)은 각각 상이한 계층의 서브-스트림들을 요청하고 수신하기 위해 서버(110)와 별도의 통신 접속들을 설정하도록 구성될 수 있다. 예를 들어, 클라이언트들(130) 각각은 기본 계층 서브-스트림에 대한 제1 통신 접속, 및 향상 계층 서브-스트림들의 일부 또는 모두에 대한 하나 이상의 별도의 제2 통신 접속을 설정할 수 있다.In one embodiment,
도 2는 도 1에 도시된 서버(110)를 예시하는 상세화된 블록도이다. 도 2를 참조하면, 서버(110)는, 제한 없이, 저장 유닛(210), 제어 유닛(220), 및 통신 유닛(230)을 포함할 수 있다.2 is a detailed block diagram illustrating the
저장 유닛(210)은 임의의 적절한 임시 및/또는 영구 메모리로 구성될 수 있다. 이러한 메모리의 예는, 고속 랜덤 액세스 메모리(예를 들어, DRAM, SRAM, DDR RAM 또는 다른 랜덤 액세스 고체 상태 메모리 디바이스), 비휘발성 메모리(예를 들어, 하나 이상의 자기 디스크 저장 디바이스, 광 디스크 저장 디바이스, 플래시 메모리 디바이스, 또는 다른 비휘발성 고체 상태 저장 디바이스)를 포함하지만, 이에 한정되지 않는다. 일부 실시예들에서, 저장 유닛(210)은 제어 유닛(220)으로부터 원격으로 위치하는 및/또는 다수의 장소에 원격으로 위치하는 하나 이상의 저장 디바이스를 포함할 수 있다.The
일 실시예에서, 저장 유닛(210)은 스케일링 코딩 알고리즘에 따라 인코딩된 디지털 콘텐츠를 저장(예를 들어, 디지털 콘텐츠의 인코딩된 스트림을 구성하는 복수의 기본 계층 데이터 세그먼트 및 복수의 향상 계층 세그먼트를 저장)하도록 구성될 수 있다. 여기서, "스케일러블 코딩"은 디지털 콘텐츠의 소스 스트림(예를 들어, 720p의 디스플레이 해상도의 비디오)으로부터 상이하게 스케일링된 변형물(예를 들어, 360p, 480p, 720p, 또는 1080p의 디스플레이 해상도의 비디오)로 디지털 콘텐츠를 제공하는데 사용될 수 있는, 상이한 계층들의 복수의 서브-스트림을 생성하는 하나 이상의 타입의 코딩을 지칭한다. 도 3은 H.264/SVC 스트림(300)의 계층화된 스트림 구조의 비-제한적인 예를 예시한다. 도 3을 참조하면, 소스 비디오 스트림으로부터 인코딩된 H.264/SVC 스트림(300)은: (a) 일련의 기본 계층 데이터 세그먼트(또는 데이터 "청크")(B0, B1, B2,...및 BN -1)로 구성된 기본 계층 서브-스트림(310); 및 (b) 일련의 제1 향상 계층 데이터 세그먼트(E0, E1, E2,... 및 EN -1) 및 일련의 제2 향상 계층 데이터 세그먼트(E'0, E'1, E'2,... 및 E'N -1)로 각각 구성된 제1 및 제2 향상 계층 서브-스트림(321 및 322)(이하, 향상 계층 서브-스트림들(320)로서 집합적으로 지칭될 수 있음)을 포함할 수 있다.In one embodiment, the
일 실시예에서, 기본 계층 서브-스트림(310)은 소스 비디오 스트림의 품질 레벨(예를 들어, 760p의 디스플레이 해상도)보다 더 낮은 기본 품질 레벨(예를 들어, 360p의 디스플레이 해상도)의 비디오를 제공하도록 독립적으로 디코딩될 수 있다. 비-제한적인 예시에서, 기본 계층 데이터 세그먼트(B0, B1, B2,...및 BN-1)은 각각 같은 길이의 연속적인 시간 구간들에 대응하는 인코딩된 비디오 데이터를 포함할 수 있다(예를 들어, M초 길이의 비디오에 대해, N개의 기본 계층 데이터 세그먼트(B0, B1, B2,... 및 BN-1)은 각각 비디오의 연속적인 M/N길이의 시간 구간들에 대한 비디오 데이터를 포함할 수 있다).In one embodiment,
일 실시예에서, 제1 향상 계층 서브-스트림(321)은 비디오의 품질 레벨을 개선하도록(예를 들어, 디스플레이 해상도를 480p로 개선하도록) 디지털 콘텐츠를 재구성하기 위해 기본 계층 서브-스트림(310)과 함께 사용될 수 있다. 비-제한적인 예시에서, 제1 향상 계층 데이터 세그먼트(E0)는 첫 M/N초에 대응하는 비디오의 디스플레이 해상도를 480p로 개선하기 위해 기본 계층 데이터 세그먼트(B0)와 함께 사용될 수 있고, 제1 향상 계층 데이터 세그먼트(E1)는 다음 M/N초에 대응하는 비디오의 디스플레이 해상도를 480p로 개선하기 위해 기본 계층 데이터 세그먼트(B1)와 함께 사용될 수 있는 등의 방식이다. 일 실시예에서, 제2 향상 계층 서브-스트림(322)은 비디오의 품질 레벨을 추가로 개선하기 위해(예를 들어, 디스플레이 해상도를 760p로 추가로 개선하기 위해) 기본 계층 서브-스트림(310) 및 제1 향상 계층 서브-스트림(321)과 함께 사용될 수 있다. 비-제한적인 예시에서, 제2 향상 계층 데이터 세그먼트(E'0)는 첫 M/N 초에 대응하는 비디오의 디스플레이 해상도를 760p로 추가로 개선하기 위해 기본 계층 데이터 세그먼트(B0) 및 제1 향상 계층 데이터 세그먼트(E0)와 함께 사용될 수 있고, 제2 향상 계층 데이터 세그먼트(E'1)는 다음 M/N 초에 대응하는 비디오의 디스플레이 해상도를 760p로 추가로 개선하기 위해 기본 계층 데이터 세그먼트(B1) 및 제1 향상 계층 데이터 세그먼트(E1)와 함께 사용될 수 있는 등의 방식이다. 기본 및 향상 계층 서브-스트림들을 인코딩하고 디코딩하기 위해 필요한 기술적 상세항목들은 공지되어 있으며, 본 개시에서의 추가적인 설명 없이도 구현될 수 있다.In one embodiment, the first
다시 도 2를 참조하면, 저장 유닛(210)은: (a) 하나 이상의 기본 계층 파일[예를 들어, 기본 계층(BL) 파일(211)]; 및 (b) 하나 이상의 향상 계층 파일[예를 들어, 제1 및 제2 향상 계층(EL) 파일(212 및 213)]을 저장하도록 구성될 수 있다. 하나 이상의 기본 계층 파일은 기본 계층 서브-스트림(310)의 일련의 기본 계층 데이터 세그먼트(B0, B1, B2,... 및 BN-1)를 포함할 수 있다. 또한, 하나 이상의 향상 계층 파일은 제1 향상 계층 서브-스트림(321)의 일련의 제1 향상 계층 데이터 세그먼트(E0, E1, E2,... 및 EN -1) 및 제2 향상 계층 서브-스트림(322)의 일련의 제2 향상 계층 데이터 세그먼트(E'0, E'1, E'2,..., 및 E'N -1)를 포함할 수 있다.Referring again to Figure 2, the
비-제한적인 예시에서, 저장 유닛(210)은 기본 계층 서브-스트림(310)의 기본 계층 데이터 세그먼트(B0, B1, B2,..., 및 BN -1) 모두를 포함하는 하나의 기본 계층 파일을 저장할 수 있다. 다른 비-제한적인 예에서, 저장 유닛(210)은 복수의 기본 계층 파일을 저장할 수 있고, 복수의 기본 계층 파일 각각은 기본 계층 서브-스트림(310)의 일련의 기본 계층 데이터 세그먼트(B0, B1, B2,..., 및 BN -1) 중 하나의 세그먼트를 포함할 수 있다. 비-제한적인 예시에서, 저장 유닛(210)은 2개의 향상 계층 파일을 포함할 수 있는데, 하나는 제1 향상 계층 서브-스트림(321)의 제1 향상 계층 데이터 세그먼트(E0, E1, E2,..., 및 EN -1) 모두를 포함하며, 다른 하나는 제2 향상 계층 서브-스트림(322)의 제2 향상 계층 데이터 세그먼트(E'0, E'1, E'2,..., 및 E'N-1)을 포함할 수 있다. 다른 비-제한적인 예에서, 저장 유닛(210)은 복수의 향상 계층 파일을 저장할 수 있는데, 복수의 향상 계층 파일 각각은 제1 향상 계층 데이터 세그먼트(E0, E1, E2,..., 및 EN -1) 및 제2 향상 계층 데이터 세그먼트(E'0, E'1, E'2,..., 및 E'N -1) 중 하나의 세그먼트를 포함할 수 있다.In a non-limiting example, the
위 실시예에서, 저장 유닛(210)은 기본 계층 및/또는 향상 계층 파일(들) 중 적어도 일부의 위치를 알아내기(locate) 위한 정보[예를 들어, 기본 계층 파일의 URI(Uniform Resource Identifier: 유니폼 자원 식별자) 또는 향상 계층 파일의 URI]를 저장하도록 구성될 수 있다. 이러한 정보의 예는, DASH(Dynamic Adaptive Streaming over HTTP: HTTP를 통한 동적 적응적 스트리밍) 또는 MPEG-DASH에서 정의된 바와 같은 MPD(media presentation description: 미디어 표시 디스크립션)을 포함한지만 이에 한정되지 않는다.The
저장 유닛(210)은 서버(110)의 전반적인 동작을 제어하고, 서버(110)에 대해 본원에 기술된 프로세스들, 동작들 및 방법들 중 임의의 것을 수행 및/또는 구현하도록 통신 유닛(230)을 제어하기 위해 제어 유닛(220)에 의해 실행되는 명령어들의 세트를 포함하는 임의의 개수의 소프트웨어 프로그램을 추가로 저장하도록 구성될 수 있다. 예를 들어, 저장 유닛(210)은: (a) 다양한 기본 시스템 서비스를 핸들링하고 하드웨어 종속적 작업들을 수행하기 위한 하나 이상의 운영 체제 프로그램 및/또는 (b) 통신 네트워크를 통해 다른 통신 엔티티들과의 통신을 가능하게 하기 위한 하나 이상의 통신 프로그램을 저장할 수 있다.The
제어 유닛(220)은 서버(110)의 전체 동작을 관리하기 위한 임의의 개수의 하드웨어 및/또는 소프트웨어 모듈(들)(예를 들어, 특수화된 아날로그 및/또는 디지털 제어 회로 및/또는 하나 이상의 운영 체제 프로그램을 실행하는 하나 이상의 범용 프로세서에 의해 구현될 수 있음)로 구성될 수 있다. 예를 들어, 제어 유닛(220)은 저장 유닛(210) 및 통신 유닛(230)으로의 그리고 저장 유닛(210) 및 통신 유닛(230)으로부터의 데이터 전달을 제어할 수 있다(예를 들어, 통신 유닛(230)으로부터 데이터 전달 요청을 수신할 시에, 저장 유닛(210)으로부터 통신 유닛(230)으로 기본 계층 및 향상 계층 데이터 세그먼트들 중 하나 이상을 검색하여 포워딩한다).The
통신 유닛(230)은 임의의 개수의 하드웨어 및/또는 소프트웨어 모듈(들)(예를 들어, 특수화된 아날로그 및/또는 디지털 제어 회로 및/또는 하나 이상의 통신 프로그램들을 실행하는 하나 이상의 범용 프로세서에 의해 구현됨)로 구성될 수 있다. 통신 유닛(230)은 통신 네트워크(예를 들어, 도 1의 통신 네트워크(120))를 통해 통신 엔티티들(예를 들어, 도 1의 서버(110) 및 클라이언트들(130)) 사이에서 하나 이상의 통신 접속들을 설정하고, 설정된 통신 접속들을 통해 통신 엔티티들과 정보를 교환하는 것을 보조하도록 구성될 수 있다. 이 목적으로, 통신 유닛(230)은 통신 접속들을 설정하고, 인터넷과 같은 통신 네트워크를 통해 데이터를 전달하기 위해 다양한 공중 및/또는 사설 네트워크 프로토콜들을 지원하도록 구성될 수 있다. 이러한 네트워크 프로토콜들은, 개방 시스템 상호접속(OSI) 모델 하에서, 네트워크층 프로토콜(들)[예를 들어, 인터넷 프로토콜(IP)], 전송층 프로토콜(들)[예를 들어, 전송 제어 프로토콜(TCP), 사용자 데이터그램 프로토콜(UDP) 등)] 및 응용층 프로토콜(들)[예를 들어, 하이퍼텍스트 전송 프로토콜(HTTP) 등]을 포함하지만 이에 한정되지 않는다. 또한, 통신 유닛(230)은 통신 네트워크를 통해 데이터의 스트림을 전달하기 위한 하나 이상의 기법들을 지원하도록 구성될 수 있다. 이러한 스트리밍 기법들의 예들은 DASH(Dynamic Adaptive Streaming over HTTP: HTTP를 통한 동적 적응적 스트리밍) 또는 MPEG-DASH와 같은 HAS(HTTP Adaptive Streaming: HTTP 적응적 스트리밍)를 포함하지만 이에 한정되지 않는다.The
일 실시예에서, 통신 유닛(230)은: 서버(110)와 클라이언트(131) 사이의 하나 이상의 통신 접속을 설정하기 위한 하나 이상의 요청을 클라이언트(예를 들어, 도 1의 클라이언트(131))로부터 수신하고, 그 응답으로, 클라이언트와의 통신 접속들을 설정하기 위해 하나 이상의 응답을 생성하여 클라이언트(131)에 송신하도록 구성될 수 있다. 일 실시예에서, 통신 접속들 각각은 기본 계층 및/또는 향상 계층 데이터 세그먼트의 순서화되고, 오류 검사되고 그리고/또는 신뢰성 있는 전달을 제공하는 전송층 접속(즉, 접속-지향, 오류 검사 및/또는 신뢰성 있는 전송 기능들을 제공하는 전송층 프로토콜의 통신 접속)일 수 있다. 이러한 전송층 접속들의 예들은, TCP 3-방향 핸드쉐이크 절차에 따라 설정될 수 있는 TCP 접속을 포함하지만 이에 한정되지 않는다.In one embodiment,
위의 실시예에서, 통신 유닛(230)은 추가로 (a) 기본 계층 및/또는 향상 계층 데이터 세그먼트들 중 하나 이상을 제공하기 위한 하나 이상의 요청(예를 들어, HTTP GET 요청)을 설정된 통신 접속들 중 하나를 통해 클라이언트(예를 들어, 도 1의 클라이언트(131, 132, 또는 133))로부터 수신하고; (b) 제어 유닛(220)의 제어 하에 저장 유닛(210)으로부터 요청된 하나 이상의 기본 계층 및/또는 향상 계층 데이터 세그먼트를 제공받고; 그리고 (c) 설정된 통신 접속들 중 하나를 통해 클라이언트(예를 들어, 도 1의 클라이언트(131, 132, 또는 133))에 하나 이상의 기본 계층 및/또는 향상 계층 데이터 세그먼트를 송신하도록 구성될 수 있다.In the above embodiment, the
"HTTP GET 요청"(위에서 언급됨)은 HTTP 표준들 하에서 정의된 바와 같이 클라이언트(예를 들어, 도 1의 클라이언트(131, 132, 또는 133))로 하여금 TCP 접속을 통해 서버로부터 데이터를 요청하고 수신하게 하기 위한 요청이다. HTTP GET 요청은 데이터 파일의 URI(uniform resource information:유니폼 자원 정보), 및 선택적으로, 다운로드될 데이터 파일의 일부분을 표시하는 "바이트-범위" 파라미터를 포함할 수 있다. 비-제한적 예시에서, 통신 유닛(230)은: (a) 기본 계층 파일(211)의 URI를 포함하지만 임의의 "바이트-범위" 파라미터들을 포함하지 않는 HTTP GET 요청(즉, "비-바이트-범위" HTTP GET 요청)을 제1 통신 접속을 통해 클라이언트(예를 들어, 도 1의 클라이언트(131, 132, 또는 133))로부터 수신하고; (b) 제1 통신 접속을 통해 클라이언트로부터 수신한 HTTP GET 요청의 성공적 수신 및 인증을 표시하는 HTTP 200 OK 응답을 송신하고; 그리고 (c) 기본 계층 파일(211) 내의 기본 계층 데이터 세그먼트(B0, B1, B2,..., 및 BN-1)를 제공받고 제1 통신 접속을 통해 클라이언트(예를 들어, 도 1의 클라이언트(131, 132, 또는 133))에게 순차적으로 송신하도록 구성될 수 있다.An HTTP GET request (discussed above) allows a client (e.g.,
다른 비-제한적인 예시에서, 통신 유닛(230)은: (a) 기본 계층 파일(211)의 URI와 함께 기본 계층 파일(211)의 연속하는(contiguous) 부분을 표시하는 "바이트-범위" 파라미터를 포함하는 HTTP GET 요청(즉, "바이트-범위" HTTP GET 요청)을 제1 통신 접속을 통해 클라이언트(예를 들어, 도 1의 클라이언트(131, 132, 또는 133))로부터 수신하고; (b) 제1 통신 접속을 통해 클라이언트(131, 132, 또는 133)에 HTTP 200 OK 응답을 송신하고; 그리고 (c) 제1 통신 접속을 통해 클라이언트(131, 132, 또는 133)에 기본 계층 파일(211)의 연속하는 부분에 포함된 연속적인 번호의 기본 계층 데이터 세그먼트(B0, B1, B2,..., 및 BN -1)을 송신하도록 구성될 수 있다.In another non-limiting example, the
또다른 비-제한적인 예시에서, 통신 유닛(230)은: (a) 향상 계층 파일들(212 및 213) 중 하나의 URI와 제1 또는 제2 향상 계층 데이터 세그먼트를 포함하는 향상 계층 파일(212 또는 213)의 일부분을 표시하는 "바이트-범위" 파라미터를 포함하는 HTTP GET 요청을 제1 통신 접속과는 상이한 제2 통신 접속을 통해 클라이언트(예를 들어, 도 1의 클라이언트(131, 132, 또는 133))로부터 수신하고; (b) 제2 통신 접속을 통해 클라이언트(131, 132, 또는 133)에 HTTP 200 OK 응답을 송신하고; 그리고 (c) 제2 통신 접속을 통해 클라이언트(131, 132, 또는 133)에 요청된 제1 또는 제2 향상 계층 데이터 세그먼트를 송신하도록 구성될 수 있다.In another non-limiting example,
도 4는 도 1에 도시된 클라이언트(131)를 예시하는 상세화된 블록도이다. 도 4를 참조하면, 클라이언트(131)는, 제한 없이, 저장 유닛(410), 제어 유닛(420), 통신 유닛(430) 및 디코더(440)를 포함할 수 있다.4 is a detailed block diagram illustrating the
저장 유닛(410)은 하나 이상의 운영 체제 프로그램, 다른 시스템 프로그램, 및/또는 하나 이상의 통신 프로그램을 저장하도록 구성되는 임의의 적절한 임시 및/또는 영구 메모리로 구성될 수 있다. 일 실시예에서, 저장 유닛(410)은 서버(110)에서 디지털 콘텐츠의 기본 계층 및/또는 향상 계층 파일(들)의 위치를 알아내기 위한 정보[예를 들어, 기본 계층 파일의 URI 및/또는 향상 계층 파일의 URI]를 저장하도록 구성될 수 있다. 이러한 정보의 예는, MPEG-DASH에 정의된 바와 같은 MPD(예를 들어, MPD(411))를 포함하지만 이에 한정되지 않는다. 일 실시예에서, 저장 유닛(410)은 디지털 콘텐츠의 데이터(예를 들어, 디지털 콘텐츠의 인코딩된 스트림의 적어도 일부를 구성하는, 통신 유닛(430)으로부터 수신한 기본 및/또는 향상 계층 서브-스트림의 데이터 세그먼트들)를 임시로 저장하도록 구성된 버퍼(412)를 더 포함할 수 있다. 또한, 저장 유닛(410)은 제어 유닛(420)의 동작을 위해 필요한 다른 영구 및/또는 임시 데이터를 포함할 수 있다.The
저장 유닛(410)은 미디어 플레이어 프로그램(미도시)을 더 저장할 수 있다. 미디어 플레이어 프로그램은 디지털 콘텐츠를 재생(예를 들어, 노래 재생, 비디오 표시 등)하기 위한 사용자 입력에 응답하도록 구성될 수 있다. 미디어 플레이어 프로그램은 사용자에 의해 선택된 디스플레이 해상도와 일치시키기 위해 향상 계층 데이터 세그먼트들에 대한 하나 이상의 HTTP GET 요청을 생성하고 송신하기 위한 하나 이상의 명령어를 발행하도록 제어 유닛(420)을 작동(invoke)시킴으로써 재생 중인 디지털 콘텐츠의 디스플레이 해상도를 개선하기 위한 사용자 입력에 응답하도록 추가로 구성될 수 있다.The
제어 유닛(420)은 클라이언트(131)의 전반적인 동작을 관리하기 위한 임의의 개수의 하드웨어 및/또는 소프트웨어 모듈(들)(예를 들어, 특수화된 아날로그 및/또는 디지털 제어 회로 및/또는 하나 이상의 운영 체제 프로그램을 실행하는 하나 이상의 범용 프로세서에 의해 구현됨)로 구성될 수 있다. 예를 들어, 제어 유닛(420)은 저장 유닛(410), 통신 유닛(430) 및 디코더(440) 사이의 데이터(예를 들어, 통신 유닛(430)으로부터 수신한 기본 계층 및 향상 계층 서브-스트림의 데이터 세그먼트들)의 입력 및 출력을 제어할 수 있다.The
통신 유닛(430)은 임의의 개수의 하드웨어 및/또는 소프트웨어 모듈(들)(예를 들어, 특수화된 아날로그 및/또는 디지털 제어 회로 및/또는 하나 이상의 통신 프로그램을 실행하는 하나 이상의 범용 프로세서에 의해 구현됨)로 구성될 수 있다. 통신 유닛(430)은 통신 네트워크(예를 들어, 도 1의 통신 네트워크(120))를 통해 통신 엔티티들(예를 들어, 도 1의 서버(110) 및 클라이언트들(130)) 사이에서 하나 이상의 통신 접속을 설정하고, 설정된 통신 접속들을 통해 통신 엔티티들과 정보를 교환하는 것을 보조하도록 구성될 수 있다. 이 목적으로, 통신 유닛(430)은 다양한 공중 및/또는 사설 네트워크 프로토콜들(예를 들어, TCP, HTTP 등)을 지원하도록 구성될 수 있다. 또한, 통신 유닛(450)은 DASH와 같은 하나 이상의 스트리밍 기법들을 지원하도록 구성될 수 있다.The
일 실시예에서, 통신 유닛(430)은 예를 들어, 클라이언트(131)의 최종-사용자로부터, 서버(110)에서 이용가능한 디지털 콘텐츠 중 적어도 하나를 표시하는 선택 입력을 수신하고, 서브-스트림들의 상이한 층들의 데이터 세그먼트들을 요청하고 수신하기 위한 별도의 통신 접속을 서버(110)와 설정하도록 구성될 수 있다. 일 실시예에서, 통신 유닛(430)은 (a) 서버(110)와의 제1 통신 접속(예를 들어, 제1 TCP 접속)을 설정하고 그를 통해 기본 계층 서브-스트림을 위한 제1 요청을 송신하도록 구성되는 기본 계층 액세스 유닛(431); 및 (b) 서버(110)와 하나 이상의 제2 통신 접속들(예를 들어, 하나 이상의 제2 TCP 접속들)을 설정하고 그를 통해 하나 이상의 향상 계층 서브-스트림을 위한 적어도 하나의 제2 요청을 송신하도록 구성된 향상 계층 액세스 유닛(432)을 포함할 수 있다.In one embodiment, the
비-제한적인 예시에서, 향상 계층 액세스 유닛(432)은 다수의 향상 계층 서브-스트림을 수신하기 위해 서버(110)와 제2 통신 접속을 설정하도록(예를 들어, 도 3의 제1 및 제2 향상 계층 서브-스트림(321 및 322) 모두에 대한 제2 TCP 접속을 설정하도록) 구성될 수 있다. 또다른 비-제한적인 예시에서, 향상 계층 액세스 유닛(432)은 각각의 향상 계층 서브-스트림에 대한 단일의 제2 통신 접속을 설정하도록(예를 들어, 도 3에 도시된 바와 같이 하나가 제1 향상 계층 서브-스트림(321)에 대한 것이고, 다른 하나가 제2 향상 계층 서브-스트림(322)에 대한 것인, 2개의 제2 TCP 접속들을 설정하도록) 구성될 수 있다.In a non-limiting example, the enhancement
일 실시예에서, 기본 계층 액세스 유닛(431)은 프로그레시브 스트리밍 모드에서 설정된 제1 통신 접속을 통해 기본 계층 서브-스트림을 스트리밍 하기 위한 요청을 서버(110)에 송신하도록 구성될 수 있다. 여기서 "프로그레시브 스트리밍 모드"는 클라이언트[예를 들어, 클라이언트(131, 132, 또는 133)]로부터 서버[예를 들어, 서버(110)]로의 단일 요청에 의해 서버로부터 클라이언트로 서브-스트림의 전체의 또는 적어도 미리 규정된 수의 연속적인 데이터 세그먼트들이 클라이언트(131, 132, 또는 133)로 연속적으로 스트리밍되는 모드를 지칭한다.In one embodiment, the base
비-제한적인 예시에서, 기본 계층 액세스 유닛(431)은, 서버(110)로부터 기본 계층 파일 내의 기본 계층 데이터 세그먼트들 모두를 연속적으로 수신하기 위해, 제1 TCP 접속을 통해 서버(110)에 (기본 계층 파일의 URI를 포함하지만 "바이트-범위" 파라미터는 포함하지 않는) "비-바이트-범위" HTTP GET 요청을 송신하도록 구성될 수 있다. 위의 예에서, 기본 계층 액세스 유닛(431)은 HTTP GET 요청을 생성하기 위해 저장 유닛(410) 내의 MPD(411)로부터 기본 계층 파일의 URI를 검색할 수 있다. 또다른 비-제한적인 예에서, 기본 계층 액세스 유닛(431)은, 서버(110)로부터 기본 계층 파일의 연속하는 부분 내의 기본 계층 데이터 세그먼트들을 연속적으로 수신하도록, 제1 TCP 접속을 통해 서버(110)에 (기본 계층 파일의 URI를 포함하고 "바이트-범위" 파라미터도 포함하는) "바이트-범위" HTTP GET 요청을 송신하도록 구성될 수 있다.In a non-limiting example, the base
일 실시예에서, 향상 계층 액세스 유닛(432)은 적응적 스트리밍 모드에서 하나 이상의 설정된 제2 통신 접속을 통해 하나 이상의 향상 계층 서브-스트림을 스트리밍하기 위한 하나 이상의 요청을 서버(110)에 송신하도록 구성될 수 있다. 여기서 "적응적 스트리밍 모드"는 디지털 콘텐츠의 서브-스트림의 데이터 세그먼트들 중 선택된 것들만이 일련의 요청(각각의 요청은 전체 데이터 세그먼트 중 적어도 하나를 클라이언트(예를 들어, 도 1의 클라이언트(131, 132, 또는 133))가 서버로 요청해서 디지털 콘텐츠의 품질 레벨을 동적으로 조정할 수 있도록 함)에 의해 서버로부터 클라이언트(131, 132, 또는 133)로 스트리밍되는 모드를 지칭한다.. In one embodiment, the enhancement
비-제한적인 예시에서, 향상 계층 액세스 유닛(432)은: (a) 서버(110)로부터 다운로드될 하나 이상의 향상 계층 데이터 세그먼트를 적응적으로 선택하고; 그리고 (b) 선택된 향상 계층 세그먼트들 각각에 대한 별도의 HTTP GET 요청을 송신하도록 구성될 수 있다. 위의 예에서, 향상 계층 액세스 유닛(432)은 적응적 스트리밍을 위해 제공되는 다양한 적응 알고리즘 중 임의의 것에 따라 하나 이상의 향상 계층 데이터 세그먼트를 선택할 수 있다.In a non-limiting example, the enhancement
일 예에서, 향상 계층 액세스 유닛(432)은 디지털 콘텐츠에 대해 이용가능한 네트워크 대역폭의 양에 기초하여 하나 이상의 향상 계층 데이터 세그먼트를 선택할 수 있다. 위의 예에서, 향상 계층 액세스 유닛(432)은 이용가능한 네트워크 대역폭을 다양한 방식 중 하나 이상의 방식에 따라 결정하도록 구성되는 대역폭 결정 유닛(미도시)을 포함할 수 있다. 예를 들어, 대역폭 결정 유닛은: 서버(110)에 규정된 길이의 하나 이상의 데이터 세그먼트를 송신하고, 서버(110)로부터 하나 이상의 데이터 세그먼트의 성공적 수신을 확인하는 하나 이상의 응답을 수신하는데 소요된 시간을 측정함으로써, 이용가능한 네트워크 대역폭을 추정할 수 있다. 또한, 위의 예에서, 향상 계층 액세스 유닛(432)은 추정된 이용가능한 네트워크 대역폭 및 규정된 임계 값들에 기초하여 수신하고자 하는 하나 이상의 향상 계층 데이터 세그먼트를 선택할 수 있다.In one example, enhancement
도 5는 이용가능한 네트워크 대역폭의 양에 기초하여 하나 이상의 향상 계층 서브-스트림을 선택하는 것을 예시하는 도면이다. 도 5를 참조하면, 향상 계층 액세스 유닛(432)은: (a) 이용가능한 네트워크 대역폭이 제1 임계 값 (TH0) 미만일 때 향상 계층 데이터 세그먼트를 수신하지 않고; (b) 이용가능한 네트워크 대역폭이 제1 임계 값(TH0)과 제2 임계 값(TH1) 사이에 있을 때 제1 향상 계층 서브-스트림에 속하는 1개의 향상 계층 세그먼트를 수신하고; 그리고 (c) 이용가능한 네트워크 대역폭이 제2 임계 값(TH1) 이상일 때, 하나가 제1 향상 계층 서브-스트림에 속하고 다른 하나는 제2 향상 계층 서브-스트림에 속하는 2개의 향상 계층 세그먼트룰 수신하도록 선택할 수 있다. 예를 들어, 도 5에 도시된 바와 같이, 기본 계층 액세스 유닛(431)이 제1 통신 접속을 통해 서버(110)로부터 기본 계층 세그먼트들(B0, B1, 및 B2)을 수신하는 반면, 향상 계층 액세스 유닛(432)은 제2 통신 접속을 통해 서버(110)로부터 제1 향상 계층 세그먼트들(E1 및 E2) 및 제2 향상 계층 세그먼트(E'1)를 수신하도록 선택할 수 있다. 전술된 적응 알고리즘은 단지 하나의 예시에 불과하고, 마이크로소프트의 실버라이트(Microsoft Silverlight)에서 사용알고리즘 등, 임의의 다른 적응 알고리즘 및 다른 공지된 알고리즘이 사용될 수 있다는 점이 이해되어야 한다.5 is a diagram illustrating selecting one or more enhancement layer sub-streams based on the amount of available network bandwidth. Referring to FIG. 5, the enhancement
일 실시예에서, 통신 유닛(430)은 제어 유닛(420)의 제어 하에서, 기본 계층 및 향상 계층 액세스 유닛들(431 및 432)에 의해 수신한 기본 계층 및/또는 향상 계층 세그먼트들의 일부 또는 전부를 저장하기 위해 저장 유닛(410) 내의 버퍼(412)에 포워딩하도록 구성될 수 있다. 예를 들어, 도 5에 관해 기술된 예에서, 통신 유닛(430)은 기본 계층 세그먼트들(B0, B1, 및 B2), 제1 향상 계층 세그먼트들(E1 및 E2), 및 제2 향상 계층 세그먼트(E'1)를 저장을 위해 버퍼(412)에 포워딩할 수 있다.In one embodiment, the
디코더(440)는 제어 유닛(420)의 제어 하에, 디코딩을 위해 저장 유닛(410)의 버퍼(412)로부터 기본 계층 및/또는 향상 계층 세그먼트들을 수신하도록 구성될 수 있다. 일 실시예에서, 디코더(440)는 기본 계층 데이터 세그먼트들 및/또는 그것에 대응하는 향상 계층 데이터 세그먼트들을 버퍼(412)로부터 불러오고(fetch) 디코딩하여, 이로부터 디지털 콘텐츠를 예를 들어, 가변적인 품질 레벨로 생성하도록 구성될 수 있다. 버퍼(412)가 기본 계층 세그먼트들(B0, B1, 및 B2), 제1 향상 계층 세그먼트들(E1 및 E2) 및 제2 향상 계층 세그먼트(E'1)를 저장하고 있는 전술된 예에서, 디코더(440)는: (a) 기본 계층 세그먼트(B0)를 불러와서 디코딩하여 360p 해상도에서 비디오의 첫 M/N초를 생성하고; (b) 기본 계층 세그먼트(B1) 및 제1 및 제2 향상 계층 세그먼트들(E1 및 E'1) 불러와서 디코딩하여 760p 해상도에서 비디오의 다음 M/N초를 생성하고; 그리고 (c) 기본 계층 세그먼트(B2) 및 제1 향상 계층 세그먼트들(E2) 불러와서 디코딩하여 480p 해상도에서 비디오의 다음 M/N초를 생성할 수 있다. 기본 계층 및/또는 향상 계층 데이터 세그먼트들을 디코딩하기 위해 필요한 기술적 상세항목들은 공지되어 있으며, 추가적인 설명 없이도 구현될 수 있다.
위의 실시예들에서, 상이한 타입들의 계층들의 데이터 세그먼트들을 수신하기 위해 별도의 통신 접속들(예를 들어, TCP 접속들)을 설정함으로써, 클라이언트(131)는 제1 통신 접속을 통해 최소의 오버헤드와 더욱 양호한 대역폭 이용율로 기본 계층 서브-스트림 모두를 끊김 없이 수신할 수 있고(단일 HTTP GET 요청만으로 제1 통신 접속을 통해 기본 계층 서브-스트림의 프로그레시브 스트리밍을 개시할 수 있고, 기본 계층 데이터 세그먼트들에 대한 다수의 HTTP GET 요청들을 송신함으로써 발생하는 시간 지연을 제거할 수 있음), 동시에 하나 이상의 별도의 제2 통신 접속을 통해 수신한 하나 이상의 향상 계층 데이터 세그먼트로 현재 상황 하에서 최적으로 맞추어진 레벨로 디지털 콘텐츠의 품질을 적응적으로 조정할 수 있다.In the above embodiments, by setting up separate communication connections (e. G., TCP connections) to receive data segments of different types of tiers, the
도 6은 디지털 콘텐츠를 수신하기 위해 예를 들어 클라이언트(131)와 같은 클라이언트 디바이스에 의해 수행되는 방법의 흐름도이다. 도 6을 참조하면, 예를 들어, 클라이언트(131)의 기본 계층 액세스 유닛(431)에 의해 수행되는 단계 610에서, 서버(예를 들어, 도 1의 서버(110))와의 제1 TCP 접속이 설정되며, 예를 들어, 클라이언트(131)의 기본 계층 액세스 유닛(431)에 의해 수행되는 단계 620에서, 기본 계층 서브-스트림을 제1 TCP 접속을 통해 서버(110)로부터 프로그레시브 스트리밍 모드로 수신하도록 제1 요청이 서버(110)로 송신된다. 도 7a는 프로그레시브 스트리밍 모드에서의 메시지 교환을 위한 개념적 시그널링 도면이다. 도 7a를 참조하면, 클라이언트(131)의 기본 계층 액세스 유닛(431)은 TCP-3방향 핸드쉐이크 절차를 수행함으로써(예를 들어, 특정한 규정된 값들로 설정되는 동기화(SYN) 및/또는 확인응답(ACK) 제어 비트 플래그들을 포함하는 일련의 TCP 세그먼트를 교환함으로써) 서버(110)와의 제1 TCP 접속을 설정할 수 있다. 이하에서, 클라이언트(131)의 기본 계층 액세스 유닛(431)은 설정된 제1 TCP 접속을 통해 서버(110)에 기본 계층 파일의 URI를 포함하는 "비-바이트-범위" HTTP GET 요청을 송신할 수 있다. 서버(110)는, HTTP GET 요청을 성공적으로 수신할 시에, 먼저, 제1 TCP 접속을 통해 클라이언트(131)로부터 수신한 HTTP GET 요청의 성공적 수신 및 인증을 표시하는 HTTP 200 OK 응답을 송신하고, 연속하여, 제1 TCP 접속을 통해 클라이언트(131)에 요청된 기본 계층 파일 내의 기본 계층 데이터 세그먼트(B0, B1, B2,..., 및 BN -1)를 송신한다.6 is a flow diagram of a method performed by a client device, e.g.,
일 실시예에서, 클라이언트(131)의 기본 계층 액세스 유닛(431)은 서버(110)로부터 미리 결정된 개수의 기본 계층 데이터 세그먼트를 성공적으로 수신한 이후 TCP ACK를 송신할 수 있다. 또한, 위의 실시예에서, 서버(100)는, 미리 결정된 개수의 기본 계층 데이터 세그먼트를 송신한 이후, 이전에 송신된 기본 계층 데이터 세그먼트들에 대한 TCP ACK를 수신한 때에만 후속하는 기본 계층 데이터 세그먼트를 송신할 수 있다. 비-제한적인 예시에서, 도 7a에 도시된 바와 같이, 서버(110)는 이전 기본 계층 데이터 세그먼트(예를 들어, B0)에 대한 TCP ACK를 수신한 때에만 후속하는 기본 계층 데이터 세그먼트들(예를 들어, B1)을 송신할 수 있다.In one embodiment, the base
일 실시예에서, 클라이언트(131)의 기본 계층 액세스 유닛(431)은, TCP ACK들이 클라이언트(131)로부터 서버(110)로 송신되는 레이트를 조정함으로써 기본 계층 데이터 세그먼트(B0, B1, B2,..., 및 BN-1)의 전송 레이트(즉, 기본 계층 데이터 세그먼트(B0, B1, B2,..., 및 BN-1)가 서버로부터 클라이언트(131)로 송신되는 레이트)를 간접적으로 조정할 수 있다. 예를 들어, 클라이언트(예를 들어, 도 1의 클라이언트(131, 132, 또는 133))는 기본 계층 데이터 세그먼트들의 전송 레이트를 감소시키거나 증가시키기 위해 TCP ACK들의 전송을 지연시키거나 신속처리(expedite)할 수 있다. 클라이언트(예를 들어, 도 1의 클라이언트(131, 132, 또는 133))가 서버의 전송 레이트를 간접적으로 조정하기 위한 이러한 방식은 "ACK 페이싱"으로 지칭될 수 있다.In one embodiment, the base
기본 계층 데이터 세그먼트(B0, B1, B2,..., 및 BN -1) 중 마지막 세그먼트의 성공적 수신 시에, 클라이언트(131)의 기본 계층 액세스 유닛(431)은 마지막 TCP ACK를 송신하고 서버(110)와의 제1 TCP 접속을 종료한다. 위의 기재들로부터 알 수 있는 바와 같이, 프로그레시브 스트리밍 모드에서, 오직 하나의 HTTP GET 요청 및 후속하는 HTTP 200 OK 응답만이 서버(110)로부터 클라이언트(131)로 기본 계층 데이터 세그먼트(B0, B1, B2,..., 및 BN -1) 모두를 전달하는데 필요한 오버헤드로서 요구된다.Upon successful reception of the last one of the base layer data segments (B 0 , B 1 , B 2 , ..., and B N -1 ), the base
도 6을 다시 참조하면, 단계 630에서, 예를 들어, 클라이언트(131)의 향상 계층 액세스 유닛(432)에 의해, 서버(예를 들어, 도 1의 서버(110))와의 하나 이상의 제2 TCP 접속들이 설정되고, 예를 들어, 클라이언트(131)의 향상 계층 액세스 유닛(432)에 의해 수행되는 단계 640에서, 하나 이상의 향상 계층 서브-스트림을 하나 이상의 제2 TCP 접속을 통해 서버(110)로부터 적응적 스트리밍 모드에서 수신하도록 적어도 하나의 제2 요청을 송신한다.6, at
도 7b는 적응적 스트리밍 모드에서의 메시지 교환을 예시하는 개념적 시그널링 도면이다. 도 7b를 참조하면, 클라이언트(131)의 향상 계층 액세스 유닛(432)은 TCP 3-방향 핸드쉐이크 절차를 수행함으로써 서버(110)와의 제2 TCP 접속을 설정할 수 있다. 이후, 클라이언트(131)의 향상 계층 액세스 유닛(432)은 비디오의 향상 계층 데이터 세그먼트들 중 하나(예를 들어, E1)를 선택하고 선택된 향상 계층 데이터 세그먼트를 포함하는 향상 계층 파일의 URI를 포함하는 HTTP GET 요청을 서버에 송신할 수 있다. 향상 계층 파일이 선택된 향상 계층 데이터 세그먼트 뿐만 아니라 다른 데이터 세그먼트들을 포함하는 경우, 선택된 향상 계층 데이터 세그먼트를 포함하는 향상 계층 파일의 일부분을 표시하는 바이트-범위 파라미터를 HTTP GET 요청에 포함시킬 수 있다. 서버(110)는, HTTP GET 요청을 성공적으로 수신할 시에, 먼저 제2 TCP 접속을 통해 클라이언트(131)에 수신된 HTTP GET 요청의 성공적인 수신 및 인증을 표시하는 HTTP 200 OK 응답을 송신하고, 요청된 향상 계층 데이터 세그먼트(E1)를 송신한다. 이후, 서버(110)는, 전송된 향상 계층 데이터 세그먼트(E1)에 대한 TCP ACK를 수신할 때, 전송을 종료하고, 클라이언트(131)로부터 수신될 또다른 HTTP GET 요청을 기다린다. 클라이언트(131)의 향상 계층 액세스 유닛(432)은 필요한 경우 다음 향상 계층 데이터 세그먼트들을 계속 선택 및 요청하고, 비디오 전송의 완료 시에, 서버(110)와의 제2 TCP 접속을 종료한다.7B is a conceptual signaling diagram illustrating message exchange in an adaptive streaming mode. Referring to FIG. 7B, the enhancement
도 8은 디지털 콘텐츠를 제공하기 위해 예를 들어, 서버(110)와 같은 서버에 의해 수행되는 방법의 흐름도이다. 도 8을 참조하면, 예를 들어, 서버(110)의 통신 유닛(230)에 의해 수행되는 단계 810에서, 일련의 기본 계층 데이터 세그먼트에 대한 제1 요청(예를 들어, 기본 계층 데이터 세그먼트들 모두에 대한 HTTP GET 요청)을 제1 통신 접속을 통해 클라이언트(예를 들어, 도 1의 클라이언트(131))로부터 수신한다. 예를 들어, 서버(110)의 통신 유닛(230)에 의해 수행되는 단계 820에서, 제1 요청에 응답하여 일련의 기본 계층 데이터 세그먼트를 클라이언트 디바이스(131)로 제1 통신 접속을 통해 전송한다. 예를 들어, 서버(110)의 통신 유닛(230)에 의해 수행되는 단계 830에서, 하나 이상의 향상 계층 데이터 요청에 대한 적어도 하나의 제2 요청(예를 들어, 향상 계층 데이터 세그먼트들 중 하나 이상에 대한 HTTP GET 요청(들))을 제2 통신 접속을 통해 클라이언트(131)로부터 수신한다. 예를 들어, 서버(110)의 통신 유닛(230)에 의해 수행되는 단계 840에서, 적어도 하나의 제2 요청에 응답하여 요청된 하나 이상의 향상 계층 데이터 세그먼트들을 클라이언트(131)에 제2 통신 접속을 통해 전송한다.Figure 8 is a flow diagram of a method performed by a server, e.g.,
본 개시에 기술된 시스템, 디바이스, 및 방법은 기본 계층 서브-스트림 및/또는 하나 이상의 향상 계층 서브-스트림에 할당된 네트워크 대역폭을 적응적으로 조정하는데 사용될 수 있다. 예를 들어, 요청된 디지털 콘텐츠의 전송을 위해 이용가능한 전체 네트워크 대역폭은 클라이언트 측의 버퍼(예를 들어, 도 4의 클라이언트(131)의 버퍼(412))의 풀니스(fullness)와 같은 다양한 인자들 중 하나 이상의 인자에 기초하여 기본 계층 서브-스트림 및 하나 이상의 향상 계층 서브-스트림들 사이에서 나누어질 수 있다.The systems, devices, and methods described in this disclosure may be used to adaptively adjust network bandwidth allocated to base layer sub-streams and / or one or more enhancement layer sub-streams. For example, the total network bandwidth available for transmission of the requested digital content may be determined by various factors such as the fullness of the client side buffer (e.g., buffer 412 of
도 9는 도 1에 도시된 클라이언트(131)의 다른 실시예를 예시하는 상세화된 블록도이다. 도 9를 참조하면, 클라이언트(131)는, 제한 없이, 저장 유닛(910)(MPD(911) 및 버퍼(912)를 포함함); 제어 유닛(920); 통신 유닛(930); 및 디코더(940)를 포함할 수 있다. 저장 유닛(910)(MPD(911) 및 버퍼(912)를 포함함), 제어 유닛(920) 및 디코더(940)의 구조 및 기능은 도 4에 도시된 저장 유닛(410)(MPD(411) 및 버퍼(412)를 포함함), 제어 유닛(420) 및 디코더(440)와 유사하다. 따라서, 간략함을 위해, 저장 유닛(910)(MPD(911) 및 버퍼(912)를 포함함), 제어 유닛(920) 및 디코더(940)에 대한 내용은 더 이상 상세하게 설명되지 않을 것이다.FIG. 9 is a detailed block diagram illustrating another embodiment of the
도 4의 통신 유닛(430)과 유사한 통신 유닛(930)은 서버(110)로부터 디지털 콘텐츠의 일련의 기본 계층 세그먼트(예를 들어, 도 3의 일련의 기본 계층 세그먼트(B0, B1, B2,..., 및 BN-1))를 요청하고 수신하기 위해 제1 통신 접속(예를 들어, 제1 TCP 접속)을 설정하도록 구성되는 기본 계층(BL) 액세스 유닛(931); 및 서버(110)로부터 동일한 디지털 콘텐츠의 하나 이상의 향상 계층 데이터 세그먼트(예를 들어, 도 3의 제1 향상 계층 데이터 세그먼트(E0, E1, E2,..., 및 EN -1) 및 제2 향상 계층 데이터 세그먼트(E'0, E'1, E'2,..., 및 E'N -1)) 중 적어도 일부)를 요청하고 수신하기 위해 하나 이상의 제2 통신 접속(예를 들어, 하나 이상의 제2 TCP 접속)을 설정하도록 구성되는 향상 계층(EL) 액세스 유닛(932)을 포함할 수 있다. 기본 계층 액세스 유닛(931) 및 향상 계층 액세스 유닛(932)은 도 4의 기본 계층 액세스 유닛(431) 및 향상 계층 액세스 유닛(432)에 대해 기술된 것과 동일하거나 유사한 방식으로 제1 및 제2 통신 접속을 설정할 수 있다.The
일 실시예에서, 통신 유닛(930)은 기본 계층 데이터 세그먼트들 및 저장 유닛(910) 내의 버퍼(912)의 풀니스 레벨을 참조해서 디지털 콘텐츠의 전송을 위해 이용가능한 네트워크 대역폭을 기본 계층 데이터 세그먼트들과 하나 이상의 향상 계층 데이터 세그먼트 사이에 나누도록 추가로 구성될 수 있다. 이러한 목적으로, 통신 유닛(930)은: (a) 요청된 디지털 콘텐츠의 전송을 위해 이용가능한 전체 네트워크 대역폭 또는 전체 전송 레이트(예를 들어, 서버(110)가 기본 계층 세그먼트(B0, B1, B2,...,BN -1), 제1 향상 계층 데이터 세그먼트(E0, E1, E2,..., EN -1) 및 제2 향상 계층 데이터 세그먼트(E'0, E'1, E'2,..., 및 E'N -1)를 전송할 수 있는 전송 레이트들의 합산)를 결정하도록 구성되는 대역폭(BW) 결정 유닛(933); (b) 저장 유닛(910) 내의 버퍼(912)의 풀니스 레벨을 결정하도록 구성되는 버퍼 풀니스(BF) 결정 유닛(934)을 더 포함할 수 있다.In one embodiment, the
여기서, "버퍼의 풀니스" 또는 "버퍼 풀니스(BF)"는 버퍼(예를 들어, 버퍼(812))의 전체 용량에 대비해서 버퍼내에 저장된 디지털 콘텐츠의 양을 지칭한다. 일부 실시예들에서, 버퍼의 전체 용량은 버퍼가 완전치 채워졌을 때 버퍼 내의 디지털 콘텐츠를 재생하는데 소요되는 시간(예를 들어, 30초)로 정의될 수 있다. 또한, 버퍼의 풀니스는 버퍼에 현재 저장된 디지털 콘텐츠를 재생하는데 소요되는 시간(예를 들어, 버퍼의 반이 차 있을 때 15초)으로 표현될 수 있다.Refers to the amount of digital content stored in the buffer relative to the total capacity of the buffer (e. G., Buffer 812). ≪ / RTI > In some embodiments, the total capacity of the buffer may be defined as the time (e.g., 30 seconds) required to reproduce the digital content in the buffer when the buffer is fully populated. Also, the bufferiness of the buffer may be expressed as the time required to reproduce the digital content currently stored in the buffer (e.g., 15 seconds when half of the buffer is full).
일 실시예에서, 대역폭 결정 유닛(933)은 전체 이용가능한 네트워크 대역폭을 다양한 방식들 중 하나 이상의 방식에 따라 결정하도록 구성될 수 있다. 일 실시예에서, 대역폭 결정 유닛(933)은: 서버(110)에 규정된 길이의 하나 이상의 데이터 세그먼트를 송신하고, 서버(110)에 의해 하나 이상의 데이터 세그먼트의 성공적 수신을 확인하는 하나 이상의 응답을 수신하는데 소요된 시간을 측정함으로써, 전체 이용가능한 네트워크 대역폭을 추정할 수 있다. 비-제한적인 예시에서, 대역폭 결정 유닛(933)은 예를 들어, (기본 계층 데이터 세그먼트들이 수신되는) 제1 통신 접속을 통해 하나 이상의 데이터 세그먼트를 송신하고 하나 이상의 응답을 수신함으로써, 제1 통신 접속에 기초하여 전체 이용가능한 네트워크 대역폭을 추정할 수 있다. 위의 예에서, 대역폭 결정 유닛(933)은 전체 이용가능한 네트워크 대역폭을 주기적으로 추정하고 전체 이용가능한 대역폭으로서 이전에 추정된 전체 이용가능한 대역폭들의 미리 결정된 수의 이동 평균(MA) 값을 이용가능한 네트워크 대역폭으로 제공하도록 구성될 수 있다.In one embodiment,
위의 실시예에서, 기본 계층(BL) 액세스 유닛(931)은 다양한 인자들 중 하나 이상의 인자에 기초하여 기본 계층 데이터 세그먼트들이 서버(예를 들어, 도 2의 서버(110)의 통신 유닛(230))에 의해 전송되는 레이트를 조정(예를 들어, 제한 내지 "스로틀링(throttling)")하도록 추가로 구성될 수 있다. 이러한 인자들의 예들은: (a) (예를 들어, 대역폭 결정 유닛(933)에 의해 결정된 바와 같은) 요청된 디지털 콘텐츠의 전송을 위해 이용가능한 전체 네트워크 대역폭; 및 (b) (예를 들어, 버퍼 풀니스 결정 유닛(934)에 의해 결정된 바와 같은) 클라이언트(131)의 저장 유닛(910) 내의 버퍼(912)의 풀니스를 포함하지만 이에 한정되지 않는다. 비-제한적인 예에서, 기본 계층 액세스 유닛(931)은 버퍼(912)의 풀니스에 반비례하도록 기본 계층 세그먼트들(B0, B1, B2,..., 및 BN-1)의 전송 레이트를 제한하도록 구성될 수 있다.In the above embodiment, the base layer (BL)
일 실시예에서, 기본 계층 액세스 유닛(931)은 도 7a와 함께 기술된 ACK 페이싱 기법과 같은 다양한 페이싱 기법들 중 하나를 사용함으로써 전송 레이트를 제한하도록 구성될 수 있다. 비-제한적인 예시에서, 기본 계층 액세스 유닛(931)은 TCP ACK들(즉, 기본 계층 데이터 세그먼트(B0, B1, B2,..., 및 BN-1)의 성공적 수신에 응답하여 클라이언트(131)로부터 서버(110)로 송신되는 TCP ACK들)이 생성되어 클라이언트(131)로부터 서버(110)로 송신되는 레이트를 조정함으로써 전송 레이트를 간접적으로 제한하도록 구성될 수 있다. 기본 계층 액세스 유닛(931)에 관련된 추가적인 상세항목들은 도 10 및 11과 함께 기술된다.In one embodiment, base
일 실시예에서, 향상 계층 액세스 유닛(932)은 하나 이상의 인자들에 기초하여 하나 이상의 향상 계층 데이터 세그먼트들(예를 들어, 제1 향상 계층 데이터 세그먼트(E0, E1, E2,..., 및 EN -1) 및 제2 향상 계층 데이터 세그먼트(E'0, E'1, E'2,..., 및 E'N-1)) 중 어느 것을 서버(110)로부터 수신할지 여부를 결정하도록 추가로 구성될 수 있다. 이러한 인자들의 예들은, (a) (예를 들어, 전체 대역폭 결정 유닛(833)에 의해 결정되는 바와 같은) 요청된 디지털 콘텐츠의 전송을 위해 이용가능한 전체 네트워크 대역폭; 및 (b) 기본 계층 데이터 세그먼트(B0, B1, B2,..., 및 BN-1)의 전송을 위해 할당된 네트워크 대역폭의 양(예를 들어, 버퍼(912)의 풀니스의 견지에서 기본 계층 액세스 유닛(831)에 의해 제한되거나 "스로틀링"되는 바와 같은 기본 계층 데이터 세그먼트(B0, B1, B2,..., 및 BN-1)의 전송 레이트)를 포함하지만 이에 한정되지 않는다. 향상 계층 액세스 유닛(932)에 관련된 추가적인 기술적 상세항목들은 도 12 및 13과 함께 기술된다.In one embodiment, enhancement
도 10은 도 9에 도시된 기본 계층(BL) 액세스 유닛(931)의 실시예를 예시하는 상세화된 블록도이다. 도 10을 참조하면, 기본 계층 액세스 유닛(931)은: 서버(예를 들어, 도 1의 서버(110))로부터 일련의 기본 계층 세그먼트들(예를 들어, 도 3의 기본 계층 세그먼트(B0, B1, B2,..., 및 BN -1))의 전송을 위한 네트워크 대역폭(즉, 전송 레이트)를 결정하도록 구성되는 대역폭(BW) 할당 유닛(1010); 및 결정된 네트워크 대역폭에 기초하여 일련의 기본 계층 세그먼트(B0, B1, B2,..., 및 BN-1)가 서버(110)로부터 전송되는 레이트를 제한하거나 스로틀링하도록 구성되는 스로틀링 유닛(1020)을 포함할 수 있다.10 is a detailed block diagram illustrating an embodiment of a base layer (BL)
일 실시예에서, 대역폭 할당 유닛(1010)은 예를 들어, 도 9의 버퍼 풀니스 결정 유닛에 의해 결정된 바와 같은, 버퍼 풀니스에 기초하여 서버(110)로부터 일련의 기본 계층 세그먼트(B0, B1, B2,..., 및 BN-1)의 전송을 위한 네트워크 대역폭을 결정하도록 구성될 수 있다. 비-제한적인 예시에서, 대역폭 할당 유닛(1010)은 다음 수학식에 따라 네트워크 대역폭을 결정하도록 구성될 수 있다:In one embodiment,
BWBL = EBL + α (수학식 1)BW BL = E BL +? (Equation 1)
여기서 "BWBL"는 서버(110)로부터 클라이언트(131)로 일련의 기본 계층 세그먼트(B0, B1, B2,..., 및 BN-1)의 전송을 위해 할당된 네트워크 대역폭을 나타내고, "EBL"는 일련의 기본 계층 세그먼트(B0, B1, B2,..., 및 BN-1)의 인코딩 레이트를 나타내고, "α"는 클라이언트(131)의 저장 유닛(910) 내의 버퍼(912)의 풀니스에 기초하여 결정되고 동적으로 조정될 수 있는 스로틀링 파라미터이다.Here, "BW BL " represents the network bandwidth allocated for the transmission of a series of base layer segments (B 0 , B 1 , B 2 , ..., and B N-1 ) from the
일 실시예에서, 대역폭 할당 유닛(1010)은 버퍼(812)의 풀니스에 반비례하여 스로틀링 파라미터 α를 결정하도록 구성될 수 있다. 비-제한적인 예시에서, 스로틀링 파라미터 α는 다음 수학식에 따라 결정될 수 있다:In one embodiment, the
(수학식 2) (2)
여기서, "α"는 스로틀링 파라미터를 나타내고, "BWtotal"는 디지털 콘텐츠의 전송을 위해 이용가능한 전체 네트워크 대역폭을 나타내고, "EBL"는 기본 계층 데이터 세그먼트(B0, B1, B2,..., 및 BN-1)의 인코딩 레이트를 나타내고, "λ"는 미리 결정된 상수를 나타내고, "b"는 버퍼 풀니스를 나타낸다.Here, "α" denotes a throttling Parameters, "BW total" represents the total network bandwidth available for transmission of the digital content, "E BL" is the base
도 11은 버퍼 풀니스로부터 스로틀링 파라미터를 결정하기 위한 그래프를 예시한다. 도 11을 참조하면, 그래프(1100)는 제1 및 제2 그래프들(1110 및 1120)을 포함하고, 이들은 상이한 값들을 가지는 상수 "λ"를 가지고 수학식 2에 따라 버퍼 풀니스 "b"에 대해 도식화된 스로틀링 파라미터 "α"의 그래프들이다. 제1 그래프(1110)는 "BWtotal - BWBL" 및 "λ"를 각각 10 Mbit/sec 및 1/2으로, 그리고 제2 그래프(1120)는 10 Mbit/sec 및 1/6로 설정해서 도식화된 그래프들이다(즉, 제1 그래프(1110)는 제2 그래프(1120)보다 더 큰 "λ"를 가지고 도식화된다). 도 11에 예시된 바와 같이, 제1 그래프(1110)에서의 스로틀링 파라미터 "b"의 값은 제2 그래프(1120)에 비해 버퍼 풀니스 "b"가 변함에 따라 더욱 빨리 변경된다(즉, 수학식 2에서의 상수 "λ"의 크기는 스로틀링 파라미터 "b"의 변경의 레이트에 비례한다). 제1 그래프(1110)는 제2 그래프(1120)에 비해 더욱 적응적이지만 덜 안정적인 조정 방식을 나타낸다.Figure 11 illustrates a graph for determining throttling parameters from buffer pulses. 11, the
그래프들(1110 및 1120) 모두에서, 클라이언트(131)의 저장 유닛(910) 내의 버퍼(912)가 거의 또는 완전히 빌 때, 클라이언트 측에서 요청된 디지털 콘텐츠의 끊김 없는 재생을 보장하기 위해 더 높은 레벨의 전송 레이트 또는 네트워크 대역폭(예를 들어, 초당 비트로 표현됨)이 기본 계층 데이터 세그먼트(B0, B1, B2,..., 및 BN-1)의 전송을 위해 할당된다. 또한, 그래프들(1110 및 1120) 모두에서, 버퍼(912)가 거의 또는 완전히 찰 때 더 낮은 레벨의 전송 레이트 또는 네트워크 대역폭이 기본 계층 데이터 세그먼트(B0, B1, B2,..., 및 BN-1)에 대해 할당되고, 따라서, 더 많은 네트워크 대역폭이 제1 향상 계층 데이터 세그먼트(E0, E1, E2,..., 및 EN -1) 및/또는 제2 향상 계층 데이터 세그먼트(E'0, E'1, E'2,..., 및 E'N -1)에 할당되고, 이에 의해 재생 중인 디지털 콘텐츠의 품질을 개선할 수 있다.In both graphs 1110 and 1120, when the
다시 도 10을 참조하면, 스로틀링 유닛(1020)은 기본 계층 세그먼트들(B0, B1, B2,..., 및 BN -1)의 전송 레이트를 제한하기 위해 서버(110)와 통신하도록 구성될 수 있다. 일 실시예에서, 스로틀링 유닛(1020)은 대역폭 할당 유닛(1010)에 의해 결정된 바와 같이, 일련의 기본 계층 세그먼트(B0, B1, B2,..., 및 BN-1)의 전송을 위한 네트워크 대역폭에 기초하여 일련의 TCP ACK들(즉, 기본 계층 데이터 세그먼트들(B0, B1, B2,..., 및 BN-1)의 적어도 일부의 성공적 수신에 응답하여 클라이언트(131)로부터 서버(110)에 송신되는 TCP ACK들) 사이의 시간적 이격을 변조하도록 구성될 수 있다. 비-제한적인 예시에서, 스로틀링 유닛(1020)은 기본 계층 데이터 세그먼트(B0, B1, B2,..., 및 BN-1)의 전송 레이트를 대역폭 할당 유닛(1010)에 의해 결정된 전송 레이트 미만으로 유지하기 위해 TCP ACK 들의 전송을 지연시키거나 신속처리할 수 있다. 데이터 세그먼트들의 전송 레이트를 제한하거나 스로틀링하기 위해 필요한 기술적 상세항목들은 공지되어 있으며, 본 개시에서의 추가적인 설명 없이도 구현될 수 있다.Referring again to FIG. 10, the
도 12는 도 9에 도시된 향상 계층(EL) 액세스 유닛(932)의 실시예를 예시하는 상세화된 블록도이다. 도 12를 참조하면, 향상 계층 액세스 유닛(832)은 서버(예를 들어, 도 1의 서버(110))로부터 하나 이상의 향상 계층 세그먼트들(예를 들어, 도 3의 제1 향상 계층 데이터 세그먼트들(E0, E1, E2,..., 및 EN -1) 및 제2 향상 계층 데이터 세그먼트들(E'0, E'1, E'2,..., 및 E'N -1))의 전송을 위해 네트워크 대역폭(즉, 전송 레이트)을 결정하도록 구성되는 대역폭 할당 유닛(1210); 및 결정된 네트워크 대역폭에 기초하여 하나 이상의 향상 계층 세그먼트들 중 어느 것이 서버(110)로부터 수신될지를 결정(그리고 이에 의해, 재생될 디지털 콘텐츠의 품질을 결정)하도록 구성되는 스케쥴링 유닛(1220)을 포함할 수 있다.12 is a detailed block diagram illustrating an embodiment of enhancement layer (EL)
일 실시예에서, 대역폭 할당 유닛(1210)은 다양한 인자들 중 하나 이상에 기초하여 하나 이상의 향상 계층 데이터 세그먼트들의 전송을 위한 네트워크 대역폭을 결정하도록 구성될 수 있다. 이러한 인자들의 예는: (a) (예를 들어, 도 9의 대역폭 결정 유닛(933)에 의해 결정된 바와 같은) 요청된 디지털 콘텐츠의 전송을 위해 이용가능한 전체 네트워크 대역폭; 및 (b) 일련의 기본 계층 데이터 세그먼트의 전송을 위해 할당된 네트워크 대역폭의 양(예를 들어, 버퍼(912)의 풀니스의 견지에서 도 9의 기본 계층 액세스 유닛(931)에 의해 제한되거나 "스로틀링되는" 것으로서 기본 계층 데이터 세그먼트(B0, B1, B2,..., 및 BN-1)의 전송 레이트)을 포함하지만 이에 한정되지 않는다.In one embodiment, the
비-제한적인 예로서, 대역폭 할당 유닛(1210)은 아래 수학식에 따라 네트워크 대역폭을 결정하도록 구성될 수 있다:As a non-limiting example, the
BWEL = BWtotal - BWBL (수학식 3)BW EL = BW total - BW BL (Equation 3)
여기서, "BWtotal"는 요청된 디지털 콘텐츠의 전송을 위해 이용가능한 전체 네트워크 대역폭을 나타내고, "BWBL"는 서버(110)로부터 클라이언트(131)로 일련의 기본 계층 데이터 세그먼트(B0, B1, B2,..., 및 BN-1)의 전송을 위해 할당된 네트워크 대역폭을 나타낸다."BW BL " represents a series of base layer data segments (B 0 , B 1 ) from the
일 실시예에서, 대역폭 할당 유닛(1210)은 미리 결정된 일련의 시간 기간 각각에 대한 네트워크 대역폭을 주기적으로 결정하도록 구성될 수 있다. 도 13a 및 13b는 네트워크 대역폭의 결정 및 하나 이상의 향상 계층 데이터 세그먼트의 선택을 예시하는 도면이다. 도 13a 및 13b을 참조하면, 비-제한적 예시에서, 대역폭 할당 유닛(1210)은 0 내지 2초 사이의 시간 구간 동안, 2 내지 8초 사이의 시간 구간들에 대해 할당될 네트워크 대역폭을 결정할 수 있다. 또한, 대역폭 할당 유닛(1010)은 8 내지 10초 사이의 시간 구간 동안 10 내지 16초 사이의 시간 구간들에 대해 할당될 네트워크 대역폭을 결정할 수 있는 등의 방식이다.In one embodiment,
도 12를 다시 참조하면, 일 실시예에서, 스케쥴링 유닛(1220)은:(a) 네트워크 할당 유닛(1210)에 의해 결정된 네트워크 대역폭에 기초하여 향상 계층 세그먼트들 중 어느 것을 향후에 서버(110)로부터 수신할지를 선택하고; 그리고 (b) 향상 계층 데이터 세그먼트들 중 선택된 세그먼트들에 대한 HTTP GET 요청(들)을 생성 및 송신하도록 구성될 수 있다. 다시 도 13a 및 13b를 참조하면, 비-제한적인 예시에서, 스케쥴링 유닛(1220)은 0 내지 2초 사이의 시간 구간 동안 대역폭 할당 유닛(1210)에 의해 결정되는 바와 같은 네트워크 대역폭을 제공받고, 향상 계층 데이터 세그먼트들 중 어느 것이 2 내지 8초 사이의 시간 구간들 동안 수신될지를 선택할 수 있다(그리고, 따라서, 2 내지 8초 사이의 시간 구간들 동안 재생될 디지털 콘텐츠의 품질을 결정한다). 도 13a 및 13b에 예시된 예에서, 제1 향상 계층 데이터 세그먼트(E1, E2, 및 E3) 및 제2 향상 계층 데이터 세그먼트(E'1, E'2, 및 E'3)의 일부 또는 전부가 2 내지 8초 사이의 시간 구간들 동안 서버(110)로부터 수신되도록 선택될 수 있다.12, in one embodiment, the
도 13a에 도시된 바와 같이, 대역폭 할당 유닛(1210)에 의해 할당된 네트워크 대역폭이 3개의 향상 계층 데이터 세그먼트들의 수신을 허용할 만큼 충분한 경우, 스케쥴링 유닛(1220)은 2 내지 8초 사이의 시간 구간 동안 제1 향상 계층 데이터 세그먼트들(E1, E2, 및 E3)을 수신하도록 선택할 수 있다. 대안적으로, 도 13b에 도시된 바와 같이, 스케쥴링 유닛(1220)은 2 내지 8초 사이의 시간 구간들 동안 제1 향상 계층 데이터 세그먼트들(E1 및 E2) 및 제2 향상 계층 데이터 세그먼트(E'1)를 수신하도록 선택할 수 있다. 도 13a에 예시된 예는 도 13b에 예시된 예에 비해 상대적으로 안정된 품질의 디지털 콘텐츠를 제공할 수 있는 반면, 도 13b에 예시된 예는 도 13a에 예시된 예에 비해 적어도 일시적으로 더 높은 레벨의 품질에서 디지털 콘텐츠를 제공할 수 있다.13A, if the network bandwidth allocated by the
일부 실시예들에 따르면, 도 14는 기본 계층 및 향상 계층 데이터 세그먼트들에 대한 네트워크 대역폭을 나누기 위해, 예를 들어, 클라이언트(131)와 같은 클라이언트에 의해 수행되는 방법의 흐름도이다. 도 14를 참조하면, 예를 들어, 클라이언트(131)의 버퍼 풀니스 결정 유닛(934)에 의해 수행되는 단계 1410에서, 서버(예를 들어, 도 1의 서버(110))로부터 수신되는 일련의 기본 계층 데이터 세그먼트 및 하나 이상의 향상 계층 데이터 세그먼트를 임시로 저장하기 위한 버퍼(예를 들어, 도 9의 버퍼(912))의 풀니스 레벨을 결정한다. 예를 들어, 클라이언트(131)의 대역폭 결정 유닛(933)에 의해 수행되는 단계 1420에서, 일련의 기본 계층 세그먼트 및 하나 이상의 향상 계층 세그먼트의 전달을 위해 이용가능한 전체 네트워크 대역폭을 추정한다.According to some embodiments, FIG. 14 is a flow diagram of a method performed by a client, for example,
예를 들어, 클라이언트(131)의 기본 계층 액세스 유닛(931)에 의해 수행되는 단계 1430에서, 일련의 기본 계층 데이터 세그먼트의 전송 레이트는 서버(110)와 통신함으로써 버퍼(912)의 풀니스 레벨 및/또는 전체 이용가능한 네트워크 대역폭에 기초하여 간접적으로 조정될 수 있다. 예를 들어, 일련의 기본 계층 데이터 세그먼트의 성공적인 수신에 응답하여 서버(110)에 송신될 일련의 확인응답(ACK)의 시간적 이격은 기본 계층 액세스 유닛(931)에 의해 변조될 수 있다. 예를 들어, 클라이언트(131)의 향상 계층 액세스 유닛(932)에 의해 수행되는 단계 1440에서, 하나 이상의 향상 계층 데이터 세그먼트들 중 어느 것이 수신될지는 버퍼(912)의 풀니스 레벨 및/또는 전체 이용가능한 네트워크 대역폭에 기초하여 결정된다.For example, in
본 개시내용이 바람직한 실시예들과 관련하여 도시되고 기술되었지만, 당업자는 다양한 변경들 및 수정들이 첨부된 청구항들에 정의된 바와 같은 발명의 사상 및 범위로부터의 이탈 없이 이루어질 수 있음을 인지할 것이다. 또한, 본 개시내용의 방법들 및 시스템들이 특정 실시예들에 관해 전술되었지만, 구성요소들 또는 그 동작들의 일부 또는 전무가 범용 하드웨어 아키텍쳐를 가지는 컴퓨터 시스템을 사용하여 구현될 수 있다. 도 15는 본원에 기술된 구성요소들 및 그 프로세스들 중 하나 이상을 구현하기 위해 사용될 수 있는, 컴퓨팅 시스템 아키텍쳐의 블록도를 예시한다. 도 15를 참조하면, 하나의 구현예에서, 하드웨어 시스템(1500)은 프로세서(1502), 캐시 메모리(1504), 및 본원에 기술된 기능들과 관련된 하나 이상의 소프트웨어 애플리케이션들/드라이버들(미도시)을 포함할 수 있다.While this disclosure has been shown and described with respect to preferred embodiments, those skilled in the art will recognize that various changes and modifications can be made without departing from the spirit and scope of the invention as defined in the appended claims. Moreover, although the methods and systems of the present disclosure have been described above with regard to specific embodiments, some or all of the elements or operations thereof may be implemented using a computer system having a general purpose hardware architecture. Figure 15 illustrates a block diagram of a computing system architecture that may be used to implement one or more of the components and processes thereof described herein. 15, in one implementation, a
추가로, 하드웨어 시스템(1500)은 고성능 입력/출력(I/O) 버스(1506) 및 표준 I/O 버스(1508)를 포함할 수 있다. 호스트 브리지(1510)는 프로세서(1502)를 고성능 I/O 버스(1506)에 커플링시키는 반면, I/O 버스 브리지(1512)는 2개의 버스들(1506 및 1508)을 서로 커플링시킨다. 시스템 메모리(1514) 및 네트워크/통신 인터페이스(1516)는 버스(1506)에 커플링된다. 하드웨어 시스템(1500)은 비디오 메모리(미도시) 및 비디오 메모리에 커플링된 디스플레이 디바이스(미도시)를 더 포함할 수 있다. 대용량 저장소(1518) 및 I/O 포트들(1520)은 버스(1508)에 커플링된다. 하드웨어 시스템(1500)은 선택적으로 키보드(미도시) 및 포인팅 디바이스(미도시)를 포함할 수 있다. 또한, 그것은 표준 I/O 버스(1508)에 커플링된 디스플레이 디바이스(미도시)를 포함할 수 있다. 집합적으로, 이들 구성요소들은 캘리포니아주, 산타 클라라의 인텔 코오포레이션(Intel Corporation)에 의해 제조된 하나 이상의 프로세서들 뿐만 아니라 임의의 다른 적절한 프로세서에 기반하는 범용 컴퓨터 시스템들을 포함하지만 이에 제한되지 않는 컴퓨터 하드웨어 시스템들의 넓은 카테고리를 나타내도록 의도된다.In addition, the
하드웨어 시스템(1500)의 구성요소들이 하기에 더욱 상세히 기술된다. 특히, 네트워크 인터페이스(1516)는 하드웨어 시스템(1500) 및 이더넷(예를 들어, IEEE 802.3) 네트워크 등과 같은 광범위한 네트워크들 중 임의의 것 사이의 통신을 제공한다. 서버(110)(도 1 및 2)의 경우, 네트워크 인터페이스(1516)는 하드웨어 시스템(1500)으로 하여금 클라이언트들(130)과 통신하게 하기 위해, 해당 클라이언트들(130)에 접속된 통신 네트워크(120)와 하드웨어 시스템(1500) 사이에서 인터페이싱한다. 유사하게, 클라이언트(130)(도 1, 4 및 8)의 경우, 네트워크 인터페이스(1516)는 하드웨어 시스템(1500)으로 하여금 서버(110)와 통신하게 하기 위해 서버(110)에 통신 시스템(120)과 하드웨어 시스템(1500) 사이에서 인터페이싱한다. 대용량 저장소(1518)는 클라이언트들(130) 또는 서버(110)에서 구현되는 전술된 기능들을 수행하기 위한 데이터 및 프로그래밍 명령들에 대한 영구 저장을 제공하는 반면, 시스템 메모리(1514)(예를 들어, DRAM)는 프로세서(1502)에 의해 실행될 때 데이터 및 프로그래밍 명령들에 대한 임시 저장을 제공한다. I/O 포트들(1520)은, 하드웨어 시스템(1500)에 커플링될 수 있는 추가적인 주변 디바이스들 사이의 통신을 제공하는 하나 이상의 직렬 및/또는 병렬 통신 포트들이다.The components of the
하드웨어 시스템(1500)은 다양한 시스템 아키텍쳐들을 포함할 수 있다. 또한, 하드웨어 시스템(1500)의 다양한 컴포넌트들이 재배열될 수 있다. 예를 들어, 캐시(1504)는 프로세서(1502)와 함께 온칩(on-chip)화될 수 있다. 대안적으로, 캐시(1504) 및 프로세서(1502)는 "프로세서 모듈"로서 함께 패키지화될 수 있고, 프로세서(1502)는 "프로세서 코어"로서 지칭된다. 또한, 본 개시내용의 특정 구현예들은 위의 컴포넌트들을 모두 요구하지도 포함하지도 않을 수 있다. 예를 들어, 표준 I/O 버스(1508)에 커플링된 것으로 도시된 주변 디바이스들은 고성능 I/O 버스(1506)에 커플링될 수 있다. 추가로, 일부 구현예들에서, 단일 버스만이 존재할 수 있으며, 하드웨어 시스템(1500)의 컴포넌트들이 단일 버스에 커플링된다. 또한, 하드웨어 시스템(1500)은 추가 프로세서들, 저장 디바이스들 또는 메모리들과 같은 추가적인 컴포넌트들을 포함할 수 있다. 하기에 논의된 바와 같이, 일 실시예에서, 본원에 기술된 디지털 콘텐츠를 제공하기 위한 시스템(100)을 포함하는 시스템의 동작들은 하드웨어 시스템(1500)에 의해 실행되는 일련의 소프트웨어 루틴들로서 구현될 수 있다. 이들 소프트웨어 루틴들은 프로세서(1502)와 같은 하드웨어 시스템 내의 프로세서에 의해 실행될 복수의 또는 일련의 명령들을 포함한다. 초기에, 일련의 명령들은 대용량 저장소(1518)와 같은 저장 디바이스 상에 저장된다. 그러나, 일련의 명령들은 디스켓, CD-ROM, ROM, EEPROM 등과 같은 임의의 적절한 저장 매체 상에 저장될 수 있다. 또한, 일련의 명령들은 로컬로 저장될 필요는 없으며, 네트워크 인터페이스(1516)를 통해, 네트워크 상의 서버와 같은 원격 저장 디바이스로부터 수신될 수 있다. 명령들은 대용량 저장소(1518)와 같은 저장 디바이스로부터 메모리(1514) 내로 카피되고, 이후 프로세서(1502)에 의해 액세스되어 실행된다.The
운영 체제는 소프트웨어 애플리케이션들(미도시)로의 그리고 소프트웨어 애플리케이션들(미도시)로부터의 데이터의 입력 및 출력을 포함하는, 하드웨어 시스템(1500)의 동작을 관리하고 제어한다. 운영 체제는 시스템 상에서 실행되는 소프트에어 애플리케이션들 및 시스템의 하드웨어 컴포넌트들 사이의 인터페이스를 제공한다. 본 발명의 일 실시예에 따르면, 운영 체제는 워싱턴 주, 레드몬드의 마이크로소프트 코오포레이션(Microsoft Corporation)에서 제공하는 Windows® 운영 체제이다. 그러나, 본 발명은 캘리포니아주, 쿠퍼티노의 애플 컴퓨터 인크(Apple Computer Inc.)에서 제공하는 Apple Macintosh 운영 체제, UNIX 운영 체제, LINUX 운영 체제 등과 같은 다른 적절한 운영 체제들과 함께 사용될 수 있다.The operating system manages and controls the operation of the
개시된 발명 대상 및 대응하는 상세한 설명의 일부분들은 소프트웨어, 알고리즘, 또는 컴퓨터 메모리 내의 데이터 비트에 대한 심볼적 동작 표현들로 제시된다. 알고리즘은, 그 용어가 본원에 사용된 바와 같이 그리고 일반적으로 사용되는 바와 같이, 원하는 결과를 가져오는 하나 이상의 동작들 또는 단계들을 지칭한다. 동작들 또는 단계들은 물리적 수량들 또는 특징들의 물리적 조작들을 요구하는 것일 수 있다. 통상적으로, 이러한 수량들 또는 특징들은 저장되고, 전달되고, 결합되고, 비교되거나, 또는 다른 방식으로 조작될 수 있는 광학적, 전기적 또는 자기적 신호들의 형태를 취한다. 편의상, 이러한 신호들은 본원에서, 비트, 데이터, 값, 심볼, 문자, 항목, 숫자, 스트림 등으로서 지칭된다.The objects of the disclosed subject matter and corresponding portions of the detailed description are presented in terms of software, algorithms, or symbolic operational representations of data bits in computer memory. An algorithm refers to one or more operations or steps that result in a desired result, as the term is used herein and as generally used. Operations or steps may be those requiring physical manipulations of physical quantities or features. Typically, such quantities or features take the form of optical, electrical, or magnetic signals that can be stored, transmitted, combined, compared, or otherwise manipulated. For convenience, such signals are referred to herein as bits, data, values, symbols, characters, items, numbers, streams,
그러나, 이들 및 유사한 항목들 모두가 적절한 물리적 수량들 및 특징들과 연관될 것이며, 이러한 수량들 및 특징들에 적용되는 단지 편리한 라벨들이라는 점을 염두에 두어야 한다. 구체적으로 달리 언급되거나, 기재로부터 명백하지 않은 한, "프로세싱하는", "컴퓨팅하는", "계산하는", "결정하는", "디스플레이하는", "수신하는", "변조하는", "생성하는", "결합하는", "적용하는", "최대화하는", "최소화하는" 등과 같은 용어들은, 컴퓨터 시스템의 레지스터들 및 메모리들 내에 물리적, 전기적 수량들로서 표현되는 데이터를 컴퓨터 시스템 메모리들, 레지스터들, 또는 다른 이러한 정보, 저장, 전송 또는 디스플레이 디바이스들 내의 물리적 수량들로서 유사하게 표현되는 다른 데이터로 조작하고 변환하는, 컴퓨터 시스템 또는 유사한 전자 컴퓨팅 디바이스의 동작 및 프로세스들을 지칭할 수 있다.It should be borne in mind, however, that all of these and similar items will be associated with appropriate physical quantities and features, and are merely convenient labels applied to such quantities and features. Computing, "" determining, "" determining, "" displaying, "" receiving, "" modulating, "" generating, "" Quot ;, " coupled ", "applying "," maximizing ", "minimizing ", and the like refer to data expressed in physical and electrical quantities in registers and memories of a computer system, Registers, or other such information, storage, transmission, or other data similarly represented as physical quantities within display devices.
또한, 개시된 발명 대상의 소프트웨어 구현 양상들이 통상적으로 일부 형태의 프로그램 저장 매체 상에 저장되거나 일부 타입의 전송 매체를 통해 구현된다는 점이 인지되어야 한다. 프로그램 저장 매체는 하드 드라이브, 테이프, CD-ROM, DVD, 블루레이, RAM, ROM, 플래시 메모리, 고체 상태 드라이브 등과 같은 데이터 또는 신호들을 저장할 수 있는 임의의 적절한 매체일 수 있다. 유사하게, 전송 매체는 연선(twisted wire pair), 동축 케이블, 광섬유, 또는 당해 기술분야에 공지된 임의의 다른 적절한 전송 매체일 수 있다. 개시된 발명 대상은 임의의 주어진 구현예의 이들 양상들에 의해 제한되지 않는다.It should also be appreciated that the software implementation aspects of the disclosed subject matter are typically stored on some form of program storage medium or implemented on some type of transmission medium. Program storage media may be any suitable medium capable of storing data or signals such as hard drives, tapes, CD-ROMs, DVDs, Blu-ray, RAM, ROM, flash memory, Similarly, the transmission medium may be a twisted wire pair, a coaxial cable, an optical fiber, or any other suitable transmission medium known in the art. The disclosed subject matter is not limited by these aspects of any given embodiment.
본 개시내용의 실시예들이 다양한 수정들 및 대안적인 형태들에 대해 용이할 수 있지만, 특정 실시예들은 도면에서 예시에 의해 도시되었으며 본원에 상세하게 기술되었다. 그러나, 본 개시내용의 실시예들이 개시된 특정 형태들에 제한되도록 의도되지 않는다는 점이 이해되어야 한다. 오히려 실시예들은 후속하는 첨부된 청구항들에 의해 정의된 바와 같이 본 개시내용의 사상 및 범위내에 드는 모든 수정들, 등가물들 및 대안들을 커버하도록 의도된다.While the embodiments of the present disclosure may be susceptible to various modifications and alternative forms, specific embodiments have been shown by way of example in the drawings and are herein described in detail. It should be understood, however, that the embodiments of the present disclosure are not intended to be limited to the specific forms disclosed. Rather, the embodiments are intended to cover all modifications, equivalents, and alternatives falling within the spirit and scope of the disclosure as defined by the following appended claims.
Claims (25)
서버와의 제1 통신 접속을 설정하는 단계;
상기 서버와의 제2 통신 접속을 설정하는 단계;
상기 제1 통신 접속을 통해 복수의 기본 계층 데이터 세그먼트에 대한 제1 요청을 상기 서버로 송신하는 단계;
상기 제2 통신 접속을 통해 하나 이상의 향상 계층 데이터 세그먼트에 대한 하나 이상의 제2 요청을 상기 서버로 송신하는 단계 - 상기 하나 이상의 향상 계층 데이터 세그먼트와 상기 복수의 기본 계층 데이터 세그먼트의 적어도 일부는 상기 디지털 콘텐츠의 인코딩된 스트림의 일부를 구성함 - 를 포함하는 방법.A method for requesting digital content,
Establishing a first communication connection with the server;
Establishing a second communication connection with the server;
Sending a first request for a plurality of base layer data segments over the first communication connection to the server;
Transmitting one or more second requests for one or more enhancement layer data segments over the second communication connection to the server, wherein the at least one enhancement layer data segment and at least a portion of the plurality of base layer data segments are associated with the digital content Lt; RTI ID = 0.0 > of: < / RTI >
상기 하나 이상의 향상 계층 데이터 세그먼트를 상기 복수의 기본 계층 데이터 세그먼트의 상기 적어도 일부와 함께 수신해서 디코딩하여 상기 인코딩된 스트림의 디코딩된 스트림을 제공하는 단계를 더 포함하는 방법.The method according to claim 1,
Receiving and decoding the one or more enhancement layer data segments with the at least a portion of the plurality of base layer data segments to provide a decoded stream of the encoded stream.
상기 제1 및 제2 통신 접속은 각각 상기 기본 계층 및/또는 향상 계층 데이터 세그먼트들의 순서화되고, 오류-검사되고 그리고/또는 신뢰가능한 전달을 제공하는 전송층 접속인, 방법.The method according to claim 1,
Wherein the first and second communication connections are transport layer connections each providing ordered, error-checked, and / or reliable delivery of the base layer and / or enhancement layer data segments.
상기 제1 요청을 송신하는 단계는 프로그레시브 스트리밍 모드로 상기 제1 통신 접속을 통해 상기 복수의 기본 계층 데이터 세그먼트를 송신한도록 하는 요청을 상기 서버로 송신하는 단계를 포함하는, 방법.The method according to claim 1,
Wherein sending the first request comprises sending to the server a request to transmit the plurality of base layer data segments over the first communication connection in a progressive streaming mode.
상기 기본 계층 및 향상 계층 데이터 세그먼트들을 버퍼에 저장하는 단계;
상기 버퍼의 풀니스(fullness) 레벨을 결정하는 단계; 및
상기 버퍼의 풀니스 레벨에 기초하여 상기 복수의 기본 계층 데이터 세그먼트의 전송 레이트를 제한하기 위해 상기 서버와 통신하는 단계
를 더 포함하는 방법.5. The method of claim 4,
Storing the base layer and enhancement layer data segments in a buffer;
Determining a fullness level of the buffer; And
Communicating with the server to limit the transfer rate of the plurality of base layer data segments based on a level of integrity of the buffer
≪ / RTI >
상기 서버와 통신하는 단계는 상기 서버로 송신될 복수의 확인응답(ACK) 간의 시간적 이격을 변조하는 단계 - 상기 복수의 확인 응답 각각은 상기 복수의 기본 계층 데이터 세그먼트 중 적어도 일부의 성공적 수신에 응답하여 송신됨 - 를 포함하는, 방법.6. The method of claim 5,
Wherein communicating with the server comprises modulating a temporal spacing between a plurality of acknowledgments (ACKs) to be sent to the server, each of the plurality of acknowledgments responding to successful receipt of at least some of the plurality of base layer data segments Transmitted < / RTI >
상기 서버와 통신하는 단계는 상기 버퍼의 풀니스 레벨에 반비례하여 상기 전송 레이트를 제한하기 위해 상기 서버와 통신하는 단계를 포함하는, 방법.6. The method of claim 5,
Wherein communicating with the server comprises communicating with the server to limit the transfer rate in inverse proportion to the level of integrity of the buffer.
상기 하나 이상의 제2 요청을 송신하는 단계는 적응적 스트리밍 방식에 기초해서 상기 제2 통신 접속을 통해 상기 하나 이상의 제2 요청을 송신하는 단계를 포함하는, 방법.3. The method of claim 2,
Wherein transmitting the one or more second requests comprises transmitting the one or more second requests over the second communication connection based on an adaptive streaming scheme.
상기 기본 계층 및 향상 계층 데이터 세그먼트들을 버퍼에 저장하는 단계;
이용가능한 네트워크 대역폭을 추정하는 단계;
상기 추정된 이용가능한 네트워크 대역폭 및 상기 버퍼의 풀니스 레벨에 기초하여, 후속하여 수신할 하나 이상의 향상 계층 데이터 세그먼트를 결정하는 단계
를 더 포함하는 방법.9. The method of claim 8,
Storing the base layer and enhancement layer data segments in a buffer;
Estimating an available network bandwidth;
Determining one or more enhancement layer data segments to be subsequently received based on the estimated available network bandwidth and the level of integrity of the buffer
≪ / RTI >
상기 이용가능한 네트워크 대역폭을 추정하는 단계는 상기 제1 통신 접속을 사용해서 이용가능한 네트워크 대역폭을 추정하는 단계를 포함하는, 방법.10. The method of claim 9,
Wherein estimating the available network bandwidth comprises estimating an available network bandwidth using the first communication connection.
상기 후속하여 수신할 하나 이상의 향상 계층 데이터 세그먼트를 결정하는 단계는 상기 추정된 이용가능한 네트워크 대역폭에 기초하여 상기 제2 통신 접속에 할당될 네트워크 대역폭을 결정하는 단계를 포함하는, 방법.11. The method of claim 10,
Wherein determining the one or more enhancement layer data segments to be subsequently received comprises determining a network bandwidth to be allocated to the second communication connection based on the estimated available network bandwidth.
복수의 기본 계층 데이터 세그먼트 및 하나 이상의 향상 계층 데이터 세그먼트를 수신하도록 구성되는 통신 유닛; 및
상기 기본 계층 및 향상 계층 데이터 세그먼트들을 일시적으로 저장하도록 구성되는 버퍼를 포함하고,
상기 통신 유닛은 상기 버퍼의 풀니스 레벨에 기초해서 상기 복수의 기본 계층 데이터 세그먼트 및 상기 하나 이상의 향상 계층 데이터 세그먼트 중 적어도 하나에 이용가능한 네크워크 대역폭을 할당하도록 추가적으로 구성되는, 디바이스.A device for receiving digital content, the device comprising:
A communication unit configured to receive a plurality of base layer data segments and one or more enhancement layer data segments; And
And a buffer configured to temporarily store the base layer and enhancement layer data segments,
Wherein the communication unit is further configured to allocate available network bandwidth to at least one of the plurality of base layer data segments and the one or more enhancement layer data segments based on a level of integrity of the buffer.
상기 버퍼의 상기 풀니스 레벨을 결정하도록 구성되는 버퍼 풀니스 결정 유닛; 및
상기 버퍼의 상기 풀니스 레벨에 기초하여 상기 복수의 기본 계층 데이터 세그먼트의 전송 레이트를 제한하기 위해 서버와 통신하도록 구성되는 기본 계층 액세스 유닛을 더 포함하는, 디바이스.13. The communication system according to claim 12,
A buffer fullness determination unit configured to determine the fullness level of the buffer; And
And a base layer access unit configured to communicate with the server to limit the transfer rate of the plurality of base layer data segments based on the level of integrity of the buffer.
상기 버퍼의 상기 풀니스 레벨을 결정하도록 구성되는 버퍼 풀니스 결정 유닛; 및
상기 버퍼의 상기 풀니스 레벨에 기초하여 후속하여 수신할 하나 이상의 향상 계층 데이터 세그먼트를 결정하도록 구성되는 향상 계층 액세스 유닛을 더 포함하는, 디바이스.13. The communication system according to claim 12,
A buffer fullness determination unit configured to determine the fullness level of the buffer; And
And an enhancement layer access unit configured to determine one or more enhancement layer data segments to be subsequently received based on the level of integrity of the buffer.
상기 기본 계층 액세스 유닛은 상기 서버로 송신될 복수의 확인응답(ACK) 간의 시간적 이격을 변조하도록 구성되고, 상기 복수의 확인 응답 각각은 상기 복수의 기본 계층 데이터 세그먼트 중 적어도 일부의 성공적 수신에 응답하여 송신되는 것인, 디바이스.14. The method of claim 13,
Wherein the base layer access unit is configured to modulate temporal spacing between a plurality of acknowledgments (ACKs) to be transmitted to the server, each of the plurality of acknowledgments responding to successful receipt of at least some of the plurality of base layer data segments Lt; / RTI >
상기 기본 계층 액세스 유닛은 상기 버퍼의 풀니스 레벨에 반비례하여 상기 전송 레이트를 제한하도록 상기 서버와 통신하도록 구성되는, 디바이스.14. The method of claim 13,
Wherein the base layer access unit is configured to communicate with the server to limit the transfer rate in inverse proportion to a level of integrity of the buffer.
상기 통신 유닛은 상기 복수의 기본 계층 데이터 세그먼트를 수신하기 위한 제1 통신 접속 및 상기 하나 이상의 향상 계층 세그먼트를 수신하기 위한 제2 통신 접속을 설정하도록 구성되는, 디바이스.13. The method of claim 12,
Wherein the communication unit is configured to establish a first communication connection for receiving the plurality of base layer data segments and a second communication connection for receiving the one or more enhancement layer segments.
상기 제1 통신 접속을 사용해서 이용가능한 네트워크 대역폭을 추정하도록 구성되는 대역폭 결정 유닛을 더 포함하는, 디바이스.18. The communication system according to claim 17, wherein the communication unit
And a bandwidth determination unit configured to estimate an available network bandwidth using the first communication connection.
서버로부터 수신한 복수의 기본 계층 데이터 세그먼트 및 하나 이상의 향상 계층 데이터 세그먼트를 저장하기 위한 버퍼의 풀니스 레벨을 결정하는 단계; 및
상기 버퍼의 상기 풀니스 레벨에 기초해서 상기 복수의 기본 계층 데이터 세그먼트 및 상기 하나 이상의 향상 계층 데이터 세그먼트 중 적어도 하나에 이용가능한 네트워크 대역폭을 할당하는 단계를 포함하는 방법.A method for receiving digital content,
Determining a level of integrity of a buffer for storing a plurality of base layer data segments received from the server and one or more enhancement layer data segments; And
Allocating available network bandwidth to at least one of the plurality of base layer data segments and the one or more enhancement layer data segments based on the level of integrity of the buffer.
상기 버퍼의 상기 풀니스 레벨에 기초하여 상기 복수의 기본 계층 데이터 세그먼트의 전송 레이트를 제한하기 위해 상기 서버와 통신하는 단계를 더 포함하는, 방법.20. The method of claim 19, wherein allocating the available network bandwidth comprises:
Further comprising communicating with the server to limit the transfer rate of the plurality of base layer data segments based on the level of integrity of the buffer.
상기 버퍼의 풀니스 레벨에 기초하여 후속하여 수신할 하나 이상의 향상 계층 데이터 세그먼트를 결정하는 단계를 더 포함하는, 방법.20. The method of claim 19, wherein allocating the available network bandwidth comprises:
Further comprising determining one or more enhancement layer data segments to be subsequently received based on a level of integrity of the buffer.
상기 서버와 통신하는 단계는 상기 서버로 송신될 복수의 확인응답(ACK) 간의 시간적 이격을 변조하는 단계 - 상기 복수의 확인 응답 각각은 상기 복수의 기본 계층 데이터 세그먼트 중 적어도 일부의 성공적 수신에 응답하여 송신되는 것임 - 를 포함하는, 방법.22. The method of claim 21,
Wherein communicating with the server comprises modulating a temporal spacing between a plurality of acknowledgments (ACKs) to be sent to the server, each of the plurality of acknowledgments responding to successful receipt of at least some of the plurality of base layer data segments The method comprising the steps of:
상기 서버와 통신하는 단계는 상기 버퍼의 풀니스 레벨에 반비례하여 전송 레이트를 제한하도록 상기 서버와 통신하는 단계를 포함하는, 방법.23. The method of claim 22,
Wherein communicating with the server comprises communicating with the server to limit the transfer rate in inverse proportion to the level of integrity of the buffer.
상기 복수의 기본 계층 데이터 세그먼트를 수신하기 위한 제1 통신 접속 및 상기 하나 이상의 향상 계층 데이터 세그먼트를 수신하기 위한 제2 통신 접속을 설정하는 단계를 더 포함하는 방법.20. The method of claim 19,
Further comprising establishing a first communication connection for receiving the plurality of base layer data segments and a second communication connection for receiving the one or more enhanced layer data segments.
상기 제1 통신 접속을 사용해서 이용가능한 네트워크 대역폭을 추정하는 단계를 더 포함하는 방법.25. The method of claim 24,
Further comprising estimating an available network bandwidth using the first communication connection.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020140073171A KR20150144458A (en) | 2014-06-16 | 2014-06-16 | Method and device for delivery of scalable digital content |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020140073171A KR20150144458A (en) | 2014-06-16 | 2014-06-16 | Method and device for delivery of scalable digital content |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20150144458A true KR20150144458A (en) | 2015-12-28 |
Family
ID=55084763
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020140073171A KR20150144458A (en) | 2014-06-16 | 2014-06-16 | Method and device for delivery of scalable digital content |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR20150144458A (en) |
-
2014
- 2014-06-16 KR KR1020140073171A patent/KR20150144458A/en not_active Application Discontinuation
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9979771B2 (en) | Adaptive variable fidelity media distribution system and method | |
US10764610B2 (en) | Media user client, a media user agent and respective methods performed thereby for providing media from a media server to the media user client | |
CN107210993B (en) | Method and system for dynamic rate adjustment of multimedia content streams in a wireless network | |
EP2962435B1 (en) | Link-aware streaming adaptation | |
EP2537340B1 (en) | Multipath delivery for adaptive streaming | |
KR102119287B1 (en) | Device for obtaining content by choosing the transport protocol according to the available bandwidth | |
Kaspar et al. | Using HTTP pipelining to improve progressive download over multiple heterogeneous interfaces | |
US9178929B2 (en) | Client-side class-of-service-based bandwidth management in over-the-top video delivery | |
CN104219286B (en) | streaming media processing method, device, client, CDN node server and terminal | |
JP6436772B2 (en) | Method for dynamically adapting received bit rate and associated receiver | |
US20130185399A1 (en) | Content delivery | |
WO2014054988A1 (en) | Throttling a media stream for transmission via a radio access network | |
US20160072864A1 (en) | Method and client terminal for receiving a multimedia content split into at least two successive segments, and corresponding computer program product and computer readable mediium | |
US9131251B2 (en) | Use of a receive-window size advertised by a client to a content server to change a video stream bitrate streamed by the content server | |
Evensen et al. | Adaptive media streaming to mobile devices: challenges, enhancements, and recommendations | |
KR102212973B1 (en) | Method for providing a content part of a multimedia content to a client terminal, corresponding cache | |
EP2819368A1 (en) | Method for providing a content part of a multimedia content to a client terminal, corresponding cache | |
KR20150144458A (en) | Method and device for delivery of scalable digital content | |
EP3014835B1 (en) | Method for retrieving, by a client terminal, a content part of a multimedia content | |
US9654533B2 (en) | Method of adaptively delivering media based on reception status information from media client and apparatus using the same | |
Yin et al. | Nefis: A network coding based flexible device-to-device video streaming scheme | |
CN112823527A (en) | Method implemented at a device capable of running an adaptive streaming session and corresponding device | |
KR20170034097A (en) | Method for adaptive streaming and Apparatus therefor | |
CN106713373A (en) | File sending method and apparatus |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
WITN | Withdrawal due to no request for examination |