Method, apparatus and storage medium for video decoding
Patent Information
- Application Number
- CN202280021655.X
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2022-11-08
- Filing Date
- 2022-11-10
- Publication Date
- 2026-10-09
- Estimated Expiration
- 2042-11-10
Smart Images

Figure CN117397240B_ABST
Abstract
Description
[0001] Cross-reference to related applications
[0002] This application claims priority to U.S. Provisional Patent Application No. 63 / 328,062, filed April 6, 2022, with the U.S. Patent and Trademark Office, and U.S. Patent Application No. 17 / 983,089, filed November 8, 2022, the entire contents of which are incorporated herein by reference. Technical Field
[0003] This disclosure relates to advanced image and video coding and decoding techniques, and more specifically, to systems and methods for explicit signaling of scaling factors for joint coding of motion vector differences. Background Technology
[0004] Streaming audiovisual content is becoming increasingly popular. Significant bandwidth is required to facilitate the increase in both the quantity and quality of this streaming content. Therefore, efficient encoding and decoding schemes are needed to stream content while maintaining high quality using less bandwidth. For example, H.265 / HEVC (High Efficiency Video Coding), VP9, and AOMedia Video 1 (AV1, the Open Media Consortium's first-generation video coding standard) are some encoding and decoding schemes developed for this purpose.
[0005] The ITU-T (International Telegraph Union-Telecommunication Standardization Sector)'s VCEG (Video Coding Experts Group) (Q6 / 16) and ISO (International Organization for Standardization) / IEC (International Electrotechnical Commission)'s MPEG (Moving Picture Experts Group) (JTC 1 / SC 29 / WG 11, i.e., Working Group 11 of Subcommittee 29 of Joint Technical Committee 1) released the H.265 / HEVC standard in 2013 (Revision 1), 2014 (Revision 2), 2015 (Revision 3), and 2016 (Revision 4), respectively.
[0006] AOMedia Video 1 (AV1) is an open video coding format designed for video transmission over the Internet. AV1 was developed by the Alliance for Open Media (AOMedia) as a successor to VP9. This alliance, founded in 2015, includes semiconductor companies, video-on-demand providers, video content producers, software development companies, and web browser vendors. Many components of the AV1 project draw upon previous research work from alliance members. Individual contributors began experimenting with the technology platform several years ago: Xiph / Mozilla's Daala released code in 2010, Google's experimental VP9 evolution project VP10 was announced on September 12, 2014, and Cisco's Thor released it on August 11, 2015. Building upon the VP9 codebase, AV1 incorporates other technologies, some of which were developed using these experimental formats. The first version 0.1.0 of the AV1 reference codec was released on April 7, 2016. The consortium announced the release of the AV1 stream specification, along with software-based reference encoders and decoders, on March 28, 2018. Verification version 1.0.0 of the specification was released on June 25, 2018. Verification version 1.0.0 with errata table 1 was released on January 8, 2019. The AV1 stream specification includes reference video codecs.
[0007] The development of next-generation video codecs is also underway. For example, AOMedia has officially launched a standard for a next-generation video codec called Versatile Video Coding (VVC). Summary of the Invention
[0008] According to one aspect of this disclosure, a method is provided, the method comprising: receiving an encoded video stream, the encoded video stream including a current frame, a first reference frame and a second reference frame associated with a current block in the current frame, a joint motion vector difference (JMVD) associated with the first reference frame and the second reference frame, and a flag indicating whether one or more scaling factors are used to derive the motion vector difference (MVD) from the JMVD; deriving a first MVD associated with the first reference frame based on applying a first scaling factor of the one or more scaling factors to the JMVD or based on a distance between the first reference frame and the current frame; deriving a second MVD associated with the second reference frame based on applying a second scaling factor of the one or more scaling factors to the JMVD or based on a distance between the second reference frame and the current frame; and decoding the current block based on the first MVD and the second MVD.
[0009] According to other aspects of this disclosure, apparatus and computer-readable media consistent with the method are also provided. Attached Figure Description
[0010] The above and other aspects, features, and advantages of some embodiments of this disclosure will become more apparent from the following description taken in conjunction with the accompanying drawings, in which:
[0011] Figure 1 This is a schematic diagram illustrating components of one or more devices according to various embodiments.
[0012] Figure 2 This is a schematic diagram illustrating a method for explicit signaling of scaling factors for joint encoding of motion vector differences according to various embodiments. Specific Implementation
[0013] VVC includes several improvements, such as the introduction of Joint Motion Vector Difference (JMVD) coding. This new inter-frame prediction coding mode (named JOINT_NEWMV) is used to indicate whether the motion vector differences (MVDs) of two reference lists are jointly written into the bitstream. If the inter-frame prediction mode is equal to the JOINT_NEWMV mode, the MVDs of reference list 0 and reference list 1 are jointly written into the bitstream, and only one MVD (named joint_mvd) is written into the bitstream and transmitted to the decoder, which derives the MVDs of reference list 0 and reference list 1 from the joint_mvd. Typically, the JOINT_NEWMV mode is written into the bitstream along with the NEAR_NEARMV, NEAR_NEWMV, NEW_NEARMV, NEW_NEWMV, and GLOBAL_GLOBALMV modes. No other context is added.
[0014] When the JOINT_NEWMV mode is written to the bitstream, and the Picture Order Count (POC) distances between the two reference frames and the current frame are different, the MVD is scaled for reference list 0 or reference list 1 based on the POC distance. For example, if the distance (td0) between reference list 0 and the current frame is equal to or greater than the distance (td1) between reference list 1 and the current frame, then joint_mvd is directly used for reference list 0, and the MVD of reference list 1 is derived from joint_mvd based on equation (1):
[0015] Derived
[0016] Otherwise, if td1 is equal to or greater than td0, then joint_mvd is used directly for reference list 1, and the MVD of reference list 0 is derived from joint_mvd based on equation (2):
[0017] Derived
[0018] When JMVD mode is selected for a block, the JMVD is written to the bitstream for two reference frames (or the JMVD is signaled for two reference frames), and the MVDs of the two reference frames are derived from the JMVD based on the distance between the reference frames and the current frame. This assumes that there is linear motion between the backward and forward reference frames relative to the current frame. However, the motion between the two reference frames may not always be linear. For example, the motion from the backward reference frame to the forward reference frame may become slower or faster.
[0019] According to one aspect of this disclosure, a method is provided, the method comprising: receiving an encoded video stream, the encoded video stream including: a current frame, a first reference frame associated with a current block in the current frame, a second reference frame, a joint motion vector difference (JMVD), and a flag for signaling one or more scaling factors; deriving a first MVD associated with the first reference frame based on one or more scaling factors or a distance between the first reference frame and the current frame; deriving a second MVD associated with the second reference frame based on one or more scaling factors or a distance between the second reference frame and the current frame; and decoding the current block based on the first MVD and the second MVD.
[0020] In some embodiments, the signaling flags include a pair of scaling factors for the first reference frame and the second reference frame.
[0021] In some embodiments, one or more scaling factors are limited to 2. n The value of , where n is an integer value.
[0022] In some embodiments, one or more scaling factors are limited to a value of m / M, where M = 2. n And m and n are integer values.
[0023] In some embodiments, one or more scaling factors are a scaling factor, and when a signaling flag indicates that the scaling factor is not equal to a first default value, the scaling factor is used to derive one of the first MVD and the second MVD, and the scaling factor used to derive the other of the first MVD and the second MVD is a second default value that is different from the first default value.
[0024] In some embodiments, the context for signaling one or more scaling factors is based on encoded information of the current block or one or more neighboring blocks of the current block.
[0025] In some embodiments, the context is based on the block size of the current block, wherein when the block size of the current block is equal to or less than a first threshold size, one or more scaling factors include a first set of scaling factors, and when the block size of the current block is greater than the first threshold size, one or more scaling factors include a second set of scaling factors.
[0026] In some embodiments, the block size corresponds to one or more of the block width, block height, number of pixels in the current block, minimum block width, minimum block height, maximum block width, and maximum block height.
[0027] In some embodiments, the context is based on whether the motion vector prediction (MVP) of the current block is symmetric.
[0028] In some embodiments, the context is based on an index of the motion vector prediction (MVP) candidates for the current block.
[0029] In some embodiments, a signaling syntax is used in the sequence header, frame header, or slice header to indicate whether signaling flags are included in the encoded bitstream.
[0030] In some embodiments, the first reference frame belongs to a list of backward reference frames and the second reference frame belongs to a list of forward reference frames, or the first reference frame belongs to a list of forward reference frames and the second reference frame belongs to a list of backward reference frames.
[0031] In some embodiments, when td1 is greater than td0, according to the derived... (Right now, To derive the first MVD and / or the second MVD; and when td0 is greater than td1, based on the derived... (Right now, The first MVD and / or the second MVD are derived using this method. Here, td0 corresponds to the distance between the first reference frame and the current frame, and td1 corresponds to the distance between the second reference frame and the current frame.
[0032] In some embodiments, when td1 is greater than td0, according to the derived... (Right now, To derive the first MVD and / or the second MVD; and when td0 is greater than td1, based on the derived... (Right now, The first MVD and / or the second MVD are derived using this method. Here, td0 corresponds to the distance between the current frame and the first reference frame, and td1 corresponds to the distance between the current frame and the second reference frame. M corresponds to 2... n , where n is an integer.
[0033] According to one aspect of this disclosure, an apparatus is provided, comprising: a memory for storing program code; and at least one processor for executing the program code and operating according to the instructions of the program code, the program code comprising: receiving code for causing at least one of the at least one processor to receive an encoded video stream, the encoded video stream comprising: a current frame, a first reference frame associated with a current block in the current frame, a second reference frame, a JMVD, and a flag for signaling one or more scaling factors; derivation code for causing at least one of the at least one processor to derive a first MVD associated with the first reference frame based on one or more scaling factors or a distance between the first reference frame and the current frame; derivation code for causing at least one of the at least one processor to derive a second MVD associated with the second reference frame based on one or more scaling factors or a distance between the second reference frame and the current frame; and decoding code for causing at least one of the at least one processor to decode the current block based on the first MVD and the second MVD.
[0034] In some embodiments, one or more scaling factors are a scaling factor, and when a signaling flag indicates that the scaling factor is not equal to a first default value, the scaling factor is used to derive one of the first MVD and the second MVD, and the scaling factor used to derive the other of the first MVD and the second MVD is a second default value that is different from the first default value.
[0035] In some embodiments, the context for signaling one or more scaling factors is based on encoded information of the current block or one or more neighboring blocks of the current block.
[0036] According to one aspect of this disclosure, a non-transitory computer-readable medium is provided storing computer-readable program code that, when executed by a processor, causes the processor to at least: receive an encoded video stream, the encoded video stream including: a current frame, a first reference frame associated with a current block in the current frame, a second reference frame, a JMVD, and flags for signaling one or more scaling factors; derive a first MVD associated with the first reference frame based on one or more scaling factors or a distance between the first reference frame and the current frame; derive a second MVD associated with the second reference frame based on one or more scaling factors or a distance between the second reference frame and the current frame; and decode the current block based on the first MVD and the second MVD.
[0037] In some embodiments, one or more scaling factors are a scaling factor, and when a signaling flag indicates that the scaling factor is not equal to a first default value, the scaling factor is used to derive one of the first MVD and the second MVD, and the scaling factor used to derive the other of the first MVD and the second MVD is a second default value that is different from the first default value.
[0038] In some embodiments, the context for signaling one or more scaling factors is based on encoded information of the current block or one or more neighboring blocks of the current block.
[0039] The following detailed description of the exemplary embodiments is with reference to the accompanying drawings. The same reference numerals in different drawings may identify the same or similar elements.
[0040] The foregoing disclosure provides illustrations and descriptions, but is not intended to be exhaustive or to limit implementations to the precise forms disclosed. Modifications and variations are possible based on the foregoing disclosure, or may be obtained from practice of implementations. Furthermore, one or more features or components of one embodiment may be incorporated into or combined with another embodiment (or one or more features of another embodiment). Moreover, in the flowcharts and descriptions of operations provided below, it should be understood that one or more operations may be omitted, one or more operations may be added, one or more operations may be performed simultaneously (at least partially), and the order of one or more operations may be switched.
[0041] Clearly, the systems and / or methods described herein can be implemented in various forms of hardware, firmware, or a combination of hardware and software. The actual dedicated control hardware or software code used to implement these systems and / or methods does not limit the implementation method. Therefore, the operation and behavior of the systems and / or methods are described herein without reference to specific software code. It should be understood that software and hardware can be designed to implement the systems and / or methods based on the descriptions herein.
[0042] Even if a specific combination of features is recited in the claims and / or disclosed in the specification, such combinations are not intended to limit the disclosure of possible implementations. In fact, many of these features can be combined in ways not specifically recited in the claims and / or not disclosed in the specification. While each dependent claim listed below may be directly dependent on only one claim, the disclosure of possible implementations includes combinations of each dependent claim with every other claim in the claim set.
[0043] No element, action, or instruction used herein should be construed as critical or necessary unless explicitly stated otherwise. Furthermore, as used herein, the article “a / an” is intended to include one or more items and may be used interchangeably with “one or more.” If only one item is intended, the term “one” or similar language is used. Furthermore, as used herein, the terms “has / have / having,” “include / including,” etc., are intended to be open-ended terms. Additionally, the phrase “based on” means “at least partially based on” unless explicitly stated otherwise. Furthermore, expressions such as “at least one of [A] and [B]” or “at least one of [A] or [B]” should be understood to include only A, only B, or both A and B.
[0044] As described above, when the JMVD mode is selected for a block, the JMVD is written to the bitstream for two reference frames, and the MVD of the two reference frames is derived from the JMVD based on the distance between the reference frames and the current frame. This assumes that there is linear motion between the backward and forward reference frames relative to the current frame. However, the motion between the two reference frames may not always be linear. For example, the motion from the backward reference frame to the forward reference frame may become slower or faster.
[0045] According to various embodiments of this disclosure, a system and method are provided for template-matching-based scaling factor derivation for Joint Coding of Motion Vector Differences (JMVD). When a JMVD mode is selected for the current block, a template region is defined for the current block and its prediction block in a list of reference frames corresponding to each Motion Vector Difference (MVD). The template can be used to derive the prediction scaling factor of the MVD before being used to obtain the prediction block.
[0046] Figure 1 This is a schematic diagram illustrating components of one or more devices according to various embodiments. Reference Figure 1 Device 100 may include a bus 110, one or more processors 120, a memory 130, a storage component 140, and a communication interface 150. It should be understood that one or more components may be omitted and / or one or more additional components may be included.
[0047] Bus 110 includes components that allow communication between components of device 100. Processor 120 may be implemented in hardware, firmware, or a combination of hardware and software. Processor 120 may be a central processing unit (CPU), graphics processing unit (GPU), accelerated processing unit (APU), microprocessor, microcontroller, digital signal processor (DSP), field-programmable gate array (FPGA), application-specific integrated circuit (ASIC), sparse tensor core, or other type of processing component. Processor 120 may include one or more processors. For example, processor 120 may include one or more CPUs, APUs, FPGAs, ASICs, sparse tensor cores, or other types of processing components. One or more processors in processor 120 can be programmed to perform functions.
[0048] The memory 130 includes random access memory (RAM), read-only memory (ROM), and / or other types of dynamic or static storage devices (e.g., flash memory, magnetic storage, and / or optical storage) that store information and / or instructions for use by the processor 120.
[0049] Storage component 140 stores information and / or software related to the operation and use of device 100. For example, storage component 140 may include hard disks (e.g., magnetic disks, optical disks, magneto-optical disks, and / or solid-state disks), compact discs (CDs), digital versatile discs (DVDs), floppy disks, cassette tapes, magnetic tapes, and / or other types of non-transitory computer-readable media, and corresponding drives.
[0050] Communication interface 150 includes transceiver-like components (e.g., a transceiver and / or separate receiver and transmitter) that enable device 100 to communicate with other devices, for example, via a wired connection, a wireless connection, or a combination of wired and wireless connections. Communication interface 150 may allow device 100 to receive information from and / or provide information to another device. For example, communication interface 150 may include an Ethernet interface, an optical interface, a coaxial interface, an infrared interface, a radio frequency (RF) interface, a universal serial bus (USB) interface, a Wi-Fi interface, a cellular network interface, etc.
[0051] Device 100 can perform one or more processes or functions described herein. Device 100 can perform operations based on software instructions stored in a non-transitory computer-readable medium (e.g., memory 130 and / or storage component 140) executed by processor 120. Computer-readable medium is defined herein as a non-transitory memory device. A memory device includes memory space within a single physical storage device or memory space distributed across multiple physical storage devices.
[0052] Software instructions may be read into memory 130 and / or storage component 140 via communication interface 150 from another computer-readable medium or from another device. When the software instructions stored in memory 130 and / or storage component 140 are executed, they may cause processor 120 to perform one or more of the processes described herein.
[0053] Additionally or alternatively, hardwired circuitry may be used in place of or in combination with software instructions to perform one or more of the processes described herein. Therefore, the embodiments described herein are not limited to any particular combination of hardware circuitry and software.
[0054] supply Figure 1 The number and arrangement of components shown are for illustrative purposes only. In practice, device 100 may include more than Figure 1 The components shown may be more components, fewer components, different components, or components arranged differently. Additionally or optionally, a set of components of device 100 (e.g., one or more components) may perform one or more functions described as being performed by another set of components of device 100.
[0055] The operations or processes described below (e.g., Figure 2 Any one of them can be used or Figure 1 Implement any of the elements shown in the diagram.
[0056] Figure 2 This is a schematic diagram illustrating a method 200 for explicit signaling of scaling factors for joint encoding of motion vector differences according to various embodiments.
[0057] At 201, method 200 includes receiving an encoded bitstream, the encoded bitstream including: a current frame, a first reference frame and a second reference frame associated with a current block in the current frame, a joint motion vector difference (JMVD) associated with the first reference frame and the second reference frame, and a flag indicating whether one or more scaling factors are used to derive the motion vector difference (MVD) from the JMVD.
[0058] In some embodiments, the first reference frame may belong to a list of backward reference frames, and the second reference frame may belong to a list of forward reference frames.
[0059] In some embodiments, the signaling flags include a pair of scaling factors for the first reference frame and the second reference frame.
[0060] In some embodiments, one or more scaling factors are limited to 2. n The value of , where n is an integer value.
[0061] In some embodiments, one or more scaling factors are limited to a value of m / M, where M = 2. n And m and n are integer values.
[0062] In some embodiments, the context for signaling one or more scaling factors is based on the encoded information of the current block or one or more neighboring blocks of the current block. The context may be based on the block size of the current block, wherein the one or more scaling factors include a first set of scaling factors when the block size of the current block is equal to or less than a first threshold size, and the one or more scaling factors include a second set of scaling factors when the block size of the current block is greater than the first threshold size. The block size may correspond to one or more of the following: block width, block height, number of pixels in the current block, minimum block width, minimum block height, maximum block width, and maximum block height. In some embodiments, the context is based on whether the motion vector prediction (MVP) of the current block is symmetric. In some embodiments, the context is based on the index of the motion vector prediction (MVP) candidate of the current block.
[0063] In some embodiments, a signaling syntax is used in the sequence header, frame header, or slice header to indicate whether signaling flags are included in the encoded bitstream.
[0064] At 202, method 200 includes deriving a first MVD associated with a first reference frame. For example, device 100 may derive the first MVD associated with the first reference frame based on applying a first scaling factor from one or more scaling factors to the MVD or based on the distance between the first reference frame and the current frame. In some embodiments, the one or more scaling factors are a single scaling factor, and when device 100 determines that a signaling flag indicates that the scaling factor is not equal to a first default value, device 100 uses the single scaling factor to derive one of the first MVD and the second MVD, and device 100 uses a second default value different from the first default value to derive the other of the first MVD and the second MVD.
[0065] In some embodiments, when td1 is greater than td0, according to the derived... (Right now, The first MVD is derived from this; when td0 is greater than td1, the derived... (Right now, This is used to derive the first MVD. Here, td0 corresponds to the distance between the first reference frame and the current frame, and td1 corresponds to the distance between the second reference frame and the current frame.
[0066] In some embodiments, when td1 is greater than td0, according to the derived... (Right now, To derive the first MVD and / or the second MVD; when td0 is greater than td1, based on the derived... (Right now, The first MVD and / or the second MVD are derived. Here, td0 corresponds to the distance between the current frame and the first reference frame, td1 corresponds to the distance between the current frame and the second reference frame, and M corresponds to 2. n , where n is an integer.
[0067] At 203, method 200 includes deriving a second MVD associated with the second reference frame. For example, device 100 may derive the second MVD associated with the second reference frame based on applying a second scaling factor from one or more scaling factors to the JMVD or based on the distance between the second reference frame and the current frame.
[0068] In some embodiments, when td1 is greater than td0, according to the derived... (Right now, The second MVD is derived from this; when td0 is greater than td1, the derived... (Right now, The second MVD is derived by td0, where td0 corresponds to the distance between the first reference frame and the current frame, and td1 corresponds to the distance between the second reference frame and the current frame.
[0069] At 204, method 200 includes decoding the current frame based on a first MVD and a second MVD. For example, device 100 may decode the current block based on the first MVD and the second MVD.
[0070] In some embodiments, when td1 is greater than td0, according to the derived... (Right now, To derive the first MVD and / or the second MVD; when td0 is greater than td1, based on the derived... (Right now, The first MVD and / or the second MVD are derived using the following method: td0 corresponds to the distance between the current frame and the first reference frame, td1 corresponds to the distance between the current frame and the second reference frame, and M corresponds to 2. n , where n is an integer.
[0071] The foregoing disclosure provides illustrations and descriptions, but is not intended to be exhaustive or to limit implementations to the precise forms disclosed. Modifications and variations are possible based on the foregoing disclosure, or can be derived from the practice of implementation.
[0072] Some embodiments may relate to systems, methods, and / or computer-readable media at any possible level of integration technical detail. Furthermore, one or more of the components described above may be implemented as instructions stored on a computer-readable medium and executable by at least one processor (and / or may include at least one processor). The computer-readable medium may include a computer-readable non-transitory storage medium (or medium) having computer-readable program instructions thereon for causing the processor to perform operations.
[0073] Computer-readable storage media can be tangible devices that can hold and store instructions for use by an instruction execution device. Computer-readable storage media can be, for example, but not limited to, electronic storage devices, magnetic storage devices, optical storage devices, electromagnetic storage devices, semiconductor storage devices, or any suitable combination of the foregoing. A non-exhaustive list of more specific examples of computer-readable storage media includes the following: portable computer floppy disks, hard disks, random access memory (RAM), read-only memory (ROM), erasable programmable read-only memory (EPROM or flash memory), static random access memory (SRAM), portable optical disc read-only memory (CD-ROM), digital multifunction disc (DVD), memory sticks, floppy disks, mechanical encoding devices (e.g., punched cards or raised structures in recesses on which instructions are recorded), and any suitable combination of the foregoing. The computer-readable storage media used herein should not be construed as transient signals themselves, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through waveguides or other transmission media (e.g., light pulses through fiber optic cables), or electrical signals transmitted through wires.
[0074] The computer-readable program instructions described herein can be downloaded from a computer-readable storage medium to a corresponding computing / processing device, or downloaded via a network to an external computer or external storage device, such as the Internet, a local area network (LAN), a wide area network (WAN), and / or a wireless network. The network may include copper transmission cables, optical fiber transmission, wireless transmission, routers, firewalls, switches, gateway computers, and / or edge servers. A network adapter card or network interface in each computing / processing device receives the computer-readable program instructions from the network and forwards them to a computer-readable storage medium within the corresponding computing / processing device.
[0075] Computer-readable program code / instructions used to perform operations can be assembly instructions, instruction set architecture (ISA) instructions, machine instructions, machine-dependent instructions, microcode, firmware instructions, status setting data, integrated circuit configuration data, or source code or object code written in any combination of one or more programming languages (including object-oriented programming languages such as Smalltalk, C++, etc.) and procedural programming languages (such as the "C" programming language or similar programming languages). Computer-readable program instructions can be executed entirely on the user's computer, partially on the user's computer, as a standalone software package, partially on the user's computer and partially on a remote computer, or entirely on a remote computer or server. In the latter case, the remote computer can be connected to the user's computer via any type of network (including local area network (LAN) or wide area network (WAN)) or can be connected to an external computer (e.g., via the Internet provided by an Internet service provider). In some embodiments, electronic circuitry including, for example, programmable logic circuitry, field-programmable gate arrays (FPGAs), or programmable logic arrays (PLAs) can be personalized to execute computer-readable program instructions by utilizing status information from the computer-readable program instructions in order to perform aspects or operations.
[0076] These computer-readable program instructions can be provided to a processor of a general-purpose computer, a special-purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions / actions specified in the flowchart and / or block diagram blocks or blocks. These computer-readable program instructions can also be stored in a computer-readable storage medium that can instruct a computer, programmable data processing apparatus, and / or other device to operate in a particular manner, such that the computer-readable storage medium storing the instructions includes an article of manufacture comprising instructions for implementing aspects of the functions / actions specified in the flowchart and / or block diagram blocks or blocks.
[0077] Computer-readable program instructions may also be loaded onto a computer, other programmable data processing apparatus or other device to cause a series of operational steps to be performed on the computer, other programmable apparatus or other device, thereby producing a computer-implemented process, such that the instructions executed on the computer, other programmable apparatus or other device implement the functions / actions specified in the flowchart and / or block diagram blocks or blocks.
[0078] The flowcharts and block diagrams in the accompanying drawings illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer-readable media according to various embodiments. In this regard, each block in a flowchart or block diagram may represent a module, segment, or portion of instructions, including one or more executable instructions for implementing one or more specified logical functions. The methods, computer systems, and computer-readable media may include additional blocks, fewer blocks, different blocks, or blocks arranged differently compared to those shown in the figures. In some alternative implementations, the functions marked in the blocks may appear in the order indicated in the figures. For example, two blocks shown consecutively may actually be executed simultaneously or substantially simultaneously, or these blocks may sometimes be executed in reverse order, depending on the functions involved. It will also be noted that each block illustrated in the block diagrams and / or flowcharts, and combinations of blocks illustrated in the block diagrams and / or flowcharts, may be implemented by a dedicated hardware-based system that performs the specified function or action or executes a combination of dedicated hardware and computer instructions.
[0079] Clearly, the systems and / or methods described herein can be implemented in various forms of hardware, firmware, or a combination of hardware and software. The actual dedicated control hardware or software code used to implement these systems and / or methods does not limit the implementation method. Therefore, the operation and behavior of the systems and / or methods are described herein without reference to specific software code. It should be understood that software and hardware can be designed to implement the systems and / or methods based on the descriptions herein.
Claims
1. A method for video decoding, characterized in that, The method includes: Receive an encoded video stream, the encoded video stream including: a current frame, a first reference frame and a second reference frame associated with a current block in the current frame, a joint motion vector difference (JMVD) associated with the first reference frame and the second reference frame, and a flag indicating whether one or more scaling factors are used to derive the motion vector difference (MVD) from the JMVD; A first MVD associated with the first reference frame is derived by applying a first scaling factor among the one or more scaling factors to the JMVD or based on the distance between the first reference frame and the current frame. Based on applying a second scaling factor from the one or more scaling factors to the JMVD or based on the distance between the second reference frame and the current frame, a second MVD associated with the second reference frame is derived; and The current block is decoded based on the first MVD and the second MVD.
2. The method according to claim 1, characterized in that, The one or more scaling factors include a pair of scaling factors for the first reference frame and the second reference frame.
3. The method according to claim 1, characterized in that, The one or more scaling factors are limited to 2. n The value of , where n is an integer value.
4. The method according to claim 1, characterized in that, The one or more scaling factors are limited to a value of m / M, where M=2 n And m and n are integer values.
5. The method according to claim 1, characterized in that, The one or more scaling factors are a scaling factor, and when the flag indicates that the scaling factor is not equal to the first default value, the scaling factor is used to derive one of the first MVD and the second MVD, and the scaling factor used to derive the other of the first MVD and the second MVD is a second default value that is different from the first default value.
6. The method according to claim 1, characterized in that, The context used to send the one or more scaling factors by signaling is encoded information based on the current block or one or more neighboring blocks of the current block.
7. The method according to claim 6, characterized in that, The context is based on the block size of the current block, wherein when the block size of the current block is equal to or less than a first threshold size, the one or more scaling factors include a first set of scaling factors, and when the block size of the current block is greater than the first threshold size, the one or more scaling factors include a second set of scaling factors.
8. The method according to claim 7, characterized in that, The block size corresponds to one or more of the following: block width, block height, number of pixels in the current block, minimum block width, minimum block height, maximum block width, and maximum block height.
9. The method according to claim 6, characterized in that, The context is based on whether the motion vector prediction (MVP) of the current block is symmetric.
10. The method according to claim 6, characterized in that, The context is an index based on the motion vector prediction (MVP) candidates of the current block.
11. The method according to any one of claims 1 to 10, characterized in that, Signaling syntax is used in the sequence header, frame header, or slice header to indicate whether the flag is included in the encoded video stream.
12. The method according to any one of claims 1 to 10, characterized in that, The first reference frame belongs to the list of backward reference frames and the second reference frame belongs to the list of forward reference frames, or the first reference frame belongs to the list of forward reference frames and the second reference frame belongs to the list of backward reference frames.
13. The method according to any one of claims 1 to 10, characterized in that, When td1 is greater than td0, according to To derive the first MVD and / or the second MVD; and when td0 is greater than td1, according to To derive the first MVD and / or the second MVD, Wherein, td0 corresponds to the distance between the first reference frame and the current frame, and td1 corresponds to the distance between the second reference frame and the current frame.
14. The method according to any one of claims 1 to 10, characterized in that, When td1 is greater than td0, according to To derive the first MVD and / or the second MVD; and when td0 is greater than td1, according to To derive the first MVD and / or the second MVD, Wherein, td0 corresponds to the distance between the current frame and the first reference frame, and td1 corresponds to the distance between the current frame and the second reference frame, and M corresponds to 2. n , where n is an integer.
15. A video decoding apparatus, characterized in that, The device includes: Memory, used to store program code; and At least one processor is configured to execute the program code and operate as instructed by the program code to perform the method as claimed in any one of claims 1 to 14.
16. A video decoding apparatus, characterized in that, The device includes: A receiving module is configured to receive an encoded video stream, the encoded video stream including: a current frame, a first reference frame and a second reference frame associated with a current block in the current frame, a joint motion vector difference (JMVD) associated with the first reference frame and the second reference frame, and a flag indicating whether one or more scaling factors are used to derive the motion vector difference (MVD) from the JMVD; The first derivation module is used to derive a first MVD associated with the first reference frame based on applying a first scaling factor from the one or more scaling factors to the JMVD or based on the distance between the first reference frame and the current frame. The second derivation module is configured to derive a second MVD associated with the second reference frame based on applying a second scaling factor from the one or more scaling factors to the JMVD or based on the distance between the second reference frame and the current frame; and A decoding module is used to decode the current block based on the first MVD and the second MVD.
17. A computer-readable storage medium, characterized in that, The device stores computer-readable program code that, when executed by a processor, causes the processor to perform at least the method as described in any one of claims 1 to 14.
Citation Information
Patent Citations
Method and apparatus for video coding
CN112235581A
Interaction between MV precisions and MV difference coding
US20210360256A1