Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
A METHOD, DEVICE AND SYSTEM FOR STREAMING MEDIA DATA
Document Type and Number:
WIPO Patent Application WO/2019/016561
Kind Code:
A1
Abstract:
The present invention provides a method for implementing a memory module configured for managing a data stream obtained from a source of media content on a media player, including: providing a memory module for use with the media player to stream data segments of the media content, the media player comprising a data buffer, said memory module being coupled with the data buffer of the media player for operation; receiving by the media player a first set of data segments from the media content, said first set of data segments being stored in the data buffer, the media player further configured to stream the first set of data segments; receiving, by the media player, a second set of data segments, wherein the memory module further comprises a first region of memory storage of a computer readable medium, said second set of data segments from the media content being stored in the first region of memory storage; wherein the second set of data segments received by the media player are associated with a time range subsequent to a time range of the first set of data segments; the method further including: determining by the media player if the first set of data segments fails to satisfy data criteria, and if so streaming the second set of data segments from the first region of memory storage for rendering on the media player.

Inventors:
DO MANH HUNG PETER (CA)
Application Number:
PCT/GB2018/052052
Publication Date:
January 24, 2019
Filing Date:
July 20, 2018
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
PINNEY MATTHEW (GB)
FALCON MEDIA HOUSE (GB)
International Classes:
H04L29/06; H04L29/08; H04N21/2343; H04N21/24; H04N21/414; H04N21/433; H04N21/45; H04N21/643; H04N21/845
Domestic Patent References:
WO2008073358A22008-06-19
Foreign References:
US20150281303A12015-10-01
US20160080097A12016-03-17
US9326046B12016-04-26
Attorney, Agent or Firm:
MARKS & CLERK LLP (GB)
Download PDF:
Claims:
CLAIMS:

1 . A method for implementing a memory module (100) configured for managing a data stream obtained from a source of media content on a media player (101 ), including the steps of:

providing a memory module (100) for use with the media player (101 ) to stream data segments of the media content, the media player (101 ) comprising a data buffer (102), said memory module (100) being coupled with the data buffer (102) of the media player for operation;

receiving by the media player (101 ) a first set of data segments (DS1 ) from the media content, said first set of data segments (DS1 ) being stored in the data buffer(102), the media player further configured to stream the first set of data segments (DS1 );

receiving, by the media player (101 ), a second set of data segments (DS2) , wherein the memory module (100) further comprises a first region of memory storage of a computer readable medium, said second set of data segments (DS2) from the media content being stored in the first region of memory storage;

wherein the second set of data segments (DS2) received by the media player (101 ) are associated with a time range (T2) subsequent to a time range (T1 ) of the first set of data segments (DS1 ); the method further including:

determining, by the media player (101 ), if the first set of data segments (DS1 ) fails to satisfy a data criteria, and if so streaming the second set of data segments (DS2) from the first region of memory storage for rendering on the media player. 2. The method of claim 1 wherein the data criteria is that a size of first set of data segments (DS1 ) exceeds a threshold.

3. The method of claim 1 wherein the data criteria is that a receiving rate of the first set of data segments (DS1 ) exceeds a threshold.

4. The method of any one of claims 1 to 3 wherein a size of the data buffer (102) is fixed, and wherein a size of the memory module (100) is adjusted dynamically depending on the content of the media content.

5. The method of any one of claims 1 to 4 wherein the second set of data segments DS2 may consist of data segments with a lowest bit rate of an adaptive bit rate system, and wherein the first set of data segments DS1 may consist of data segments with a bit rate greater than or equal to the lowest bit rate of the adaptive bit rate system.

6. The method of any one of claims 1 to 5 wherein:

the memory module (100) further includes a second region of memory storage of a computer readable medium configured to store a third set of data segments (DS3) from the media content, wherein the third set of data segments (DS3) are associated with a time range (T3) preceding the time range (T1 ) of the first set of data segments (DS1 );

wherein, the third set of data segments (DS3) are streamed to the media player (101 ) before the first set of data segments (DS1 ). 7. The method of claim 6 wherein a bit rate of data segments in the third set of data segments (DS3) is greater than a bit rate of the data segments in the second set of data segments (DS2), and greater than or equal to the bit rate of the data segments in the first set of data segments (DS1 ). 8. A computer-implemented memory module (100) configured for managing a data stream obtained from a source of media content on a media player, the memory module implemented by the method as claimed in any one of the preceding claims 1 -7.

9. A method of streaming media on a client device (201 ) connected in a network (200), the client device (201 ) comprising a media player (101 ) including a data buffer 102 and one or more processing units, a transceiver unit (301 ), an I/O interface (302), a network monitoring unit (303), an information collection unit (304), and the memory module

(100) of claim 6, the method comprising:

initiating, by the media player (101 ), a media streaming session to stream the media content;

providing, by the one or more processing units, data segments for rendering media content by the media player (101 ) for display on the I/O interface (302), wherein the data segments may comprise of data segments from the first set of data segments

(DS1 ) or the second set of data segments (DS2) .

10. The method of claim 9 further comprising:

receiving, by the transceiver unit (301 ), network forecast information from a server (207);

based on the network forecast information, determining, by the one or more processing units a size and a time range of the second set of data segments (DS2) to request by the media player (101 );

1 1 . The method of claim 10 further comprising:

based on the network forecast information, determining, by the one or more processing units, a location of a forecasted network event; and

depending on a relative distance between the location of the forecasted network event and the location of the client device (201 ), requesting, by the media player (101 ), the second set of data segments (DS2). 12. The method of claim 10 or 1 1 , wherein the network forecast information comprises of information associated with forecasts of network events, forecasts of user interactions, forecasts of the movement of the client device, locations of forecasted areas of weak wireless signals, forecasts of network congestion along a client route or locations of wireless dead-zones.

13. The method of any one of claims 9 to 12 further comprising:

determining, by one or more processing units, if the second set of data segments (DS2) has been stored in the storage module (100); and, if the second set of segments have not been stored,

requesting, by the media player (101 ), the first set of data segments (DS1 ) at a receiving rate that is lower than the highest available receiving rate.

14. The method of any one of claims 9 to 13 further comprising:

prior to initialising the media streaming session by the media player (101 ), requesting by the media player (101 ) the third set of data segments (DS3) from the first media source (205) in the network (200);

receiving and storing, by the transceiver unit (301 ), the third set of data segments (DS3) in the memory module (100); and following initialisation of the media streaming session by the media player (101 ), streaming, by the media player (101 ), the third set of data segments (DS3) before streaming the first set of data segments (DS1 ). 15. The method of any one of claims 9 to 14 further comprising:

determining, by the network monitoring unit (303), a data connection status; determining, by the one or more processing units, the size of the first set of data segments (DS1 ); and

based on the above determinations, setting, by the one or more processors, the receiving rate of the first set of data segments (DS1 ) to request to be lower than previously requested.

16. The method of any one of claims 9 to 15 further comprising:

determining, by the one or more processing units, the size of the first set of data segments (DS1 ); and if the size of the first set of data segments (DS1 ) fails to satisfy the data criteria:

collecting, by the information collection unit, system information; and

transmitting, by the transceiver unit, the system information to the server (207), wherein the system information comprises network information.

17. The method of any one of claims 9 to 16 further comprising:

periodically collecting, by the information collection unit (304), system information; and

transmitting, by the transceiver unit (301 ), the system information to the server (207),

wherein the system information comprises network information.

18. The method of claim 16 or claim 17 wherein the system information may further comprise of client information, media consumption information, wireless dead-zone information, historical use information or journey route information.

19. The method of any one of claims 9 to 18 further comprising of:

determining, by the network monitoring unit (303), a wireless signal strength; if the size of the first set of data segments fails to satisfy the data criteria, and the wireless signal strength fails to satisfy a network criteria then rerouting, by the transceiver unit (301 ), to the first media source.

20. The method of claims 17 to 19, wherein the network information further comprises rerouting information, the method further comprising of:

based on the network forecast information, rerouting, by the transceiver unit

(301 ), to a first media source (205).

21 . The method of any one of claims 9 to 20 further comprising:

monitoring, by the network monitoring unit (303), a wireless signal strength; monitoring, by the network monitoring unit (303), a wireless base station ID; identifying, by the network monitoring unit (303), a wireless dead-zone by identifying a time period during which the wireless signal strength fails to satisfy the network criteria;

determining, by the network monitoring unit (303), a location of the wireless dead-zone;

based on the wireless signal strength before, during and after the time period and the wireless base station ID before, during and after the time period, identifying, by the network monitoring unit (303), the type of wireless signal dead zone; and

reporting, by the transceiver unit (301 ), a wireless dead-zone information to the server (207), the wireless dead-zone information including the location of the wireless dead-zone or the type of the wireless dead-zone.

22. The method of claim 21 further comprising:

calculating, by the network monitoring unit (303), the size of the wireless signal dead-zone using the time period and a speed at which the client device (201 ) is moving, the wireless dead-zone information further comprising the size of the wireless signal dead-zone.

23. The method of any one of claims 9 to 22 further comprising

monitoring, by the network monitoring unit (303), a frequency of Wi-Fi signals in range of the client device (201 );

monitoring, by the network monitoring unit (303), a signal strength of the Wi-Fi signals in range of the client device (201 ); connecting, by the client device, to the highest frequency Wi-Fi signal if the signal strength satisfies the network criteria and if the client device (201 ) has been previously authorised to connect to the Wi-Fi signal;

connecting, by the client device, to the lower frequency signal if the signal strength of the higher frequency signal drops below a predetermined threshold.

24. The method of any one of claims 9 to 23 further comprising:

determining, by the network monitoring unit (303), an available bandwidth on the network (200);

if the available bandwidth fails to satisfy the network criteria, setting, by the one or more processors, the size of the second set of data segments (DS2) to request to be zero.

25. The method of any one of claim 9 to 24 wherein the second media source (206) may be the same as the first media source (205) or wherein the second media source

(206) may be different to the first media source (205).

26. The method of any one of claims 9 to 24 wherein the second data source (206) may comprise of multiple data sources.

27. The method of any one of claims 9 to 26 further comprising:

if the size of the first set of data segments (DS1 ) fails to satisfy the data criteria, determining, by the network monitoring unit (303), a status of the network (200), comprising:

sending, by the transceiver unit (301 ), a first message to the first media source

(205);

repeating, by the transceiver unit (301 ), the sending of the first command until a response is received or the number of times the first command has been sent exceeds a predetermined number;

if a response is received, identifying, by the network monitoring unit (303), a status of the network (200);

if no response is received and the first message has been sent a predefined number of times, sending, by the transceiver unit (301 ), a second message to the first media source (205); and transmitting, by the transceiver unit (301 ), the status of a network (200) to the server (207).

28. The method of any one of claims 9 to 27 further comprising

determining, by the one or more processors, if the first set of data segments

(DS1 ) comprises of small motion video data;

based on the above determination, setting, by the one or more processors, the receiving rate of the first set of data segments (DS1 ) to request to be lower than previously requested.

29. A client device (201 ) including all structural components including a media player (101 ) including one or more processing units, a data buffer, a transceiver unit (301 ), an I/O interface (302), an information collection unit (304), a network monitoring unit (303) and the memory module (100)) configured to implement the method of any one of claims 9 to 28.

30. A method of assessing media streaming conditions on a server (207), the server comprising one or more processing units (401 ), and a transceiver unit (402), the method comprising:

receiving, by the transceiver unit (402), first network information from the client device (201 ) of claim 29 connected in a network (200);

receiving, by the transceiver unit (402), second network information from multiple other devices (208, 209) connected in the network (200);

determining, by the one or more processing units (401 ) based on the first and second network information, network forecast information; and

transmitting, by the transceiver unit (402), the network forecast information to the client device (201 ) or other devices (208, 209) connected in the network.

31 . The method of claim 30, further comprising:

determining, by the one or more processing units (401 ) based on the first network information, a daily route of the client device (201 );

determining, by the one or more processing units (401 ) based on the first network information, a daily consumption of media content by the client device (201 ); determining, by the one or more processing units (401 ) based on the first and second network information, the network forecast information, wherein the network forecast information comprises of a forecast of network congestions on the route; and sending, by the transceiver unit (402), network forecast information to the client device (201 ).

32. The method of claim 31 , further comprising:

based on the first and second network information, determining, by the one or more processing units (401 ) a suggested rerouting information;

sending, by the transceiver unit (402), the network forecast information to the client device (201 ), wherein the rerouting information is comprised in the network forecast information.

33. A server (207) configured to implement the method of claims 30 to 32.

34. A system for assessing and responding to media streaming conditions in a network, comprising:

the client device (201 ) of claim 29;

the server (207) of claim 33;

wherein the client device (201 ) sends network information to the server (207), and wherein the server (207) receives network information from the client device (201 ) and other devices in the network (208, 209),

wherein the client device (201 ) receives network forecast information from the server (207).

Description:
A METHOD, DEVICE AND SYSTEM FOR STREAMING MEDIA DATA

1 . Field

The present disclosure relates to the provision of a computer-implemented memory module for use with a media player and a server, and associated methods and systems for improving streaming of media content from a streaming source node to a destination node over a communication network

2. Background

Methods of preloading or storing data into a reserved area of memory referred to as the buffer are known in this field. In multimedia streaming across the open Internet, buffering refers to receiving and storing a certain amount of data before media playback can begin. Having an advance supply of data in the buffer at all times prevents disruption if there are momentary delays in transmission while the media content is playing. Even a live broadcast would have a few seconds of delay built in to ensure smooth playback.

Streaming over a managed Quality of Service (QoS) network that has dedicated bandwidth to keep up with playback doesn't require buffering. However, this is not the case over the open Internet where packets can traverse various routers from source to destination, and variable delays can appear at any juncture. This may be in view of data congestion on a transmission path or lack of network resources available at certain areas or periods in the network. When a playback or rendering of a multimedia stream is stalled, in view of there being insufficient data that is ready to be rendered, this negative effect is also commonly known as buffering, or entering a buffering mode. Accordingly, there exists a need to provide techniques for improving media streaming conditions and reducing, even avoiding, the problems in media playback caused by buffering over the open Internet, i.e. over-the-top content (OTT) streaming in networks to ensure seamless playback of media data at a receiver, irrespective of known or unknown conditions of the network.

3. Summary of the invention

In one aspect, the present invention provides a method for implementing a memory module configured for managing a data stream obtained from a source of media content on a media player, including the steps of: providing a memory module for use with the media player to stream data segments of the media content, the media player comprising a data buffer, said memory module being coupled with the data buffer of the media player for operation; receiving by the media player a first set of data segments from the media content, said first set of data segments being stored in the data buffer, the media player further configured to stream the first set of data segments; receiving, by the media player, a second set of data segments, wherein the memory module further comprises a first region of memory storage of a computer readable medium, said second set of data segments from the media content being stored in the first region of memory storage; wherein the second set of data segments received by the media player are associated with a time range subsequent to a time range of the first set of data segments; the method further including: determining, by the media player, if the first set of data segments fails to satisfy a data criteria, and if so streaming the second set of data segments from the first region of memory storage for rendering on the media player. Another aspect comprises a computer-implemented memory module configured for managing a data stream obtained from a source of media content on a media player, the memory module implemented according to the foregoing method.

In a further aspect, the present invention provides a method of streaming media on a client device connected in a network, the client device comprising a media player including a data buffer and one or more processing units, a transceiver unit, an I/O interface, a network monitoring unit, an information collection unit, and the memory module, described above, the method comprising: initiating, by the media player, a media streaming session to stream the media content; providing, by the one or more processing units, data segments for rendering media content by the media player for display on the I/O interface, wherein the data segments may comprise of data segments from the first set of data segments or the second set of data segments Another aspect comprises a client device including all structural components including a media player including one or more processing units, a data buffer, a transceiver unit, an I/O interface, an information collection unit, a network monitoring unit and the memory module) configured to implement the foregoing method.

In another aspect, the present invention provides a method of assessing media streaming conditions on a server, the server comprising one or more processing units, and a transceiver unit, the method comprising: receiving, by the transceiver unit, first network information from the client device described above, connected in a network; receiving, by the transceiver unit, second network information from multiple other devices connected in the network; determining, by the one or more processing units based on the first and second network information, network forecast information; and transmitting, by the transceiver unit, the network forecast information to the client device or other devices connected in the network. Another aspect comprises a server configured to implement the foregoing method.

In another aspect, the present invention provides a system for assessing and responding to media streaming conditions in a network, comprising: the client device and the server, both described above; wherein the client device sends network information to the server, and wherein the server receives network information from the client device and other devices in the network, wherein the client device receives network forecast information from the server.

4. Brief description of the drawings

Figure 1 shows media data distribution in the open internet as common in the prior art. Figure 2 illustrates the embodiment of a computer-implemented memory module.

Figure 3a illustrates the second set of data segments stored in the memory module.

Figure 3b illustrates the second set of data segments stored in the memory module.

Figure 4 illustrates the third set of data segments stored in the memory module.

Figure 5 illustrates the client device connected in a network.

Figure 6 illustrates the client device.

Figure 7 is a flow diagram outlining the streaming of data according to the second embodiment.

Figure 8 illustrates a typical example of the implementation of the method of providing the static anti-buffering payload.

Figure 9 is a flow diagram outlining the streaming of data according to the second embodiment.

Figure 10 illustrates a typical example of the implementation of the method of providing the dynamic anti-buffering payload.

Figure 1 1 is a flow diagram outlining the streaming of data according to the second embodiment. Figure 12 illustrates an overview of mobile wireless signal strength.

Figure 13 is a flow diagram outlining the identification of wireless dead-zones according to the second embodiment.

Figure 14 is a flow diagram outlining process of connecting to Wi-Fi according to the second embodiment.

Figure 15 illustrates the server.

5. Detailed description of the embodiments

Data congestion issues may present themselves in three areas as identified by the inventors, as shown in Fig. 1 and described below.

Area 1 is the home local area network (LAN) or mobile network. Data congestion in this area is one of the most challenging areas to solve. In a Wi-Fi LAN, a first issue identified in this area is related to the obstacles in the surrounding environments. Buildings made of reinforcing steel bar walls or obstacles objects made of metallic materials are unfriendly to wireless signals and often induces random packet losses (which may result in packet retransmissions) and packet delays. A second issue identified in this area is the distance between the client device and the Wi-Fi router or Wi-Fi station. Larger distances increase latency and reduce transmission throughput. A third issue in this area is the nearby wireless signal noise/interference. Multi-tenant buildings are often facing this type of problem due to multiple access points competing on the same radio frequency and channel (2.4Ghz or 5.0Ghz band with limited frequency spectrum). If the spectrum is too crowded, it will lead to communication errors.

In a mobile network (2G, 3G, 4G), the surrounding environments, distance between the mobile device and the cell towers are all contributing factors that directly affect the bandwidth quality. However, mobile wireless technologies are operating on controlled frequencies and are facing lesser interferences. While mobile wireless technologies offer larger coverage comparing to Wi-Fi network, they are also bound to the same drawback of "distant vs. throughput" principle. Like any other wireless technology, mobile transmission inevitably encounters so-called "wireless dead-zones". This is referring to areas that have weak or no cell signals, quite often they are found in between two cell towers that have substantial signal gaps. As a result, the connection may drop or the signal may become weak when entering or leaving the "wireless dead zones". Mobile "wireless dead-zones" quite commonly exist in a city, inside elevators, underground tubes or building basements, etc. Area 2, as shown in Fig. 1 , may be a Tier 3 Multi-Home (Internet Service Provider) ISP network. This area may exhibit congestion behaviour which can impact bandwidth quality for both wired and wireless endpoints. The bandwidth throughput in this area is dependent on the limits of the underlying network infrastructure and the technology used. For example, Asymmetric Digital Subscriber Line (ADSL) technology has a distance limit of 5.5km from the exchange, exceeding this limit increases the wire resistance and reduces the overall connection throughput. The second aspect of this area is the network overall capacity and technology limitations. ADSL2+ can provide maximum 20Mb/s while Fibre can offer in the Gb/s range. When the ISP is oversubscribed in this area, multiple client devices will likely be competing for bandwidth, resulting in throughput reduction across all connected clients.

Area 3, as shown in Fig. 1 , may be a Tier 2 network consisting of broadband providers content distribution network providers. This area also impacts all wired and wireless devices on a wider scale. This area will include the issues described above in relation to Area 2. There are further congestion challenges in Area 3 due to large back and forth internet traffics. There is minimum control over traffic priority here. Transmission Control Protocol/Internet Protocol (TCP/IP) is currently the only reliable Internet traffic oriented protocol while others (like User Datagram Protocol (UDP), Internet Control Message Protocol (ICMP), etc.) are taking uncontrollable network resources. As a result, video streaming over the public network is known as best effort delivery.

Data congestion in all three areas above may contribute to data buffering during the streaming of media content. Embodiments of the present invention are established to take the above into consideration to develop methods and systems to address the drawbacks caused by them, i.e. buffering during playback of transmitted content via or at/to the affect areas. Other embodiments are established to learn and/or develop a streaming strategy based on the above data congestion considerations. Computer- implemented Memory module - First Embodiment

Fig. 2 illustrates an exemplary embodiment of a computer-implemented memory module 100 as provided by the present invention. The memory module 100 of the present embodiment is preferably implemented as a software-implemented buffer that is operative in combination with a media player 101 for the streaming of media content, and the software implemented memory module is arranged to operate in association with than standard drivers or computer hard drives.

The memory module 100 can be used for storing data in an order associated with the media content being streamed. The memory module is further preferably configured to operate in combination with an existing data buffer 102 that may be present in the media player 101 . The memory module 100 may be implemented in association with a driver for the memory module, and/or one or more executable instructions for initiating operation and for controlling the operation of the memory module 100 when used with the media player 101 and the suitable drivers. The driver and executable instructions may be present in an application for or associated with the media player 101 or a software application coupled with the media player 101 for controlling the operation of the memory module 100 in association with the media player 101 , so that the provision of data to and from the memory module 100 is controlled by one or more processors associated with the media player 101 to stream the media content. The media content may include video content or audio content which comprises of data segments.

Referring to Fig. 2, the memory module 100 comprises a region of memory storage of a computer readable medium. The region of memory storage may be comprised of volatile or non-volatile memory storage. In a preferred embodiment the memory module 100 is implemented to provide a non-volatile memory storage (buffer) of a hard-drive, such as a serial advanced technology attachment (SATA) drive or solid-state drive (SSD). These hard-drives have large storage capacity (sufficient to store the entire media content if required) and can retain data even if the hard-drive has to reboot.

The memory module 100 is configured for use with a media player 101 that comprises a data buffer 102. The memory module 100 may be implemented within the media player 101 or external to the media player 101 . It is to be appreciated that the region of memory in the memory module 100 and the data buffer 102 may be software or hardware implemented data structures for data storage.

The data buffer 102 existing in the media player 101 may be contained in volatile or non-volatile memory. In a preferred embodiment the data buffer 102 may be contained in volatile memory such as random access memory (RAM) of the media player 101 because RAM provides the fastest read/write performances and it does not wear out due to normal frequent read/write activities. The data buffer 102 is configured to store a first set of data segments DS1 of the media content. The media player 101 is configured to stream media content by streaming data segments from the first set of data segments DS1 stored in the data buffer 102.

The memory module 100 is configured to store a second set of data segments DS2 of the media content. As an example, referring to Fig. 3a, the first set of data segments DS1 may comprise of data segments a, b and c. These data segments may be associated with a first time range T1 of the media content that is intended for rendering or playback on the media player. The second set of data segments DS2 may comprise of data segments d, e, and f. These data segments may be associated with a second time range T2 of the media content. As shown in Fig. 3a, the second time range T2 may be subsequent to the first time range T1 for playback.

Alternatively, as illustrated in Fig. 3b the second set of data segments DS2 may be associated with a time range that overlaps the first time range T1 associated with the first set of data segments DS1 . The second set of data segments DS2 is associated with both the first time range T1 and the second time range T2. Therefore, the second set of data segments DS2 is associated with a time range which is subsequent to the first time range. The first set of data segments DS1 are streamed by the media player 101 . The first set of data segments DS1 must satisfy data criteria. The data criteria may include the size of the data, the size of data segments in the data, the number of data segments or the receiving rate of the data segments. For example, during streaming, the size of the first set of data segments DS1 should ideally be as close to the data buffer 102 size as possible in order to facilitate seamless streaming. However, in cases of data congestion, such as network congestion, the number of data segments in the first set of data segments may not be sufficient to facilitate streaming of media content. For example, if the number of data segments in the first set of data segments DS1 reduces by 50% then it can be understood that the receiving rate is "zero kbps".

The data criteria may require the size of the first set of data segments DS1 to exceed a defined threshold.

Alternatively, the data criteria may require the receiving rate of the first set of data segments DS1 to exceed a threshold.

If the first set of data segments DS1 fails to satisfy the data criteria, this indicates the data buffer 102 may not be capable of facilitating streaming of the media content, i.e. can lead to disrupted media playback if the media player 101 is reliant on the data buffer 102 alone.

According to the present disclosure, in this case, the second set of data segments DS2 contained in the memory module 100 are streamed to the media player 101 instead of the first set of data segments DS1 , so as to provide continuous streaming of the media content.

Therefore, in cases when the data available in the data buffer 102 of the media player 101 has reduced to an unacceptable level, instead of entering buffering mode and waiting for the data segments to be available for receiving, the media player 101 can continue to stream the media content by streaming the data in the memory module 100 until the data criteria is satisfied. This provides a seamless streaming of media content.

The size of the data buffer 102 of the media player is usually associated with a limited or pre-set size, which is usually but not always between 60MB to 120MB and may store about 120 seconds of video data.

The size of the computer implemented memory module 100 however is not limited and is configured to be dynamically adjusted based on the media content quality. For example, the memory module 100 and may be designed to store up to 20% of the entire media content to be rendered on a media player. The size of the second set of data segments DS2 typically corresponds to 200 seconds of media content. However, this data may not be limited to only 200 seconds. For instance, it is possible that the entire media or movie content could be downloaded to the memory module 100 based on network conditions, such as available bandwidth, download speed or receiving rate.

The media content may generally be downloaded at a low bit rate, to attempt to provide as much data as may be required to avoid buffering during playback, while not overloading the network and computing resources available for such playback.

The second set of data segments DS2 may contain media content that is of a lower bit rate than the media content contained in the first set of data segments DS1 . The first set of data segments DS1 may consist of data segments encoded with the highest possible bit rate achievable using adaptive bit rate systems. Adaptive bit rate streaming is a method of media streaming over HTTP where the media content is encoded at multiple bit rates. In the present disclosure, a client device is configured to be able to intelligently switch between streaming the different encodings depending on available resources. Instructions and processors are likely to be included in the media player 101 or client device to enable such switching, which may be based on one or more defined conditions in the client device.

For example, when starting, the client device requests the segments from the lowest bit rate stream. If the client device finds the download speed is greater than the bit rate of the segment downloaded, then it will request the next higher bit rate segments. Later, if the client device finds the download speed or receiving rate for a segment is lower than the bit rate for the segment, and therefore indicating that the network throughput has deteriorated, the client device will request a lower bit rate segment. The bit rates of the data segments in the second set of data segments DS2 are lower than the bit rates of the data segments in the first set of data segments DS1 . The second set of data segments DS2 may consist of data segments with the lowest bit rate of the adaptive bit rate system, typically encoded as 10% of the highest video bit rate size. However, the bit rates of the data segments in the second set of data segments DS2 are not limited to this. For example - consider a media content that is encoded in six different bit rates (250 kbps, 500kbps, 1 Mbps, 1 .5Mbps, 2.0Mbps, and 2.5Mbps). The second set of data segments DS2 may contain media content that is encoded at 250kbps. The first set of data segments DS1 may contain media content that is encoded at 500 kbps, 1 Mbps, 1 .5Mbps, 2.0 Mbps or 2.5Mbps depending on network conditions, such as available bandwidth, download speed and/or receiving rate of data segments.

While the time range of the data in the data buffer 102 may be overlapped with the data in the memory module 100, the bit rates of the data segments are almost never the same. Therefore, the data stored in the data buffer 102 is almost never the same as the data stored in the memory module 100. There is a rare case when the media streaming session first starts and the available bandwidth is lower than the lowest video bit rate. In such an instance, the data buffer 102 is the only buffer that has some data segments which may be at the lowest available bit rate (adaptive bit rate system described above) until the network throughput and available bandwidth improves.

The first and second sets of data segments DS1 , DS2 may be from the same media source or they may come from different media sources. The second set of data segments DS2 may originate from a multiple of sources. The media source may include a media server or another media player 101 .

In another aspect of the embodiment, the memory module 100 may be implemented to further comprise a second region of memory storage of a computer readable medium configured to store a third set of data segments DS3. The region of memory storage may be comprised of volatile or non-volatile memory storage. In a preferred embodiment the memory module 100 may be comprised of non-volatile memory storage of a hard-drive, such as a serial advanced technology attachment (SATA) drive or solid-state drive (SSD).

The third set of data segments DS3 may be stored in the memory module 100 before the start of the streaming session. Referring to Fig. 4, the first set of data segments DS1 may comprise of data segments a, b and c. These data segments may be associated with the first time range T1 of the first media content. The second set of data segments DS2 may comprise of data segments d, e, and f. These data segments may be associated with a second time range T2 of the first media content. The third set of data segments DS3 may comprise of data segments g and h. These data segments may be associated with a third time range T3 of the first media content. The third time range T3 associated with the third set of data segments DS3 precedes the first time range T1 and the second time range T2.

