Improvements to advanced temporal motion vector prediction
By using the motion vector that uses and reference pictures in the video coding, the storage needs of the reference picture sports information in existing technologies are solved, and more efficient video codes and decoding processes are achieved.
Patent Information
- Application Number
- CN202411606292.3
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Filing Date
- 2018-03-19
- Publication Date
- 2025-01-24
AI Technical Summary
Existing video encoding techniques rely on storing large amounts of reference image motion information in advanced time motion vector prediction (ATMVP), resulting in increased power consumption and memory size.
By using the motion vector that uses and set and set up reference pictures in the current encoding picture, the storage of the sports vector information of each reference picture is avoided. The processor determines the initial motion vector between the associated block and the current block in the picture, and the second exporting motion vector is exported to obtain the predicted block based on this.
Reduce the dependence on the reference buffer, reduce power consumption and storage demand, while improving the efficiency and compression performance of video codes.
Smart Images

Figure CN119364014A_ABST
Abstract
Description
[0001] This application is a divisional application of the Chinese invention patent application "Improvements to Advanced Temporal Motion Vector Prediction" with an application date of March 19, 2018 and application number 201880091395.7. Technical Field
[0002] The present disclosure relates to devices, systems, and methods for video encoding. Background Art
[0003] Digital video capabilities may be incorporated into a wide range of devices, including digital televisions, digital direct broadcast systems, wireless broadcast systems, personal digital assistants (PDAs), portable or desktop computers, tablet computers, electronic book readers, digital cameras, digital recording devices, digital media players, video game devices, video game consoles, cellular or satellite wireless telephones, so-called "smart phones", video teleconferencing devices, video streaming devices, and the like. Digital video devices implement video compression techniques, such as those described in the standards defined by MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264 / MPEG-4 Part 10, Advanced Video Coding (AVC), ITU-T H.265, High Efficiency Video Coding (HEVC) standards, and extensions of these standards. By implementing such video compression techniques, video devices may more efficiently transmit, receive, encode, decode, and / or store digital video information.
[0004] Video compression techniques perform spatial (intra-picture) prediction and / or temporal (inter-picture) prediction to reduce or remove redundancy inherent in video sequences. For block-based video coding, a video slice (i.e., a video frame or a portion of a video frame) can be partitioned into video blocks, which may also be referred to as tree blocks, coding units (CUs), and / or coding nodes. Video blocks in slices of inter-frame coding (I) of a picture are encoded using spatial prediction relative to reference samples in neighboring blocks in the same picture. Video blocks in slices of inter-frame coding (P or B) of a picture may use spatial prediction relative to reference samples in neighboring blocks in the same picture, or temporal prediction relative to reference samples in other reference pictures. Spatial or temporal prediction produces a prediction block for the block to be encoded (i.e., the current block). The residual data represents the pixel difference between the original block to be encoded and the predicted block. Inter-frame coded blocks are encoded according to motion vectors pointing to blocks of reference samples forming the predicted block and residual data indicating the difference between the coded block and the predicted block. Intra-frame coded blocks are encoded according to the inter-frame coding mode and the residual data. For further compression, the residual data may be transformed from the pixel domain to a transform domain, resulting in residual transform coefficients, which may then be quantized. Summary of the invention
[0005] Generally, this disclosure describes techniques related to improvements to advanced motion vector prediction. The techniques of this disclosure may be applied to future video coding standards.
[0006] In one example, the technology is directed to a device for decoding a current block of video data in a current coded picture. The device may include a memory configured to store video data. The device may also include a processor configured to determine which picture is a collocated picture, and based on using a previously decoded block in the current coded picture, determine the position of an associated block of video data in a collocated picture corresponding to the current block of video data in the current coded picture to find an initial motion vector between the associated block in the collocated picture and the current block in the current coded picture, wherein the associated block of video data includes at least one first derived motion vector. The processor may be configured to: when the initial mv points to the collocated picture, determine at least one second derived motion vector associated with the current block in the current coded picture based on at least one first derived motion vector associated with the associated block in the collocated picture. In addition, the processor may be configured to: determine motion information of the current block of video data in the current coded picture based on at least one second derived motion vector, obtain a prediction block using the determined motion information, and generate a reconstructed block based on a combination of the prediction block and the residual block.
[0007] In another example, the technology is directed to a method for decoding a current block of video data in a current coded picture. The method may include determining which picture is a collocated picture, and determining the position of an associated block of video data in a collocated picture corresponding to the current block of video data in the current coded picture based on using a previously decoded block in the current coded picture to find an initial motion vector between the associated block in the collocated picture and the current block in the current coded picture, wherein the associated block of video data includes at least one first derived motion vector. The method may include: when the initial mv points to the collocated picture, determining at least one second derived motion vector associated with the current block in the current coded picture based on at least one first derived motion vector associated with the associated block in the collocated picture. The method may also include: determining motion information of the current block of video data in the current coded picture based on at least one second derived motion vector, obtaining a prediction block using the determined motion information; and generating a reconstructed block based on a combination of the prediction block and the residual block.
[0008] The details of one or more aspects of the present disclosure are set forth in the following drawings and description. Other features, objects, and advantages of the techniques described in this disclosure will be apparent from the description, drawings, and claims. BRIEF DESCRIPTION OF THE DRAWINGS
[0009] 1 is a block diagram illustrating an example video encoding and decoding system that may utilize one or more techniques described in this disclosure.
[0010] 2A-2B are conceptual diagrams of exemplary List 0 and List 1, respectively.
[0011] FIG. 2C shows the first step of spatial neighboring MV candidates for merge mode.
[0012] 3A-3C show the flow chart in the current JEM reference software.
[0013] 4A-4B illustrate the proposed improvement to the current JEM's ATMVP.
[0014] 5A-5D are conceptual diagrams illustrating different examples for describing relative positions of a collocated reference picture, a reference picture, and a current coded picture.
[0015] FIG. 6 is a flow chart describing one or more techniques in this disclosure.
[0016] 7 is a block diagram illustrating an example video encoder that may implement one or more techniques described in this disclosure.
[0017] 8 is a block diagram illustrating an example video decoder that may implement one or more techniques described in this disclosure. DETAILED DESCRIPTION
[0018] Motion compensation across multiple frames or pictures of a video is often used in video coding. A motion vector and a reference index associated with a previous frame or picture may be encoded. A motion vector predictor (MVP) and a motion vector difference (MVD) may be used to derive the motion vector.
[0019] The MVP can be selected from two candidates derived from the spatial and / or temporal neighborhood of the current block being encoded and / or decoded. The ATMVP mode is an algorithm for selecting the MVP. In the existing ATMVP mode, motion vectors and reference indices (i.e., motion information) can be derived by selecting different candidates without encoding the motion vector difference. The merge mode is a process of deriving a representation of a motion vector candidate and predicting the encoding of a motion vector. Since the picture is two-dimensional, the use of motion vectors between pictures is also two-dimensional. Therefore, the motion vector has a horizontal component and a vertical component.
[0020] In existing systems, using the advanced temporal motion vector prediction (ATMVP) algorithm, inter-frame prediction (interprediction) can use previously reconstructed pictures as reference pictures for motion compensation. Motion information from co-located blocks or regions in the reference picture is stored and then made available for inter-frame prediction (interprediction). In some examples, the information of the temporal motion vector in the reference picture is reduced to 16×16 blocks to limit the storage in the reference buffer (e.g., see the decoded picture buffer "DPB" 1216 in Figure 7 and the decoded picture buffer "DPB" 1312 in Figure 8). However, the motion information of each reference picture is stored in the reference buffer, which increases power consumption and memory size.
[0021] As described in the present disclosure, a video coder (ie, a video encoder or a video decoder) may implement improvements to the ATMVP algorithm through an alternative solution that does not require storing information of temporal motion vectors from a reference buffer as previously done.
[0022] According to the technology described herein, a device for decoding a current block of video data in a current coded picture is proposed, which may include a memory configured to store video data. The device may also include a processor configured to determine which picture is a collocated picture. For example, a collocated picture having a representation signaled by the HEVC standard may be received. A collocated picture may be determined using a reference index. For example, as done in the ITU-T H.264 standard, a reference index = 0 may be used as a default. In the present disclosure, the reference index associated with the collocated picture is not necessarily zero, but may also be a non-zero value. In addition, the processor may also be configured to determine the position of an associated block of video data in a collocated picture corresponding to the current block of video data in the current coded picture based on the use of a previously decoded block in the current coded picture, to find an initial motion vector between the associated block in the collocated picture and the current block in the current coded picture, wherein the associated block of the video data includes at least one first derived motion vector (e.g., see the motion vector in the collocated picture in FIG. 5D). Therefore, the position of the associated block in the collocated picture is determined.
[0023] In the present disclosure, a collocated picture including at least one first derived motion vector based on a currently encoded picture includes an initial motion vector pointing to the collocated picture, so that the collocated picture can be used as a reference picture without relying on a reference picture that includes motion information in the current technology. The collocated picture can be referred to as a "collocated reference picture."
[0024] Furthermore, the processor may be configured to determine at least one second derived motion vector associated with a current block in a current coded picture based on at least a first derived motion vector associated with an associated block in a collocated picture. The at least one second derived motion vector may be used to determine motion information of a current block of video data in the current coded picture. The at least one second derived motion vector may help determine a prediction block. In addition to the residual block, a prediction block may be used to reconstruct the current block.
[0025] In this way, instead of storing each motion vector information of each reference picture (as in the current technology before this proposal), the complete process for deriving the motion vector is performed by using one or more motion vectors from the current coded picture, and at least one second motion vector can be derived using at least one first derived motion vector of the collocated reference picture. Therefore, the video encoder and the video decoder can process video data more efficiently, and the video encoder and / or the video decoder can provide a more efficient compression and decompression means, which can consume less power and can provide faster encoding results to a device that displays the decoded video data.
[0026] FIG. 1 is a block diagram illustrating an example video encoding and decoding system 10 that can utilize the techniques of the present disclosure. As shown in FIG. 1 , the system 10 includes a source device 12 that provides encoded video data to be decoded later by a destination device 14. Specifically, the source device 12 provides video data to the destination device 14 via a computer-readable medium 16. The source device 12 and the destination device 14 may include any of a variety of devices, including a desktop computer, a notebook (i.e., portable) computer, a tablet computer, a set-top box, a telephone handset such as a so-called "smart" phone, a tablet computer, a television, a camera, a display device, a digital media player, a video game console, a video streaming device, etc. In some cases, the source device 12 and the destination device 14 may be equipped for wireless communication. Therefore, the source device 12 and the destination device 14 may be wireless communication devices. The source device 12 is an example video encoding device (i.e., a device for encoding video data). The destination device 14 is an example video decoding device (i.e., a device for decoding video data).
[0027] In the example of FIG. 1 , source device 12 includes a video source 18, a storage medium 19 configured to store video data, a video encoder 20, and an output interface 22. Destination device 14 includes an input interface 26, a storage medium 28 configured to store encoded video data, a video decoder 30, and a display device 32. In other examples, source device 12 and destination device 14 include other components or arrangements. For example, source device 12 may receive video data from an external video source such as an external camera. Likewise, destination device 14 may interface with an external display device rather than including an integrated display device.
[0028] The system 10 shown in FIG. 1 is merely an example. The techniques for processing video data may be performed by any digital video encoding and / or decoding device. Although the techniques of the present disclosure are typically performed by a video encoding device, the techniques may also be performed by a video encoder / decoder, commonly referred to as a "codec (CODEC)". The source device 12 and the destination device 14 are merely examples of such encoding devices, wherein the source device 12 generates encoded video data for transmission to the destination device 14. In some examples, the source device 12 and the destination device 14 may operate in a substantially symmetrical manner, such that each of the source device 12 and the destination device 14 includes a video encoding and decoding component. Thus, the system 10 may support one-way or two-way video transmission between the source device 12 and the destination device 14, for example, for video streaming, video playback, video broadcasting, or video telephony.
[0029] The video source 18 of source device 12 may include a video capture device, such as a video camera, a video archive containing previously captured video, and / or a video feed interface for receiving video data from a video content provider. As another option, video source 18 may generate computer graphics-based data as source video, or generate a combination of real-time video, archived video, and computer-generated video. Source device 12 may be included as one or more data storage media (e.g., storage medium 19) configured to store video data. The technology described in this disclosure may generally be applicable to video encoding, and may be applied to wireless and / or wired applications. In each case, captured, pre-captured, or computer-generated video may be encoded by video encoder 20. Output interface 22 may output encoded video information to computer-readable medium 16.
[0030] Output interface 22 may include various types of components or devices. For example, output interface 22 may include a wireless transmitter, a modem, a wired networking component (e.g., an Ethernet card), or another physical component. In an example where output interface 22 includes a wireless receiver, output interface 22 may be configured to receive data modulated according to a cellular communication standard such as 4G, 4G-LTE, Advanced LTE, 5G, etc., such as a bit stream. In some examples where output interface 22 includes a wireless receiver, output interface 22 may be configured to receive data modulated according to other wireless standards such as IEEE 802.11 specifications, IEEE 802.15 specifications (e.g., Zigbee™), Bluetooth™ standards, etc., such as a bit stream. In some examples, the circuit of output interface 22 may be part of a system on chip (SoC). SoC may also include other components such as a general-purpose microprocessor, a graphics processing unit, and the like.
[0031] The destination device 14 may receive the encoded video data to be decoded via the computer-readable medium 16. The computer-readable medium 16 may include any type of medium or device capable of moving the encoded video data from the source device 12 to the destination device 14. In some examples, the computer-readable medium 16 includes a communication medium to enable the source device 12 to send the encoded video data directly to the destination device 14 in real time. The encoded video data may be modulated according to a communication standard such as a wireless communication protocol and sent to the destination device 14. The communication medium may include any wireless or wired communication medium, such as a radio frequency (RF) spectrum or one or more physical transmission lines. The communication medium may form part of a packet-based network such as a local area network, a wide area network, or a global network such as the Internet. The communication medium may include a router, a switch, a base station, or any other equipment that may be used to facilitate communication from the source device 12 to the destination device 14. The destination device 14 may include one or more data storage media configured to store the encoded video data and the decoded video data.
[0032] In some examples, the encoded data can be output from the output interface 22 to a storage device. Similarly, the encoded data can be accessed from the storage device through the input interface. The storage device may include any of a variety of distributed or locally accessed data storage media, such as a hard drive, a Blu-ray disc, a DVD, a CD-ROM, a flash memory, a volatile or non-volatile memory, or any other suitable digital storage medium for storing encoded video data. In another example, the storage device may correspond to a file server or another intermediate storage device that can store the encoded video generated by the source device 12. The destination device 14 can access the stored video data from the storage device via streaming or downloading. The file server can be any type of server capable of storing encoded video data and sending the encoded video data to the destination device 14. Example file servers include web servers (e.g., for websites), FTP servers, network attached storage (NAS) devices, or local disk drives. The destination device 14 can access the encoded video data through any standard data connection including an Internet connection. This can include a wireless channel (e.g., a Wi-Fi connection), a wired connection (e.g., a DSL, a cable modem, etc.) suitable for accessing the encoded video data stored on the file server, or a combination of both. The transmission of the encoded video data from the storage device may be a streaming transmission, a download transmission, or a combination thereof.
[0033] These techniques may be applied to video encoding to support any of a variety of multimedia applications, such as over-the-air television broadcasting, cable television transmission, cable transmission, satellite television transmission, Internet streaming video transmission such as Dynamic Adaptive Streaming over HTTP (DASH), digital video encoded onto a data storage medium, decoding of digital video stored on a data storage medium, or other applications or combinations of the foregoing examples. In some examples, system 10 may be configured to support one-way or two-way video transmission to support applications such as video streaming, video playback, video broadcasting, and / or video telephony.
[0034] Computer-readable medium 16 may include transient media, such as wireless broadcast or wired network transmission, or storage media (that is, non-transient storage media), such as hard disks, flash drives, optical disks, digital video disks, Blu-ray disks, or other computer-readable media. In some examples, a network server (not shown) may receive encoded video data from source device 12 and provide the encoded video data to destination device 14, for example, via network transmission. Similarly, a computing device of a media production facility such as a disk stamping facility may receive encoded video data from source device 12 and produce a disk containing the encoded video data. Therefore, in various examples, computer-readable medium 16 may be understood to include one or more computer-readable media in various forms.
[0035] The input interface 26 of the destination device 14 receives information from the computer-readable medium 16. The information of the computer-readable medium 16 may include syntax information defined by the video encoder 20 of the video encoder 20, which is also used by the video decoder 30, and the syntax information includes syntax elements that describe the characteristics and / or processing of blocks and other coding units such as groups of pictures (GOPs). The input interface 26 may include various types of components or devices. For example, the input interface 26 may include a wireless receiver, a modem, a wired networking component (e.g., an Ethernet card), or another physical component. In examples where the input interface 26 includes a wireless receiver, the input interface 26 may be configured to receive data modulated according to a cellular communication standard such as 4G, 4G-LTE, Advanced LTE, 5G, etc., such as a bitstream. In some examples where the input interface 26 includes a wireless receiver, the input interface 26 may be configured to receive data modulated according to other wireless standards such as IEEE 802.11 specifications, IEEE 802.15 specifications (e.g., Zigbee™), Bluetooth™ standards, etc., such as a bitstream. In some examples, the circuitry of input interface 26 may be integrated into the circuitry of video decoder 30 and / or other components of destination device 14. For example, video decoder 30 and input interface 26 may be part of a SoC. The SoC may also include other components, such as a general-purpose microprocessor, a graphics processing unit, and the like.
[0036] Storage medium 28 may be configured to store encoded video data, such as the encoded video data (e.g., a bitstream) received by input interface 26. Display device 32 displays the decoded video data to a user, and may include any of a variety of display devices, such as a cathode ray tube (CRT), a liquid crystal display (LCD), a plasma display, an organic light emitting diode (OLED) display, or other types of display devices.
[0037] Each of the video encoder 20 and the video decoder 30 may be implemented as any of a variety of suitable encoder circuits, such as one or more microprocessors, digital signal processors (DSPs), application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), discrete logic, software, hardware, firmware, or any combination thereof. When these techniques are partially implemented in software, the device may store instructions for the software in a suitable, non-transitory computer-readable medium and use one or more processors to execute the instructions in hardware to perform the techniques of the present disclosure. Each of the video encoder 20 and the video decoder 30 may be included in one or more encoders or decoders, any of which may be integrated as part of a combined encoder / decoder (CODEC) in a corresponding device.
[0038] In 2016, MPEG and ITU-T VCEG established the Joint Exploration Video Team (JVET) to explore new coding tools for the next generation of video coding standards. The reference software is called JEM (Joint Exploration Model).
[0039] In current proposals for JEM, JEM and other video coding specifications, video data includes a series of pictures. For example, in the series of pictures there may be a collocated picture, one or more reference pictures, and a currently coded picture. Pictures may also be referred to as "frames". A picture may include one or more sample arrays. Each corresponding sample array of a picture may include a sample array for a corresponding color component. In JEM, a picture may include three sample arrays, denoted as S L , S Cb and S Cr . S L is a two-dimensional array (i.e., block) of luma samples. Cb is a two-dimensional array of Cb chrominance samples. Cr is a two-dimensional array of Cr chrominance samples. In other cases, the picture may be monochrome and may only include an array of luma samples.
[0040] As part of encoding video data, video encoder 20 may encode a picture of the video data. In other words, video encoder 20 may generate an encoded representation of a picture of the video data. The encoded representation of a picture may be referred to herein as a "coded picture" or "encoded picture."
[0041] To generate an encoded representation of a picture, video encoder 20 may encode blocks of the picture. Video encoder 20 may include the encoded representation of the video blocks in a bitstream. For example, to generate an encoded representation of a picture, video encoder 20 may partition each sample array of the picture into coding tree blocks (CTBs) and encode the CTBs. A CTB may be an N×N block of samples in a sample array of the picture.
[0042] The video encoder 20 generates a predictive block (e.g., a luma, Cb, and Cr predictive block) for a prediction block (e.g., a luma, Cb, and Cr prediction block) of a current block being encoded. The video encoder 20 may generate a predictive block using intra prediction or inter prediction. If the video encoder 20 generates a predictive block using intra prediction, the video encoder 20 may generate a predictive block based on a decoded sample of a picture including the current block being encoded. In previous standards and JEM, the predictive block of the current block is encoded based on a decoded sample of a reference picture (i.e., a picture different from the current picture). However, in a current proposal for JEM to improve an advanced temporal motion vector prediction algorithm in JEM, if the video encoder 20 generates a predictive block of a current block being encoded of a current picture using inter prediction, the video encoder 20 may generate a predictive block of the current block being encoded based on a decoded sample of a collocated reference picture (i.e., a picture different from the current picture, and not necessarily a reference picture). It should be noted that the collocated reference picture may be one of the reference pictures. In some embodiments, the collocated reference picture may have a reference index of 0 in list 0 or list 1 (described further below).
[0043] In some examples, video encoder 20 skips application of a transform to a transform block. In such examples, video encoder 20 may process residual sample values in the same manner as transform coefficients. Thus, in examples where video encoder 20 skips application of a transform, the following discussion of transform coefficients and coefficient blocks may apply to transform blocks of residual samples.
[0044] After generating the coefficient block, the video encoder 20 may quantize the coefficient block. Quantization generally refers to the process of quantizing the transform coefficients to possibly reduce the amount of data used to represent the transform coefficients, thereby providing further compression. In some examples, the video encoder 20 skips quantization. After the video encoder 20 quantizes the coefficient block, the video encoder 20 may generate syntax elements indicating the quantized transform coefficients. The video encoder 20 may entropy encode one or more of the syntax elements indicating the quantized transform coefficients. For example, the video encoder 20 may perform context adaptive binary arithmetic coding (CABAC) on the syntax elements indicating the quantized transform coefficients. Thus, a coded block (e.g., a current block being encoded) may include entropy encoded syntax elements indicating the quantized transform coefficients.
[0045] Video encoder 20 may output a bitstream including encoded video data. In other words, video encoder 20 may output a bitstream including an encoded representation of the video data. For example, the bitstream may include a sequence of bits forming a representation of an encoded picture of the video data and associated data. In some examples, the representation of the encoded picture may include an encoded representation of a block.
[0046] In JEM and in the current proposal to JEM, for each block, a set of motion information is available. The set of motion information may include motion information for a forward prediction direction and a backward prediction direction. Here, the forward prediction direction and the backward prediction direction are two prediction directions of the bidirectional prediction mode, and the terms "forward" and "backward" do not necessarily have a geometric meaning, but rather, they correspond to the reference picture list 0 (RefPicList0) and the reference picture list 1 (RefPicList1) of the current picture. When one reference picture list is available for a picture or a slice, RefPicList0 is available, and the motion information of each block of the slice is forward.
[0047] For each prediction direction, the motion information may include a reference index and a motion vector. As noted previously, a prediction block may be determined based on at least one second derived motion vector associated with a current block in a current coded picture, based on at least one first derived motion vector associated with an associated block in a collocated picture. A prediction block may be associated with a forward prediction direction or a backward prediction direction.
[0048] The reference index is used to identify a reference picture in the current reference picture list (RefPicList0 or RefPicList1). In the prior art, motion information can be derived from the use of a reference picture associated with a reference index. In an improvement to ATMVP, due to the increase in buffer memory (e.g., DPB 1216 in FIG. 7 and DPB 1312 in FIG. 8), it is desirable to derive motion information without using a reference picture for the first derived motion vector. This is possible because the collocated reference picture can be one of the reference pictures. Therefore, it is not necessary to store motion information for all reference pictures.
[0049] Picture Order Count (POC) is widely used in video coding standards to identify the display order of pictures. Although there are cases where two pictures within a coded video sequence may have the same POC value, it does not usually happen within a coded video sequence. When multiple coded video sequences are present in the bitstream, pictures with the same POC value can be closer to each other in decoding order. The POC value of a picture is often used for reference picture list construction. In the current proposal for JEM, the derivation of reference pictures can be set up as in HEVC and motion vector scaling.
[0050] In the current proposal for JEM, and in JEM, there are multiple inter prediction modes. Inter prediction includes merge / skip mode, FRUC mode, affine mode, and AMVP mode. In AMVP or merge mode, a motion vector (MV) candidate list is maintained for multiple motion vector predictors.
[0051] Generate (one or more) motion vectors and reference index in merge mode by selecting a candidate from the MV candidate list. The MV candidate list can contain up to 7 candidates for merge mode and only two candidates for AMVP mode. The merge candidate can contain a set of motion information, such as motion vectors corresponding to both the reference picture lists (list 0 and list 1) and the reference index. If the merge candidate is identified by the merge index, the reference picture is used for prediction of the current block, and the associated motion vector is determined.
[0052] More specifically, in merge mode, the video encoder 20 and the video decoder 30 generate a matching merge motion vector (MV) candidate list for the current block. The merge MV candidate list of the current block may include one or more merge candidates, which may also be referred to as motion vector predictors (MVPs). In the current proposal for JEM, and in JEM, the merge MV candidate list contains up to 7 merge candidates. Each corresponding merge candidate in the merge MV candidate list specifies one or more motion vectors and one or more reference indexes. For example, the merge candidate may specify a list 0 motion vector and / or a list 1 motion vector, and may specify a list 0 reference index and / or a list 1 reference index. The list 0 motion vector is a motion vector in list 0 indicating a position in a reference picture. The list 1 motion vector is a motion vector in list 1 indicating a position in a reference picture. The video encoder 20 may signal a merge index indicating the position of the selected merge candidate of the current block in the merge MV candidate list. The video decoder 30 may use the merge index to identify the selected merge candidate.
[0053] In the current proposal for JEM, the fixed order may be replaced with candidates in a merge list, i.e., list 0 or list 1 (further explained below with reference to spatial candidates) to find motion information for the current block. In one embodiment, the video decoder 30 may then use the (first derived) motion vectors from the collocated reference picture to derive second derived motion vectors using the reference index of the selected merge candidate as the motion vector (i.e., these may be second derived motion vectors).
[0054] The illustrations in Figures 2A and 2B show conceptual diagrams of exemplary List 0 and List 1, respectively. Exemplary List 0 in Figure 2A shows four pictures {P4, P3, P2, and P1} with reference labels 202A, 204A, 206A, and 208A, respectively. Similarly, exemplary List 1 in Figure 2B shows four pictures {P4, P3, P2, and P1} with reference labels 202A, 204A, 206A, and 208A, respectively.
[0055] In JEM, in the first step of the merge mode, up to four spatial MV candidates can be derived in the numbered order shown in FIG. 2A , and the fixed order is as follows: left (0), top (1), top right (2), and bottom left (3).
[0056] The current block (CB) in picture 1 208A includes surrounding spatial neighbors {NB1, NB2, NB3, NB4, and NB5}. For example, NB1, NB2, NB3, and NB4 may be in a fixed order: left (0), top (1), top right (2), and bottom left (3). For example, spatial neighbor NB4 may be a motion vector predictor (MVP) candidate because the surrounding spatial neighbors have already been decoded and their motion information (if any) is already available. The already encoded or decoded block (denoted as AB) may also have its own predicted motion vector (as indicated by the dashed arrow).
[0057] Figure 2C shows the first step of spatial neighboring MV candidates for merge mode. Subsequent steps may check ATMVP candidates, check STMVP candidates. If the number of candidates is less than 6, the next step may check the upper left (4). Then a check of temporal candidates may be performed. To get a temporal candidate, first check the lower right position, if it is not available, a center block check may be performed. If the merge candidate list size is less than 7, additional candidates may be added until the list size equals 7.
[0058] In the present disclosure, motion information of a previously encoded block may be used to generate an initial motion vector. The previously encoded block may be a neighboring block of the current block being encoded or decoded. The motion information may include a reference index, a motion vector, and an inter-frame direction.
[0059] The initial motion vector may be used to point back to a corresponding block in a collocated reference picture that has already been encoded or decoded.
[0060] According to the techniques described herein, video encoder 20 may utilize motion information using previously encoded blocks to generate initial motion vectors [e.g., see the flowcharts in FIGS. 4A-4B ], which may be used to point to corresponding blocks in collocated reference pictures to encode video data. The corresponding blocks in the collocated reference pictures may include a first set of derived motion vectors, which may be used to find a second set of derived motion vectors.
[0061] For example, the video encoder 20 may determine a coding block in a previously encoded picture for a current block in a current picture of the video data. The coding block may cover a co-located block in a previously encoded picture and a position within a previously encoded picture. However, the previously encoded picture is not necessarily a reference block. The co-located block may have the same shape as the current block, and the position of the co-located block within the previously encoded picture may be the same as the position of the current block within the current picture. Based on one or more motion vectors of the coding block, the video encoder 20 may determine one or more motion vectors of the current block. Based on one or more motion vectors of the current block, the video encoder 20 may use motion information of the previously encoded block to generate an initial motion vector, which may be used to point to a corresponding block in a collocated reference picture. The video encoder 20 may then use the predictive block and the current block to generate residual data.
[0062] Similarly, the video decoder 30 can use the motion information of the encoded adjacent blocks to generate an initial motion vector, which can be used to point to the corresponding block in the collocated reference picture. For example, the video decoder 30 can determine the coded block in the previously encoded picture for the current block in the current picture of the video data. The coded block can cover the co-located blocks in the previously encoded picture and the position within the previously encoded picture. The co-located blocks can have the same shape as the current block, and the position of the co-located blocks in the previously encoded picture can be the same as the position of the current block in the current picture. Based on one or more motion vectors of the coded block, the video decoder 30 can determine one or more motion vectors of the current block.
[0063] Based on one or more motion vectors for the current block, video decoder 30 may use motion information of previously encoded blocks to generate an initial motion vector that may be used to point to a corresponding block in a collocated reference picture. Video decoder 30 may then reconstruct the current block using the residual data and the predictive block.
[0064] A merge candidate corresponds to the entire set of motion information, while an AMVP candidate contains only one motion vector for a specific prediction direction.Candidates for both merge mode and AMVP mode can be similarly derived from the same spatial and temporal neighboring blocks.
[0065] In a video encoder (coder) (i.e., a video encoder (encoder) or a video decoder (decoder)), a motion vector may be scaled. When a motion vector is scaled, the value of the motion vector may be proportional to the distance of the picture at the presentation time. The motion vector associates two pictures, a collocated reference picture and a picture containing the motion vector. In the present disclosure, the motion vector is an initial motion vector, and the collocated reference picture includes a first derived motion vector (at least one first derived motion vector), and the picture containing the motion vector is a current coded picture. When the initial motion vector is used to predict another motion vector, i.e., a first derived motion vector in a collocated reference picture, the distance between the containing picture and the reference picture is calculated based on the picture order count (POC) value of the collocated reference picture and the containing picture (i.e., the current coded picture).
[0066] For a motion vector to be predicted, its associated containing picture and collocated reference picture may be different. Therefore, a new distance is calculated (based on POC). The initial motion vector is scaled based on these two POC distances. For spatial neighboring candidates, the containing pictures of the two motion vectors are the same, but the collocated reference pictures are different. In the proposal to JEM and in JEM, motion vector scaling applies to both TMVP and AMVP for both spatial neighboring candidates and temporal neighboring candidates.
[0067] In the existing JEM, advanced temporal motion vector prediction (ATMVP), the motion information (including motion vectors and reference frames) in ATMVP comes only from the reference picture. In order to obtain the ATMVP of the current block, the first step is to determine where the temporal motion vector will be obtained (from the DPB buffer 1216 in Figure 7 or the DPB 1312 in Figure 8). ATMVP can look for the first available motion vector in five neighboring blocks in a fixed order: {left, top, top right, bottom left, and top left}. The definition of the five neighboring blocks is the same as the spatial merge candidate of the current block. In order to avoid the repeated scanning process of the previously encoded neighboring blocks, it is expected to find the motion vector of the first merge candidate in the already derived merge candidate list to determine where to obtain the temporal motion vector. The current block can be divided into square N×N sub-blocks (for example, N is set to 4). Then, the motion vectors of the sub-blocks can be recursively derived in a raster scan order. As an example, the flowchart in the current JEM reference software is shown in Figures 3A-3C.
[0068] Note that in step 1 of FIG. 3A , in step 1, only the start motion vector is obtained from the reference picture. In step 2 of FIG. 3B , only the initial motion vector is obtained from the reference picture. These limitations generate the aforementioned problem that in the ATMVP algorithm, the information of the motion vector is obtained from the reference picture stored in the reference buffer (e.g., the DPB buffer 1216 in FIG. 7 or the DPB 1312 in FIG. 8 ). The motion vector information stored for each reference in the reference buffer increases the power consumption and the size of the memory.
[0069] Figures 4A, 4B and the flowchart of Figure 6 show the proposed improvement to the ATMVP of the current JEM and future standards. The proposed improvement is that the initial motion vector can point to the collocated picture instead of the reference picture to determine the motion vector.
[0070] It is contemplated that the motion vector (MV) of the current block in the current picture may be derived only from the motion vectors associated with the corresponding block in the collocated reference picture and the current coded picture (i.e., the first set of motion vectors). Therefore, the motion vector of the current block in the current picture that may be derived may be considered as the second set of derived motion vectors. This overcomes the reliance on deriving motion vectors only on reference pictures, which would increase the reference buffer as previously described.
[0071] In one example, the encoder or decoder may be in ATMVP mode, and only the MVs of the current coded picture and the collocated picture may be used to derive motion vectors in ATMVP mode. Within ATMVP mode, there may be a merge mode, where only the MVs of the current coded picture and the collocated picture may be used to derive motion vectors in merge mode. Although motion information was previously used by finding motion vectors of neighboring blocks of the current block within a reference picture, it is expected that finding collocated reference pictures improves memory efficiency.
[0072] In one example as shown in example A of FIG. 4A , there is a decision check 406A where a set of pictures (e.g., P4, P3, P2 in FIG. 2A and / or FIG. 2B ) may have at least one previously coded block. A current picture (e.g., P1 in FIG. 2A and / or FIG. 2B ) may have a current block (CB-P1) to be coded, with spatial candidates of neighboring blocks {NB1-NB5} that were also previously coded. That is, the decision check to find the initial motion vector is based on a check of whether the motion vector of the previously decoded block is in the current coded picture.
[0073] The motion vectors of previously encoded blocks (including neighboring blocks) in the current picture can be used to find the corresponding block associated with the current block. The motion vectors of previously encoded blocks (including neighboring blocks) in the current picture can be checked in a fixed order to find the initial motion vector pointing to the collocated reference picture. For example, the fixed order can be to check neighboring blocks {NB1-NB5}.
[0074] If the corresponding block is encoded with inter-frame prediction, that is, encoded temporally between the current picture (P1) and the previous picture (e.g., P2-P4), and a match is found, one of the previous pictures is a collocated picture, and Example A: 406A decision check (yes) is stopped. Therefore, one of the neighboring blocks around the current block in the current picture has a motion vector pointing to the corresponding block and can be represented as the initial motion vector 410.
[0075] In example A 406A, it is desirable to prioritize the search for the initial motion vector by first checking the available motion vectors of neighboring blocks of the current block in the reference picture. If there is a match, the reference picture is also a collocated reference picture, and improved steps 1 and 2 lead to improved step 3. Thus, the decision check to find the initial motion vector is based on a fixed order, where the fixed order is to check previously decoded blocks before checking the current block of the current picture of the video data. Alternatively, the decision check may not be the highest priority to find the initial motion vector pointing to the collocated reference picture.
[0076] In Figure 4B, an improved step 3 is shown. For each N×N block (for example, N=4) in the current block, the initial motion vector can point to a collocated picture (see Figure 5D), and the motion vector from the corresponding block pointed to by the current block in the collocated picture can be derived. For each direction, the motion vector in the collocated picture can be scaled to reference ID=0. If the reference position used by the current block is different from the reference used by the block from which the MV is derived, scaling is used. In this way, the decision check for finding the initial motion vector is based on a scaling operation on the motion vector of the MV of the previously decoded block. In addition, the decision check for finding the initial motion vector includes scaling of other motion vectors of neighboring blocks that are not the current block in the current coded picture, and checking whether the scaled other motion vectors point to the collocated reference picture.
[0077] In one example, we force the ATMVP mode to use a reference with ID equal to 0, so we have to scale the MV to the reference with ID 0. In one embodiment, the search for the initial motion vector in example A 406A can be implemented as the highest priority, i.e., performed before the other examples BE (406B-406E). Therefore, the decision check is implemented as the highest priority to find the initial motion vector pointing to the collocated reference picture.
[0078] In another example, example B 406b, if there is no match (NO) in the previous check (eg, 406a), then the collocated reference picture is not a reference picture, and the collocated reference picture may be at a different position in time relative to the current picture and the reference picture.
[0079] Three different examples are shown in the conceptual diagrams of Figures 5A-5C. In the examples of Figures 5A-5C, if no initial motion vector is found, resulting in a match between the current block 512 of the current picture 510 and the associated block in the different picture associated with the current block 512, the motion vector (e.g., 528) of the neighborhood spatial candidate of the reference picture 518 can be scaled to the collocated reference picture 526. In one embodiment, in the case where the motion vector 528 can be scaled to the collocated reference picture 526, the illustration in example 406B can be implemented as the second highest priority, i.e., performed before other examples 406C-406E.
[0080] The distance between the current picture and the collocated reference picture is calculated based on the picture order count (POC) values of the current picture and the collocated reference picture. The scaled motion vector can be based on a linear operation, for example, based on division, multiplication, subtraction and / or addition. The scaled motion vector can be referred to as an interpolated motion vector. In some cases, the scaled motion vector can also be referred to as an extrapolated motion vector. Thus, the scaling operation can include interpolating or extrapolating the motion vector of a previously decoded block in the current coded picture.
[0081] For example, in FIG. 5A , a motion vector (e.g., a neighboring motion vector (MV) 544) of a current block 512 in a current picture 510 may be scaled to a collocated reference picture 526. Scaling may be referred to as interpolation, and the resulting scaled vector may be referred to as an interpolated motion vector 536, which is based on POC values of the collocated reference picture 526 and the reference picture 518. The interpolated motion vector 536 may be an initial motion vector if the position of an associated block 528 of video data in the collocated picture 526 corresponds to the current block 512 of video data in the current coded picture 510 based on using a previously decoded block (e.g., a neighboring spatial candidate) in the current coded picture 510. In FIG. 5A , the interpolated motion vector 536 represents a shorter temporal distance than the neighboring motion vector 544 because the collocated reference picture 526 is closer to the current picture 510 than the reference picture 518.
[0082] In other embodiments shown in FIGS. 5B and 5C , the collocated reference picture 526 is not located between the reference picture 518 and the current picture 510, and the motion vector (e.g., the neighboring MV 544) may be scaled to the collocated reference picture 526. Scaling may be referred to as extrapolation, and the resulting scaled vector may be referred to as an extrapolated vector (e.g., an extrapolated motion vector 537), which is based on the POC values of the collocated reference picture 526 and the reference picture 518. If the location of the associated block 528 of video data in the collocated picture 526 corresponds to the current block 512 of video data in the current coded picture 510 based on the use of previously decoded blocks (e.g., neighboring spatial candidates) in the current coded picture 510, the extrapolated motion vector 537 may be an initial motion vector. The examples shown in FIGS. 5B and 5C may be implemented with the same priority as the example in FIG. 5A , or in alternative embodiments, may be implemented with a lower priority than the example in FIG. 5A .
[0083] In FIG. 5B , extrapolated motion vector 537 represents a longer temporal distance than neighboring motion vector 544 because collocated reference picture 526 is farther from current picture 510 than reference picture 518 .
[0084] In FIG5C , the extrapolated motion vector 537 represents a temporal distance in the opposite direction of the temporal distance of the adjacent motion vector 544 to the reference picture 518. As described above, the collocated reference picture 526 does not necessarily require the reference index to be stored in the decoder picture buffer. Thus, it is more desirable to use the collocated reference picture to find the initial motion vector than to use the reference picture 528.
[0085] When the scaled motion vector (eg, interpolated motion vector 536 or extrapolated motion vector 537) points to the collocated reference picture 526, improved steps 1 and 2 lead to improved step 3. The scaled motion vector then becomes the initial motion vector (as shown in FIG5D).
[0086] In Example C: 406C, a decision check may be performed (i) to scale the motion vectors of neighboring blocks; and (ii) whether the scaled neighboring motion vectors may be checked in a fixed order (e.g., NB1-NB5) to find whether they point to collocated pictures in list {list 0 or list 1} to find the initial motion vector.
[0087] If there is a match, the scaled motion vector points to the collocated reference picture in the list, and the improved steps 1 and 2 lead to the improved step 3. The scaled motion vector then becomes the initial motion vector (as shown in FIG5D ), where the collocated picture is in the list {list 0 or list 1}.
[0088] If there is a match, the scaled motion vector points to the collocated reference picture in the list, and the improved steps 1 and 2 lead to the improved step 3. The scaled motion vector then becomes the initial motion vector (as shown in FIG5D ).
[0089] In example C 406C, if the previous decision check as described with respect to examples 406A and 406B did not result in a match between the current block in the current picture 510 and another block (e.g., in a reference picture (example 406A)) having an associated motion vector, where the associated motion vector is scaled in the collocated reference picture (example 406B), then a further decision check 406D may be performed at a lower priority than any of the previous examples. Thus, the decision check may not necessarily be the highest priority to find an initial motion vector pointing to a collocated reference picture.
[0090] In example D: Decision check 406D may (i) first scale other MVs (which are not neighboring blocks of the current block in the current picture), and (ii) check whether the scaled other MVs point to a collocated picture to find the initial MV. If one of the scaled other motion vectors points to a collocated picture, the scaled other motion vector may be the initial motion vector (as shown in FIG. 5D ).
[0091] If there is a match, the scaled other motion vector points to the collocated reference picture, and the improved steps 1 and 2 lead to the improved step 3. Then, the scaled motion vector becomes the initial motion vector (as shown in FIG. 5D). In Example E: Decision Check 406E, if the motion vectors of all neighboring blocks fail, the default motion vector (i.e., motion vector (0, 0)) can be checked to point to the collocated picture to find the initial MV. If there is a match, the default motion vector points to the collocated reference picture, and the improved steps 1 and 2 lead to the improved step 3. Then, the default motion vector becomes the initial motion vector (as shown in FIG. 5D).
[0092] In addition to the example AE applicable to the ATMVP mode, each block can be a neighboring block, but the neighboring block may not necessarily be a merge candidate, that is, the neighboring block of the current picture may not necessarily be a merge candidate. Therefore, a previously encoded block that is a neighboring block can be used to find the initial motion vector. Similarly, a previously encoded block that is a neighboring block of the current picture and is also a merge candidate can be used to find the initial motion vector.
[0093] Therefore, the initial motion vector can also be generated using the merge candidates in the merge candidate list. In one example, if more than one spatial candidate is available, the order of checking may depend on the reference picture used by the spatial candidate to generate the initial motion vector. In another example, if more than one merge candidate is available, the order of checking may depend on the order of the candidates in the merge candidate list. In yet another example, if more than one merge candidate is available, the temporal candidate in the previously decoded picture is checked before the spatial candidate in the current encoded picture. For coding efficiency, in another example, if more than one merge candidate is available, the spatial candidate in the current encoded picture is checked before the temporal candidate in the previously decoded picture.
[0094] In the above example where the initial motion vector can be generated by a function of the motion vectors of the neighboring blocks, in addition to explicitly using the motion vectors of the neighboring blocks, different variations can also be used. For example, the median of the motion vectors of the neighboring blocks can be used as the initial motion vector. In another variation, the average of the motion vectors of the neighboring blocks can be the initial motion vector.
[0095] Using the techniques in this disclosure, in merge mode, which is a mode within ATMVP mode, a motion vector can be added to a list and can be used to predict other motion vectors (e.g., an initial motion vector). If the POC of the reference used by the merge candidate is different, the motion vector can be scaled to the collocated reference picture 526.
[0096] For example, in 406AMV (similar to example 406A), the motion vector of the spatial merge candidate pointing to the collocated reference picture can be implemented as the initial motion vector with the highest priority. For convenience, "MV" is appended to the reference marks in examples 406A-406E to clearly describe the applicability of examples 406A-406E when the ATMVP mode is in merge mode.
[0097] If the initial motion vector in example 406AMV cannot be found, then (similar to example 406B) another example 406BMV may include a motion vector of a spatial merge candidate, which may be scaled (e.g., interpolated or extrapolated) to the collocated reference picture 526. The scaled motion vector (whether interpolated or extrapolated) may be implemented as the initial motion vector, and this check may have a lower priority than example 406AMV.
[0098] If the check in example 406AMV or 406BMV does not result in finding an initial vector, then in another example 406CMV (similar to example 406C), the motion vector of the spatial merge candidate can be scaled to the collocated reference picture by extrapolation and regarded as the initial motion vector, as shown in Figure 5D. Example 406CMV can be implemented as a lower priority check than any of examples 406AMV and 406BMV.
[0099] A match may not be found with various implementations in examples 406AMV, 406BMV, or 406CMV. In this case, (similar to example 406D) example 406DMV, decision check 406D may (i) first scale other MVs (which are not neighboring blocks of the current block in the current picture), and (ii) check whether the scaled other MVs point to a collocated picture to find the initial MV. If one of the scaled other motion vectors points to a collocated picture, the scaled other motion vector may be the initial motion vector (as shown in FIG. 5D). Example 406DMV may be implemented as a lower priority check than examples 406AMV, 406BMV, or 406CMV.
[0100] A match may not be found with various implementations in examples 406AMV, 406BMV, 406CMV, or 406DMV. In this case, (similar to example 406E) example 406EMV, decision check 406E if the motion vectors of all neighboring blocks fail, then a default motion vector (i.e., motion vector (0, 0)) may be checked to point to a collocated picture to find an initial MV.
[0101] If there is a match, the default motion vector points to the collocated reference picture, and the improved steps 1 and 2 lead to improved step 3. The default motion vector then becomes the initial motion vector (as shown in FIG5D ). Thus, the decision check to find the initial motion vector may include using the default motion vector to point to the collocated reference picture.
[0102] It should be noted that there are variations of examples 406AMV, 406BMV, 406CMV, 406DMV, and 406EMV. In one variation, if more than one merge candidate is available, the order of checking may depend on the order of the candidates in the merge candidate list. In another variation, if more than one merge candidate is available, the order of checking may depend on the type of candidate. The temporal candidate may be checked first, and then the spatial candidate may be checked; or, alternatively, the spatial candidate may be checked first, and then the temporal candidate may be checked. In another variation, the median of the MV of the merge candidate may be used as the initial motion vector, that is, the initial motion vector may be the average of the motion vectors of at least two previously encoded blocks. Typically, the initial motion vector may be based on a comparison of at least two motion vectors. In another variation, the initial motion vector may be the median of the motion vectors of at least three previously encoded blocks. In another variation, the average of the MV of the merge candidate may be used as the initial MV. In some previous examples or variations, if the POC of the reference used by the merge candidate is different, the MV may be scaled to the collocated reference picture.
[0103] As shown in FIG. 5D , the initial motion vector may point to the position of a block (or sub-block) in the collocated reference picture 526. Motion vectors 606A-606D in the collocated reference picture 526 may be derived for sub-blocks associated with the position of the current block in the current picture 526. Although four motion vectors 606A-606D are shown, and these four motion vectors 606A-606D are first derived motion vectors, there may be only one first derived motion vector 606X, where X=A, B, C, or D. In this way, the associated block in the collocated reference picture 526 includes a sub-block having a first derived motion vector. The initial motion vector may be determined based on a decision check. In some embodiments, the initial motion vector may be determined by examples 406A, 406B, 406C, 406D, or 406E. In alternative embodiments, the initial motion vector may be determined by examples 406AMV, 406BMV, 406CMV, 406DMV, or 406EMV.
[0104] The first derived motion vector may be scaled or used. For example, one or more of the first derived motion vectors 606A-606D may point to another block in another picture. The other block may include another motion vector (ie, a second derived motion vector). The temporal distance between the collocated reference picture and the other picture may not be adjacent to each other. The distance between the collocated reference picture and the other picture may be calculated based on the picture order count (POC) values of the collocated reference picture and the other picture. In this way, the first derived motion vector may be scaled. In the case where the collocated reference picture and the other picture are adjacent to each other, the first derived motion vector may be used (eg, copied or referenced) to generate the second derived motion vector. In the case where at least one first derived motion vector (606A, 606B, 606C, or 606D) is scaled, the scaled first derived motion vector may be applied to the current block of the current picture to generate at least one second derived motion vector in the other picture. The other picture may be a current coded picture. Moreover, at least one second derived motion vector (not drawn) may point to another picture (eg, may be a current coded picture) based on an inter-frame direction. The inter direction may include a motion vector from a block to another block in list 0 or list 1 (as discussed above). Thus, at least one second derived motion vector may point to another block in list 0 or list 1, and within list 0 or list 1, the current coded picture may be included in one of the two lists. The other block may be the current block in the current coded picture.
[0105] In addition, the collocated reference picture may be a reference picture having a reference index, and the reference index may have multiple values, such as 0, 1, 2, 3, etc. For convenience, the reference index may be a default value of 0. It should be noted that at least one first derived motion vector of an associated block in a collocated reference picture may be scaled according to a POC of a current block in a current picture relative to the collocated reference picture.
[0106] The collocated reference picture 526 may be the same as defined in HEVC, or a different picture may be signaled from the encoder to the decoder at the sequence level, picture level, slice level, or block level. For example, the collocated reference picture may be signaled in a sequence parameter set (SPS), a picture parameter set (PPS), a slice header (SH), a coding tree unit (CTU), or a coding unit (CU).
[0107] 6 is a flow chart illustrating example operation of video decoder 30 of FIGS. 1 and 8 in performing various aspects of the techniques described in this disclosure. As shown in the example of FIG. 6 , video decoder 30 may be configured to decode video data according to the techniques of this disclosure.
[0108] The video decoder 30 may be configured to include a memory for storing video data (e.g., DPB1316 in FIG. 8 ) and a processor configured to determine which picture is the collocated picture 250. In addition, the processor may be configured to determine the position of an associated block of video data in a collocated picture corresponding to the current block of video data in the current coded picture based on using a previously decoded block in the current coded picture to find an initial motion vector between the associated block in the collocated picture and the current block in the current coded picture, wherein the associated block of video data includes at least one first derived motion vector 252. The processor may also be configured to determine the initial motion vector based on a decision check 254. The processor may also be configured to determine at least one second derived motion vector associated with the current block in the current coded picture based on at least a first derived motion vector associated with the associated block in the collocated picture. The processor may also be configured to determine motion information of the current block of video data in the current coded picture 256, and use the determined motion information to obtain a prediction block, and then generate a reconstructed block based on a combination of the prediction block and the residual block 258.
[0109] FIG7 is a block diagram illustrating an example video encoder 20 that may implement the techniques of the present disclosure. FIG8 is provided for purposes of explanation and should not be considered limiting of the techniques broadly illustrated and described in the present disclosure. The techniques of the present disclosure may be applicable to a variety of encoding standards or methods.
[0110] 7 , the video encoder 20 includes a prediction processing unit 1200, a video data memory 1201, a residual generation unit 1202, a transform processing unit 1204, a quantization unit 1206, an inverse quantization unit 1208, an inverse transform processing unit 1210, a reconstruction unit 1212, a filter unit 1214, a decoded picture buffer 1216, and an entropy encoding unit 1218. The prediction processing unit 1200 includes an inter-prediction processing unit 1220.
[0111] The video data memory 1201 may be configured to store video data to be encoded by the components of the video encoder 20. The video data stored in the video data memory 1201 may be obtained, for example, from the video source 18. The decoded picture buffer 1216 may be a reference picture memory that stores reference video data for use by the video encoder 20, for example, when encoding video data in an intra-frame or inter-frame coding mode. The video data memory 1201 and the decoded picture buffer 1216 may be formed by any of a variety of storage devices, such as a dynamic random access memory (DRAM), including synchronous DRAM (SDRAM), magnetoresistive RAM (MRAM), resistive RAM (RRAM), or other types of storage devices. The video data memory 1201 and the decoded picture buffer 1216 may be provided by the same storage device or a separate storage device. In various examples, the video data memory 1201 may be on a chip with other components of the video encoder 20, or off a chip relative to those components. The video data memory 1201 may be the same as or part of the storage medium 19 of FIG. 1.
[0112] The inter-prediction processing unit 1220 may generate predictive data for the current block. As part of generating the predictive data for the current block, the inter-prediction processing unit 1220 may perform inter-prediction on the current block. As described above, the predictive data for the current block may include a predictive block for the current block and motion information for the current block. The inter-prediction processing unit 1220 may apply a technique for using the motion information of an encoded neighboring block to generate an initial motion vector, which may be used to point to a corresponding block in a collocated reference picture, as described elsewhere in this disclosure.
[0113] The residual generation unit 1202 may generate a residual block for the current block such that each sample in the residual block has a value equal to a difference between a sample in the coding block of the current block and a corresponding sample in the corresponding selected predictive block of the current block.
[0114] The transform processing unit 1204 may divide the residual block of the current block into a transform block of the current block. The quantization unit 1206 may quantize the transform coefficients in the coefficient block.
[0115] Inverse quantization unit 1208 and inverse transform processing unit 1210 may apply inverse quantization and inverse transform, respectively, to the coefficient block to reconstruct a residual block from the coefficient block. Reconstruction unit 1212 may add the reconstructed residual block to corresponding samples from one or more predictive blocks generated by prediction processing unit 1200 to produce a reconstructed transform block associated with the current block. By reconstructing the transform block of each current block in this manner, video encoder 20 may reconstruct the coding block of the current block.
[0116] The filter unit 1214 may perform one or more deblocking operations to reduce block artifacts in the coded block associated with the current block. After the filter unit 1214 performs one or more decoding operations on the reconstructed coded block, the decoded picture buffer 1216 may store the reconstructed coded block. Using the techniques described in the present disclosure, the inter-prediction processing unit 1220 may use a collocated reference picture containing the reconstructed coded block to perform inter-prediction on the current block of other pictures, rather than using a reference picture containing the reconstructed coded block to perform inter-prediction on the current block of other pictures. This allows for a memory efficient system because the DPB 1216 does not have to store each reference index for each coded block.
[0117] The entropy coding unit 1218 may receive data from other functional components of the video encoder 20, for example, the entropy coding unit 1218 may receive coefficient blocks from the quantization unit 1206, and may receive syntax elements from the prediction processing unit 1200. The entropy coding unit 1218 may perform one or more entropy coding operations on the data to generate entropy coded data. For example, the entropy coding unit 1218 may perform a CABAC operation, a context-adaptive variable length coding (CAVLC) operation, a variable to variable (V2V) length coding operation, a syntax-based context-adaptive binary arithmetic coding (SBAC) operation, a probability interval partitioning entropy (PIPE) coding operation, an exponential Golomb coding operation, or another type of entropy coding operation on the data. The video encoder 20 may output a bitstream including the entropy coded data generated by the entropy coding unit 1218. For example, the bitstream may include data representing the values of the transform coefficients of the current block.
[0118] Various components of the video encoder 20 can run the techniques described herein and utilize the motion information of the encoded neighboring blocks to generate an initial motion vector, which can be used to point to a corresponding block in a collocated reference picture to encode the video data. The video encoder 20 can then use the predictive block and the current block to generate residual data.
[0119] FIG8 is a block diagram illustrating an example video decoder 30 configured to implement the techniques of the present disclosure. FIG8 is provided for purposes of explanation and is not limited to the techniques extensively illustrated and described in the present disclosure. For purposes of explanation, the present disclosure describes the video decoder 30 in the context of JEM encoding and in the context of proposals for improving JEM encoding. However, the techniques of the present disclosure may be applicable to other encoding standards or methods.
[0120] 8, the video decoder 30 includes an entropy decoding unit 1300, a video data memory 1301, a prediction processing unit 1302, an inverse quantization unit 1304, an inverse transform processing unit 1306, a reconstruction unit 1308, a filter unit 1310, and a decoded picture buffer 1312. The prediction processing unit 1302 includes a motion compensation unit 1314 and an intra-prediction processing unit 1316. In other examples, the video decoder 30 may include more, fewer, or different functional components.
[0121] If the current block is encoded using inter-frame prediction, the motion compensation unit 1314 may determine motion information of the current block. The motion compensation unit 1314 may determine one or more previously decoded blocks in the current picture based on the motion information of the current block to find an initial motion vector between an associated block in a collocated reference picture and the current block in the current encoded picture (i.e., when a decoding device decodes a picture with reference to a decoding process), wherein the associated block of video data includes at least one derived motion vector.
[0122] The motion compensation unit 1314 can apply a technique for generating an initial motion vector using motion information of an encoded neighboring block, and determine at least one second derived motion vector associated with a current block in a currently encoded picture based on at least a first derived motion vector associated with an associated block in a collocated reference picture.
[0123] Moreover, the motion compensation unit 1314 can determine the motion information of the current block of video data in the current encoded picture based on at least one second derived motion vector, and use the determined motion information to obtain a prediction block (or a color predictive block, i.e., a luminance block, CB block, and Cr block).
[0124] The reconstruction unit 1308 may use the transform block (e.g., luminance transform block, Cb transform block, and Cr transform block) of the current block and the predictive block (e.g., luminance block, Cb block, and Cr block) of the current block, and generate a difference (e.g., a residual block) to reconstruct the coding block (e.g., luminance coding block, Cb coding block, and Cr coding block) of the current block. The filter unit 1310 may perform a deblocking operation to reduce block artifacts associated with the coding block of the current block. The video decoder 30 may store the coding block of the current block in a decoded picture buffer 1312.
[0125] In merge mode, video decoder 30 may use one or more motion vectors of previously encoded spatial neighbors of the current block into a unified merge candidate list for the current block. In this way, when using motion information of the encoded neighboring blocks to generate an initial motion vector that can be used to point to a corresponding block in a collocated reference picture of the current block, video decoder 30 may use the motion information of the encoded neighboring blocks to generate an initial motion vector that can be used to point to a corresponding block in a collocated reference picture to generate a predictive block for the current block based on the first motion vector in the unified merge candidate list for the current block.
[0126] It should be noted that the technology in the present disclosure can also be applied to a device including a component for decoding a current block of video data in a current coded picture, the device including a component for determining which picture is a collocated picture, and a component for the following operations: based on using a previously decoded block in the current coded picture, determine the position of an associated block of video data in a collocated picture corresponding to the current block of video data in the current coded picture to find an initial motion vector between the associated block in the collocated picture and the current block in the current coded picture, wherein the associated block of video data includes at least one first derived motion vector, when the initial MV points to the collocated picture, determine at least one second derived motion vector associated with the current block in the current coded picture based on at least the first derived motion vector associated with the associated block in the collocated picture. The device may also include a component for determining motion information of the current block of video data in the current coded picture based on the at least one second derived motion vector, a component for obtaining a prediction block using the determined motion information, and a component for generating a reconstructed block based on a combination of the prediction block and the residual block.
[0127] The techniques described in this disclosure may be used with other video encoding processes, including other standard or proprietary video encoding processes currently being developed or yet to be developed.
[0128] A video encoder described in the present disclosure may refer to a video encoder or a video decoder. Similarly, a video encoding unit may refer to a video encoder or a video decoder. Likewise, video coding may refer to video encoding or video decoding, if applicable. In the present disclosure, the phrase "based on" may mean based only on, at least partially on, or based in some way. The present disclosure may use the term "video unit" or "video block" or "block" to refer to one or more sample blocks and syntax structures for encoding samples in one or more sample blocks.
[0129] It should be appreciated that, according to examples, certain actions or events of any of the techniques described herein may be performed in a different order, may be added, combined, or omitted entirely (e.g., not all described actions or events are necessary for the practice of the techniques). Moreover, in some examples, actions or events may be performed concurrently, such as through multithreading, interrupt handling, or multiple processors, rather than sequentially.
[0130] In one or more examples, the functions described may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored or sent on a computer-readable medium as one or more instructions or codes and executed by a hardware-based processing unit. Computer-readable media may include computer-readable storage media, which corresponds to any tangible media, such as data storage media, or communication media including, for example, any medium that facilitates the transfer of a computer program from one place to another according to a communication protocol. In this manner, computer-readable media may generally correspond to (1) a non-transitory tangible computer-readable storage medium, or (2) a communication medium such as a signal or carrier wave. Data storage media may be any available media that can be accessed by one or more computers or one or more processors to retrieve instructions, codes, and / or data structures for implementing the techniques described in the present disclosure. A computer program product may include a computer-readable medium.
[0131] As an example and not limitation, such computer-readable storage media may include RAM, ROM, EEPROM, CD-ROM or other optical disk storage, disk storage or other magnetic storage devices, flash memory or any other medium that can be used to store the desired program code in the form of instructions or data structures and that can be accessed by a computer. In addition, any connection is appropriately referred to as a computer-readable medium. For example, if instructions are sent from a website, server or other remote source using a coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL) or wireless technologies such as infrared, radio and microwaves, the definition of the medium includes coaxial cable, fiber optic cable, twisted pair, DSL or wireless technologies such as infrared, radio and microwaves. However, it should be understood that computer-readable storage media and data storage media do not include connections, carriers, signals or other transient media, but are directed to non-transient tangible storage media. The disks and optical disks used herein include compact disks (CDs), laser optical disks, optical disks, digital versatile disks (DVDs), floppy disks and blue-ray disks, wherein disks generally reproduce data magnetically, while optical disks reproduce data optically using lasers. Combinations of the above items should also be included within the scope of computer-readable media.
[0132] Instructions may be executed by one or more processors, such as one or more digital signal processors (DSPs), general purpose microprocessors, application specific integrated circuits (ASICs), field programmable logic arrays (FPGAs), or other equivalent integrated or discrete logic circuits. Therefore, the term "processor" as used herein may refer to any of the foregoing structures or any other structure suitable for implementing the techniques described herein. In addition, in some aspects, the functionality described herein may be provided within dedicated hardware and / or software modules configured for encoding and decoding, or may be incorporated in a combined codec. Furthermore, the technology may be fully implemented in one or more circuits or logic elements.
[0133] The techniques of the present disclosure may be implemented in a variety of devices or apparatuses, including wireless handheld devices, integrated circuits (ICs), or collections of ICs (e.g., chip sets). Various components, modules, or units are described in the present disclosure to emphasize functional aspects of devices configured to perform the disclosed techniques, but do not necessarily need to be implemented by different hardware units. Instead, as described above, the various units may be combined in a codec hardware unit, or provided by a collection of interoperable hardware units including one or more processors as described above in combination with appropriate software and / or firmware.
[0134] Various examples of the disclosure have been described. Any combination of the described systems, operations, or functions is contemplated. These and other examples are within the scope of the following claims.
Claims
1. An apparatus for decoding a current block of video data in a current coded picture, the apparatus comprising: a memory configured to store video data; as well as A processor configured to: determining (250) which picture of a plurality of previously decoded pictures is a collocated picture; performing a decision check to determine whether the collocated picture is the same as a reference picture of one or more previously decoded spatially neighboring blocks of the current block; determining an initial motion vector between an associated block of video data in a collocated reference picture and the current block in the current picture based on determining that the collocated picture is the same as a reference picture of a spatially neighboring block of the current block, wherein the associated block of video data includes a plurality of first derived motion vectors, each first derived motion vector being included in a respective one of a plurality of sub-blocks of the associated block; determining (254) a plurality of second derived motion vectors associated with the current block in the current coded picture based on the plurality of first derived motion vectors included in the associated block in the collocated picture, wherein each of the plurality of first derived motion vectors points to a corresponding block in a corresponding another picture, wherein each of the plurality of second derived motion vectors is determined by scaling a corresponding first derived motion vector applied to the current block in the current picture; determining (256) motion information for the current block of video data in the current coded picture based on the plurality of second derived motion vectors; Using the determined motion information at (258) to obtain a prediction block; and A reconstructed block is generated (260) based on the combination of the prediction block and the residual block.
2. The device according to claim 1, wherein: The collocated picture is a collocated reference picture, and the collocated reference picture is a reference picture with a reference index, wherein the reference index is preferably 0.
3. The device as claimed in claim 4, wherein: The collocated reference picture is signaled in a sequence parameter set, a picture parameter set, a slice header, a coding tree unit, or a coding unit.
4. The device of claim 1, wherein: The initial motion vector is determined based on a decision check among a plurality of merge candidates of the current block in a merge candidate list, and wherein a checking order of the decision check depends on an order of the candidates in the merge candidate list.
5. The apparatus of claim 4, wherein the merge candidate list comprises temporal candidates in previously decoded pictures and spatial candidates in the current picture, and wherein the temporal candidates in the previously decoded pictures are checked before the spatial candidates in the current encoded picture.
6. The apparatus of claim 4, wherein the merge candidate list comprises temporal candidates in a previously decoded picture and spatial candidates in the current picture, and wherein the spatial candidates in the current encoded picture are checked before the temporal candidates in the previously decoded picture.
7. The device of claim 1, wherein: The initial motion vector is determined based on a decision check, wherein the decision check for finding the initial motion vector is based on a fixed order, wherein the fixed order is to check previously decoded blocks before the current block of the current picture of the video data.
8. The device of claim 1, wherein: The initial motion vector is determined based on a decision check, wherein the decision check for finding the initial motion vector is based on a scaling operation on a motion vector of a previously decoded block, wherein the scaling operation includes an interpolation or an extrapolation of the motion vector of the previously decoded block in the current encoded image.
9. The apparatus of claim 1 , wherein the initial motion vector is determined based on a decision check, wherein the decision check for finding the initial motion vector comprises scaling other motion vectors of neighboring blocks that are not the current block in the current coded picture, and checking whether the scaled other motion vectors point to a collocated reference picture.
10. The device of claim 1, wherein: The initial motion vector is determined based on a decision check, and the decision check for finding the initial motion vector includes using a default motion vector to point to the collocated reference picture.
11. The device of claim 1, wherein: The initial motion vector is an average value of motion vectors of at least two previously encoded blocks, or a median value of motion vectors of at least three previously encoded blocks, or is based on a comparison of at least two motion vectors.
12. Apparatus as claimed in any preceding claim, wherein: The apparatus is configured to decode video data without storing motion information of a reference picture unless the reference picture is a collocated picture.
13. A method for decoding a current block of video data in a current coded picture, comprising: determining (250) which picture of a plurality of previously decoded pictures is a collocated picture; performing a decision check to determine whether the collocated picture is the same as a reference picture of one or more previously decoded spatially neighboring blocks of the current block; determining an initial motion vector between an associated block of video data in a collocated reference picture and the current block in the current picture based on determining that the collocated picture is the same as the reference picture of a spatially neighboring block of the current block, wherein the associated block of video data comprises a plurality of first derived motion vectors; determining (254) a plurality of second derived motion vectors associated with the current block in the current coded picture based on the plurality of first derived motion vectors included in the associated block in the collocated picture, wherein each of the plurality of first derived motion vectors points to a corresponding block in a corresponding another picture, wherein each of the plurality of second derived motion vectors is determined by scaling a corresponding first derived motion vector to point from the current picture to a block of the another picture, the first derived motion vector pointing to a block of the another picture, the first derived motion vector being applied to the current block in the current picture; determining (256) motion information for the current block of video data in the current coded picture based on the plurality of second derived motion vectors; Using the determined motion information at (258) to obtain a prediction block; and A reconstructed block is generated (260) based on the combination of the prediction block and the residual block.
14. The method of claim 13, comprising decoding video data without storing motion information for a reference picture unless the reference picture is a collocated picture.
15. A computer-readable storage medium storing instructions, which, when executed by one or more processors, cause the one or more processors to perform the method of claim 13 or claim 14.