Parallel bidirectional intra coding of subpartitions
By processing subpartitions in video intra prediction in parallel and using reference pixels of adjacent subpartitions, the problem of slow encoding speed caused by subpartition processing in the prior art is solved, and more efficient video compression is achieved.
Patent Information
- Application Number
- CN202080039055.7
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2020-05-28
- Filing Date
- 2020-05-29
- Publication Date
- 2025-04-25
- Estimated Expiration
- 2040-05-29
AI Technical Summary
The existing video encoding technology processes subpartitions in intra prediction in serial, resulting in slow coding process speed and unable to fully utilize the parallel processing capabilities between subpartitions.
By using the method of processing sub-partitions in parallel, the simultaneous transcoding and decoding of multiple sub-partitions is achieved by obtaining reference pixels from adjacent sub-partitions, thereby improving the encoding speed.
By processing subpartitions in parallel, the speed of video encoding is significantly improved, at least twice the speed of the encoding process, and the video compression efficiency is improved.
Smart Images

Figure CN113875239B_ABST
Abstract
Description
[0001] [Cross-reference to related applications]
[0002] The present disclosure claims the benefit of priority to U.S. non-provisional application No. 16 / 886,641, filed on May 28, 2020, entitled “PARALLEL BI-DIRECTIONAL INTRA-CODING OF SUB-PARTITIONS,” which claims the benefit of priority to U.S. provisional application No. 62 / 854,746, filed on May 30, 2019, the contents of which are hereby incorporated by reference in their entirety for all purposes. [Background technology]
[0003] In video coding, video content is compressed via a set of processes including prediction, transformation, quantization, and entropy coding. In intra-frame prediction, spatial redundancy between adjacent pixels in a video frame is reduced. For example, the original pixels of a video frame may not be encoded and sent to a decoder. Instead, the predicted pixels may be subtracted from the original pixels to form a residual. The residual is a smaller amount of information to be encoded and sent to the decoder than the original pixels. This reduces the bandwidth used to transmit the encoded bitstream.
Brief Description of the Drawings
[0004] Figure 1 A simplified system for performing intra prediction according to some embodiments is depicted.
[0005] Figure 2 Depicted is an example of a frame used for intra prediction in accordance with some embodiments.
[0006] Figure 3 An example of a transcoder according to some embodiments is depicted.
[0007] Figure 4 A more detailed example of a decoder according to some embodiments is depicted.
[0008] Figure 5A Depicted is an example of transcoding subpartitions #1 and #4 in a current block according to some embodiments.
[0009] Figure 5B Depicted is an example of transcoding subpartitions #2 and #3 in a current block according to some embodiments.
[0010] Fig. 6A A first scenario is depicted for a first intra-prediction direction according to some embodiments.
[0011] Figure 6B A second scenario is depicted for a second intra-prediction direction according to some embodiments.
[0012] Figure 6C A third scenario is depicted for a third intra-prediction direction according to some embodiments.
[0013] Fig. 7A A fourth scenario is depicted for a fourth intra-prediction direction according to some embodiments.
[0014] Figure 7B A fifth scenario is depicted for a fifth intra-prediction direction according to some embodiments.
[0015] Figure 7C A fourth scenario is depicted for a sixth intra-prediction direction according to some embodiments.
[0016] Figure 8 Depicted is an example of parallel processing of subpartitions in accordance with some embodiments.
[0017] Fig. 9 A more detailed flow diagram of transcoding of blocks according to some embodiments is depicted.
[0018] Fig.10 A more detailed flow chart of the decoding of a block according to some embodiments is depicted.
[0019] Fig.11 An example of an encoding system according to some embodiments is depicted.
[0020] Fig.12 An example of a decoding system in accordance with some embodiments is depicted. [Specific implementation method]
[0021] This article describes techniques for video encoding systems. In the following description, for the purpose of illustration, numerous examples and specific details are set forth in order to provide a thorough understanding of some embodiments. Some embodiments defined by the claims may include some or all of the features in these examples alone or in combination with other features described below, and may also include modifications and equivalents of the features and concepts described herein.
[0022] In intra prediction, the transcoder can subtract predicted pixels from the original pixels of the video frame to reduce the amount of values that need to be transcoded. One method of intra prediction coding mode is to divide the intra-coded block into multiple sub-partitions and process the sub-partitions separately. Conventionally, when one sub-partition is transcoded first and then the transcoding process of another sub-partition is started, or when one sub-partition is decoded first and then the decoding process of another sub-partition is started, the sub-partitions are processed serially. However, some embodiments process groups of sub-partitions in parallel. This speeds up the encoding process by at least two times compared to serial encoding of the sub-partitions. When processing sub-partitions in parallel, reference pixels from two sub-partitions can be used to process the next two sub-partitions. Moreover, when two reference pixels are used, the two reference pixels can be weighted differently when predicting pixel values, such as based on the distance from the transcoded or decoded pixel.
[0023] system
[0024] Figure 1 A simplified system 100 for performing intra-frame prediction according to some embodiments is depicted. The system 100 transcodes a source video asset, which can be any type of video, such as for a television program, a movie, or a video clip. The source video may need to be transcoded into one or more formats, such as one or more bit rates. In some embodiments, a server system 102 sends an encoded bitstream to a client 104. For example, the server system 102 can send a video to a client 104 for playback.
[0025] The server system 102 includes a transcoder 106 that transcodes a video into an encoded bit stream. The transcoder 106 can be a software video processor / transcoder configured on a central processing unit (CPU), a hardware accelerated video processor / transcoder with a graphics processing unit (GPU), a field programmable gate array (FPGA), and / or a hardware processor / transcoder implemented in an application specific integrated circuit (ASIC). Transcoding can be a conversion from one digital format to another digital format. Transcoding can involve decoding the source format and encoding the source video into another digital format, or converting the source content into a video with a specific resolution, frame rate, bit rate, codec, etc. Moreover, encoding can be converting analog source content into a digital format. As used, the term transcoding can include encoding.
[0026] The transcoder 106 includes a transcoder intra prediction block 108 that performs intra prediction. The transcoder side and the decoder side use intra coding modes to compress video by removing spatial redundancy of adjacent pixels in a video frame. Traditionally, intra coding can intra-code a current block with a pixel size equal to NxN. In some embodiments, pixels inside the current block are intra-coded using pixels from neighboring blocks of the current block, such as the top, left, and diagonal blocks of the current block.
[0027] The client 104 includes a decoder 112 that decodes the encoded bitstream. During the decoding process, the decoder intra prediction block 110 performs intra prediction to decode the block using pixels from neighboring blocks of the current block, such as blocks above, to the left, and diagonally opposite the current block.
[0028] Figure 2 An example of a frame 200 for intra prediction according to some embodiments is depicted. The frame 200 may be an image that is transcoded or decoded. The frame 200 includes a plurality of blocks, and a current block 202 (#16) is being transcoded or decoded. A top block 204 (#10) at the top of the current block 202 and a left block 206 (#15) at the left of the current block 202 have been decoded. Pixels from the left block 206 and the top block 204 may be used to predict the content of the current block 202. Because these pixels have been decoded, these pixels may be used to predict the content of the current block. For example, neighboring pixels may be similar to some pixels of the current block and provide a good prediction of the current pixel in the current block 202. Pixels from other blocks, such as pixels from blocks #9, #11, and #21 (diagonally positioned), may also be used if pixels from these blocks are available (e.g., have been transcoded and then decoded).
[0029] Transcoder
[0030] Figure 3 An example of a transcoder 106 is depicted in accordance with some embodiments. Figure 3 A simplified version of the transcoder is included, and a more detailed version will be described below. The transcoder 106 receives the original pixels from the current block 202 to be transcoded. At 302, the transcoder 106 then subtracts the predicted pixels from the original pixels to produce a residual, which includes the pixels to be transcoded. For example, as part of the transcoding process, the transform and quantization block 304 performs a transform step and a quantization step (T / Q) on the residual value to further compress the size of the data to be transcoded. Finally, the entropy coding block 306 processes the resulting data by entropy coding the data. The transcoder 106 packages the data into a coded bit stream, which is sent to the decoder side by the transcoder 106.
[0031] To ensure that the decoder side performs the decoding process with the same behavior as the transcoder side, the transcoder 106 includes an inverse quantization and inverse transform block 308 and an intra prediction block (e.g., transcoder intra prediction block 108) that mirrors the decoding pipeline. This loop generates reconstructed pixels for the decoded current block 202, which are used as reference pixels for the next coded block in the coding order. For example, at 312, the transcoder 106 adds the predicted pixels used to transcode the current block to the decoded pixels of the residual to generate reference pixels.
[0032] The transcoder intra prediction block 108 generates predicted pixel values using reference pixel values adjacent to the next current block to be transcoded. For example, the transcoder intra prediction block 108 receives reference pixel values and generates predicted pixel values according to the intra mode used. The intra prediction mode may include a predicted direction and use different reference pixels based on the direction used. That is, the horizontal intra prediction direction may use the reference pixel on the left of the current block, and the vertical intra prediction direction may use the reference pixel on the top of the current block. The direction may also include a diagonal direction. The transcoder intra prediction block 108 may generate predicted pixels from the reference pixels and the prediction direction. The transcoder intra prediction block 108 may determine the predicted direction in different ways. In some embodiments, the transcoder intra prediction block 108 may check all possible intra prediction directions and select the best one based on rules such as rate-distortion optimization metrics. Predicted pixels may be used because some directions may require some interpolation of reference pixel values; for example, diagonal directions may interpolate pixel values from one or more reference pixels.
[0033] Decoder
[0034] Figure 4 A more detailed example of the decoder 112 is depicted according to some embodiments. Figure 4 A simplified version of the decoder is included, a more detailed version will be described below. On the decoder side, the decoder 112 receives the encoded bitstream and the entropy decoding block 402 performs entropy decoding. Then, the inverse quantization and inverse transform block 404 performs an inverse quantization step and an inverse transform step (Q -1 / T -1 ). The output of the inverse quantization and inverse transform steps is the residual. At 408, the decoder 112 then combines the residual with the predicted pixels that were used to generate the residual at the transcoder 106 to generate decoded pixels. The decoded pixels are reconstructed representations of the original pixels.
[0035] The decoder intra prediction block 406 generates predicted pixels from reference pixels, such as decoded reference pixels from the current block being decoded. The decoded pixels are used as reference pixels for the next coded block in the decoding order. Another coded block in the coding order can use the predicted pixels generated from the reference pixels to decode the coded bitstream of another block.
[0036] Intra prediction
[0037] During intra prediction, the transcoder side and the decoder side can use the intra sub-partitioning (ISP) mode to perform intra sub-partitioning. Intra sub-partitioning divides an intra-coded block into multiple sub-partitions (SPs) and transcodes or decodes these sub-partitions separately.
[0038] Figure 5A An example of transcoding subpartitions #1 and #4 in a current block 202 is depicted according to some embodiments. The current block 202 is divided into four subpartitions: subpartition #1 502-1, subpartition #2 502-2, subpartition #3 502-3, and subpartition #4 502-4. Although four subpartitions are described, other numbers of subpartitions may be used, such as two subpartitions, six subpartitions, eight subpartitions, etc. Also, the subpartitions may be split horizontally or vertically. Figure 5A , the current block is split horizontally; however, the current block may be split vertically or in other patterns. Subpartition #1 502-1 can be found on the top edge of the block, and subpartition #4 502-4 is not next to subpartition #1 502-1. Instead, subpartition #2 502-2 and subpartition #3 502-3 are between subpartition #1 502-1 and subpartition #4 502-4.
[0039] During the transcoding process, the transcoder 106 processes the sub-partitions 502 separately, which means that the transcoder 106 first transcodes the pixels of the sub-partition 502-1, then transcodes the pixels of the next sub-partition 502-2, and so on. As described above, the transcoder 106 uses reference pixels to transcode each sub-partition 502. For example, reference pixels from a block that has already been transcoded are used to transcode each sub-partition 502.
[0040] The transcoder 106 selects reference pixels for the various sub-partitions 502 in a manner that enables the transcoder to transcode some of the sub-partitions in parallel. Conventionally, the sub-partitions may be transcoded serially; for example, the transcoder first transcodes sub-partition #1 502-1, then transcodes sub-partition #2 502-2 using reference pixels from sub-partition #1 502-1, then transcodes sub-partition #3 502-3 using reference pixels from sub-partition #2 502-2, and finally transcodes sub-partition #4 502-4 using reference pixels from sub-partition #3 502-3. This forces the transcoder to transcode the sub-partitions 502 serially. Instead of transcoding the sub-partitions 502 serially, the transcoder transcodes groups of sub-partitions 502 in parallel, which speeds up the transcoding time of the current block. The transcoder 106 may include multiple transcoding processes capable of performing transcoding of the sub-partitions 502 in parallel, or separate transcoders may be used.
[0041] In order to transcode the sub-partitions 502 in parallel, the reference pixels for some of the sub-partitions 502 are changed from the reference pixels used to transcode the sub-partitions in series. For example, the reference pixel 504-1 for sub-partition #1 502-1 and sub-partition #4 502-4 is shared. The transcoder 106 then transcodes sub-partition #1 and sub-partition #4 in parallel. Once the transcoder 106 transcodes and decodes sub-partition #1 and sub-partition #4, the reference pixels from sub-partition #1 and sub-partition #4 can be used to transcode sub-partition #2 and sub-partition #3 in parallel.
[0042] Figure 5BAn example of transcoding sub-partitions #2 and #3 in a current block 202 is depicted in accordance with some embodiments. The transcoder 106 transcodes sub-partitions #2 and #3 using reference pixels from neighboring blocks, sub-partition #1, and / or sub-partition #4. For example, reference pixel 504-2 from sub-partition #1 502-1 is found above sub-partition #2 502-2. Reference pixel 504-3 from a neighboring block is found to the left of the current block 202 and is not within any sub-partition. Reference pixel 504-4 from sub-partition #4 502-4 is found below sub-partition #3 502-3. As can be seen, sub-partition #2 502-2 is between reference pixel 504-2 from sub-partition #1 502-1 and sub-partition #3 502-3. Similarly, sub-partition #3 502-3 is between reference pixel 504-4 from sub-partition #4 502-4 and sub-partition #2 502-2. Using these reference pixels is different from processing sub-partitions serially. For example, reference pixel 504-1 from sub-partition #1 504-1 is farther from sub-partition #3 502-3 than reference pixel 504-2 from sub-partition #2 502-2. Similarly, reference pixel 504-4 from sub-partition #4 502-4 is farther from sub-partition #2 502-2 than reference pixel 504-1 from sub-partition #1 504-1. Moreover, reference pixel 504-3 from a neighboring block may be different from reference pixel 504-3 from sub-partition #1 502-2 and sub-partition #4 502-4. For example, the reference pixel 504-3 from the neighboring block is adjacent to sub-partition #2 502-2 and sub-partition #3 502-4 (e.g., to the left), and is not adjacent to sub-partition #1 502-2 and sub-partition #4 502-4. The following describes an intra prediction scenario using the reference pixel from sub-partition #1 502-2 and the reference pixel 504-4 from sub-partition #4 502-4 when transcoding sub-partition #2 502-2 and sub-partition #3 502-3.
[0043] Although transcoding is described above, the decoder 112 may use sub-partitions in a similar manner during the decoding process, which will be described in more detail below.
[0044] Intra-frame prediction scenario
[0045] The transcoder 106 will be used to describe the following scenario, but it should be appreciated that the decoder 112 can perform similar actions. The transcoder 106 breaks the data interdependencies between all sub-partitions to process groups of sub-partitions in parallel. The transcoder 106 can then use the same reference pixels to perform intra-frame predictions for sub-partitions #2 and #3. The prediction can use a combination of reference pixels 504-2 from sub-partition #1 502-1, reference pixels 504-4 from sub-partition #4 502-4, and reference pixels 504-3 from adjacent blocks. For example, the prediction can be bidirectional, which uses pixels from two sub-partitions or from a sub-partition and an adjacent block. Moreover, the prediction can use pixels from one sub-partition or an adjacent block. For example, given a pixel inside the region of sub-partition #2 or sub-partition #3, the transcoder 106 determines the reference pixel according to the intra-frame prediction direction. Depending on the intra-frame prediction direction, the transcoder 106 can locate one or two reference pixels. The transcoder 106 can determine the best intra prediction direction for sub-partition #2 and sub-partition #3 together. The intra prediction direction is signaled in the compressed bitstream sent to the decoder 112. Specifically, the transcoder 106 performs the intra prediction process for sub-partition #2 and sub-partition #3 along multiple possible intra prediction directions (e.g., horizontal, vertical, or regular angle directions). In some embodiments, the transcoder 106 can calculate the rate-distortion values for each possible mode and then select the direction with the minimum rate-distortion value as the best direction. The transcoder 106 can use the same intra prediction direction to transcode all pixels of sub-partition #2 and sub-partition #3.
[0046] The following example applies when the transcoder 106 selects different directions for the intra prediction modes of subpartition #2 and subpartition #3. Fig. 6A A first scenario of a first intra prediction direction according to some embodiments is depicted. The transcoder 106 transcodes pixel p 604 in sub-partition #2 502-2. The transcoder 106 selects a reference pixel using the intra prediction direction determined to be optimal. As described above, the transcoder intra prediction block 108 selects the reference pixel and direction based on checking all possible intra prediction directions and selecting the best direction 606 based on a rule. In this example, reference pixel r0 602-1 is from sub-partition #1 502-1, and reference pixel r1 602-2 is from sub-partition #4 502-4. The intra prediction direction intersects reference pixel 504-2 from sub-partition #1 502-1 and reference pixel 504-4 from sub-partition #4 502-4, but does not intersect reference pixel 504-3 from a neighboring block.
[0047] The transcoder intra prediction block 108 may use different processes to calculate the predicted value of pixel p. In some embodiments, the transcoder intra prediction block 108 may use the values from reference pixel r0 602-1 and reference pixel r1 602-2 to calculate the predicted value of pixel p 604. The calculation may use different values of weights for the values of reference pixel r0 602-1 and reference pixel r1 602-2, which will be described in more detail below. Now, other scenarios of possible intra prediction directions will first be discussed.
[0048] Although the transcoder 106 transcodes pixel p 604 in sub-partition #2 502-2, the transcoder 106 may perform the same process to predict pixels in sub-partition #3 502-3. This applies to all of the following scenarios.
[0049] Figure 6B A second scenario of a second intra prediction direction according to some embodiments is depicted. The transcoder 106 transcodes pixel p 604 in subpartition #2 502-2. The transcoder intra prediction block 108 selects the best direction 606. In this example, reference pixel r0 602-1 is from subpartition #1 502-1, and reference pixel r1 602-2 is from a neighboring block. The intra prediction direction intersects reference pixel 504-2 from subpartition #1 502-1 and reference pixel 504-3 from a neighboring block, but does not intersect reference pixel 504-4 from subpartition #4 502-4. Reference pixel r1 602-2 may be closer to pixel p 604 than reference pixel 504-3 from subpartition #4 502-4, and may be a better prediction of pixel p 604 in some cases.
[0050] Figure 6C A third scenario of a third intra prediction direction according to some embodiments is depicted. The transcoder 106 transcodes pixel p 604 in subpartition #2 502-2. The transcoder intra prediction block 108 selects the best direction 606. In this example, reference pixel r0 602-1 is from a neighboring block, and reference pixel r1 602-2 is from subpartition #4 502-4. The intra prediction direction intersects reference pixel 504-4 from subpartition #4 502-4 and reference pixel 504-3 from a neighboring block, but not reference pixel from subpartition #1 504-1. Reference pixel r0 602-1 may be closer to pixel p 604 than reference pixel 504-2 from subpartition #1 502-1, and may be a better prediction of pixel p 604 in some cases.
[0051] The above scenarios use bidirectional prediction with two reference pixels. Some scenarios may use unidirectional prediction with only a single pixel. Fig. 7AA fourth scenario of a fourth intra prediction direction according to some embodiments is depicted. The transcoder 106 transcodes pixel p 604 in sub-partition #2 502-2. The transcoder intra prediction block 108 selects the best direction 606. In this example, reference pixel r0 602-1 is from a neighboring block. The intra prediction direction intersects with reference pixel 504-3 from a neighboring block, but does not intersect with reference pixel 504-4 from sub-partition #4 502-4 and reference pixel 504-2 from sub-partition #1 502-1. Reference pixel r0 602-1 may be closer to pixel p 604 than reference pixel 504-2 from sub-partition #1 502-1 and sub-partition #4 502-4, and may be a better prediction of pixel p 604 in some cases.
[0052] Figure 7B A fifth scenario of a fifth intra prediction direction according to some embodiments is depicted. The transcoder 106 transcodes pixel p 604 in sub-partition #2 502-2. The transcoder intra prediction block 108 selects the best direction 606. In this example, reference pixel r0 602-1 is from sub-partition #1 502-2. The intra prediction direction intersects with reference pixel 504-2 from sub-partition #1 502-1, but does not intersect with reference pixel 504-4 from sub-partition #4 502-4 and reference pixel 504-3 from a neighboring block. Reference pixel r0 602-1 may be closer to pixel p 604 than reference pixel 504-3 from a neighboring block and sub-partition #4 502-4, and may be a better prediction of pixel p 604 in some cases.
[0053] Figure 7C A fourth scenario of a sixth intra prediction direction according to some embodiments is depicted. The transcoder 106 transcodes pixel p 604 in subpartition #3 502-3. The transcoder intra prediction block 108 selects the best direction 606. In this example, reference pixel r0 602-1 is from subpartition #4 502-4. The intra prediction direction intersects with reference pixels from subpartition #4 502-4, but does not intersect with reference pixel 504-2 from subpartition #1 502-1 and reference pixel 504-3 from a neighboring block. Reference pixel r0 602-1 may be closer to pixel p 604 than reference pixels from subpartition #1 502-2 and neighboring blocks, and may be a better prediction of pixel p 604 in some cases.
[0054] For scenes with two reference pixels available, the transcoder 106 may use different methods to calculate the predicted value of pixel p. For example, the transcoder 106 may apply weights to the reference pixels. In some embodiments, the transcoder 106 may use the following calculation:
[0055] p=w0r0+w1rl
[0056] Among them, weight w0 and weight w l is a weighting factor, p is a pixel value, and r0 and rl are reference pixel values. Here, the values of r0 and rl may be equal to the reference pixel, or may be processed values of the reference pixel. In some embodiments, interpolation, filtering, and pulling processes are performed on the reference pixel values to improve compression efficiency. The transcoder 106 may derive the weights w0 and w1 in different ways. l For example, the transcoder 106 may use a fixed weighting factor and an adaptive weighting factor. The fixed weighting factor may set the weights w0 and w1 to fixed values, such as 0.5 each. Moreover, the weights w0 and w1 may be set to different fixed values, such as 0.45 and 0.55 respectively. Different directions may also have different fixed values. For example, in Fig. 6A In the example, the weight w0 can be set to be larger than the weight w l A high fixed value because the reference pixel r0 can be closer to the pixel p.
[0057] The transcoder 106 may determine the adaptive weighting factor based on different methods, such as by using the distance to the pixel p. For example, the transcoder 106 may use the following formula:
[0058]
[0059] Among them, dist(A,B) is a function that measures the spatial distance between two pixel locations of pixel A and pixel B. Assuming that the locations of pixels A and B can be represented by two-dimensional coordinates (Ax, Ay) and (Bx, By), possible distance calculations can be:
[0060] dist(A,B)=|Ax-Bx|+|Ay-By|, or
[0061]
[0062] Weighting the reference pixels by distance can weight reference pixels that are closer to pixel p more than reference pixels that are farther away. Closer reference pixels are more likely to be similar to pixel p and can be better predictions of pixel p. Using adaptive weights can then improve compression and accuracy because reference pixels that may be more similar to pixel p are weighted higher. Other methods can also be used to determine weights, such as by analyzing the characteristics of the reference pixels to determine which pixels are more similar to the pixel.
[0063] For the case where only one reference pixel is available, the prediction method can predict a pixel value of pixel p that is equal to the pixel value of the reference pixel, for example, p = r. Here, the value of r can be equal to the reference pixel, or can be a processed value of the reference pixel. In some embodiments, interpolation, filtering, and pulling processes are performed on the reference pixel values to improve compression efficiency.
[0064] Subpartition processing
[0065] Using the above method, the transcoder 106 and the decoder 112 may process the four sub-partitions as two groups in parallel. Figure 8 An example of parallel processing of sub-partitions according to some embodiments is depicted. The following processing pipeline can be used in a transcoding process or a decoding process. In the transcoding process, the pipeline generates predicted pixels for a sub-partition, and then after transcoding of the sub-partition, generates decoded pixels for the sub-partition to be used as reference pixels for another sub-partition. If the process is performed serially, the above process of generating predicted pixels for sub-partitions and then constructing decoded pixels for the sub-partitions is performed serially for each sub-partition. For example, in a serial process, first, the transcoder 106 generates predicted pixels for sub-partition #1 502-1, generates residuals and transcodes the residuals, and then the transcoder 106 constructs decoded pixels for sub-partition #1 502-1. The transcoder 106 uses these decoded pixels as reference pixels to generate predicted pixels for sub-partition #2 502-2. After intra-coding sub-partition #2 502-2, the transcoder 106 constructs decoded pixels for sub-partition #2 502-2. The transcoder 106 uses these decoded pixels to generate predicted pixels for sub-partition #3 502-3, and the process continues serially until the transcoder 106 transcodes the current block. Therefore, when processing sub-partitions 502 serially, the transcoder 106 must routinely complete transcoding the sub-partition and decode the pixels of the sub-partition before continuing to transcode another sub-partition.
[0066] As described above, the transcoder 106 does not need to wait for a previous sub-partition to be transcoded and then decoded before starting the transcoding process of another sub-partition. Figure 8 In the example, when transcoding of the current block is started, the reference pixels of sub-partition #1 502-1 and sub-partition #4 502-4 are the same, and the transcoder 106 starts transcoding of sub-partition #1 502-1 at 802 and transcoding of sub-partition #4 502-4 at 806 in parallel. For example, transcoding process #1 800-1 transcodes sub-partition #1 502-1, and transcoding process #2 800-2 transcodes sub-partition #4 502-4.
[0067] At 802, transcoding process #1 800-1 generates predicted pixels for sub-partition #1 502-1 using reference pixels from neighboring blocks, such as a block on top of the current block 202 and a block to the left of the current block 202. Transcoding process #1 800-1 then performs a transcoding process for sub-partition #1 502-1. After transcoding the pixels, at 804, transcoding process #1 800-1 then reconstructs (e.g., decodes) the pixels of sub-partition #1 502-1. In parallel, at 806, transcoding process #2 800-2 generates predicted pixels for sub-partition #4 502-4 using the same reference pixels as the reference pixels used for sub-partition #1 502-1. Transcoding process #2 800-2 then performs a transcoding process for sub-partition #4 502-4. After transcoding the pixels, at 808, transcoding process #2 800-2 then reconstructs (eg, decodes) the pixels of sub-partition #3 502-3.
[0068] Sub-partition #2 502-2 may use reference pixels from sub-partition #1 502-1, reference pixels from sub-partition #4 502-4, and reference pixels from neighboring blocks such as neighboring blocks to the left. In some embodiments, transcoding process #1 800-1 receives decoded pixels from sub-partition #4 502-4 from transcoding process #2 800-2. In this way, transcoding process #1 800-1 may use reference pixels from sub-partition #4 502-4. When discussing receiving decoded pixels, different implementations may be used. For example, each transcoding process 800-1 and 800-2 may store the corresponding decoded pixels in a memory. Once the decoded pixels are stored in the memory, each transcoding process 800-1 and 800-2 may continue to transcode sub-partition #2 and sub-partition #3.
[0069] After reconstructing the decoded pixels of sub-partition #1 502-1, transcoding process #1 800-1 may have to wait to receive the decoded pixels of sub-partition #4 502-4, if necessary. Then, at 810, transcoding process #1 800-1 can generate predicted pixels using reference pixels from sub-partition #1 502-1, reference pixels from sub-partition #4 502-4, and / or reference pixels from the left neighboring block. Transcoding process #1 800-1 performs the transcoding process of sub-partition #2 502-2. After transcoding the pixels, at 812, transcoding process #1 800-1 then reconstructs (e.g., decodes) the pixels of sub-partition #2 502-2.
[0070] Furthermore, sub-partition #3 502-3 uses reference pixels from sub-partition #1 502-1, reference pixels from sub-partition #4 502-4, and reference pixels from neighboring blocks such as left blocks. In some embodiments, transcoding process #2 800-2 receives decoded pixels of sub-partition #1 502-1 from transcoding process #1 800-1. In this way, transcoding process #2 800-2 can use reference pixels from sub-partition #1 502-1.
[0071] After reconstructing the decoded pixels of sub-partition #4 502-4, transcoding process #4 800-4 may have to wait to receive the decoded pixels of sub-partition #1 502-1, if necessary. Then, at 814, transcoding process #2 800-2 may use reference pixels from sub-partition #1 502-1, reference pixels from sub-partition #4 502-4, and / or reference pixels from the left neighboring block to generate predicted pixels. The transcoder 106 performs the transcoding process of sub-partition #3 502-3. After transcoding the pixels, at 818, transcoding process #2 800-2 then reconstructs (e.g., decodes) the pixels of sub-partition #3 502-3.
[0072] After reconstructing the transcoded pixels of sub-partition #2 502-2 and reconstructing the transcoded pixels of sub-partition #3 502-3, the transcoding process ends. Therefore, due to the parallel processing of the two groups of sub-partitions 502, the transcoder 106 can perform the transcoding process approximately twice as fast as performing the process in series. Although two groups are described, the transcoder 106 can divide the current block 202 into a different number of groups. For example, if eight sub-partitions 502 are used, two groups can be used; however, the transcoder can divide the sub-partitions 502 into four groups to perform the process four times faster than in series and twice as fast as using two groups.
[0073] During the decoding process, the sub-partitions 502 may also be decoded in parallel. For example, when the decoder 112 begins decoding the current block 202, the reference pixels of sub-partition #1 502-1 and sub-partition #4 502-4 are the same, and the decoder 112 begins decoding sub-partition #1 502-1 and sub-partition #4 502-4 in parallel. The decoder 112 may also use two decoding processes referred to as decoding process #1 801-1 and decoding process #2 801-2, similar to the transcoder 106.
[0074] Decoding process #1 801-1 generates predicted pixels for sub-partition #1 502-1 using pixels from neighboring blocks, such as blocks from the top of the current block 202 and blocks to the left of the current block 202. Decoding process #1 801-1 then performs a decoding process for sub-partition #1 502-1 to generate a residual. After decoding the pixels, decoding process #1 801-1 then uses the predicted pixels and the residual to reconstruct the pixels of sub-partition #1 502-1. In parallel, decoding process #2 801-2 generates predicted pixels for sub-partition #4 502-4 using the same reference pixels as the reference pixels used for sub-partition #1 502-1. Decoding process #2 801-2 then performs a decoding process for sub-partition #4 502-4. After decoding the pixels, decoding process #2 801-2 then uses the predicted pixels and the residual to reconstruct the reference pixels of sub-partition #4 502-4.
[0075] Sub-partition #2 502-2 uses reference pixels from sub-partition #1 502-1, reference pixels from sub-partition #4 502-4, and reference pixels from neighboring blocks (such as left neighboring blocks). After decoding the pixels of sub-partition #1 502-1, decoding process #1 801-1 may generate predicted pixels using reference pixels from sub-partition #1 502-1, reference pixels from sub-partition #4 502-4, and / or reference pixels 504-3 from left neighboring blocks, and decoding process #1 801-1 performs a decoding process of sub-partition #2 502-2 to generate residuals. After decoding the pixels, decoding process #1 801-1 then reconstructs the reference pixels of sub-partition #2 502-2 using the predicted pixels and the residuals.
[0076] Sub-partition #3 502-3 uses the same reference pixels as sub-partition #2 502-2, and the decoding process can be performed in parallel with sub-partition #2 502-2. Decoding process #2 801-2 performs the decoding process of sub-partition #3 502-3 to generate a residual. After decoding the pixels, decoding process #2 801-2 then uses the predicted pixels and the residual to reconstruct the reference pixels of sub-partition #3 502-3.
[0077] Transcoding process
[0078] Fig. 9 A more detailed flow chart 900 of transcoding of a block according to some embodiments is depicted. The above flow chart discusses the generation of predicted pixels. The following flow chart describes the transcoding process in more detail.
[0079] At 902, the transcoding process 800-1 receives the original pixels of sub-partition #1 502-1 and the predicted pixels of sub-partition #1 502-1. At 904, the transcoding process 800-1 generates the residual of sub-partition #1 from the original pixels and the predicted pixels. At 906, the transcoding process 800-1 transcodes the residual of sub-partition #1 502-1 by performing transformation and quantization and entropy encoding. At 908, the transcoding process #1 800-1 decodes the residual to generate the decoded pixels of sub-partition #1 502-1. At 910, the transcoding process #1 800-1 combines the decoded pixels with the predicted pixels to generate reference pixels of sub-partition #1 502-1. At 911, the transcoding process #1 800-1 transmits the decoded pixels to the transcoding process #2 800-2 (e.g., the decoded pixels are stored in a memory). At 912, a transcoding process for sub-partition #2 502-2 is performed using steps similar to those described in 902 to 911. However, sub-partition #2 uses reference pixels from sub-partition #1 502-1, reference pixels from sub-partition #4 502-4, and / or reference pixels from a left neighboring block. It may be necessary to receive decoded pixels from sub-partition #4 502-4 to complete the transcoding process.
[0080] The following operations are performed in parallel. Note that the corresponding steps may not be performed completely simultaneously. That is, steps 902 and 912 do not need to start and end at the same time. Instead, steps 902 to 912 are performed in parallel with steps 914 to 924, where each step can be performed at its own pace. However, it is necessary to receive decoded pixels from sub-partition #1 502-1 to complete the transcoding process from sub-partition #3 502-3. At 914, transcoding process #2 800-2 receives the original pixels of sub-partition #3 502-3 and the predicted pixels of sub-partition #3 502-3. At 916, transcoding process #2 800-2 generates the residual of sub-partition #1 from the original pixels and the predicted pixels. At 918, transcoding process #2 800-2 transcodes the residual of sub-partition #3 502-3 by performing transformation and quantization and entropy coding. At 920, transcoding process #2 800-2 decodes the residual to generate decoded pixels for sub-partition #3 502-3. At 922, transcoding process #2 800-2 combines the decoded pixels with the predicted pixels to generate reference pixels for sub-partition #3 502-3. At 923, transcoding process #2 800-2 transmits the decoded pixels to transcoding process #1 800-1 (e.g., stores the decoded pixels in a memory). At 924, the transcoding process of sub-partition #3 502-3 is performed using steps similar to those described in 914 to 923. However, sub-partition #3 uses reference pixels from sub-partition #1 502-1, reference pixels from sub-partition #4 502-4, and / or reference pixels from the left neighboring block. It may be necessary to receive decoded pixels from sub-partition #1 502-1 to complete the transcoding process.
[0081] Decoding process
[0082] Fig.10 A more detailed flowchart 1000 of decoding of a block according to some embodiments is depicted. At 1002, decoding process #1 801-1 generates predicted pixels from reference pixels of a previous block. The previous block may be a block on top of the current block 202 and / or to the left of the current block 202.
[0083] At 1004, decoding process #1 801-1 receives the encoded pixels of sub-partition #1 502-1. At 1006, decoding process #1 801-1 generates residuals for sub-partition #1 from the encoded pixels. For example, decoding process #1 801-1 may perform entropy decoding and inverse quantization and transformation. At 1008, decoding process #1 801-1 generates decoded pixels from the predicted pixels and the residuals. For example, decoding process #1 801-1 may combine the decoded pixels with the predicted pixels.
[0084] At 1010, decoding process #1 801-1 generates predicted pixels for sub-partition #1 from reference pixels. At 1011, decoding process #1 801-1 transmits the decoded pixels to transcoding process #2 1002-2. At 1012, decoding process #1 801-1 performs a prediction process for sub-partition #2. The process may be similar to steps 1002-1011. However, sub-partition #2 uses reference pixels from sub-partition #1 502-1, reference pixels from sub-partition #4 502-4, and / or reference pixels from the left block. Decoded pixels need to be received from sub-partition #4 502-4 to complete the transcoding process.
[0085] The following operations are performed in parallel. Note that the corresponding steps may not be performed completely simultaneously. That is, steps 1002 and 1014 do not need to start and end at the same time. Instead, steps 1002 to 1012 are performed in parallel with steps 1014 to 1024, wherein each step can proceed at its own pace. However, it may be necessary to receive decoded pixels from sub-partition #1 502-1. At 1014, decoding process #2 801-2 generates predicted pixels from reference pixels of the previous block. At 1016, decoding process #2 801-2 receives encoded pixels of sub-partition #3. At 1018, decoding process #2 801-2 generates residuals of sub-partition #3 from the encoded pixels. At 1020, decoding process #2 801-2 generates decoded pixels from the predicted pixels and the residuals. At 1022, decoding process #2 801-2 generates predicted pixels of sub-partition #3 from the reference pixels. At 1023, decoding process #1 801-1 transmits the decoded pixels to transcoding process #2 1002-2. At 1024, decoding process #2 801-2 performs a prediction process for sub-partition #3. The process may be similar to steps 1014-1023. However, sub-partition #3 uses reference pixels from sub-partition #1 502-1, reference pixels from sub-partition #4 502-4, and / or reference pixels from the left block. Decoded pixels need to be received from sub-partition #1 502-1 to complete the transcoding process.
[0086] in conclusion
[0087] In summary, some embodiments break the data dependencies between sub-partitions and allow processes to be performed in parallel. In addition, some embodiments introduce a weighted bidirectional prediction method for pixels in the central area of the coding block. This enhances prediction accuracy and leads to better compression efficiency of the video.
[0088] system
[0089] Fig.11An example of an encoding system according to some embodiments is depicted.A video codec framework includes a set of basic components: block partitioning, inter- and intra-frame prediction, transform and quantization, and entropy coding.
[0090] The transcoder 106 receives a video frame, which is first divided into non-overlapping coding blocks for further processing. In order to cope with different video content characteristics, complex areas will be covered by partitions with smaller sizes, while simple areas will be covered by larger partitions. Multiple block modes and shapes can be used together, for example, quadtree mode, ternary tree mode and binary tree mode can be used together, and square blocks and rectangular blocks can also be used together.
[0091] Prediction is used to remove redundancy of the video signal. By subtracting the predicted pixel value from the processed pixel, the amplitude of the residual signal can be significantly reduced, thereby reducing the resulting bitstream size. The intra-frame prediction block 1110 using reference pixels in the current frame aims to reduce spatial redundancy within the frame. The inter-frame prediction block 1112 using reference pixels from adjacent frames attempts to remove temporal redundancy between frames. The motion estimation and compensation block 1116 can be a submodule of inter-frame prediction on the encoder side, which captures the motion trajectory of objects between adjacent frames and generates reference pixels for inter-frame prediction.
[0092] The transform and quantization block 1104 uses the remaining pixels after intra-frame or inter-frame prediction. The transform and quantization block 1104 performs a transform operation to represent the residual signal in the frequency domain. Considering that the human visual system is more sensitive to low-frequency components of video signals than high-frequency components, quantization is designed to further compress the residual signal by reducing the accuracy of high-frequency signals.
[0093] To avoid the problem of desynchronization between the encoder 1100 and the decoder 600, the encoder 1100 includes a decoding module to ensure that both the encoder 1100 and the decoder 600 use the same mathematical processing. Thus, the inverse transform and inverse quantization block 1108 is similar to the corresponding block on the decoder side. The inverse transform and inverse quantization block 1108 uses intra-frame and inter-frame prediction to reconstruct pixels.
[0094] An in-loop filter 1114 removes any visual artifacts introduced by the above process. Various filtering methods are applied to the reconstructed frame in a cascaded manner to reduce different artifacts, including but not limited to blocking artifacts, mosquito artifacts, color banding effects, etc.
[0095] The entropy coding module 1106 may further compress the bitstream using a model-based approach. The transcoder 106 sends the resulting encoded bitstream to the decoder 112 over a network or other type of medium.
[0096] Fig.12An example of a decoding system according to some embodiments is depicted. The decoder 112 receives the encoded bitstream and inputs it into the entropy decoding block 1202 to recover the information required for the decoding process. As described above, the decoded frame can be decoded by using the inverse transform and inverse quantization block 1204, the intra-frame prediction block 1206 or the inter-frame prediction block 1208, the motion compensation block 1210 and the in-loop filtering block 1212 in the same manner as the decoded frame is constructed.
[0097] Example Embodiments
[0098] In some embodiments, a method includes: determining, by a computing device, a first group of reference pixels of a current block to be encoded, the current block being divided into a plurality of sub-partitions; processing, by the computing device, a first sub-partition and a second sub-partition of the plurality of sub-partitions in parallel using the first group of reference pixels; generating, by the computing device, a second group of reference pixels from the first sub-partition and a third group of reference pixels from the second sub-partition; and processing, by the computing device, a third sub-partition of the plurality of sub-partitions based on one or more of the first group of reference pixels, the second group of reference pixels, and at least a portion of the third group of reference pixels, and processing a fourth sub-partition of the plurality of sub-partitions based on one or more of the first group of reference pixels, the second group of reference pixels, and at least a portion of the third group of reference pixels.
[0099] In some embodiments, processing the third sub-partition and the fourth sub-partition includes: using a first reference pixel from one of the first group of reference pixels, the second group of reference pixels, and the third group of reference pixels; and using a second reference pixel from one of the first group of reference pixels, the second group of reference pixels, and the third group of reference pixels that is not used by the first reference pixel.
[0100] In some embodiments, processing the third subpartition and the fourth subpartition includes using a first weight for the first reference pixel and using a second weight for the second reference pixel to determine a predicted pixel value for a pixel being encoded in the current block, wherein the first weight and the second weight are different values.
[0101] In some embodiments, processing the third sub-partition and the fourth sub-partition includes: calculating a first distance from a first reference pixel to a pixel; calculating a second distance from a second reference pixel to a pixel; and calculating a first weight and a second weight using the first distance and the second distance.
[0102] In some embodiments, processing the third sub-partition and the fourth sub-partition includes using a single reference pixel from one of the first set of reference pixels, the second set of reference pixels, and the third set of reference pixels.
[0103] In some embodiments, the first set of reference pixels includes pixels from one or more neighboring blocks of the current block in the frame.
[0104] In some embodiments, the first sub-partition is located at a first position along an edge of the current block, and the second sub-partition is not immediately adjacent to the first sub-partition.
[0105] In some embodiments, the third sub-partition and the fourth sub-partition are located between the first sub-partition and the second sub-partition.
[0106] In some embodiments, at least a portion of the first set of reference pixels is adjacent to the second sub-partition and the third sub-partition, and at least a portion of the first set of reference pixels is in a neighboring block of the current block.
[0107] In some embodiments, the method further comprises: processing the first sub-partition using a first transcoding process using the first set of reference pixels; and processing the second sub-partition using a second transcoding process using the first set of reference pixels in parallel with the processing of the first sub-partition.
[0108] In some embodiments, the method further includes: providing a second set of reference pixels from the first transcoding process to the second transcoding process for use in processing the fourth sub-partition; and providing a third set of reference pixels from the second transcoding process to the first transcoding process for use in processing the third sub-partition.
[0109] In some embodiments, the second set of reference pixels is generated from decoded pixels of the first sub-partition and the third set of reference pixels is generated from decoded pixels of the second sub-partition.
[0110] In some embodiments, the second set of reference pixels is generated from the first residual of the first sub-partition and the third set of reference pixels is generated from the second residual of the second sub-partition.
[0111] In some embodiments, processing a first sub-partition using a first set of reference pixels and processing a second sub-partition using the first set of reference pixels in parallel includes: generating first predicted pixels from the first set of reference pixels; transcoding the first sub-partition using the first predicted pixels; generating second predicted pixels from the second set of reference pixels; and transcoding the second sub-partition using the second predicted pixels.
[0112] In some embodiments, processing a third sub-partition among multiple sub-partitions based on one or more of the first group of reference pixels, the second group of reference pixels, and at least a portion of the third group of reference pixels and processing a fourth sub-partition among multiple sub-partitions based on one or more of the first group of reference pixels, the second group of reference pixels, and at least a portion of the third group of reference pixels includes: generating a third predicted pixel based on one or more of the first group of reference pixels, the second group of reference pixels, and at least a portion of the third group of reference pixels; transcoding the third sub-partition using the third predicted pixel; generating a fourth predicted pixel based on one or more of the first group of reference pixels, the second group of reference pixels, and at least a portion of the third group of reference pixels; and transcoding the fourth sub-partition using the fourth predicted pixel.
[0113] In some embodiments, a second set of reference pixels is generated from first decoded pixels and first predicted pixels of the first sub-partition, and a third set of reference pixels is generated from second decoded pixels and second predicted pixels of the second sub-partition.
[0114] In some embodiments, processing a first sub-partition using a first set of reference pixels in parallel and processing a second sub-partition using the first set of reference pixels includes: decoding the first sub-partition; generating first predicted pixels from the first set of reference pixels; generating a second set of reference pixels from the decoded first sub-partition and the first predicted pixels; decoding the second sub-partition; generating second predicted pixels from the second set of reference pixels; and generating a third set of reference pixels from the decoded second sub-partition and the second predicted pixels.
[0115] In some embodiments, a non-transitory computer-readable storage medium contains instructions that, when executed, control a computer system to: determine a first set of reference pixels for a current block to be encoded, the current block being divided into a plurality of sub-partitions; process a first sub-partition and a second sub-partition of the plurality of sub-partitions in parallel using the first set of reference pixels; generate a second set of reference pixels from the first sub-partition and generate a third set of reference pixels from the second sub-partition; and process a third sub-partition of the plurality of sub-partitions based on one or more of the first set of reference pixels, the second set of reference pixels, and at least a portion of the third set of reference pixels, and process a fourth sub-partition of the plurality of sub-partitions based on one or more of the first set of reference pixels, the second set of reference pixels, and at least a portion of the third set of reference pixels.
[0116] In some embodiments, processing the third sub-partition and the fourth sub-partition includes: using a first reference pixel from one of the first group of reference pixels, the second group of reference pixels, and the third group of reference pixels; and using a second reference pixel from one of the first group of reference pixels, the second group of reference pixels, and the third group of reference pixels that is not used by the first reference pixel.
[0117] In some embodiments, a device includes: one or more computer processors; a non-transitory computer-readable storage medium including instructions that, when executed, control the one or more computer processors to: determine a first set of reference pixels for a current block to be encoded, the current block being divided into a plurality of sub-partitions; process a first sub-partition of the plurality of sub-partitions in parallel using the first set of reference pixels and process a second sub-partition of the plurality of sub-partitions using the first set of reference pixels; and process a third sub-partition of the plurality of sub-partitions based on a second set of reference pixels determined from processing the first sub-partition, and process a fourth sub-partition of the plurality of sub-partitions based on a third set of reference pixels determined from processing the second sub-partition.
[0118] Some embodiments may be implemented in a non-transitory computer-readable storage medium for use with or in conjunction with an instruction execution system, device, system, or machine. The computer-readable storage medium contains instructions for controlling a computer system to perform the methods described by some embodiments. The computer system may include one or more computing devices. When executed by one or more computer processors, the instructions may be configured or operable to perform the operations described in some embodiments.
[0119] As used in the description herein and throughout the appended claims, the singular forms "a", "an", and "the" include plural references unless the context clearly dictates otherwise. Also, as used in the description herein and throughout the appended claims, the meaning of "in" includes "in" and "on" unless the context clearly dictates otherwise.
[0120] The above description illustrates various embodiments and examples of how aspects of some embodiments may be implemented. The above examples and embodiments should not be considered to be the only embodiments, and are presented to illustrate the flexibility and advantages of some embodiments as defined by the appended claims. Based on the above disclosure and the appended claims, other arrangements, embodiments, implementations and equivalents may be adopted without departing from the scope of the invention as defined by the claims.
Claims
1. A method for processing a pixel, the method comprising: Determining, by a computing device, a first set of reference pixels for a current block to be encoded, the current block being divided into a plurality of sub-partitions; processing, by the computing device, a first sub-partition and a second sub-partition of the plurality of sub-partitions in parallel using the first set of reference pixels; generating, by the computing device, a second set of reference pixels from the first sub-partition and a third set of reference pixels from the second sub-partition; as well as The computing device processes a third sub-partition among the plurality of sub-partitions by selecting a first reference pixel from the first group of reference pixels, the second group of reference pixels, and the third group of reference pixels, and processes a fourth sub-partition among the plurality of sub-partitions by selecting a second reference pixel from the first group of reference pixels, the second group of reference pixels, and the third group of reference pixels.
2. The method according to claim 1, wherein: Processing the third sub-partition includes: using the first reference pixel from one of the first group of reference pixels, the second group of reference pixels, and the third group of reference pixels; and A third reference pixel from one of the first group of reference pixels, the second group of reference pixels, and the third group of reference pixels that is not used by the first reference pixel is used.
3. The method according to claim 2, wherein: Processing the third sub-partition includes: A first weight for the first reference pixel and a second weight for the third reference pixel are used to determine a predicted pixel value for a pixel to be encoded in the current block, wherein the first weight and the second weight are different values.
4. The method according to claim 3, wherein: Processing the third sub-partition includes: calculating a first distance from the first reference pixel to the pixel; calculating a second distance from the third reference pixel to the pixel; and The first weight and the second weight are calculated using the first distance and the second distance.
5. The method according to claim 1, wherein: Processing the third sub-partition includes: The first reference pixel is used as a single reference pixel to determine a predicted pixel value of a pixel being encoded in the current block.
6. The method according to claim 1, wherein: The first set of reference pixels includes pixels from one or more neighboring blocks of the current block in a frame.
7. The method according to claim 1, wherein: The first sub-partition is located at a first position along an edge of the current block, and The second sub-partition is not adjacent to the first sub-partition.
8. The method according to claim 7, wherein: The third sub-partition and the fourth sub-partition are located between the first sub-partition and the second sub-partition.
9. The method according to claim 1, wherein: At least a portion of the first set of reference pixels is adjacent to the second sub-partition and the third sub-partition, and At least a portion of the second group of reference pixels or the third group of reference pixels is in a neighboring block of the current block.
10. The method according to claim 1, further comprising: processing the first sub-partition using a first transcoding process using the first set of reference pixels; as well as The second sub-partition is processed using a second transcoding process utilizing the first set of reference pixels in parallel with processing of the first sub-partition.
11. The method according to claim 10, further comprising: providing the second set of reference pixels from the first transcoding process to the second transcoding process for use in processing the fourth subpartition; as well as The third set of reference pixels from the second transcoding process is provided to the first transcoding process for use in processing the third sub-partition.
12. The method according to claim 1, wherein: The second set of reference pixels is generated from decoded pixels of the first sub-partition, and The third set of reference pixels is generated from decoded pixels of the second sub-partition.
13. The method according to claim 1, wherein: The second set of reference pixels is generated from the first residual of the first sub-partition, and The third set of reference pixels is generated from a second residual of the second sub-partition.
14. The method according to claim 1, wherein: Processing the first sub-partition using the first set of reference pixels and processing the second sub-partition using the first set of reference pixels in parallel includes: generating first predicted pixels from the first set of reference pixels; transcoding the first sub-partition using the first predicted pixels; generating second predicted pixels from the second set of reference pixels; and The second sub-partition is transcoded using the second predicted pixels.
15. The method according to claim 14, wherein: Processing the third sub-partition and processing the fourth sub-partition include: generating a third predicted pixel by selecting a reference pixel from the first group of reference pixels, the second group of reference pixels, and the third group of reference pixels; transcoding the third sub-partition using the third predicted pixel; generating a fourth predicted pixel by selecting a reference pixel from the first group of reference pixels, the second group of reference pixels, and the third group of reference pixels; and The fourth sub-partition is transcoded using the fourth predicted pixels.
16. The method according to claim 15, wherein: The second set of reference pixels is generated from the first decoded pixels of the first sub-partition and the first predicted pixels, and The third set of reference pixels is generated from second decoded pixels of the second sub-partition and the second predicted pixels.
17. The method according to claim 1, wherein: Processing the first sub-partition using the first set of reference pixels and processing the second sub-partition using the first set of reference pixels in parallel includes: decoding the first sub-partition; generating first predicted pixels from the first set of reference pixels; generating the second set of reference pixels from the decoded first sub-partition and the first predicted pixels; decoding the second sub-partition; generating second predicted pixels from the second set of reference pixels; and The third set of reference pixels is generated from the decoded second sub-partition and the second predicted pixels.
18. A non-transitory computer readable storage medium comprising instructions for processing pixels, which when executed control a computer system to: Determining a first set of reference pixels for a current block to be encoded, the current block being divided into a plurality of sub-partitions; processing a first sub-partition and a second sub-partition of the plurality of sub-partitions in parallel using the first set of reference pixels; generating a second set of reference pixels from the first sub-partition and generating a third set of reference pixels from the second sub-partition; as well as A third sub-partition among the plurality of sub-partitions is processed by selecting a first reference pixel from the first group of reference pixels, the second group of reference pixels, and the third group of reference pixels, and a fourth sub-partition among the plurality of sub-partitions is processed by selecting a second reference pixel from the first group of reference pixels, the second group of reference pixels, and the third group of reference pixels.
19. The non-transitory computer-readable storage medium of claim 18, wherein: Processing the third sub-partition and the fourth sub-partition includes: using a first reference pixel from one of the first group of reference pixels, the second group of reference pixels, and the third group of reference pixels; and A second reference pixel from one of the first group of reference pixels, the second group of reference pixels, and the third group of reference pixels that is not used by the first reference pixel is used.
20. A method for processing a pixel, the method comprising: Determining, by a computing device, a first set of reference pixels for a current block to be encoded, the current block being divided into a plurality of sub-partitions; processing, by the computing device, a first sub-partition of the plurality of sub-partitions using the first set of reference pixels using a first process to generate a first predicted pixel; Processing, by the computing device, a second sub-partition of the plurality of sub-partitions using the first set of reference pixels in parallel using a second process to generate second predicted pixels; transmitting, by the computing device, a first decoded pixel of a first predicted pixel from the first process to the second process; transmitting, by the computing device, a second decoded pixel of a second predicted pixel from the second process to the first process; processing, by the computing device, a third subpartition of the plurality of subpartitions based on a second set of reference pixels determined from the first decoded pixels and the first set of reference pixels using the first process; and A fourth sub-partition of the plurality of sub-partitions is processed by the computing device using the first process based on a third set of reference pixels determined from the second decoded pixels and the first set of reference pixels.