Dynamic predictive buffering

Buffering streaming content includes accessing prior device location data of a device and predicting a future sector that the device will travel through based at least in part on the prior device location data. A predicted quality of service of wireless communications is determined and a streaming buffer is adjusted based at least in part on the predicted quality of service.

BACKGROUND

In conventional wireless carrier networks, wireless data is transmitted from an antenna (e.g., cellular radio tower) to a user device. When data continuity is desirable such as in video or audio streaming, the data may be buffered so that a slight disruption or delay in wireless data service does not affect the playback of the video or audio data on the user device.

However, existing buffering techniques utilize a static or fixed buffer even when interruptions or delays in wireless data service may exceed the buffer size and consequently cause a noticeable disruption in wireless data service. For example, when a user streaming video data on a user device encounters a disruption in service, they will experience a stoppage in the video the user was watching. Thus, existing buffering techniques in wireless data communication are susceptible to disruptions in the user experience as the user device moves between network zones of differing service quality.

DETAILED DESCRIPTION

This disclosure is directed to dynamic predictive buffering in a wireless carrier network. Embodiments of the disclosure may include both predicting a future sector that a device will travel through (e.g., based on prior device location data) and predicting a quality of service (“QoS”) of wireless communications from a wireless carrier network in the future sector. The future sector prediction may include analyzing historical device mobility behavior based on both time and location data (i.e., from a global navigation satellite system (“GNSS”)). The future sector QoS may include analyzing historical quality of service data for the future sector. For example, if a user's daily drive from home to work includes an area of known lower quality wireless coverage, and time/location data from a user device indicates that the user is driving from home to work, then it is likely they will encounter the known area of lower quality wireless coverage.

In embodiments of the disclosure, the buffer of content streamed to the user device may be adjusted when a future predicted QoS of wireless communication from a wireless carrier network might be different. In one embodiment, an additional buffer allocation is granted to the user device. This increase of the buffer occurs when both the predicted QoS of the wireless communication from the wireless carrier network in the future sector is below a threshold level, and when the existing QoS for the wireless carrier network is above a minimum threshold level (i.e., the current QoS is more favorable than the predicted future QoS). In one embodiment, adjusting the buffer includes decreasing the buffer allocation when the predicted QoS in the future sector is superior to the existing QoS. Therefore, a streaming buffer can be adjusted using dynamic predictive buffering to limit interruptions in streaming data when inferior QoS is predicted while also maintaining network efficiency when the predicted quality of service is sufficient to maintain a user's streaming experience.

In one illustrative example, if a user's daily commute to school includes a subway, historical device location data specific to the user's device may be utilized to predict a disruption in service when the user takes the subway. As such, the streaming buffer of the user device may be temporarily increased to hold more content (e.g., video data of a movie that the user is streaming) to preserve the user's experience.

FIG. 1illustrates an example architecture100including a user device104receiving data from a carrier network102. Carrier network102may facilitate cellular data communication such as voice calls, texts, and data. Example cellular data standards implemented by carrier network102for cellular data communications may include Enhanced Data Rates for GSM Evolution (EDGE), Wideband Code Division Multiple Access (W-CDMA), High Speed Packed Access (HSPA), Long Term Evolution (LTE), CDMA-2000 (Code Division Multiple Access 2000), and/or so forth. Example carrier network102includes a core network106that may provide telecommunication and data communication services to the user device104. For example, the core network106may connect the user devices (via base stations and backhaul116) to other telecommunication and data communication networks, such as the Internet110and the public switched telephone network (PSTN)112. In various embodiments, the core network106may include one or more servers114that implement network components. For example, the network components may include a serving GPRS support node (SGSN) that routes voice calls to and from the PSTN112, a Gateway GPRS Support Node (GGSN) that handles the routing of data communication between external packet switched networks and the core network106. The network components may further include a Packet Data Network (PDN) gateway (PGW) that routes data traffic between the GGSN and the Internet110. The network components may also include an Operations Support System (OSS) platform for managing network configuration, fault management, and provisioning of wireless carrier network102.

The wireless carrier network102may also include a radio access network including multiple base stations. The multiple base stations are responsible for handling voice and data traffic between multiple user devices, such as the user device104, and the core network106. In the illustrated embodiment ofFIG. 1, the base stations are in the form of eNodeB nodes151. Each eNodeB node151may include a base transceiver system (BTS) that communicates via an antenna system over an air-link with one or more user devices that are within range. The antenna system of an eNodeB node may include multiple antennas that are mounted on a radio tower to provide a coverage area that is referred to as a “cell.” The BTS may send RF signals to user devices and receive radio signals from user devices to facilitate wireless communication. Each eNodeB node151may be connected to core network106via backhaul connection116, as illustrated.

In the illustrated embodiment, carrier network102may access media stored on media servers199via the Internet110. In an example, carrier network102facilitates streaming audio data from an album stored on media server199to user device104. In one example, carrier network102facilitates streaming video data from a movie or television series stored on media server199to user device104. In one embodiment (not illustrated), a content distribution network (CDN) is included in carrier network102and streaming media may be stored in the CDN. In this embodiment, carrier network102may facilitate the streaming of the media from the CDN to the user device(s)104. Those skilled in the art appreciate that CDNs may be implemented as servers to provide media content to users based on the geographic location of the user and reduce latency.

User device104may be a smartphone, a tablet computer, an embedded computer system, or any other device that is capable of using the wireless communication services that are provided by the carrier network102. In the illustrated embodiment, user device104is connected to eNodeB151(1) at an existing quality of service (QOS)163with a streaming buffer allocation175. As user device104moves among different cells in carrier network102, the streaming buffer allocation175may change to streaming buffer allocation177or179, for example, based on a predicted QOS165or167corresponding to a predicted path161of the user device104. Wireless networks are subject to quality degradation under a variety of conditions. These conditions may include: low signal strength, poor signal to noise ratio, interference, etc. This disclosure uses the terminology “quality of service” (“QoS”) to refer to a qualitative or quantitative measure of the user experience, as a result of the wireless network conditions.

InFIG. 1, while user device104has access to an existing QOS163provided by eNodeB151(1), the streaming buffer allocation175for user device104is above a standard streaming buffer allocation because a predicted QOS165that the user device104will encounter is known to be below an average quality of service. For ease of description, a “below average” quality of service may be referred to as “level 2” throughout this disclosure, although many levels of QOS specificity may be implemented. The predicted QOS165may be predicted based on a predicted path161of user device104, which may be derived from prior device location data of user device104. In other words, the streaming buffer allocation175has been increased beyond a standard streaming buffer allocation because the predicted QOS of eNodeB151(2) is below average (level 2). Increasing the streaming buffer allocation for user device104may maintain the streaming experience for a user of user device104while the user device104moves through a sector having a less than ideal QOS, such as the level 2 QOS provided by eNodeB151(2).

Also inFIG. 1, while user device104has access to QOS165provided by eNodeB151(2), the streaming buffer allocation177for user device104is well above a standard streaming buffer allocation because a predicted QOS167that the user device104will encounter is known to be a significantly below average quality of service. For ease of description, a “significantly below average” quality of service may be referred to as “level 1” throughout this disclosure, although many levels of QOS specificity may be implemented.

Still referring toFIG. 1, while user device104has access to QOS167provided by eNodeB151(N), the streaming buffer allocation179for user device104drops back down to a standard streaming buffer allocation because a predicted QOS (not illustrated) that the user device104will encounter along predicted path161is known to be sufficient to sustain a streaming experience for user device104.

FIG. 2is a block diagram showing various components of an example user device204that is configured to adjust a streaming buffer allocation based at least in part on a predicted quality of service of a predicted future sector that the user device will encounter. User device204is one illustrative example of user device104. The user device204may include a communication interface202, one or more sensors204, a user interface206, one or more processors208, and memory210. The communication interface202may include wireless and/or wired communication components that enable the electronic device to transmit or receive voice or data communication via the wireless carrier network102, as well as other telecommunication and/or data communication networks. The sensors204may include a proximity sensor, a compass, an accelerometer, altimeter, cameras, and/or a global positioning system (GPS) sensor. The compass, the accelerometer, and the GPS sensor may detect orientation, movement, and geolocation of the user device204.

The user interface206may enable a user to provide inputs and receive outputs from the user device204. The user interface206may include a data output device (e.g., visual display, audio speakers), and one or more data input devices. The data input devices may include, but are not limited to, combinations of one or more of keypads, keyboards, mouse devices, touch screens, microphones, speech recognition packages, and any other suitable devices or other electronic/software selection methods.

The user device204may also include wireless radio212and other device hardware214. The wireless radio212may include hardware components that enable the user device204to perform telecommunication and data communication with carrier network102, Wi-Fi networks, and/or Bluetooth enabled devices. The device hardware214may include other hardware that is typically located in a mobile telecommunication device. For example, the device hardware214may include signal converters, transceivers, antennas, hardware decoders and encoders, graphic processors, a SIM card slot, and/or the like that enable the user device204to execute applications and provide telecommunication and data communication functions. The SIM216may be an integrated circuit chip that is inserted into the SIM card slot of the user device204, or an embedded SIM that is hardwired into the circuit board of the user device204.

The one or more processors208and the memory210of the user device204may implement an operating system218, device software220, and/or one or more applications222. The various software and applications may include routines, program instructions, objects, and/or data structures that perform particular tasks or implement particular abstract data types. The operating system218may include components that enable the user device204to receive and transmit data via various interfaces (e.g., user controls, communication interface202, and/or memory input/output devices). The operating system218may also process data using the one or more processors208to generate outputs based on inputs that are received via the user interface206. For example, the operating system218may provide an execution environment for the execution of the applications222. The operating system218may include a presentation component that presents the output (e.g., display the data on an electronic display, store the data in memory, transmit the data to another electronic device, etc.).

The operating system218may include an interface layer that enables applications to interface with the wireless radios212and/or the communication interface202. The interface layer may comprise public APIs, private APIs, or a combination of both public APIs and private APIs. Additionally, the operating system218may include other components that perform various other functions generally associated with an operating system. The device software220may include software components that enable the user device to perform functions. For example, the device software220may include basic input/output system (BIOS), Boot ROM, or a bootloader that boots up the user device204and executes the operating system218following power up of the device.

The applications222may include applications that provide utility, entertainment, and/or productivity functionalities to a user of the user device204. For example, the applications222may further include electronic mail applications, remote desktop applications, web browser applications, navigation applications, office productivity applications, audio streaming applications, video streaming applications, and/or so forth.

Memory210includes client buffer allocation manager230. In the illustrated embodiment, client buffer allocation manager230includes prior device location data232, instant device location data231, sector prediction engine233, cell quality data234, a QOS Prediction Engine235, Existing QOS data237, threshold data238, buffer adjustment engine236, and streaming buffer245. InFIG. 2, the calculation of the streaming buffer is performed by the user device204.

Prior device location data232may include locations of the user device204and the times that the user device204was at the locations. Client buffer allocation manager230may receive locations and/or corresponding time stamps of the user device from sensors204via location link240. The locations may be derived from GPS sensors or compasses of sensors204. Client buffer allocation manager230may also receive prior device location data232from servers114of carrier network102via wireless radios212and data link241in some embodiments. Hence, the prior device location data232may include hundreds or thousands of prior device locations with corresponding times. In an embodiment, the prior device location data232includes at least a first pairing and a second pairing, where the first pairing including a first location and a first time that a device was at the first location and the second pairing including a second location and second time that the device was at the second location.

Instant device location data231may include the instant location (and time) of the user device. The instant location of the user device may be derived from a GPS sensor of the user device or a Wi-Fi signal that is received by the user device that can be mapped to a location, for example.

Sector prediction engine233is coupled to receive prior device location data232and instant device location data231and provide predicted sector data to QOS prediction engine235based at least in part on the prior device location data232and the instant device location data231. Referring now toFIG. 6, a user device may generally travel from a home of a user in sector621(0) to work in sector621(8) on Monday, Wednesday, and Friday mornings taking path613. On Tuesdays and Thursdays afternoons, a user device may generally travel from a home of a user in sector621(0) to school in sector621(5) taking path611. Prior device location data232may include a data log that reflects the user's habit to travel with a user device (e.g.,104/204) along path613on Monday, Wednesday, and Friday mornings and to travel path611on Tuesday and Thursday afternoons. Path611travels through sectors621(0),621(1),621(2),621(3),621(4), and621(5) and path613travels through sectors621(0),621(6),621(7), and621(8).

Having access to both prior device location data232and instant device location data231, sector prediction engine233may predict that a user device will travel through sector621(7) when the user device has already travelled through sector621(0) and621(6) on a Monday morning. Hence, sector prediction engine233may pass sector621(7) to QOS prediction engine235as sector prediction data, in that example. Similarly, sector prediction engine233may predict that a user device will travel through sector621(2) when the user device has already travelled through sector621(0) and621(1) on a Tuesday afternoon. Hence, sector prediction engine233may pass sector621(2) to QOS prediction engine235as sector prediction data, in that example.

FIG. 6also illustrates a user device traveling along path615through sectors621(0),621(9),621(10), and621(11) from the user's home to a sporting event at a stadium. Even if the user device rarely, or has never travelled along path615, sector prediction engine233may still predict that the user device will encounter sector621(10) based on the direction of travel established by the vector formed by travelling from sector621(0) to621(9). Hence, even a limited amount of prior device location data232may be useful to predict a sector that will be encountered by a user device.

Returning toFIG. 2, QOS prediction engine235receives the sector prediction data from sector prediction engine233. Using the sector prediction data, the QOS prediction engine235may query cell quality data234to receive a quality of service metric data for a “cell” that provides wireless coverage to the future sector predicted by the sector prediction engine233. Cell quality data234may include a table of cell identifiers with their corresponding Key Performance Indicators (KPIs). Based on the sector prediction data and the quality of service metric, QOS prediction engine235may determine a predicted quality of service of wireless communications from a wireless carrier network in the future sector and pass the predicted quality of service to buffer adjustment engine236. A “sector” may be defined as a physical location such as a GPS coordinate. One or more “cells” of a wireless carrier network may provide coverage to a sector.

InFIG. 2, buffer adjustment engine236receives existing QOS data237, threshold level of service quality238, and the predicted quality of service from sector prediction engine235. The existing QOS data237may be determined by receiving QOS data from wireless radio212via data link241.

In one embodiment, the buffer adjustment engine236adjusts the streaming buffer245based at least in part on the predicted quality of service of the wireless communication from the wireless carrier network in the future sector. If the predicted quality of service in the future sector is significantly below average (level 1), increasing the streaming buffer245to buffer the streaming content onto the user device204prior to experiencing level 1 QOS may be useful to prevent disruption to the streaming content. If the predicted quality of service in the future sector is excellent (e.g., level 5), increasing the streaming buffer may not be necessary since the excellent QOS in the future sector is unlikely to disrupt the streaming experience. If the predicted quality of service in the future sector is excellent (level 5), the streaming buffer may be decreased for network efficiency purposes. When the streaming buffer245is adjusted, user device204may communicate the adjustment to wireless carrier network102.

In one embodiment, adjusting streaming buffer245includes adjusting a high-water mark and a low-water mark in a read-ahead buffer of memory210. The high-water mark and a low-water mark in the read-ahead buffer may be set with regard to memory size or with regard to the seconds of media content that will be read ahead.

In one embodiment, the buffer adjustment engine236increases streaming buffer245by an additional buffer allocation when the predicted quality of service of the wireless communication from the wireless carrier network in the future sector is below the threshold level of service quality238and the existing QOS from the wireless carrier network is above the threshold level of service quality238. In one particular illustrative example, the predicted quality of service in the predicted future sector is “significantly below average” (level 1) and the existing QOS237is average (level 3). Therefore, it would be potentially advantageous to take advantage of the existing quality of service (level 3) to stream media content to a user device prior to entering the predicted quality service that is significantly below average (level 1) so that the streaming experience is not interrupted. However, if a user device is simply moving from an excellent QOS (level 5) to an above average QOS (level 4), increasing the streaming buffer245may not be necessary because no disruption in streaming service would be expected/predicted. Therefore, buffer adjustment engine236may only increase streaming buffer245when the QOS of the predicted sector is below a threshold level of service238(e.g., level 2) and the existing QOS is at or above the threshold level, in one embodiment.

FIG. 3is a block diagram showing various components of an example server(s)314within carrier network102that is configured to collect and store data for facilitating adjusting a buffer allocation of streaming buffer245based at least in part on a predicted quality of service of a predicted future sector that the user device will encounter.FIG. 2andFIG. 3may illustrate an embodiment where a user device performs a significant portion of the operations and analysis to adjust a buffer allocation of streaming buffer245and server314provides data to user device204to support the operation and analysis. In contrast,FIG. 4may illustrate an embodiment where a server414perform the majority of the operation and analysis to determine a buffer allocation to a streaming buffer, which leverages the power and processing resources of the server.

InFIG. 3, server(s)314may include a communication interface302, one or more processors304, memory306, and hardware308. The communication interface302may include wireless and/or wired communication components that enable the server(s)314to transmit data to and receive data from other networked devices. The hardware308may include additional user interface, data communication, or data storage hardware. For example, the user interfaces may include a data output device (e.g., visual display, audio speakers), and one or more data input devices. The data input devices may include, but are not limited to, combinations of one or more of keypads, keyboards, mouse devices, touch screens that accept gestures, microphones, voice or speech recognition devices, and any other suitable devices.

The memory306may be implemented using computer-readable media, such as computer storage media. Computer-readable media includes, at least, two types of computer-readable media, namely computer storage media and communications media. Computer storage media includes volatile and non-volatile, removable and non-removable media implemented in any method or technology for storage of information such as computer-readable instructions, data structures, program modules, or other data. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD), high-definition multimedia/data storage disks, or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other non-transmission medium that can be used to store information for access by a computing device. In contrast, communication media may embody computer-readable instructions, data structures, program modules, or other data in a modulated data signal, such as a carrier wave, or other transmission mechanism. In various embodiments, the processors304and the memory306of the server(s)314may execute a policy engine314, a gateway318, as well as other components of the core network106. Server(s)314may have access to media servers199to provide streaming content to user devices104/204.

In the illustrated embodiment, memory306includes prior device location data232and cell quality data234. In one embodiment, Key Performance Indicators (KPIs) of performance and coverage of carrier network102are collected by the OSS of the carrier network102and the KPIs may be included in cell quality data234. Each different user device on carrier network102may contribute to reporting the KPIs to carrier network102. Thus, carrier network102may maintain cell quality data234for each cell in the carrier network102and the cell quality data234may be accessed by user device204for purposes of determining a predicted QOS in a future sector that is provided coverage by a given cell in carrier network102. Prior device location data232may also be stored in memory306and all or a portion of prior device location data232may be provided to user device204for purposes of determining a predicted QOS in a future sector that is provided coverage by a given cell in carrier network102. In one embodiment, prior device location data232and cell quality data234are made available through an Application Programming Interface (API) to the user device104.

In one embodiment, the user device204sends server314a cell identifier that identifies the cell that is currently providing cellular service to the user device. User device204may also send the server314an N−1 cell identifier and an N−2 cell identifier, where N is the current cell, N−1 is the previous cell to provide cellular service, and N−2 is the cell prior to N−1 that provided cellular service to user device204. Server314may respond with providing to the user device204all the neighboring cells and their neighbors along with the cell quality data234of each of the neighboring cells and/or the neighbors of the neighboring cells.

FIG. 4is a block diagram showing various components of an example server(s)414within a carrier network102configured to adjust a buffer allocation based at least in part on a predicted quality of service of a predicted future sector that the user device will encounter. As previously described,FIG. 4shows a server-side embodiment where the buffer allocation of streaming buffer445is dynamically adjusted based on operations and/or analysis performed in large part by server(s)414in carrier network102. This may save battery life of user device104/204and/or be a more efficient use of network resources. For example, the size of the streaming buffer445could be transmitted to user device104/204over the carrier network and the user device204could manage the stream of media content based on the size of the streaming buffer445calculated by server(s)414.

InFIG. 4, server(s)414may include communication interface302, one or more processors304, memory406, and hardware308. The memory406may be implemented using computer-readable media, such as computer storage media. Computer-readable media includes, at least, two types of computer-readable media, namely computer storage media and communications media. Computer storage media includes volatile and non-volatile, removable and non-removable media implemented in any method or technology for storage of information such as computer-readable instructions, data structures, program modules, or other data. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD), high-definition multimedia/data storage disks, or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other non-transmission medium that can be used to store information for access by a computing device. In contrast, communication media may embody computer-readable instructions, data structures, program modules, or other data in a modulated data signal, such as a carrier wave, or other transmission mechanism. In various embodiments, the processors304and the memory406of the server(s)414may execute policy engine314, gateway318, as well as other components of the core network106. Server(s)414may have access to media servers199to provide streaming content to user devices104/204.

Memory410includes server buffer allocation manager430. In the illustrated embodiment, server buffer allocation manager430includes prior device location data432, instant device location data431, sector prediction engine433, cell quality data434, a QOS Prediction Engine435, Existing QOS data437, threshold data438, buffer adjustment engine436, and streaming buffer445. InFIG. 4, the calculation of the streaming buffer is performed by the server(s)414.

Prior device location data432may include locations of the user device104/204and the times that the user device was at the locations. Server buffer allocation manager430may receive locations and/or corresponding time stamps from the user devices. The locations may be derived from GPS sensors or compasses of sensors204of the user device204. Prior device location data432may include hundreds or thousands of prior device locations with corresponding times. In an embodiment, the prior device location data432includes at least a first pairing and a second pairing, where the first pairing including a first location and a first time that a device was at the first location and the second pairing including a second location and second time that the device was at the second location.

Instant device location data431may include the instant location (and time) of a user device, such as user device204. Server Buffer Allocation Manager430may have to request the instant device location data431from user device204prior to calculating a size of streaming buffer445. The instant location of the user device may be derived from a GPS sensor of the user device204or a Wi-Fi signal that is received by the user device that can be mapped to a location, for example.

Sector prediction engine433is coupled to receive prior device location data432and instant device location data431and provide predicted sector data to QOS prediction engine435based at least in part on the prior device location data432and the instant device location data431. QOS prediction engine435receives the sector prediction data from sector prediction engine433, in the illustrated embodiment. Using the sector prediction data, the QOS prediction engine435may query cell quality data434to receive a quality of service metric data for a “cell” that provides wireless coverage to the future sector predicted by the sector prediction engine433. Based on the sector prediction data and the quality of service metric, QOS prediction engine435may determine a predicted quality of service of wireless communications from wireless carrier network102in the future sector and pass the predicted quality of service to buffer adjustment engine436.

InFIG. 4, buffer adjustment engine436receives existing QOS data437, threshold level of service quality438, and the predicted quality of service from sector prediction engine433. The existing QOS data437may be determined by receiving QOS data from user device204as measured by wireless radio212.

In one embodiment, buffer adjustment engine436adjusts the streaming buffer445based at least in part on the predicted quality of service of the wireless communication from the wireless carrier network in the future sector. When the streaming buffer445is adjusted, the size of streaming buffer445may be communicated to user device104/204.

In one embodiment, the buffer adjustment engine436increases streaming buffer445by an additional buffer allocation when the predicted quality of service of the wireless communication from the wireless carrier network in the future sector is below the threshold level of service quality438and the existing QOS from the wireless carrier network is above the threshold level of service quality438.

FIG. 5illustrates example buffer allocations as they relate to predicted data interruptions from a carrier network. A standard buffer allocation581of streaming buffer580may be 40 megabytes in a streaming video context, for example. The illustrated buffer allocations and streaming buffer580ofFIG. 5may be applicable to buffer allocations175,177,179and streaming buffers245and445. While a predicted quality of service in a predicted future sector is satisfactory (e.g., above a given threshold), the standard buffer allocation581is assigned to streaming buffer580inFIG. 5. It is understood by those skilled in the art that the “standard” buffer allocations may differ depending on the category of media being streamed. For example, the standard buffer allocation may be larger for video streaming than it would be for audio streaming.

If a short-term interruption is predicted (based on QOS service of predicted future sector or predicted future sectors), the buffer allocation of streaming buffer580may be increased to a short-term interruption allocation size582. If a mid-term interruption is predicted (based on QOS service of predicted future sector or predicted future sectors), the buffer allocation of streaming buffer580may be increased to a mid-term interruption allocation size583. Similarly, if a long-term interruption is predicted (based on QOS service of predicted future sector or predicted future sectors), the buffer allocation of streaming buffer580may be increased to a long-term interruption allocation size584. Finally, if a total absence of coverage is predicted, (based on QOS service of predicted future sector or predicted future sectors), the buffer allocation of streaming buffer580may be increased to an offline allocation size585.

FIG. 7is a flow diagram of an example process700for adjusting a buffer allocation based at least in part on a predicted quality of service of a predicted future sector that the user device will encounter. Process700is illustrated as a collection of blocks in a logical flow chart, which represents a sequence of operations that can be implemented in hardware, software, or a combination thereof. In the context of software, the blocks represent computer-executable instructions that, when executed by one or more processors, perform the recited operations. Generally, computer-executable instructions may include routines, programs, objects, components, data structures, and the like that perform particular functions or implement particular abstract data types. The order in which the operations are described is not intended to be construed as a limitation, and any number of the described blocks can be combined in any order and/or in mirror to implement the process.

In block702, prior device location data (e.g.,232or432) is accessed. The prior device location data may include locations and times that the device was at the locations.

In block704, a future sector that the device will travel through is predicted based at least in part on the prior device location data.

In block706, a predicted quality of service of wireless communications from a wireless carrier network in the future sector is determined.

In block708, a streaming buffer of the streaming content is increased by an additional buffer allocation when the predicted quality of service of the wireless communication from the wireless carrier network in the future sector is below a threshold level of service quality and an existing quality of service from the wireless carrier network is at or above the threshold level.

In one embodiment, when the predicted quality of service of the wireless communication in the future sector is below the threshold level of service quality and the existing quality of service is above the threshold, process700may further include buffering additional streaming data of the streaming content into the additional buffer allocation and wirelessly streaming the additional streaming data from a wireless carrier network to the device before the device enters the future sector. The additional streaming data may be accessed from media servers199by carrier network102, for example.

In one embodiment, process700includes accessing a cell quality data set (e.g.,234) where the cell quality data set includes quality of service metric data for cells in the wireless carrier network, predicting a wireless interruption time from the wireless carrier network based at least in part on the cell quality data set, and adjusting the additional buffer allocation based on the predicted wireless interruption time.

In one embodiment, process700includes measuring, with the device, KPIs of cells in the wireless carrier network that communicated with the device and populating a cell quality data set (e.g.,232) with the KPIs. Hence, in one embodiment, the cell quality data set may be generated by the device itself. In another embodiment, the cell quality data set is received (at least in part) from a server within carrier network102. The cell quality data set may include KPIs of particular cells in the wireless carrier network, measurement times of the KPIs, and a cell identifier that identifies the cell for which the KPIs was measured. Determining the predicted quality of service of the future sector may include querying the cell quality data set for the KPIs associated with the cells in the wireless carrier network that has wireless coverage in the future sector.

In one embodiment, determining the predicted quality of service of the future sector further includes querying, by the device, a cell quality data set stored on the device and requesting augmented cell data from the wireless carrier network when omitted cells of the wireless carrier network that cover the future sector are omitted from the cell quality data set stored on the device. Omitted cells may be cells that the user device has not logged KPIs for or does not have KPIs for the omitted cells stored locally on the user device. Process700may further include receiving augmented cell data from the wireless carrier network where the augmented cell data includes KPIs of the omitted cells. Process700may further include augmenting the cell quality data set with augmented cell data.

As described above, the buffer allocation of a streaming buffer may be increased in order to prevent a streaming disruption when a future sector is predicted to have problematic wireless coverage. Additionally, the buffer allocation may subsequently be decreased when a future sector is predicted to have satisfactory wireless coverage as utilizing oversized streaming buffers when coverage is satisfactory is inefficient when a user is changing the streaming content (e.g., skipping a song in audio media or fast-forwarding video media). In one embodiment, process700further includes receiving additional device location data that includes at least a subsequent location and a subsequent time that the device was at the subsequent location where the subsequent time is subsequent to the times of the prior device location data. A second predicted quality of service is predicted in a second future sector subsequent to determining the predicted quality of service in the future sector and the streaming buffer of the streaming content is decreased by a second buffer allocation when the second predicted quality of service in the second future sector is above a second threshold level of service quality.

In one embodiment, determining the predicted quality of service of wireless communication from the wireless carrier network in the future sector includes sending a query to a cell quality data set and receiving a query response from the cell quality data set. Time-of-day data may be included in the query. The cell quality data set may include quality of service metric data for cells in the wireless carrier network. The query response may include the quality of service metric data for a cell in the future sector and the quality of service metric data for the cell is specific to historical time-of-day quality of service for the cell. In this way, the prediction of the QOS of wireless communication in a future sector can be specific to a time of day. For example, during rush hour traffic, the quality of service along a highway may be poor because of network congestion, whereas during midday, the QOS is satisfactory.

In one embodiment, the prior device location data includes at least a first pairing and a second pairing where the first pairing includes a first location and a first time that the device was at the first location and the second pairing includes a second location and a second time that the device was at the second location. In one embodiment, the streaming content includes at least one of video content or audio content.