This third set of data segments DS3 may consist of pre-cached data segments relating to hot relevant media content, which is a usual reference in the field to content that is often and regularly accessed. The hot relevant content may be determined by an electronic program guide (EPG) server, which may suggest ten hot contents, ten "new movies" and ten "recommended movies" each month. Segments of these hot contents may be stored in advance. For example, there are usually 10-20 hot contents on any given service providers (3HLS chunks x 20 = 60 chunks, each chunks usually consist of (30 seconds x 60 chunks = 180 seconds) and are stored on the memory module 100.

Alternatively, the hot relevant content may be determined by the media player, a client device or a server, through learned information. For example, if the media player is almost finished streaming episode no.1 of a television series, it makes sense to start caching episode no.2 of the same television series before episode no. 1 is finished.

The size of the third set of data segments DS3 typically corresponds to 30 seconds of media content. However, this data is not limited to only 30 seconds. The bit rates of the data segments in the third set of data segments DS3 are with the highest possible bit rate.

On commencement of a media streaming session, the third set of data segments DS3 are streamed by the media player 101 , before the media player 101 begins streaming the first set of data segments DS1 . The benefits of this process include:

• Fast start: the media content may be playing within 0.5 seconds

• Highest quality initial playback

• Provides the media player 101 with time to prepare the relevant backend processes and also receive the second set of data segments DS2, to suppress the buffering effect. Client Device - Second Embodiment

A second embodiment of the present invention relates to a method of streaming media content on a client device 201 .

Fig. 5 illustrates the client device 201 connected in a network 200. The network 200 may be a local area network or a mobile network. The client device 201 may be connected to the network 200 via a first wireless station 203 or second wireless station 204. The first wireless station 203 and the second wireless station 204 may be mobile base stations or Wi-Fi routers. The network 200 may further comprise of a first media source 205 and a second media source 206 configured to send media content to the client device 201 during a media steaming session. The network 200 may also comprise of a server 207.

The client device 201 comprises a media player 101 including a data buffer 102 and one or more application and/or processing units configured to stream media content and the memory module 100, as previously described. As shown in Fig. 6, the client device 201 may further comprise a transceiver unit 301 , an I/O interface 302, a network monitoring unit 303, an information collection unit 304, additional processors associated with one or more of the previously mentioned units, and the memory module (100).

1 . The static delivery of "anti-buffering Payload"

A feature of the second embodiment is to provide a static delivery of data segments of a media content to be streamed to overcome the drawbacks of existing streaming systems and protocols. This is implemented by delivering data segments, referred to herein as "anti-buffering payload". This payload may comprise of the second set of data segments DS2, and is utilised to improve media streaming during incidents of disruption to data delivery. The operation is described below.

Referring to Fig. 7, the media player 101 of the client device 201 may initiate a media streaming session to stream a first media content (S101 ). The first media content may be supplied by a first media source 205 and may comprise of video content or audio content or a combination. In S102, the transceiver unit 301 of the client device 201 may receive the first set of data segments DS1 from the first media source 205 and store the first set of data segments DS1 in a data buffer 102 comprised in the media player 101 . The media player 101 of the client device 201 may also request a second set of data segments DS2 of the media content from a second media source 206 connected in the network 200 (S103). The transceiver unit 301 of the client device 201 may then receive the second set of data segments DS2 and store the second set of data segments DS2 in the memory module 100 of the client device 201 (S104).

The second media source 206 may be the same as or different to the first media source 205. The second media source 206 may comprise of a multiple of different media sources. As detailed previously, and illustrated in Fig. 2a and 2b, the second set of data segments DS2 is associated with a second time range T2 that is subsequent to the first time range T1 .

In S105, the first set of data segments DS1 are streamed by the media player 101 . The one or more processing units of the media player 101 may then determine whether the first set of data segments DS1 satisfies the data criteria. As detailed previously, the data criteria may require the size of the first set of data segments DS1 to exceed a threshold. Alternatively, the data criteria may require the receiving rate of the first set of data segments DS1 to exceed a threshold.

If the first set of data segments DS1 fails to satisfy the data criteria, then the data buffer 102 may not be capable of facilitating streaming of the media content. In this case, the second set of data segments DS2 contained in the memory module 100 are streamed to the media player 101 instead of the first set of data segments DS1 (S107), so as to provide continuous streaming of the media content.

Therefore, in cases when the data available in the data buffer 102 of the media player 101 has reduced to an unacceptable level, instead of entering buffering mode and awaiting for the data segments to be available for receiving, the media player 101 can continue to stream the media content by streaming the data in the memory module 100 until the data criteria is satisfied. This provides a seamless streaming of media content. Fig. 8 illustrates a typical example of the implementation of the method of providing the static anti-buffering payload. Consider a typical customer or user of a streaming service, where the user takes a 45 minute train ride to commute to work every day (Monday to Friday). While on the train, he usually watches an episode of his favourite TV series on a client device 201 with a media player 101 , such as a mobile phone. His train ride passes through three areas of weak signal and one "wireless deadzone" where no signal is available (see Fig. 1 ). The client device has received and stored the second set of data segments DS2. When the train passes through an area of weak signals, the data available in the data buffer 102 of the media player 101 may reduce to an unacceptable level. However, the second set of data segments DS2 may be associated with a time period subsequent to the time of the first set of data segments DS1 . In the case of passing through an area of weak signals, instead of entering buffering mode and waiting for the data segments to be available for receiving, the media player 101 can continue to stream the media content by streaming the second set of data segments DS2 in the memory module 100 until the train has passed through the area of weak signals. This maintains the smooth streaming of media content through these areas of weak signal of "wireless deadzones" even if the connection is momentarily interrupted.

In summary, the static delivery of "anti-buffering payload" delivery is a strategy that always sends data segments of anti-buffering data ahead of the data buffer 102. The streaming of video-on-demand (VOD) differs to the streaming of live media content. The available data for live media content is typically 30-120 seconds in duration, while, when streaming VOD content, the entire content is available. The embodiments disclosed herein may apply to the streaming of live media content as well as the streaming of VOD content. However, during streaming of live media content the size of the second set of data segments D2 that may be stored by the transceiver unit 301 in the client device 201 is bound by the size of the available data for the live media content, which, as mentioned above, is typically 30-120 seconds. Therefore, in live streaming, the second set of data segments DS2 data in the memory module 100 may not be larger than the data in the server cache. 2. The dynamic delivery of anti-buffering payload strategy

In a further aspect of the present embodiment, the client device 201 may also connect with a server 207 connected on the network 200 to provide dynamic delivery of "anti- buffering payload".

Referring to Fig. 9, the client device 201 may be configured to obtain network forecast information from the server 207 (S201 ). The network forecast information may comprise of information associated with forecasts of network events, forecasts of user interactions, forecasts of the movement of the client device 201 , locations of forecasted areas of weak wireless signals, forecasts of network congestion along a client route or locations of wireless dead-zones. Based on the network forecast information, one or more processors in the client device 201 are configured to analyse the received information and apply one or more computations, or apply one or more data models to determine a size and time range of the second set of data segments DS2 to request, so that the second set of data segments DS2 covers a time range wherein a loss of network data is predicted, based on the obtained information from the server 207. Then, as the client device 201 approaches the location of a forecasted network event, i.e. where the loss of network data is predicted by the server, the client device 201 may request the second set of data segments DS2. The delivery of the second set of data segments DS2 provides a dynamic "anti-buffering payload", as the size of the second set of data segments DS2 may be dynamically changed in response to the network forecast information. Thus, it ensures smooth playback of media through the locations of network events or congestions in a dynamic manner.

Fig. 10 illustrates a typical example of the implementation of the method of providing this anti-buffering payload.

A typical customer takes a 45 minute train ride to commute to work every day (Monday to Friday). While on the train, he usually watches an episode of his favourite television series on a client device 201 with a media player 101 , such as a mobile phone. His train ride passes through three areas of weak signal and one "wireless dead-zone" where no signal is available.

This network pattern, such as the size and location of the weak signal areas, and the daily movement profile of the client device 201 may be known to the server 207 or may be obtained by the server from one or more other sources. For example, the server may include a processing unit and a learning data model. The data model and processing unit may be communicatively coupled to one or more mapping servers or location-based service providers and content distribution networks, and may be arranged to obtain location specific information for one or more areas in a geographical location regarding, for examples, Area 1 , 2 and 3 in figure 1 . The server 207 can then be configured to provide the client device 201 with network forecast information pertaining to this network pattern. For example, the server 207 may determine that the customer, as part of his commute, travels the same route at approximately the same time each day. The server 207 may then predict what network problems and network events are likely to occur on the particular route and at the particular time of travel. The server 207 can then send this information to the client device 201 .

As the network monitoring unit 303 identifies that the train is approaching the identified areas of weak signal and the wireless dead-zone that are known to the server and thus communicated to the client device, the one or more additional processors of the client device 201 may calculate the estimated time of arrival to each of the areas of weak signal and the wireless dead-zones. The one or more additional processors of the client device 201 can then determine the size and time ranges of the second set of data segments DS2 to request from the second media source 206 to maintain smooth streaming through these areas even if the connection is momentarily interrupted. It may be determined by the one or more processors that the media player 101 incorporated in the client device 201 is streaming episode 1 of a television series. If it is predicted that there is a wireless dead-zone associated with a time range that occurs after episode 1 will finish streaming, but during which time range the client device may be streaming episode 2, then the second set of data segments DS2 requested may contain media content related to episode 2. In summary, the dynamic delivery of "antibuffering payload" is a strategy that dynamically sends the required "anti-buffering data" that is sufficient to cover predicted upcoming network events.

3. Priority delivery of "anti-buffering payload"

This is a protocol implemented to ensure priority delivery of the antibuffering data, comprised of the second set of data segments DS2, ahead of the delivery of all other data segments.

In a healthy network, a native media player is in most cases programmed to rapidly acquire the highest bit rate data possible without considering the network conditions facing ahead. However, in a further embodiment of the present invention, the media player 101 is controlled and limited from acquiring the highest bit rate data available until the second set of data segments DS2 has been received and stored on the client device 201 .

For example, in adaptive bit rate streaming the media content is encoded at multiple bit rates and the client device 201 may switch between streaming the different encodings depending on available resources. For example - consider a media content that is encoded in six different bit rates (250 kbps, 500kbps, 1 Mbps, 1 .5Mbps, 2.0Mbps, and 2.5Mbps). In the present embodiment of the invention, the one or more processing units of the media player 101 is limited from acquiring the highest bit rate data available, for example 2.5Mbps, until the second set of data segments DS2 has been received and stored in the memory module 100 by the transceiver unit 301 .

Alternatively, the transceiver unit 301 of the client device 201 may be limited from acquiring bit rate data that fails to satisfy the data criteria. For example, the transceiver unit 301 may be prevented from receiving and storing in the data buffer 102 data segments with a bit rate exceeding 1 .5Mbps.

In summary, the storing by the transceiver unit 301 of the second set of data segments DS2 in the memory module 100 is given priority over the storing of the first set of data segments DS1 in the data buffer 102. Thus, the embodiment includes providing instructions for controlling one or more processors of the client device 201 to implement the prioritisation protocol for payload delivery. This may be achieved by limiting the receiving rate of the first set of data segments DS1 by the media player 101 until the second set of data segments DS2 has been stored in the memory module 100. 4. The "hot-content pre-cache" process

A further aspect of the present embodiment of the invention performs pre-caching of hot relevant media content and stores this media content on the client device 201 . The hot relevant content may be determined by an electronic program guide (EPG) server, which may suggest ten hot contents, ten "new movies" and ten "recommended movies" each month. Segments of these hot contents may be obtained by the transceiver unit 301 and then stored in the memory module 100 implemented in client device 201 , in advance of streaming.

Alternatively, the hot relevant content may be determined by the client device 201 through learned information. For example, if a user is almost finished streaming episode no.1 of a television series, then the client device 201 will start caching episode no.2 of the television series before episode no. 1 has finished.

The process is configured to execute by one or more processing units in the client device 201 at the beginning of the media player 101 initialization or when the media player 101 enters in standby. Referring to Fig. 1 1 , at a time before initiating the media streaming session, the transceiver unit 301 of the client device 201 may receive a third set of data segments DS3 of the media content from a first media source 205 connected in the network 200. This third set of data segments DS3 may consist of data segments of hot relevant media content. In S301 , the client device 201 is arranged to store the third set of data segments DS3 in the memory module 100 of the client device 201 .

As an example, the size of the third set of data segments DS3 typically corresponds to 30 seconds of the media content. However, the third set of data segments DS3 may correspond to other times of the media content.

The bit rates of the data segments in the third set of data segments DS3 are of the highest possible bit rate achievable using adaptive bit rate systems. In adaptive bit rate streaming the media content is encoded at multiple bit rates. For example - consider a media content that is encoded in six different bit rates (250 kbps, 500kbps, 1 Mbps, 1 .5Mbps, 2.0Mbps, and 2.5Mbps). The bit rates of the data segments in the third set of data segments DS3 will be of the highest possible, which in this example may be 2.5Mbps.

The bit rates of the data segments in the third set of data segments DS3 will be of the highest possible bit rate possible, while the bit rates of the data segments in the second set of data segments DS2 will be of the lowest possible bit rate possible. Therefore, the bit rate of the data segments in the third set of data segments (DS3) will be greater than a bit rate of the data segments in the second set of data segments (DS2). Furthermore, the bit rate of the data segments in the third set of data segments (DS3) will also be greater than or equal to the bit rate of the data segments in the first set of data segments (DS1 ). After initiating the media streaming session (S302), the third set of data segments DS3 are streamed by the media player 101 , before the media player 101 begins streaming the first set of data segments DS1 (S303).

The benefits of this process include:

· Fast start: the media content is playing within 0.5 seconds

• Highest quality initial playback

• Provides the media player 101 with time to prepare the relevant backend processes and also receive the "anti-buffering payload", comprised of the second set of data segments DS2, to suppress the buffering effect.

5. Dynamic bandwidth limiting process

The dynamic bandwidth limiting process according to the present embodiment controls and limits the data segment receiving rates to ensure that the client device 201 is not competing and consuming unnecessary bandwidth i.e. more than is required for streaming a particular content seamlessly. This protocol allows the streaming session to co-exist with other traffic while providing seamless content delivery. The dynamic bandwidth limiting process is a protocol that is in operation during the entire media streaming session but momentarily gets disabled during the priority delivery of "anti-buffering payload" process, described above. During the media streaming session, the receiving rate of the first set of data segments DS1 is dynamically adjusted depending on the type of the connection to the network 200 and/or the status of the data buffer 102.

The status of the data buffer 102 may comprise of a data buffer 102 level, which may be defined as the ratio of the size of the first set of data segments DS1 to the size of the data buffer, expressed as a percentage.

As an example, for a client device 201 connected through Wi-Fi connections to a LAN network to stream video media content, the receiving rate of the first set of data segments DS1 may be limited as follows:

If the data buffer 102 level is between 1 - 10%, the receiving rate is restricted to 8 X (bit rate of the first set of data segments)

If the data buffer 102 level is between 1 1 % - 50%, the receiving rate is restricted to 6 X (bit rate of the first set of data segments)

· If the data buffer 102 level is 51 % - 80%, the receiving rate is restricted to 3 X

(bit rate of the first set of data segments)

If the data buffer 102 level is 80%+, the receiving rate is restricted to 1 X (bit rate of the first set of data segments) As an example, for a client device 201 connected through mobile data connections , such as a 3G or 4G connection to a mobile network to stream video media content, the receiving rate of the first set of data segments DS1 may be limited as follows:

If the data buffer 102 level is between 1 - 10% and the client device 201 is stationary, the receiving rates may be limited to 10 X (bit rate of the first set of data segments)

• If the data buffer 102 level is between 1 - 10% and the user is traveling, the receiving rate is restricted to 8 X (bit rate of the first set of data segments)

• If the data buffer 102 level is between 1 1 %- 50%, the receiving rate is restricted by a further 20% of the previous restriction. • If the data buffer 102 level is between 51 %- 80%, the receiving rate is restricted by a further 50% of the previous restriction.

• If the data buffer 102 level is between 80%+, the receiving rate is restricted by 80% of the bit rate of the first set of data segments.

Therefore, the network monitoring unit 303 of the client device 201 is configured to determine the data connection status, which may be mobile connection or LAN connection, and the data buffer 102 status, and limits the receiving rate of the first set of data segments DS1 accordingly. Therefore, based on the determination of the data connection status and the data buffer 102 status, the one or more processors may set the receiving rate of the first set of data segments (DS1 ) to request to be lower than previously requested. This process compensates for the bandwidth consumption associated with preloading the second set of data segments DS2 into the memory module 100.

6. Bandwidth saving compensation

In a further aspect of the present embodiment, a bandwidth saving compensation protocol is implemented to avoid consuming data segments with the highest video bit rates, if it is determined that the data segment contains small movements.

Video compression standards, such as H.264 or H.265, are capable of providing good video quality at substantially lower bit rates than previous standards, such as MPEG-2 or MPEG-4 ASP. These standards provide "lossy compression" in that they are programmed to discard information that is not noticeable by the human sight process, or information that can be "filled in" by the human brain. For example, during a media content with low motion, such as video frames detailing a small action scene, it is possible to play lower video bit rates without exposing quality flaws. On the contrary, during high motion scenes where each frame contains different pixels than the previous lower bit rates would expose flaws. Video compression standards, such as H.24 and H.265, can predict frames and areas of high motion in the media content based on previous frames of the media content. Based on this prediction, some information may be discarded so as to enable the use of lower video bit rates. Therefore, using this protocol allows bandwidth to be saved in order to compensate for the "anti-buffering payload delivery". The client device 201 , i.e. one or more processing units, are configured to determine if the first set of data segments DS1 comprises of small motion video data. If the first set of data segments DS1 comprises of small motion video data, then the bit rate of the first set of data segments DS1 requested is lower.

For example, consider an adaptive bit rate system which encodes a media content in six different bit rates (250 kbps, 500kbps, 1 Mbps, 1 .5Mbps, 2.0Mbps, and 2.5Mbps). The first set of data segments DS1 may contain media content that is encoded at 2.5Mbps during high motion scenes. However, if it is determined by the one or more processing units of the media player that the media content is associated with small motion scenes, then the first set of data segments DS1 received may be encoded at 2.0 Mbps or lower.

When comparing the bandwidth consumption of the client device 201 operating when incorporating the protocols referred herein in this embodiment, with native players, the inventors have established that a device according to the present embodiment consumes the same or less bandwidth without any buffering during rendering of the streamed media. This is due to the combinations of the dynamic bandwidth limiting process and the bandwidth saving compensation described above at least. 7. Wireless signal detection overview

This is a process implemented in the present embodiment that enables the client device 201 to continuously monitor the wireless signal strength and the data connection status (Wi-Fi or Mobile Data). The signal strength has a direct impact on the bandwidth quality and must be considered as an important factor to determine whether or not it should reroute to a new video source or to wait for a better signal.

As illustrated in Fig. 12, the further the client to the wireless station, the weaker the signal and poorer the bandwidth quality. This problem has nothing to do with network congestions but produces the same congestion results. In this case, any attempt to reroute would not provide an improvement as the problem would be in Area 1 (Fig. 1 ).

The media player 101 of the client device 201 is configured to determine if the data buffer 102 runs low by determining the size of the first set of data segments DS1 . It determines if the first set of data segments DS1 fails to satisfy the data criteria. The network monitoring unit 303 of the client device 201 is configured to monitor the status of the wireless signal. The network monitoring unit 303 may determine if the wireless signal fails to satisfy network criteria.

The network criteria are a set of criteria regarding the network 200 and may include the wireless signal strength of the wireless signal or a bandwidth available on the network.

If the first set of data segments DS1 fails to satisfy the data criteria, and the wireless signal strength fails to satisfy the network criteria then, the transceiver unit 301 and associated processors of the client device 201 reroutes to the first media source 205.

This is effectively a verification process before initiating re-routing, as rerouting only addresses network issues identified on Area 2 and Area 3 (Fig. 1 ). Therefore, if the issue resides on Area 1 , re-routing will have no effect.

8. Reporting

This is a process that initialises and runs in parallel to the media streaming session on the client device 201 according to the present embodiment.

This may be activated when the first set of data segments DS1 does not satisfy the data criteria. For example, when the data buffer 102 level cannot reach 80% within a specified time or drain below 10% threshold. The information collection unit 304 of the client device 201 is then configured to collect valuable system information and the transceiver unit 301 transmits the system information to the server 207 for further formulation of complex routing decisions. The system information may include network information. The network information may contain the following:

A. For mobile devices

• Net. Operator (such as Vodafone, AT&T, etc.)

• SIM operator (such as CMCC)

• Net. Strength (such as -12dBm * 28 ASU)

· Data State (connected/disconnected) • Data Activity (up/down data)

• Cell Tower (such as 45624321 {ECI-E-UTRAN Cell identifier}, 178200 {eNBI- eNodeB

• Identifier}, 9331 {TAC-Tracking Area Code}

• MNC: (such as 00{NMC-Mobile Network Code})

• MCC: (such as 460 {MCC-Mobile Country Code})

• Country Code: (such as CA = Canada)

• Roaming Status (OFF/ON)

• Phone Type (GSM)

• Device ID (such as 8600769392838273)

• Local IP: (such as 192.168.2.1 1 )

B. For WI-FI devices:

• SSID Name: (such as XXXXX)

• BSSID: (such as 88:34:94:6C:69:6E)

• MAC: (such as 98:E7:F6:15:D0:4A)

• WI-FI Speed: (such as 65Mbps)

• WI-FI Strength: (such as -29 dBm

• Encryption: (such as WPA/WPA2)

• Frequency: (such as 2437MHz)

• Channel: (such as 10)

• WI-FI Local IP: (such as 10.0.1 .10)

• WI-FI Gateway: (such as 10.0.1 .1 )

• DNS1 : (such as 10.0.1 .1 )

• DNS2: (such as 8.8.8.8)

• DHCP Release: (such as 02hh:00mm:00ss)

Network Visibility (Hidden/Visible)

C. Other general info:

Mobile Wireless signal strength and interruption event including Cell Tower ID. Network connection status

Network band switching within a short period, (switching between WI-FI, mobile 2G,3G,4G)

• Network path and latency information using route trace (tracert + ping) to get total hops, hop IP, rtt of each hop and the server. • User's geolocation status using "IP geolocation database" lookup of the client's IP address + (GPS info if permit and applicable)

User's movement using phone's built-in sensors (if allow and enforceable)

• Network type (LAN, WI-FI, 2G,3G,4G, etc.)

· All of the above with time and date stamps

Alternatively, this information may be randomly synchronizing with the server 207 once every day during low traffic hours, or any other periodic or ad hoc manner.

9. Mobile "dead-zone" detection

A further aspect of the present embodiment enables the network monitoring unit 303 of the client device 201 to identify wireless "dead-zones." There are two types of wireless dead-zones:

a. Cellular architecture wireless dead-zones: these arise due to the cells of a mobile network not providing blanket coverage, and thus resulting in areas of low signal or the absence of a signal between cells.

b. Natural wireless dead-zones: these arise due to the nature of the surrounding environment (e.g., elevator, stairwell, basement, etc.).

Fig. 13 outlines how a cellular architecture wireless dead-zone is identified by the client device 201 . The network monitoring unit 303 of the client device 201 continuously monitors both the wireless signal strength and the wireless station ID through which the client device connects to the network 200.

The network monitoring unit 303 is configured to identify a time period during which the wireless signal fails to satisfy the network criteria i.e. the. The network monitoring unit 303 then analyses the wireless signal strength before, during and after the time period.

The client device 201 may be initially connected to a first wireless station 203. If it is detected by the network monitoring unit 303 that the wireless signal strength gradually weakens and then reconnects to a second wireless station 204, it can be determined that the client device 201 was being moved in proximity of a boundary between two wireless cells and that there exists a cellular architecture wireless dead-zone. Fig. 13 outlines how a natural wireless dead-zone is identified by the client device 201 . The network monitoring unit 303 of the client device 201 continuously monitors both the wireless signal strength and the wireless station ID through which it connects to the network 200.

The client device 201 is initially connected to a first wireless station 203. If it is detected by the network monitoring unit 303 that the wireless signal strength suddenly reduces significantly and then reconnects to the first wireless base station 203, it can be determined that the client device 201 was in a natural dead-zone, such as an elevator.

One or more sensors may be present in the client device 201 i.e. such as motion sensors, accelerometers, gyroscope etc., it may be possible to determine the elevation of the client device 201 to detect, for example, if the user of the client device 201 is going up or down in an elevator.

The network monitoring unit 303 of the client device 201 may be configured to determine the size of the wireless dead-zone. By determining the time during which the wireless signal has dropped significantly, and by determining the speed of travel of the client device 201 , the dead-zone size can be calculated, as outlined below: signal off time x speed of travel = distance of the wireless dead-zone

The network monitoring unit 303 of the client device 201 may be configured to multiple this value by a predetermined constant N to determine the wireless dead-zone size. wireless dead-zone size = (distance of the wireless dead-zone) X N

For example, the distance of the wireless dead-zone may be multiplied by a factor of 4 to give the wireless dead-zone size.

Upon detecting a wireless dead-zone, the client device 201 is configured to memorise the wireless dead-zone location, for instance using one or more data learning models, and transmits, by the transceiver unit 301 , the wireless dead-zone information to the server 207. The wireless dead-zone information may comprise of the wireless dead- zone location, the wireless dead-zone type and/or the wireless dead-zone size.

The transceiver unit 301 of the client device 201 may transmit the wireless dead-zone information to the server 207 as part of the system information.

10. Assess network condition

A further aspect of the present embodiment is for the network monitoring unit 303 of the client device to be configured to assess the LAN and domain name server (DNS) statuses. This process is triggered when the first set of data segments DS1 fails to satisfy the data criteria and a network condition is identified. The data criteria may include the size of the data, the size of data segments in the data, the number of data segments or the receiving rate of the data segments. For example, if the receiving rate of the first set of data segments DS1 reduces below a certain level, or if the size of the first set of data segments DS1 reduces below a certain number.

By assessing the LAN and DNS statuses it can be determined if the network condition occurs on Area 1 (as described previously). The detection process is achievable by executing in the client device 201 , by one or more processing units, a parallel process which runs "nslookup" command to probe for the target service domain name. If no response comes back after three tries, it will attempt to ping the local "gateway IP" to further detect network conditions. The "nslookup" command allows both the network and DNS situation to be identified and can achieve a result within less than 1 second.

This process is useful for deciding whether the device should reroute to alternative media sources. The network on (Area 1 ) is a mono-path network and will not make any difference in throughput if the client tries to acquire data from alternative media sources.

1 1 . Wi-Fi bands detection process

Wireless devices typically run on either 2.4 GHz or 5.0 GHz frequencies. The differences between the two include the range, bandwidth, and amount of interference. The 2.4GHz frequency has a higher range than the 5.0GHz frequency, while the 5.0GHz frequency has a larger bandwidth. While it makes sense that walkie-talkies are run on 2.4GHz because they need a long range to work properly, laptops and mobile phones work better when there is more bandwidth, such as on the 5.0GHz frequency. Therefore, for a more effective media streaming session, it is desirable to connect on the 5.0GHz frequency.

Therefore, another aspect of the present embodiment is to enable the client device to detect for any connectable 5.0Ghz Wi-Fi network with good signal and attempt to establish a new connection to the network 200.

Referring to Fig. 14, the frequency and the signal strength of the Wi-Fi signals in range of the client device 201 are monitored. If there is an available 5GHz Wi-Fi signal (S501 ), the client device will check to see if it has been previously authorised to connect to the 5GHz Wi-Fi signal (S502). If it has been authorised and the signal strength of the 5GHz Wi-Fi is at a suitable level, such as being above a predetermined threshold, the client device will connect to the 5GHz Wi-Fi.

If the device has not been authorised to connect to the 5 GHz Wi-Fi signal or if the signal strength is not suitable, the client device will determine if there is an alternative 5GHz Wi-Fi signal or an available 2.4GHz Wi-Fi signal which it can connect to.

When connected to the 5GHz Wi-Fi signal, the client device will continue to monitor the signal strength of the Wi-Fi signal. If the Wi-Fi signal decreases to an unsuitable level (S505), or below a predetermined threshold, then the client device will determine if there is an alternative 5GHz Wi-Fi signal or it will fall back and connect to the available 2.4GHz signal.

Server for predicting network conditions - Third embodiment

Another embodiment of the present invention focuses towards making smart predictions of the network status and bandwidth quality in order to adapt to conditions in sufficient time so as to prevent buffering. By combining the network knowledge gained by the client device 201 with the server 207 intelligence, the client device 201 has the potential to become smarter and continuously learn and update data that it is capable of obtains form various sources enabling it to predict network conditions and events..

Fig. 15 illustrates the server 207. The server 207 may comprise of one or more processing units (401 ) and a transceiver unit (402).

1 . Network forecasting

In the present embodiment of the invention, a network forecasting process is executed by the server 207 which receives, by the transceiver unit 402 system information, including network information and wireless-dead zone information, from the client device 201 and other devices on the network (see item 8 of the second embodiment). The system information is then used to forecast network conditions.

By gaining valuable information from the reporting process executed by the client device 201 , the server can use a built-in algorithm or a data model which may be trained to create a virtual map of the connections between all of the client devices and media sources. From this algorithm and virtual map, the server 207 may be configured identify congestions on each network segment at a particular time of the day and make this information available to all authorized users, such as the client device 201 .

The server is configured to receive, by the transceiver unit 402, the system information from the client device 201 and multiple other client devices connected in the network. The system information may comprise of network information, client information, media consumption information, wireless dead-zone information, historical use information or journey route information.

As mentioned above, the server 207 may be configured to implement a learning process through the execution of built-in computer algorithms using the one or more processing units 401 . These algorithms may include machine learning techniques such as neural networks, deep learning, and Bayesian networks. The server 207 uses this algorithm with the system information provided to determine crucial information such as:

• Learn the daily whereabouts of the user of the client device 201 and the media content consumption patterns of the client device 201 • Learn the network status and behaviour during the user's daily route and identify a network congestion pattern which later determines the antibuffering payload delivery.

Learn the system state if the user was in a fixed WI-FI/LAN mode.

• Learn the network status if the user was in stationary 2G/3G/4G modes.

The server 207 may connect with a client device 201 connected on the network 200 to provide dynamic delivery of "anti-buffering payload" as explained above in relation to the client device in the second embodiment .

Referring to Fig. 5, the server 207 may receive, by the transceiver unit 402, system information from the client device, and other devices - device B 208 and device C 209 - in the network. The server combines the system information received from the client device 201 , the device A 208, and the device B 209 to determine the network condition and develop a virtual map of the network and to develop network forecast information.

The transceiver unit 402 of the server 207 may transmit the network forecast information to the client device 201 . The network forecast information may comprise of information associated with forecasts of network events, forecasts of user interactions, forecasts of the movement of the client device 201 , locations of forecasted areas of weak wireless signals, forecasts of network congestion along a client route or locations of wireless dead-zones.

The network forecast information may include information pertaining to a size and time range of the second set of data segments DS2 to request by the client device 201 , so that the second set of data segments DS2 covers a time range wherein a loss of network data is predicted. Alternatively, based on the network forecast information, the client device 201 can be further configured to determine a size and time range of the second set of data segments DS2 to request, so that the second set of data segments DS2 covers a time range wherein a loss of network data is predicted.

In this manner, the serve contributes to providing a dynamic "anti-buffering payload", as the size of the second set of data segments DS2 may be dynamically changed in response to the network forecast information (see item 2 of the second embodiment). This assists with the smooth playback of media through locations of network events or congestions in a dynamic manner.

A typical example of the implementation of the method of providing this anti-buffering payload is illustrated in Fig. 10, and has been previously described.

In a further example, the client device 201 , device B and device C may all travel the same route to work each day. The system information A, B and C transmitted to the server 207 may include wireless dead-zone information. The server uses the wireless dead-zone information to determine the likelihood of a wireless dead-zone existing. For example, if the client device 201 determines that there exists a wireless dead-zone in a given location but devices B and C do not identify a wireless dead-zone in the same location, then the server 207 may determine that the identification of the wireless dead- zone by the client device 201 was an error, and may have been caused by another network event.

2. The data flow adaptation strategy in the Server

The data flow adaptation strategy is a server-side implemented protocol to route data traffic away from congested segments of the network. This approach avoids so called "trial and error" processes, and diverts traffic onto alternative, healthy routes which substantially help to suppress buffering issues. This approach assists the network and improves the client bandwidth quality significantly.

As an example, there is a media source located in London and a user with a client device 201 located in Cambridge. There is another media source located in Frankfurt. Between 3:00PM-6:00PM the network throughput between Cambridge and London may be heavily congested while the network between Cambridge and Frankfurt may be healthy. From a physical viewpoint, routing a Cambridge user to the London media source may be considered the best option as it is geographical closer that the Frankfurt media source. However, if congested sections exist on the network between Cambridge and London, then this routing option may not be efficient. Instead, the method of the present embodiment enables the server to identify, using the one or more processing unit 401 , congested sections of the network between Cambridge and London. As a result, instead of attempting to send the request for media content to the London server, the transceiver unit 402 of the server 207 may send the request directly to the Frankfurt server during a period of congestion between Cambridge and London.

This decision making process in the server 207 helps the client device 201 to receive data smoothly and to avoid buffering of the media content. Furthermore, given that the analysis of the network routes has already been carried out by the server 207, the client device 201 is not required to expend any processing recourses to request or identify alternative sources in the case when the network is congested.

It is to be understood that the processes and logic flows described in this specification can be performed by one or more programmable processors in a client device 201 , which may include a set top box or the like, or a server which may be a content distribution system executing one or more computer programs to perform functions by operating on input data and generating output. The processes and logic flows can also be performed by, and apparatus can also be implemented as, special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application specific integrated circuit) or specific hardware and/or software implemented drivers.

Processors suitable for the execution of a computer program or algorithm include, by way of example, both general and special purpose microprocessors, and any one or more processors of any kind of digital computer. Generally, a processor will receive instructions and data from a read only memory or a random access memory (nonvolatile or volatile memory) or both. The essential elements of a computer are a processor for performing instructions and one or more memory devices for storing instructions and data. Generally, a computer will also include, or be operatively coupled to receive data from or transfer data to, or both, one or more mass storage devices for storing data, e.g., magnetic, magneto optical disks, or optical disks. However, a computer need not have such devices. Moreover, a computer can be embedded in another device, e.g., a tablet computer, a set top box, a mobile telephone, a personal digital assistant (PDA), a mobile audio player, a Global Positioning System (GPS) receiver, to name just a few. Computer readable media suitable for storing computer program instructions and data include all forms of non- volatile memory, media and memory devices, including by way of example semiconductor memory devices, e.g., EPROM, EEPROM, and flash memory devices; magnetic disks, e.g., internal hard disks or removable disks; magneto optical disks; and CD ROM and DVD-ROM disks. The processor and the memory can be supplemented by, or incorporated in, special purpose logic circuitry.

To provide for interaction with a user, implementations of the disclosure can be implemented on a computer (with a client device or a server) having a display device, e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor, for displaying information to the user and a keyboard and a pointing device, e.g., a mouse or a trackball, by which the user can provide input to the computer. Other kinds of devices can be used to provide for interaction with a user as well; for example, feedback provided to the user can be any form of sensory feedback, e.g., visual feedback, auditory feedback, or tactile feedback; and input from the user can be received in any form, including acoustic, speech, or tactile input.

Implementations of the disclosure and all of the functional operations described in this specification can be implemented in digital electronic circuitry, or in computer software, firmware, or hardware, including the structures disclosed in this specification and their structural equivalents, or in combinations of one or more of them. Implementations of the invention can be implemented as one or more computer program products, i.e., one or more modules of computer program instructions encoded on a computer readable medium for execution by, or to control the operation of, data processing apparatus. The computer readable medium can be a machine-readable storage device, a machine-readable storage substrate, a memory device, a composition of matter effecting a machine-readable propagated signal, or a combination of one or more of them.

While this disclosure contains many specifics, these should not be construed as limitations on the scope of the invention or of what may be claimed, but rather as descriptions of features specific to particular implementations of the invention. Certain features that are described in this specification in the context of separate implementations can also be implemented in combination in a single implementation. Conversely, various features that are described in the context of a single implementation can also be implemented in multiple implementations separately or in any suitable sub-combination. Moreover, although features may be described above as acting in certain combinations and even initially claimed as such, one or more features from a claimed combination can in some cases be excised from the combination, and the claimed combination may be directed to a sub-combination or variation of a sub-combination.

Similarly, while operations are depicted in the drawings in a particular order, this should not be understood as requiring that such operations be performed in the particular order shown or in sequential order, or that all illustrated operations be performed, to achieve desirable results. In certain circumstances, multitasking and parallel processing may be advantageous. Moreover, the separation of various system components in the implementations described above should not be understood as requiring such separation in all implementations, and it should be understood that the described program components and systems can generally be integrated together in a single software product or packaged into multiple software products.Various implementations of the systems and techniques described here may be realized in digital electronic circuitry, integrated circuitry, specially designed ASICs (application specific integrated circuits), computer hardware, firmware, software, and/or combinations thereof. These various implementations may include implementation in one or more computer programs that are executable and/or interpretable on a programmable system including at least one programmable processor, which may be special or general purpose, coupled to receive data and instructions from, and to transmit data and instructions to, a storage system, at least one input device, and at least one output device.

While embodiments herein have been described with reference to video streaming, persons skilled in the art will appreciate that the systems and methods disclosed are not limited to streaming video data. For example, systems and methods disclosed herein may be suitable for streaming audio data, or for reducing the demand on servers providing clients with large files of any type.

While certain embodiments have been described, these embodiments have been presented by way of example only, and are not intended to limit the scope of the invention. Indeed, persons skilled in the art will understand that various modifications and changes may be made thereto without departing from the broader scope of the invention as set forth in the appended claims. The foregoing description and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense.