So that the manner in which the above recited features of the present invention can be understood in detail, a more particular description, of the invention, briefly summarized above, may be had by reference to embodiments, some of which are illustrated in the appended drawings. It is to be noted, however, that the appended drawings illustrate only typical embodiments of this invention and are therefore not to be considered limiting of its scope, for the invention may admit to other equally effective embodiments.
To facilitate understanding, identical reference numerals have been used, wherever possible, to designate identical elements that are common to the figures.
The broadcast site 104 may comprise a central location or station that receives digital content from at least one content provider. The broadcast site 104 is primarily responsible for facilitating the transmission of the received programming content. In one embodiment, the broadcast site 104 includes a set of encoders 103 that is configured to receive the programming content from the content provider (e.g., one encoder for each channel). Generally, each encoder converts the received programming content into an Internet Protocol (IP) packet stream. In one embodiment of the present invention, the IP packet streams are statistically multiplexed with the aid of the SMC 110. The processed IP packet streams are subsequently provided to the IPE 107. In one embodiment, the IPE 107 is the system component that receives all of the IP packet streams from the encoders 103 and converts the IP data into MPEG-2 bursts. At this point, the data bursts are provided to the modulator 105. The modulator 105 (e.g., a DVB-H modulator) is configured to blend the content signal into a carrier signal for distribution. The modulated signal is then forwarded to a transmitter 106 (e.g., a DVB-H transmitter) which in turn provides the signal to a transmission tower 108. Once the signal is broadcasted from the transmission tower 108, the modulated signal is received by one or more mobile devices 1141 . . . n (e.g., handheld mobile receivers) as depicted in
In one embodiment, the broadcast site 104 may be configured to statistically multiplex digital content associated with a plurality of channels. Notably, by delivering a DVB-H multiplex signal in which all the channels are statistically multiplexed, the quality of the delivered video may be improved, a greater number of services may be provided, and/or additional error correction overhead may be introduced. These enhancements may be achieved by implementing a statistical multiplexing control application that is capable of coordinating the encoders, which are used to compress, transcode, and deliver content. Furthermore, channel acquisition performance will also be improved by aligning I-frame data with DVB-H time-slice bursts.
The output stream 201 from an IPE depicts the variable length and aperiodic data bursts contained in time slices (e.g., time-slices 204-208). For example, the first time-slice shows that the packets for Service 1 are transmitted first, followed by all of the packets for Service 2. In a conventional multiplexing scheme, the average number of packets are generally identical (i.e., the number of packets is not variable) and remain constant for each subsequent time-slice. Conversely, in a statistically multiplexing scheme, the number of packets for Service 1 may differ in subsequent time-slices to reflect the changing complexity of the programming content over time.
The AVC encoders 3021 . . . m initially receive programming content from a program provider for encoding (e.g., each encoder receives the content from a separate channel). In one embodiment, the programming content may be encoded using H.264 or any other like protocol. The encoders 3021 . . . m are also responsible for transmitting a “need” data value to the SMC 310. In one embodiment, the need data value is a numerical value that represents the picture complexity of the digital video being encoded.
Each encoder also inserts a burst identifier (which is assigned by the SMC 310) into packets (e.g., an IP header) in order to identify the relevant packets that will constitute a portion of a time-slice burst transmitted by the IPE (i.e., each time-slice burst, along with its associated packets from different encoders, is identified by its own burst identifier). The encoded IP packet streams from the encoders 3021 . . . m are ultimately forwarded to the IP encapsulator 307 for encapsulation.
The SMC 310 is responsible for facilitating the statistical multiplexing of digital content. Initially, the SMC 310 receives need data values from the encoders. The SMC 310 subsequently responds by processing the need data values and dynamically assigning a bit rate allocation (e.g., bandwidth) and burst identifier to each encoder. The burst identifier serves as a label to group all the different packets that constitutes a single time-slice. Similarly, the SMC 310 synchronizes the encoder bandwidth allocations during each burst cycle so that a maximum aggregate rate (Rmax) is not collectively exceeded by the encoders (for a given time slice). The SMC 310 also receives feedback from the IPE 307 regarding the overestimation or the underestimation of overhead introduced by the IPE. Accordingly, the SMC 310 adjusts its previous Rmax rate in light of the feedback. The SMC 310 may be embodied as software or as hardware. As software, the SMC 310 may reside in the IPE 307 or in the encoders. Alternatively, the SMC 310 may exist as a stand-alone computer or another similar hardware device.
The IP encapsulator (IPE) 307 is a component used to collect video streams from the encoders to form an encapsulated DVB-H transport stream. The IPE 307 contains a buffer 314 that is used to temporarily store encoder data. The IPE 307 uses the burst identifier attached to each packet to determine which packets should compose a particular time-slice burst. The IPE 307 provides buffer usage feedback to the SMC 310. For example, the IPE 307 informs the SMC 310 if there is an underestimation or overestimation of overhead introduced by the IPE when encapsulating the encoder IP packets into MPEG-2 transport packets. After encapsulating the IP packets into an MPEG transport stream, the IPE 307 transmits the transport stream as output to the modulator 305 at a fixed bit rate. The modulator 305 (e.g., a DVB-H modulator) processes the signal stream and forwards it to a transmission tower 308 via the broadcast site transmitter 306 (e.g. a DVB-H transmitter).
At step 406, a bit rate allocation is provided to encoders. In one embodiment, the SMC 310 uses the need data value(s) to determine the bit rate allocation of each encoder. More specifically, the SMC 310 processes the need data value from each encoder and allocates a corresponding number of bits based on the need data value. This allocation is conducted with respect to a maximum aggregate value (e.g., Rmax), which represents the total bandwidth available for a given time-slice burst. At this time, a burst identifier is assigned to each encoder.
At step 408, the encoder bandwidth allocations are synchronized. In one embodiment, the SMC 310 synchronizes the bandwidth allocations for each encoder during each burst cycle by using a maximum aggregate rate. Notably, the maximum aggregate rate (Rmax) is not to be exceeded (i.e., Rmax is tied to the maximum output rate of the IP encapsulator) and the bandwidth allocations are synchronized accordingly so that the aggregate bit rate allocations to the encoders are less than Rmax. In one embodiment, Rmax is calculated in light of Multiprotocol Encapsulation (MPE), MPE Forward Error Correction (MPE-FEC), and Moving Pictures Experts Group (MPEG) transport packetization considerations.
At step 409, the burst identifier is encoded into the encoder output. Notably, each burst identifier is unique to a given time-slice burst. That is, the burst identifier is provided to all the encoders, which in turn respectively insert the burst identifier into the packets that will compose the given time-slice burst. In one embodiment, the burst identifier is placed within an IP header.
At step 410, the IPE 307 receives an IP packet stream from an encoder and reads the associated burst identifier to determine if the end of the burst has been received. If the IP packet is not at the end of the stream, the IPE 307 continues to buffer the incoming IP packets. If the burst identifier of the received IP packet is different from the burst identifier of the previously received IP packet and thus indicates a new burst, then the method 400 continues to step 412.
At step 412, the accumulated IP data in the IPE buffer 314 is encapsulated. Notably, the data is ready for transmission and the IPE encapsulates the IP datagrams into MPEG (e.g., MPEG-2) transport packets and transmits the encapsulated data. In one embodiment, the IPE also computes forward error correction (FEC) data. Similarly, the IPE 307 may encrypt the MPEG packets that are to be transmitted.
At step 414, efficiency feedback is received. In one embodiment, the SMC 310 receives bit rate allocation overhead feedback from the IPE 307. Notably, the feedback from the IPE 307 pertains to whether the IPE output is tending to overflow or underflow.
At step 416, Rmax is adjusted. In one embodiment, the SMC adjusts the Rmax in response to the efficiency feedback received by the IPE. For example, the SMC adjusts the existing Rmax (e.g., raising or lowering the value of Rmax) depending on the feedback received (overrun and underrun). The method 400 continues to step 418 and ends.
After receiving the need data from the encoders associated with Service A and Service B, the SMC 310 dynamically allocates bits to the respective encoders based on the most recent need data. Specifically, the total amount of bits allocated to service A and B cannot exceed 1.82 Mbits. The SMC 310 also assigns a burst identifier (e.g., slice “n1”) that corresponds to the bit allocation. Consequently, each encoder tags each packet belonging to slice “n” with the burst identifier. Each encoder also encodes the first picture data as an I-frame or Instantaneous Decoder Refresh (IDR) picture data.
The encoders transmit their respective burst portions (e.g., via a stream 506) to the IPE 307, which stores the received data in a buffer 314. Notably, the IPE 307 is able to use the burst identifiers to distinguish among previous, current and next time-slice data. The IPE 307 then encapsulates the data and arranges the data that belongs to a given time-slice according to the providing encoder (e.g., IPE output 508 is arranged as Service A then Service B). The IPE 307 subsequently FECs the data and ultimately bursts the data.
The IPE 307 then compares the actual slice duration to the target slice duration utilized by the SMC 310. If the actual slice duration is greater than the target slice duration, the SMC 310 under-estimated the encapsulation overhead (OH). This is illustrated at 510 in
It should be noted that the present invention can be implemented in software and/or in a combination of software and hardware, e.g., using application specific integrated circuits (ASICs), a general purpose computer or any other hardware equivalents. In one embodiment, the present statistical multiplexing control module or process 605 can be loaded into memory 604 and executed by processor 602 to implement the functions as discussed above. As such, the present statistical multiplexing control process 605 (including associated data structures) of the present invention can be stored on a computer readable medium or carrier, e.g., RAM memory, magnetic or optical drive or diskette and the like.
While the foregoing is directed to embodiments of the present invention, other and further embodiments of the invention may be devised without departing from the basic scope thereof, and the scope thereof is determined by the claims that follow.