In one embodiment, a mobile device includes a cellular data communication interface, processing logic, and a memory. The cellular data communication interface may include an antenna to facilitate cellular communication with a wireless carrier network. The processing logic may be coupled to the cellular data communication interface and the memory may be coupled to the processing logic. The term “processing logic” in this disclosure may include one or more processors, microprocessors, multi-core processors, and/or Field Programmable Gate Arrays (FPGAs) to execute operations disclosed herein. In some embodiments, memories (not illustrated) are integrated into the processing logic to store instructions to execute operations and/or store data. Processing logic may include analog or digital circuitry to perform the operations disclosed herein. A memory” or “memories” described in this disclosure may include volatile or non-volatile memory architectures.

The memory of the mobile device may include instructions that, when executed, cause the mobile device to perform operations including accessing prior device location data that includes locations of the mobile device and times that the mobile device was at the locations. Further operations may include predicting a future sector that the mobile device will travel through based at least in part on the prior device location data, determining a predicted quality of service of wireless communications from the wireless carrier network in the future sector, and measuring with the mobile device an existing quality of service from the wireless carrier network. locations of the mobile device and times that the mobile device was at the locations. The streaming buffer of the mobile device may be increased by an additional buffer allocation when the predicted quality of service of the wireless communication from the wireless carrier network in the future sector is below a threshold level of service quality and the existing quality of service from the wireless carrier network is at or above the threshold level.

In one embodiment, the memory of the mobile device further includes instructions that when executed by the mobile device include accessing a cell quality data stored in the memory, predicting a wireless interruption time, and transmitting a buffer adjustment request to the wireless carrier network based on the predicted wireless interruption time. The cell quality data set may include quality of service metric data for cells in the wireless carrier network. The wireless interruption time may be predicted based at least in part on the cell quality data set.

In one embodiment, when the predicted quality of service of the wireless communication in the future sector is below the threshold level of service quality and the existing quality of service is above the threshold level, the memory of the mobile device includes further instruction that, when executed, cause the mobile device to perform further operations including receiving addition streaming data of streaming content into the additional buffer allocation of the streaming buffer. The additional streaming data may be received from the wireless carrier network (e.g., network102). Therefore, once the streaming buffer allocation is increased, the additional buffer allocation may be filled with additional streaming data from a wireless carrier network that has access to the streaming media.

In one embodiment, increasing the streaming buffer of the streaming content includes transmitting a buffer increase request to the wireless carrier network.

As described with respect toFIG. 4, one or more computing devices on a wireless carrier network may perform a significant amount of processing in some embodiments. In one embodiment, one or more computing devices of the wireless carrier network includes one or more processors and memory having stored instructions that when executed by the one or more processors, cause the one or more processors to perform operations including: accessing prior device location data that includes locations of a device and times the device was at the locations; predicting a future sector that the device will travel through based at least in part on the prior device location data; determining a predicted quality of service of wireless communications from the wireless carrier network in the future sector; receiving, from the device, an existing quality of service from the wireless carrier network; and adjusting a streaming buffer of streaming content based at least in part on the predicted quality of service of the wireless communication from the wireless carrier network in the future sector.

In one embodiment, adjusting the streaming buffer of the streaming content includes increasing the streaming buffer of the mobile device by an additional buffer allocation when the predicted quality of service of the wireless communication from the wireless carrier network in the future sector is below a threshold level of service quality and the existing quality of service from the wireless carrier network is above the threshold level.

In one embodiment, adjusting the streaming buffer of the streaming content includes decreasing the streaming buffer of the streaming content by a buffer allocation when the predicted quality of service in the future sector is above the existing quality of service.

In one embodiment, the prior device location data is sent to the one or more computing devices by the device and the prior device location data includes a first prior cell identifier representing a first prior cell that provided the wireless communication to the device at a first time and a second prior cell identifier representing a second prior cell that provided the wireless communication to the device at a second time prior to the first time.

In one embodiment, determining the predicted quality of service of the wireless communications from the wireless carrier network further includes: receiving, from the device, an existing cell identifier representative of the existing cell that provides the existing quality of service to the device; accessing key performance indicators (KPIs) of neighbor cells of the wireless carrier network that are neighbors to the existing cell, wherein the neighbor cells provide wireless data coverage in the future sector; and generating the predicted quality of service based at least in part on the KPIs of the neighbor cells.