METHOD AND DEVICE FOR STREAMING DATA
The invention relates to a method for transferring a data stream containing a sequence of data elements from a source to a plurality of clients, the source and the clients being comprised in a network, comprising the repeated steps of generating a successive data element in the source, the data element forming part of the sequence of data elements, transferring the data element from the source to the clients, and associating in each client the data element to at least one further data element forming part of the sequence. Further, the invention relates to a system, a server and a computer program for carrying out the method.
For sending a stream, such as a video stream, an audio stream or a multimedia stream to a plurality of clients, it is known to broadcast the stream to the clients. By broadcasting, the same data, i.e. the same element of the stream, is sent at the same time to the clients. Broadcasting is applied for example for live events enabling transferring a stream or a part of a stream, essentially at the same time to a large number of clients. A problem associated with broadcasting is that a user of a client is not able to individually control a flow of the stream. If for example the user of a client has missed a part of the stream, it is not possible to retrieve such part, as the source continues to transfer the stream to all clients. A known solution to this problem is to store a part of the stream, which has already been received by the client in a memory of or uniquely accessible by the client. This however has the major disadvantage that memory requirements for storing a part of the stream, which has already been received by the clients, could be large, as the amount of data in for example a multimedia stream could be large. Especially in compact or mobile devices, memory capacity for storing such part of the stream might either not be available or substantially deteriorate the performance of such device.
It is an object of the invention to combine a high user convenience for a user of a client with low design requirements for the client.
To achieve this goal, the method according to the invention is characterized in that the step of transferring the data element from the source to the clients comprises the steps of: transferring the data element from the source to a server, the server being comprised in the network, storing the data element in a memory of the server and transferring the data element from the server to each client individually when received or after storage by the server. As the data element is transferred from the source to the server and stored in a memory in the server, earlier data elements are available in the server. Thus, no memory in the clients is required for storing a part of the sequence already received by the client; as such earlier part of the sequence is available in the memory in the server. Consequently, any such client, or its user, can be offered the flexibility to view, if desired, an earlier part of the sequence, while no memory capacity in the client itself is required for storing such part of the sequence. A further advantage is that the source only needs to transfer the data element to a single destination, being the server only, instead of having to transfer, by means of broadcasting through a multiple of communication paths, the data element to a plurality of clients. Consequently, a load on the source can significantly be reduced, which allows, as will be clear to a person skilled in the art, to reduce complexity of the source, enabling a low power consumption, small dimensions, low cost price, and limited use of communication resources by the source.
A further advantage is that, in case that a part of the stream could not be received by a client, for example because of a missing communication link to the client, a defect or low battery condition in the client, or for whatever other reason, the missing part of the stream is available in the memory in the buffer for sending it to the client after resolving such defective event. Advantageously the method is characterized in that it comprises the further step of erasing a data element from the memory in the server on a first in first out basis with respect to a time order of transferring data elements by the source. Consequently, excessive
memory requirements in the server can be avoided, as data elements are erased on a first in first out basis, enabling to free memory capacity for a data element which is currently received or will be received by the server. The erasing can be performed after a predetermined time from a receipt of the data element by the buffer, thus causing a part of the stream having a predetermined time length to be stored in the buffer. The erasing can also be performed after receipt of a predetermined number of data elements, received after receiving the data element to be erased, which implies that during transferring a stream, a fixed, predetermined amount of data elements is stored in the buffer.
Further, it is possible that the erasing is performed after receipt of a predetermined total data size of data elements, received after receiving the data element to be erased. Thus, during transfer of a stream, the total data size of data elements stored in the memory is limited to a predetermined data size, enabling to assign a fixed, maximum amount of memory size for storing of the data elements in the server. Advantageously, the method comprises the further step of requesting by a client a transfer from the server to the client of a prior data element, the prior data element being prior in sequence of data elements, then a data element received by the server most recently, with respect to the time order of transferring data elements by the source. Thus, the client can request a transfer from the server to the client of a prior data element, which is stored in the memory. This allows the client, upon request of the client, to have access to prior data elements. The request can result in the transfer from the server to the client of a single prior data element, however it is also possible that the request initiates a transfer from the server to the client of a part of the sequence. As the memory is continuously supplied with new data elements which are transferred from the source to the server, it is possible to transfer a delayed stream, or delayed pa'rt of the stream, such as an earlier part of the stream from the server to the client.
Advantageously, the prior data element is accessed via a pointer which is associated with the client and which points to a location in the memory comprising the data element, and in that the
pointer is movable (such as in that a value of the pointer which corresponds to the location in the memory is changeable) on request of the client. If a user of a client wants to view an other part of the stream, the user can send a request from the client to the server resulting a move of the pointer, and thus in a change in the location to which the pointer is pointing, and consequently in a change of the data element, or sequence of data elements, transferred to the client. In this manner simple and user convenient control of the data elements to be received by the client has been made possible. In case that the client for example requests to have retransmitted a part of the stream which has been transmitted from the source to the server and which part is stored in the memory in the server, a single command for setting the pointer to a location in the memory having a number of data elements between a current data element (which corresponds to the 'live' stream) and the data element in the memory to which the pointer is pointing, will result in a transferring of a delayed part of the stream from the memory in the server to the client. If a user interface of the client is for example equipped with play-forward, play-back, and/or freeze/play/forward/backward/fast/slow/jump like controls which enable a user of the client to control receipt of the stream in a video color recorder (VCR) like manner, the request to transfer a data element or sequence of data elements from the memory in the server can be generated in the client in a manner which is easily understood by the user of the client, so that a high user convenience can be achieved.
In addition the invention provides a system comprising a source, a plurality of clients and a server, the source, the clients and the server being comprised in a network, the system being adapted for transferring a data stream containing a sequence of data elements to the clients according to the method according to the invention.
Also, the invention provides a server intended for use in such system.
Further, the invention provides a computer program comprising program instructions for causing a server, in connection with a source and a plurality of clients, the server, the source and the clients being comprised in a network, to perform the method according
to the invention, when the computer program has been loaded into the server.
Still further, the invention provides a computer program comprising program instructions for causing a client, in connection with a source and a server, the server, the source and the client being comprised in a network, to perform the method according to the invention, when the computer program has been loaded into the client. The computer programs according to the invention can be embodied on a record medium, such as a CD-ROM or a carrier signal; also, the computer programs according to the invention can be stored in a computer memory. Thus, the computer program according to the invention enables a server, respectively a client, to operate in a manner according to the method according to the invention, when the respective computer programs have been loaded into a server, respectively a client.
Further features and advantages of the invention will become clear from the appended drawing of which Fig. 1 shows in a non- limiting way a system implementing a preferred example of the method according to the invention. Fig. 1 shows a source, in this example being a digital camera
1, which is connected to a mobile device, such as a mobile telephone
2. The camera 1 generates a stream, comprising a sequence of data elements, which in this example comprises a video information. Each data element is transferred from the camera 1 to the mobile telephone 2. From the mobile telephone 2, the data element is transferred in a wireless manner to a wireless transmitter 3, such as a base station, comprised in a mobile telephone network. Thus, the camera 1 generates a stream, comprising a sequence of data elements, and each data element, upon generation in the camera 1 is transferred to the mobile telephone 2 and then to the base station 3. From the base station 3, each data element is transferred in a wired and/or wireless manner to a server 4. After transferring the data element from the camera 1 via the mobile telephone 2 and the base station 3 to the server 4, the data element is stored in a memory 5 of the server 4. From the server 4, the data elements can be transferred to a plurality of clients, such as in this example a plurality of mobile telephones 6a, 6b, 6c. To achieve this, each data element is first transferred from the server 4 in a wired or wireless way to a plurality of wireless base
stations 7a, 7b, 7c and from these base stations 7a, 7b, 7c the data element is transferred to the respective mobile telephones 6a, 6b, 6c. Thus, each mobile telephone 6a, 6b, 6c receives a data element from the server 4 via a respective base station 7a, 7b, 7c. The base stations 3, 7a, 7b, 7c can be located in remote positions respectively to each other, however it is of course also possible that one or more of the mobile telephones 2, 6a, 6b, 6c make use of the same base station, for example in case that two or more of the mobile telephones 2, 6a, 6b, 6c, in a same cell, i.e. an area which is covered by a single base station 3, 7a, 7b, 7c. The base stations 3, 7a, 7b, 7c can form part of a single mobile infrastructure, however it is also possible that the base stations 3, 7a, 7b, 7c form part of different mobile infrastructures, such as infrastructures located in different countries or different geographic areas. The base stations 3, 7a, 7b, 7c, and consequently the mobile telephones 2, 6a, 6b, 6c, form part of a network, such as a mobile telecommunications network. The server 4 can be comprised in the mobile telecommunications network. It is however also possible that the server 4 is comprised in a computer network, not shown, such as the Internet, and that the computer network is coupled, in a manner known to a person skilled in the art, to the telecommunications network of which the base stations 3, 7a, 7b, 7c and the mobile telephones 2, 6a, 6b, 6c form part of. In this case, the telecommunications network and the computer network both form part of the network.
During operation, the camera 1 repetitively generates a data element and the data element is transferred from the camera 1 to the server 4. In the server 4, the data element is stored in the memory 5. In case that all users of the mobile telephones 6a, 6b, 6c are receiving a live part of the stream, the data element is transferred from the server 4 to the mobile telephone 6a, 6b, 6c just before, during or after storing the data element in the memory 5. The data element can be sent from the server 4 simultaneously to the mobile telephones 6a, 6b, 6c. The user of the mobile telephones 6a, 6b, 6c are able to view a reproduction of the stream on for example a display, 8a, 8b, 8c which is comprised in the respective mobile telephone 6a, 6b, 6c.
In case that for example the user of the mobile telephone 6a has missed a part of the stream, for example because the user of the mobile telephone 6a has received a telephone call, or in case that the user of the mobile telephone 6a for example wants to review a part of the sequence, a request from the mobile telephone 6a can be transferred to the server 4, for example via the base station 7a, upon which the server 4 starts transferral of a data element or a sequence of data elements which are stored in the memory 5. As all data elements are stored in the memory 5 of the server 4, upon receipt in the server 4, it is now possible, that for example the mobile telephones 6b, 6c receive a live part of the stream, i.e. each data element which has been received by the server 4 from the camera 1 is directly sent upon receipt by the server 4 to the mobile telephone 6b, 6c, while the mobile telephone 6a receives a delayed part of the stream, the delayed part of the stream comprising data elements which are stored in the memory 5 in the server 4. As all data elements received by the server 4 from the camera 1 are stored in the memory 5, it is possible for the user of the mobile telephone 6a to continue watching to the delayed stream as all new data elements which arrive at the server 4 from the camera 1 are stored in the memory 5. The delayed part of the stream can be accessed via a pointer which is associated with the client, the pointer pointing to a location in the memory comprising a data element which differs with respect to the current 'live' data element by a time equal to the delay time of the delayed (part of) the stream relative to the 'live' stream.
To avoid a requirement for excessive memory capacity in the server 4, it is possible that data elements, which are stored in the memory 5 in the server 4, are erased from the memory 5. This can for example be performed in a first in - first out manner, i.e. the data elements which have been received by the server 4 first are erased from the memory 5 in the server 4 first. Thus, by erasing data elements, for example after exceeding a predetermined time from receipt of the data element, after receipt of a predetermined amount of later data elements which follow the data element, or after receipt of a predetermined total data size of later data elements which follow the data element, the data element can be erased. This implies that users of the mobile telephones 6a, 6b, 6c obtain the
ability to view an earlier part of the stream, the earlier part being relative to the live stream and being expressed in a predetermined time, a predetermined amount of data elements or a predetermined total data size of data elements, counting from the "current", live data element.
Consequently, it is possible to offer a high user convenience to the users of the mobile telephones 6a, 6b, 6c as they can playback, stop or review a delayed part of the stream, without a need for additional storage capacity for storing a part of the stream. Further, the camera 1 can be of a very simple, and thus compact, cost effective and low power design, as the camera 1 only needs to transfer the data elements to a single destination, being the server 4 instead of having to transfer the data elements to all clients. Consequently, compared to broadcasting according to the state of the art for transferring a stream, such as a live stream to a plurality of clients, the invention reduces requirements on the source, being in this example the camera 1, while offering a high user convenience to the users of the clients, such as in this example the users of the mobile telephones 6a, 6b, 6c, as possibilities for viewing an earlier part of the stream, replay, stop, etc. can be offered to these users.
The data elements, which are sent from the camera 1 in an order as generated, might arrive at the server 4 in a different order. This can be due to a different transfer time, for transferring each data element from the camera 1 to the server 4. As thus the data elements can arrive at the server 4 in a different order than in the order generated, the data elements can be placed in the order generated, when storing the data elements in the memory 5 in the server 4 in a manner which will be known to a person skilled in the art. Of course, also the data elements sent from the server 4 to the mobile telephones 6a, 6b, 6c, can arrive at the respective mobile telephone 6a, 6b, 6c in a different order than the order sent, the mobile telephones 6a, 6b, 6c putting the data elements in the order of generating and/or transferring the data element by the source in a manner known to a person skilled in the art. Of course it is also possible that the data elements are stored in the memory 5 in the order in which the data elements are received by the server 4, in which case the placing of the data elements in the time order of generating and transferring the data elements by the camera is to be
performed in a manner known to a person skilled in the art by the mobile telephones 6a, 6b, 6c.
Especially in case that the clients comprise portable devices, such as for example mobile telephones, personal digital assistants, or any other battery-operated, or mobile device, a possibility for viewing an earlier part of the stream than the live stream is made possible without a need for storing the stream or a part of the stream in the client.