HK1206179B - Methods, devices and systems for parallel video encoding and decoding - Google Patents
Methods, devices and systems for parallel video encoding and decoding Download PDFInfo
- Publication number
- HK1206179B HK1206179B HK15106468.3A HK15106468A HK1206179B HK 1206179 B HK1206179 B HK 1206179B HK 15106468 A HK15106468 A HK 15106468A HK 1206179 B HK1206179 B HK 1206179B
- Authority
- HK
- Hong Kong
- Prior art keywords
- entropy
- slice
- decoding
- slices
- video
- Prior art date
Links
Abstract
A method for decoding a video bitstream is disclosed. The method comprises: entropy decoding a first portion(112-1) of a video bitstream(52), wherein first portion(112-1) of video bitstream is associated with a video frame(110), thereby producing a first portion(112-1) of decoded data; entropy decoding a second portion(112-2) of video bitstream(52), wherein second portion(112-2) of video bitstream(52) is associated with video frame(110), thereby producing a second portion(112-2) of decoded data, wherein entropy decoding second portion(112-2) of video bitstream(52) is independent of entropy decoding first portion(112-1) of video bitstream(52); and reconstructing a first portion(112-1) of video frame(110) associated with video bitstream(52) using first portion(112-1) of decoded data and second portion(112-2) of decoded data.
Description
Description of divisional applications
The present application is a divisional application of an inventive patent application entitled "method, apparatus and system for parallel video encoding and decoding" filed on 3/25/2009, application No. 200980110928.2 (international application No. PCT/JP 2009/056778).
Technical Field
Embodiments of the present invention generally relate to video encoding.
Background
Recent video coding methods and standards in the art, such as h.264/MPEG-4 AVC (h.264/AVC), can provide higher coding efficiency at the cost of higher complexity than conventional methods and standards. The increasing quality and resolution requirements for video coding methods and standards may also increase their complexity. Decoders that support parallel decoding can increase decoding speed and reduce memory requirements. Furthermore, the development of multi-core processors may make encoders and decoders that support parallel decoding desirable.
H.264/MPEG-4 AVC [ Joint Video Team of ITU-T VCEG and ISO/IEC MPEG, "H.264: advanced video coding for genetic audio services ", ITU-T rech.264 and ISO/IEC 14496-10(MPEG4-Part 10), November 2007] is a video codec specification that uses subsequent residual encoded macroblock prediction to reduce temporal and spatial redundancy in video sequences for compression efficiency, which is incorporated herein by reference in its entirety.
Disclosure of Invention
Some embodiments of the invention include: methods, devices and systems for parallel entropy encoding and decoding of video bitstreams based on partitioning of data into entropy slices that can be independently entropy encoded and decoded.
According to an aspect of the present invention, there is provided a method for decoding a video bitstream. The method comprises the following steps: entropy decoding a first portion of a video bitstream, wherein the first portion of the video bitstream is associated with a video frame, thereby generating a first portion of decoded data; entropy decoding a second portion of the video bitstream, wherein the second portion of the video bitstream is associated with the video frames, thereby generating a second portion of decoded data, wherein entropy decoding the second portion of the video bitstream is independent of entropy decoding the first portion of the video bitstream; and reconstructing a first portion of a video frame associated with the video bitstream using the first portion of decoded data and the second portion of decoded data.
According to another aspect of the present invention, a method for decoding video frames in a video sequence is provided. The method comprises the following steps: receiving a bit stream; identifying a reconstructed slice in the bitstream; identifying a plurality of entropy slices associated with a reconstruction slice in a bitstream; entropy decoding each of a plurality of entropy slices associated with a reconstruction slice, thereby generating a plurality of entropy-decoded entropy slices; and reconstructing a portion of the video frame associated with the reconstruction slice using the plurality of entropy-decoded entropy slices.
According to another aspect of the present invention, a method for encoding a video frame in a video sequence is provided. The method comprises the following steps: dividing a first frame in a video sequence into at least one reconstruction slice, thereby generating a first reconstruction slice; and dividing the first reconstruction slice into a plurality of entropy slices.
According to another aspect of the present invention, there is provided a method for generating a video bitstream for parallel decoding. The method comprises the following steps: receiving a first video bitstream; identifying a reconstructed slice in a video bitstream; entropy decoding the plurality of symbols from the reconstruction slice, thereby generating entropy decoded data associated with the reconstruction slice; dividing entropy-decoded data associated with a reconstruction slice into a plurality of entropy slices associated with the reconstruction slice; entropy-encoding the entropy-decoded data of each of the plurality of entropy slices independently, thereby generating a plurality of entropy-encoded entropy slices; and generating a second video bitstream comprising a plurality of entropy encoded entropy slices.
In some embodiments of the present invention, the first and second portions of the input compressed video bitstream may be entropy decoded independently. A block of samples of a video frame associated with the second portion of the input compressed video bitstream may be reconstructed using decoded data from the first portion and the second portion. Thus, the reconstruction neighbor definition and the entropy decoding neighbor definition are not the same.
In some embodiments of the invention, the encoder may divide the input data into entropy slices. The encoder may entropy encode the entropy slices independently. The encoder may form a bitstream including entropy slice headers, each of which may indicate a location in the bitstream of related data for an entropy slice. In some embodiments of the invention, a decoder may parse a received bitstream to obtain an entropy slice header, and the decoder may entropy decode a plurality of entropy slices according to a level of parallelism defined by the decoder.
In some embodiments of the invention, the data may be multiplexed at the picture level to form entropy slices. In some embodiments, one or more entropy slices may correspond to prediction data and one or more entropy slices may correspond to residual data. In alternative embodiments of the present invention, one or more entropy slices may correspond to each of a plurality of color planes.
In some embodiments of the invention, the bitstream may be transcoded to include entropy slices. In these embodiments, the received bitstream may be entropy decoded, multiple entropy slices may be constructed, and each of the entropy slices may be independently encoded and written to the transcoded bitstream having an associated entropy slice header.
The foregoing and other objects, features and advantages of the invention will be more readily understood upon consideration of the following detailed description of the invention taken in conjunction with the accompanying drawings.
Drawings
FIG. 1 is a diagram showing an H.264/AVC video encoder (prior art);
FIG. 2 is a diagram showing an H.264/AVC video decoder (prior art);
FIG. 3 is a diagram showing an exemplary sheet structure (Prior Art);
FIG. 4 is a diagram illustrating an exemplary slice group structure (prior art);
fig. 5 is a diagram illustrating an exemplary slice division in which a picture may be divided into at least one reconstruction slice and a reconstruction slice may be divided into more than one entropy slice according to an embodiment of the present invention;
FIG. 6 is a diagram illustrating an exemplary embodiment of the present invention comprising entropy slices;
FIG. 7 is a diagram illustrating an exemplary embodiment of the present invention including parallel entropy decoding of multiple entropy slices with post-slice reconstruction;
FIG. 8 is a diagram illustrating an exemplary embodiment of the present invention, including multiplexing of prediction/residual data at the picture level for entropy slice construction;
FIG. 9 is a diagram illustrating an exemplary embodiment of the present invention, including color plane multiplexing at the picture level for entropy slice construction; and
fig. 10 is a diagram illustrating an exemplary embodiment of the present invention, including transcoding a bitstream through entropy decoding, forming entropy slices, and entropy encoding.
Reference numerals
2 H.264/AVC video encoder
32 entropy coding
54 entropy decoding
80 H.264/AVC video decoder
110 video frame
111. 112, 113 reconstruction slice
112-1, 112-2 and 112-3 entropy slices
115. 116, 117, 118, 119, 120, 121, 122, 123 macroblocks
Detailed Description
Embodiments of the invention will be best understood by reference to the drawings, wherein like parts are designated by like numerals throughout. The figures listed above are expressly incorporated as part of this detailed description.
It will be readily understood that the components of the present invention, as generally described and illustrated in the figures herein, could be arranged and designed in a wide variety of configurations. Thus, the following more detailed description of the embodiments of the method, apparatus and system of the present invention is not intended to limit the scope of the invention, but it is merely representative of the presently preferred embodiments of the invention.
Elements of embodiments of the present invention may be implemented in hardware, firmware, and/or software. Although exemplary embodiments disclosed herein may describe only one of these forms, it should be understood that one skilled in the art could implement these elements in any of these forms while remaining within the scope of the present invention.
Although embodiments of the present invention may be adapted to any video encoder/decoder (codec) using entropy encoding/decoding, exemplary embodiments of the present invention will be illustrated in connection with an h.264/AVC encoder and an h.264/AVC decoder. This is done to illustrate embodiments of the invention and not to limit them.
Recent video coding methods and standards in the art (e.g., h.264/AVC) can provide higher coding efficiency at the expense of higher complexity than conventional methods and standards. The increasing quality and resolution requirements for video coding methods and standards may also increase their complexity. Decoders that support parallel decoding can increase decoding speed and reduce memory requirements. Furthermore, the development of multi-core processors may make encoders and decoders that support parallel decoding desirable.
h.264/AVC and many other video coding standards and methods are based on a block-based hybrid video coding approach, where the source coding algorithm is a hybrid of inter-picture (also inter considered) prediction, intra-picture (also intra considered) prediction, and transform coding of the prediction residual. Inter prediction may exploit temporal redundancy and intra prediction and transform coding of prediction residuals may exploit spatial redundancy.
FIG. 1 shows a block diagram of an exemplary H.264/AVC video encoder 2. An input picture 4 (also considering the input frame) may be introduced for encoding. A prediction signal 6 and a residual signal 8 may be generated, wherein the prediction signal 6 may be based on inter prediction 10 or intra prediction 12. The inter prediction 10 may be determined by motion compensation 14 using the stored reference picture 16 (also taking into account the reference frame), using motion information 19 determined by the motion estimation 18 process between the input frame (input picture) 4 and the reference frame (reference picture) 16. The intra prediction 12 may be determined by intra prediction 20 using the decoded signal 22. The residual signal 8 may be determined by subtracting the input frame 4 from the prediction (prediction signal) 6. The residual signal 8 is transformed, scaled and quantized 24, generating quantized transform coefficients 26. Decoded signal 22 may be generated by adding prediction signal 6 to signal 28 generated by inverse transforming, scaling and inverse quantizing 30 quantized transform coefficients 26. The motion information 19 and quantized transform coefficients 26 may be entropy encoded 32 and written to a compressed video bitstream 34. An output image area 38 (e.g., a portion of a reference frame) may be generated at the encoder 2 by filtering 36 the reconstructed pre-filtered signal (decoded signal) 22.
FIG. 2 outputs a block diagram of an exemplary H.264/AVC video decoder 50. The input signal 52 (also considering the bit stream) may be introduced for decoding. The received symbols may be entropy decoded 54 to generate motion information 56 and quantized, scaled transform coefficients 58. The motion information 56 may be combined with a portion of the reference frame 84 that may reside in the frame memory 64 by motion compensation 60 and may produce inter prediction 68. The quantized, scaled transform coefficients 58 may be inverse quantized, inverse scaled and inverse transformed 62 to generate decoded residual signals 70. The residual signal 70 may be added to the prediction signal 78 (inter prediction signal 68 or intra prediction signal 76) and become the combined signal 72. The intra-predicted signal 76 can be predicted by intra-prediction 74 from previously decoded information (previously combined signal) 72 in the current frame. The combined signal 72 may be filtered by a deblocking filter 80 and a filtered signal 82 may be written to the frame memory 64.
In h.264/AVC, an input picture is divided into fixed-size macroblocks, where each macroblock covers a rectangular picture region composed of 16x16 samples for the luminance component and 8x8 samples for each of the two chrominance components. The decoding process of the h.264/AVC standard is specified for each macroblock as a processing unit. The entropy decoder 54 parses and demultiplexes the syntax elements of the compressed video bitstream 52. H.264/AVC specifies two alternative entropy decoding methods: low complexity techniques, the use of context adaptive transform sets based on variable length codes, called CAVLC; and computationally more demanding algorithms, context-based adaptive binary arithmetic coding, known as CABAC. In both entropy decoding methods, the decoding of the current symbol may rely only on the previously correctly decoded symbol and the adaptively updated context model. Furthermore, different data information (e.g., prediction data information, residual data information, and different color planes) may be multiplexed together. No demultiplexing may be performed before entropy decoding the elements.
After entropy decoding, a macroblock can be reconstructed by obtaining a residual signal subjected to inverse quantization and inverse transformation, and a prediction signal (an intra prediction signal or an inter prediction signal). The block distortion may be reduced by applying deblocking filtering to each decoded macroblock. Processing may not begin until the input signal is entropy decoded, making entropy decoding a potential bottleneck for decoding.
Similarly, in codecs that can allow alternative prediction mechanisms (e.g., inter-layer prediction in h.264/AVC or in other scalable codecs), entropy decoding is necessary before all processing at the decoder, making entropy decoding a potential bottleneck.
In h.264/AVC, an input picture including a plurality of macroblocks may be divided into one or several slices. Assuming that the reference pictures used at the encoder and decoder are the same, the values of the samples in the area of the picture represented by a slice can be correctly decoded without using data from other slices. Therefore, entropy decoding and macroblock reconstruction for a slice are not dependent on other slices. In particular, the entropy coding state is reset at the beginning of each slice. When contiguous availability is defined for entropy decoding and reconstruction, data in other slices is marked as unavailable. In H.264/AVC, slices can be entropy decoded and reconstructed in parallel. Intra prediction and motion vector prediction are not allowed to cross slice boundaries. Deblocking filtering may use information that crosses slice boundaries.
Fig. 3 shows an exemplary video picture 90 comprising 11 macroblocks in the horizontal direction and 9 macroblocks in the vertical direction (9 exemplary macroblocks are labeled 91-99). Fig. 3 shows three exemplary sheets: the first slice is denoted as "slice # 0" 100, the second slice is denoted as "slice # 1" 101, and the third slice is denoted as "slice # 2" 102. The h.264/AVC decoder can decode and reconstruct the three slices 100, 101, 102 in parallel. At the start of the decoding/reconstruction process for each slice, the context model is initialized or reset and the macroblocks in the other slices are marked as unavailable for entropy decoding and macroblock reconstruction. Thus, for a macroblock (e.g., the macroblock labeled 93 in "slice # 1"), the macroblocks in "slice # 0" (e.g., the macroblocks labeled 91 and 92) may not be used for context model selection or reconstruction. Conversely, for a macroblock (e.g., the macroblock labeled 95 in "slice # 1"), other macroblocks in "slice # 1" (e.g., the macroblocks labeled 93 and 94) may be used for context model selection or reconstruction. Therefore, entropy decoding and macroblock reconstruction must be continuously processed within a slice. Macroblocks within a slice are processed in raster scan order unless the slice is defined using Flexible Macroblock Ordering (FMO).
Flexible macroblock ordering defines slice groups to modify how a picture is divided into slices. The macroblocks in a slice group are defined by a macroblock to slice group mapping signaled by the picture parameter set and the content of the additional information in the slice header. The macroblock to slice group mapping consists of the slice group identification number of each macroblock in the picture. The slice group identification number specifies which slice group the associated macroblock belongs to. Each slice group may be divided into one or more slices, where a slice is a sequence of macroblocks within a particular slice group processed in raster scan order within the macroblock set of the slice group. Entropy decoding and macroblock reconstruction must be processed continuously within a slice.
Fig. 4 depicts an exemplary macroblock allocation as three slice groups: a first slice group denoted as "slice group # 0" 103, a second slice group denoted as "slice group # 1" 104, and a third slice group denoted as "slice group # 3" 105. In the picture 90, these slice groups 103, 104, 105 may be associated with two foreground regions and one background region, respectively.
Some embodiments of the invention may include partitioning a picture into one or more reconstruction slices, wherein a reconstruction slice may be self-contained in the sense that, assuming that the reference pictures used at the encoder and decoder are the same, the values of samples within the picture region represented by the reconstruction slice can be correctly reconstructed without using data from other reconstruction slices. For reconstruction, all reconstructed macroblocks within a reconstruction slice are available in the neighborhood definition.
Some embodiments of the invention may include partitioning a reconstructed slice into more than one entropy slice, wherein an entropy slice may be independently self-sufficient in the sense that symbol values within a picture region represented by the entropy slice may be correctly entropy decoded without using data from other entropy slices. In some embodiments of the present invention, the entropy coding state may be reset at the start of decoding of each entropy slice. In some embodiments of the invention, when adjacent availability is defined for entropy decoding, data in other entropy slices may be marked as unavailable. In some embodiments of the present invention, macroblocks in other entropy slices may not be used in the context model selection for the current block. In some embodiments of the invention, the context model may be updated only within the entropy slice. In these embodiments of the invention, each entropy decoder associated with an entropy slice may maintain its own set of context models.
Some embodiments of the invention may include CABAC encoding/decoding. The CABAC encoding process includes the steps of:
binarization: symbols that are not binary values (e.g., transform coefficients, motion vectors, or other encoded data) are converted into binary codes (also referred to as bin strings).
The binarization is followed by the following steps: for each bin of the binarized symbol (also taking into account the bits),
selecting a context model: the context model is a probability model for one or more bins of the binarized symbol. For each bin, the probability that the context model includes a bin is "1" or "0". Depending on the statistics of the most recently encoded data symbols (usually based on the upper left neighboring symbols, if available), the model may be chosen as a selection of available models.
Binary arithmetic coding: the arithmetic coder encodes each bin according to the selected probability model and is subdivided based on recursive intervals.
And (3) probability updating: the selected context model is updated based on the actual encoded values.
In some embodiments of the present invention that include CABAC encoding/decoding, all context models may be initialized or reset to a predefined model at the beginning of decoding of an entropy slice.
Some embodiments of the invention may be understood in conjunction with fig. 5. Fig. 5 shows an exemplary video frame 110 comprising 11 macroblocks in the horizontal direction and 9 macroblocks in the vertical direction (9 exemplary macroblocks are labeled 115 and 123). Fig. 5 shows three exemplary reconstruction slices: a first reconstructed slice denoted as "reconstructed slice # 0" 111, a second reconstructed slice denoted as "reconstructed slice # 1" 112, and a third reconstructed slice denoted as "reconstructed slice # 2" 113. Fig. 5 also shows the division of the second reconstruction slice "reconstruction slice # 1" 112 into three entropy slices: a first entropy slice represented as "entropy slice # 0" shown in cross-hatching 112-1, a second entropy slice represented as "entropy slice # 1" shown in vertical hatching 112-2, and a third entropy slice represented as "entropy slice # 2" shown in cross-hatching 112-3. Each entropy slice 112-1, 112-2, 112-3 may be entropy decoded in parallel. Here, the first entropy slice denoted as "entropy slice # 0" and the second entropy slice denoted as "entropy slice # 1" may also be referred to as a first part and a second part of the bitstream.
In some embodiments of the present invention, only data from macroblocks within an entropy slice is available for context model selection during entropy decoding of the entropy slice. All other macroblocks may be marked as unavailable. For this exemplary division, the macroblocks labeled 117 and 118 are not available for context model selection when decoding the symbols corresponding to the region of the macroblock labeled 119, because the macroblocks labeled 117 and 118 are outside the entropy slice containing macroblock 119. However, these macroblocks 117, 118 are available when reconstructing macroblock 119.
In some embodiments of the invention, the encoder may determine whether to partition a reconstructed slice into entropy slices, and the encoder may signal this decision in the bitstream. In some embodiments of the present invention, the signal may include an entropy slice flag (a flag in the first entropy slice may be referred to as a first flag), which may be denoted as "entropy _ slice _ flag" in some embodiments of the present invention.
Some decoder embodiments of the present invention may be described in conjunction with fig. 6. In these embodiments, the entropy slice flag may be checked (S130), and if the entropy slice flag indicates that there is no entropy slice associated with the picture or reconstructed slice (no in step S130), the header may be parsed into a regular slice header (S134). The entropy decoder state may be reset (S136), and neighbor information for entropy decoding and reconstruction may be defined (S138). Then, slice data may be entropy decoded (S140), and a slice may be reconstructed (S142). If the entropy slice flag indicates that there is an entropy slice associated with the picture (YES in step S130), the header may be parsed into an entropy slice header (S148). The entropy decoder state may be reset (S150), neighbor information for entropy decoding may be defined (S152), and entropy-decoding may be performed on the entropy slice data (S154). Then, neighbor information for reconstruction may be defined (S156), and a slice may be reconstructed (S142). After the slice reconstruction in step S142, the next slice or picture may be checked.
Some alternative decoder embodiments of the present invention may be described in conjunction with fig. 7. In these embodiments, the decoder is capable of parallel decoding and may define its own degree of parallelism, e.g., consider a decoder with the ability to decode N entropy slices in parallel. The decoder may identify N entropy slices (S170). In some embodiments of the present invention, if less than N entropy slices are available in the current picture or reconstructed slice, the decoder may decode entropy slices from subsequent pictures or reconstructed slices (if those entropy slices are available). In an alternative embodiment, the decoder may wait until the current picture or reconstructed slice is completely processed before decoding portions of a subsequent picture or reconstructed slice. After at most N entropy slices are identified in step S170, each of the identified entropy slices may be independently entropy decoded. The first entropy slice may be decoded (S172-S176). Decoding the first entropy slice may include resetting a decoder state (S172). In some embodiments including CABAC entropy decoding, the CABAC state may be reset. Neighbor information for entropy-decoding the first entropy slice may be defined (S174), and the first entropy slice data may be decoded (S176). These steps may be performed for each of at most N entropy slices (for the nth entropy slice, performing S178-S182). In some embodiments of the present invention, when all entropy slices are entropy-decoded, the decoder may reconstruct the entropy slices (S184). In an alternative embodiment of the present invention, after decoding one or more entropy slices, the decoder starts reconstruction in step S184.
In some embodiments of the invention, when there are more than N entropy slices, the decoding thread may start entropy decoding the next entropy slice upon completion of entropy decoding of the entropy slice. Thus, when a thread completes entropy decoding of a low complexity entropy slice, the thread may begin decoding additional entropy slices without waiting for another thread to complete its decoding.
In some embodiments of the invention that may accommodate existing standards or methods, entropy slices may share most of the slice attributes of a rule slice according to the existing standards or methods. Thus, an entropy slice may require a small header. In some embodiments of the present invention, the entropy slice header may enable a decoder to identify the start of an entropy slice and start entropy decoding. In some embodiments, at the beginning of a picture or a reconstructed slice, the entropy slice header may be a rule header or a reconstructed slice header.
In some embodiments of the present invention including the h.264/AVC codec, an entropy slice may be signaled by adding a new bit "entropy _ slice _ flag" to the existing slice header. Table 1 lists syntax for entropy slice headers according to an embodiment of the present invention, where C indicates a category and descriptors u (1), ue (v) indicate some fixed-length or variable-length coding methods.
"first _ mb _ in _ slice" specifies the address of the first macroblock in the entropy slice associated with the entropy slice header. In some embodiments, an entropy slice may comprise a sequence of macroblocks.
"callback _ init _ idc" specifies an index for determining an initialization table used in the initialization process of the context mode.
Table 1: syntax table for entropy slice header
In some embodiments of the present invention, entropy decoding an entropy slice may include initializing a plurality of context models and updating the plurality of context models during entropy decoding of the entropy slice.
In some embodiments of the present invention, entropy slices may be assigned a different Network Abstraction Layer (NAL) unit type than regular slices. In these embodiments, the decoder may distinguish between regular slices and entropy slices based on NAL unit type. In these embodiments, the bit field "entry _ slice _ flag" is not required.
In some embodiments of the invention, entropy slices may be constructed by changing the data multiplexing. In some embodiments of the present invention, groups of symbols contained in an entropy slice may be multiplexed at the macroblock level. In an alternative embodiment of the present invention, the symbol groups contained in the entropy slices may be multiplexed at the picture level. In other alternative embodiments of the present invention, the set of symbols contained in an entropy slice may be multiplexed by data type. In other alternative embodiments of the present invention, the above may be combined to multiplex the symbol groups contained in the entropy slices.
Some embodiments of the inventive method include encoding a video frame in a video sequence, including dividing a frame in a video sequence into at least one reconstruction slice, thereby generating a reconstruction slice; and divides the reconstructed slice into a plurality of entropy slices.
Some embodiments of the present invention including entropy slice construction based on picture-level multiplexing may be understood in conjunction with fig. 8 and 9. In some embodiments of the invention illustrated in fig. 8, prediction data 190 and residual data 192 may be entropy encoded by prediction encoder 194 and residual encoder 196, respectively, and multiplexed at the picture level by picture level multiplexer 198. In some embodiments of the invention, prediction data for the picture 190 may be associated with a first entropy slice, and residual data for the picture 190 may be associated with a second entropy slice. The encoded prediction data and the encoded entropy data may be decoded in parallel. In some embodiments of the present invention, each partition including prediction data or residual data may be divided into entropy slices that are decodable in parallel.
In some embodiments of the invention illustrated in fig. 9, the residuals for each color plane (e.g., the luma (Y) residual and the two chroma (U and V) residuals 202, 204) may be entropy encoded by Y encoder 206, U encoder 208, and V encoder 210, respectively, and multiplexed at the picture level by picture level multiplexer 210. In some embodiments of the invention, the luma residue of picture 200 may be associated with a first entropy slice, the first chroma (U) residue of picture 202 may be associated with a second entropy slice, and the second chroma residue (V) of picture 204 may be associated with a third entropy slice. The encoded residual data for the three color planes may be decoded in parallel. In some embodiments of the invention, each partition including color plane residual data may be divided into entropy slices that are decodable in parallel. In some embodiments of the invention, the luma residual 200 may have relatively more entropy slices than the chroma residuals 202, 204.
In some embodiments of the present invention, the compressed video bitstream may be transcoded to include entropy slices to enable parallel entropy decoding as provided by the above-described embodiments of the present invention. Some embodiments of the invention may be described in conjunction with fig. 10. An input bitstream without entropy slices can be processed picture by picture according to fig. 10. In these embodiments of the present invention, a picture from an input bitstream may be entropy-decoded (S220). Encoded data, such as mode data, motion information, residual information, and other data, may be obtained. Entropy slices can be constructed from the data one at a time (S222). An entropy slice header corresponding to the entropy slice may be inserted into the new bitstream (S224). The state of the encoder may be reset and neighbor information may be defined (S226). Entropy slices can be entropy encoded 228 and written to the new bitstream. If there is picture data that has not been consumed by the constructed entropy slice (NO in step S230), another entropy slice may be constructed in the step of S222, and the processing of S224-S230 may be continued until all picture data has been consumed by the constructed entropy slice (YES in step S230), and then the next picture may be processed.
The terms and expressions which have been employed in the foregoing specification are used therein as terms of description and not of limitation, and there is no intention in the use of such terms and expressions of excluding equivalents of the features shown and described or portions thereof, it being recognized that the scope of the invention is defined and limited only by the claims which follow.
Claims (1)
1. A method for decoding a video bitstream, the method comprising:
a) identifying a reconstructed slice in the video bitstream;
b) identifying a first entropy slice of the reconstruction slices and a second entropy slice of the reconstruction slices, the first entropy slice and the second entropy slice being non-overlapping portions of the reconstruction slices;
c) identifying a rule slice header associated with the first entropy slice and an entropy slice header associated with the second entropy slice,
wherein the entropy slice header is different from the rule slice header and shares some of the slice attributes with the rule slice header, and the size of the entropy slice header is smaller than the size of the rule slice header;
d) entropy decoding the video bitstream, the rule slice header, and the entropy slice header, thereby producing first decoded data associated with the first entropy slice and second decoded data associated with the second entropy slice;
e) reconstructing a first portion of an image using the first decoded data; and
f) reconstructing a second portion of the image using the second decoded data and the reconstructed first portion.
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US12/058,301 US8542748B2 (en) | 2008-03-28 | 2008-03-28 | Methods and systems for parallel video encoding and decoding |
| US12/058,301 | 2008-03-28 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| HK1206179A1 HK1206179A1 (en) | 2015-12-31 |
| HK1206179B true HK1206179B (en) | 2018-08-24 |
Family
ID=
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US12231699B2 (en) | Methods, devices and systems for parallel video encoding and decoding | |
| HK40050071A (en) | Method for parallel video decoding | |
| HK40045328B (en) | Device for parallel video decoding | |
| HK40045328A (en) | Device for parallel video decoding | |
| HK1206179B (en) | Methods, devices and systems for parallel video encoding and decoding | |
| HK1229106A1 (en) | Methods, devices and systems for parallel video encoding and decoding | |
| HK1229106B (en) | Method for parallel video decoding |