KR102543019B1 - 높은 대역폭 네트워크들 상에서의 데이터의 버퍼링 - Google Patents

높은 대역폭 네트워크들 상에서의 데이터의 버퍼링 Download PDF

Info

Publication number
KR102543019B1
KR102543019B1 KR1020210148658A KR20210148658A KR102543019B1 KR 102543019 B1 KR102543019 B1 KR 102543019B1 KR 1020210148658 A KR1020210148658 A KR 1020210148658A KR 20210148658 A KR20210148658 A KR 20210148658A KR 102543019 B1 KR102543019 B1 KR 102543019B1
Authority
KR
South Korea
Prior art keywords
data
downloading
cache
determining
download rate
Prior art date
Application number
KR1020210148658A
Other languages
English (en)
Other versions
KR20220060487A (ko
Inventor
니키타 아이. 카초프
Original Assignee
디즈니엔터프라이지즈,인크.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 디즈니엔터프라이지즈,인크. filed Critical 디즈니엔터프라이지즈,인크.
Publication of KR20220060487A publication Critical patent/KR20220060487A/ko
Application granted granted Critical
Publication of KR102543019B1 publication Critical patent/KR102543019B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/433Content storage operation, e.g. storage operation in response to a pause request, caching operations
    • H04N21/4335Housekeeping operations, e.g. prioritizing content for deletion because of storage space restrictions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/10Architectures or entities
    • H04L65/1059End-user terminal functionalities specially adapted for real-time communication
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/61Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/1066Session management
    • H04L65/1083In-session procedures
    • H04L65/1095Inter-network session transfer or sharing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/61Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
    • H04L65/612Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for unicast
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/75Media network packet handling
    • H04L65/752Media network packet handling adapting media to network capabilities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/80Responding to QoS
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • H04L67/5681Pre-fetching or pre-delivering data based on network characteristics
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L7/00Arrangements for synchronising receiver with transmitter
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/231Content storage operation, e.g. caching movies for short term storage, replicating data over plural servers, prioritizing data for deletion
    • H04N21/23106Content storage operation, e.g. caching movies for short term storage, replicating data over plural servers, prioritizing data for deletion involving caching operations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/433Content storage operation, e.g. storage operation in response to a pause request, caching operations
    • H04N21/4331Caching operations, e.g. of an advertisement for later insertion during playback
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • H04N21/44004Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving video buffer management, e.g. video decoder buffer or video display buffer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/61Network physical structure; Signal processing
    • H04N21/6106Network physical structure; Signal processing specially adapted to the downstream path of the transmission network
    • H04N21/6125Network physical structure; Signal processing specially adapted to the downstream path of the transmission network involving transmission via Internet
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/85Assembly of content; Generation of multimedia applications
    • H04N21/854Content authoring
    • H04N21/8549Creating video summaries, e.g. movie trailer

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Business, Economics & Management (AREA)
  • General Business, Economics & Management (AREA)
  • Databases & Information Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Transfer Between Computers (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

높은 대역폭의 네트워크들 상에서 데이터를 버퍼링하기 위한 기법들이 제공된다. 데이터의 제1 부분은 제1 다운로드 속도로 버퍼로 다운로딩된다. 데이터의 제1 부분은 버퍼로부터 출력된다. 데이터가 제1 다운로드 속도보다 더 큰 제2 다운로드 속도로 다운로딩되고 있는 것으로 결정할 시에, 데이터의 하나 이상의 추후의 부분들을 위한 캐시를 이용하는 것으로 결정되고, 데이터의 제2 부분은 캐시로 다운로딩된다. 버퍼가 비어 있는 것으로 결정할 시에, 데이터의 제2 부분은 캐시로부터 출력된다.

Description

높은 대역폭 네트워크들 상에서의 데이터의 버퍼링{BUFFERING DATA ON HIGH BANDWIDTH NETWORKS}
일부 시스템들은 개별 세그먼트들로 미디어를 다운로딩한다. 각각의 세그먼트는 그 다음으로, 순차적으로 출력된다. 그러나, 다운로드 속도가 실질적으로 변경될 경우에, 스트리밍 디바이스는 다음 세그먼트(들)에 대한 비-최적 비트레이트(bitrate)를 선택할 수 있다. 간헐적인 그리고 산발적인 접속들이 손실될 때, 다음 세그먼트(들)는 제 시간에 다운로드하는 것에 실패할 수 있어서, 미디어 출력에서의 버퍼링 및 드롭아웃(dropout)들을 야기시킬 수 있다.
위에서 인용된 양태들이 달성되고 상세하게 이해될 수 있도록, 위에서 간략하게 요약된 본 명세서에서 설명된 실시예들의 더욱 특정한 설명은 첨부된 도면들을 참조하여 행해질 수 있다.
그러나, 첨부된 도면들은 전형적인 실시예들을 예시하고, 그러므로, 제한으로 고려되지 않아야 하고; 다른 동일하게 효과적인 실시예들이 고려된다는 것이 주목되어야 한다.
도 1은 본 명세서에서 개시된 일부 실시예들에 따른, 동적 대역폭을 갖는 네트워크 접속들 상에서 데이터를 적응적으로 버퍼링하도록 구성된 스트리밍 디바이스를 포함하는 시스템을 도시한다.
도 2는 본 명세서에서 개시된 일부 실시예들에 따른, 동적 대역폭을 갖는 네트워크 접속들 상에서 데이터를 동적으로 버퍼링하기 위하여 버퍼들 및 캐시들을 사용하도록 구성된 스트리밍 디바이스를 포함하는 시스템을 도시한다.
도 3은 본 명세서에서 개시된 일부 실시예들에 따른, 시프팅 네트워크 접속성(shifting network connectivity)에 대해 동적으로 응답하는 방법을 예시하는 흐름도이다.
도 4는 본 명세서에서 개시된 일부 실시예들에 따른, 동적 네트워크 조건들 상에서 미디어 세그먼트들을 스트리밍하기 위한 방법을 예시하는 흐름도이다.
도 5는 본 명세서에서 개시된 일부 실시예들에 따른, 동적 네트워크 조건들 상에서 데이터를 다운로딩하기 위한 방법을 예시하는 흐름도이다.
도 6a 및 도 6b는 본 명세서에서 개시된 일부 실시예들에 따른, 동적 네트워크 조건들 상에서 데이터를 스트리밍하도록 구성된 컴퓨팅 디바이스의 블록도들이다.
다양한 시스템들에서, 데이터는 즉각적인 또는 추후의 출력을 위하여 메모리로 다운로딩되고 버퍼링된다. 예를 들어, 비디오 데이터를 스트리밍하기 위하여, 비디오는 메모리 내의 버퍼로 다운로딩될 수 있고, 버퍼로부터 디스플레이를 위하여 출력될 수 있다. 버퍼를 이용하는 것은 출력에서의 스터터(stutter)들 또는 일시정지(pause)들을 방지하기 위하여, 시스템이 일부 데이터가 출력되기 전에 일부 데이터를 사전-다운로딩(pre-download)하는 것을 허용한다. 예를 들어, 일부 시스템들은 개별 세그먼트들로 미디어를 다운로딩하고, 버퍼에서 각각의 세그먼트를 저장한다. 각각의 세그먼트는 그 다음으로, 버퍼로부터 순차적으로 출력된다.
일부 시스템들은 스트리밍 프로세스를 개선시키기 위하여 적응적 비트레이트 해결책들을 사용한다. 이러한 시스템들에서, 스트리밍 플랫폼은 다양한 비트레이트들(예컨대, 초 당 10 메가비트(megabit)들, 초 당 15 메가비트들 등)로 스트림을 제공한다. 스트리밍 디바이스는 그 다음으로, 그 자신의 네트워크 조건들에 기초하여 어느 비트레이트에서 다운로딩할 것인지를 선택할 수 있다. 예를 들어, 스트리밍 디바이스는 비디오의 다음 부분을 다운로딩할 때에 요청하기 위한 적절한 비트레이트를 결정하기 위하여, 비디오 파일이 다운로딩되고 있는 속도를 측정할 수 있다.
그러나, 다운로드 속도가 실질적으로 변경될 경우에, 스트리밍 디바이스는 다음 세그먼트(들)에 대한 비-최적 비트레이트를 선택할 수 있다. 예를 들어, 디바이스는 미디어를 다운로딩하기 위한 제1 네트워크 접속을 정상적으로 사용할 수 있지만, 더 높은 속도들로 간헐적인 접속성을 수신할 수 있다. 이 더 높은 속도들이 다음 비트레이트를 선택하기 위하여 이용될 경우에, 디바이스는 원래의 접속 속도로 지속될 수 없는 더 높은 비트레이트를 선택할 것이다.
본 개시내용의 실시예들은 데이터를 다운로딩하거나 업로딩하기 위하여 동적 네트워크들을 이용하는 디바이스들의 동작들을 개선시키기 위하여 동적 및 시프팅 접속성에 대해 응답하기 위한 시스템들, 디바이스들, 및 방법들을 제공한다. 본 개시내용에서, 미디어 스트리밍은 일부 예들에서 이용된다. 그러나, 본 개시내용의 실시예들은 데이터를 다운로딩하거나 업로딩하는 것을 수반하는 광범위한 이용들에 용이하게 적용가능하다는 것이 이해되어야 한다.
일부 실시예들에서, 컴퓨팅 디바이스들은 일부 초기 속도로 네트워크 접속을 이용하여 데이터를 다운로딩(또는 업로딩)할 수 있다. 증가된 대역폭이 (동일한 접속 상에서 또는 제2 네트워크 접속 상에서) 이용가능할 때, 디바이스들은 속도가 시간프레임(timeframe)에서 이와 다를 때를 넘어서서 추가적인 데이터를 다운로딩(또는 업로딩)하기 위하여 이러한 속도의 버스트를 사용할 수 있다. 하나의 실시예에서, 디바이스가 다운로딩되거나 업로딩되는 데이터의 양의 일부 초기 비트레이트, 품질, 또는 다른 표시자를 사용하고 있었을 경우에, 디바이스는 더 높은 속도의 접속이 더 오래 이용가능할 때에 프로세스가 비중단되는 것을 보장하기 위하여, 동일한 비트레이트를 이용하는 것을 계속한다.
예를 들어, 이동 디바이스들은 스트리밍 환경에서 미디어의 세그먼트들을 다운로딩하기 위하여 4G 접속들을 사용할 수 있다. 디바이스는 4G 접속의 속도(또한, 대역폭으로서 지칭됨)에 기초하여 어느 비트레이트에서 스트리밍할 것인지를 선택할 수 있다. 점점 더, (밀리미터(millimeter) 5G와 같은) 더 높은 속도의 네트워크들이 전개되었다. 이 네트워크들은 종종 단지 산발적인 그리고 간헐적인 접속성을 가지나 매우 높은 대역폭을 제공한다. 예를 들어, 밀리미터 5G 접속들은 종종, 타워(tower)까지의 가시선을 요구하고, 이것은 이 높은 대역폭 접속이 불안정하고 일시적이도록 한다. 따라서, 이 더 높은 속도의 접속성은 추후의 세그먼트들에 대하여 어느 비트레이트를 요청할 것인지를 결정할 시에 사용되지 않아야 된다. 또한, 메모리 버퍼가 종종 상당히 제한될 때, 버퍼가 매우 신속하게 채워질 것이므로 고속 접속은 낭비될 수 있다.
본 개시내용의 실시예들에서, 스트리밍 디바이스들은 고속 접속을 이용하여 추가적인 데이터가 다운로딩되는 것을 허용하기 위하여, 별도의 캐시를 할당함으로써, 또는 버퍼의 크기를 일시적으로 증가시킴으로써 이 간헐적인 접속성을 활용할 수 있다. 이것은 디바이스가 간헐적인 고속 접속성을 활용하는 것을 허용하고, 이것은 스트림에 대한 중단들을 감소시키고 전체적인 스트리밍 시스템의 동작을 개선시킨다.
도 1은 본 명세서에서 개시된 일부 실시예들에 따른, 동적 대역폭을 갖는 네트워크 접속들 상에서 데이터를 적응적으로 버퍼링하도록 구성된 스트리밍 디바이스(105)를 포함하는 시스템(100)을 도시한다. 예시된 실시예에서, 스트리밍 디바이스(105)는 하나 이상의 네트워크들(110A 내지 110B)을 통해 컨텐츠 서버(115)와 통신가능하게 결합된다. 실시예에서, 네트워크들(110)은 무선 접속성을 제공한다. 적어도 하나의 실시예에서, 스트리밍 디바이스(105)는 데이터를 다운로딩하거나 스트리밍하기 위하여 무선 네트워크들을 사용할 수 있는 스마트폰, 태블릿, 랩톱, 또는 다른 디바이스와 같은 이동 디바이스이다.
일부 실시예들에서, 네트워크들(110A 내지 110B)은 상이한 대역폭 또는 다른 특성들과 연관될 수 있다. 예를 들어, 하나의 실시예에서, 네트워크(110A)는 상대적으로 제한된 대역폭(및 그러므로 상대적으로 제한된 다운로드 속도들)을 갖는 4G 또는 3G 셀룰러 네트워크일 수 있는 반면, 네트워크(110B)는 WiFi 접속 또는 5G 네트워크와 같은 더 높은 대역폭의 네트워크이다.
2 개의 네트워크들(110A 내지 110B)은 개념적인 명확성을 위하여 도시되지만, 본 개시내용의 실시예들은 단일 네트워크를 포함하는 임의의 수의 개별 네트워크들과 함께 사용될 수 있다. 예를 들어, 본 개시내용의 실시예들은 스트리밍 디바이스(105)가 3 개 이상의 네트워크들 사이에서 시프팅할 때에 동적 네트워크 조건들에 대해 응답하는 것을 허용하기 위하여 이용될 수 있다. 유사하게, 본 명세서에서 개시된 실시예들은 스트리밍 디바이스(105)가 단일 네트워크 접속에 대한 시프팅 조건들에 대응하는 것을 허용하기 위하여 이용될 수 있다.
실시예에서, 더 높은 대역폭의 네트워크(110B)는 그것이 스트리밍 디바이스(105)에 의해 신뢰성 있게 이용가능하지 않다는 점에서 상대적으로 산발적이거나 간헐적일 수 있다. 그러나, 이용가능할 때, 네트워크(110B)는 더 높은 대역폭으로 인해, 짧은 시간 내에 상당한 양들의 데이터를 다운로딩하기 위하여 이용될 수 있다. 일부 실시예들에서, 스트리밍 디바이스(105)는 네트워크(110A)를 통해 컨텐츠 서버(115)로부터 데이터(예컨대, 비디오 데이터)를 정상적으로 다운로딩할 수 있다. 일부 실시예들에서, 스트리밍 디바이스(105)는 네트워크(110A)를 통한 이용가능한 대역폭 또는 다운로드 속도에 적어도 부분적으로 기초하여, 컨텐츠 서버(115)로부터 어느 비트레이트 변형을 요청할 것인지를 선택하기 위하여 적응적 비트레이트 로직을 이용하여 그렇게 행한다.
일부 실시예들에서, 스트리밍 디바이스(105)는 이 다운로딩된 데이터를 메모리 내의 버퍼에서 일시적으로 버퍼링한다. 미디어는 그 다음으로, 버퍼로부터 출력된다. 많은 실시예들에서, 버퍼는 상대적으로 제한된 크기를 가진다. 따라서, 스트리밍 디바이스(105)는 전형적으로, 데이터의 부분들이 출력/디스플레이를 위하여 필요하기 바로 전에, 네트워크(110A)를 통해 데이터의 부분들(예컨대, 미디어 세그먼트들)을 다운로딩한다.
실시예에서, 스트리밍 디바이스(105)가 더 높은 대역폭의 접속성이 (예컨대, 네트워크(110B)를 통해) 이용가능한 것으로 결정할 경우에, 스트리밍 디바이스(105)는 이 더 높은 속도들을 활용하기 위하여 동적으로 응답할 수 있다. 하나의 실시예에서, 스트리밍 디바이스(105)는 디바이스의 현재의 접속이 미리 정의된 고속 접속인 것으로서 분류되거나 라벨로 표시되는 것으로 결정하는 것에 기초하여, 이 더 높은 속도가 이용가능한 것으로 결정한다. 예를 들어, 네트워크(110A)를 통해 접속될 때, 스트리밍 디바이스(105) 접속성은 "4G"로서 분류될 수 있는 반면, 네트워크(110B)는 "5G"로서 분류된다.
일부 실시예들에서, 스트리밍 디바이스(105)는 데이터가 컨텐츠 서버(115) 또는 다른 소스들로부터 얼마나 신속하게 현재 다운로딩되고 있는지를 평가함으로써 더 빠른 접속을 식별한다. 예를 들어, 하나의 이러한 실시예에서, 스트리밍 디바이스(105)는 (예컨대, 현재의 세그먼트 또는 데이터의 부분에 대한) 그 현재의 다운로드 속도 뿐만 아니라, 슬라이딩 윈도우 상에서(예컨대, 최후의 60 초 상에서, 또는 최후의 10 개의 세그먼트들 또는 데이터의 부분들 상에서)의 이력적 다운로드 속도들을 모니터링한다. 현재의 다운로드 속도가 그 이력적 속도를 일부 미리 정의된 기준들만큼 초과할 경우에, 스트리밍 디바이스(105)는 자신이 높은 대역폭의 접속 상에 있는 것으로 결정할 수 있다. 실시예들에서, 이 기준들은 임계치 승수(예컨대, 적어도 2 배 빠름), 최소 속도(예컨대, 적어도 초 당 100 메가비트들), 임계치 증가(예컨대, 이력적 속도보다 적어도 초 당 50 메가비트들 더 빠름) 등을 포함할 수 있다.
적어도 하나의 실시예에서, 스트리밍 디바이스(105)는 이전의 접속들에 기초하여 높은 대역폭의 접속을 식별할 수 있다. 예를 들어, 하나의 이러한 실시예에서, 스트리밍 디바이스(105)는 높은 대역폭의 네트워크(110B)가 이용가능할 때마다 그 현재의 위치를 식별하고 기록하기 위하여 위치 서비스들을 사용할 수 있다. 추후에, 스트리밍 디바이스(105)의 현재의 위치 또는 이동에 기초하여, 스트리밍 디바이스(105)는 네트워크(110B)가 미래의 일부 시점에서(예컨대, 10 초 또는 일부 다른 미리 정의된 시간 내에) 이용가능할 가능성이 있을 것으로 결정할 수 있다. 응답으로서, 스트리밍 디바이스(105)는 이하에서 논의된 바와 같이, 더 높은 속도의 접속을 준비하는 것을 시작할 수 있다.
실시예에서, 스트리밍 디바이스(105)가 자신이 더 높은 대역폭의 접속을 이용하고 있는 것으로 결정할 때, 스트리밍 디바이스(105)는 컨텐츠 서버(115)로부터 상한 비제한된(uncapped) 캐시 또는 버퍼로 데이터를 다운로딩하는 것을 시작한다. 일부 실시예들에서, 이 캐시는 스트리밍 디바이스(105)의 "보조 메모리" 또는 "스토리지(storage)"(예컨대, 하드 드라이브(hard drive)(HD), 솔리드 스테이트 드라이브(solid state drive)(SSD), ROM, 플래시 메모리, 고정식 또는 분리가능형 저장 매체들 등)로서 보편적으로 지칭된 2차 메모리(secondary memory) 내에 위치되는 반면, 원래의 버퍼는 스트리밍 디바이스(105)의 "주 메모리" 또는 약칭으로 간단하게 "메모리"로서 보편적으로 지칭된 1차 메모리(primary memory)(예컨대, 랜덤 액세스 메모리(random access memory)(RAM)) 내에 위치된다. 본 기술분야에서 전형적으로 이용되고 공지된 바와 같이, 용어 "메모리"는 본 명세서에서 설명되는 것을 "1차 메모리"로서 지칭할 수 있는 반면, 용어 "스토리지"는 본 명세서에서 설명되는 것을 "2차 메모리"로서 지칭할 수 있다. 일반적으로, 1차 메모리는 시스템(예컨대, RAM)의 프로세싱 유닛(들)과 밀접하게 결합되어, 더 빠른 액세스 시간들을 허용한다. 그러나, 이 직접 결합은 종종, 1차 메모리가 크기에 있어서 상대적으로 제한되는 것을 요구한다. 대조적으로, 2차 메모리는 전형적으로, 이러한 직접 액세스를 가지지 않아서, 1차 메모리와 비교하여 더 느린 액세스 시간들로 귀착된다. 그러나, 2차 메모리는 일반적으로, 1차 메모리보다 상당히 더 클 수 있다. 또 다른 실시예에서, 충분한 공간이 1차 메모리에서(예컨대, 높은 메모리 시스템에서) 이용가능할 경우에, 스트리밍 디바이스(105)는 메모리 버퍼의 크기를 확대할 수 있거나, 1차 메모리에서 제2 버퍼 또는 캐시를 확립할 수 있다.
일부 실시예들에서, 스트리밍 디바이스(105)는 데이터를 다운로딩하기 위하여 이전에 이용되고 있었던 것과 동일한 비트레이트에서 데이터를 이 캐시로 다운로딩한다. 예를 들어, 스트리밍 디바이스(105)가 컨텐츠 서버(115)로부터의 초 당 10 메가비트 비트레이트 스트림을 원래 이용하고 있었을 경우에, 네트워크(110B)가 훨씬 더 높은 비트레이트들을 지원할 수 있더라도, 스트리밍 디바이스(105)는 10 메가비트 스트림을 요청하는 것을 계속할 것이다.
이 데이터를 상한 비제한된 캐시로 다운로딩함으로써, 스트리밍 디바이스(105)는 높은 속도를 활용할 수 있고, 속도가 이와 다를 때를 넘어서서 추가적인 데이터를 다운로딩할 수 있다. 예를 들어, 제한된 양의 데이터(예컨대, 비디오의 다음 60 초, 또는 다음 5 개의 세그먼트들)를 버퍼링하는 것이 아니라, 스트리밍 디바이스(105)는 더 빠른 네트워크(110B)를 이용하여 자신이 할 수 있는 많은 데이터를 캐시로 다운로딩하는 것을 계속할 수 있다.
실시예에서, 원래의 메모리 버퍼가 비어 있을 때(예컨대, 이전에 다운로딩된 세그먼트들의 전부가 출력되었음), 스트리밍 디바이스(105)는 캐시로부터 데이터를 출력하는 것을 시작할 것이다. 이것은 데이터를 메모리로 전송하는 것, 및 데이터를 메모리로부터 출력하거나 데이터를 스토리지로부터 직접적으로 출력하는 것을 포함할 수 있다.
일부 실시예들에서, 스트리밍 디바이스(105)는 일부 미리 정의된 기준들이 만족될 때까지, 데이터를 (원래의 버퍼가 아니라) 캐시로 다운로딩하는 것을 계속할 수 있다. 이것은 스트리밍 디바이스(105)가 원래의 네트워크(110A)로 복귀한 것으로 결정하는 것을 포함할 수 있다. 예를 들어, 스트리밍 디바이스(105)는 그 현재의 접속의 라벨 또는 분류를 체크할 수 있다. 또 다른 실시예에서, 스트리밍 디바이스(105)는 (예컨대, 현재의 속도를 최후 N 개의 세그먼트들 또는 초 상에서의 이력적 속도들의 슬라이딩 윈도와 비교함으로써) 원래의 접속성으로의 드롭백(drop back)을 검출하기 위하여, 위에서 논의된 바와 같이, 다운로드 속도들을 모니터링하는 것을 계속할 수 있다.
하나의 실시예에서, 스트리밍 디바이스(105)는 그 다음으로, 캐시가 비워질 때까지(예컨대, 다운로딩된 데이터의 전부가 출력되었을 때까지) 캐시로부터 데이터를 출력하는 것을 계속할 수 있다. 실시예에서, 스트리밍 디바이스(105)는 캐시가 비어 있는 것에 근접할 때(예컨대, 캐시로부터 출력되도록 남겨진 데이터의 양이 미리 정의된 임계치 미만일 때), 원래의 스트리밍 패러다임(예컨대, 일부 양의 데이터를 버퍼로 다운로딩하는 것)으로 복귀할 수 있다.
일부 실시예들에서, 스트리밍 디바이스(105)는 데이터의 미리 정의된 풀(pool)로부터 다운로딩하거나 스트리밍한다. 예를 들어, 데이터의 세그먼트들 또는 부분들은 주어진 에피소드(episode), 영화, 팟캐스트(podcast), 또는 다른 미디어에 모두 대응할 수 있다. 실시예에서, 스트리밍 디바이스(105)는 네트워크(110B)가 손실되기 전에(예컨대, 전체 에피소드가 다운로딩되었을 경우에) 모두 이용가능한 데이터를 캐시로 다운로딩할 경우에, 스트리밍 디바이스(105)는 추가적인 데이터를 다운로딩하는 것을 정지시킬 수 있고, 캐시로부터 데이터를 간단히 출력할 수 있다.
일부 실시예들에서, 스트리밍 디바이스(105)는 모든 네트워크 접속성이 손실되더라도, 스트리밍 디바이스(105)가 미디어를 추후에 출력하는 것을 허용하기 위하여 이 다운로딩된 캐시를 유지할 수 있다. 또 다른 실시예에서, 스트리밍 디바이스(105)는 스트리밍 세션이 활성 상태인 동안에만, 캐시에 대한 액세스를 허용할 수 있다. 이러한 실시예에서, 사용자가 스트림을 탈출할 경우에, 스트리밍 디바이스(105)는 캐시된 데이터를 삭제할 수 있거나, 또는 그렇지 않을 경우에 캐시된 데이터를 이용불가능한 것으로서 표기할 수 있고, 스트리밍 디바이스(105)가 미디어를 리스트리밍(re-stream)하는 것을 요구할 수 있다.
일부 실시예들에서, 스트리밍 디바이스(105)는 제1 스트림을 완료할 시에, 다른 스트림들로부터 추가적인 데이터를 다운로딩하도록 구성된다. 예를 들어, 스트리밍 디바이스(105)가 쇼(show)로부터 주어진 에피소드를 스트리밍하고 있을 경우에, 스트리밍 디바이스(105)는 주어진 에피소드가 다운로드를 완료하였으면, 다음 에피소드를 다운로딩하는 것을 시작할 수 있다. 이것은 스트리밍 디바이스(105)가 추가적인 데이터를 사전-페치(pre-fetch)하는 것을 허용할 수 있다. 실시예에서, 스트리밍 디바이스(105)는 어느 데이터 스트림을 다운로딩할 것인지를 결정하기 위하여 임의의 적당한 로직을 이용할 수 있다. 예를 들어, 하나의 실시예에서, 스트리밍 디바이스(105) 또는 컨텐츠 서버(115)는 미디어의 미리 정의된 시퀀스 또는 리스트(예컨대, 에피소드 리스트)를 사용하고, 다음의 것을 요청/제공한다. 또 다른 실시예에서, 스트리밍 디바이스(105) 또는 컨텐츠 서버(115)는 다운로드를 위한 다음의 데이터를 선택하기 위하여, 미디어를 사용자들에 제안하기 위하여 이용된 다른 맞춤화 로직을 이용한다.
적어도 하나의 실시예에서, 스트리밍 디바이스(105)는 사전-다운로딩된 미디어가 실제적으로 소비되었는지 여부를 추적할 수 있다. 일부 실시예들에서, 스트리밍 디바이스(105)는 어느 데이터 또는 세그먼트들이 캐시로부터 실제로 출력되었는지를 모니터링함으로써 그렇게 행한다. 스트리밍 디바이스(105)는 이 정보를 컨텐츠 서버(115) 또는 다른 시스템들로 송신할 수 있다. 이것은 다운로딩된 데이터에 전적으로 기초하는 것과 반대로, 실제적으로 출력된 미디어에 기초하여, 컨텐츠 서버(115)(또는 다른 시스템들)가 사용자가 주어진 스트림에서 어디에서 중단하였는지를 기억하는 것을 허용한다. 유사한 로직은 스트리밍 디바이스(105)가 추후의 에피소드들 또는 미디어를 사전-페치하는 실시예들에 적용될 수 있다.
일부 실시예들에서, 스트리밍 디바이스(105)는 스트림으로부터의 미디어를 캐시로 다운로딩하는 것에 추가적으로 또는 그 대신에, 다른 정의된 미디어를 사전-페치할 수 있다. 예를 들어, 스트리밍 디바이스(105)는 요청된 미디어의 세그먼트들을 사전-페치하는 것에 추가적으로 또는 그 대신에, 광고들 또는 다른 미리 정의된 미디어를 캐시로 다운로딩하기 위하여 높은 대역폭의 네트워크(110B)를 이용할 수 있다. 이것은 스트리밍 디바이스(105)가 이 데이터를 심리스 방식으로(seamlessly) 출력하는 것을 허용할 수 있다. 예를 들어, 라이브-스트리밍 환경에서는, 캐시로 사전-다운로딩될 수 있는 미디어가 없을 수 있다. 그러나, 스트리밍 디바이스(105)는 광고들 또는 다른 미디어를 캐시로 사전-다운로딩하기 위하여 높은 대역폭의 접속을 이용할 수 있다. 이 데이터는 그 다음으로, 적절하게 더 이후에 출력될 수 있다. 실시예에서, 스트리밍 디바이스(105)는 어느 광고들 또는 다른 미디어가 실제적으로 출력/소비되었는지를 모니터링할 수 있고, 이 정보를 컨텐츠 서버(115) 또는 다른 시스템들로 송신할 수 있다.
적어도 하나의 실시예에서, 스트리밍 디바이스(105)는 그렇지 않을 경우에 다운로딩되지 않을 다른 데이터 또는 변형들을 다운로딩하기 위하여 높은 대역폭의 네트워크(110B)를 선택적으로 이용할 수 있다. 예를 들어, 스트리밍 디바이스는(105)는 원래의 접속 상에서 제1 비트레이트에서 데이터를 스트리밍하고 있지만, 스트리밍 디바이스(105)는 네트워크(110B)가 이용가능할 때, 더 높은 비트레이트에서 하나 이상의 세그먼트들을 캐시로 스트리밍할 수 있다. 또 다른 예로서, 스트리밍 디바이스(105)가 오디오-단독 미디어를 스트리밍하고 있을 경우에, 스트리밍 디바이스(105)는 높은 대역폭의 접속이 이용가능할 때, 일부 연관된 비디오를 캐시로 다운로딩할 수 있다.
일부 실시예들에서, 스트리밍 디바이스(105)가 데이터를 캐시로 다운로딩할 때, 캐시는 필요한 바와 같이 늘리거나 확대하도록 허용된다. 즉, 캐시는 상한 비제한된다. 예를 들어, 일부 초기 크기는 캐시가 생성될 때에 정의될 수 있지만, 일부 미리 정의된 최대치에 도달하였을 때까지, 또는 스토리지가 공간이 부족할 때까지, 스트리밍 디바이스(105)는 데이터가 다운로딩됨에 따라 캐시가 늘어나는 것을 허용할 수 있다. 산발적인 높은 대역폭의 접속성을 위한 상한 비제한된 버퍼들을 사용함으로써, 스트리밍 디바이스(105)는 스트리밍 환경을 상당히 개선시킬 수 있다.
도 2는 본 명세서에서 개시된 일부 실시예들에 따른, 동적 대역폭을 갖는 네트워크 접속들 상에서 데이터를 동적으로 버퍼링하기 위하여 버퍼들 및 캐시들을 사용하도록 구성된 스트리밍 디바이스(105)를 포함하는 시스템(200)을 도시한다. 예시된 실시예에서, 스트리밍 디바이스(105)는 컨텐츠 서버(115)로부터 미디어 세그먼트들(215)을 다운로딩한다. 예시된 바와 같이, 이 세그먼트들(215)은 미리 정의된 미디어 스트림에서의 데이터의 순차적인 부분들이고, 시퀀스로 다운로딩되고 출력된다.
예시된 실시예에서, 스트리밍 디바이스(105)는 버퍼(205) 및 캐시(210)를 포함한다. 적어도 하나의 실시예에서, 버퍼(205)는 메모리 내에 위치되는 반면, 캐시(210)는 스토리지 내에 위치된다. 일부 실시예들에서, 캐시(210)는 메모리 내의 추가적인 공간에 간단하게 대응할 수 있다. 또 다른 실시예에서, 캐시(210)는 개별 데이터 구조가 아니라, 버퍼(205) 상의 상한 제한(cap)을 확대함으로써 구현된다.
하나의 실시예에서, 버퍼(205)는 제한된(전형적으로 고정된) 크기를 가진다. 예시된 실시예에서, 버퍼(205)는 3 개의 세그먼트들(215)을 저장하도록 구성된다. 본 개시내용의 일부 실시예들에서, 캐시(210)는 더 크고, 추가적인 데이터를 저장하도록 구성된다. 예시된 실시예에서, 캐시(210)는 7 개의 세그먼트들(215)을 저장한다. 적어도 하나의 실시예에서, 캐시(210)는 데이터가 다운로딩됨에 따라 동적으로 확대될 수 있다. 예를 들어, 높은 대역폭의 접속이 캐시가 가득 찬 후에 이용가능한 상태일 경우에, 스트리밍 디바이스(105)는 캐시가 늘어나서 더 많은 세그먼트들(215)을 저장하는 것을 허용하기 위하여 캐시를 확대할 수 있다.
실시예들에서, 스트리밍 디바이스(105)는 정상적인 이용 동안에 세그먼트들(215)을 버퍼(205)로 다운로딩할 수 있다. 세그먼트들(215)이 버퍼(205)로부터 출력될 때, 세그먼트들(215)은 삭제되거나, 또는 그렇지 않을 경우에 "소비된" 것으로서 표기되어, 스트리밍 디바이스(105)가 추후의 세그먼트(215)를 버퍼(205)로 다운로딩하는 것을 허용한다. 예시된 실시예에서, 높은 대역폭의 접속이 이용가능한 것으로 결정할 시에, 스트리밍 디바이스(105)는 추후의 세그먼트들(215)을 캐시(210)로 다운로딩하는 것을 시작한다. 즉, 스트리밍 디바이스(105)는 버퍼(205)가 아니라, 캐시(210)로 (이들이 출력되었는지 여부에 관계 없이) 아직 페치되지 않은 세그먼트들(215)을 다운로딩할 수 있다.
일단 버퍼(205)에서의 최후의 세그먼트(215)가 출력되었으면(예시된 실시예에서의 세그먼트(215C)), 스트리밍 디바이스(105)는 캐시(210)로부터 추후의 세그먼트들(215)을 출력하는 것을 시작한다. 일부 실시예들에서, 이것은 세그먼트들(215)을 순차적으로 캐시(210)로부터 버퍼(205)로 또는 메모리의 또 다른 부분으로 전송하는 것, 및 그 다음으로, 메모리로부터 이들을 출력하는 것을 포함한다.
실시예에서, 높은 대역폭 접속이 이용가능한 상태이면, 스트리밍 디바이스(105)는 세그먼트들(215)을 캐시(210)로 다운로딩하는 것을 계속한다. 높은 대역폭의 접속이 더 이상 이용가능하지 않고, 스트리밍 디바이스(105)가 초기 접속을 이용하는 것으로 되돌아갈 경우에, 스트리밍 디바이스(105)는 캐시(210)에서의 데이터의 전부(또는 거의 전부)가 소비될 때까지 다운로딩을 일시정지시킬 수 있다.
예를 들어, 스트리밍 디바이스(105)가 캐시(210)에서의 일부 미리 정의된 양의 데이터가 남아 있는 것으로(예컨대, 출력되어야할 3 개 초과의 세그먼트들(215)) 결정할 때, 스트리밍 디바이스(105)는 추후의 세그먼트들(215)을 버퍼(205)로 다운로딩하기 위하여 원래의 스트리밍 프로세스를 개시할 수 있다. 높은 대역폭의 접속이 다시 한번 이용가능하게 될 경우에, 스트리밍 디바이스(105)는 데이터를 캐시(210)로 다운로딩하는 것을 다시 시작할 수 있다. 이것은 스트리밍 디바이스(105)가 상이한 대역폭/속도를 갖는 접속들 사이에서 심리스 방식으로 전환하는 것을 허용한다.
도 3은 본 명세서에서 개시된 일부 실시예들에 따른, 시프팅 네트워크 접속성에 대해 동적으로 응답하는 방법(300)을 예시하는 흐름도이다. 하나의 실시예에서, 방법(300)은 (스트리밍 디바이스(105)와 같은) 스트리밍 디바이스에 의해 수행된다. 방법(300)은 블록(305)에서 시작되고, 여기서, 스트리밍 디바이스는 일부 초기 속도로 데이터(예컨대, 미디어 세그먼트들)를 (예컨대, 메모리 내의) 버퍼로 다운로딩한다. 예를 들어, 스트리밍 디바이스는 제1 대역폭/속도와 연관된 제1 무선 접속을 통해 세그먼트들을 버퍼로 스트리밍하고 있을 수 있다. 일부 실시예들에서, 스트리밍 디바이스는 초기 비트레이트(예컨대, 10 메가비트 스트림)와 연관된 데이터를 추가로 다운로딩하고 있다.
방법(300)은 그 다음으로, 블록(310)으로 계속되고, 여기서, 스트리밍 디바이스는 버스트 접속이 이용가능한지 여부를 결정한다. 실시예들에서, 버스트 접속은 스트리밍 디바이스에 의해 이용가능하게 되는 상대적으로 더 높은 대역폭 또는 더 높은 속도의 접속이다. 예를 들어, 버스트 접속은 5G 접속에 대응할 수 있다. 또 다른 실시예에서, 버스트 접속은 동일한 원래의 접속 상에서의 더 빠른 다운로드 속도들에 대응할 수 있다.
하나의 실시예에서, 스트리밍 디바이스는 현재의 접속성에 의해 표시된 라벨 또는 분류에 기초하여, 버스트 접속성이 이용가능한지 여부를 결정한다. 또 다른 실시예에서, 스트리밍 디바이스는 (예컨대, 이전의 5 개의 세그먼트들 또는 60 초 상에서) 현재 또는 가장 최근의 다운로드 속도를 이력적 다운로드 속도와 비교한다. 현재의 속도가 원래의 속도와 비교하여(또는 추상적으로, 초기 속도와의 비교 없이) 일부 미리 정의된 임계치를 초과할 경우에, 스트리밍 디바이스는 버스트 접속성이 이용가능한 것으로 결정할 수 있다.
버스트 접속성이 이용가능하지 않을 경우에, 방법(300)은 블록(305)으로 복귀한다. 이러한 방식으로, 스트리밍 디바이스는 보통과 같이, 버퍼를 통해 데이터를 스트리밍하는 것을 계속한다. 스트리밍 디바이스가 버스트 접속성이 이용가능한 것으로 결정할 경우에, 방법(300)은 블록(315)으로 계속되고, 여기서, 스트리밍 디바이스는 버스트 접속성을 통해 데이터를 다운로딩하기 위하여 이용되어야할 캐시를 생성한다(또는 사전-존재하는 캐시를 이용하기 시작하는 것으로 결정함). 하나의 실시예에서, 이것은 데이터를 위한 메모리 또는 스토리지의 일부 부분을 할당하는 것을 포함한다. 실시예에서, 캐시는 버퍼보다 더 크다(또는 필요한 바와 같이 상한 비제한되거나 늘어나도록 허용될 것임).
방법(300)은 그 다음으로, 블록(320)으로 계속되고, 여기서, 스트리밍 디바이스는 버스트 접속성을 이용하여 데이터(예컨대, 미디어의 추후의 세그먼트들)를 캐시로 다운로딩하는 것을 시작한다. 실시예들에서, 버스트 접속성은 더 높은 속도들 또는 대역폭과 연관되므로, 스트리밍 디바이스는 세그먼트들이 출력을 위하여 필요하기 바로 전까지 대기하는 것이 아니라, 추가적인 세그먼트들을 즉시 다운로딩할 수 있다. 적어도 하나의 실시예에서, 스트리밍 디바이스는 동일한 스트림 또는 비트레이트와 연관된 데이터를 다운로딩하는 것을 계속한다. 즉, 스트리밍 디바이스가 주어진 스트림, 변형, 또는 비트레이트를 다운로딩하고 있었을 경우에, 스트리밍 디바이스는 캐시로 다운로딩할 때, 동일한 스트림, 변형, 또는 비트레이트를 이용하는 것을 계속할 수 있다. 이것은 스트리밍 디바이스가 버퍼와 캐시 사이에서(그리고 초기 접속과 버스트 접속 사이에서) 전후로 심리스 방식으로 전환하는 것을 허용한다.
블록(325)에서, 스트리밍 디바이스는 버스트 접속이 여전히 이용가능한지 여부를 결정한다. 그러한 경우에, 방법(300)은 블록(320)으로 복귀한다. 이러한 방식으로, 스트리밍 디바이스는 버스트 접속성이 더 이상 이용가능하지 않거나 일부 다른 기준들이 만족될 때까지, 더 높은 속도로 데이터를 다운로딩하는 것을 계속할 수 있다. 위에서 논의된 바와 같이, 이 기준들은 전체 미디어(예컨대, 완전한 쇼)가 다운로딩되었는지 여부를 결정하는 것 등을 포함할 수 있다. 적어도 하나의 실시예에서, 스트리밍 디바이스는 일부 미리 정의된 최대 양의 데이터를 캐시로 다운로딩하도록 권리를 부여받을 수 있다. 예를 들어, 허가 또는 일부 다른 기준들에 기초하여, 스트리밍 디바이스는 일부 미리 정의된 양의 데이터(예컨대, 최대 50 개의 세그먼트들 또는 10 분) 사전-다운로딩하도록 허용될 수 있다.
블록(325)으로 돌아가면, 스트리밍 디바이스가 버스트 접속성이 더 이상 이용가능하지 않은 것으로 결정할 경우에, 방법(300)은 초기 접속성을 이용하여 데이터를 버퍼로 스트리밍하기 위하여 블록(305)으로 복귀한다. 적어도 하나의 실시예에서는, 초기 레이트에서 스트리밍을 즉시 시작하는 것이 아니라, 스트리밍 디바이스는 위에서 논의된 바와 같이, 캐시가 비어 있을(또는 거의 비어 있음) 때까지 대기할 수 있다.
유리하게도, 방법(300)은 데이터를 캐시로 사전-다운로딩하기 위하여 일시적인 버스트 접속성을 완전히 활용하면서, 스트리밍 디바이스가 접속성의 상이한 모드들 사이에서 원활하게 전환하는 것을 허용한다.
도 4는 본 명세서에서 개시된 일부 실시예들에 따른, 동적 네트워크 조건들 상에서 미디어 세그먼트들을 스트리밍하기 위한 방법(400)을 예시하는 흐름도이다. 하나의 실시예에서, 방법(400)은 스트리밍 디바이스(예컨대, 스트리밍 디바이스(105))에 의해 수행된다. 실시예에서, 방법(400)은 (더 포괄적인 데이터와 비교하여) 구체적으로 미디어 세그먼트들을 스트리밍하는 것에 대응하고, 이러한 실시예를 위한 추가적인 세부사항을 제공한다. 방법(400)은 블록(405)에서 시작되고, 여기서, 스트리밍 디바이스는 스트리밍을 위한 세그먼트 비트레이트를 선택한다.
예를 들어, 적응적 비트레이트 로직을 이용하면, 스트리밍 디바이스는 스트리밍 디바이스에서의 이용가능한 대역폭 또는 현재의 다운로드 속도에 적어도 부분적으로 기초하여, 어느 비트레이트를 사용할 것인지를 결정할 수 있다. 본 명세서에서 이용된 바와 같이, 주어진 비트레이트는 대안적으로, "변형", "스트림" 등으로서 지칭될 수 있다. 실시예들에서, 비트레이트를 선택하는 것은 다운로딩되어야 할 미디어의 특정한 버전 또는 변형을 선택하는 것을 포함한다. 더 높은 비트레이트들은 종종 더 높은 품질의 비디오/오디오와 연관되지만, 이들은 또한, 신뢰성 있게 다운로딩하기 위하여 더 높은 대역폭을 요구한다. 따라서, 스트리밍 디바이스는 가능한 가장 높은 품질에서의 신뢰성 있는 스트리밍을 보장하는 비트레이트를 선택할 수 있다.
블록(410)에서, 스트리밍 디바이스는 선택된 비트레이트와 연관된 미디어의 세그먼트(들)를 버퍼로 다운로딩한다. 위에서 논의된 바와 같이, 이 버퍼링된 세그먼트들은 그 다음으로 순차적으로 출력된다. 블록(415)에서, 스트리밍 디바이스는 자신이 미디어를 다운로딩하는 것을 종료하였는지 여부를 결정한다. 예를 들어, 스트리밍 디바이스가 영화를 스트리밍하고 있을 경우에, 스트리밍 디바이스는 영화에서의 최후의 미디어 세그먼트가 다운로딩되었는지 여부를 결정할 수 있다. 그러한 경우에, 방법(400)은 블록(420)에서 종결된다. 즉, 예시된 실시예에서, 이러한 방식으로, 스트리밍 디바이스는 초기 접속을 여전히 이용하고 있을 경우에, 자신이 현재의 스트림을 종료하였을 때에 다운로딩을 중단할 것이다.
스트리밍 디바이스가 자신이 미디어를 스트리밍하는 것을 종료하지 않은 것으로 결정할 경우에, 방법(400)은 블록(425)으로 계속된다. 블록(425)에서, 스트리밍 디바이스는 위에서 논의된 바와 같이, 버스트 접속이 이용가능한지 여부를 결정한다. 버스트 접속성이 이용가능하지 않을 경우에, 방법(400)은 블록(410)으로 복귀한다. 이러한 방식으로, 스트리밍 디바이스는 초기 접속성을 통해 초기 선택된 비트레이트에서 데이터를 스트리밍하는 것을 계속할 수 있다. 스트리밍 디바이스가 버스트 접속성이 이용가능한 것으로 결정할 경우에, 방법(400)은 블록(430)으로 계속된다.
블록(430)에서, 스트리밍 디바이스는 미디어의 추후의 세그먼트(들)를 캐시로 다운로딩한다. 실시예에서, 이 캐시는 스토리지 또는 임의의 적당한 위치에서 위치될 수 있다. 캐시는 버퍼보다 더 클 수 있거나, 상한 비제한되거나 비한정된 크기와 연관될 수 있거나, 또는 둘 모두일 수 있다. 예시된 실시예에서, 이 세그먼트들은 (버스트 접속의 더 높은 대역폭으로 인해) 더 높은 다운로드 속도로 다운로딩될 수 있지만, 스트리밍 디바이스는 동일한 비트레이트/변형에 대한 세그먼트들을 다운로딩하는 것을 계속한다. 이것은 버스트 접속성이 (예컨대, 그 순시적이고 불안정한 본질로 인해) 갑자기 손실될 경우에, 추후의 세그먼트들이 중단 없이 원래의 접속을 이용하여 다운로딩될 수 있다는 것을 보장한다.
블록(435)에서, 스트리밍 디바이스는 자신이 선택된 미디어(예컨대, 스트리밍되고 있는 에피소드 또는 영화)를 다운로딩하는 것을 종료하였는지 여부를 결정한다. 그렇지 않을 경우에, 방법(400)은 블록(445)으로 계속된다. 스트리밍 디바이스가 현재의 미디어를 다운로딩하는 것을 종료하였을 경우에, 방법(400)은 블록(440)으로 진행하고, 여기서, 스트리밍 디바이스는 다음 미디어를 식별한다. 하나의 실시예에서, 스트리밍 디바이스는 컨텐츠 서버 또는 제공자에게 질의함으로써 그렇게 행한다. 컨텐츠 서버는 그 다음으로, (예컨대, 미디어의 정의된 시퀀스를 이용하여, 미디어를 사용자에게 제안하기 위한 예측 알고리즘들을 이용하여 등으로) 어느 미디어가 다음으로 스트리밍되어야 하는지를 결정할 수 있다. 이것은 스트리밍 디바이스가 사용자가 관측하기를 희망할 수 있는 다음 스트림에 대한 미디어를 사전-캐싱(pre-cache)하는 것을 허용한다. 방법(400)은 그 다음으로, 블록(445)으로 계속된다.
블록(445)에서, 스트리밍 디바이스는 버스트 접속성이 여전히 이용가능한지 여부를 결정한다. 그러한 경우에, 방법(4000)은 세그먼트들을 증가된 속도로 캐시로 다운로딩하는 것을 계속하기 위하여 블록(430)으로 복귀한다. 버스트 접속성이 더 이상 이용가능하지 않을 경우에, 방법(400)은 원래의 접속을 이용하여 스트리밍을 계속하기 위하여 블록(410)으로 복귀한다. 적어도 하나의 실시예에서, 위에서 논의된 바와 같이, 스트리밍 디바이스는 캐시가 소비되었을 때까지 다운로딩을 일시정지시킬 수 있다.
추가적으로, 일부 실시예들에서, 스트리밍 디바이스가 별도의 미디어 스트림(예컨대, 시리즈에서의 다음 에피소드)을 다운로딩하는 것을 시작하였을 경우에, 방법(400)은 스트리밍 디바이스가 다음 미디어를 실제적으로 소비하는 것을 시작하지 않았으면, 다음 미디어로부터 세그먼트들을 다운로딩하는 것을 계속하는 것이 아니라, 종결될 수 있다. 즉, 사용자가 제1 미디어를 종료하여 두 번째를 출력하는 것을 시작하지 않았으면, 스트리밍 디바이스는 초기 접속성 상에서 제2 미디어를 다운로딩하는 것을 계속하지 않을 것이다.
도 5는 본 명세서에서 개시된 일부 실시예들에 따른, 동적 네트워크 조건들 상에서 데이터를 다운로딩하기 위한 방법(500)을 예시하는 흐름도이다. 방법(500)은 블록(505)에서 시작되고, 여기서, 디바이스(예컨대, 스트리밍 디바이스(105))는 제1 다운로드 속도로 데이터의 제1 부분을 버퍼로 다운로딩한다. 블록(510)에서, 디바이스는 버퍼로부터, 데이터의 제1 부분을 출력한다. 방법(500)은 그 다음으로, 블록(515)으로 계속되고, 여기서, 디바이스가 제1 다운로드 속도보다 더 큰 제2 다운로드 속도로 데이터를 다운로딩하고 있는 것으로 결정할 시에, 디바이스는 데이터의 하나 이상의 추후의 부분들을 캐시를 이용하는 것으로 결정하고, 데이터의 제2 부분을 캐시로 다운로딩한다. 블록(520)에서, 버퍼가 비어 있는 것으로 결정할 시에, 디바이스는 캐시로부터 데이터의 제2 부분을 출력한다.
도 6a는 본 명세서에서 개시된 일부 실시예들에 따른, 동적 네트워크 조건들 상에서 데이터를 스트리밍하도록 구성된 컴퓨팅 디바이스(600A)의 블록도이다. 하나의 실시예에서, 컴퓨팅 디바이스(600A)는 스트리밍 디바이스(105)이다. 물리적 디바이스로서 도시되지만, 실시예들에서, 컴퓨팅 디바이스(600A)는 가상적 디바이스 또는 서비스로서, 또는 (예컨대, 클라우드 환경에서) 다수의 디바이스들에 걸쳐 구현될 수 있다. 예시된 바와 같이, 컴퓨팅 디바이스(600A)는 프로세서(605), 메모리(610), 스토리지(615), I/O 인터페이스(620), 및 네트워크 인터페이스(625)를 포함한다. 예시된 실시예에서, 프로세서(605)는 메모리(610)에서 저장된 프로그래밍 명령들을 취출(retrieve)하고 실행할 뿐만 아니라, 스토리지(615)에서 상주하는 애플리케이션 데이터를 저장하고 취출한다. 프로세서(605)는 일반적으로 단일 CPU, GPU, CPU 및 GPU, 다수의 CPU들, 다수의 GPU들, 다수의 프로세싱 코어들을 가지는 단일 CPU 또는 GPU 등을 나타낸다. 메모리(610)는 일반적으로, 랜덤 액세스 메모리를 나타내도록 포함된다. 스토리지(615)는, 디스크 드라이브들, 플래시-기반 스토리지 디바이스들 등을 포함하는(그러나 이것으로 제한되지는 않는) 메모리 또는 스토리지 컴포넌트들의 임의의 조합일 수 있고, 고정식 디스크 드라이브들, 분리가능형 메모리 카드들, 캐시들, 광학 스토리지, 네트워크 연결 스토리지(network attached storage)(NAS), 또는 스토리지 영역 네트워크들(storage area networks)(SAN)과 같은 고정식 스토리지 디바이스들, 분리가능형 스토리지 디바이스들, 또는 이 둘의 조합을 포함할 수 있다.
일부 실시예들에서, (마우스, 키보드, 모니터, 터치스크린 등과 같은) I/O 디바이스들(635)은 I/O 인터페이스(들)(620)를 통해 접속된다. 또한, 네트워크 인터페이스(625)를 통해, 컴퓨팅 디바이스(600A)는 하나 이상의 네트워크들을 통해, 컨텐츠 서버들과 같은, 하나 이상의 다른 디바이스들 및 컴포넌트들과 (직접적으로 또는 간접적으로) 통신가능하게 결합될 수 있다.
예시된 실시예에서, 스토리지(615)는 데이터 캐시(650A)를 포함한다. 실시예들에서, 데이터 캐시(650A)는 일반적으로, 위에서 논의된 바와 같이, 버스트 속도로 다운로딩되는 데이터의 부분들을 저장하기 위하여 이용된다. 일부 실시예들에서, 데이터 캐시(650A)는 자신이 임의의 양의 데이터를 저장하도록 확대될 수 있다는 점에서 무한하다. 예를 들어, 버스트 접속이 이용가능하다면, 컴퓨팅 디바이스(600A)는 세그먼트들을, 필요한 바와 같이 늘어나는 데이터 캐시(650A)로 다운로딩하는 것을 계속할 수 있다.
예시된 바와 같이, 메모리(610)는 데이터 버퍼(645)를 포함한다. 스트리밍 애플리케이션(640)은 스토리지(615)에서 상주하는 것으로서 도시된다. 소프트웨어로서 도시되지만, 실시예들에서, 스트리밍 애플리케이션(640)의 기능성은 하드웨어, 소프트웨어, 또는 하드웨어 및 소프트웨어의 조합을 이용하여 구현될 수 있다. 메모리(610)는 프로세서가 실행시간 도중에 스트리밍 애플리케이션(640)의 명령들을 실행하는 동안에, 스트리밍 애플리케이션(640)을 일시적으로 저장하기 위하여 이용될 수 있다. 실시예에서, 데이터 버퍼(645)는 크기에 있어서 고정된다. 스트리밍 애플리케이션(640)은 일반적으로, 본 명세서에서 개시된 하나 이상의 실시예들을 수행하도록 구성된다. 예를 들어, 스트리밍 애플리케이션(640)은 정상적인 접속성이 이용가능할 때, 데이터를 (예컨대, 컨텐츠 서버로부터) 데이터 버퍼(645)로 스트리밍할 수 있다. 버스트 속도들이 이용가능할 때, 스트리밍 애플리케이션(640)은 데이터를 데이터 캐시(650A)로 스트리밍하는 것을 시작할 수 있다.
도 6b는 본 명세서에서 개시된 일부 실시예들에 따른, 동적 네트워크 조건들 상에서 데이터를 스트리밍하도록 구성된 대안적인 컴퓨팅 디바이스(600B)의 블록도이다. 예시된 실시예에서는, 캐시를 호스팅하기 위하여 스토리지(615)를 이용하는 것이 아니라, 컴퓨팅 디바이스(600B)가 메모리(610) 내에 데이터 버퍼(645) 및 데이터 캐시(650B)의 둘 모두를 포함한다. 하나의 실시예에서, 스트리밍 애플리케이션(640)은 위에서 논의된 바와 같이, 데이터를 데이터 버퍼(645)로 스트리밍할 수 있다. 버스트 속도들이 이용가능할 때, 예시된 실시예에서, 스트리밍 애플리케이션(640)은 데이터를 메모리(610) 내의 데이터 캐시(650B)로 스트리밍한다. 즉, 스토리지(615) 내의 캐시를 할당하는 것이 아니라, 시스템은 메모리(610) 내의 캐시를 할당한다. 적어도 하나의 실시예에서는, 별도의 데이터 캐시(650B)를 할당하는 것이 아니라, 스트리밍 애플리케이션(640)이 그 대신에, 새로운 데이터가 버스트 속도로 다운로딩될 때에 데이터 버퍼(645)의 크기를 확대할 수 있다.
하나의 실시예에서, 스트리밍 애플리케이션(640)은 버스트 접속성이 더 이상 이용가능하지 않을 때까지, 데이터를 데이터 캐시(650B)로 다운로딩한다. 일부 실시예들에서, 데이터 캐시(650B)가 미리 정의된 크기에 도달할 경우에(즉, 미리 정의된 양의 데이터가 데이터 캐시(650B)로 이미 다운로딩되었을 경우에), 스트리밍 애플리케이션(640)은 데이터를 다운로딩하는 것을 계속하기 위하여 스토리지(615) 내의 또 다른 캐시를 할당할 수 있다.
현재의 개시내용에서는, 다양한 실시예들에 대해 참조가 행해진다. 그러나, 본 개시내용은 특정 설명된 실시예들로 제한되지는 않는다는 것이 이해되어야 한다. 그 대신에, 다음의 특징들 및 엘리먼트들의 임의의 조합은 상이한 실시예들에 관련되든지 또는 그렇지 않든지 간에, 본 명세서에서 제공된 교시내용들을 구현하고 실시하도록 고려된다. 추가적으로, 실시예들의 엘리먼트들이 "A 및 B 중의 적어도 하나"의 형태로 설명될 때, 엘리먼트 A를 배타적으로 포함하고, 엘리먼트 B를 배타적으로 포함하고, 엘리먼트 A 및 B를 포함하는 실시예들이 각각 고려된다는 것이 이해될 것이다. 또한, 일부 실시예들은 다른 가능한 해결책들에 비해 또는 종래 기술에 비해 장점들을 달성할 수 있지만, 특정한 장점이 주어진 실시예에 의해 달성되는지 또는 그렇지 않은지 여부는 본 개시내용의 제한이 아니다. 따라서, 본 명세서에서 개시된 양태들, 특징들, 실시예들, 및 장점들은 단지 예시적이고, 청구항(들)에서 명시적으로 인용되는 경우를 제외하고는, 첨부된 청구항들의 고려된 엘리먼트들 또는 제한들이 아니다. 마찬가지로, "발명"에 대한 참조는 본 명세서에서 개시된 임의의 발명 요지의 일반화로서 해석되지 않을 것이고, 청구항(들)에서 명시적으로 인용될 경우를 제외하고는, 첨부된 청구항들의 엘리먼트 또는 제한인 것으로 고려되지 않을 것이다.
본 기술분야의 통상의 기술자에 의해 인식되는 바와 같이, 본 명세서에서 설명된 실시예들은 시스템, 방법, 또는 컴퓨터 프로그램 제품으로서 구체화될 수 있다. 따라서, 실시예들은 전적으로 하드웨어 실시예, (펌웨어, 상주 소프트웨어, 마이크로-코드 등을 포함하는) 전적으로 소프트웨어 실시예, 또는 "회로", "모듈", 또는 "시스템"으로서 본 명세서에서 모두 일반적으로 지칭될 수 있는 소프트웨어 및 하드웨어 양태들을 조합하는 실시예의 형태를 취할 수 있다. 또한, 본 명세서에서 설명된 실시예들은 그 상에서 구체화된 컴퓨터 판독가능 프로그램 코드를 가지는 하나 이상의 컴퓨터 판독가능 매체(들)에서 구체화된 컴퓨터 프로그램 제품의 형태를 취할 수 있다.
컴퓨터 판독가능 매체 상에서 구체화된 프로그램 코드는 무선, 와이어라인(wireline), 광섬유 케이블, RF 등, 또는 상기한 것의 임의의 적당한 조합을 포함하지만, 이것으로 제한되지는 않는 임의의 적절한 매체를 이용하여 송신될 수 있다.
본 개시내용의 실시예들을 위한 동작들을 수행하기 위한 컴퓨터 프로그램 코드는 자바(Java), 스몰토크(Smalltalk), C++ 등과 같은 객체 지향 프로그래밍 언어(object oriented programming language), 및 "C" 프로그래밍 언어 또는 유사한 프로그래밍 언어들과 같은 기존의 절차적 프로그래밍 언어들을 포함하는, 하나 이상의 프로그래밍 언어들의 임의의 조합으로 기록될 수 있다. 프로그램 코드는 사용자의 컴퓨터 상에서 완전히, 사용자의 컴퓨터 상에서 부분적으로, 단독형 소프트웨어 패키지로서, 사용자의 컴퓨터 상에서 부분적으로 그리고 원격 컴퓨터 상에서 부분적으로, 또는 원격 컴퓨터 또는 서버 상에서 완전히 실행될 수 있다. 후자의 시나리오에서, 원격 컴퓨터는 로컬 영역 네트워크(local area network)(LAN) 또는 광역 네트워크(wide area network)(WAN)를 포함하는 임의의 유형의 네트워크를 통해 사용자의 컴퓨터에 접속될 수 있거나, (예를 들어, 인터넷 서비스 제공자를 이용하여 인터넷을 통해) 외부 컴퓨터에 대한 접속이 행해질 수 있다.
본 개시내용의 양태들은 본 개시내용의 실시예들에 따른 방법들, 장치들(시스템들), 및 컴퓨터 프로그램 제품들의 플로우차트 예시들 또는 블록도들을 참조하여 본 명세서에서 설명된다. 플로우차트 예시들 또는 블록도들의 각각의 블록과, 플로우차트 예시들 또는 블록도들에서의 블록들의 조합들은 컴퓨터 프로그램 명령들에 의해 구현될 수 있다는 것이 이해될 것이다. 이 컴퓨터 프로그램 명령들은, 컴퓨터의 프로세서 또는 다른 프로그래밍가능 데이터 프로세싱 장치를 통해 실행되는 명령들이 플로우차트 예시들 또는 블록도들의 블록(들)에서 특정된 기능들/액트(act)들을 구현하기 위한 수단을 생성하도록, 머신(machine)을 생성하기 위하여 범용 컴퓨터, 특수 목적 컴퓨터, 또는 다른 프로그래밍가능 데이터 프로세싱 장치의 프로세서로 제공될 수 있다.
컴퓨터 판독가능 매체 내에 저장된 명령들이 플로우차트 예시들 또는 블록도들의 블록(들)에서 특정된 기능/액트를 구현하는 명령들을 포함하는 제조 물품을 생성하도록, 특정한 방식으로 기능할 것을 컴퓨터, 다른 프로그래밍가능 데이터 프로세싱 장치, 또는 다른 디바이스에 지시할 수 있는 이 컴퓨터 프로그램 명령들은 또한, 컴퓨터 판독가능 매체 내에 저장될 수 있다.
컴퓨터 프로그램 명령들은 또한, 컴퓨터, 다른 프로그래밍가능 데이터 프로세싱 장치, 또는 다른 디바이스 상에서 실행되는 명령들이 플로우차트 예시들 또는 블록도들의 블록(들)에서 특정된 기능들/액트들을 구현하기 위한 프로세스들을 제공하도록, 일련의 동작 단계들이 컴퓨터, 다른 프로그래밍가능 장치, 또는 다른 디바이스 상에서 수행되어 컴퓨터 구현된 프로세스를 생성하게 하기 위하여, 컴퓨터, 다른 프로그래밍가능 데이터 프로세싱 장치, 또는 다른 디바이스 상으로 로딩될 수 있다.
도면들에서의 플로우차트 예시들 및 블록도들은 본 개시내용의 다양한 실시예들에 따른 시스템들, 방법들, 및 컴퓨터 프로그램 제품들의 가능한 구현예들의 아키텍처, 기능성, 및 동작을 예시한다. 이와 관련하여, 플로우차트 예시들 또는 블록도들에서의 각각의 블록은 특정된 논리적 기능(들)을 구현하기 위한 하나 이상의 실행가능 명령들을 포함하는 모듈, 세그먼트, 또는 코드의 부분을 표현할 수 있다. 일부 대안적인 구현예들에서, 블록에서 언급된 기능들은 도면들에서 언급된 순서와 관계 없이 발생할 수 있다는 것이 또한 주목되어야 한다. 예를 들어, 연속으로 도시된 2 개의 블록들은 실제로, 실질적으로 동시에 실행될 수 있거나, 블록들은 때때로 관여된 기능성에 따라서는, 반대 순서로 또는 순서에 관계 없이 실행될 수 있다. 블록도들 또는 플로우차트 예시들의 각각의 블록과, 블록도들 또는 플로우차트 예시들에서의 블록들의 조합들은 특정된 기능들 또는 액트들을 수행하는 특수 목적 하드웨어-기반 시스템들, 또는 특수 목적 하드웨어 및 컴퓨터 명령들의 조합들에 의해 구현될 수 있는 것이 또한 주목될 것이다.
상기한 것은 본 개시내용의 실시예들에 대한 것이지만, 개시내용의 다른 그리고 추가의 실시예들은 그 기본적인 범위로부터 이탈하지 않으면서 고안될 수 있고, 그 범위는 뒤따르는 청구항들에 의해 결정된다.

Claims (21)

  1. 방법으로서,
    디바이스에 의해, 제1 다운로드 속도로 데이터의 제1 부분을 버퍼로 다운로딩하는 단계;
    상기 버퍼로부터, 상기 데이터의 제1 부분을 출력하는 단계;
    상기 디바이스가 상기 제1 다운로드 속도보다 더 큰 제2 다운로드 속도로 데이터를 다운로딩하고 있는 것으로 결정할 시에:
    데이터의 하나 이상의 추후의 부분들을 위한 캐시를 이용하는 것으로 결정하는 단계; 및
    데이터의 제2 부분을 상기 캐시로 다운로딩하는 단계; 및
    상기 버퍼가 비어 있는 것으로 결정할 시에, 상기 캐시로부터 상기 데이터의 제2 부분을 출력하는 단계
    를 포함하는, 방법.
  2. 제1항에 있어서, 상기 방법은,
    상기 디바이스가 상기 제2 다운로드 속도로 데이터를 더 이상 다운로딩하지 않는 것으로 결정할 시에:
    데이터의 제3 부분을 상기 버퍼로 다운로딩하는 단계를 더 포함하는, 방법.
  3. 제1항에 있어서, 상기 데이터의 제1 및 제2 부분들은 제1 데이터 스트림과 연관된 데이터의 복수의 부분들이고, 상기 방법은,
    상기 디바이스가 상기 제2 다운로드 속도로 데이터를 다운로딩하고 있는 것으로 결정할 시에, 상기 데이터의 복수의 부분들로부터의 데이터의 모든 추후의 부분들을 상기 캐시로 다운로딩하는 단계를 더 포함하는, 방법.
  4. 제3항에 있어서, 상기 방법은,
    상기 데이터의 복수의 부분들의 전부가 상기 캐시로 다운로딩된 것으로 결정할 시에:
    상기 제1 데이터 스트림에 적어도 부분적으로 기초하여 제2 데이터 스트림을 식별하는 단계; 및
    상기 제2 데이터 스트림과 연관된 데이터의 적어도 하나의 부분을 상기 캐시로 다운로딩하는 단계를 더 포함하는, 방법.
  5. 제1항에 있어서, 상기 디바이스는 제1 네트워크를 이용하여 상기 데이터의 제1 부분을 다운로딩하고, 상기 디바이스가 상기 제2 다운로드 속도로 데이터를 다운로딩하고 있는 것으로 결정하는 것은, 상기 디바이스가 제2 네트워크를 이용하여 데이터를 다운로딩하기 시작한 것으로 결정하는 것을 포함하는, 방법.
  6. 제1항에 있어서, 상기 디바이스가 상기 제2 다운로드 속도로 데이터를 다운로딩하고 있는 것으로 결정하는 것은, 상기 제2 다운로드 속도가 상기 제1 다운로드 속도와 비교하여, 미리 정의된 임계치를 초과하는 것으로 결정하는 것을 포함하는, 방법.
  7. 제6항에 있어서, 상기 제2 다운로드 속도가 미리 정의된 임계치를 초과하는 것으로 결정하는 것은, 슬라이딩 윈도우를 이용하여 이력적 다운로드 속도들에 대하여 상기 제2 다운로드 속도를 비교하는 것을 포함하는, 방법.
  8. 제1항에 있어서, 상기 데이터의 제2 부분은 상기 제2 다운로드 속도로 상기 캐시로 다운로딩되고, 상기 데이터의 제1 부분 및 상기 데이터의 제2 부분은 복수의 비트레이트들 중의 제1 비트레이트와 둘 모두 연관되는, 방법.
  9. 컴퓨터 프로그램 코드를 포함하는 비-일시적 컴퓨터-판독가능 저장매체로서,
    상기 컴퓨터 프로그램 코드는, 하나 이상의 컴퓨터 프로세서들의 동작에 의해 실행될 때,
    디바이스에 의해, 제1 다운로드 속도로 데이터의 제1 부분을 버퍼로 다운로딩하는 동작;
    상기 버퍼로부터, 상기 데이터의 제1 부분을 출력하는 동작;
    상기 디바이스가 상기 제1 다운로드 속도보다 더 큰 제2 다운로드 속도로 데이터를 다운로딩하고 있는 것으로 결정할 시에:
    데이터의 하나 이상의 추후의 부분들을 위한 캐시를 이용하는 것으로 결정하는 동작; 및
    데이터의 제2 부분을 상기 캐시로 다운로딩하는 동작; 및
    상기 버퍼가 비어 있는 것으로 결정할 시에, 상기 캐시로부터 상기 데이터의 제2 부분을 출력하는 동작
    을 포함하는 동작을 수행하는, 컴퓨터-판독가능 저장매체.
  10. 제9항에 있어서, 상기 동작은,
    상기 디바이스가 상기 제2 다운로드 속도로 데이터를 더 이상 다운로딩하지 않는 것으로 결정할 시에:
    데이터의 제3 부분을 상기 버퍼로 다운로딩하는 동작을 더 포함하는, 컴퓨터-판독가능 저장매체.
  11. 제9항에 있어서, 상기 데이터의 제1 및 제2 부분들은 제1 데이터 스트림과 연관된 데이터의 복수의 부분들이고, 상기 동작은,
    상기 디바이스가 상기 제2 다운로드 속도로 데이터를 다운로딩하고 있는 것으로 결정할 시에, 상기 데이터의 복수의 부분들로부터의 데이터의 모든 추후의 부분들을 상기 캐시로 다운로딩하는 동작을 더 포함하는, 컴퓨터-판독가능 저장매체.
  12. 제11항에 있어서, 상기 동작은,
    상기 데이터의 복수의 부분들의 전부가 상기 캐시로 다운로딩된 것으로 결정할 시에:
    상기 제1 데이터 스트림에 적어도 부분적으로 기초하여 제2 데이터 스트림을 식별하는 동작; 및
    상기 제2 데이터 스트림과 연관된 데이터의 적어도 하나의 부분을 상기 캐시로 다운로딩하는 동작을 더 포함하는, 컴퓨터-판독가능 저장매체.
  13. 제9항에 있어서, 상기 디바이스는 제1 네트워크를 이용하여 상기 데이터의 제1 부분을 다운로딩하고, 상기 디바이스가 상기 제2 다운로드 속도로 데이터를 다운로딩하고 있는 것으로 결정하는 것은, 상기 디바이스가 제2 네트워크를 이용하여 데이터를 다운로딩하기 시작한 것으로 결정하는 것을 포함하는, 컴퓨터-판독가능 저장매체.
  14. 제9항에 있어서, 상기 디바이스가 상기 제2 다운로드 속도로 데이터를 다운로딩하고 있는 것으로 결정하는 것은, 상기 제2 다운로드 속도가 상기 제1 다운로드 속도와 비교하여, 미리 정의된 임계치를 초과하는 것으로 결정하는 것을 포함하는, 컴퓨터-판독가능 저장매체.
  15. 시스템으로서,
    하나 이상의 컴퓨터 프로세서들; 및
    프로그램을 포함하는 저장 매체
    를 포함하고, 상기 프로그램은, 상기 하나 이상의 컴퓨터 프로세서들에 의해 실행될 때, 동작을 수행하고, 상기 동작은,
    상기 시스템에 의해, 제1 다운로드 속도로 데이터의 제1 부분을 버퍼로 다운로딩하는 동작;
    상기 버퍼로부터, 상기 데이터의 제1 부분을 출력하는 동작;
    상기 시스템이 상기 제1 다운로드 속도보다 더 큰 제2 다운로드 속도로 데이터를 다운로딩하고 있는 것으로 결정할 시에:
    데이터의 하나 이상의 추후의 부분들을 위한 캐시를 이용하는 것으로 결정하는 동작; 및
    데이터의 제2 부분을 상기 캐시로 다운로딩하는 동작; 및
    상기 버퍼가 비어 있는 것으로 결정할 시에, 상기 캐시로부터 상기 데이터의 제2 부분을 출력하는 동작을 포함하는, 시스템.
  16. 제15항에 있어서, 상기 동작은,
    상기 시스템이 상기 제2 다운로드 속도로 데이터를 더 이상 다운로딩하지 않는 것으로 결정할 시에:
    데이터의 제3 부분을 상기 버퍼로 다운로딩하는 동작을 더 포함하는, 시스템.
  17. 제15항에 있어서, 상기 데이터의 제1 및 제2 부분들은 제1 데이터 스트림과 연관된 데이터의 복수의 부분들이고, 상기 동작은,
    상기 시스템이 상기 제2 다운로드 속도로 데이터를 다운로딩하고 있는 것으로 결정할 시에, 상기 데이터의 복수의 부분들로부터의 데이터의 모든 추후의 부분들을 상기 캐시로 다운로딩하는 동작을 더 포함하는, 시스템.
  18. 제17항에 있어서, 상기 동작은,
    상기 데이터의 복수의 부분들의 전부가 상기 캐시로 다운로딩된 것으로 결정할 시에:
    상기 제1 데이터 스트림에 적어도 부분적으로 기초하여 제2 데이터 스트림을 식별하는 동작; 및
    상기 제2 데이터 스트림과 연관된 데이터의 적어도 하나의 부분을 상기 캐시로 다운로딩하는 동작을 더 포함하는, 시스템.
  19. 제15항에 있어서, 상기 시스템은 제1 네트워크를 이용하여 상기 데이터의 제1 부분을 다운로딩하고, 상기 시스템이 상기 제2 다운로드 속도로 데이터를 다운로딩하고 있는 것으로 결정하는 것은, 상기 시스템이 제2 네트워크를 이용하여 데이터를 다운로딩하기 시작한 것으로 결정하는 것을 포함하는, 시스템.
  20. 제15항에 있어서, 메모리를 더 포함하고, 상기 버퍼는 상기 메모리의 할당된 부분이고, 상기 캐시는 상기 저장 매체의 할당된 부분인, 시스템.
  21. 방법으로서,
    디바이스에 의해, 제1 다운로드 속도로 데이터의 제1 부분을 버퍼로 다운로딩하는 단계;
    상기 버퍼로부터, 상기 데이터의 제1 부분을 출력하는 단계;
    상기 디바이스가 상기 제1 다운로드 속도보다 더 큰 제2 다운로드 속도로 데이터를 다운로딩하고 있는 것으로 결정할 시에:
    상기 버퍼의 크기를 확대하는 단계; 및
    데이터의 제2 부분을 상기 버퍼로 다운로딩하는 단계
    를 포함하는, 방법.
KR1020210148658A 2020-11-04 2021-11-02 높은 대역폭 네트워크들 상에서의 데이터의 버퍼링 KR102543019B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/089,317 2020-11-04
US17/089,317 US11178198B1 (en) 2020-11-04 2020-11-04 Buffering data on high bandwidth networks

Publications (2)

Publication Number Publication Date
KR20220060487A KR20220060487A (ko) 2022-05-11
KR102543019B1 true KR102543019B1 (ko) 2023-06-13

Family

ID=78332667

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210148658A KR102543019B1 (ko) 2020-11-04 2021-11-02 높은 대역폭 네트워크들 상에서의 데이터의 버퍼링

Country Status (6)

Country Link
US (3) US11178198B1 (ko)
EP (1) EP3996356B1 (ko)
JP (2) JP2022075540A (ko)
KR (1) KR102543019B1 (ko)
CN (1) CN114449335A (ko)
BR (1) BR102021021089A2 (ko)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160065642A1 (en) * 2014-08-26 2016-03-03 Opanga Networks, Inc. Systems and methods for conditional download using idle network capacity

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020194609A1 (en) * 2001-06-18 2002-12-19 Tran Thanh T. Video client with dynamically allocable video buffer for efficiently streaming video
KR101023557B1 (ko) 2002-06-21 2011-03-21 톰슨 라이센싱 Wlan 커버리지 영역을 통한 멀티미디어 콘텐츠 전달
US7895629B1 (en) * 2007-11-07 2011-02-22 At&T Mobility Ii Llc Video service buffer management in a mobile rate control enabled network
EP2300928B1 (en) 2008-06-06 2017-03-29 Amazon Technologies, Inc. Client side stream switching
US20120054362A1 (en) * 2010-08-31 2012-03-01 Canon Kabushiki Kaisha Mechanism for autotuning mass data transfer from a sender to a receiver over parallel connections
JP2012080417A (ja) 2010-10-04 2012-04-19 Pioneer Electronic Corp ストリーミング再生装置、ストリーミング再生方法、コンピュータプログラム及び記録媒体
DE102011017387A1 (de) 2010-12-17 2012-06-21 Epcos Ag Thermoelektrisches Modul und Verwendung eines thermoelektrischen Moduls
US8769144B2 (en) * 2011-05-19 2014-07-01 Mobitv, Inc. Contextually aware client buffer thresholds
JP5966265B2 (ja) * 2011-07-15 2016-08-10 株式会社リコー データ転送装置及び画像形成システム
US8396983B1 (en) 2012-03-13 2013-03-12 Google Inc. Predictive adaptive media streaming
US9462021B2 (en) * 2012-09-24 2016-10-04 Google Technology Holdings LLC Methods and devices for efficient adaptive bitrate streaming
US9300734B2 (en) * 2012-11-21 2016-03-29 NETFLIX Inc. Multi-CDN digital content streaming
US20140369329A1 (en) * 2013-06-18 2014-12-18 Qualcomm Incorporated Lte and external wifi bandwidth aggregation
US10933209B2 (en) * 2013-11-01 2021-03-02 Georama, Inc. System to process data related to user interactions with and user feedback of a product while user finds, perceives, or uses the product
US9680957B2 (en) 2014-08-11 2017-06-13 Harman International Industries, Incorporated Adaptive bandwidth consumption optimization for wireless data connections
US10349462B2 (en) * 2014-09-08 2019-07-09 Liveu Ltd. Methods and systems for managing bonded communications across multiple communication networks
US20160198016A1 (en) 2015-01-05 2016-07-07 Onavo Mobile Ltd. Techniques for network resource caching using partial updates
US10277638B2 (en) * 2015-04-14 2019-04-30 Nokia Of America Corporation Providing bonded services at a non-anchor node
EP3318102A4 (en) * 2015-04-20 2019-03-20 Shoelace Wireless, Inc. SYSTEMS FOR IMPROVING THE SPEED AND SECURITY OF THE MOBILE INTERNET
US10498795B2 (en) 2017-02-17 2019-12-03 Divx, Llc Systems and methods for adaptive switching between multiple content delivery networks during adaptive bitrate streaming
US20180239729A1 (en) * 2017-02-20 2018-08-23 Intel Corporation Increasing media agnostic universal serial bus (ma usb) throughput using multiple parallel tcp connections
US10448283B2 (en) * 2017-08-07 2019-10-15 T-Mobile Usa, Inc. Dynamic predictive buffering
US10587716B2 (en) 2017-10-26 2020-03-10 Rovi Guides, Inc. Systems and methods for optimizing allocation of bandwidth for pre-caching media content
TWI690202B (zh) * 2018-12-28 2020-04-01 瑞昱半導體股份有限公司 用於控制媒體播放器中之串流緩衝器的方法與相關的緩衝裝置
US11102272B2 (en) * 2019-12-19 2021-08-24 Wangsu Science and Technology Co., Ltd. Method and device for downloading resource file
US11570660B2 (en) * 2020-03-18 2023-01-31 Connectify, Inc. Management of data communication connections

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160065642A1 (en) * 2014-08-26 2016-03-03 Opanga Networks, Inc. Systems and methods for conditional download using idle network capacity

Also Published As

Publication number Publication date
BR102021021089A2 (pt) 2022-05-17
KR20220060487A (ko) 2022-05-11
US11979446B2 (en) 2024-05-07
US20220141274A1 (en) 2022-05-05
JP2022075540A (ja) 2022-05-18
EP3996356A1 (en) 2022-05-11
US11178198B1 (en) 2021-11-16
US20230239334A1 (en) 2023-07-27
US11627174B2 (en) 2023-04-11
JP2023156441A (ja) 2023-10-24
CN114449335A (zh) 2022-05-06
EP3996356B1 (en) 2024-05-08

Similar Documents

Publication Publication Date Title
US11527264B2 (en) Systems and methods for adaptive streaming of multimedia content
US20130262694A1 (en) Buffering in HTTP Streaming Client
US11366758B2 (en) Method and devices for managing cache
US11481145B2 (en) Dynamically throttling host write data rate
US8762563B2 (en) Method and apparatus for improving the adaptive bit rate behavior of a streaming media player
AU2022208002B2 (en) Systems and methods for optimizing hard drive throughput
US20180109462A1 (en) Method for optimizing streaming media transmission and cache apparatus using the same
US11606309B2 (en) Multimedia content steering
KR102543019B1 (ko) 높은 대역폭 네트워크들 상에서의 데이터의 버퍼링
US10341454B2 (en) Video and media content delivery network storage in elastic clouds
US20170163555A1 (en) Video file buffering method and system
CN115686855A (zh) 缓存数据的访问调度方法、处理器、电子设备及存储介质
WO2019151473A1 (ja) 品質予測装置、品質予測方法及びプログラム
KR102589694B1 (ko) 스토리지 장치, 스토리지 장치의 동작 방법, 스토리지 장치를 포함하는 스트리밍 시스템
US20220256208A1 (en) Media aware content placement

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant