US 7436332 B2 Abstract A method and an encoder (
1001) are disclosed for encoding an input bitstream derived from a block of coefficients relating to video data. Leading zeros and tailing zeros are determined and removed (4050, 4070) from the input bitstream. Parity bits are generated (60) for bits remaining in the input bitstream. An encoded bitstream (1032) is then generated, where the encoded bitstream (1032) comprises the number of leading zeros, the number of tailing zeros, and the parity bits.Claims(9) 1. A method of encoding an input bitstream derived from a block of coefficients relating to video data, the method comprising the steps of:
determining and removing from said input bitstream a plurality of leading zeros or tailing zeros;
generating parity bits for bits remaining in said input bitstream; and
creating an encoded bitstream comprising a number of leading zeros or tailing zeros and said parity bits.
2. The method according to
3. The method according to
4. Encoder for encoding an input bitstream derived from a block of coefficients relating to video data, the encoder comprising:
device for determining and removing from said input bitstream a plurality of leading zeros or tailing zeros;
device for generating parity bits for bits remaining in said input bitstream; and
device for creating an encoded bitstream comprising a number of leading zeros or tailing zeros and said parity bits.
5. The encoder according to
6. The encoder according to
7. A computer program product including a computer readable medium having recorded thereon a computer program for implementing a method of encoding an input bitstream derived from a block of coefficients relating to video data, the method comprising the steps of:
determining and removing from said input bitstream a plurality of leading zeros or tailing zeros;
generating parity bits for bits remaining in said input bitstream; and
creating an encoded bitstream comprising a number of leading zeros or tailing zeros and said parity bits.
8. The computer program product according to
9. The method according to
Description This application claims the right of priority under 35 U.S.C. § 119 based on Australian Patent Application No. 2006204634, filed Aug. 31, 2006, which is incorporated by reference herein in its entirety as if fully set forth herein. The present invention relates generally to video encoding and decoding and, in particular, to a bypass to a parallel concatenated code. Various products, such as digital cameras and digital video cameras, are used to capture images and video. These products contain an image sensing device, such as a charge coupled device (CCD), which is used to capture light energy focussed on the image sensing device that is indicative of a scene. The captured light energy is then processed to form a digital image. There are various formats to represent the digital images or videos, which include Motion JPEG, MPEG2, MPEG4 and H.264. These are all video formats, rather than image or video formats. All the formats listed above have in common that they are compression formats. While those formats offer high quality and improve the number of images that can be stored on a given media, they typically suffer because of their long encoding runtime. A complex encoder requires complex hardware. Complex encoding hardware in turn is disadvantageous in terms of design cost, manufacturing cost and physical size of the encoding hardware. Furthermore, long encoding runtime delays the camera shutter. Additionally, more complex encoding hardware has higher battery consumption. As battery life is essential for a mobile device, it is desirable that battery consumption be minimized in mobile devices. It is an object of the present invention to substantially overcome, or at least ameliorate, one or more disadvantages of existing arrangements. According to an aspect of the present invention, there is provided a method of encoding an input bitstream derived from a block of coefficients relating to video data, the method comprising the steps of: determining and removing from said input bitstream a plurality of leading zeros or tailing zeros; generating parity bits for bits remaining in said input bitstream; and creating an encoded bitstream comprising a number of leading zeros or tailing zeros and said parity bits. According to another aspect of the present invention, there is provided an apparatus for implementing any one of the aforementioned method. According to another aspect of the present invention there is provided a computer program product including a computer readable medium having recorded thereon a computer program for implementing any one of the methods described above. Other aspects of the invention are also disclosed. One or more embodiments of the present invention will now be described with reference to the drawings, in which: Where reference is made in any one or more of the accompanying drawings to steps and/or features, which have the same reference numerals, those steps and/or features have for the purposes of this description the same function(s) or operation(s), unless the contrary intention appears. The components As seen in The computer module The components Typically, the application programs discussed above are resident on the hard disk drive The system In one implementation encoder Referring again to Encoded key-frames The encoding of frames The encoding of key frames In the spectral selection mode of JPEG compression the zigzag sequence of coefficients, for each 8×8 block of DCT coefficients, is divided into a plurality of contiguous segments. Each contiguous segment is then encoded, in order, in separate scans through the image. That is, coefficients in a first segment of each block are encoded into a bit-stream before coefficients of a next segment of each block are encoded, and so on until substantially all segments of preferably every block of the image are encoded. While JPEG compression is predominantly used to compress a still image, there are various video encoding formats known loosely as “Motion JPEG”. Motion JPEG encodes each frame of a video as a still image using JPEG, and provides a compressed video stream format for wrapping all the encoded frames of a video into a Motion JPEG encoded stream. However, Motion JPEG was never formally standardized. In an alternative implementation the key frame encoder While JPEG2000 is predominantly used to compress a still image, Motion JPEG2000 encodes each frame of a video as a still image using JPEG2000. It provides a compressed video stream format for wrapping all the encoded frames of a video into a Motion JPEG2000 encoded stream. In yet another alternative implementation the key frame encoder The key frame encoder In temporal prediction, motion estimation is carried out. To achieve more precise motion estimation the macro-blocks are also partitioned into sub-macro-blocks having a size of 16×16, 16×8, 8×16, 8×8, 8×4, 4×8 or 4×4 samples. The different sizes and shapes enhance the precision of the motion prediction. After the prediction processing step a 2-D transformation is carried out on each block to spatially decorrelate the data. This 2-D transformation supports 8×8 and 4×4 blocks, and is based in integers which enables an exact inverse transformation without rounding errors. After each block has been 2-D transformed, the block samples are quantized. The quantization is controlled by a single quantization parameter which can be different for each single block. After quantization the 2-dimensional blocks are scanned in zigzag fashion such that the highest variance coefficients come first and the lowest variance coefficients come last. Finally, the sequences of coefficients are entropy encoded. In the H.264 standard there are two modes of entropy encoding: variable length coding and binary arithmetic coding. Both of those modes are context adaptive. Having described the encoding of the key frames As an alternative embodiment, the transformation in step Next, in step where the constant tol is some tolerance, preferably 1% (0.01). Each 8×8 block of coefficients may have a different quantization step size parameter q. An advantage of using such a quantization step size parameter q is that the noise introduced by the quantization step
where g is the level of gain noise (e.g. g=0.01 for 1% gain noise). Now suppose the quantization is done uniformly in the log domain (y=log
since the quantization error is at most ˝ the quantization step size. Transforming back to the original pixel (x) domain, the error bound is then:
Thus, the quantization noise matches, or satisfies the bound of, the gain noise. For example if the constant tol=1%, then the error introduced by the quantization is at a similar level to that of gain noise of 1%. By using such quantization a high quality can be maintained while compressing. The quantization matches a gain noise of 1% (in a loose sense), while taking advantage of some basic frequency properties of the human visual system. In other embodiments, other quantization step sizes can be used for quantizing the DCT coefficients in the luminance and chrominance channels. In particular the user may select a higher compression factor, trading off space for quality, which can be implemented by using larger quantization step sizes. Alternatively, the user may select a lower compression factor when quality is at a premium. The quantization of step Step In the preferred embodiment the scanning in step The scanning and appending continues in this manner until step Within this bit stream the number of leading zeros (i.e. the number of non significant coefficients before the first significant coefficient appears in the bit stream) is determined in step The leading and trailing zeros are interleaved, used to generate parity bits and then punctured. By reducing the amount of data that passes through these steps the efficiency of the system can be increased. In the remaining bit stream the number of the tailing zeros is determined in step It is also possible to remove only the leading zeros, or alternatively only the trailing zeros, from the bitstream. This remaining bit stream is sent to a turbo coder for encoding in step A turbo coder performs better if the input bit stream is longer. As removing leading and trailing zeros alters the length of the input bit stream the performance of the turbo coder may be affected. In an alternative embodiment, to overcome the reduction in the bit stream length from trimming trailing and leading zeros, the scanning described above can extend over two or more blocks of coefficients. This lengthens the bit stream and improves the performance of the turbo coder. Depending on how the blocks are encoded into the bitstream this may also lengthen the run of the leading and the tailing zeros. If the blocks are simply concatenated together then no advantage will be gained. However, if the values of the blocks are interleaved then the leading and trailing zeros will also lengthen for the enlarged block. Alternatively each bitplane of the extended blocks could be encoded into the bitstream before moving on to the less significant bit planes. The turbo coder used in step The turbo coder receives as input the bit stream The output from the interleaver A second recursive systematic coder The puncturer In the prior art a puncturer typically deletes every second bit regardless of the bit plane. The puncturer In the preferred embodiment, assuming that there are 8 bit planes, no parity bits are punctured in the first (most significant) bit plane. In the second bit plane, every fourth parity bit is preferably punctured. In the third bit plane, every third parity bit is preferably punctured. In the fourth and fifth bit planes, every second bit is preferably punctured. In the sixth bit plane every third bit is preferably not punctured. In the seventh bit plane every fourth bit is preferably not punctured. In the eighth (least significant) bit plane all parity bits are punctured. This bit plane dependent puncturing scheme produces a half rate code. However, any other code rate can be achieved with a similar coding scheme. In an alternative embodiment the bit plane depending puncturing scheme performed in the puncturer The turbo coder The encoding of both the key frames The encoded key-frames The decoded key frames The estimated frame from the estimator The encoded bit stream Furthermore, the decoder Reconstructor In an alternative embodiment the DCT coefficients from the first and second sets are combined by a convex combination as follows:
where coeff The resulting DCT coefficients coeff The decoded non-key frames Having described the joint decoder Parity Bits The systematic bits In a similar manner, Parity Bits As can be seen in The processing performed in this loop is now described in more detail. The component decoder In the first iteration the feedback input from the second component decoder The (decoded) bit sequence produced by component decoder After adder In the preferred embodiment eight iterations between the first component decoder The foregoing describes only some embodiments of the present invention, and modifications and/or changes can be made thereto without departing from the scope and spirit of the invention, the embodiments being illustrative and not restrictive. In the context of this specification, the word “comprising” means “including principally but not necessarily solely” or “having” or “including”, and not “consisting only of”. Variations of the word “comprising”, such as “comprise” and “comprises” have correspondingly varied meanings. Patent Citations
Referenced by
Classifications
Legal Events
Rotate |