KR102085539B1 - 통신 접속을 통한 데이터의 적응형 스트리밍 관리 - Google Patents
통신 접속을 통한 데이터의 적응형 스트리밍 관리 Download PDFInfo
- Publication number
- KR102085539B1 KR102085539B1 KR1020147027638A KR20147027638A KR102085539B1 KR 102085539 B1 KR102085539 B1 KR 102085539B1 KR 1020147027638 A KR1020147027638 A KR 1020147027638A KR 20147027638 A KR20147027638 A KR 20147027638A KR 102085539 B1 KR102085539 B1 KR 102085539B1
- Authority
- KR
- South Korea
- Prior art keywords
- data
- window size
- buffer
- timer
- server
- Prior art date
Links
- 230000003044 adaptive effect Effects 0.000 title claims description 27
- 238000004891 communication Methods 0.000 title claims description 27
- 239000000872 buffer Substances 0.000 claims abstract description 129
- 238000000034 method Methods 0.000 claims abstract description 42
- 230000003139 buffering effect Effects 0.000 claims abstract description 5
- 230000005540 biological transmission Effects 0.000 claims description 4
- 238000012544 monitoring process Methods 0.000 claims description 2
- 230000009467 reduction Effects 0.000 claims description 2
- 230000008569 process Effects 0.000 abstract description 8
- 238000009825 accumulation Methods 0.000 abstract 1
- 238000009877 rendering Methods 0.000 description 12
- 238000007726 management method Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 10
- 230000001052 transient effect Effects 0.000 description 3
- 230000001413 cellular effect Effects 0.000 description 2
- 230000006866 deterioration Effects 0.000 description 2
- 238000012358 sourcing Methods 0.000 description 2
- 238000012384 transportation and delivery Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000005236 sound signal Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/75—Media network packet handling
- H04L65/762—Media network packet handling at the source
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/25—Flow control; Congestion control with rate being modified by the source upon detecting a change of network conditions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9005—Buffering arrangements using dynamic buffer space allocation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/61—Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
- H04L65/612—Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for unicast
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/80—Responding to QoS
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
-
- 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/23439—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 for generating different versions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/439—Processing of audio elementary streams
- H04N21/4392—Processing of audio elementary streams involving audio buffer management
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/442—Monitoring 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/4424—Monitoring 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/60—Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client
- H04N21/63—Control 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/637—Control signals issued by the client directed to the server or network components
- H04N21/6377—Control signals issued by the client directed to the server or network components directed to server
- H04N21/6379—Control signals issued by the client directed to the server or network components directed to server directed to encoder, e.g. for requesting a lower encoding rate
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/80—Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
- H04N21/83—Generation or processing of protective or descriptive data associated with content; Content structuring
- H04N21/845—Structuring of content, e.g. decomposing content into time segments
- H04N21/8456—Structuring of content, e.g. decomposing content into time segments by decomposing the content in the time domain, e.g. in time segments
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Databases & Information Systems (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Communication Control (AREA)
Abstract
데이터는 서버로부터 수신 디바이스에서 수신되고, 여기서, 데이터는 복수의 상이한 버전들 중 하나로 인코딩되고, 각각의 버전은 상이한 충실도 레벨을 갖는다. 수신된 데이터를 버퍼링하기 위한 초기 최대 윈도우 사이즈를 갖는 버퍼를 이용하는 데이터 스트림이 서버로부터 요청되며, 여기서 데이터 스트림은 초기에 제 1 충실도 레벨을 갖는다. 수신 디바이스의 제어기의 존재하는 프로세싱 능력들에서의 감소로 인한 버퍼에서의 데이터의 축적이, 일시적인 기간의 시간보다 초과하는 동안, 더 높은 충실도 레벨에서 데이터 스트림을 프로세싱하기 위해 필요한 프로세싱 전력의 임계치 아래로 떨어지지 않으면 그리고 그 때까지, 최대 윈도우 사이즈는, 현재 윈도우 사이즈가 서버에 의해 전송되는 데이터 스트림의 충실도 레벨에서의 서버에 의한 조정을 트리거링할 수도 있는 임계치 아래로 떨어지는 것을 방지하기 위해 관리된다.
Description
본 발명은 일반적으로 통신 접속을 통해 데이터의 적응형 스트리밍을 관리하는 것에 관한 것이며, 더 상세하게는, 데이터를 수신하는 디바이스에서 데이터 버퍼의 사이즈, 및 대응적으로, 이용가능한 버퍼 공간을 관리하는 것에 의한 적응형 데이터 스트림의 관리에 관한 것이다.
컨텐츠의 디지털 배포는, 수신 디바이스에 의해 렌더링될, 오디오 또는 비디오와 같은 컨텐츠를 수신하기 위해 점점 더 인기를 얻고 있다. 또한, 그것은, 컨텐츠가 수신되는 것과 거의 동시에 또는 "온-디멘드(on-demand)"로 렌더링될 컨텐츠에 대해 점점 더 바람직해지고 있다. 온-디멘드 또는 실-시간 디지털 전달의 적어도 하나의 타입은 스트리밍으로 지칭되며, 이는 컨텐츠 스트림의 품질 레벨을 최대화하려고 시도하면서, 데이터 스트림의 렌더링을 지원하기 위해 필요한 (수신 및 렌더링 디바이스에 저장되는 컨텐츠를 버퍼링하거나 유지하기 위해 사용되는 메모리와 같은) 시스템 리소스들의 양을 최소화한다. 이것은, 종종, 요구시에 필요할 때 데이터의 정상 흐름을 보장하기 위해 의존될 수 있는 어떠한 전용 대역폭도 없는 패킷 데이터 네트워크에서 조금 더 난제일 수 있다. 몇몇 예시들에서, 데이터는, 데이터 경로를 따라 다양한 포인트들에서 다수의 사용자들 사이에 공유될 수 있는 네트워크 인프라구조를 통해 송신되며, 여기서, 임의의 주어진 시점에서, 다수의 사용자들 사이에서의 요구는 순간적으로 또는 그와는 다르게 용량을 초과할 수 있다. 용량을 초과하는 수요는, 데이터 경로의 특정한 세그먼트에 영향을 미칠 수도 있을 뿐만 아니라 데이터 스트림의 소스인 서버에서 또한 발생할 수도 있다.
몇몇 예시들에서, 데이터를 전달하기 위한 서버 또는 통신 접속의 능력에 부정적으로 영향을 미칠 수도 있는 높은 수요의 기간들은 일시적일 수 있으며, 불균일하게 또는 버스트(burst)들로 도달하도록 특정한 사용자에게 전달되는 데이터를 초래할 수 있다. 그러므로, 특정한 데이터 스트림을 렌더링하기 위해 사용되는 많은 클라이언트 애플리케이션들은 데이터 버퍼를 이용할 수도 있으며, 데이터 버퍼는, 이용가능한 평균 데이터 흐름이 특정한 레벨의 품질을 지원하기에 충분한 것보다 크더라도, 데이터 흐름이 현재 품질 레벨에서 렌더링된 컨텐츠를 지원하는데 필요한 레이트들 아래로 내려갈 수도 있는 시간의 기간들을 완화시키기(smooth over) 위해, 렌더링에 앞서 적절한 양의 데이터를 저장하기 위해 사용될 수 있다. 더 큰 버퍼는 더 많은 양의 휘발성 또는 더 많은 다양한 흐름 중단들을 수용하는 것을 도울 것이지만, 더 큰 버퍼는 일반적으로, 데이터 버퍼의 지원에 사용될 증가된 양의 시스템 리소스들, 즉, 이용가능한 메모리를 요구하고, 데이터 버퍼를 채우는데 필요한 시간을 증가시킬 수 있으며, 이는, 대응적으로, 사용자가 컨텐츠를 요청했던 시점에 관해 사용자에게 제시되도록 스트리밍 컨텐츠를 시작하기 전에 시작 시간을 지연시킬 수 있다.
통신 접속을 통해 데이터 스트림에서 데이터를 소싱(source)하고 전달하는 것과 연관되는 변동들에 부가하여, 컨텐츠의 매끄러운(smooth) 렌더링은, 속성상 유사하게 일시적일 수도 있는 동일한 것의 중단들을 포함하여 프로세서 재생 능력들에 의해 종종 영향을 받을 수 있다. 예를 들어, 많은 현재의 디바이스들은 멀티-태스킹을 지원하며, 여기서 프로세서의 능력들은 디바이스 상에서 동시에 실행되는 다수의 애플리케이션들 사이에 공유된다. 네트워크 리소스들의 다수의 사용자들 사이에서, 네트워크 리소스들의 데이터-반송 능력들의 요구에서 변동들이 존재할 수 있는 것과 같이, 디바이스 상에서 실행되는 다양한 애플리케이션들은 프로세서 상에서 가변 레벨들의 요구를 가질 수 있으며, 이는, 특정한 애플리케이션에 대한 이용가능한 프로세싱 능력들이, 사용자가 성능의 열화를 의식하지 않으면서 현재의 동작 셋팅에 따라 현재 프로세싱 요구들을 지원하기 위해 필요한 것 아래일 수도 있는 시간의 기간들을 제공할 수 있다.
일반적으로, 더 높은 충실도(fidelity) 데이터 스트림들은, 컨텐츠를 디코딩하고 렌더링하기 위해 더 많은 양들의 데이터 및 더 많은 프로세싱 전력을 요구한다. 대안적으로, 더 낮은 충실도 데이터 스트림들은 일반적으로, 컨텐츠를 디코딩하고 렌더링하기 위해 더 작은 양들의 데이터 및 더 작은 프로세싱 전력을 요구한다. 그러므로, 종종, 렌더링될 스트리밍된 데이터의 품질 레벨을 관리함으로써 재생의 성능을 관리할 수 있다. 그러나, 일반적으로, 가능할 경우, 대부분의 사용자들은 그들의 요청된 데이터 스트림들이 렌더링된 데이터의 매끄러운 중단되지 않는 프리젠테이션에 부정적인 영향을 미치지 않는 가장 높은 품질 레벨을 사용하여 렌더링될 것을 소망할 것이다.
적응형 스트리밍은, 임의의 특정한 시간에서 통신 채널의 이용가능한 데이터 용량 뿐만 아니라 디바이스의 프로세서 재생 능력을 더 양호하게 매칭하기 위해, 렌더링 동안 품질 레벨이 조정되게 한다. 적어도 몇몇 예시들에서, 서버는, 데이터 스트림의 어떤 품질 레벨이 수신 디바이스에 제공되어야 하는지를 결정할 시에 최대 윈도우 사이즈에 관한 현재 윈도우 사이즈의 비율을 포함하여 수신 디바이스에서 데이터 버퍼를 모니터링할 것이다. 최대 윈도우 사이즈는 일반적으로, 데이터 접속이 개방될 때 할당되는 고정된 사이즈이다. 특정한 데이터 스트림에 대해, 데이터 스트림의 전달 지속기간 동안 다수의 접속들이 개방될 수도 있다. 현재의 윈도우 사이즈는 일반적으로, 아직 수신되지 않은 데이터의 패킷들에 대해 데이터 버퍼에서 이용가능한 공간 뿐만 아니라, 적어도 몇몇 예시들에서, 디바이스에 전달되었지만 아직 확인응답되지 않은 데이터의 패킷들과 연관되는 공간을 포함한다. 대안적으로, 현재 윈도우 사이즈의 값으로부터 통상적으로 배제되는 공간은, 수신 및 확인응답되었지만 렌더링 애플리케이션에 의해 아직 사용되지 않은 데이터의 패킷들을 포함한다. 수신된 컨텐츠의 렌더링을 위해 제공되는 프로세싱 능력들에서의 중단들 동안, 수신 및 확인응답되었지만 애플리케이션에 의해 아직 소비되지 않은 데이터의 패킷들은, 데이터 버퍼의 전체 최대 윈도우 사이즈에 관하여 데이터 버퍼에서 증가할 수 있으며, 그에 의해, 더 많은 데이터를 수신하기 위한 이용가능한 현재 윈도우 사이즈를 감소시킨다. 현재 윈도우 사이즈에서의 감소를 관측한 서버는, 디바이스가 특정한 품질 레벨에 대한 현재 데이터 흐름을 지원할 수 없다고 결정할 수도 있으며, 여기서 데이터의 양은 가능한 변동성을 완화시키기에 바람직하다고 간주되는 미리결정된 양의 시간에 기초하여 버퍼링된다. 이것은, 데이터를 수신하거나 렌더링하기 위한 디바이스 능력에서의 열화의 결과일 수도 있다. 대응적으로, 서버는 후속하여 스트리밍되는 데이터 세그먼트들의 품질 레벨을 감소시킬 수도 있다.
일반적으로, 현재 윈도우 사이즈의 값은, 수신 디바이스로부터 서버에 전송되는 패킷들로 서버에 통신된다. 몇몇 예시들에서, 현재 윈도우 사이즈는, 수신 디바이스에 의해 서버에 전송되는 대부분의 패킷들 또는 종종 심지어 모든 패킷들에 포함될 수 있다. 스트리밍된 데이터를 렌더링하기 위한 이용가능한 프로세싱 능력들에 부정적인 영향을 미치는 프로세서 로드들이, 서버에 리포팅되는 현재 윈도우 사이즈에 측정가능하게 영향을 줄 수 있는 순간적인 스파이크들로서 종종 발생할 수 있기 때문에, 몇몇 예시들에서, 서버는, 속성상 오직 일시적인 프로세서 서 성능에서의 열화에 기초하는 현재 윈도우 사이즈에서의 감소에 반응할 수도 있다. 품질 레벨은 일반적으로 적절할 때 증가 및 감소될 수 있지만, 종종, 디바이스의 현재 능력들에 관한 품질 레벨을 리턴 또는 증가시키는 현재 품질 셋팅들에서의 변화들을 행하는데 있어 상당한 지연이 있을 수 있다.
본 발명은 수신 디바이스에서 데이터의 적응형 스트리밍을 관리하기 위한 방법을 제공한다. 데이터의 스트리밍은 서버로부터 수신되는 데이터를 포함하며, 여기서 서버는 데이터의 하나 이상의 데이터의 스트림들을 포함한다. 데이터의 각각의 스트림은 하나 이상의 데이터 세그먼트들을 포함한다. 각각의 데이터 세그먼트는 복수의 상이한 버전들 중 하나로 인코딩된다. 복수의 상이한 버전들 각각은 상이한 충실도 레벨을 가질 수 있다. 방법은, 요청된 데이터 스트림과 연관되는 수신된 데이터를 버퍼링하기 위한, 초기 최대 윈도우 사이즈를 갖는 버퍼를 사용하여 데이터 스트림을 요청하는 단계를 포함하며, 여기서 데이터 스트림의 일부로서 수신되는 초기 데이터 세그먼트들은 제 1 충실도 레벨을 갖는다. 그 후, 데이터 스트림과 연관되는 하나 이상의 데이터 세그먼트들은 버퍼 내로 수신되지만, 수신 디바이스의 프로세서에 의한 사용을 위해 하나 이상의 데이터 세그먼트들이 버퍼로부터 제거된다. 그 후, 버퍼의 현재 윈도우 사이즈가 결정되며, 여기서 현재 윈도우 사이즈는, 프로세서에 의한 사용을 위해 버퍼로부터 제거되지 않은 수신된 임의의 데이터 세그먼트들이 감해진(less) 최대 윈도우 사이즈와 동일하다. 그 후, 현재 윈도우 사이즈는 미리결정된 임계치와 비교된다. 현재 윈도우 사이즈가 미리결정된 임계치보다 작은 경우, 최대 윈도우 사이즈가 증가되며, 여기서, 업데이트된 최대 윈도우 사이즈는 초기 최대 윈도우 사이즈보다 더 크도록 증가되고, 현재 타이머 값 및 타이머 만료(expiration) 값을 갖는 버퍼 사이즈 증가 타이머가 개시(initiate)된다. 업데이트된 최대 윈도우 사이즈가 초기 최대 윈도우 사이즈보다 크고 버퍼 사이즈 증가 타이머의 현재 타이머 값이 타이머 만료 값보다 작은 동안, 적어도 미리결정된 임계치의 현재 윈도우 사이즈를 최소로 유지하기 위해, 정규 간격들에서, 존재하는(present) 현재 윈도우 사이즈가 결정되고, 업데이트된 최대 현재 윈도우 사이즈가 조정된다. 버퍼 사이즈 증가 타이머의 현재 타이머 값이 타이머 만료 값에 도달하기 전에 업데이트된 최대 윈도우 사이즈가 초기 최대 윈도우 사이즈보다 더 이상 크지 않도록 조정되는 경우, 버퍼 사이즈 증가 타이머는 종결된다. 버퍼 사이즈 증가 타이머가 타이머 만료 값에 도달하는 경우, 후속하여 수신되는 데이터 세그먼트들의 비트 레이트 레벨은 제 1 충실도 레벨보다 작은 제 2 충실도 레벨로 조정된다.
추가적으로, 본 발명은 수신 디바이스에서의 데이터의 적응형 스트리밍을 관리하기 위한 방법을 제공한다. 데이터의 스트리밍은 서버로부터 수신되는 데이터를 포함하며, 여기서 서버는 데이터의 하나 이상의 스트림들을 포함한다. 데이터의 각각의 스트림은 하나 이상의 데이터 세그먼트들을 포함한다. 각각의 데이터 세그먼트는 복수의 상이한 버전들 중 하나로 인코딩된다. 복수의 상이한 버전들 각각은 상이한 충실도 레벨을 가질 수 있다. 방법은, 요청된 데이터 스트림과 연관되는 수신된 데이터를 버퍼링하기 위한, 초기 최대 윈도우 사이즈를 갖는 버퍼를 사용하여 데이터 스트림을 요청하는 단계를 포함하며, 여기서 데이터 스트림의 일부로서 수신되는 초기 데이터 세그먼트들은 제 1 충실도 레벨을 갖는다. 그 후, 데이터 스트림과 연관되는 하나 이상의 데이터 세그먼트들은 프로세서에 의한 사용을 위해 버퍼 내로 수신된다. 하나 이상의 데이터 세그먼트들의 수신 동안, 데이터 스트림의 프로세싱에 관한 프로세서 성능에서의 감소는 버퍼에서 이용가능한 공간의 양을 모니터링함으로써 검출된다. 그 후, 프로세서 성능에서의 감소가 일시적인지에 관한 결정이 행해진다. 성능에서의 감소가 일시적인 것보다 크지 않다고 결정되는 경우, 버퍼의 최대 윈도우 사이즈는 미리결정된 임계치보다 큰 공간의 양을 유지하도록 조정된다. 성능에서의 감소가 일시적인 것보다 크다면, 데이터 스트림의 충실도 레벨은 제 1 충실도 레벨보다 작은 제 2 충실도 레벨로 조정된다.
더 추가적으로, 본 발명은, 서버로부터 데이터의 하나 이상의 스트림들을 수신하기 위한 수신 디바이스의 데이터 인터페이스를 제공한다. 서버는 하나 이상의 스트림들을 포함한다. 각각의 스트림은 하나 이상의 데이터 세그먼트들을 포함하며, 여기서 각각의 데이터 세그먼트는 복수의 상이한 버전들 중 하나로 인코딩된다. 복수의 상이한 버전들 각각은 상이한 충실도 레벨을 가질 수 있다. 데이터 인터페이스는 통신 접속을 통해 서버와 통신하도록 구성되는 트랜시버를 포함한다. 데이터 인터페이스는, 트랜시버를 통해 서버로부터 수신되는 데이터를 저장하기 위한 버퍼를 포함하는 메모리 뿐만 아니라 제어기를 더 포함한다. 제어기는, 트랜시버를 통해 버퍼 내로 수신될 하나 이상의 데이터 세그먼트들을 포함하는 데이터 스트림을 요청하고 ― 데이터 스트림의 일부로서 수신되는 초기 데이터 세그먼트들은 제 1 충실도 레벨을 가짐 ―, 프로세서에 의한 사용을 위해 하나 이상의 데이터 세그먼트들을 버퍼로부터 제거하도록 구성되는 데이터 스트림 관리 모듈을 갖는다. 추가적으로, 제어기는, 요청된 데이터 스트림과 연관되는 최대 윈도우 사이즈를 갖는 버퍼를 설정하는 것을 포함하여 버퍼의 사이즈를 관리하고, 버퍼의 현재 윈도우 사이즈를 결정하고 ― 여기서, 현재 윈도우 사이즈는 프로세서에 의한 사용을 위해 버퍼로부터 제거되지 않은 수신된 임의의 데이터 세그먼트들이 감해진 최대 윈도우 사이즈와 동일함 ―, 현재 윈도우 사이즈를 미리결정된 임계치와 비교하며, 현재 윈도우 사이즈가 미리결정된 임계치보다 작은 경우 최대 윈도우 사이즈를 증가시키도록 구성되는 버퍼 관리 모듈을 갖는다. 더 추가적으로, 제어기는, 현재 윈도우 사이즈가 미리결정된 임계치보다 작은 경우, 현재 타이머 값 및 타이머 만료 값을 갖는 버퍼 사이즈 증가 타이머를 개시하도록 구성되는 타이머 관리 모듈을 갖는다. 업데이트된 최대 윈도우 사이즈가 초기 최대 윈도우 사이즈보다 크고, 버퍼 사이즈 증가 타이머의 현재 타이머 값이 타이머 만료 값보다 작은 동안, 적어도 미리결정된 임계치의 현재 윈도우 사이즈를 최소로 유지하기 위해, 정규 간격들에서, 버퍼 관리 모듈은 존재하는 현재 윈도우 사이즈를 결정하고 업데이트된 최대 현재 윈도우 사이즈를 조정하도록 추가적으로 구성된다. 버퍼 사이즈 증가 타이머의 현재 타이머 값이 타이머 만료 값에 도달하기 전에 업데이트된 최대 윈도우 사이즈가 초기 최대 윈도우 사이즈보다 더 이상 크지 않도록 조정된 경우, 타이머 관리 모듈은 버퍼 사이즈 증가 타이머를 종결시키도록 추가적으로 구성된다. 타이머 관리 모듈은, 버퍼 사이즈 증가 타이머가 타이머 만료 값에 도달한 경우, 후속하여 수신되는 데이터 세그먼트들의 비트 레이트 레벨을 제 1 충실도 레벨보다 작은 제 2 충실도 레벨로 조정하도록 추가적으로 구성된다.
본 발명의 이들 및 다른 목적들, 속성들, 및 이점들은, 첨부한 도면들을 참조하여 본 발명의 하나 이상의 바람직한 실시예들의 다음의 설명으로부터 명백해진다.
첨부된 청구항들은 세부사항으로 본 발명의 특성들을 기재하지만, 본 발명의 목적들 및 이점들과 함께 본 발명은, 첨부된 도면들과 함께 취해진 다음의 상세한 설명으로부터 가장 양호하게 이해될 수도 있다.
도 1은, 데이터 스트림을 전송하고 수신하기 위한 예시적인 시스템의 부분적인 블록도이다.
도 2는, 본 발명의 적어도 하나의 실시예에 따른, 통신 접속을 통해 데이터의 적응형 스트리밍을 관리하기 위한 데이터 인터페이스를 포함하는 수신 디바이스의 블록도이다.
도 3은 예시적인 데이터 버퍼의 블록도이다.
도 4는, 본 발명의 적어도 하나의 실시예에 따른, 통신 접속을 통해 데이터의 적응형 스트리밍을 관리하기 위한 방법의 흐름도이다.
도 5는, 본 발명의 적어도 하나의 실시예에 따른, 통신 접속을 통해 데이터의 적응형 스트리밍을 관리하기 위한 방법의 흐름도이다.
도 2는, 본 발명의 적어도 하나의 실시예에 따른, 통신 접속을 통해 데이터의 적응형 스트리밍을 관리하기 위한 데이터 인터페이스를 포함하는 수신 디바이스의 블록도이다.
도 3은 예시적인 데이터 버퍼의 블록도이다.
도 4는, 본 발명의 적어도 하나의 실시예에 따른, 통신 접속을 통해 데이터의 적응형 스트리밍을 관리하기 위한 방법의 흐름도이다.
도 5는, 본 발명의 적어도 하나의 실시예에 따른, 통신 접속을 통해 데이터의 적응형 스트리밍을 관리하기 위한 방법의 흐름도이다.
도면들을 참조하면, 도면들에서, 동일한 참조 부호들은 동일한 엘리먼트들을 지칭하며, 본 발명은 적절한 환경에서 구현되는 것으로서 도시된다. 후속하는 설명은, 본 발명의 실시예들에 기초하며, 본 명세서에 명시적으로 설명되지 않은 대안적인 실시예들에 관하여 본 발명을 제한하는 것으로서 취해져서는 안된다.
최대 윈도우 사이즈의 사이즈를 관리하는 것은 유익하며, 이는, 차례로, 수신 디바이스에 제공하기 위한 데이터 스트림의 품질 레벨을 결정하기 위하여 서버에 의해 사용되는 현재 윈도우 사이즈에 영향을 미치고, 여기서, 수신 디바이스에서의 데이터 버퍼의 최대 윈도우 사이즈는, 프로세서 재생 능력에서의 임의의 감소가 일시적인 것보다 크다고 결정될 수 있을 때까지, 수신 및 확인응답되었지만 수신 디바이스에서의 렌더링 애플리케이션에 의해 아직 소비되지 않은 데이터의 증가량을 수용하도록 순간적으로 증가될 수 있다. 이것은, 스트리밍되는 데이터의 품질 레벨에 대한 변화들을 행하기를 서버가 원할 수도 있는 인스턴스들의 개수를 감소시킬 수 있다.
도 1은, 데이터 스트림을 전송하고 수신하기 위한 예시적인 시스템(100)의 부분적인 블록도이다. 인터넷과 같은 패킷 데이터 네트워크(102)를 통한 컨텐츠의 스트리밍은 일반적으로 채택되는 관행(practice)이 되고 있으며, 여기서, 예를 들어, 비디오 클립들, 보이스 통신들, 뮤직, 및 영화들은 말단 사용자의 수신 디바이스(104)에 대한 컨텐츠 제공자와 같은 데이터 소스로부터 일반적으로 스트리밍된다. 많은 예시들에서, 데이터 스트림은, 하나 이상의 충실도 레벨들을 갖는 형태로 인코딩된 컨텐츠를 포함하는, 미디어 또는 컨텐츠 서버와 같은 서버(106)에서 발신되며, 여기서, 통신 접속은 요청 시에 수신 디바이스(104)와 설정된다.
몇몇 예시들에서, 수신 디바이스(104)는 유선 접속(108)을 통해 패킷 데이터 네트워크에 커플링될 수도 있다. 그러한 예시에서, 데이터는, 데이터 스트림이 수신 디바이스(104)에서 수신될 때까지, 패킷 데이터 네트워크(102)의 일부를 형성할 수 있는 다양한 라우터들 및 게이트웨이들(도시되지 않음)을 통과할 수도 있는 통신 채널을 통해 수신 디바이스(104)에 전달될 것이다. 몇몇 예시들에서, 서버(106)는 수신 디바이스(104)와 동일한 구역(premises) 상에 위치될 수도 있으며, 이러한 경우에서 통신 접속의 일부로서 데이터 스트림이 이동할 수도 있는 라우터들 및 게이트웨이들의 개수는, 존재한다면, 최소일 수도 있다. 예를 들어, 이것은, 하우스 내의 텔레비전 세트들과 같은 다수의 디바이스들에 데이터를 소싱하기 위해 사용되는 디지털 비디오 리코더에 대한 경우일 수도 있다. 그러나, 흥미롭게도, 디지털 비디오 리코더는 때로는 다른 수신 디바이스들(104)에 관한 데이터 스트림의 소스일 수도 있지만, 다른 때에는, 디지털 비디오 리코더가 수신 디바이스(104)일 수 있다. 예를 들어, 디지털 비디오 리코더는, 텔레비전 브로드캐스터, 케이블 제공자, 다이렉트(direct) 브로드캐스트 위성 제공자, 또는 스트리밍 서버와 같은 컨텐츠 제공자에 관한 수신 디바이스(104)일 수 있다.
몇몇 예시들에서, 데이터는 무선으로(110) 수신 디바이스(104)에 전달될 수도 있다. 그러한 예시에서, 통신 채널의 통신 경로의 일부는, 경로가 무선 LAN의 일부를 통과하는 경우에서는 액세스 포인트 또는 경로가 셀룰러 네트워크의 일 부분을 통과하는 경우에서는 베이스 트랜시버 기지국과 같은, 트랜시버 엘리먼트(112)를 포함할 수도 있다. 트랜시버 엘리먼트(112)는 무선으로 수신 디바이스(104)에 데이터를 통신할 수 있다. 몇몇 예시들에서, 수신 디바이스(104)는, 컨텐츠가 렌더링되고 사용자에게 대응적으로 제시되는 디바이스일 수도 있다. 다른 예시들에서, 수신 디바이스(104)는, 인코딩되거나 디코딩된 데이터 중 어느 하나를 수신하고 렌더링하기 위한 수신 디바이스(104)에 테더링(tether)된 디바이스(114)에 데이터를 포워딩할 수도 있다. 테더링된 디바이스(114)는, 예컨데 유선 접속을 통해, 케이블을 통해 수신 디바이스(104)와 종종 연관되지만, 대안적으로, 본 발명의 교시들로부터 벗어나지 않으면서 Bluetooth® 접속과 같은 무선 접속에 의해 수신 디바이스(104)에 커플링될 수 있다.
수신 디바이스들(104)의 예들은, 개인용 컴퓨터들, 태블릿 컴퓨터들, 셀룰러 전화기들, 텔레비전들, 스테레오 시스템들, 오디오 플레이어들, 비디오 게임 플레이어들, 디지털 카메라들, 케이블 또는 위성 브로드캐스트 컨버터 박스들, 디지털 비디오 리코더들 등을 포괄적이 되도록 의도함이 없이 포함할 수 있다. 몇몇 예시들에서, 이들 디바이스들이 브로드캐스트 타입 포맷으로 컨텐츠를 수신할 수도 있지만, 본 출원은, 송신 제어 프로토콜 또는 하이퍼 텍스트 전송 프로토콜과 같은 패킷-기반 통신 프로토콜을 사용하여 통신 접속을 통해 스트리밍되는 데이터에 대해 특히 적절하며, 여기서, 패킷들의 수신이 확인(confirm)되고, 수신 디바이스(104)로부터의 피드백은 서버(106)가 서버(106)로부터 수신 디바이스(104)에 스트리밍되는 데이터의 장래의 흐름을 조정하게 한다. 추가적으로, 본 출원은, 온-디멘드 포맷으로 스트리밍되거나 수신되는 데이터에 대해 특히 적절하며, 여기서 수신 디바이스(104)는, 데이터 버퍼를 보유하고, 거의 수신 시에 스트리밍되는 데이터를 사용하려 시도한다.
그러한 예시에서, 데이터 버퍼의 전체 사이즈는 전달되는 컨텐츠의 전체 사이즈와 비교하여 적절(modest)할 수 있다. 데이터 버퍼의 의도는, 데이터를 소싱하기 위한 네트워크의 능력, 또는 데이터를 프로세싱하고 렌더링하기 위한 재생 프로세서들의 능력을 제한하는 순간적인 변동들을 수용하기 위한 것이다. 일반적으로, 그것은, 데이터를 소싱하고 전송하는 네트워크의 능력 뿐만 아니라 데이터를 프로세싱하고 재생하기 위한 수신 디바이스(104)의 능력과 데이터 스트림의 충실도를 매칭시키려 시도하기 위한 그러한 시스템들의 의도이다. 즉, 일반적으로 시스템은, 컨텐츠를 렌더링하는 프로세스 동안 사용자에게 전달되는 컨텐츠에서의 일시정지들, 중단들, 또는 스킵들을 회피하려 시도하면서, 가장 높은 품질 버전의 데이터를 공급하려 시도한다. 그러므로, 사용자에게 제시될 컨텐츠의 매끄러운 재생을 지원하기 위해, 데이터 흐름은 일반적으로 모니터링되고, 데이터 흐름은 적절히 조정된다.
수신 디바이스(104)에서 조건들을 모니터링하기 위해, 일반적으로, 수신 디바이스(104)는 통신 접속을 개방할 시에 고정된 사이즈의 데이터 퍼버를 설정하거나 할당할 것이다. 그 후, 수신 디바이스(104)는 데이터 버퍼의 채움(fill) 상태를 서버(106)와 통신할 것이며, 차례로, 서버(106)는, 데이터 버퍼를 오버-필링(over-fill) 또는 언더-필링(under-fill)하지 않기 위해, 스트리밍되는 데이터의 양 및 충실도를 조정할 수 있다.
그러나, 종종, 서버는 속성상 단지 일시적인 수신 디바이스(104)에서의 조건에 적극적으로 응답할 수도 있다. 그러므로, 본 발명에 따르면, 수신 디바이스(104)가 수신 디바이스(104)의 성능에서 변동들을 수용하도록 데이터 버퍼의 사이즈를 조정하는 것이 유익할 수도 있으며, 여기서, 데이터를 프로세싱하기 위한 수신 디바이스(104)의 능력에서의 장애로 인해 너무 신속하게 채워지는 버퍼에 응답하여 더 낮은 충실도 데이터 스트림으로 서버(106)가 트랜지션(transition)하는 것은 바람직하지 않을 것이다. 그러한 순간적인 장애는, 수신 디바이스(104) 내에서 동시에 실행 중인 다른 애플리케이션의 프로세싱 전력 요구들에서의 서지(surge)의 결과일 수 있다. (많은 디바이스들이 다수의 프로그램들 또는 애플리케이션들의 동시 사용을 점점 더 지원하고 있다.)
도 2는, 본 발명의 적어도 하나의 실시예에 따른, 통신 접속을 통해 데이터의 적응형 스트리밍을 관리하기 위한 데이터 인터페이스를 포함하는 수신 디바이스(200)의 블록도를 도시한다. 데이터 인터페이스는, 통신 접속을 통해 서버(106)와 통신하도록 구성되는 트랜시버(202)를 포함한다. 몇몇 예시들에서, 트랜시버(202)는 유선 접속을 통해 패킷 데이터 네트워크 및 대응적으로 서버(106)에 커플링될 수도 있지만, 다른 예시들에서, 트랜시버(202)는 무선 컴포넌트를 포함하는 통신 접속을 지원하기 위한 안테나(204)에 커플링될 수도 있다. 데이터 인터페이스는, 트랜시버(202)를 통해 서버(106)로부터 수신되는 데이터를 저장하기 위한 데이터 버퍼(208)를 포함하는 메모리(206), 및 제어기(210)를 더 포함한다.
제어기(210)는, 트랜시버(202)를 통해 데이터 버퍼(208) 내로 수신될 하나 이상의 데이터 세그먼트들을 포함하는 데이터 스트림을 요청하고 ― 여기서, 데이터 스트림의 일부로서 수신되는 초기 데이터 세그먼트들은 제 1 충실도 레벨을 가짐 ―, 프로세서(214)에 의한 사용을 위해 하나 이상의 데이터 세그먼트들을 데이터 버퍼(208)로부터 제거하도록 구성되는 데이터 스트림 관리 모듈(212)을 포함한다. 제어기는, 요청된 데이터 스트림과 연관되는 최대 윈도우 사이즈를 갖는 데이터 버퍼(208)를 설정하는 것을 포함하여 데이터 버퍼(208)의 사이즈를 관리하고, 데이터 버퍼(208)의 현재 윈도우 사이즈를 결정하도록 구성되는 버퍼 관리 모듈(216)을 더 포함하며, 여기서, 현재 윈도우 사이즈는, 프로세서(214)에 의한 사용을 위한 데이터 버퍼로부터 제거되지 않은 수신된 임의의 데이터 세그먼트들이 감해진 최대 윈도우 사이즈와 동일하다. 추가적으로, 버퍼 관리 모듈은, 미리결정된 임계치에 데이터 버퍼(208)의 현재 윈도우 사이즈를 비교하며, 현재 윈도우 사이즈가 미리결정된 임계치보다 작은 경우, 최대 윈도우 사이즈를 증가시킨다. 제어기는, 현재 윈도우 사이즈가 미리결정된 임계치보다 작은 경우, 현재 타이머 값 및 타이머 만료 값을 갖는 버퍼 사이즈 증가 타이머(220)를 개시하도록 구성되는 타이머 관리 모듈(218)을 더 포함한다. 일반적으로 타이머는, 개시된 경우, 타이머(220)가 비활성화되거나 타이머가 타이머 만료 값에 도달함으로써 만료될 때까지, 경과 시간을 트래킹할 것이다.
몇몇 실시예들에서, 제어기는(210)는, 하나 이상의 제어기 모듈들(212, 216, 및 218)의 적어도 일부를 형성하기 위해 사용될 수도 있는 미리저장된 명령들의 하나 이상의 세트들(222)을 실행하도록 구성되는 마이크로프로세서의 형태로 구현된다. 미리저장된 명령들의 하나 이상의 세트들(222)은, 도면들에서 별개인 것으로 도시되었지만 제어기의 일부로서 통합되거나 제어기(210)에 커플링될 수 있는 메모리(206)에 저장될 수도 있다. 메모리(206)는 하나 이상의 형태들의 휘발성 또는 비-휘발성 메모리 엘리먼트들을 포함할 수 있다. 부가적으로 또는 대안적으로, 메모리(206)는, 하드 드라이브 또는 플로피 드라이브와 같은, 고정형 또는 착탈형 중 어느 하나인 하나 이상의 형태들의 보조 저장부를 포함할 수도 있다. 당업자는, 본 발명의 교시들을 벗어나지 않으면서 다른 추가적인 형태들의 메모리 엘리먼트들이 사용될 수 있음을 인식할 것이다. 동일하거나 다른 예시들에서, 제어기(210)는, 제어기 모듈들 중 적어도 부분적으로 몇몇 및 그들의 대응하는 기능을 구현하기 위해 사용될 수 있는 상태 머신들 또는 로직 회로를 포함할 수도 있다. 타이머(220)가 제어기(210)에서 모듈로서 구현될 수 있다는 것이 추가적으로 가능하다.
수신 디바이스(200)는, 데이터 버퍼(208)로부터 데이터 세그먼트들을 수신하고, 사용자에 의해 인지되도록 데이터가 렌더링될 수 있기 위해 디코더(224)를 통해 데이터 세그먼트들을 디코딩하도록 구성되는 프로세서(214)를 포함한다. 렌더링된 데이터는 사용자 인터페이스 엘리먼트들(226) 중 하나를 통해 사용자에 제공될 수 있다. 예시적인 사용자 인터페이스 엘리먼트들은, 하나 이상의 디스플레이들(228), 하나 이상의 스피커들(230), 및 하나 이상의 진동 엘리먼트들(232)을 포함한다. 이러한 방식에서, 사용자에 의해 경험될 수 있는 비주얼, 오디오 뿐만 아니라 진동 정보를 수신 디바이스가 재현(recreate)하는 것이 가능할 수도 있다. 프로세서(214)는 마이크로프로세서로 유사하게 구현될 수 있다. 동일한 마이크로프로세서가 제어기(210) 및 프로세서(214) 둘 모두를 구현하기 위해 사용될 수 있다는 것이 추가적으로 가능하다.
도 3은 데이터 버퍼(208)의 예시적인 블록도이다. 일반적으로, 데이터 버퍼는 최대 윈도우 사이즈에 대응하는 메모리(206)의 일부이다. 데이터 버퍼(208)의 최대 윈도우 사이즈 내에서, 공간은 3개의 섹션들로 분리(segregate)될 수 있다. 데이터 버퍼는 섹션(302)을 포함하며, 이 섹션 내의 데이터 패킷들 또는 데이터 세그먼트들은, 수신되고 확인응답되었지만, 프로세서, 더 상세하게는 프로세서(214) 내에서 실행되는 렌더링 애플리케이션에 의해 아직 사용되지 않았다. 추가적으로, 데이터 버퍼(208)는 섹션(304)을 포함하며, 여기서, 수신 디바이스(200)에 전달된 데이터 패킷들이 존재하지만, 그들은 수신 디바이스(200)에 의해 수신된 것으로 서버(106)에 아직 확인응답되지 않았다. 더 추가적으로, 데이터 버퍼(208)는, 현재 사용되고 있지 않고 추가적인 데이터를 저장하는데 이용가능한 버퍼 내의 공간을 포함하는 섹션(306)을 포함한다. 일반적으로, 데이터 버퍼와 연관되는 현재 윈도우 사이즈는 미사용된 부분, 즉 섹션(306)을 포함하고, 적어도 몇몇 예시들에서, 수신 디바이스에 전달되었지만 아직 확인응답되지 않은 데이터 패킷들을 저장하는데 사용되는 섹션(304)을 부가적으로 포함할 것이다. 데이터가 프로세서에 의해 사용되는 경우, 데이터는 데이터 버퍼(208)로부터 제거되고, 이는, 차례로, 버퍼에서의 공간을 자유롭게 한다.
현재 윈도우 사이즈는, 수신 디바이스(200)로부터 서버(106)로의 통신들에서 서버(106)에 일반적으로 전달되는 값을 표현한다. 적어도 몇몇 실시예들에서, 현재 윈도우 사이즈는, 수신 디바이스(200)로부터 서버(106)에 통신되는 메시지들의 적어도 몇몇 헤더들에 존재하고, 그렇지 않다면 모든 헤더들에 존재할 것이다. 서버(106)는, 후속하는 전송들에서 수신 디바이스가 핸들링할 수 있는 데이터의 양을 결정하기 위해 현재 윈도우 사이즈의 정보를 사용할 것이다. 최대 윈도우 사이즈를 알고 있는 것과 관련하여 간접적으로, 현재 윈도우 사이즈에 관한 정보는, 데이터 버퍼(208) 중 얼마나 많은 데이터 버퍼가 현재 사용되고 있는지를 결정하기 위해 사용될 수 있다. 부가적으로, 서버는, 데이터 스트림으로부터의 후속하여 송신된 데이터 세그먼트들의 충실도가 조정되어야 하는지를 결정하기 위한 프로세스의 일부로서, 현재 윈도우 사이즈에 관한 수신된 정보를 사용할 수 있다. 최대 윈도우 사이즈를 조정함으로써, 수신 디바이스(200)는 대응하는 현재 윈도우 사이즈에 영향을 줄 수 있으며, 그 후, 이는 차례로, 서버(106)가 데이터를 계속 소싱하는 방식에 영향을 줄 수 있다.
예를 들어, 최대 윈도우 사이즈를 증가시킴으로써, 그것을 행하는 것이 바람직할 수도 있는 상황들에서, 수신 디바이스(200)는, 서버(106)가 후속하여 전송될 데이터 스트림의 일부의 충실도 레벨을 조정할 수도 있는 상황들을 미연에 방지할 수 있을 수도 있다. 즉, 수신 디바이스(200)는, 데이터 버퍼가 미사용된 데이터로 채워지는 인스턴스들에 서버(106)가 반응하는 것을 지연시킬 수 있으며, 여기서 프로세서는 예외적인(unsusal) 프로세싱 로드를 경험하며, 스트리밍된 컨텐츠를 렌더링하는데 사용될 데이터의 프로세싱에서의 지연을 야기한다. 타이머(220)는, 수신 디바이스, 및 더 상세하게는 데이터 인터페이스가, 버퍼 내의 데이터가 얼마나 오래 영향을 받는지 그리고 조건이 미리결정된 길이의 시간을 넘어 지속되는지를 결정하게 한다. 최대 윈도우 사이즈 및 대응적으로는 현재 윈도우 사이즈는, 미사용된 데이터로 채워지는 데이터 버퍼(208)에 서버(106)가 응답할 수 있도록 재조정될 수 있다. 그러나, 타이머(220)가 만료될 때까지, 최대 윈도우 사이즈는 서버(106)에 의한 조정을 미연에 방지하도록 계속 조정될 수 있다. 최대 윈도우 사이즈 및 대응적으로는 현재 윈도우 사이즈의 사이즈가, 타이머의 만료 전에 자신의 본래의 사이즈로 재조정한다면, 서버(106)에 의한 데이터의 소싱 및 프로세서(214)에 의한 데이터의 프로세싱은, 지금까지 행해진 송신된 데이터 세그먼트들의 충실도의 임의의 조정 없이 계속될 수 있다.
일반적으로, 데이터 세그먼트들의 충실도는 신호 품질을 지칭한다. 오디오 데이터에 대해, 충실도는, 오디오 신호가 인코딩되는 비트 레이트에 대응할 수 있다. 비디오 데이터에 대해, 충실도는, 비디오 신호의 해상도 또는 인코딩된 비디오 신호의 프레임 레이트에 대응할 수 있다. 일반적으로, 더 낮은 충실도 신호는 더 높은 충실도 신호보다 더 적은 데이터를 포함한다. 그러므로, 더 긴 지속시간의 스트리밍된 컨텐츠는 더 낮은 충실도 값을 갖는 신호에 대해 동일한 개수의 비트들로 인코딩될 수 있다.
도 4는, 본 발명의 적어도 하나의 실시예에 따른, 통신 접속을 통해 데이터의 적응형 스트리밍을 관리하기 위한 방법의 흐름도(400)이다. 방법은 요청된 데이터 스트림을 수신하는 단계(402)를 포함한다. 요청된 데이터 스트림의 수신 동안, 방법은 프로세서 성능에서의 둔화(slow down)를 검출(404)하려 시도한다. 일시적인 것보다 큰 둔화가 검출되면(406), 후속하여 서버에 의해 전송되고 수신 디바이스에 의해 수신될 데이터 스트림의 일부의 충실도 레벨은, 더 낮은 충실도 레벨을 갖도록 조정된다(408). 일시적인 것보다 큰 둔화가 검출되지 않으면, 수신 디바이스에서의 수신 데이터 버퍼의 최대 윈도우 사이즈가 조정된다(410).
도 5는 통신 접속을 통해 데이터의 적응형 스트리밍을 관리하기 위한 방법의 더 상세한 흐름도(500)이다. 방법은 컨텐츠 서버로부터 데이터 스트림을 요청하는 단계(502)를 포함한다. 그 후, 데이터 스트림으로부터의 데이터는 버퍼 내로 수신되지만(504), 수신 디바이스의 프로세서에 의한 사용을 위한 데이터는 버퍼로부터 제거된다(506). 그 후, 버퍼에서 이용가능한 공간에 대응하는 현재 윈도우 사이즈의 값에 관한 결정(508)이 행해지며, 그 값은, 적어도 몇몇 예시들에서, 수신 디바이스에 의해 수신된 것으로서 확인응답되는 데이터를 포함한다. 현재 윈도우 사이즈가 미리정의된 임계치보다 작다면(510), 데이터 버퍼의 최대 버퍼 사이즈는 증가되며(512), 최대 버퍼 사이즈가 증가되었던 시간을 마킹하는 타이머가 시작된다(514). 현재 윈도우 사이즈가 미리정의된 임계치(510)보다 작지 않다면, 버퍼의 최대 윈도우 사이즈에 대한 어떤 변화도 행해지지 않으며, 수신 디바이스는 계속, 버퍼 내로 데이터를 수신하고(504), 버퍼 밖으로 데이터를 프로세싱한다(506).
타이머가 시작(514)할 시에, 수신 디바이스는 유사하게 계속, 버퍼 내로 데이터를 수신하고 버퍼 밖으로 데이터를 프로세싱하지만(516), 타이머 기간이 경과하는지를 관측하도록 또한 확인한다(518). 타이머가 경과하지 않는다면, 데이터 인터페이스는, 미리결정된 임계치 아래가 아닌 버퍼 내의 이용가능한 공간을 최소로 유지하도록 버퍼 사이즈를 적절히 조정한다(520). 타이머의 만료(518) 전에 그리고 버퍼의 최대 윈도우 사이즈가 추가적으로 조정된(520) 후에, 조정된 최대 윈도우 사이즈가 버퍼의 초기 최대 윈도우 사이즈보다 여전히 크다면, 수신 디바이스는 계속, 데이터를 수신하고 버퍼 밖으로 데이터를 프로세싱한다(516). 타이머의 만료(518) 전에 그리고 버퍼의 최대 윈도우 사이즈가 추가적으로 조정된(520) 후에, 조정된 최대 윈도우 사이즈가 버퍼의 초기 최대 윈도우 사이즈보다 여전히 크지 않다면, 타이머는 종결된다(524). 타이머가 만료되면(518), 수신 디바이스에 의해 후속하여 수신될 데이터의 충실도 레벨은 감소되며(526), 타이머는 종결된다(524). 이러한 방식에서, 통신 접속을 통한 데이터의 적응형 스트리밍은 데이터 버퍼의 최대 윈도우 사이즈를 조정함으로써 관리될 수 있다.
본 발명의 원리들이 적용될 수도 있는 많은 가능한 실시예들의 관점에서, 도시한 도면들에 대하여 본 명세서에 설명된 실시예들이 예시적인 것으로만 의도되며 본 발명의 범위를 제한하는 것으로서 취해져서는 안된다는 것이 인지되어야 한다. 따라서, 본 명세서에 설명된 바와 같은 본 발명은, 후속하는 청구항들 및 그들의 등가물들의 범위 내에서 도달할 수도 있는 것으로서 모든 그러한 실시예들을 고려한다.
Claims (20)
- 서버로부터 수신되는 데이터를 포함하는 수신 디바이스에서의 데이터의 적응형 스트리밍을 관리하기 위한 방법으로서,
상기 서버는 데이터의 하나 이상의 스트림들을 포함하고, 데이터의 각각의 스트림은 하나 이상의 데이터 세그먼트들을 포함하고, 각각의 데이터 세그먼트는 복수의 상이한 버전들 중 하나로 인코딩되고, 상기 복수의 상이한 버전들 각각은 상이한 충실도(fidelity) 레벨을 가지며,
상기 방법은,
데이터 스트림을 요청하는 단계 ― 상기 데이터 스트림을 요청하는 단계는, 요청된 데이터 스트림과 연관되는 수신된 데이터를 버퍼링하기 위한 초기 최대 윈도우 사이즈를 갖는 버퍼를 사용하며, 상기 데이터 스트림의 일부로서 수신되는 초기 데이터 세그먼트들은 제 1 충실도 레벨을 가짐 ―;
상기 데이터 스트림과 연관되는 하나 이상의 데이터 세그먼트들을 상기 버퍼 내로 수신하는 단계;
상기 수신 디바이스의 프로세서에 의한 사용을 위해 하나 이상의 데이터 세그먼트들을 상기 버퍼로부터 제거하는 단계;
상기 버퍼의 현재 윈도우 사이즈를 결정하는 단계 ― 상기 현재 윈도우 사이즈는, 상기 프로세서에 의한 사용을 위해 버퍼로부터 제거되지 않은 수신된 임의의 데이터 세그먼트들이 감해진(less) 상기 최대 윈도우 사이즈와 동일함 ―;
미리결정된 임계치와 상기 현재 윈도우 사이즈를 비교하는 단계; 및
상기 최대 윈도우 사이즈를 증가시키고 ― 업데이트된 최대 윈도우 사이즈는, 상기 초기 최대 윈도우 사이즈보다 크도록 증가됨 ―, 상기 현재 윈도우 사이즈가 상기 미리결정된 임계치보다 작은 경우, 현재 타이머 값 및 타이머 만료 값을 갖는 버퍼 사이즈 증가 타이머를 개시하는 단계를 포함하며,
상기 업데이트된 최대 윈도우 사이즈가 상기 초기 최대 윈도우 사이즈보다 크고 상기 버퍼 사이즈 증가 타이머의 상기 현재 타이머 값이 상기 타이머 만료 값보다 작은 동안, 적어도 상기 미리결정된 임계치의 상기 현재 윈도우 사이즈를 최소로 유지하기 위해, 정규 간격들에서, 존재하는(present) 현재 윈도우 사이즈를 결정하고, 상기 업데이트된 최대 현재 윈도우 사이즈를 조정하고;
상기 버퍼 사이즈 증가 타이머의 현재 타이머 값이 상기 타이머 만료 값에 도달하기 전에 상기 업데이트된 최대 윈도우 사이즈가 상기 초기 최대 윈도우 사이즈보다 더 이상 크지 않도록 조정된 경우, 상기 버퍼 사이즈 증가 타이머는 종결되고; 그리고
상기 버퍼 사이즈 증가 타이머가 상기 타이머 만료 값에 도달한 경우, 후속하여 수신되는 데이터 세그먼트들의 비트 레이트 레벨은 상기 제 1 충실도 레벨보다 작은 제 2 충실도 레벨로 조정되는,
데이터의 적응형 스트리밍을 관리하기 위한 방법. - 제 1 항에 있어서,
상기 업데이트된 최대 현재 윈도우 사이즈를 조정하는 것은,
상기 존재하는 현재 윈도우 사이즈가 상기 미리결정된 임계치보다 작은 경우 상기 최대 윈도우 사이즈를 추가적으로 증가시키는 단계; 및
상기 존재하는 현재 윈도우 사이즈가 상기 미리결정된 임계치보다 큰 경우 상기 최대 윈도우 사이즈를 감소시키는 단계를 포함하는,
데이터의 적응형 스트리밍을 관리하기 위한 방법. - 제 2 항에 있어서,
상기 최대 윈도우 사이즈를 감소시키는 경우, 상기 최대 윈도우 사이즈가 감소되는 양은, 상기 업데이트된 최대 윈도우 사이즈가 상기 초기 최대 윈도우 사이즈보다 큰 양으로 제한되는,
데이터의 적응형 스트리밍을 관리하기 위한 방법. - 제 1 항에 있어서,
상기 존재하는 현재 윈도우 사이즈가 결정되고 상기 업데이트된 최대 현재 윈도우 사이즈가 조정되는 정규 간격들은 상기 요청된 데이터 스트림의 최대 송신 유닛 경계에 대응하는,
데이터의 적응형 스트리밍을 관리하기 위한 방법. - 제 1 항에 있어서,
수신된 데이터 세그먼트들은 상기 수신 디바이스에 의해 확인응답된 데이터 세그먼트들로 제한되는,
데이터의 적응형 스트리밍을 관리하기 위한 방법. - 제 1 항에 있어서,
상기 최대 윈도우 사이즈를 증가시키는 단계는 상기 현재 윈도우 사이즈를 증가시키는,
데이터의 적응형 스트리밍을 관리하기 위한 방법. - 제 1 항에 있어서,
상기 데이터 스트림을 요청하는 단계는, 상기 서버와의 접속을 개방하는 단계를 포함하는,
데이터의 적응형 스트리밍을 관리하기 위한 방법. - 제 1 항에 있어서,
상기 데이터 스트림은 실-시간 데이터를 포함하는,
데이터의 적응형 스트리밍을 관리하기 위한 방법. - 제 1 항에 있어서,
상기 현재 윈도우 사이즈는 상기 수신 디바이스로부터 전송되는 메시지들의 일부로서 상기 서버에 정기적으로 통신되는,
데이터의 적응형 스트리밍을 관리하기 위한 방법. - 제 1 항에 있어서,
상기 버퍼는 상기 수신 디바이스의 메모리로부터 할당되는,
데이터의 적응형 스트리밍을 관리하기 위한 방법. - 제 1 항에 있어서,
상기 충실도 레벨은, 하나 이상의 상이한 해상도들 또는 프레임 레이트들의 비디오 데이터, 및 하나 이상의 상이한 비트 레이트들의 오디오 데이터 중 하나 이상을 포함하는,
데이터의 적응형 스트리밍을 관리하기 위한 방법. - 서버로부터 수신되는 데이터를 포함하는, 수신 디바이스에서의 데이터의 적응형 스트리밍을 관리하기 위한 방법으로서,
상기 서버는 데이터의 하나 이상의 스트림들을 포함하고, 데이터의 각각의 스트림은 하나 이상의 데이터 세그먼트들을 포함하고, 각각의 데이터 세그먼트는 복수의 상이한 버전들 중 하나로 인코딩되고, 상기 복수의 상이한 버전들 각각은 상이한 충실도 레벨을 가지며,
상기 방법은,
데이터 스트림을 요청하는 단계 ― 상기 데이터 스트림을 요청하는 단계는, 요청된 데이터 스트림과 연관되는 수신된 데이터를 버퍼링하기 위한 초기 최대 윈도우 사이즈를 갖는 버퍼를 사용하며, 상기 데이터 스트림의 일부로서 수신되는 초기 데이터 세그먼트들은 제 1 충실도 레벨을 가짐 ―;
프로세서에 의한 사용을 위해 상기 데이터 스트림과 연관되는 하나 이상의 데이터 세그먼트들을 상기 버퍼 내로 수신하는 단계;
상기 하나 이상의 데이터 세그먼트들의 수신 동안, 버퍼에서 이용가능한 공간의 양을 모니터링함으로써 상기 데이터 스트림의 프로세싱에 관한 프로세서 성능에서의 감소를 검출하는 단계;
상기 프로세서 성능에서의 감소가 일시적인지를 결정하는 단계;
상기 성능에서의 감소가 일시적인 것보다 크지 않은 경우, 미리결정된 임계치보다 큰 공간의 양을 유지하기 위해 상기 버퍼의 상기 최대 윈도우 사이즈를 조정하는 단계; 및
상기 성능에서의 감소가 일시적인 것보다 큰 경우, 상기 데이터 스트림의 상기 충실도 레벨을 상기 제 1 충실도 레벨보다 작은 제 2 충실도 레벨로 조정하는 단계를 포함하는,
데이터의 적응형 스트리밍을 관리하기 위한 방법 - 서버로부터 데이터의 하나 이상의 스트림들을 수신하기 위한 수신 디바이스의 데이터 인터페이스로서,
상기 서버는 데이터의 하나 이상의 스트림들을 포함하고, 각각의 스트림은 하나 이상의 데이터 세그먼트들을 포함하고, 각각의 데이터 세그먼트는 복수의 상이한 버전들 중 하나로 인코딩되고, 상기 복수의 상이한 버전들 각각은 상이한 충실도 레벨을 가지며,
상기 데이터 인터페이스는,
통신 접속을 통해 상기 서버와 통신하도록 구성되는 트랜시버;
상기 트랜시버를 통해 상기 서버로부터 수신되는 데이터를 저장하기 위한 버퍼를 포함하는 메모리; 및
제어기를 포함하며,
상기 제어기는,
상기 트랜시버를 통해 상기 버퍼 내로 수신될 하나 이상의 데이터 세그먼트들을 포함하는 데이터 스트림을 요청하고 ― 상기 데이터 스트림의 일부로서 수신되는 초기 데이터 세그먼트들은 제 1 충실도 레벨을 가짐 ―, 프로세서에 의한 사용을 위해 하나 이상의 데이터 세그먼트들을 상기 버퍼로부터 제거하도록 구성되는 데이터 스트림 관리 모듈;
요청된 데이터 스트림과 연관되는 최대 윈도우 사이즈를 갖는 버퍼를 설정하는 것을 포함하여 버퍼의 사이즈를 관리하고, 상기 버퍼의 현재 윈도우 사이즈를 결정하고 ― 상기 현재 윈도우 사이즈는, 상기 프로세서에 의한 사용을 위해 수신되고 상기 버퍼로부터 제거되지 않는 임의의 데이터 세그먼트들이 감해진 상기 최대 윈도우 사이즈와 동일함 ―, 미리결정된 임계치와 상기 현재 윈도우 사이즈를 비교하며, 그리고 상기 현재 윈도우 사이즈가 상기 미리결정된 임계치보다 작은 경우 상기 최대 윈도우 사이즈를 증가시키도록 구성되는 버퍼 관리 모듈; 및
상기 현재 윈도우 사이즈가 상기 미리결정된 임계치보다 작은 경우, 현재 타이머 값 및 타이머 만료 값을 갖는 버퍼 사이즈 증가 타이머를 개시하도록 구성되는 타이머 관리 모듈을 포함하고,
상기 버퍼 관리 모듈은, 업데이트된 최대 윈도우 사이즈가 초기 최대 윈도우 사이즈보다 크고 상기 버퍼 사이즈 증가 타이머의 상기 현재 타이머 값이 상기 타이머 만료 값보다 작은 동안, 적어도 상기 미리결정된 임계치의 현재 윈도우 사이즈를 최소로 유지하기 위해, 정규 간격들에서, 존재하는 현재 윈도우 사이즈를 결정하고 상기 업데이트된 최대 현재 윈도우 사이즈를 조정하도록 추가적으로 구성되고;
상기 타이머 관리 모듈은, 상기 버퍼 사이즈 증가 타이머의 현재 타이머 값이 상기 타이머 만료 값에 도달하기 전에 상기 업데이트된 최대 윈도우 사이즈가 상기 초기 최대 윈도우 사이즈보다 더 이상 크지 않도록 조정된 경우, 상기 버퍼 사이즈 증가 타이머를 종결시키도록 추가적으로 구성되고; 그리고
상기 타이머 관리 모듈은, 상기 버퍼 사이즈 증가 타이머가 상기 타이머 만료 값에 도달한 경우, 후속하여 수신되는 데이터 세그먼트들의 비트 레이트 레벨을, 상기 제 1 충실도 레벨보다 작은 제 2 충실도 레벨로 조정하도록 구성되는,
데이터 인터페이스. - 제 13 항에 있어서,
상기 트랜시버는, 무선 통신 접속을 통해 데이터를 송신하고 서버로부터 데이터를 수신하기 위한 안테나에 커플링되는,
데이터 인터페이스. - 제 13 항에 있어서,
상기 트랜시버는 유선 접속을 통해 네트워크에 커플링되는,
데이터 인터페이스. - 제 13 항에 있어서,
상기 데이터 스트림 관리 모듈, 상기 버퍼 관리 모듈, 및 상기 타이머 관리 모듈 중 하나 이상은, 컴퓨터-판독가능 매체 상에 저장되는 하나 이상의 미리저장된 명령들을 포함하며,
상기 하나 이상의 미리저장된 명령들은 상기 제어기에 의행 실행되도록 구성되는,
데이터 인터페이스. - 제 16 항에 있어서,
상기 하나 이상의 미리저장된 명령들은 상기 메모리에 저장되는,
데이터 인터페이스. - 제 13 항에 있어서,
상기 데이터 스트림은 실-시간 데이터를 포함하는,
데이터 인터페이스. - 제 13 항에 있어서,
상기 프로세서는, 수신된 하나 이상의 데이터 세그먼트들을 디코딩하기 위한 디코더를 포함하는,
데이터 인터페이스. - 제 13 항에 있어서,
상기 데이터 인터페이스는 상기 수신 디바이스의 일부로서 포함되는,
데이터 인터페이스.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/409,247 US8874634B2 (en) | 2012-03-01 | 2012-03-01 | Managing adaptive streaming of data via a communication connection |
US13/409,247 | 2012-03-01 | ||
PCT/US2013/025494 WO2013130244A1 (en) | 2012-03-01 | 2013-02-11 | Managing adaptive streaming of data via a communication connection |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20150117204A KR20150117204A (ko) | 2015-10-19 |
KR102085539B1 true KR102085539B1 (ko) | 2020-04-14 |
Family
ID=47844442
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020147027638A KR102085539B1 (ko) | 2012-03-01 | 2013-02-11 | 통신 접속을 통한 데이터의 적응형 스트리밍 관리 |
Country Status (5)
Country | Link |
---|---|
US (3) | US8874634B2 (ko) |
EP (1) | EP2820817B1 (ko) |
KR (1) | KR102085539B1 (ko) |
BR (1) | BR112014021406B1 (ko) |
WO (1) | WO2013130244A1 (ko) |
Families Citing this family (43)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150163273A1 (en) * | 2011-09-29 | 2015-06-11 | Avvasi Inc. | Media bit rate estimation based on segment playback duration and segment data length |
US8874634B2 (en) * | 2012-03-01 | 2014-10-28 | Motorola Mobility Llc | Managing adaptive streaming of data via a communication connection |
US8838826B2 (en) * | 2012-04-04 | 2014-09-16 | Google Inc. | Scalable robust live streaming system |
EP2912579B1 (en) | 2012-10-23 | 2020-08-19 | IP Reservoir, LLC | Method and apparatus for accelerated format translation of data in a delimited data format |
US9654527B1 (en) * | 2012-12-21 | 2017-05-16 | Juniper Networks, Inc. | Failure detection manager |
US9215267B2 (en) * | 2013-03-14 | 2015-12-15 | Disney Enterprises, Inc. | Adaptive streaming for content playback |
GB2551674B (en) * | 2013-07-12 | 2018-04-11 | Canon Kk | Adaptive data streaming method with push messages control |
CN105532013B (zh) | 2013-07-12 | 2018-12-28 | 佳能株式会社 | 利用推送消息控制的自适应数据流传输方法 |
WO2015164639A1 (en) | 2014-04-23 | 2015-10-29 | Ip Reservoir, Llc | Method and apparatus for accelerated data translation |
US10079910B1 (en) * | 2014-12-09 | 2018-09-18 | Cloud & Stream Gears Llc | Iterative covariance calculation for streamed data using components |
US11109101B1 (en) * | 2015-05-13 | 2021-08-31 | T-Mobile Usa, Inc. | Apparatus, system, and method for ABR segment pull DVR |
JP6601068B2 (ja) | 2015-09-01 | 2019-11-06 | 富士通コネクテッドテクノロジーズ株式会社 | 通信方法、通信装置及び通信プログラム |
JP6601066B2 (ja) * | 2015-09-01 | 2019-11-06 | 富士通コネクテッドテクノロジーズ株式会社 | 通信方法、通信装置及び通信プログラム |
US10942943B2 (en) * | 2015-10-29 | 2021-03-09 | Ip Reservoir, Llc | Dynamic field data translation to support high performance stream data processing |
CN105933369B (zh) * | 2015-12-24 | 2019-05-10 | 中国银联股份有限公司 | 一种消息转发方法及设备 |
CN105611389A (zh) * | 2015-12-25 | 2016-05-25 | 广州视源电子科技股份有限公司 | 智能电视的显示方法和显示装置 |
CN106385620B (zh) * | 2016-10-25 | 2019-06-21 | 浙江红苹果电子有限公司 | 一种基于流媒体的数据平滑输出方法 |
CN108009111B (zh) * | 2016-11-01 | 2020-02-21 | 华为技术有限公司 | 数据流连接方法及装置 |
KR102500284B1 (ko) | 2016-11-30 | 2023-02-16 | 삼성전자주식회사 | 무선 연결을 이용한 오디오 스트리밍 방법 및 장치 |
EP3523745B1 (en) * | 2016-12-22 | 2021-08-25 | Samsung Electronics Co., Ltd. | Electronic device, method for controlling thereof and computer-readable recording medium |
CN106817619B (zh) * | 2016-12-26 | 2019-04-12 | 天翼智慧家庭科技有限公司 | 一种识别视频暂停状态,提高ott视频质量监测精度的方法 |
US10417235B2 (en) | 2017-02-03 | 2019-09-17 | International Business Machines Corporation | Window management in a stream computing environment |
US10676379B2 (en) | 2017-06-14 | 2020-06-09 | Loon Llc | Electrolysis systems and methods for life extension of an apparatus such as a balloon |
US10437259B2 (en) | 2017-07-28 | 2019-10-08 | Loon Llc | Systems and methods for controlling aerial vehicles |
US10437260B2 (en) | 2017-07-28 | 2019-10-08 | Loon Llc | Systems and methods for controlling aerial vehicles |
US10809718B2 (en) | 2017-07-28 | 2020-10-20 | Loon Llc | Systems and methods for controlling aerial vehicles |
US10573196B2 (en) | 2017-07-28 | 2020-02-25 | Loon Llc | Systems and methods for simulating wind noise models |
US10558219B2 (en) | 2017-09-21 | 2020-02-11 | Loon Llc | Systems and methods for controlling an aerial vehicle using lateral propulsion and vertical movement |
US10305564B1 (en) | 2017-11-13 | 2019-05-28 | Loon Llc | Beamforming calibration |
US10305608B1 (en) | 2017-11-13 | 2019-05-28 | Loon Llc | Beamforming calibration |
US10734721B2 (en) | 2017-11-13 | 2020-08-04 | Loon Llc | Beamforming calibration |
US10305609B1 (en) | 2017-11-13 | 2019-05-28 | Loon Llc | Beamforming calibration |
US10780969B2 (en) | 2017-12-21 | 2020-09-22 | Loon Llc | Propulsion system for a buoyant aerial vehicle |
US10464443B2 (en) | 2017-12-21 | 2019-11-05 | Loon Llc | Managing power of aerial vehicles |
US10875618B2 (en) | 2017-12-21 | 2020-12-29 | Loon Llc | Aerial vehicle control using ballast |
US10890885B2 (en) | 2017-12-21 | 2021-01-12 | Loon Llc | Managing power of aerial vehicles |
US10923930B2 (en) | 2017-12-21 | 2021-02-16 | Loon Llc | Forecasting power usage of aerial vehicles |
US10611242B2 (en) | 2017-12-21 | 2020-04-07 | Loon Llc | Managing power of aerial vehicles |
US10762727B2 (en) | 2017-12-29 | 2020-09-01 | Loon Llc | Estimation of aerial vehicle state |
US11220320B2 (en) | 2019-07-17 | 2022-01-11 | Aerostar International, Inc. | Lateral propulsion systems and architectures for high altitude balloons |
CN112083890A (zh) * | 2020-09-16 | 2020-12-15 | 上德(珠海)数据科技有限公司 | 一种自动调整缓存的数据处理方法、数据处理系统、数据可视化设备及计算机可读存储介质 |
CN112688922B (zh) * | 2020-12-11 | 2024-07-12 | 深圳前海微众银行股份有限公司 | 数据传输方法、系统、设备及介质 |
CN113923488B (zh) * | 2021-09-15 | 2024-04-16 | 青岛海信网络科技股份有限公司 | 一种公交车、视频流量控制方法及存储介质 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6105064A (en) | 1997-05-30 | 2000-08-15 | Novell, Inc. | System for placing packets on network for transmission from sending endnode to receiving endnode at times which are determined by window size and metering interval |
US7237036B2 (en) | 1997-10-14 | 2007-06-26 | Alacritech, Inc. | Fast-path apparatus for receiving data corresponding a TCP connection |
US6646987B1 (en) | 1998-10-05 | 2003-11-11 | Nortel Networks Limited | Method and system for transmission control protocol (TCP) packet loss recovery over a wireless link |
US7046631B1 (en) | 1999-01-22 | 2006-05-16 | Alcatel Canada Inc. | Method and apparatus for provisioning traffic dedicated cores in a connection oriented network |
US6757292B2 (en) * | 2001-07-11 | 2004-06-29 | Overture Networks, Inc. | Automatic adjustment of buffer depth for the correction of packet delay variation |
US20030112758A1 (en) | 2001-12-03 | 2003-06-19 | Pang Jon Laurent | Methods and systems for managing variable delays in packet transmission |
US7027982B2 (en) | 2001-12-14 | 2006-04-11 | Microsoft Corporation | Quality and rate control strategy for digital audio |
US20040047367A1 (en) * | 2002-09-05 | 2004-03-11 | Litchfield Communications, Inc. | Method and system for optimizing the size of a variable buffer |
KR100554015B1 (ko) * | 2002-12-23 | 2006-02-22 | 한국과학기술정보연구원 | 그리드 컴퓨팅에 적합한 데이터 전송 제어 시스템 및방법과 그 프로세스를 기록한 컴퓨터 판독가능한 기록매체 |
US8077775B2 (en) | 2006-05-12 | 2011-12-13 | Freescale Semiconductor, Inc. | System and method of adaptive rate control for a video encoder |
KR100787314B1 (ko) * | 2007-02-22 | 2007-12-21 | 광주과학기술원 | 미디어내 동기화를 위한 적응형 미디어 재생 방법 및 장치 |
WO2008154742A1 (en) * | 2007-06-19 | 2008-12-24 | Vantrix Corporation | A buffer-based rate control exploiting frame complexity, buffer level and position of intra frames in video coding |
US8874634B2 (en) * | 2012-03-01 | 2014-10-28 | Motorola Mobility Llc | Managing adaptive streaming of data via a communication connection |
-
2012
- 2012-03-01 US US13/409,247 patent/US8874634B2/en not_active Expired - Fee Related
-
2013
- 2013-02-11 BR BR112014021406-9A patent/BR112014021406B1/pt active IP Right Grant
- 2013-02-11 EP EP13708547.8A patent/EP2820817B1/en active Active
- 2013-02-11 WO PCT/US2013/025494 patent/WO2013130244A1/en active Application Filing
- 2013-02-11 KR KR1020147027638A patent/KR102085539B1/ko active IP Right Grant
-
2014
- 2014-10-24 US US14/523,841 patent/US9420023B2/en active Active
-
2016
- 2016-08-15 US US15/237,524 patent/US10057316B2/en active Active
Non-Patent Citations (1)
Title |
---|
Yang Xiaogang et al., "End-to-End Congestion Control for H.264/SVC", IEEE (2007.04.22.) |
Also Published As
Publication number | Publication date |
---|---|
EP2820817A1 (en) | 2015-01-07 |
BR112014021406B1 (pt) | 2022-09-27 |
US20130232228A1 (en) | 2013-09-05 |
US9420023B2 (en) | 2016-08-16 |
US8874634B2 (en) | 2014-10-28 |
BR112014021406A2 (pt) | 2020-11-10 |
KR20150117204A (ko) | 2015-10-19 |
US10057316B2 (en) | 2018-08-21 |
EP2820817B1 (en) | 2016-07-27 |
US20160359938A1 (en) | 2016-12-08 |
WO2013130244A1 (en) | 2013-09-06 |
US20150046571A1 (en) | 2015-02-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102085539B1 (ko) | 통신 접속을 통한 데이터의 적응형 스트리밍 관리 | |
US11924263B2 (en) | Methods and devices for efficient adaptive bitrate streaming | |
US8218439B2 (en) | Method and apparatus for adaptive buffering | |
US8910219B2 (en) | System and method of delivering video content | |
JP5302415B2 (ja) | ネットワークにおける最適帯域幅利用 | |
US20040240382A1 (en) | Data reception apparatus and data distribution system | |
US20100128604A1 (en) | Video streaming | |
US20140282810A1 (en) | Media distribution network with media burst transmission capabilities | |
US20160337708A9 (en) | Media distribution network system with media burst transmission via an access network | |
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 | |
CN113242436A (zh) | 直播数据的处理方法、装置及电子设备 | |
WO2019120532A1 (en) | Method and apparatus for adaptive bit rate control in a communication network | |
CN112823527A (zh) | 在能够运行一个自适应流传输会话的设备处实现的方法以及对应的设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
N231 | Notification of change of applicant | ||
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |