Embodiments of the present invention will be described with reference to the drawings which are provided for illustration only and not intended to limit the present invention by any means.
A form of the present invention (an FEC encoding method) can be configured such that information on the number of the payloads stored into the buffer memory used in the FEC operation to generate the second information is further added to the second information. According to this form, the number of payloads (except dummy payloads) used in the FEC operation performed on the encoding end can be easily detected on the decoding end.
Further, a form can be configured such that information that the second information is different from the first information is further added to the second information. According to this form, it is possible to easily detect on the decoding end that the FEC operation on the encoding end is not performed using a prescribed number of payloads.
Further, a form can be configured such that the generation of the second information is performed by FEC operation using the payloads stored into the buffer memory and dummy payloads padded until the prescribed number is reached. This is a form in which the dummy payloads are padded in the buffer memory to allow the FEC operation to be performed as usual.
It is possible here that when the FEC operation to generate the second information is able to be performed only using the dummy payloads, the FEC operation is not performed so that the second information to be obtained by the FEC operation is not generated. This is to make the generation of the second information for FEC more efficient.
Further, a form can be configured such that both the first and second information are generated as FEC packets independent from the media packet. This is a form in which the first and the second information obtained by the FEC operation are sent as packets.
Further, a form can also be configured such that both the first and second information are added to media packets corresponding to the first and the second information respectively. This is a form in which the first and the second information obtained by the FEC operation are added to the media packets.
A form of the present invention (an FEC decoding apparatus) can be configured such that the fifth control unit pads a dummy payload at the first location in the buffer memory where the loss has not occurred and no payload has been stored and performs the FEC operation. This is a form in which the FEC operation is performed in correspondence with the padding of the dummy payload on the encoding end.
Based on the above, embodiments of the present invention will be described hereinafter with reference to the drawings.
The video streaming server 10 generates media packets (configuration thereof being described later) containing the information such as video and sequentially supplies them to the FEC apparatus (encoding end) 20. The FEC apparatus (encoding end) 20 stores a plurality of the supplied media packets, performs FEC operation (encoding operation) using payload portions of the stored media packets, and generates FEC packets using the operation result as the payload portions of the FEC packets. The media packets and the generated FEC packets are sent to the side of the FEC apparatus (decoding end) 40 and the video streaming receiving device 50 over the network 30. Note that the FEC apparatus (encoding end) 20 may be incorporated in the video streaming server 10.
The network 30 is an information sending path without guarantee such as the Internet. The media packets and the FEC packets outputted from the FEC apparatus (encoding end) 20 may be partially lost during sending over the network 30 according to circumstances.
The FEC apparatus (decoding end) 40 sequentially stores the media packets and the FEC packets sent over the network 30 so that if there is a loss in a portion of the media packets, the apparatus recovers the loss by performing FEC operation (decoding operation) using the payload portions of remaining media packets and the payload portions of the FEC packets. The media packets obtained by the recovery and the stored media packets are supplied to the video streaming receiving device 50. The video streaming receiving device 50 reproduces video signals and audio signals from the supplied media packets for display or audio output. Note that the FEC apparatus (decoding end) 40 can also be incorporated in the video streaming receiving device 50.
The FEC apparatus (encoding end) 20 has an interface 21, a control unit 22, a buffer memory 23, and an interface 24.
The interface 21 is an interface to receive the media packets supplied from the video streaming server 10 and send them to the control unit 22. The control unit 22 is to perform FEC operation (encoding operation) using the buffer memory 23 as a buffer region. More specifically, the control unit 22 performs processing of sequentially holding the media packets sent via the interface 21, sequentially storing the payload portions in the sequentially held media packets at predetermined locations in the buffer memory 23, performing FEC operation using the payloads stored at the predetermined locations to generate payloads for FEC packets, and generating FEC packets including the generated payloads for FEC packets. The buffer memory 23 has a storage capacity capable of storing all of the payloads required at least for the above-described FEC operation.
The media packets held in and the FEC packets generated by the control unit 22 are outputted from the control unit 22 to the interface 24. The interface 24 is an interface to output the media packets and the FEC packets from the control unit 22 to the network 30.
The FEC apparatus (decoding end) 40 has an interface 41, a control unit 42, a buffer memory 43, and an interface 44.
The interface 41 is an interface to receive the media packets and the FEC packets from the network 30 and supply them to the control unit 42. The control unit 42 is to perform FEC operation (decoding operation) using the buffer memory 43 as a buffer region.
More specifically, the control unit 44 performs processing of sequentially holding the media packets and the FEC packets sent via the interface 41, sequentially storing the payload portions in the sequentially held media packets at first predetermined locations in the buffer memory 43, sequentially storing the payload portions in the sequentially held FEC packets at second predetermined locations in the buffer memory 43, and, when there is a loss in the stored payloads of the media packets, recovering the lost payload by performing FEC operation (decoding operation) using remaining payloads and the payloads of the FEC packets stored at the second locations. The buffer memory 43 has a storage capacity capable of storing all of the payloads required at least for the above-described FEC operation.
The media packets in the control unit 42 including the packet containing the payload obtained by the recovery are outputted from the control unit 42 to the interface 44. The interface 44 is an interface to supply the media packets from the control unit 42 to the video streaming receiving device 50.
Next, an example of generating the FEC packets in the control unit 22 will be described with reference to
As shown in
In this case, even when there is one loss in any one of every 11 payloads composed of the payloads in each row or each column and each FEC payload added thereto, the one loss can be recovered on the decoding end using the remaining payloads including the FEC payload. Accordingly, for example, when there are two or more losses in a certain row, the losses cannot be recovered first time.
However, in a state in which the two or more losses are recovered by the FEC operation (decoding operation) by each column so that only one loss is in the row, if the FEC operation (decoding operation) by each row is performed again, the one loss can be recovered. More specifically, the decoding corresponding to such FEC operation (encoding operation) includes three FEC operations (decoding operations) in order of each row, each column, and each row (or each column, each row, and each column). Note that description of the FEC operations (encoding operation and decoding operation) will be omitted since several modes for the operations are well known and can be used.
Further, as shown in
Next, referring to
As described with
As shown in
Generation of the FEC payloads by such processing includes the following advantages. The FEC packets are generated in a divided period of time and the media packets are outputted to the network 30, so that even when the supply density of the original media packets in terms of time is low, the media packets can be sequentially outputted according to the low density. Therefore, the problem of increasing delay in sending with a lower density is solved, and the possibility that the outputted packets form a burst is substantially eliminated.
Further, it is possible not to send the packets generated using padded dummy payloads and the FEC packets generated using only the dummy payloads so as to minimize the increase in average band on the network 30. Moreover, if the FEC packets are generated using the media packets less than the prescribed number, the substantial ability of recovering the loss of the media packets is improved. This is because when the payload information to be padded is determined, the loss can be complemented on the decoding end without the need of recovering the loss, based on which the FEC operation (decoding operation) can also be performed.
Note that while padding of the dummy payloads is described in the foregoing, the storage regions of the payloads may be padded with dummy payloads as their initial states as a modification example. In this case, it is only necessary to rewrite the storage region with the payload of a media packet every time the media packet is supplied. Besides, the FEC packets including the FEC payloads generated by operation using only the dummy payloads may also be sent to the network 30, which never interfere with decoding processing because it is only necessary to discard them on the decoding end, though the average band on the network 30 is somewhat increases.
First, a timer is reset (Step 101). The timer is provided, for example, in the control unit 22. Then, under the control of the control unit 22, payload portions are extracted from the media packets supplied from the video streaming server 10 via the interface 21 and stored into the buffer memory 23 (Step 102). The original media packets are also held.
Whether the number of the stored payloads reaches the prescribed number L or whether a predetermined certain period of time from the timer reset has elapsed is detected under the control of the control unit 22 (Step 103). If either cannot be detected (No in Step 103), the flow returns to Step 102 in which the payload portions of the media packets supplied from the video streaming server 10 are continuously stored into the buffer memory 23.
When the number of the stored payloads reaches the prescribed number L (the “prescribed number” in Step 103), FEC operation (encoding operation) is performed using the payloads stored into the buffer memory 23 to generate the FEC payloads and the FEC packets (Step 107: see
Besides, when the certain period of time has elapsed from the timer reset (“certain period of time has elapsed” in Step 103), the number of the stored payloads at that time is held as N (Step 104), and dummy payloads are padded in the buffer memory 23 until the number reaches the prescribed number L (Step 105). The padding may be performed in advance as has been described.
Then, the FEC operation (encoding operation) is performed using the payloads stored into the buffer memory 23 and the dummy payloads to generate the FEC payloads and the FEC packets (Step 106: see
The generated FEC packets are sent to the interface 24 side together with the media packets corresponding thereto (Step 108). In addition, the flow returns to Step 101 and repeats the above-described series of processing.
First, under the control of the control unit 42, the payload portions of both packets of the sequentially received media packets and FEC packets are stored into the buffer memory 43 (Step 201). The payload portions of the media packets are stored in storage regions for them (first locations), and the payload portions of the FEC packets are stored in storage regions for them (second locations).
The storage at that time is performed until the number of media packets reaches the prescribed number L or until the number of media packets reaches N that is the number whose information are recorded in the FEC headers when the information of the padding processing is similarly included in the FEC headers. However, even if such information is not included in the FEC headers, it is possible to determine N, for example, by discriminating the packets sent as a group based on the information included in each header of each packet and obtaining the total number of packets in the group.
Then, in the case where the storage is performed until the number of media packets reaches N in the buffer memory 43, dummy payloads are padded up to the prescribed number L in the remaining storage regions in the buffer memory 43 (Step 202). The padding may be performed in advance as in encoding.
Then, FEC operation (decoding operation) is performed using the payloads (optionally including those by padding) stored into the buffer memory 43 to recover the lost payloads, thereby recovering the lost media packets (Step 203). The media packets including the media packets whose losses have been recovered are sent via the interface 44 to the video streaming receiving device 50 (Step 204). In addition, the flow returns to Step 201 and repeats the above-described series of decoding processing.
Next, another example of generating the FEC packets in the control unit 22 will be described with reference to
In this example, each payload portion of the FEC packet is calculated as two FEC payloads by using ten payloads of media packets in each row or each column for operation. In this specification, 40 FEC packets are added for 100 media packets, and therefore the ability of recovering the packet loss is higher than that described with
Reference to
In addition, the FEC operation on the decoding end corresponding to the case in which the FEC operation (encoding operation) as shown in
Next, still another example of generating the FEC packets in the control unit 22 will be described with reference to
In this case, even when there is one loss in any one of 11 payloads composed of the payloads of ten media packets and the FEC payload added thereto, the one loss can be recovered using remaining payloads including the FEC payload. Accordingly, when there are two or more losses in the 11 payloads, the losses cannot be recovered. In this sense, the ability of recovering the loss in this example is less than that in the method of latitudinally and longitudinally generating the FEC payloads as shown in
In
In addition, the FEC operation on the decoding end corresponding to the case in which the FEC operation (encoding operation) as shown in
Next,
As shown in
In this case, as shown in the drawing, in-process data is generated for addition of the FEC redundant data using the payloads stored until the prescribed time point. The reason of this is that payloads may be padded to portions required to satisfy the prescribed number so that the padded payloads may also be used to generate in-process data, but in this case the payloads generated by padding are not sending object, failing to addition of the FEC redundant data. More specifically, only the stored payloads are used to calculate in-process data of a smaller size, and the calculated in-process data is divided and added to the stored payloads.
Generation of the media packets (with the FEC redundant data added) by such processing also includes the following advantages. Namely, the FEC redundant data is generated in a divided period of time and the media packets (with the FEC redundant data added) are outputted to the network 30, so that even when the supply density of the original media packets in terms of time is low, the media packets (with the FEC redundant data added) can be sequentially outputted according to the low density. Therefore, the problem of increasing delay in sending with a lower density is solved, and the possibility that the outputted packets form a burst is substantially eliminated. It is also possible to minimize the increase in average band on the network 30.
Steps 101, 102, 103, and 104 are the same as those in the description in
Besides, when the certain period of time has elapsed from the timer reset (“certain period of time has elapsed” in Step 103), the number of the stored payloads at that time is held as N (Step 104), and FEC redundant data is generated and added to each of the media packets (Step 305: see
The media packets with the FEC redundant data added are sent to the interface 24 side (Step 308). In addition, the flow returns to Step 101 and repeats the above-described series of processing.
First, under the control of the control unit 42, the payload portions and the FEC redundant data portions of the sequentially received media packets (with the FEC redundant data added) are stored into the buffer memory (Step 401). The payload portions are stored in storage regions for them (first locations), and the FEC redundant data portions are stored in storage regions for them (second locations).
The storage at that time is performed until the number of media packets reaches the prescribed number L or until the number of media packets reaches N that is the number whose information are recorded in the FEC redundant data when the information of the moving forward processing is similarly included in the FEC redundant data. However, even if such information is not included in the FEC redundant data, it is possible to determine N, for example, by discriminating the packets sent as a group based on the information included in each header of each packet and obtaining the total number of packets in the group.
Then, FEC operation (decoding operation) is performed using the data stored into the buffer memory 43 to recover the lost payloads, thereby recovering the lost media packets (Step 402). The media packets including the media packets whose losses have been recovered are sent via the interface 44 to the video streaming receiving device 50 (Step 204). In addition, the flow returns to Step 401 and repeats the above-described series of decoding processing.
The embodiments of the present invention have been described and supplemented hereinafter. For the functions of the reception of packets, the FEC operation, and the packet sending in the FEC apparatus (encoding end) 20 and the FEC apparatus (decoding end) 40, a plurality of channels may be provided respectively so that they can be processed in parallel. Further, it is able to determine the prescribed number L, for example, based on the specification of the ability of recovering the packet loss, and to determine the above-described “certain period of time” in consideration, for example, of the information delay time allowable in the video streaming receiving device 50 and the quality of the network 30.
The present invention is not limited to the specific forms described herein with the illustrations, but it is to be understood that all the changes and modifications without departing from the range of the following claims are to be included therein.
Number | Date | Country | Kind |
---|---|---|---|
2006-178568 | Jun 2006 | JP | national |