The present invention relates to a zapping agent comprising:
The bandwidth towards Customer Premises (CP) is usually too small to carry more than a few video channels. All channels are only available at a multicast (or distribution) point, e.g. at an edge device (or access device), which users are connected to, or at a video server further in the network. The multicast point only forwards one or more channels, which the user asked for.
a depicts a data communication system 1 comprising a video server 11, an edge device 12, and Customer Premises Equipment (CPE) 13 at a particular user location.
The edge device 12 provides access, and aggregates user traffic, towards the video server 11. The edge device 12 is for instance an access multiplexer, such as a Digital Subscriber Line Access Multiplexer (DSLAM), or a bridge, such as an Ethernet bridge, or a router, such as an Internet Protocol (IP) router, or a switch, such as an Asynchronous Transfer Mode (ATM) switch.
The video server 11 accommodates encoding means ENC1 to ENCN to encode N analog or digital video signals S1 to SN, representing N video channels ch1 to chN respectively, into video frames, thereby yielding N video streams (or video flows) VS1 to VSN. The video stream VS1 to VSN are all forwarded towards the edge device 12 for further transmission towards users.
CPE 13 accommodate a decoding means DEC for decoding and displaying any of the video streams VS1 to VSN.
The edge device 12 accommodates a zapping agent ZapAg that controls which particular channel is to be transmitted to which particular user.
CPE 13 accommodates a zapping client ZapCl that interfaces with the zapping agent ZapAg. The zapping client ZapCl sends a zap signal zap_chn to the zapping agent ZapAg, whereby a particular video stream VSn (1≦n≦N) is requested. Thereupon, the zapping agent ZapAg forwards the corresponding video stream VSn towards CPE 13.
b depicts a data communication system 2, wherein video streams VS1 to VSN are only available at the video server 11. In this configuration, the video server 11 accommodates the zapping agent for controlling delivery of video streams towards users, possibly through intermediate network equipment.
Inter-frame encoding is used to reduce the encoded bit rate while maintaining an acceptable picture quality by coding the pictures with reference to previous and/or subsequent encoded pictures. An example of video encoding using inter-frame encoding is MPEG2.
In a motion sequence, individual frames are grouped together (called a Group of Pictures or GoP). A GoP comprises one anchor frame (or intra-frame, or I frame) as first initial element, and further delta frames (or inter-frames) that ultimately relate to this anchor frame.
Anchor frames are encoded without referencing other pictures, e.g. by reducing the spatial redundancy in the picture. Delta frames are encoded by means of forward and/or backward prediction techniques such as motion compensation, and do refer other pictures, thereby achieving a higher compression ratio. Examples of delta frames are predictive frames (or P frames), which are encoded with reference to the previous I or P frame, and bi-directional interpolative frames (or B frames), which are encoded with reference to both the previous and the next I or P frame.
As an example, a typical GoP is a sequence of video frames of the form I B B P B B P B B P.
It is to be noticed that video frames are usually transmitted in a different order than the display order so as to make the decoding causal and faster.
Referring to the previous example, the GoP will be transmitted as I P B B P B B P B B.
It is to be also noticed that a frame may also relate to a frame of another GoP (open GoP versus closed GoP).
Referring to the previous example, the video sequence I B B P B B P B B P forms a closed GoP.
a depicts a time-line representation of 2 video streams VSm (1≦m≦N, m≠n) and VSn.
When a user initiates a channel change from channel chm to channel chn, the multicast point stops sending frames of the prior channel, and starts sending frames of the new channel (see t_zap in
When the zap signal is sent, the CPE typically flushes its decoding buffer and waits for new frames. The first frame the decoder receives is likely not to be an anchor frame, thereby making decoding impossible until a new anchor frame is received. Thereupon, the decoder shall still wait for a sufficient number of frames to be received before displaying the new channel (see t_streaming in
An optimization to this zapping procedure is known from the art, and is depicted in
It is an object of the present invention to further improve the system latency and the user experience.
According to the invention, this object is achieved due to the fact that said zapping agent further comprises:
The GoP that is currently being forwarded is not necessarily the GoP that is currently being transmitted, depending on the extent to which video frames are buffered before being actually transmitted.
The zapping agent caches the last-forwarded GoP into memory, and upon receipt of the zap signal, resumes transmission from the first frame of that GoP onwards.
As soon as a new anchor frame is available for further forwarding, the zapping agent stops transmitting frames from the cache memory, and starts forwarding (or broadcasting) the real stream. This may result in a small mismatch (visual glitch) as the zap signal is an asynchronous event.
Yet, by so doing, the decoder can start displaying moving pictures of the new channel faster, thereby improving the system latency and the user experience.
The zapping agent resumes transmission of the last video sequence of a channel whenever a user asked for that channel, before smoothly switching towards real streaming, that is to say before switching towards a single multicast resource that broadcasts a single video stream towards multiple users, irrespective of the time those users were switched to that channel, and without the need for user-dedicated forwarding process, making this solution highly scalable.
It is to be noticed that a few cached frames may not be decoded, or may be decoded improperly, since a fraction only of the first GoP may be available at the decoder (e.g., a B frame cannot be decoded if the next P frame is missing).
Further characterizing embodiments of a zapping unit are mentioned in the appended claims.
The present invention also relates to a method for transmitting video content, and comprising the steps of:
A method according to the invention further comprises the steps of:
Embodiments of a method according to the invention correspond with the embodiments of a zapping agent according to the invention.
It is to be noticed that the term ‘comprising’, also used in the claims, should not be interpreted as being restricted to the means listed thereafter. Thus, the scope of the expression ‘a device comprising means A and B’ should not be limited to devices consisting only of components A and B. It means that with respect to the present invention, the relevant components of the device are A and B.
Similarly, it is to be noticed that the term ‘coupled’, also used in the claims, should not be interpreted as being restricted to direct connections only. Thus, the scope of the expression ‘a device A coupled to a device B’ should not be limited to devices or systems wherein an output of device A is directly connected to an input of device B, and/or vice-versa. It means that there exists a path between an output of A and an input of B, and/or vice-versa, which may be a path including other devices or means.
The above and other objects and features of the invention will become more apparent and the invention itself will be best understood by referring to the following description of an embodiment taken in conjunction with
In a preferred embodiment of the present invention, the zapping agent 101 forms part of a DSLAM.
The first receiving means Rx1 is coupled to the first communication port 111 and to the channel transmitting means 117. The second receiving means Rx2 is coupled to the second communication port 112, to the backlogging means 116 and to the channel transmitting means 117. The backlogging means 116 is further coupled to the cache memory 113. The channel transmitting means 117 is further coupled to the cache memory 113 and to the first communication port 111.
The backlogging means 116 comprises a writing module Wr, which makes use of a write pointer Ptr_Wr for writing video frames into the cache memory 113.
The writing module Wr is coupled to the second receiving means Rx2 and to the cache memory 113.
The channel transmitting means 117 comprises:
The reading module Rd is coupled to the first receiving means Rx1, to the transmitting module Tx, to the control module Ctrl and to the cache memory 113. The control module Ctrl is further coupled to the switch Sw and to the second receiving means Rx2. The first switch position 121 is coupled to the transmitting module Tx, the second switch position 122 is coupled to the forwarding module Fw, the switch output is coupled to the first communication port 111. The forwarding module Fw is further coupled to the second receiving means Rx2.
The first receiving means Rx1 is adapted to receive a zap signal from the zapping client, whereby a new channel is asked for (see zap_chn in
The second receiving means Rx2 is adapted to receive video frames of the new channel from a video source. Video frames are made available to the writing module Wr and to the forwarding module Fw. The writing module Wr is further instructed whether the new available frame is an anchor frame or not, while the control module Ctrl is notified that a new anchor frame within the video stream VSn is available for further forwarding (see new_I in
The writing module Wr is adapted to backlog the last-forwarded GoP into the cache memory 113. Upon receipt of a new anchor frame from the second receiving means Rx2, the writing module Wr resets the pointer Ptr_Wr to the first element of the cache memory 113 (see resetw in
The reading module Rd is adapted to read video frames from the cache memory 113, and to make them available to the transmitting module Tx for further transmission towards user usrX. Upon trigger from the first receiving means Rx1 (see start_chn in
The operation of the writing module Wr and the reading module Rd shall be synchronized in order to preserve memory integrity.
The forwarding module Fw is adapted to get video frames from the second receiving means Rx2, and to forward them towards the switch position 122.
The transmitting module Tx is adapted to get video frames from the reading module Rd, and to transmit them towards the switch position 121.
The control module Ctrl is adapted to control the switch Sw (see set_sw_pos in
The operation of the forwarding module Fw, the transmitting module Tx and the switch Sw shall be synchronized so as to avoid frame corruption, and to minimize the jitter of the output video stream.
An operation of the zapping agent 101 follows with reference to both
In a preferred embodiment of the present invention, the second receiving means Rx2, the writing module Wr, the reading module Rd, the forwarding module Fw, the transmitting module Tx and the control module Ctrl are supplied with a reference clock clock_ref that matches the frame rate of the requested video stream (typically 24 or 30 frames-per-second or fps).
More specifically:
The ‘reset pointer Ptr_Wr’ and ‘set pointer Ptr_rd’ events have been depicted in
Suppose user usrX switches to channel chn. The zapping client sends a zap signal zap_chn to the zapping agent 101, whereby channel chn is requested. The zap signal zap_chn is received by the first receiving means Rx1 at time t_zap, and while GoP GoPi is being forwarded, immediately followed by GoPs GoPi+1, GoPi+2, and so on.
In a preferred embodiment of the present invention, video channel chn is encoded into video sequences of the form I B B P B B P B B P.
GoPi comprises video frames I1 B1 B2 P1 B3 B4 P2 B5 B6 P3, GoPi+1 comprises video frames I2 B7 B8 P4 B9 B10 P5 B11 B12 P6, and so on, where:
The present description would remain valid if another sequence and/or other frame types were used.
The video frames I1, B1, B2, etc, are received and made available at the rising edges of the clock signal clock_ref (see Rx2 timeline in
Video frames are pushed into the cache memory 113 and forwarded up to the switch position 122, which is at the time being not selected (see Wr and Fw time lines in
Upon receipt of the zap signal zap_chn, the first receiving means Rx1 triggers the reading module Rd (see start_chn in
Beforehand or concurrently, the reading module Rd triggers the control module Ctrl (see init_sw in
Then, the reading module Rd starts reading frames from the cache memory 113. Frames are made available to the transmitting module Tx, which transmits them through switch position 121 towards user usrX (see Rd, Tx, Sw and usrX timelines in
When the new anchor frame I2 is available for further forwarding (see 213 in
The reading module Rd and the transmitting module Tx may either stop transmitting new frames from the cache memory, or, as it is the case for that preferred embodiment, keep on reading and transmitting video frames towards switch position 121, which is de-facto no longer selected.
If t_zap occurs within the time-interval 201, the decoding means at user usrX's location will receive the video stream I1 B1 B2 P1 B3 I2 B7 B8 etc. The decoding means will then display a few moving pictures of the cached video sequence before displaying the real stream. The decoding means will not be able to decode B4 frame since that frame is predicted from both P1 and P2, the latter being missing.
If t_zap occurs within the time-interval 202, the decoding means will receive the video stream I1 B1 B2 P1 B3 B4 P2 B5 B6 I2 B7 B8 etc. The decoding means will display more frames of the cached video sequence before displaying the real stream, making the transition even smoother.
If t_zap occurs within the time-interval 203, the switch Sw will be switched to position 122 before the transmitting module Tx transmits the first frame. In such a case, the decoding means will not get any frame from the cache memory, and will be immediately supplied with the real stream.
While, for convenience purpose, video streams have been depicted on their respective timeline in the display order, it should be understood that the actual transmit order may be (and is likely to be) different. Yet, this will not change the system response time, as observed by user usrX.
In an alternative embodiment of the present invention, the zapping unit 101 forms part of a video server. If so, the port 111 would stand for an internal communication port towards a co-located encoding means, and the second receiving means Rx2 would be reduced to the basic function of getting and passing video frames, e.g. by means of a shared memory, to the backlogging means 116 and to the channel transmitting means 117, and as such might be combined with one or both of them.
A final remark is that embodiments of the present invention are described above in terms of functional blocks. From the functional description of these blocks, given above, it will be apparent for a person skilled in the art of designing electronic devices how embodiments of these blocks can be manufactured with well-known electronic components. A detailed architecture of the contents of the functional blocks hence is not given.
While the principles of the invention have been described above in connection with specific apparatus, it is to be clearly understood that this description is made only by way of example and not as a limitation on the scope of the invention, as defined in the appended claims.
Number | Date | Country | Kind |
---|---|---|---|
04292240.1 | Sep 2004 | EP | regional |