Reference list reordering in video coding
By reordering the reference picture list in video encoding and decoding technology, and optimizing the reference picture order according to the template matching cost, the problem of low inter-frame prediction efficiency in the prior art is solved, and more efficient and high-quality video encoding and decoding is achieved.
Patent Information
- Application Number
- CN202380055811.9
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2023-03-22
- Filing Date
- 2023-06-30
- Publication Date
- 2025-03-11
AI Technical Summary
In the inter-frame prediction process, existing video encoding and decoding technologies are difficult to effectively utilize reference picture lists, resulting in low encoding and decoding efficiency.
By reordering the reference picture list, the order of the reference picture is determined based on the template matching cost between the adjacent samples of the current codec tree unit and the reference picture in the reference picture, thereby optimizing inter prediction.
Improve the efficiency and quality of video encoding and decoding, and reduce the complexity and computing load of encoding and decoding through more precise reference picture selection.
Smart Images

Figure CN119605174A_ABST
Abstract
Description
[0001] Related references
[0002] This application claims priority to U.S. Provisional Application No. 63 / 369,089, filed on July 22, 2022, and U.S. Provisional Application No. 63 / 491,557, filed on March 22, 2023. The entire contents of the above are incorporated herein by reference. Technical Field
[0003] The present disclosure generally relates to video coding and decoding. In particular, the present disclosure relates to a method for coding and decoding a pixel block by performing inter-frame prediction using a reference list. Background Art
[0004] Unless otherwise indicated herein, the approaches described in this section are not prior art to the claims listed below and are not admitted to be prior art by inclusion in this section.
[0005] High-Efficiency Video Coding (HEVC) is an international video codec standard developed by the Joint Collaborative Team on Video Coding (JCT-VC). HEVC is based on a hybrid block-based motion compensation DCT transform-like codec architecture. The basic unit of compression, called a coding unit (CU), is a 2Nx2N square pixel block. Each CU can be recursively divided into four smaller CUs until a predetermined minimum size is reached. Each CU contains one or more prediction units (PUs).
[0006] Versatile video coding (VVC) is the latest international video codec standard developed by the Joint Video Expert Team (JVET) of ITU-T SG16 WP3 and ISO / IEC JTC1 / SC29 / WG11. The input video signal is predicted from a reconstructed signal derived from the coded picture region. The prediction residual signal is processed by block transform. The transform coefficients are quantized and entropy coded along with other auxiliary information in the bitstream. The reconstructed signal is generated from the prediction signal and the reconstructed residual signal after inverse transforming the dequantized transform coefficients. The reconstructed signal is further processed by loop filtering to remove codec artifacts. The decoded picture is stored in a frame buffer and used to predict future pictures in the input video signal.
[0007] In VVC, a codec picture is divided into non-overlapping square block areas represented by associated coding tree units (CTUs). A codec picture can be represented by a set of fragments, each fragment containing an integer number of CTUs. The CTUs in a fragment are processed continuously in a raster scan. Intra-frame prediction or inter-frame prediction can be used to decode bi-predictive (B) fragments, where there are at most two motion vectors and reference indices to predict the sample values of each block. Prediction (P) fragments are decoded using intra-frame prediction or inter-frame prediction with at most one motion vector and reference index to predict the sample values of each block. Intra-frame (I) fragments are decoded using only intra-frame prediction.
[0008] A quadtree (QT) with a nested multi-type-tree (MTT) structure can be used to divide a CTU into one or more non-overlapping coding units (CUs) to accommodate various local motion and texture features. A CU can be further divided into smaller CUs using one of five partition types: quadtree partitioning, vertical binary tree partitioning, horizontal binary tree partitioning, vertical center-side ternary tree partitioning, and horizontal center-side ternary tree partitioning.
[0009] Each CU contains one or more prediction units (PUs). The prediction unit, together with the associated CU syntax, serves as a basic unit for sending prediction information. The specified prediction process is used to predict the values of the relevant pixel samples within the PU. Each CU may contain one or more transform units (TUs) for representing prediction residual blocks. A transform unit (TU) consists of a transform block (TB) of luma samples and two corresponding transform blocks of chroma samples, each TB corresponding to a residual block of samples from one color component. Integer transform is applied to the transform block. The level values of the quantization coefficients are entropy encoded and decoded in the bitstream together with other auxiliary information. The terms coding tree block (CTB), coding block (CB), prediction block (PB), and transform block (TB) are defined as 2D sample arrays that specify a color component associated with a CTU, CU, PU, and TU, respectively. Therefore, a CTU consists of a luma CTB, two chroma CTBs, and related syntax elements. Similar relationships are valid for CU, PU, and TU.
[0010] For each inter-predicted CU, motion parameters consisting of motion vector, reference picture index and reference picture list usage index as well as additional information are used for inter-prediction sample generation. Motion parameters can be sent explicitly or implicitly. When a CU is encoded or decoded in skip mode, the CU is associated with one PU and has no significant residual coefficients, no motion vector increments or reference picture indices are encoded or decoded. Merge mode is specified and the motion parameters of the current CU are obtained from neighboring CUs, including spatial and temporal candidates, as well as additional scheduling introduced in VVC. Merge mode can be applied to any inter-predicted CU. An alternative to merge mode is the explicit transmission of motion parameters, where motion vectors, corresponding reference picture indices for each reference picture list and reference picture list usage flags and other required information are explicitly sent per CU. Summary of the invention
[0011] The following summary is illustrative only and is not intended to be binding in any way. That is, the following summary is provided to introduce the concepts, highlights, benefits and advantages of the novel and non-obvious technologies described herein. Selected but not all embodiments are further described in the detailed description below. Therefore, the following summary is not intended to identify the essential features of the claimed subject matter, nor is it intended to be used to determine the scope of the claimed subject matter.
[0012] Some embodiments of the present invention provide a method for decoding a video picture by reordering a reference picture list (RPL). A video codec receives the RPL of a current coding tree unit (CTU) of a current picture. The RPL identifies multiple reference pictures. The video codec assigns indexes to multiple reference pictures in the RPL of the current CTU. The video codec receives data to be encoded or decoded into multiple blocks of the current CTU. The video codec encodes or decodes multiple blocks of the CTU by using the assigned indexes to select one or more reference pictures from the RPL to generate inter-frame prediction.
[0013] In some embodiments, based on explicit signaling, indexes are configured to multiple reference pictures in the RPL. In some embodiments, when encoding or decoding each CTU of the current picture, indexes are configured to multiple reference pictures in the RPL based on a history-based table that records the distribution of reference picture selections.
[0014] In some embodiments, the video codec derives a representative MV of the current CTU and calculates the cost of multiple reference pictures. The cost of each reference picture is calculated based on (i) neighboring samples of the current CTU and (ii) reference samples in the reference picture identified by the representative MV, and based on the calculated cost, an index is assigned to multiple reference pictures based on the RPL.
[0015] In some embodiments, the representative MV is derived from the MV used to reconstruct one or more blocks adjacent to the current CTU, and the representative MV may be a weighted average of the MVs used to reconstruct the blocks adjacent to the current CTU. In some embodiments, the representative MV is derived from the MVs of one or more blocks in the current CTU, and the representative MV may be a weighted average of the MVs from one or more blocks in the current CTU. In some embodiments, the representative MV is derived from the temporal MV from the co-located CTU or the reference picture CTU, and the representative MV may be a weighted average of the temporal MVs from the co-located CTU or the reference picture CTU. The representative MV is derived from the MV inherited from the adjacent position of the current CTU. The video codec may use the motion vector predictor (MVP) of the block in the current CTU as the representative MV of the CTU. BRIEF DESCRIPTION OF THE DRAWINGS
[0016] The accompanying drawings are included to provide a further understanding of the present disclosure and are incorporated into and constitute a part of the present disclosure. The accompanying drawings illustrate embodiments of the present disclosure and together with the description are used to explain the principles of the present disclosure. It is worth noting that the drawings are not necessarily drawn to scale, as certain components may be shown out of proportion to size in actual implementations in order to clearly illustrate the concepts of the present disclosure.
[0017] Figure 1A -B shows various syntax structures and elements related to reference picture management signaling.
[0018] Figure 2 The reconstructed samples used in the reference picture list reordering based on coding tree unit (CTU) are conceptually illustrated.
[0019] Figure 3 The use of a representative motion vector (MV) of a CTU to reorder a reference picture list (RPL) of the CTU is conceptually illustrated.
[0020] Figure 4 Neighboring positions used in CTU-based reference list reordering are shown.
[0021] Figure 5The current CTU and the previously coded CTU in the current picture are shown.
[0022] Figure 6 An example video encoder is shown that may implement CTU-based reference picture lists.
[0023] Figure 7 Portions of a video encoder that implements CTU-based reference picture lists are conceptually shown.
[0024] Figure 8 The process of encoding a pixel block using a CTU-based reference picture list is conceptually illustrated.
[0025] Fig. 9 An example video decoder is shown that can implement CTU-based reference picture lists.
[0026] Fig.10 The portion of a video decoder that implements a CTU-based reference picture list is shown.
[0027] Fig.11 The process of decoding a pixel block using a CTU-based reference picture list is conceptually illustrated.
[0028] Fig.12 An electronic system for implementing some embodiments of the present disclosure is conceptually illustrated. DETAILED DESCRIPTION
[0029] In the following detailed description, many specific details are set forth by way of example in order to provide a thorough understanding of the relevant teachings. Any variations, derivations, and / or extensions based on the teachings described herein are within the scope of protection of the present disclosure. In some cases, well-known methods, processes, components, and / or circuits associated with one or more example embodiments disclosed herein may be described at a relatively high level without details to avoid unnecessarily obscuring aspects of the teachings of the present disclosure.
[0030] Ⅰ. Reference Image Management
[0031] The video codec system performs reference picture management for inter-frame prediction using multiple reference pictures. Reference picture management manages the storage and removal of reference pictures in the decoded picture buffer (DPB), and places the reference pictures in the reference picture list (RPL) in the proper order. When a picture is referenced for inter-frame prediction (as a temporal reference or inter-layer reference), the index in the RPL is used to select which picture in the DPB is being referenced. Reference picture management can use the DPB and up to two RPLs. Reference picture management can also mark reference pictures as "for short-term reference", "for long-term reference", and "not for reference".
[0032] In the codec process, the picture order count (POC) is a variable that is derived as an output order indicator and used as an identifier for a picture, including DPB management and reference picture management. In order to minimize the signaling overhead bit cost while maintaining robustness against data loss, the most significant bit (MSB) of the POC value may not be sent in the bitstream, because typically only the difference between POC values is necessary for the correct operation of the codec process.
[0033] The least significant bit (LSB) of the POC is used to derive the POC value and has the same value for all fragments of the picture, and is sent in the picture header (PH) or slice header (SH). The POC MSB cyclic value can be sent in the PH to enable the POC value to be derived without tracking the POC MSB in a way that depends on the POC information of earlier coded and decoded pictures. For example, this allows intra random access pictures (IRAP) and non-IRAP pictures to be mixed within access units (AUs) in a multi-layer bitstream. POC LSB information can be sent for each picture, including instantaneous decoder refresh (IDR) pictures. POC LSB can be sent for IDR pictures, which saves some bits for IDR pictures. The transmission of POC LSB information for IDR pictures also helps to merge IDR pictures and non-IDR pictures from different bitstreams into a single coded and decoded picture.
[0034] In some embodiments, for all types of slices (e.g., B, P, and I slices), two RPLs referred to as List 0 (L0 or RPL0) and List 1 (L1 or RPL 1) are sent and derived directly without using RPL initialization or modification processing. In some embodiments, RPL is not based on reference picture sets or sliding window plus memory management control operation processing.
[0035] Reference picture marking is directly based on RPL 0 and 1, indicating active and inactive entries in the RPL, where only the active entry can be used by reference index in inter prediction of the current picture.
[0036] Figure 1A -B shows various syntax structures and elements related to reference picture management signaling included in sequence parameter sets (SPS), picture parameter sets (PPS), PH, and SH. In the figure, syntax elements that are always present are shown in solid rectangles, while syntax elements that are conditionally present are shown in dashed rectangles. For RPL 0 and RPL 1 (if different from those of RPL 0), multiple predetermined candidate RPL syntax structures (e.g., ref_pic_list_struct (listIdx, rplsIdx) syntax structures) can be sent in the SPS to be used by referencing them in the PH or SH.
[0037] The syntax elements in the PPS indicate the default number of active entries for RPL 0 and RPL 1, a flag that controls the presence of RPL 1 syntax in the ref_pic_lists() structure, and a flag that specifies whether the RPL information is contained in the PH or SH. The information used to derive the two RPLs (i.e., the ref_pic_lists() structure) is sent in the PH (if all fragments of the picture have the same RPL), or in the SH. Instead of referencing a predetermined candidate RPL structure (identified by rpl_idx[i]), another RPL structure (i.e., the ref_pic_list_struct(i,sps_num_ref_pic_lists[i]) structure) can also be sent directly in the PH and SH.
[0038] Each RPL syntax structure includes information about the number of reference picture entries for a particular RPL. Reference picture entries in a RPL are short-term reference picture entries, long-term reference picture entries or inter-layer reference picture entries. The default number of active entries for RPL 0 and RPL 1 is sent in the PPS (i.e. pps_num_ref_idx_default_active_minus1[i]) and can be overridden in the SH (using syntax elements sh_num_ref_idx_active_override_flag and sh_num_ref_idx_active_minus1[i]).
[0039] II. Reorder the reference list
[0040] In some embodiments, a reference picture reordering method is used to allow block-level adaptability of reference picture index assignment. Reference picture reordering can be based on template matching cost. For unidirectional prediction AMVP mode, the reference pictures in list 0 and list 1 are interleaved to generate a joint list. For each hypothesis of the reference pictures in the joint list, motion information can be derived accordingly, and template matching is performed to calculate the cost. The joint list is reordered in ascending order of template matching cost. The index of the selected reference picture in the reordered joint list is sent in the bitstream. For bidirectional prediction AMVP mode, a list of reference picture pairs from list 0 and list 1 is generated and similarly reordered based on template matching cost. The index of the selected pair is sent in the bitstream.
[0041] In some embodiments, the result of the number of active reference pictures in the random access configuration is extended by setting the number of active reference pictures equal to the number of reported available reference pictures. In some embodiments, a block-level reference picture reordering method based on template matching can be used. For the unidirectional prediction AMVP mode, the reference pictures in list 0 and list 1 are interleaved to generate a joint list. For each hypothesis of the reference pictures in the joint list, template matching is performed to calculate the cost. The joint list is reordered in ascending order of template matching cost. The index of the selected reference picture in the reordered joint list is sent in the bitstream. For the bidirectional prediction AMVP mode, a list of reference picture pairs from list 0 and list 1 is generated and similarly reordered based on the template matching cost. The index of the selected pair is sent in the bitstream.
[0042] In some embodiments, sign prediction of motion vector difference (MVD) is applied to conventional and affine AMVP modes. The derivation of the predicted MVD sign requires the reference picture to be known. However, the reference picture reordering method requires the MVD to be known in this process. To solve this problem, the minimum template matching cost among all MVD sign hypotheses is assigned to the reference picture hypothesis. The selected reference picture can then be determined by the decoded index and the reordered reference picture list. Thereafter, MVD sign prediction is performed by reusing the calculated template matching cost. For simplicity, in the case of bidirectional prediction, MVD sign prediction in list 1 is enabled only when the MVD in list 0 is zero.
[0043] III. CTU-based reference picture list reordering
[0044] Some embodiments of the present disclosure provide a CTU-based reference picture list (RPL) reordering method. Specifically, when encoding or decoding a CTU, the reference picture list is implicitly or explicitly (through signaling) reordered before encoding or decoding the first block, the first AMVP, or the first inter-frame block of the CTU. All blocks in the CTU use the same reordered reference picture. All blocks in the CTU use the same reference picture order. The CTU-based reference picture ordering can be determined based on the template matching cost or SAD cost between the reconstructed samples adjacent to the current CTU and their corresponding reference samples (or predicted samples) in the reference picture.
[0045] In the CTU-based reference list reordering method, reconstructed samples adjacent to the current CTU can be used to perform reference picture reordering. Figure 2 The reconstructed samples used in the CTU-based reference picture list reordering are conceptually shown. In the figure, the samples in the shaded area adjacent to the current CTU 200 may be used for the CTU-based reference picture list reordering of the current CTU 200. These adjacent reconstructed samples may be samples of blocks adjacent to the current CTU 200. These blocks of the adjacent CTU 200 may be blocks of CTU A, CTU B, and CTU D, which are CTUs adjacent to the current CTU 200.
[0046] The CTU 200 is associated with a CTU-based RPL 240, which includes reference pictures A, B, C, and D. In some embodiments, the cost used to sort the RPL is the calculated difference between the reconstructed samples adjacent to the current CTU and their corresponding reference samples in different reference pictures of the RPL. These reference samples are located in a reference block identified by the motion source of the current CTU, which can be a representative MV 220 of the current CTU 200. The representative MV 220 of the current CTU 220 can be derived or determined from: adjacent reconstructed blocks in adjacent CTUs, one or more inter-frame prediction blocks in the current CTU, one or more AMVP mode blocks in the current CTU, a temporal MV in a co-located picture or reference picture, a history-based MV, or history-based motion information. The cost metric used to determine the order of the reference pictures can be a template matching cost, a SAD cost or a SATD cost, or an SSE cost, or other difference metrics between the reconstructed samples adjacent to the current CTU and the corresponding reference samples in different reference pictures referenced / identified by the representative MV.
[0047] Figure 3 Conceptually illustrating the use of a representative MV of a CTU to reorder the reference picture list (RPL) of the CTU. For CTU 200, RPL 240 identifies four reference pictures 301-304 (reference pictures AD). Representative MV 220 is used to locate reference blocks or samples in these reference pictures 301-304, and these reference blocks or samples are in turn used to calculate the costs of these reference pictures.
[0048] As shown, the current CTU 200 is located in the current picture 210. The neighboring samples or neighboring blocks 230 of the current CTU 200 are used to calculate the TM cost. The representative MV 220 of the CTU 200 is derived for use in the reordering RPL 240. The representative MV 220 is used to identify reference blocks or reference samples 331-334 in different reference pictures 301-304. The reference blocks or reference samples 331-334 provide reference samples corresponding to the neighboring samples 230 of the current CTU 200.
[0049] The cost associated with the reference picture 301 (reference picture A) is calculated as the difference between the reference block / sample 331 and the neighboring sample / block 230. The cost associated with the reference picture 302 (reference picture B) is calculated as the difference between the reference block / sample 332 and the neighboring sample / block 230. The cost associated with the reference picture 303 (reference picture C) is calculated as the difference between the reference block / sample 333 and the neighboring sample / block 230. The cost associated with the reference picture 304 (reference picture D) is calculated as the difference between the reference block / sample 334 and the neighboring sample / block 230.
[0050] In this example, the cost calculated for reference picture B (reference picture 302) is the lowest among all reference pictures in RPL 240, so it is assigned a reordered index of 0. The cost calculated for reference picture C (reference picture 303) is the lowest among all reference pictures in RPL 240, so it is assigned a reordered index of 1. Reference picture D has the third lowest cost in the RPL and is assigned index 2. Reference picture A has the fourth lowest cost in the RPL and is assigned index 3, and so on.
[0051] In some embodiments, MV or motion information from one or more neighboring reconstructed blocks in a CTU adjacent to the current CTU is used as the representative MV of the current CTU. In some embodiments, MV or motion from the last N neighboring reconstructed blocks (N≥0) in the neighboring CTU is used as the representative MV of the current CTU. In some embodiments, MV or motion from one or more neighboring reconstructed blocks in the neighboring CTU is weighted or averaged, and the weighted MV or averaged MV is used as the representative MV of the current CTU.
[0052] In some embodiments, the MV or motion from one or more blocks in the current CTU is used as the representative MV of the current CTU. In some embodiments, the MV or motion from one or more inter-prediction blocks or one or more AMVP mode blocks in the current CTU is used as the representative MV of the current CTU.
[0053] In some embodiments, the MV or motion from the first N blocks (N≥0) in the current CTU is used as the representative MV of the current CTU. In some embodiments, the MV or motion from one or more blocks in the current CTU is weighted or averaged, and the weighted MV or averaged MV is used as the representative MV of the current CTU.
[0054] In some embodiments, the temporal MV from the co-located CTU or the temporal MV from the reference picture CTU is used as the representative MV of the current CTU. In some embodiments, the temporal MV from the co-located CTU or the temporal MV from the reference picture CTU is weighted or averaged, and the weighted MV or the averaged MV is used as the representative MV of the current CTU.
[0055] In some embodiments, (one of) the MVs from the neighboring locations of the current CTU is inherited as the representative MV of the current CTU. Figure 4 4 shows neighboring positions used in CTU-based reference list reordering. The figure shows a current CTU 400. The neighboring positions (e.g., A0, A1, A2, B0, B1, C0, C1 in the figure) can be neighboring CTUs or neighboring reconstructed blocks, and the neighboring reconstructed samples of the current CTU are used to determine the reference picture order.
[0056] In some embodiments, history-based motion information or a history-based MV is used as a representative MV of the current CTU.
[0057] In some embodiments, the process of reordering reference pictures is sent per frame or picture instead of per CTU. The reference picture list can be reordered based on explicit signaling or flags before encoding or decoding the current picture. The order of reference pictures can also be determined implicitly for each frame or picture.
[0058] In some embodiments, before encoding or decoding, a joint list (of reference pictures) for unidirectional prediction and a joint list (of reference pictures) for bidirectional prediction are formed, and then the reordering process is performed. The additional redundancy check process of forming the joint list is not processed, so more reference pictures can be inserted into the joint list.
[0059] In some embodiments, when motion vector difference (MVD) sign derivation is enabled, reordering is performed before MVD sign derivation. Since the sign of MVD has not yet been determined, in order to determine the order of the reference picture list, the motion vector predictor (MVP) (as the representative MV of the CTU) first determines the template matching cost or SATD cost between the neighboring reconstructed block and the corresponding reference block in the reference picture in the RPL.
[0060] In some embodiments, when the difference / cost between the current picture and the current reference picture is calculated, all MVPs from different reference pictures are scaled to the current reference picture.
[0061] In some embodiments, when encoding or decoding the current CTU, the order of reference pictures is determined based on the reference picture distribution of the previously encoded or decoded CTU. Figure 5 The previously coded CTU in the current CTU and the current picture is shown.) For example, the order of the reference pictures in the current CTU depends on the reference picture distribution of a previously coded CTU. For another example, the order of the reference pictures in the current CTU depends on the reference picture distribution of the previously coded CTU row. For another example, the history-based table records the distribution of reference picture selection when encoding or decoding each CTU, and the history-based table is used for the reference picture sorting of the current CTU.
[0062] Any of the aforementioned proposed methods may be implemented in an encoder and / or a decoder. For example, any of the proposed methods may be implemented in a predictor derivation module of an encoder and / or a predictor derivation module of a decoder. Alternatively, any of the proposed methods may be implemented as a circuit coupled to a predictor derivation module of an encoder and / or a predictor derivation module of a decoder to provide information required by the predictor derivation module.
[0063] IV. Video Encoder Example
[0064] Figure 6 An example video encoder 600 is shown that can implement a CTU-based reference picture list. As shown, the video encoder 600 receives an input video signal from a video source 605 and encodes the signal into a bitstream 695. The video encoder 600 has several components or modules for encoding the signal from the video source 605, including at least some components selected from the following: a transform module 610, a quantization module 611, an inverse quantization module 614, an inverse transform module 615, an intra-frame estimation module 620, an intra-frame prediction module 625, a motion compensation module 630, a motion estimation module 635, a loop filter 645, a reconstructed picture buffer 650, an MV buffer 665, an MV prediction module 675, and an entropy encoder 690. The motion compensation module 630 and the motion estimation module 635 are part of the inter-frame prediction module 640.
[0065] In some embodiments, modules 610-690 are software instruction modules executed by one or more processing units (e.g., processors) of a computing device or electronic device. In some embodiments, modules 610-690 are hardware circuit modules implemented by one or more integrated circuits (ICs) of an electronic device. Although modules 610-690 are shown as separate modules, some modules may be combined into a single module.
[0066] The video source 605 provides a raw video signal that presents the pixel data of each video frame without compression. The subtractor 608 calculates the difference between the raw video pixel data of the video source 605 and the predicted pixel data 613 from the motion compensation module 630 or the intra-frame prediction module 625 as a prediction residual 609. The transform module 610 converts the difference (or residual pixel data or residual signal) into transform coefficients (e.g., by performing a discrete cosine transform or DCT). The quantization module 611 quantizes the transform coefficients into quantization data (or quantization coefficients) 612, which are encoded into a bitstream 695 by the entropy encoder 690.
[0067] The inverse quantization module 614 dequantizes the quantized data (or quantized coefficients) 612 to obtain transform coefficients, and the inverse transform module 615 performs an inverse transform on the transform coefficients to generate a reconstructed residual 619. The reconstructed residual 619 is added to the predicted pixel data 613 to generate reconstructed pixel data 617. In some embodiments, the reconstructed pixel data 617 is temporarily stored in a line buffer (line buffer not shown) for intra prediction and spatial MV prediction. The reconstructed pixels are filtered by the loop filter 645 and stored in the reconstructed picture buffer 650. In some embodiments, the reconstructed picture buffer 650 is a memory external to the video encoder 600. In some embodiments, the reconstructed picture buffer 650 is a memory internal to the video encoder 600.
[0068] The intra estimation module 620 performs intra prediction based on the reconstructed pixel data 617 to generate intra prediction data. The intra prediction data is provided to the entropy encoder 690 to be encoded into a bitstream 695. The intra prediction data is also used by the intra prediction module 625 to generate the predicted pixel data 613.
[0069] The motion estimation module 635 performs inter-frame prediction by generating MVs to refer to pixel data of previously decoded frames stored in the reconstructed picture buffer 650. These MVs are provided to the motion compensation module 630 to generate predicted pixel data.
[0070] Instead of encoding the complete actual MV in the bitstream, the video encoder 600 uses MV prediction to generate a predicted MV, and the difference between the MV used for motion compensation and the predicted MV is encoded as residual motion data and stored in the bitstream 695.
[0071] The MV prediction module 675 generates a predicted MV based on a reference MV generated for encoding a previous video frame, i.e., a motion compensated MV for performing motion compensation. The MV prediction module 675 obtains the reference MV from the previous video frame from the MV buffer 665. The video encoder 600 stores the MV generated for the current video frame in the MV buffer 665 as a reference MV for generating a predicted MV.
[0072] The MV prediction module 675 uses the reference MV to create a predicted MV. The predicted MV can be calculated by spatial MV prediction or temporal MV prediction. The difference (residual motion data) between the predicted MV and the motion compensation MV (MC MV) of the current frame is encoded into the bit stream 695 by the entropy encoder 690.
[0073] The entropy encoder 690 encodes various parameters and data into a bitstream 695 by using an entropy coding technique such as context-adaptive binary arithmetic coding (CABAC) or Huffman coding. The entropy encoder 690 encodes various header elements, flags along with quantized transform coefficients 612 and residual motion data as syntax elements into the bitstream 695. The bitstream 695 is then stored in a storage device or transmitted to a decoder via a communication medium such as a network.
[0074] The loop filter 645 performs filtering or smoothing operations on the reconstructed pixel data 617 to reduce encoding and decoding artifacts, especially at the boundaries of pixel blocks. In some embodiments, the filtering operations performed by the loop filter 645 include a deblocking filter (DBF), a sample adaptive offset (SAO), and / or an adaptive loop filter (ALF).
[0075] Figure 7 6 shows a portion of a video encoder 600 that implements a CTU-based or frame-based reference picture list. Specifically, the figure shows components of an inter-frame prediction module 640 of the video encoder 600. As shown, the inter-frame prediction module 640 obtains candidate motion vectors from an MV buffer 665 and searches the contents of a reconstructed picture buffer 650 to generate predicted pixel data 613 through motion compensation.
[0076] The inter prediction module 640 includes a motion compensation module 630, a motion estimation module 635, a representative MV selector 705, a reference picture list reordering module 710, and a reference picture list (RPL) 730 of the current CTU or frame.
[0077] The representative MV selector 705 obtains the candidate motion vectors from the MV buffer 665 to derive or select the representative MV of the current CTU or frame. The representative MV selector 705 may derive or select the representative MV from: an MV used to reconstruct one or more blocks adjacent to the current CTU, or an MV from one or more blocks in the current CTU, or a temporal MV from a co-located CTU or a reference picture CTU, or an MV inherited from an adjacent position of the current CTU, or a motion vector predictor (MVP) of a block in the current CTU.
[0078] The RPL reordering module 720 uses the selected or derived representative MV (from 705) to calculate the template matching (TM) cost associated with the reference pictures in the RPL 730. In some embodiments, the cost associated with each reference picture in the RPL 730 is determined based on a difference measurement between (i) neighboring samples or neighboring blocks of the current CTU and (ii) corresponding reference samples in the reference picture identified by the representative MV. (Neighboring samples and reference samples are obtained from the reconstructed picture buffer 650.) Based on the calculated cost, the RPL reordering module 720 assigns an index to the reference picture in the RPL 730.
[0079] The motion estimation module 635 performs motion estimation to provide one or more motion vectors to the motion compensation module 630 to perform motion compensation. The motion estimation module 635 also sends the selected motion vector to the entropy encoder by using the index assigned to the reference picture in the RPL 730.
[0080] Figure 8 A process 800 is conceptually illustrated for encoding a pixel block using a CTU-based reference picture list. In some embodiments, one or more processing units (e.g., processors) of a computing device implementing encoder 600 perform process 800 by executing instructions stored in a computer-readable medium. In some embodiments, an electronic device implementing encoder 600 performs process 800.
[0081] The video encoder receives (at block 810) a reference picture list (RPL) for a current coding tree unit (CTU) of a current picture. The RPL identifies a plurality of reference pictures.
[0082] The video encoder assigns (at block 820) indexes to multiple reference pictures in the RPL of the current CTU. In some embodiments, the indexes are assigned to the multiple reference pictures in the RPL based on explicit signaling. In some embodiments, the indexes are assigned to the multiple reference pictures in the RPL based on a history-based table that records the distribution of reference picture selections when encoding or decoding each CTU of the current picture.
[0083] In some embodiments, the video encoder derives a representative motion vector (MV) of the current CTU and calculates costs for multiple reference pictures. The cost of each reference picture is calculated based on (i) neighboring samples of the current CTU and (ii) reference samples in the reference picture identified by the representative MV, and based on the calculated costs, indices are assigned to multiple reference pictures in the RPL.
[0084] In some embodiments, the representative MV is derived from the MV used to reconstruct one or more blocks adjacent to the current CTU, and the representative MV may be a weighted average of the MVs used to reconstruct the blocks adjacent to the current CTU. In some embodiments, the representative MV is derived from the MV of one or more blocks in the current CTU, and the representative MV may be a weighted average of the MVs from one or more blocks in the current CTU. In some embodiments, the representative MV is derived from the temporal MV from the co-located CTU or the reference picture CTU, and the representative MV may be a weighted average of the temporal MVs from the co-located CTU or the reference picture CTU. The representative MV is derived from the MV inherited from the adjacent position of the current CTU. The video encoder may use the motion vector predictor (MVP) of the block in the current CTU as the representative MV of the CTU.
[0085] The video encoder receives (at block 830) data to be encoded as a plurality of blocks of a current CTU. The video encoder encodes (at block 840) the plurality of blocks of the CTU by using the assigned indexes to select one or more reference pictures from the RPL to generate inter-frame predictions for the plurality of blocks of the current CTU.
[0086] V. Example Video Decoder
[0087] In some embodiments, the encoder may send (or generate) one or more syntax elements in a bitstream so that the decoder may parse the one or more syntax elements from the bitstream.
[0088] Fig. 9An example video decoder 900 is shown that can implement a CTU-based or frame-based reference picture list. As shown, the video decoder 900 is an image decoding or video decoding circuit that receives a bitstream 995 and decodes the contents of the bitstream into pixel data of a video frame for display. The video decoder 900 has several components or modules for decoding the bitstream 995, including some components selected from the following: an inverse quantization module 911, an inverse transform module 910, an intra-frame prediction module 925, a motion compensation module 930, a loop filter 945, a decoded picture buffer 950, an MV buffer 965, an MV prediction module 975 and a parser 990. The motion compensation module 930 is part of the inter-frame prediction module 940.
[0089] In some embodiments, modules 910-990 are software instruction modules executed by one or more processing units (e.g., processors) of a computing device. In some embodiments, modules 910-990 are hardware circuit modules implemented by one or more ICs of an electronic device. Although modules 910-990 are shown as separate modules, some modules may be combined into a single module.
[0090] The parser 990 (or entropy decoder) receives the bitstream 995 and performs initial parsing according to the syntax defined by the video coding or image coding standard. The parsed syntax elements include various header elements, flags, and quantization data (or quantization coefficients) 912. The parser 990 parses out various syntax elements by using entropy coding techniques (e.g., context-adaptive binary arithmetic coding (ABAC) or Huffman encoding).
[0091] The inverse quantization module 911 dequantizes the quantized data (or quantized coefficients) 912 to obtain transform coefficients, and the inverse transform module 910 inversely transforms the transform coefficients 916 to generate a reconstructed residual signal 919. The reconstructed residual signal 919 is added to the predicted pixel data 913 from the intra prediction module 925 or the motion compensation module 930 to generate decoded pixel data 917. The decoded pixel data is filtered by the loop filter 945 and stored in the decoded picture buffer 950. In some embodiments, the decoded picture buffer 950 is a memory external to the video decoder 900. In some embodiments, the decoded picture buffer 950 is a memory internal to the video decoder 900.
[0092] The intra prediction module 925 receives intra prediction data from the bitstream 995 and, based thereon, generates predicted pixel data 913 from decoded pixel data 917 stored in the decoded picture buffer 950. In some embodiments, the decoded pixel data 917 is also stored in a line buffer (not shown) for intra prediction and spatial MV prediction.
[0093] In some embodiments, the contents of the decoded picture buffer 950 are used for display. The display device 955 either obtains the contents of the decoded picture buffer 950 for direct display, or obtains the contents of the decoded picture buffer to a display buffer. In some embodiments, the display device receives pixel values from the decoded picture buffer 950 via pixel transfer.
[0094] The motion compensation module 930 generates predicted pixel data 913 from decoded pixel data 917 stored in the decoded picture buffer 950 according to motion compensated MV (MC MV). These motion compensated MVs are decoded by adding residual motion data received from the bitstream 995 to the predicted MV received from the MV prediction module 975.
[0095] The MV prediction module 975 generates a predicted MV based on a reference MV generated for decoding a previous video frame (e.g., a motion compensated MV for performing motion compensation). The MV prediction module 975 obtains the reference MV of the previous video frame from the MV buffer 965. The video decoder 900 stores the motion compensated MV generated for decoding the current video frame in the MV buffer 965 as a reference MV for generating a predicted MV.
[0096] The loop filter 945 performs filtering or smoothing operations on the decoded pixel data 917 to reduce encoding and decoding artifacts, particularly at the boundaries of pixel blocks. In some embodiments, the filtering or smoothing operations performed by the loop filter 945 include a deblocking filter (DBF), a sample adaptive offset (SAO), and / or an adaptive loop filter (ALF).
[0097] Fig.10 Portions of a video decoder 900 implementing a CTU-based or frame-based reference picture list are shown. Specifically, the figure shows components of an inter-frame prediction module 940 of the video decoder 900. As shown, the inter-frame prediction module 940 obtains candidate motion vectors from the contents of the MV buffer 965 and the decoded picture buffer 950 to generate predicted pixel data 913 through motion compensation.
[0098] The inter prediction module 940 includes a motion compensation module 930, a motion decoder 1035, a representative MV selector 1005, a reference picture list reordering module 1010, and a reference picture list (RPL) 1030 of a current CTU or frame.
[0099] The representative MV selector 1005 obtains the candidate motion vectors from the MV buffer 965 to derive or select the representative MV of the current CTU or frame. The representative MV selector 1005 may derive or select the representative MV from: an MV used to reconstruct one or more blocks adjacent to the current CTU, or an MV from one or more blocks in the current CTU, or a temporal MV from a co-located CTU or a reference picture CTU, or an MV inherited from an adjacent position of the current CTU, or a motion vector predictor (MVP) of a block in the current CTU.
[0100] The RPL reordering module 1020 uses the selected or derived representative MV (from 1005) to calculate the template matching (TM) cost associated with the reference pictures in the RPL 1030. In some embodiments, the cost associated with each reference picture in the RPL 1030 is determined based on a difference measurement between (i) neighboring samples or neighboring blocks of the current CTU and (ii) corresponding reference samples in the reference picture identified by the representative MV. (Neighboring samples and reference samples are obtained from the decoded picture buffer 950.) Based on the calculated cost, the RPL reordering module 1020 assigns an index to the reference picture in the RPL 1030.
[0101] The entropy decoder 990 receives signaling indicating motion information of the current block, and relays the motion information to the motion decoder 1035 as MV for motion compensation (MC MV). The motion decoder 1035 can use one or more indexes provided by the entropy decoder 990 to identify one or more reference pictures in the RPL 1030. The compensation module 930 performs motion compensation MV according to the MC using prediction samples obtained from the decoded picture buffer 950. The obtained prediction samples are samples of the identified reference picture.
[0102] Fig.11 A process 1100 for decoding a block using a CTU-based reference picture list is conceptually illustrated. In some embodiments, one or more processing units (e.g., processors) of a computing device implementing decoder 900 perform process 1100 by executing instructions stored in a computer-readable medium. In some embodiments, an electronic device implementing decoder 900 performs process 1100.
[0103] The video decoder receives (at block 1110) a reference picture list (RPL) for a current codec tree unit (CTU) of a current picture. The RPL identifies a plurality of reference pictures.
[0104] The video decoder assigns (at block 1120) indexes to multiple reference pictures in the RPL of the current CTU. In some embodiments, the indexes are assigned to the multiple reference pictures in the RPL based on explicit signaling. In some embodiments, the indexes are assigned to the multiple reference pictures in the RPL based on a history-based table that records the distribution of reference picture selections when decoding or decoding each CTU of the current picture.
[0105] In some embodiments, the video decoder derives a representative motion vector (MV) of the current CTU and calculates costs for multiple reference pictures. The cost of each reference picture is calculated based on (i) neighboring samples of the current CTU and (ii) reference samples in the reference picture identified by the representative MV, and based on the calculated cost, an index is assigned to multiple reference pictures in the RPL.
[0106] In some embodiments, the representative MV is derived from the MV used to reconstruct one or more blocks adjacent to the current CTU, and the representative MV may be a weighted average of the MVs used to reconstruct the blocks adjacent to the current CTU. In some embodiments, the representative MV is derived from the MV of one or more blocks in the current CTU, and the representative MV may be a weighted average of the MVs from one or more blocks in the current CTU. In some embodiments, the representative MV is derived from the temporal MV from the co-located CTU or the reference picture CTU, and the representative MV may be a weighted average of the temporal MV from the co-located CTU or the reference picture CTU. The representative MV is derived from the MV inherited from the neighboring position of the current CTU. The video decoder may use the motion vector predictor (MVP) of the block in the current CTU as the representative MV of the CTU.
[0107] The video decoder receives (at block 1130) data to be decoded into a plurality of blocks of a current CTU. The video decoder reconstructs (at block 1140) the plurality of blocks of the CTU by selecting one or more reference pictures from the RPL using the assigned indexes to generate an inter-frame prediction of the plurality of blocks of the current CTU. The decoder may then provide the reconstructed current block for display as part of a reconstructed current picture.
[0108] VI. Example Electronic System
[0109] Many of the above features and applications are implemented as software processes, which are specified as a set of instructions recorded on a computer-readable storage medium (also referred to as a computer-readable medium). When these instructions are executed by one or more computing or processing units (e.g., one or more processors, processor cores, or other processing units), they cause the processing units to perform the actions indicated in the instructions. Examples of computer-readable media include, but are not limited to, compact disc read-only memory (CD-ROM), flash drives, random access memory (RAM) chips, hard drives, erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), etc. Computer-readable media do not include carrier waves and electronic signals transmitted by wireless or wired connections.
[0110] In this specification, the term "software" is intended to include firmware residing in read-only memory or application programs stored in magnetic memory, which can be read into memory for processing by a processor. In addition, in some embodiments, multiple software inventions can be implemented as sub-parts of a larger program while retaining different software inventions. In some embodiments, multiple software inventions can also be implemented as separate programs. Finally, any combination of separate programs that jointly implement the software inventions described herein are within the scope of this disclosure. In some embodiments, the software program, when installed to run on one or more electronic systems, defines one or more specific machine implementations that process and execute the operations of the software program.
[0111] Fig.12 An electronic system 1200 is conceptually shown for implementing some embodiments of the present disclosure. The electronic system 1200 may be a computer (e.g., a desktop computer, a personal computer, a tablet computer, etc.), a phone, a PDA, or any other type of electronic device. Such an electronic system includes various types of computer-readable media and interfaces for various other types of computer-readable media. The electronic system 1200 includes a bus 1205, a processing unit 1210, a graphics processing unit (GPU) 1215, a system memory 1220, a network 1225, a read-only memory 1230, a permanent storage device 1235, an input device 1240, and an output device 1245.
[0112] Bus 1205 collectively represents all system, peripheral, and chipset buses that communicatively couple numerous internal devices of electronic system 1200. For example, bus 1205 communicatively couples processing unit 1210 with GPU 1215, read-only memory 1230, system memory 1220, and permanent storage device 1235.
[0113] The processing unit 1210 obtains instructions to be executed and data to be processed from these various memory units in order to perform the processing of the present disclosure. In different embodiments, the processing unit can be a single processor or a multi-core processor. Some instructions are passed to and executed by the GPU 1215. The GPU 1215 can offload various calculations or supplement the image processing provided by the processing unit 1210.
[0114] Read-only-memory (ROM) 1230 stores static data and instructions used by processing unit 1210 and other modules of the electronic system. On the other hand, permanent storage device 1235 is a read-write storage device. This device is a non-volatile storage unit that stores instructions and data even when electronic system 1200 is turned off. Some embodiments of the present disclosure use a large-capacity memory device (such as a magnetic disk or optical disk and its corresponding magnetic disk drive) as permanent storage device 1235.
[0115] Other embodiments use removable storage devices (e.g., floppy disks, flash memory devices, etc., and their corresponding disk drives) as permanent storage devices. Like the permanent storage device 1235, the system memory 1220 is a read-write memory device. However, unlike the permanent storage device 1235, the system memory 1220 is a volatile read-write memory, such as a random access memory. The system memory 1220 stores some instructions and data used by the processor at runtime. In some embodiments, the processing according to the present disclosure is stored in the system memory 1220, the permanent storage device 1235 and / or the read-only memory 1230. For example, according to some embodiments of the present disclosure, various memory units include instructions for processing multimedia clips. From these various memory units, the processing unit 1210 obtains instructions to be executed and data to be processed in order to perform the processing of some embodiments.
[0116] The bus 1205 is also connected to an input device 1240 and an output device 1245. The input device 1240 enables a user to convey information and select commands to the electronic system. The input device 1240 includes an alphanumeric keyboard and a pointing device (also referred to as a "cursor control device"), a camera (e.g., a webcam), a microphone, or a similar device for receiving voice commands, etc. The output device 1245 displays an image generated by the electronic system or outputs data. The output device 1245 includes a printer and a display device, such as a cathode ray tube (CRT) or a liquid crystal display (LCD), and a speaker or similar audio output device. Some embodiments include devices used as input and output devices, such as a touch screen.
[0117] Finally, if Fig.12 As shown, bus 1205 also couples electronic system 1200 to a network 1225 via a network adapter (not shown). In this manner, the computer may be part of a computer network, such as a local area network ("LAN"), a wide area network ("WAN"), or an intranet, or a network of multiple networks, such as the Internet. Any or all components of electronic system 1200 may be used in conjunction with the present disclosure.
[0118] Some embodiments include electronic components, such as microprocessors, storage devices, and memory, which store computer program instructions in machine-readable or computer-readable media (or otherwise referred to as computer-readable storage media, machine-readable media, or machine-readable storage media). Some examples of such computer-readable media include RAM, ROM, read-only compact discs (CD-ROM), recordable compact discs (CD-R), rewritable compact discs (CD-RW), read-only digital versatile discs (e.g., DVD-ROM, dual-layer DVD-ROM), various recordable / rewritable DVDs (e.g., DVD-RAM, DVD-RW, DVD+RW, etc.), flash memory (e.g., SD card, mini SD card, micro SD card, etc.), magnetic and / or solid-state hard drives, read-only and recordable A computer program or computer code may be a computer program that is executable by at least one processing unit and includes a set of instructions for performing various operations. Examples of computer programs or computer codes include machine code such as produced by a compiler, and files including high-level code that is executed by a computer, an electronic component, or a microprocessor using an interpreter.
[0119] Although the above discussion mainly involves microprocessors or multi-core processors executing software, many of the above features and applications are performed by one or more integrated circuits, such as application specific integrated circuits (ASICs) or field programmable gate arrays (FPGAs). In some embodiments, such integrated circuits execute instructions stored on the circuits themselves. In addition, some embodiments execute software stored in programmable logic devices (PLDs), ROM, or RAM devices.
[0120] As used in this specification and any claims of this application, the terms "computer," "server," "processor," and "memory" refer to electronic or other technical devices. These terms do not include people or groups of people. For the purposes of this specification, the terms display or display refer to displaying on an electronic device. As used in this specification and any claims of this application, the terms "computer-readable medium," "computer-readable medium," and "machine-readable medium" are entirely limited to tangible physical objects that store information in a computer-readable form. These terms do not include any wireless signals, wired download signals, and any other transient signals.
[0121] Although the present disclosure has been described with reference to many specific details, those skilled in the art will recognize that the present disclosure may be implemented in other specific forms without departing from the spirit of the present disclosure. Figure 8 and Fig.11 ) conceptually illustrates the processes. The specific operations of these processes may not be performed in the exact order shown and described. The specific operations may not be performed in a continuous series of operations, and different specific operations may be performed in different embodiments. In addition, the process may be implemented using several sub-processes or as part of a larger macro process. Therefore, it will be understood by those skilled in the art that the present disclosure is not limited by the foregoing illustrative details, but is defined by the appended claims.
[0122] Additional Notes
[0123] The subject matter described herein sometimes represents different components, which are contained in or connected to other different components. It is understood that the described structure is only an example, and in fact, it can be implemented by many other structures to achieve the same function. Conceptually, the arrangement of any components that achieve the same function is actually "associated" to achieve the desired function. Therefore, regardless of the structure or intermediate components, any two components combined to achieve a specific function are considered to be "interrelated" to achieve the desired function. Similarly, any two associated components are considered to be "operably connected" or "operably coupled" to achieve a specific function. Any two components that can be associated with each other are also considered to be "operably coupled" to achieve a specific function. Any two components that can be associated with each other are also considered to be "operably coupled" to achieve a specific function. Specific examples of operable connections include, but are not limited to, physically pairable and / or physically interacting components, and / or wirelessly interactive and / or wirelessly interactive components, and / or logically interactive and / or logically interactive components.
[0124] Furthermore, with respect to the use of substantially any plural and / or singular terms, those skilled in the art can translate from the plural to the singular and / or from the singular to the plural as appropriate to the context and / or application. For sake of clarity, the present invention expressly sets forth various singular / plural arrangements.
[0125] In addition, it will be understood by those skilled in the art that, in general, the terms used in the present invention, especially in the claims, and the subject matter of the claims, are generally used as "open" terms, for example, "including" should be interpreted as "including but not limited to", "having" should be interpreted as "at least having", "including" should be interpreted as "including but not limited to", etc. It will be further understood by those skilled in the art that if a specific number of claim contents are intended to be introduced, it will be clearly indicated in the claim, and will not be displayed in the absence of such contents. For example, to aid understanding, the following claims may contain the phrases "at least one" and "one or more" to introduce the contents of the claims. However, the use of these phrases should not be understood to imply the use of the indefinite article "a" or "an" to introduce the claim contents and restrict any specific patent scope. Even when the same claim includes the introductory phrases "one or more" or "at least one", the indefinite article, such as "a" or "an", should be interpreted to mean at least one or more, and the same is true for the use of the explicit description used to introduce the claim. In addition, even if the introductory content explicitly refers to a specific number, a person of ordinary skill in the art will recognize that such content should be interpreted as indicating the number of references, for example, "two references" without other modifications means at least two references, or two or more references. In addition, when a statement similar to "at least one of A, B, and C" is used, it is usually stated so that a person of ordinary skill in the art can understand the statement, for example, "a system includes at least one of A, B, and C" will include but is not limited to a system with A alone, a system with B alone, a system with C alone, a system with A and B, a system with A and C, a system with B and C, and / or a system with A, B, and C, etc. A person of ordinary skill in the art will further understand that any separated words and / or phrases represented by two or more alternative terms, whether in the specification, the claims, or the drawings, should be understood to include the possibility of one of these terms, one of them, or both of these terms. For example, "A or B" should be understood as the possibility of "A", or "B", or "A and B".
[0126] As can be seen from the foregoing, various embodiments have been described for illustrative purposes, and various modifications may be made without departing from the scope and spirit of the invention. Therefore, the various embodiments disclosed herein are not intended to be limiting, and the true scope and application are indicated by the claims.
Claims
1. A video encoding and decoding method, comprising: receiving a reference picture list of a current codec tree unit of a current picture, the reference picture list identifying a plurality of reference pictures; Assigning a plurality of indexes to the plurality of reference pictures in the reference picture list of the current codec tree unit; receiving data to be encoded or decoded into a plurality of blocks of the current codec tree unit; as well as The plurality of blocks of the current codec tree unit are encoded or decoded by using the allocated plurality of indexes to select one or more reference pictures from the reference picture list to generate a plurality of inter-frame predictions.
2. The video encoding and decoding method according to claim 1, characterized in that: Based on explicit signaling, the plurality of indices are assigned to the plurality of reference pictures in the reference picture list.
3. The video encoding and decoding method according to claim 1, characterized in that: The method further comprises: deriving a representative motion vector of the current codec tree unit; and A plurality of costs for the plurality of reference pictures is calculated, wherein the cost for each reference picture is calculated based on (i) a plurality of neighboring samples of the current codec tree unit and (ii) a plurality of reference samples in the reference picture identified by a representative motion vector, wherein the plurality of indexes are assigned to the plurality of reference pictures in the reference picture list based on the calculated plurality of costs.
4. The video encoding and decoding method according to claim 3, characterized in that: The representative motion vector is derived from a plurality of motion vectors used to reconstruct one or more blocks adjacent to the current codec tree unit.
5. The video encoding and decoding method according to claim 4, characterized in that: The representative motion vector is a weighted average of the plurality of motion vectors used to reconstruct the plurality of blocks adjacent to the current codec tree unit.
6. The video encoding and decoding method according to claim 3, characterized in that: The representative motion vector is derived from a plurality of motion vectors of one or more blocks in the current codec tree unit.
7. The video encoding and decoding method according to claim 6, characterized in that: The representative motion vector is a weighted average of the plurality of motion vectors of the one or more blocks in the current codec tree unit.
8. The video encoding and decoding method according to claim 3, characterized in that: The representative motion vector is derived from a plurality of temporal motion vectors from a co-located codec tree unit or a reference picture codec tree unit.
9. The video encoding and decoding method according to claim 8, characterized in that: The representative motion vector is a weighted average of the plurality of temporal motion vectors from the co-located codec tree unit or the reference picture codec tree unit.
10. The video encoding and decoding method according to claim 3, characterized in that: The representative motion vector is derived from a plurality of motion vectors inherited from a plurality of neighboring positions of the current codec tree unit.
11. The video encoding and decoding method according to claim 3, characterized in that: The motion vector predictor of the block in the current codec tree unit is used as the representative motion vector of the codec tree unit.
12. The video encoding and decoding method according to claim 3, characterized in that: The plurality of neighboring samples of the current codec tree unit are located in a plurality of codec tree units adjacent to the current codec tree unit.
13. The video encoding and decoding method according to claim 1, wherein: Indexes are assigned to the plurality of reference pictures in the reference picture list according to a history-based table, which records the distribution of a plurality of reference picture selections when encoding or decoding each codec tree unit of the current picture.
14. An electronic device comprising: The video codec circuit is configured to perform a number of operations including: receiving a reference picture list of a current codec tree unit of a current picture, the reference picture list identifying a plurality of reference pictures; Assigning a plurality of indexes to the plurality of reference pictures in the reference picture list of the current codec tree unit; receiving data to be encoded or decoded into a plurality of blocks of the current codec tree unit; and The plurality of blocks of the current codec tree unit are encoded or decoded by using the allocated plurality of indexes to select one or more reference pictures from the reference picture list to generate a plurality of inter-frame predictions.
15. A video decoding method, comprising: receiving a reference picture list of a current codec tree unit of a current picture, the reference picture list identifying a plurality of reference pictures; Assigning a plurality of indexes to the plurality of reference pictures in the reference picture list of the current codec tree unit; receiving data to be decoded into a plurality of blocks of the current codec tree unit; as well as The plurality of blocks of the current codec tree unit are reconstructed by using the allocated plurality of indexes to select one or more reference pictures from the reference picture list to generate a plurality of inter-frame predictions.