Method, device and medium for encoding and decoding visual information and storing video bit stream
By combining intra-block copying and affine encoding and decoding techniques, dynamic selection of encoding methods is solved, and more efficient video encoding and decoding is achieved.
Patent Information
- Application Number
- CN202210923862.6
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2018-06-05
- Filing Date
- 2019-06-05
- Publication Date
- 2025-01-10
- Estimated Expiration
- 2039-06-05
AI Technical Summary
The existing video encoding technology is difficult to effectively utilize intra-block replication and affine motion models in motion compensation, resulting in insolubilization of encoding efficiency.
A method is proposed to use intra-block copying (IBC) technology and affine codec technology to encode and decode video blocks using intra-block copying and affine motion model, and dynamically select encoding technology to improve encoding efficiency.
Improves the efficiency of video encoding, reduces the size of the bitstream, and improves video quality, and is suitable for a variety of visual information, including video, pictures and three-dimensional scenes.
Smart Images

Figure CN115529458B_ABST
Abstract
Description
[0001] CROSS-REFERENCE TO RELATED APPLICATIONS
[0002] This application is a divisional application of the invention patent application with application date of June 5, 2019, application number 201910487921.8, and invention name “Interaction between intra-frame block copying and affine”. Technical Field
[0003] Generally speaking, this patent document relates to video encoding techniques. Background Art
[0004] Motion compensation is a technique in video processing that predicts frames in a video given previous frames and / or future frames by taking into account the motion of the camera and / or objects in the video. Motion compensation can be used in encoding and decoding of video data to achieve video compression. Summary of the invention
[0005] Apparatus, systems and methods related to intra block copying for motion compensation are described.
[0006] At least one embodiment of the present disclosure provides a video encoding method using intra-frame block copying. The method includes: for the conversion between the current video block of the video and the bitstream of the video, determining that the current video block encoded and decoded, which represents a part of the visual information, is encoded and decoded using a first technology; and performing the conversion by using the first technology and avoiding using a second technology; one of the first technology and the second technology corresponds to an intra-frame block copying IBC technology that encodes and decodes the current video block using sample values in the same video picture; and the other of the first technology and the second technology corresponds to an affine encoding and decoding technology that encodes and decodes the current video block using an affine motion model; in the affine encoding and decoding technology, the current video block is divided into a plurality of sub-blocks, and the plurality of sub-blocks are encoded and decoded using an affine motion model and a control point motion vector CPMV, the CPMV is obtained according to a candidate list of the current video block, the determination that the current video block is encoded and decoded using the first technology is determined according to a usage indicator of the first technology, and the usage indicator of the first technology does not indicate whether to avoid using the second technology, and when the current video block uses the first technology, the bitstream of the video does not include a usage indicator for using the second technology for the current video block.
[0007] For example, in the method provided by at least one embodiment of the present disclosure, the first technology is the IBC technology, and the second technology is the affine coding and decoding technology; or, the first technology is the affine coding and decoding technology, and the second technology is the IBC technology.
[0008] For example, in the method provided by at least one embodiment of the present disclosure, at least one candidate in the candidate list of the current video block is obtained according to a motion vector of a neighboring block of the current video block.
[0009] For example, in the method provided by at least one embodiment of the present disclosure, the converting includes encoding the current video block into a bit stream.
[0010] For example, in the method provided by at least one embodiment of the present disclosure, the conversion includes decoding the current video block from the bit stream.
[0011] For example, in the method provided by at least one embodiment of the present disclosure, the IBC technology includes: obtaining multiple blocks representing a coded picture and an indicator of use of the IBC technology; encoding and decoding a first block in the picture; and after encoding and decoding the first block, encoding and decoding a second block of the multiple blocks based on the first block, wherein the second block is predicted based on the first block.
[0012] For example, at least one embodiment of the present disclosure provides a method, comprising: in response to an indicator associated with the current video block sending a signal to use the IBC technology, performing conversion without applying the affine coding and decoding technology.
[0013] For example, at least one embodiment of the present disclosure provides a method, comprising: in response to an indicator associated with the current video block sending a signal to use the affine coding technology, performing conversion without applying the IBC technology.
[0014] For example, the method provided by at least one embodiment of the present disclosure includes: obtaining multiple reference pictures, which are used to encode and decode blocks of a codec picture containing multiple blocks; when at least one reference picture among the multiple reference pictures contains the codec picture, encoding and decoding the blocks without applying the affine coding and decoding technology.
[0015] For example, the method provided by at least one embodiment of the present disclosure includes: obtaining multiple reference pictures, which are used to encode and decode blocks of a codec picture containing multiple blocks; when the block is associated with multiple sets of motion information, wherein the multiple sets of motion information include more than two sets of motion information, and each reference picture in the multiple reference pictures is the codec picture, encoding and decoding the block without applying the affine coding and decoding technology.
[0016] For example, the method provided by at least one embodiment of the present disclosure includes: obtaining multiple reference pictures, which are used to encode and decode blocks of a codec picture containing multiple blocks, and the multiple reference pictures include the codec picture and another picture in the visual information; obtaining a first indicator, which indicates that the affine codec technology is applied to the block; using the affine codec technology and the other picture in the visual information to encode and decode the block.
[0017] For example, in the method provided by at least one embodiment of the present disclosure, the codec picture is the same as the other picture in the visual information, and the method includes: avoiding using the affine coding technology and the codec picture to encode and decode the block.
[0018] For example, the method provided by at least one embodiment of the present disclosure includes: determining that an indicator associated with a codec picture indicates that the affine codec technology is applied to the codec picture; and when the indicator associated with the codec picture indicates that the affine codec technology is applied to the codec picture, encoding and decoding the codec picture without applying the IBC technology.
[0019] For example, the method provided by at least one embodiment of the present disclosure includes: obtaining one or more reference pictures for blocks of a codec picture, the reference picture including multiple blocks and the indicator associated with the codec picture; when the indicator associated with the codec picture indicates that the affine coding technology is applied to the codec picture, assuming that the one or more reference pictures do not include the codec picture.
[0020] For example, the method provided by at least one embodiment of the present disclosure includes: obtaining one or more reference pictures for encoding and decoding blocks of the codec picture, the reference picture including multiple blocks and the indicator associated with the codec picture; when the indicator associated with the codec picture indicates that the affine coding technology is applied to the codec picture, assuming that at least one of the one or more reference pictures is different from the codec picture.
[0021] For example, the method provided by at least one embodiment of the present disclosure includes: determining that an indicator associated with a coded picture includes an alternative type of reference picture indicator, wherein the alternative type of reference picture indicator indicates that the coding technology applied to the coded picture is the intra block copy IBC technology, wherein the alternative type of reference picture indicator is different from a long-term reference picture indicator and a short-term reference picture indicator, wherein a picture containing the long-term reference picture indicator is stored in a memory for a first duration, and a picture containing the short-term reference picture indicator is stored in a memory for a second duration shorter than the first duration.
[0022] For example, the method provided by at least one embodiment of the present disclosure includes: obtaining a first indicator, which includes the long-term reference picture indicator or the long-term reference picture indicator associated with the first picture; obtaining a second indicator, which includes the alternative type of reference picture indicator associated with the second picture; avoiding decoding the second picture based on the first picture; avoiding decoding the first picture based on the second picture.
[0023] For example, the method provided by at least one embodiment of the present disclosure includes: obtaining a first indicator, which includes the long-term reference picture indicator or the long-term reference picture indicator associated with the first picture; obtaining a second indicator, which includes the alternative type of reference picture indicator associated with the second picture; skipping the scaling processing of the motion vector associated with the first picture when decoding the second picture; and skipping the scaling processing of the motion vector associated with the second picture when decoding the first picture.
[0024] For example, at least one embodiment of the present disclosure provides a method, comprising: when an indicator associated with a block of the encoded picture indicates the use of the IBC technology, decoding the block without applying the affine decoding technology.
[0025] For example, the method provided by at least one embodiment of the present disclosure includes: obtaining multiple reference pictures, which are used to decode blocks of the encoded picture containing multiple blocks; when at least one reference picture among the multiple reference pictures contains the encoded picture, decoding the blocks without applying affine decoding technology.
[0026] For example, the method provided by at least one embodiment of the present disclosure includes: obtaining multiple reference pictures, which are used to decode blocks of the encoded picture containing multiple blocks; when the block is associated with multiple sets of motion information, wherein the multiple sets of motion information contain more than two sets of motion information, and each reference picture in the multiple reference pictures is the encoded picture, decoding the block without applying affine decoding technology.
[0027] For example, the method provided by at least one embodiment of the present disclosure includes: obtaining multiple reference pictures, which are used to decode blocks of the encoded picture containing multiple blocks, and the multiple reference pictures include the encoded picture and another picture in the visual information; obtaining a first indicator, which indicates that affine encoding technology is applied to the block; and decoding the block using affine decoding technology and the other picture in the visual information.
[0028] For example, in the method provided by at least one embodiment of the present disclosure, the encoded picture is the same as the other picture in the visual information, and the method includes: avoiding using the affine decoding technology and the encoded picture to decode the block.
[0029] For example, the method provided by at least one embodiment of the present disclosure includes: determining that an indicator associated with the encoded picture indicates that an affine coding technology is applied to the encoded picture; and when the indicator associated with the encoded picture indicates that the affine coding technology is applied to the encoded picture, decoding the encoded picture without applying the IBC technology.
[0030] For example, the method provided by at least one embodiment of the present disclosure includes: obtaining one or more reference pictures for decoding blocks of the encoded picture, the reference picture including multiple blocks and the indicator associated with the encoded picture; when the indicator associated with the encoded picture indicates that the affine coding technology is applied to the encoded picture, assuming that the one or more reference pictures for decoding blocks of the encoded picture do not include the encoded picture.
[0031] For example, the method provided by at least one embodiment of the present disclosure includes: obtaining one or more reference pictures for decoding blocks of the encoded picture, the reference picture including multiple blocks and the indicator associated with the encoded picture; when the indicator associated with the encoded picture indicates that the affine coding technology is applied to the encoded picture, assuming that at least one of the one or more reference pictures for decoding blocks of the encoded picture is different from the encoded picture.
[0032] For example, the method provided by at least one embodiment of the present disclosure includes: obtaining a first indicator associated with the encoded picture and a second indicator associated with the encoded picture, the first indicator indicating that the affine encoding technology is applied to the block, and the second indicator indicating that the IBC technology is applied to the block; and decoding the block of the encoded picture containing multiple blocks by applying the affine decoding technology and the IBC technology to the block.
[0033] For example, the method provided by at least one embodiment of the present disclosure includes: obtaining an initial block among multiple blocks representing the encoded picture; decoding an initial motion vector of an initial control point associated with the initial block; obtaining a first block among multiple blocks representing the encoded picture, and a first indicator indicating that the IBC technology is applied to the first block; disabling motion vector scaling; and when motion vector scaling is disabled, creating a motion vector prediction MVP for a first control point associated with the first block based on the initial motion vector of the initial control point associated with the initial block.
[0034] For example, the method provided by at least one embodiment of the present disclosure includes: obtaining a first block among multiple blocks representing the encoded picture, and a first indicator indicating that the affine encoding technology is applied to the first block; based on the motion vector of the control point associated with the block of a picture different from the encoded picture, creating the MVP of the first control point associated with the first block.
[0035] For example, the method provided by at least one embodiment of the present disclosure includes: obtaining multiple blocks representing the encoded picture; obtaining motion vectors of control points associated with blocks among the multiple blocks, wherein the motion vectors send signals with integer precision; performing motion vector prediction based on the motion vectors; and rounding the results of the motion vector prediction to integer pixel precision.
[0036] For example, the method provided by at least one embodiment of the present disclosure includes: obtaining a block among multiple blocks representing the encoded picture; deriving a motion vector at a control point associated with the block from adjacent motion vectors at adjacent control points; and rounding the motion vector to integer pixel precision.
[0037] For example, at least one embodiment of the present disclosure provides a method that includes: avoiding overlapping block motion compensation (OBMC).
[0038] For example, a method provided by at least one embodiment of the present disclosure includes: assuming that a predetermined component of a motion vector at a control point is an integer.
[0039] For example, the method provided by at least one embodiment of the present disclosure includes: transmitting an indicator between an encoder and a decoder, wherein the indicator indicates whether and how to apply the affine coding technology to blocks encoded by the IBC technology at a sequence level, a picture level, a slice level, a coding tree unit CTU, a region level, a CU level, or a PU level.
[0040] For example, the method provided by at least one embodiment of the present disclosure includes: transmitting the indicator at a sequence parameter set SPS, a picture parameter set PPS, a slice header SH, a slice group header, a coding tree unit CTU, a region, a coding unit CU or a prediction unit PU.
[0041] For example, the method provided by at least one embodiment of the present disclosure includes: encoding the visual information into multiple encoded pictures and multiple indicators, the multiple indicators indicating the application of one or more encoding technologies, the multiple indicators including an intra-block copy IBC technology indicator and an affine coding technology indicator, wherein the IBC technology is used to encode a first block of a first picture associated with the visual information, and the affine coding technology is used to encode a second block of a second picture associated with the visual information, wherein the IBC technology uses different blocks of the first picture to encode the first block of the first picture, and the affine coding technology uses a third picture associated with the visual information to encode the second block.
[0042] For example, in the method provided by at least one embodiment of the present disclosure, the IBC technology includes: dividing the first picture into multiple blocks; encoding an initial block among the multiple blocks; and after encoding the initial block, encoding a first block among the multiple blocks based on the initial block.
[0043] For example, the method provided by at least one embodiment of the present disclosure includes: applying the IBC technology to a block of the first picture in the visual information to obtain a coded block; encoding an indicator associated with the coded picture according to the IBC technology; and skipping encoding the coded block using the affine coding technology, and encoding the indicator indicating the affine coding technology.
[0044] For example, the method provided by at least one embodiment of the present disclosure includes: encoding multiple reference pictures for encoding the block of the first picture; when at least one reference picture among the multiple reference pictures includes the first picture, skipping the encoding of the indicator of use of the affine coding technology.
[0045] For example, the method provided by at least one embodiment of the present disclosure includes: encoding multiple reference pictures for encoding the block of the first picture; when the block is associated with multiple sets of motion information, wherein the multiple sets of motion information include more than two sets of motion information, and each reference picture in the multiple reference pictures is the first picture, skipping the encoding of the indicator indicating the affine coding technology.
[0046] For example, the method provided by at least one embodiment of the present disclosure includes: encoding multiple reference pictures for encoding blocks of the first picture, the multiple reference pictures including the first picture and another picture in the visual information; encoding a first indicator indicating that the affine encoding technology is applied to the block; and applying the affine encoding technology to blocks of the first picture and the other picture in the visual information.
[0047] For example, in the method provided by at least one embodiment of the present disclosure, the encoded picture in the visual information is the same as the other picture, and the method includes: skipping applying the affine coding technology to blocks of the first picture and the other picture in the visual information.
[0048] For example, at least one embodiment of the present disclosure provides a method comprising: applying the affine coding technique to the second picture associated with the visual information; and skipping the encoding of an indicator including the IBC technique.
[0049] For example, the method provided by at least one embodiment of the present disclosure includes: encoding one or more reference pictures for encoding blocks of the second picture, wherein the one or more reference pictures do not include the second picture; and encoding an indicator among the multiple indicators that indicates that the second picture is encoded using the affine coding technology.
[0050] For example, the method provided by at least one embodiment of the present disclosure includes: encoding one or more reference pictures for encoding blocks of the second picture, wherein at least one reference picture of the one or more reference pictures is different from the second picture; encoding an indicator among the multiple indicators that indicates that the second picture is encoded using the affine coding technology.
[0051] For example, the method provided by at least one embodiment of the present disclosure includes: encoding a block of the first picture using the IBC technology and the affine coding technology; encoding a first indicator and a second indicator associated with the block of the first picture, the first indicator indicating that the IBC technology is used to encode the block, and the second indicator indicating that the affine coding technology is used to encode the block.
[0052] For example, the method provided by at least one embodiment of the present disclosure includes: dividing the first picture into multiple blocks; encoding the motion vector of the control point associated with the initial block among the multiple blocks; and encoding the motion vector of the control point associated with the first block among the multiple blocks based on the motion vector of the control point associated with the initial block; and disabling motion vector scaling.
[0053] For example, the method provided by at least one embodiment of the present disclosure includes: dividing the second picture into a second plurality of blocks, and dividing the third picture in the visual information into a third plurality of blocks, wherein the third picture is different from the second picture; encoding the motion vector of the control point associated with the second block in the second plurality of blocks; and encoding the motion vector of the control point associated with the third block in the third plurality of blocks based on the motion vector of the control point associated with the second block.
[0054] For example, the method provided by at least one embodiment of the present disclosure includes: dividing the first picture into multiple blocks; encoding blocks among the multiple blocks using the affine coding technology; encoding motion vectors of control points associated with the blocks among the multiple blocks using integer precision; and rounding the results of motion vector prediction to integer pixel precision.
[0055] For example, the method provided by at least one embodiment of the present disclosure includes: dividing the first picture into multiple blocks; encoding a block among the multiple blocks using the affine coding technology; encoding the motion vectors of the control points associated with the blocks in the multiple blocks using integer precision; and encoding the motion vectors of the points within the block based on the motion vectors of the control points associated with the block by rounding the motion vectors of the control points within the block to integer pixel precision.
[0056] For example, at least one embodiment of the present disclosure provides a method including: avoiding the application of overlapping block motion compensation (OBMC).
[0057] For example, at least one embodiment of the present disclosure provides a method comprising: skipping encoding of a predetermined component of a motion vector at a control point.
[0058] For example, the method provided by at least one embodiment of the present disclosure includes: transmitting an indicator between an encoder and a decoder, wherein the indicator indicates whether and how to apply the affine coding technology to blocks encoded by the IBC technology at a sequence level, a picture level, a slice level, a coding tree unit CTU, a region level, a CU level, or a PU level.
[0059] For example, the method provided by at least one embodiment of the present disclosure includes: transmitting the indicator at a sequence parameter set SPS, a picture parameter set PPS, a slice header SH, a slice group header, a coding tree unit CTU, a region, a coding unit CU or a prediction unit PU.
[0060] For example, the method provided by at least one embodiment of the present disclosure includes: encoding an indicator among multiple indicators associated with a coded picture among multiple coded pictures, the indicator including an alternative type of reference picture indicator indicating that the coding technology applied to the coded picture is an intra-frame block copy technology, wherein the alternative type of reference picture indicator is different from a long-term reference picture indicator and a short-term reference picture indicator, wherein a picture containing the long-term reference picture indicator is stored in a memory for a first duration, and a picture containing the short-term reference picture indicator is stored in a memory for a second duration shorter than the first duration.
[0061] For example, the method provided by at least one embodiment of the present disclosure includes: obtaining a first indicator, which includes the long-term reference picture indicator or the long-term reference picture indicator associated with the first picture; obtaining a second indicator, which includes the alternative type of reference picture indicator associated with the second picture; avoiding encoding the second picture based on the first picture; and avoiding encoding the first picture based on the second picture.
[0062] For example, the method provided by at least one embodiment of the present disclosure includes: encoding a first indicator, which includes the long-term reference picture indicator or the long-term reference picture indicator associated with the first picture; encoding a second indicator, which includes the alternative type of reference picture indicator associated with the second picture; skipping the scaling processing of the motion vector associated with the first picture when encoding the second picture; and skipping the scaling processing of the motion vector associated with the second picture when encoding the first picture.
[0063] For example, the method provided by at least one embodiment of the present disclosure includes: applying the IBC technology to a block of a first picture in the visual information to obtain a coded block; encoding an indicator associated with the coded picture according to the IBC technology; and skipping encoding the coded block using the affine coding technology, and encoding the indicator indicating the affine coding technology.
[0064] For example, the method provided by at least one embodiment of the present disclosure includes: encoding multiple reference pictures for encoding the block of the first picture; when at least one reference picture among the multiple reference pictures includes the first picture, skipping the encoding of the indicator of use of the affine coding technology.
[0065] For example, the method provided by at least one embodiment of the present disclosure includes: encoding multiple reference pictures for encoding the block of the first picture; when the block is associated with multiple sets of motion information, wherein the multiple sets of motion information include more than two sets of motion information, and each reference picture in the multiple reference pictures is the first picture, skipping the encoding of the indicator indicating the affine coding technology.
[0066] For example, the method provided by at least one embodiment of the present disclosure includes: encoding multiple reference pictures for encoding blocks of the first picture, the multiple reference pictures including the first picture and another picture in the visual information; encoding a first indicator indicating that the affine encoding technology is applied to the block; and applying the affine encoding technology to blocks of the first picture and the other picture in the visual information.
[0067] For example, in the method provided by at least one embodiment of the present disclosure, the encoded picture in the visual information is the same as the other picture, and the method includes: skipping applying the affine coding technology to blocks of the first picture and the other picture in the visual information.
[0068] For example, at least one embodiment of the present disclosure provides a method comprising: applying an affine coding technique to a second picture associated with the visual information; and skipping encoding of an indicator including the IBC technique.
[0069] For example, the method provided by at least one embodiment of the present disclosure includes: encoding one or more reference pictures for encoding blocks of the second picture, wherein the one or more reference pictures do not include the second picture; and encoding an indicator among the multiple indicators that indicates that the second picture is encoded using the affine coding technology.
[0070] For example, the method provided by at least one embodiment of the present disclosure includes: encoding one or more reference pictures for encoding blocks of the second picture, wherein at least one reference picture of the one or more reference pictures is different from the second picture; encoding an indicator among the multiple indicators that indicates that the second picture is encoded using the affine coding technology.
[0071] For example, the method provided by at least one embodiment of the present disclosure includes: encoding a block of a first picture using the IBC technology and the affine coding technology; encoding a first indicator and a second indicator associated with the block of the first picture, the first indicator indicating that the IBC technology is used to encode the block, and the second indicator indicating that the affine coding technology is used to encode the block.
[0072] For example, the method provided by at least one embodiment of the present disclosure includes: dividing the first picture into multiple blocks; encoding the motion vector of the control point associated with the initial block among the multiple blocks; and encoding the motion vector of the control point associated with the first block among the multiple blocks based on the motion vector of the control point associated with the initial block; and disabling motion vector scaling.
[0073] For example, the method provided by at least one embodiment of the present disclosure includes: dividing a second picture into a second plurality of blocks, and dividing a third picture in the visual information into a third plurality of blocks, wherein the third picture is different from the second picture; encoding a motion vector of a control point associated with a second block in the second plurality of blocks; and encoding a motion vector of a control point associated with a third block in the third plurality of blocks based on the motion vector of the control point associated with the second block.
[0074] For example, the method provided by at least one embodiment of the present disclosure includes: dividing the first picture into multiple blocks; encoding blocks among the multiple blocks using the affine coding technology; encoding motion vectors of control points associated with the blocks among the multiple blocks using integer precision; and rounding the results of motion vector prediction to integer pixel precision.
[0075] For example, the method provided by at least one embodiment of the present disclosure includes: dividing the first picture into multiple blocks; encoding a block among the multiple blocks using the affine coding technology; encoding the motion vectors of the control points associated with the blocks in the multiple blocks using integer precision; and encoding the motion vectors of the points within the block based on the motion vectors of the control points associated with the block by rounding the motion vectors of the control points within the block to integer pixel precision.
[0076] For example, at least one embodiment of the present disclosure provides a method including: avoiding the application of overlapping block motion compensation (OBMC).
[0077] For example, at least one embodiment of the present disclosure provides a method comprising: skipping encoding of a predetermined component of a motion vector at a control point.
[0078] For example, the method provided by at least one embodiment of the present disclosure includes: transmitting an indicator between an encoder and a decoder, wherein the indicator indicates whether and how to apply the affine coding technology to the block encoded by the IBC technology at the sequence level, picture level, slice level, coding tree unit CTU, region level, CU level or PU level.
[0079] For example, the method provided by at least one embodiment of the present disclosure includes: transmitting the indicator at a sequence parameter set SPS, a picture parameter set PPS, a slice header SH, a slice group header, a coding tree unit CTU, a region, a coding unit CU or a prediction unit PU.
[0080] At least one embodiment of the present disclosure also provides a visual information encoding and decoding device, including: a first unit, used to: for conversion between a current video block of a video and a bit stream of the video, determine that the current video block being encoded and decoded, which represents a part of the visual information, is encoded and decoded using a first technology, wherein the determination that the current video block is encoded and decoded using the first technology is determined based on a usage indicator of the first technology, and the usage indicator of the first technology does not indicate whether to avoid using a second technology, and when the first technology is used, the bit stream of the video does not include the usage indicator of the second technology; and a second unit, used to perform conversion by using the first technology and avoiding using the second technology; one of the first technology and the second technology corresponds to an intra-block copy (IBC) technology for encoding and decoding the current video block using sample values of the same video slice; and the other of the first technology and the second technology corresponds to an affine encoding and decoding technology for encoding and decoding the current video block using an affine motion model.
[0081] For example, in the device provided by at least one embodiment of the present disclosure, the first unit is also used to determine that the indicator associated with the encoded picture includes an alternative type of reference picture indicator, wherein the alternative type of reference picture indicator indicates that the encoding technology applied to the encoded picture is an intra block copy IBC technology, wherein the alternative type of reference picture indicator is different from the long-term reference picture indicator and the short-term reference picture indicator, wherein the picture containing the long-term reference picture indicator is stored in the memory for a first duration, and the picture containing the short-term reference picture indicator is stored in the memory for a second duration shorter than the first duration.
[0082] For example, in the device provided by at least one embodiment of the present disclosure, the first unit is also used to encode the visual information into multiple encoded pictures and multiple indicators, the multiple indicators indicating the application of one or more encoding technologies, the multiple indicators including an intra-block copy IBC technology indicator and an affine coding technology indicator, wherein the IBC technology is used to avoid using the affine coding technology to encode a first block of a first picture associated with the visual information, and the affine coding technology is used to avoid using the IBC technology to encode a second block of a second picture associated with the visual information, wherein the IBC technology uses different blocks of the first picture to encode the first block of the first picture, and the affine coding technology uses a third picture associated with the visual information to encode the second block.
[0083] For example, in the device provided by at least one embodiment of the present disclosure, the first unit is also used to encode an indicator among multiple indicators associated with a coded picture among multiple coded pictures, the indicator including an alternative type of reference picture indicator indicating that the coding technology applied to the coded picture is an intra-block copy technology and avoids using an affine coding and decoding technology, wherein the alternative type of reference picture indicator is different from a long-term reference picture indicator and a short-term reference picture indicator, wherein a picture containing the long-term reference picture indicator is stored in a memory for a first duration, and a picture containing the short-term reference picture indicator is stored in a memory for a second duration shorter than the first duration.
[0084] At least one embodiment of the present disclosure further provides a video information processing device, comprising a processor and a non-temporary memory storing instructions, wherein the instructions, when executed by the processor, enable the processor to implement the method provided by any embodiment of the present disclosure.
[0085] At least one embodiment of the present disclosure further provides a computer-readable storage medium, wherein the computer-readable storage medium is used to store program code, wherein when the program code is executed by a computer, the computer implements the method provided by any embodiment of the present disclosure.
[0086] At least one embodiment of the present disclosure further provides a device for processing video data, comprising a processor and a non-transitory memory having instructions thereon, wherein the instructions, when executed by the processor, cause the processor to: for conversion between a current video block of a video and a bitstream of the video, determine that the current video block being encoded and decoded, which represents a portion of the visual information, is encoded and decoded using a first technique; and perform the conversion by using the first technique and avoiding using a second technique; one of the first technique and the second technique corresponds to an intra-block copy (IBC) technique of encoding and decoding the current video block using sample values within the same video picture; and the other of the first technique and the second technique corresponds to An affine coding and decoding technology for encoding and decoding a current video block using an affine motion model; in the affine coding and decoding technology, the current video block is divided into multiple sub-blocks, and the multiple sub-blocks are encoded and decoded using an affine motion model and a control point motion vector CPMV, the CPMV is obtained according to a candidate list of the current video block, the determination that the current video block is encoded and decoded using a first technology is determined according to a usage indicator of the first technology, and the usage indicator of the first technology does not indicate whether to avoid using the second technology, and when the current video block uses the first technology, the bitstream of the video does not include a usage indicator for using the second technology for the current video block.
[0087] At least one embodiment of the present disclosure further provides a non-transitory computer-readable storage medium storing instructions, wherein the instructions enable a processor to: for conversion between a current video block of a video and a bitstream of the video, determine that a current video block encoded and decoded, which represents a portion of the visual information, is encoded and decoded using a first technology; and perform the conversion by using the first technology and avoiding using a second technology; one of the first technology and the second technology corresponds to an intra-block copy (IBC) technology for encoding and decoding the current video block using sample values within the same video picture; and the other of the first technology and the second technology corresponds to an affine encoding and decoding technology for encoding and decoding the current video block using an affine motion model; in the affine encoding and decoding technology, the current video block is divided into a plurality of sub-blocks, and the plurality of sub-blocks are encoded and decoded using an affine motion model and a control point motion vector (CPMV), and the CPMV is obtained based on a candidate list of the current video block, and the determination that the current video block is encoded and decoded using the first technology is determined based on a usage indicator of the first technology, and the usage indicator of the first technology does not indicate whether to avoid using the second technology, and when the current video block uses the first technology, the bitstream of the video does not include a usage indicator for using the second technology for the current video block.
[0088] At least one embodiment of the present disclosure also provides a non-transitory computer-readable recording medium storing a video bitstream generated by a method executed by a video processing device, the method comprising: for a current video block of a video, determining that the current video block being coded and decoded, which represents a portion of the visual information, is coded and decoded using a first technique; and generating the bitstream by using the first technique and avoiding using a second technique; one of the first technique and the second technique corresponds to an intra-block copy (IBC) technique for coding and decoding the current video block using sample values within the same video picture; and the other of the first technique and the second technique corresponds to coding and decoding using an affine motion model. An affine coding and decoding technology for encoding a current video block; in the affine coding and decoding technology, the current video block is divided into multiple sub-blocks, and the multiple sub-blocks are encoded and decoded using an affine motion model and a control point motion vector CPMV, the CPMV is obtained according to a candidate list of the current video block, the determination that the current video block is encoded and decoded using a first technology is determined according to a usage indicator of the first technology, and the usage indicator of the first technology does not indicate whether to avoid using the second technology, and when the current video block uses the first technology, the bitstream of the video does not include a usage indicator for using the second technology for the current video block.
[0089] At least one embodiment of the present disclosure also provides a method for storing a bitstream of a video, comprising: for a current video block of the video, determining that the current video block being coded and decoded, which represents a portion of the visual information, is coded and decoded using a first technique; generating the bitstream by using the first technique and avoiding using a second technique; and storing the bitstream in a non-transitory computer-readable recording medium, wherein one of the first technique and the second technique corresponds to an intra-block copy (IBC) technique for coding and decoding the current video block using sample values within the same video picture; and the other of the first technique and the second technique corresponds to coding and decoding the current video block using an affine motion model. Affine coding and decoding technology for a previous video block; in the affine coding and decoding technology, the current video block is divided into multiple sub-blocks, and the multiple sub-blocks are encoded and decoded using an affine motion model and a control point motion vector CPMV, the CPMV is obtained according to a candidate list of the current video block, the determination that the current video block is encoded and decoded using a first technology is determined according to a usage indicator of the first technology, and the usage indicator of the first technology does not indicate whether to avoid using the second technology, and when the current video block uses the first technology, the bitstream of the video does not include a usage indicator for using the second technology for the current video block.
[0090] In another embodiment of the present disclosure, the above method is implemented in the form of processor executable code and stored in a computer readable program medium.
[0091] In another embodiment of the present disclosure, a device is disclosed, which is configured to or operable to perform the above method. The device may include a processor programmed to implement the method.
[0092] In another embodiment of the present disclosure, a video decoder device may implement the method described herein.
[0093] The above-described aspects, as well as other aspects and features of the disclosed technology are described in more detail in the drawings, the description, and the claims. BRIEF DESCRIPTION OF THE DRAWINGS
[0094] Figure 1 An example of an intra block copy technique is shown.
[0095] Figure 2 An example of a simplified affine motion model is shown.
[0096] Figure 3 An example of an affine motion vector field (MVF) for each sub-block is shown.
[0097] Figure 4 An example of motion vector prediction (MVP) for AF_INTER affine motion mode is shown.
[0098] Figure 5A and 5B Example candidates for the AF_MERGE affine motion mode are shown.
[0099] Figure 6 A flow chart illustrating an example method for video encoding using intra block copying according to the disclosed techniques is shown.
[0100] Figure 7 A flow chart illustrating another example method of video encoding using intra block copying according to the disclosed technology is shown.
[0101] Figure 8 A flow chart illustrating an example method for video decoding using intra block copying according to the disclosed techniques is shown.
[0102] Fig. 9 A flow chart illustrating another example method of video decoding using intra block copying according to the disclosed technology is shown.
[0103] Fig.10 is a block diagram illustrating an example of the structure of a computer system or other control device that can be used to implement various parts of the disclosed technology.
[0104] Fig.11 A block diagram of an example embodiment of a mobile device that can be used to implement various portions of the disclosed technology is shown.
[0105] Fig.12 A flow chart illustrating an example method of visual information processing is shown.
[0106] Fig.13 A flow chart illustrating an example method of visual information processing is shown. DETAILED DESCRIPTION
[0107] Section headings are used herein to facilitate understanding and do not limit the scope of the techniques and embodiments discussed in each section to only that section.
[0108] Due to the increasing demand for high-resolution visual information such as videos, pictures, three-dimensional scenes, etc., video coding methods and techniques are ubiquitous in modern technology. The technology described in this application can be applied to various visual information, including videos, pictures, three-dimensional scenes, etc. The picture of visual information can be a frame in a video, a part of a picture, an object in a three-dimensional scene, a part of a three-dimensional scene, etc. A block can be a part of a visual information picture, such as a coding unit (CU), a maximum coding unit (LCU), a sample, a prediction unit (PU), etc., as described in this application. A sub-block of visual information can be a PU, such as a sub-CU, a sample, etc. A PU can be a pixel, a voxel, or a minimum resolution quantum of visual information. Video codecs typically include electronic circuits or software that compress or decompress digital video, and are constantly being improved to provide higher coding efficiency. Video codecs convert uncompressed video to a compressed format, or vice versa. There is a complex relationship between video quality, the amount of data used to represent the video (determined by the bit rate), the complexity of the encoding and decoding algorithms, sensitivity to data loss and errors, ease of editing, random access, and end-to-end delay (delay). The compression format typically conforms to a standard video compression specification, such as the High Efficiency Video Coding (HEVC) standard (also known as H.265 or MPEG-H Part 2), the to-be-finalized General Video Coding standard, or other current and / or future video coding standards.
[0109] Embodiments of the disclosed technology can be applied to existing video coding standards (e.g., HEVC, H.265) and future standards to improve runtime performance. In this document, section headings are used to improve the readability of the description and do not in any way limit the discussion or embodiments (and / or implementations) to only the respective sections.
[0110] 1. Examples of reference images and reference image lists
[0111] In HEVC, there are two types of reference pictures: short-term and long-term. When a reference picture is no longer needed for prediction reference, it can be marked as "unused for reference". HEVC introduces a new reference picture management method, called Reference Picture Set (RPS) or buffer description.
[0112] The process of marking pictures as "for short-term reference", "for long-term reference" or "not for reference" is done using the RPS concept. RPS is a set of picture indicators that are signaled in each slice header and consists of a set of short-term pictures and a set of long-term pictures. After decoding the first slice header of a picture, the pictures in the DPB will be marked as specified by the RPS. Pictures indicated by the short-term picture part of the RPS in the DPB are maintained as short-term pictures. Short-term or long-term pictures indicated by the long-term picture part of the RPS in the DPB are converted to or maintained as long-term pictures. Finally, pictures in the DPB that do not have an indicator in the RPS are marked as not used for reference. Therefore, all decoded pictures that may be used as references for prediction of the decoding order of any subsequent pictures must be included in the RPS.
[0113] The RPS consists of a set of picture order count (POC) values used to identify pictures in the DPB. In addition to signaling the POC information, the RPS also sends a flag for each picture. Each flag indicates whether the current picture has a corresponding picture that is available or unavailable for reference. It should be noted that even if a reference picture is signaled as unavailable for the current picture, it is still retained in the DPB and may be available for reference later and for decoding future pictures.
[0114] From the POC information and the availability flag, five reference picture lists shown in Table 1 can be created. The list RefPicSetStCurrBefore consists of short-term pictures that can be referenced by the current picture and have a POC value lower than the POC value of the current picture. RefPicSetStCurrAfter consists of available short-term pictures with a POC value higher than the POC value of the current picture. RefPicSetStFoll is a list containing all short-term pictures that are not available for the current picture but can be used as reference pictures for decoding subsequent pictures in decoding order. Finally, the lists RefPicSetLtCurr and RefPicSetLtFoll contain long-term pictures that can be referenced by the current picture and those that cannot be referenced by the current picture, respectively.
[0115] Table 1 List of reference picture lists
[0116]
[0117] 1.1 Examples of short-term and long-term reference images
[0118] The syntax of the general sequence parameter set is shown below:
[0119]
[0120] The syntax of the general slice segment header is shown below:
[0121]
[0122] The semantics used in the above syntax table are defined as follows:
[0123] num_short_term_ref_pic_sets specifies the number of st_ref_pic_set() syntax structures contained in the SPS. The value of num_short_term_ref_pic_sets shall be between 0 and 64, inclusive.
[0124] In some embodiments, the decoder may allocate memory for the total number of num_short_term_ref_pic_sets+1st_ref_pic_set() syntax structures, since one st_ref_pic_set() syntax structure may be directly signaled in the slice header of the current picture. The st_-ref_-pic_set() syntax structure signaled directly in the slice header of the current picture has an index equal to num_-short_-term_-ref_-pic_set.
[0125] long_term_ref_pics_present_flag equal to 0 specifies that inter prediction of any coded picture in the CVS does not use long-term reference pictures. long_term_ref_pics_present_flag equal to 1 specifies that inter prediction of one or more coded pictures in the CVS may use long-term reference pictures.
[0126] num_long_term_ref_pics_sps specifies the number of candidate long-term reference pictures specified in the SPS. The value of num_long_term_ref_pics_sps should be between 0 and 32 (inclusive).
[0127] lt_ref_pic_poc_lsb_sps[i] specifies the picture order count module MaxPicOrderCntLsb of the i-th candidate long-term reference picture in the SPS. The number of bits used to represent lt_ref_pic_poc_lsb_sps[i] is equal to log2_max_pic_order_cnt_lsb_minus4+4.
[0128] used_by_curr_pic_lt_sps_flag[i] equal to 0 specifies that the i-th candidate long-term reference picture specified in the SPS is not used for reference by a picture whose long-term reference picture set (RPS) contains its i-th candidate long-term reference picture specified in the SPS.
[0129] short_term_ref_pic_set_sps_flag equal to 1 specifies that the short-term RPS of the current picture is derived based on a st_ref_pic_set() syntax structure in the active SPS identified by the syntax element short_term_ref_pic_set_idx in the slice header. short_term_ref_pic_set_sps_flag equal to 0 specifies that the short-term RPS of the current picture is derived based on the st_ref_pic_set() syntax structure directly contained in the slice header of the current picture. When num_short_term_ref_pic_sets is equal to 0, the value of short_term_ref_pic_set_sps_flag shall be equal to 0.
[0130] short_term_ref_pic_set_idx specifies the index of the syntax structure st_ref_pic_set() used to derive the short-term RPS of the current picture to the list of syntax structures st_ref_pic_set() contained in the active SPS. The syntax element short_term_ref_pic_set_idx is represented by Ceil(log2(num_short_term_ref_pic_set)) bits. When not present, the value of short_term_ref_pic_set_idx is inferred to be equal to 0. The value of short_term_ref_pic_set_idx shall be in the range of 0 to num_short_term_ref_pic_sets–1, inclusive.
[0131] In some embodiments, the variable CurrRpsIdx is derived as follows:
[0132] --If short_term_ref_pic_set_sps_flag is equal to 1, set CurrRpsIdx equal to short_term_ref_pic_set_idx.
[0133] --Otherwise, set CurrRpsIdx equal to num_short_term_ref_pic_sets.
[0134] num_long_term_sps specifies the number of entries in the long-term RPS of the current picture that are derived based on the candidate long-term reference pictures specified in the active SPS. The value of num_long_term_sps should be in the range of 0 to num_long_term_ref_pics_sps, inclusive. When not present, the value of num_long_term_sps is inferred to be equal to 0.
[0135] num_long_term_pics specifies the number of entries in the long-term RPS of the current picture signaled directly in the slice header. When not present, the value of num_long_term_pics is inferred to be equal to 0.
[0136] In some embodiments, when nuh_layer_id is equal to 0, the value of num_long_term_pics should be less than or equal to sps_max_dec_pic_buffering_minus1[TemporalId]-NumNegativePics[CurrRpsIdx]-NumPositivePics[CurrRpsIdx]-num_long_term_sps-TwoVersionsOfCurrDecPicFlag.
[0137] lt_idx_sps[i] specifies the index of the i-th entry in the long-term RPS of the current picture to the list of candidate long-term reference pictures specified in the active SPS. The number of bits used to represent lt_idx_sps[i] is equal to Ceil(Log2(num_long_term_ref_pics_sps)). When not present, the value of lt_idx_sps[i] is inferred to be equal to 0. The value of lt_idx_sps[i] shall be in the range of 0 to num_long_term_ref_pics_sps-1, inclusive.
[0138] poc_lsb_lt[i] specifies the value of the picture order count module MaxPicOrderCntLsb of the i-th entry in the long-term RPS of the current picture. The length of the poc_lsb_lt[i] syntax element is log2_max_pic_order_cnt_lsb_minus4+4 bits.
[0139] used_by_curr_pic_lt_flag[i] equal to 0 specifies that the i-th entry in the long-term RPS of the current picture is not used for reference by the current picture.
[0140] In some embodiments, the variables PocLsbLt[i] and UsedByCurrPicLt[i] are derived as follows:
[0141] --If i is less than num_long_term_sps, set PocLsbLt[i] equal to lt_ref_pic_poc_lsb_sps[lt_idx_sps[i]] and set UsedByCurrPicLt[i] equal to used_by_curr_pic_lt_sps_flag[lt_idx_sps[i]].
[0142] -- Otherwise, set PocLsbLt[i] equal to poc_lsb_lt[i] and set UsedByCurrPicLt[i] equal to used_by_curr_pic_lt_flag[i].
[0143] delta_poc_msb_present_flag[i] equal to 1 specifies that delta_poc_msb_cycle_lt[i] is present. delta_poc_msb_present_flag[i] equal to 0 specifies that delta_poc_msb_cycle_lt[i] is not present.
[0144] In some embodiments, let prevTid0Pic be the previous picture in decoding order that has TemporalId equal to 0 and is not a RASL, RADL, or SLNR picture. Let setOfPrevPocVals be the set containing:
[0145] --PicOrderCntVal of prevTid0Pic,
[0146] --PicOrderCntVal of each picture in the RPS of prevTid0Pic,
[0147] -- PicOrderCntVal of each picture that follows prevTid0Pic in decoding order and precedes the current picture in decoding order.
[0148] In some embodiments, when there is more than one value in setOfPrevPocVals (where the value modulo MaxPicOrderCntLsb is equal to PocLsbLt[i]), delta_poc_msb_present_flag[i] should be equal to 1.
[0149] delta_poc_msb_cycle_lt[i] is used to determine the value of the most significant bit of the picture order count value of the i-th entry in the long-term RPS of the current picture. When delta_poc_msb_cycle_lt[i] is not present, it is inferred to be equal to 0.
[0150] In some embodiments, the variable DeltaPocMsbCycleLt[i] is derived as follows:
[0151] if (i == 0 || i == num_long_term_sps)
[0152] DeltaPocMsbCycleLt[i]=delta_poc_msb_cycle_lt[i]
[0153] Otherwise DeltaPocMsbCycleLt[i]=delta_poc_msb_cycle_lt[i]+
[0154] DeltaPocMsbCycleLt[i-1]
[0155] 1.2 Example of Motion Vector Prediction (MVP) between Short-term and Long-term Reference Pictures
[0156] In some embodiments, motion vector prediction is allowed only when the target reference picture type and the prediction reference picture type are the same. In other words, motion vector prediction is not allowed when the types are different.
[0157] Advanced Motion Vector Prediction (AMVP) is an example of motion vector prediction including existing implementations. The relevant parts of the existing AMVP implementation are described below.
[0158] The motion vector mvLXA and the availability flag availableFlagLXA are derived in the following order of steps:
[0159] (1) The sample position (xNbA0, yNbA0) is set equal to (xPb-1, yPb+nPbH), and the sample position (xNbA1, yNbA1) is set equal to (xNbA0, yNbA0-1).
[0160] (7) When availableFlagLXA is equal to 0, the following applies to (xNbAk, yNbAk), from (xNbA0, yNbA0) to (xNbA1, yNbA1) or until availableFlagLXA is equal to 1:
[0161] --When availableAk equals TRUE and availableFlagLXA equals 0, the following applies:
[0162] If PredFlagLX[xNbAk][yNbAk] is equal to 1 and LongTermRefPic(currPic,currPb,refIdxLX,RefPicListX) is equal to LongTermRefPic(currPic,currPb,RefIdxLX[xNbAk][yNbAk],RefPicListX), then availableFlagLXA is set to 1 and the following assignments are made:
[0163] mvLXA=MvLX[xNbAk][yNbAk]
[0164] refIdxA=RefIdxLX[xNbAk][yNbAk]
[0165] refPicListA=RefPicListX
[0166] Otherwise, when PredFlagLY[xNbAk][yNbAk] (where Y=!X) is equal to 1 and LongTermRefPic(currPic, currPb, refIdxLX, RefPicListX) is equal to LongTermRefPic(currPic, currPb, RefIdxLY[xNbAk][yNbAk], RefPicListY), availableFlagLXA is set to 1.
[0167] The motion vector mvLXB and the availability flag availableFlagLXB are derived in the following order of steps:
[0168] (1) The sample positions (xNbB0, yNbB0), (xNbB1, yNbB1) and (xNbB2, yNbB2) are set to (xPb+nPbW, yPb-1), (xPb+nPbW-1, yPb-1) and (xPb-1, yPb-1), respectively.
[0169] (5) When IsScaledFlagLx is equal to 0, availableFlagLXB is set to 0, and the following applies to (xNbBk, yNbBk), from (xNbB0, yNbB0) to (xNbB2, yNbB2) or until availableFlagLXB is equal to 1:
[0170] --Call the prediction block availability derivation process specified in clause 6.4.2 with the luma position (xCb,yCb), the current luma coding block size nCbS, the luma position (xPb,yPb), the luma prediction block width nPbW, the luma prediction block height nPbH, the luma position (xNbY,yNbY) set equal to (xNbBk,yNbBk), and the partition index partIdx as input, and assign the output to the prediction block availability flag availableBk.
[0171] --When availableBk equals TRUE and availableFlagLXB equals 0, the following applies:
[0172] If PredFlagLX[xNbBk][yNbBk] is equal to 1 and LongTermRefPic(currPic,currPb,refIdxLX,RefPicListX) is equal to LongTermRefPic(currPic,currPb,RefIdxLX[xNbBk][yNbBk],RefPicListX), then set availableFlagLXB equal to 1 and make the following assignments:
[0173] mvLXB=MvLX[xNbBk][yNbBk]
[0174] refIdxB=RefIdxLX[xNbBk][yNbBk]
[0175] refPicListB=RefPicListX
[0176] Otherwise, when PredFlagLY[xNbBk][yNbBk] (where Y=!X) is equal to 1 and LongTermRefPic(currPic, currPbrefIdxLX, RefPicListX) is equal to LongTermRefPic(currPic, currPb, RefIdxLY[xNbBk][yNbBk], RefPicListY), then availableFlagLXB is set equal to 1 and the following allocations are made:
[0177] mvLXB=MvLY[xNbBk][yNbBk].
[0178] Temporal Motion Vector Prediction (TMVP) is another example of motion vector prediction that includes existing implementations. The relevant parts of the existing TMVP implementation are described below.
[0179] The variables mvLXCol and availableFlagLXCol are exported as follows:
[0180] If LongTermRefPic(currPic, currPb, refIdxLX, LX) is not equal to LongTermRefPic(ColPic, colPb, refIdxCol, listCol), then both components of mvLXCol are set equal to 0 and availableFlagLXCol is set equal to 0.
[0181] Otherwise, the variable availableFlagLXCol is set to 1, and refPicListCol[refIdxCol] is set to the picture with reference index refIdxCol in the reference picture list listCol of the slice containing the prediction block colPb in the collocated picture specified by ColPic.
[0182] 2. Example Embodiments of Intra-Block Copy (IBC)
[0183] Intra-frame block copying (IBC) extends the concept of motion compensation from inter-frame coding to intra-frame coding. Figure 1 As shown in Figure 1, when IBC is applied, the current block is predicted by a reference block in the same picture. Before encoding or decoding the current block, the samples in the reference block must have been reconstructed. Although IBC is not so effective for most sequences captured by cameras, it shows significant coding gains for screen content. The reason is that there are many repeated patterns in screen content pictures, such as icons and text characters. IBC can effectively eliminate the redundancy between these overlapping patterns.
[0184] In HEVC-SCC, if the current picture is selected as a reference picture, an intra-coded coding unit (CU) can be used. In this case, the MV is renamed to a block vector (BV), and the BV always has integer pixel precision. For compatibility with the main specification HEVC, the current picture is marked as a "long-term" reference picture in the decoded picture buffer (DPB). It should be noted that similarly, in the multi-view / 3D video coding standard, the inter-view reference picture is also marked as a "long-term" reference picture.
[0185] 2.1 Example of image tagging when IBC is enabled
[0186] Semantics related to IBC in PPS pps_curr_pic_ref_enabled_flag equal to 1 specifies that pictures referencing the PPS may be included in the reference picture lists of the picture slices themselves. pps_curr_pic_ref_enabled_flag equal to 0 specifies that pictures referencing the PPS are never included in the reference picture lists of the picture slices. When not present, the value of pps_curr_pic_ref_enabled_flag is inferred to be equal to 0.
[0187] It is a bitstream conformance requirement that the value of pps_curr_pic_ref_enabled_flag shall be equal to 0 when sps_curr_pic_ref_enabled_flag is equal to 0.
[0188] The variable TwoVersionsOfCurrDecPicFlag is derived as follows:
[0189] TwoVersionsOfCurrDecPicFlag=pps_curr_pic_ref_enabled_flag&&(sample_adaptive_offset_enabled_flag||!pps_deblocking_filter_disabled_flag||deblocking_filter_override_enabled_flag)
[0190] When sps_max_dec_pic_buffering_minus1[TemporalId] is equal to 0, the value of TwoVersionsOfCurrDecPicFlag shall be equal to 0.
[0191] Decoding process. After calling the loop filtering process, the currently decoded picture is stored in an empty picture storage buffer in the DPB, the fullness of the DPB is increased by 1, and this picture is marked as "for short-term reference".
[0192] When TwoVersionsOfCurrDecPicFlag is equal to 1, the current decoded picture before the invocation of the in-loop filtering process as specified in clause F.8.7 [1] is stored in an empty picture storage buffer in the DPB, the fullness of the DPB is increased by 1, and the picture is marked as "used for long-term reference".
[0193] 3. Joint Exploration Model (JEM) Example
[0194] In some embodiments, a reference software named Joint Exploration Model (JEM) is used to explore future video coding techniques. In JEM, sub-block based prediction is used in a variety of coding tools such as affine prediction, optional temporal motion vector prediction (ATMVP), spatio-temporal motion vector prediction (STMVP), bidirectional optical flow (BIO), frame rate up conversion (FRUC), local adaptive motion vector resolution (LAMVR), overlapped block motion compensation (OBMC), local illumination compensation (LIC), and decoder side motion vector optimization (DMVR).
[0195] 3.1 Example of Affine Prediction
[0196] In HEVC, motion compensated prediction (MCP) only adopts translational motion model. However, the camera and objects may have various motions, such as zooming in / out, rotation, perspective motion, and / or other irregular motions. On the other hand, JEM applies a simplified affine transformation motion compensated prediction. Figure 2 An example of an affine motion field of a block 200 described by two control point motion vectors V0 and V1 is shown. The motion vector field (MVF) of the block 200 can be described by the following equation:
[0197]
[0198] like Figure 2 As shown, (v 0x ,v 0y ) is the motion vector of the upper left control point, and (v 1x ,v 1y ) is the motion vector of the upper right control point. In order to simplify motion compensation prediction, sub-block based affine transformation prediction can be applied. The sub-block size M×N is derived as follows:
[0199]
[0200] Here, MvPre is the motion vector fractional precision (e.g., 1 / 16 in JEM). 2x ,v 2y ) is the motion vector of the lower left control point, which is calculated according to equation (1). If necessary, M and N can be adjusted downward to make them divisors of w and h respectively.
[0201] Figure 3An example of an affine MVF for each sub-block of block 300 is shown. To derive the motion vector for each M×N sub-block, the motion vector of the center sample of each sub-block can be calculated according to equation (1) and rounded to a fractional motion vector precision (e.g., 1 / 16 in JEM). A motion compensated interpolation filter can then be applied to generate predictions for each sub-block using the derived motion vectors. After MCP, the high-precision motion vector for each sub-block is rounded and saved to the same precision as the normal motion vector.
[0202] In JEM, there are two affine motion modes: AF_INTER mode and AF_MERGE mode. For CUs with width and height greater than 8, AF_INTER mode can be applied. In the bitstream, the affine flag at the CU level is signaled to indicate whether AF_INTER mode is used. In AF_INTER mode, adjacent blocks are used to construct a pair of motion vectors {(v0,v1)|v0={v A ,v B ,v c},v1={v D ,v E}}'s candidate list.
[0203] Figure 4 An example of motion vector prediction (MVP) of block 400 in AF_INTER mode is shown. Figure 4 As shown, v0 is selected from the motion vectors of sub-blocks A, B, or C. The motion vectors of the adjacent blocks can be scaled according to the reference list. The motion vector can also be scaled according to the relationship between the picture order count (POC) referenced by the adjacent blocks, the POC referenced by the current CU, and the POC of the current CU. The method of selecting v1 from adjacent sub-blocks D and E is similar. If the number of candidate lists is less than 2, the list is filled by copying the motion vector pairs composed of each AMVP candidate. When the candidate list is greater than 2, the candidates can be first sorted according to the adjacent motion vectors (for example, based on the similarity of the two motion vectors in a pair of candidates). In some implementations, the first two candidates are retained. In some embodiments, a rate-distortion (RD) cost check is used to determine which motion vector pair candidate is selected as the control point motion vector prediction (CPMVP) of the current CU. An index indicating the position of the CPMVP in the candidate list can be issued in the bitstream. After determining the CPMVP of the current affine CU, affine motion estimation is applied, and the control point motion vector (CPMV) is found. Then, the difference between CPMV and CPMVP is signaled in the bitstream.
[0204] When a CU is applied in AF_MERGE mode, it takes the first block coded in affine mode from the valid neighboring reconstructed blocks. Figure 5A2 shows an example of the selection order of candidate blocks of the current coding unit CU 500. Figure 5A As shown, the selection order may be from the left ( 501 ), top ( 502 ), top right ( 503 ), bottom left ( 504 ) to top left ( 505 ) of the current CU 500 . Figure 5B Another example of candidate blocks of the current CU 500 in AF_MERGE mode is shown. If the adjacent lower left block 501 is encoded in affine mode, such as Figure 5B As shown, the motion vectors v2, v3 and v4 of the upper left corner, upper right corner and lower left corner of the CU containing the sub-block 501 are derived. The motion vector v0 of the upper left corner of the current CU 500 is calculated based on v2, v3 and v4. The motion vector v1 of the upper right corner of the current CU can be calculated accordingly.
[0205] After calculating the CPMV v0 and v1 of the current CU according to the affine motion model in equation (1), the MVF of the current CU can be generated. In order to determine whether the current CU is encoded using the AF_MERGE mode, when at least one neighboring block is encoded in the affine mode, an affine flag can be indicated in the bitstream.
[0206] 4. Example Method of IBC in Video Coding
[0207] Figure 6 A flow chart illustrating an exemplary method of video encoding using intra block copying. The method 600 includes, at step 610, determining whether to use a motion compensation algorithm to encode a current block of a current picture. The method 600 includes, at step 620, based on the determination, encoding the current block by selectively applying intra block copying to the current block. More generally, whether to apply intra block copying to the current block is based on whether a particular motion compensation algorithm is used to encode the current block.
[0208] Figure 7 A flow chart of another example method for video encoding using intra block copying is shown. The method 700 includes, at step 710, determining whether to encode a current block of a current picture using intra block copying. The method 700 includes, at step 720, based on the determination, encoding the current block by selectively applying a motion compensation algorithm to the current block. More generally, whether to encode the current block using a motion compensation algorithm is based on whether the current block is encoded using intra block copying.
[0209] Figure 8A flow chart of an exemplary method for video decoding using intra block copying is shown. The method 800 includes, at step 810, determining whether to use a motion compensation algorithm to decode a current block of a current picture. The method 800 includes, at step 820, based on the determination, decoding the current block by selectively applying intra block copying to the current block. More generally, whether to apply intra block copying to the current block is based on whether a particular motion compensation algorithm is used to decode the current block.
[0210] Fig. 9 A flow chart of another exemplary method for video decoding using intra block copying is shown. The method 900 includes, at step 910, determining whether to decode a current block of a current picture using intra block copying. The method 900 includes, at step 920, based on the determination, decoding the current block by selectively applying a motion compensation algorithm to the current block. More generally, whether to decode the current block using a motion compensation algorithm is based on whether the current block is decoded using intra block copying.
[0211] exist Figures 6 to 9 The methods 600, 700, 800 and 900 described in the context of may further include the step of determining whether the motion compensation algorithm is compatible with intra block copy. The compatibility of intra block copy and motion compensation algorithm for different specific motion compensation algorithms is illustrated in the following examples.
[0212] Example 1 : After determining that the current picture must be stored in a buffer for a duration corresponding to the duration of a long-term reference picture, the current picture is not marked as a "long-term" reference picture in a buffer (e.g., a decoded picture buffer). Instead, it is marked as a new type of reference picture that is different from "short-term" or "long-term". For example, it can be marked as a "current" reference picture, a "self" reference picture, a "transient" reference picture, an "intra-block-copy" reference picture, etc.
[0213] (a) Similarly, prediction (e.g., motion information prediction) between a picture of the new picture type and a short-term picture, and / or prediction (e.g., motion information prediction) between a picture of the new picture type and a long-term picture is not allowed.
[0214] (b) When prediction between a picture of the new picture type and a short / long term picture is allowed, the motion vector scaling process can be skipped.
[0215] Example 2 : It is proposed that affine prediction cannot be applied to IBC coded blocks. In this case, when the block is coded in IBC mode, the indication of affine prediction is signaled to be skipped.
[0216] (a) In one example, if at least one reference picture of the current block in the reference picture list is the current picture, the flag indicating whether affine prediction is used (also called affine_flag) is not signaled and is inferred to be 0.
[0217] (b) Alternatively, if both reference pictures of both reference lists are the current picture, affine_flag is not signaled and is inferred to be 0.
[0218] (c) Alternatively, if a block is associated with M sets of motion information (M>2), and all associated reference pictures are current pictures, then affine_flag is not signaled and is inferred to be 0.
[0219] (d) Alternatively, if the reference pictures of the current block include the current picture and other reference pictures, an affine_flag signal may be issued. In this case, affine_flag only controls whether affine prediction is used for non-IBC inter-prediction, i.e., inter-prediction not from the current picture. Some examples of this scenario are as follows:
[0220] (i) In one example, the current block is associated with two reference pictures, and only one of the reference pictures is the current picture.
[0221] (ii) In one example, the current block is associated with more than two reference pictures, and at least one reference picture is a current picture, and at least one reference picture is not a current picture.
[0222] (iii) Even if affine_flag is equal to 1, affine prediction is not used for IBC prediction where the reference picture is the same as the current picture.
[0223] (iv) Alternatively, additionally, even if affine_flag is equal to 1, affine prediction is not used for reference lists where the reference pictures for which IBC prediction is enabled are the same as the current picture.
[0224] (e) In one example, whether and how to apply affine prediction to an IBC coding block can be transmitted from the encoder to the decoder at the sequence level, picture level, slice level, coding tree unit (CTU) (also known as the largest coding unit (LCU) level), region level, CU level, or PU level. This information can be signaled in a sequence parameter set (SPS), a picture parameter set (PPS), a slice header (SH), a CTU (also known as an LCU), a region, a CU, or a PU.
[0225] Example 3 : It is proposed that IBC cannot be applied to affine predicted blocks. In this case, the IBC signaling is skipped when encoding the block using affine mode.
[0226] (a) In an example, if the affine_flag of a block is 1, then any reference picture of the current block cannot be the current picture. In another example, if the affine_flag of a block is 1, then at least one reference picture of the current block is different from the current picture.
[0227] (b) Alternatively, whether and how IBC is applied to affine predicted blocks can be transmitted from the encoder to the decoder at the sequence level, picture level, slice level, coding tree unit (CTU) level (e.g., largest coding unit (LCU) level, region level, CU level, or PU level). This information can be signaled in a sequence parameter set (SPS), a picture parameter set (PPS), a slice header (SH), a CTU (also known as an LCU), a region, a CU, or a PU.
[0228] Example 4 : In addition, it is proposed that affine prediction may be applied to IBC coded blocks. In this case, both affine and IBC instructions may be issued simultaneously. When affine prediction is applied to IBC coded blocks, the following may further apply:
[0229] (a) In one example, a control point (such as and ) can only be derived from previously decoded MVs with the current picture as reference picture. MV scaling is disabled for MVP derivation. Vice versa, for control points of blocks in case of affine prediction without IBC coding, MVP can only be derived from previously decoded MVs with a reference picture different from the current picture.
[0230] (b) In one example, the MVs at the control points explained in the “Affine Prediction Example” section are signaled with integer precision. Their MVPs should be truncated or rounded to integer pixel precision.
[0231] (c) In one example, if a control point (such as and ) is derived from adjacent MVs (such as in affine MERGE mode), the derived MV is truncated or rounded to integer pixel precision.
[0232] (d) In one example, from a control point (such as (v in Eq. (1) x ,v y The intra-block MV derived from the MV at )) is truncated or rounded to integer pixel precision.
[0233] (e) In one example, OBMC is not applied.
[0234] (f) In one example, a control point (e.g., ) has no signal and is always considered to be zero.
[0235] Listed below are some examples of the techniques described in this application. As used herein, a block may be a continuous or non-continuous collection of pixels, voxels, sub-pixels, and / or sub-voxels. For example, a block may be surrounded by straight lines, such as a 4x 4 square, a 6x 4 rectangle, or by curved lines, such as an ellipse.
[0236] As used herein, a portion of visual information may be a subset of visual information. As used herein, a coded representation may be a bitstream representing visual information that has been encoded using one of the techniques described herein. As used herein, an indication may be a flag or field in a coded representation or may be multiple separate flags or fields.
[0237] The decoding techniques used in this application can be applied by a decoder and can be implemented in hardware or software. The decoding techniques can undo everything the encoder did in reverse order. When the appropriate decoding techniques are applied to the encoded representation, the result is that visual information can be obtained.
[0238] An initial block of the plurality of blocks as used herein is a block that appears before the first block in the encoded representation.A predetermined component as used herein may be an x-axis, y-axis or z-axis component of a motion vector.
[0239] Example:
[0240] 1. As Fig.12 As shown, a visual information decoding method (1200) includes:
[0241] determining (1202) that a decoded block representing a portion of the visual information was encoded using a first encoding technique; and
[0242] decoding (1204) the encoded representation by using a first decoding technique corresponding to the first encoding technique and avoiding using a second decoding technique corresponding to the second encoding technique;
[0243] Among them, one of the first encoding technology and the second encoding technology corresponds to the intra-frame block copy (IBC) technology, and the intra-frame block copy technology uses the second block of the same video picture to encode the decoded block; and the other of the first encoding technology and the second encoding technology corresponds to the affine encoding technology, and the affine encoding technology uses an affine motion model to encode the decoded block.
[0244] 2. If Fig.13 As shown, a visual information processing method (1300) includes:
[0245] determining (1302) that a decoded block of a portion of an encoded image representing visual information was encoded using an intra block copy (IBC) technique that encodes the decoded block using a second block of the picture and an affine coding technique that encodes the decoded block using an affine motion model; and
[0246] The encoded representation is decoded (1304) using an IBC decoding technique corresponding to the IBC encoding technique and an affine decoding technique corresponding to the affine encoding technique.
[0247] 3. The method according to example 1 or 2, wherein the IBC decoding technique comprises:
[0248] Acquire multiple blocks representing the encoded picture and an indicator of use of the IBC technology; decode multiple initial blocks in the encoded picture; and after decoding the multiple initial blocks, decode a first block of the remaining blocks of the multiple blocks based on the decoded initial blocks.
[0249] 4. The method according to example 1, comprising:
[0250] Based on the determination, determining that the encoded representation of the decoded block does not include an indicator of use of a second encoding technique; and parsing the encoded representation based on the determination, for example, during the parsing process, the decoder is able to successfully parse the encoded bitstream knowing that fields associated with the avoided encoding technique will not appear in the bitstream.
[0251] 5. A video processing method, comprising:
[0252] Determining that an indicator associated with a coded picture includes an alternative type of reference picture indicator, the alternative type of reference picture indicator indicating that a coding technique applied to the coded picture is an intra block copy technique, wherein the alternative type of reference picture indicator is different from a long-term reference picture indicator and a short-term reference picture indicator, wherein a picture including the long-term reference picture indicator is stored in a memory for a first duration, and wherein a picture including the short-term reference picture indicator is stored in a memory for a second duration shorter than the first duration.
[0253] 6. The method according to example 5, comprising:
[0254] Obtaining a first indicator, which includes the long-term reference picture indicator or the long-term reference picture indicator associated with a first picture;
[0255] Obtaining a second indicator comprising a reference picture indicator of the alternative type associated with a second picture; avoiding decoding of the second picture based on the first picture; and avoiding decoding of the first picture based on the second picture.
[0256] 7. The method according to example 6, comprising:
[0257] Obtaining a first indicator, which includes the long-term reference picture indicator or the long-term reference picture indicator associated with a first picture;
[0258] obtaining a second indicator comprising a reference picture indicator of the alternative type associated with a second picture;
[0259] skipping scaling of motion vectors associated with the first picture when decoding the second picture; and
[0260] Scaling of the motion vector associated with the second picture is skipped when decoding the first picture.
[0261] 8. The method according to any one of Examples 1 to 7, comprising:
[0262] When an indicator associated with a block of the coded picture indicates use of the IBC technique, the block is decoded without applying the affine decoding technique.
[0263] 9. The method according to example 8, comprising:
[0264] Obtaining a plurality of reference pictures for decoding blocks of the coded picture comprising a plurality of blocks;
[0265] When at least one reference picture of the plurality of reference pictures includes the coded picture, the block is decoded without applying the affine decoding technique.
[0266] 10. The method according to example 8, comprising:
[0267] Obtaining a plurality of reference pictures for decoding blocks of the coded picture comprising a plurality of blocks;
[0268] In a case where a block is associated with multiple sets of motion information, wherein the multiple sets of motion information include more than two sets of motion information, and each reference picture of the multiple reference pictures is the coded picture, the block is decoded without applying the affine decoding technique.
[0269] 11. The method according to example 8, comprising:
[0270] Obtaining a plurality of reference pictures for decoding blocks of the coded picture comprising a plurality of blocks, the plurality of reference pictures comprising the coded picture and another picture in the visual information;
[0271] obtaining a first indicator indicating that the affine encoding technique is applied to the block;
[0272] The block is decoded using the affine decoding technique and the other picture in the visual information.
[0273] 12. The method of example 11, wherein the coded picture and the other picture in the visual information are the same, the method comprising: avoiding decoding the block using the affine decoding technique and the coded picture. For example, the avoiding can be performed by disabling the affine decoding technique and the coded picture in the decoding process.
[0274] 13. The method according to any one of Examples 1 to 12, comprising:
[0275] determining that an indicator associated with the coded picture indicates that the affine encoding technique is applied to the coded picture; and
[0276] In a case where the indicator associated with the encoded picture indicates that the affine encoding technique is applied to the encoded picture, the encoded picture is decoded without applying the IBC decoding technique.
[0277] 14. The method according to example 13, comprising:
[0278] Obtain one or more reference pictures for decoding a block of the coded picture, the reference picture comprising a plurality of blocks and the indicator associated with the coded picture;
[0279] In case the indicator associated with the coded picture indicates that the affine encoding technique is applied to the coded picture, it is assumed that the one or more reference pictures do not include the coded picture.
[0280] 15. The method according to example 13, comprising:
[0281] Obtain one or more reference pictures for decoding a block of the coded picture, the reference picture comprising a plurality of blocks and the indicator associated with the coded picture;
[0282] In case the indicator associated with the coded picture indicates that the affine encoding technique is applied to the coded picture, it is assumed that at least one reference picture of the one or more reference pictures is different from the coded picture.
[0283] 16. The method of any one of Examples 1 to 7, comprising:
[0284] Obtain a first indicator associated with the coded picture and a second indicator associated with the coded picture, the first indicator indicating that the affine coding technique is applied to the block, and the second indicator indicating that the IBC technique is applied to the block; and
[0285] The block of the coded picture including a plurality of blocks is decoded by applying the affine decoding technique and the IBC decoding technique to the block.
[0286] 17. The method according to example 16, comprising:
[0287] Obtaining an initial block among a plurality of blocks representing the coded picture;
[0288] decoding an initial motion vector of an initial control point associated with the initial block;
[0289] Obtaining a first block of a plurality of blocks representing the coded picture and a first indicator indicating that the IBC technique is applied to the first block;
[0290] Disable motion vector scaling; and
[0291] When motion vector scaling is disabled, a motion vector prediction (MVP) of a first control point associated with the first block is created based on the initial motion vector of the initial control point associated with the initial block.
[0292] 18. The method according to example 16 or 17, comprising:
[0293] Obtaining a first block of a plurality of blocks representing the encoded picture and a first indicator indicating that the affine encoding technique is applied to the first block;
[0294] The MVP of the first control point associated with the first block is created based on a motion vector of a control point associated with the block belonging to a picture different from the encoded picture.
[0295] 19. The method according to example 16 or 17, comprising:
[0296] Obtaining a plurality of blocks representing the coded picture;
[0297] Obtaining a motion vector for a control point associated with a block in the plurality of blocks, wherein the motion vector is signaled with integer precision; performing a motion vector prediction based on the motion vector; and rounding the motion vector prediction to integer pixel precision.
[0298] 20. The method according to example 16 or 17, comprising:
[0299] obtaining a block of a plurality of blocks representing the coded picture;
[0300] A motion vector at a control point associated with the block is derived from neighboring motion vectors at neighboring control points; and the motion vector is rounded to integer pixel precision.
[0301] 21. The method of any one of Examples 16 to 20, comprising:
[0302] Avoid overlapping block motion compensation (OBMC).
[0303] 22. The method of any one of Examples 16 to 20, comprising:
[0304] It is assumed that the predetermined component of the motion vector at the control point is a constant integer.
[0305] 23. A method for encoding visual information, comprising:
[0306] The visual information is encoded into a plurality of encoded pictures and a plurality of indicators, the plurality of indicators indicating application of one or more encoding techniques, the plurality of indicators comprising an intra-block copy (IBC) technique indicator and an affine coding technique indicator, wherein a first block of a first picture associated with the visual information is encoded using the IBC technique, and a second block of a second picture associated with the visual information is encoded using the affine coding technique, wherein the IBC technique encodes the first block of the first picture using a different block of the first picture, and the affine coding technique encodes the second block using a third picture associated with the visual information.
[0307] 24. The method of example 23, wherein the IBC technology comprises:
[0308] Dividing the first picture into a plurality of blocks;
[0309] encoding an initial block of the plurality of blocks; and
[0310] After encoding the initial block, a first block of the plurality of blocks is encoded based on the initial block.
[0311] 25. A method comprising:
[0312] An indicator of a plurality of indicators associated with an encoded picture of a plurality of encoded pictures is encoded, the indicator comprising an alternative type of reference picture indicator indicating that an encoding technique applied to the encoded picture is an intra block copy technique, wherein the alternative type of reference picture indicator is different from a long-term reference picture indicator and a short-term reference picture indicator, wherein a picture including the long-term reference picture indicator is stored in a memory for a first duration, and wherein a picture including the short-term reference picture indicator is stored in the memory for a second duration shorter than the first duration.
[0313] 26. The method according to example 25, comprising:
[0314] Obtaining a first indicator, which includes the long-term reference picture indicator or the long-term reference picture indicator associated with a first picture;
[0315] Obtaining a second indicator comprising a reference picture indicator of the alternative type associated with a second picture; avoiding encoding the second picture based on the first picture; and avoiding encoding the first picture based on the second picture.
[0316] 27. The method according to example 25, comprising:
[0317] encoding a first indicator comprising the long-term reference picture indicator or the long-term reference picture indicator associated with a first picture;
[0318] encoding a second indicator comprising a reference picture indicator of the alternative type associated with a second picture;
[0319] skipping scaling of motion vectors associated with the first picture when encoding the second picture; and
[0320] Scaling of motion vectors associated with the second picture is skipped when encoding the first picture.
[0321] 28. The method of any one of Examples 23 to 27, comprising:
[0322] Applying an IBC technique to a block of the first picture in the visual information to obtain a coded block;
[0323] encoding an indicator associated with the coded picture according to the IBC technique; and
[0324] Encoding the coding block using the affine coding technique is skipped, and an indicator indicating the affine coding technique is encoded.
[0325] 29. The method of example 28, comprising:
[0326] encoding a plurality of reference pictures used for encoding the block of the first picture;
[0327] In a case where at least one reference picture among the plurality of reference pictures includes the first picture, encoding of an indicator of use of the affine encoding technique is skipped.
[0328] 30. The method of example 28, comprising:
[0329] encoding a plurality of reference pictures used for encoding the block of the first picture;
[0330] When a block is associated with multiple sets of motion information, wherein the multiple sets of motion information include more than two sets of motion information, and each reference picture of the multiple reference pictures is the first picture, encoding of the indicator indicating the affine encoding technique is skipped.
[0331] 31. The method of Example 28, comprising:
[0332] encoding a plurality of reference pictures for encoding a block of the first picture, the plurality of reference pictures including the first picture and another picture in the visual information; encoding a first indicator indicating that the affine encoding technique is applied to the block; and applying the affine encoding technique to the block of the first picture and the another picture in the visual information.
[0333] 32. The method of example 31, wherein the coded picture in the visual information is the same as the other picture, the method comprising:
[0334] Applying the affine encoding technique to the blocks of the first picture and the another picture in the visual information is skipped.
[0335] 33. The method of any one of Examples 23 to 32, comprising:
[0336] applying the affine encoding technique to the second picture associated with the visual information; and skipping encoding of an indicator including the IBC technique.
[0337] 34. The method according to example 33, comprising:
[0338] encoding one or more reference pictures used to encode blocks of the second picture, wherein the one or more reference pictures do not include the second picture; and
[0339] An indicator among the plurality of indicators indicating that the second picture is encoded using the affine encoding technique is encoded.
[0340] 35. The method of example 33, comprising:
[0341] encoding one or more reference pictures used for encoding blocks of the second picture, wherein at least one reference picture of the one or more reference pictures is different from the second picture;
[0342] An indicator among the plurality of indicators indicating that the second picture is encoded using the affine encoding technique is encoded.
[0343] 36. The method of any one of Examples 23 to 27, comprising:
[0344] Encoding a block of the first picture using the IBC technique and the affine coding technique;
[0345] A first indicator and a second indicator associated with the block of the first picture are encoded, the first indicator indicating that the IBC technique was used to encode the block, and the second indicator indicating that the affine encoding technique was used to encode the block.
[0346] 37. The method of example 36, comprising:
[0347] Dividing the first picture into a plurality of blocks;
[0348] encoding a motion vector of a control point associated with an initial block of the plurality of blocks; and
[0349] encoding a motion vector of a control point associated with a first block of the plurality of blocks based on the motion vector of the control point associated with the initial block; and disabling motion vector scaling.
[0350] 38. The method of example 36 or 37, comprising:
[0351] dividing the second picture into a second plurality of blocks, and dividing a third picture in the visual information into a third plurality of blocks, wherein the third picture is different from the second picture;
[0352] encoding a motion vector for a control point associated with a second block of the second plurality of blocks; and
[0353] A motion vector for a control point associated with a third block of the third plurality of blocks is encoded based on the motion vector for the control point associated with the second block.
[0354] 39. The method of example 36 or 37, comprising:
[0355] Dividing the first picture into a plurality of blocks;
[0356] encoding a block of the plurality of blocks using the affine encoding technique;
[0357] encoding motion vectors of control points associated with the blocks in the plurality of blocks using integer precision;
[0358] The motion vector prediction is encoded based on the motion vector by rounding the motion vector prediction to integer pixel precision.
[0359] 40. The method of any one of Examples 36 to 39, comprising:
[0360] Dividing the first picture into a plurality of blocks;
[0361] encoding a block of the plurality of blocks using the affine encoding technique;
[0362] encoding motion vectors of control points associated with the blocks in the plurality of blocks using integer precision;
[0363] The motion vector of the point within the block is encoded based on the motion vector of the control point associated with the block by rounding the motion vector of the point within the block to integer pixel precision.
[0364] 41. The method of any one of Examples 36 to 40, comprising:
[0365] Avoid applying Overlapped Block Motion Compensation (OBMC).
[0366] 42. The method of any one of Examples 36 to 40, comprising:
[0367] Encoding of predetermined components of the motion vector at the control point is skipped.
[0368] 43. The method of any one of Examples 1 to 42, comprising:
[0369] An indicator is transmitted between an encoder and a decoder, the indicator indicating whether and how the affine coding technique is applied to a block encoded by the IBC technique at a sequence level, a picture level, a slice level, a coding tree unit (CTU), a region level, a CU level, or a PU level.
[0370] 44. The method according to example 43, comprising:
[0371] The indicator is transmitted at a sequence parameter set (SPS), a picture parameter set (PPS), a slice header (SH), a slice group header, a CTU, a region, a CU, or a PU.
[0372] 45. A video processing device comprising a processor configured to implement one or more of the methods of Examples 1 to 44. In some embodiments, the video processing device may be a video encoder. In some embodiments, the video processing device may be a video decoder. In some embodiments, the video processing device may be a video transcoder.
[0373] 46. A computer readable medium having stored thereon processor executable code which, when executed, causes a processor to implement the method of one or more of Examples 1 to 44.
[0374] 5. Example Embodiments of the Disclosed Technology
[0375] Fig.10 1 is a block diagram illustrating an example of a computer system or other control device 1000 that can be used to implement various portions of the disclosed technology, including (but not limited to) methods 600, 700, 800, 900, 1200, and 1300. Fig.10 In the embodiment, computer system 1000 includes one or more processors 1005 and memory 1010 connected by interconnect 1025. Interconnect 1025 can represent any one or more separate physical buses, point-to-point connections, or both connected by appropriate bridges, adapters, or controllers. Thus, interconnect 1025 can include, for example, a system bus, a peripheral component interconnect (PCI) bus, a hypertransport or industry standard architecture (ISA) bus, a small computer system interface (SCSI) bus, a universal serial bus (USB), an IIC (I2C) bus, or an Institute of Electrical and Electronics Engineers (IEEE) standard 674 bus (sometimes referred to as "Firewire").
[0376] The processor 1005 may include a central processing unit (CPU) to control the overall operation of, for example, the host. In some embodiments, the processor 1005 implements this by executing software or firmware stored in the memory 1010. The processor 1005 may be or may include one or more programmable general or special microprocessors, digital signal processors (DSPs), programmable controllers, application specific integrated circuits (ASICs), programmable logic devices (PLDs), etc., or a combination of these devices.
[0377] The memory 1010 may be or include the main memory of the computer system. The memory 1010 represents any suitable form of random access memory (RAM), read-only memory (ROM), flash memory, etc., or a combination of these devices. In use, the memory 1010 may include, among other things, a set of machine instructions that, when executed by the processor 1005, cause the processor 1005 to perform operations to implement embodiments of the disclosed technology.
[0378] Also connected to processor 1005 via interconnect 1025 is (optional) network adapter 1015. Network adapter 1015 provides computer system 1000 with the ability to communicate with remote devices (such as storage clients and / or other storage servers) and may be, for example, an Ethernet adapter or a Fibre Channel adapter.
[0379] Fig.11 A block diagram of an example embodiment of a mobile device 1100 that can be used to implement various parts of the disclosed technology is shown, including (but not limited to) methods 600, 700, 800, 900, 1200 and 1300. The mobile device 1100 can be a laptop, a smart phone, a tablet, a camera, or other device capable of processing video. The mobile device 1100 includes a processor or controller 1101 to process data, and a memory 1102 that communicates with the processor 1101 to store and / or buffer data. For example, the processor 1101 may include a central processing unit (CPU) or a microcontroller unit (MCU). In some implementations, the processor 1101 may include a field programmable gate array (FPGA). In some implementations, the mobile device 1100 includes or communicates with a graphics processing unit (GPU), a video processing unit (VPU) and / or a wireless communication unit to implement various visual and / or communication data processing functions of a smart phone device. For example, the memory 1102 may include and store processor executable code that, when executed by the processor 1101, configures the mobile device 1100 to perform various operations, such as receiving information, commands and / or data, processing information and data, and sending or providing the processed information / data to another device, such as an actuator or an external display.
[0380] To support the various functions of the mobile device 1100, the memory 1102 can store information and data, such as instructions, software, values, pictures, and other data processed or referenced by the processor 1101. For example, various types of random access memory (RAM) devices, read-only memory (ROM) devices, flash memory devices, and other suitable storage media can be used to implement the storage function of the memory 1102. In some embodiments, the mobile device 1100 includes an input / output (I / O) unit 1103 to interface the processor 1101 and / or the memory 1102 with other modules, units, or devices. For example, the I / O unit 1103 can interface with the processor 1101 and the memory 1102 to utilize various wireless interfaces compatible with typical data communication standards, for example, between one or more computers in the cloud and user devices. In some implementations, the mobile device 1100 can interface with other devices using a wired connection through the I / O unit 1103. The mobile device 1100 may also interface with other external interfaces (e.g., data storage) and / or a visual or audio display device 1104 to retrieve and transmit data and information that may be processed by the processor, stored in the memory, or displayed on the display device 1104 or an output unit of an external device. For example, the display device 1104 may display a video frame including blocks (CU, PU, or TU) based on whether a motion compensation algorithm is used and intra-block copying is applied according to the disclosed technology.
[0381] In some embodiments, a video decoder device may implement a video decoding method in which intra block copying as described herein is used for video decoding. The method may be similar to methods 600, 700, 800, and 900 described above.
[0382] In some embodiments, a decoder-side method of video decoding may use intra-block copying to improve video quality by using a motion compensation algorithm to determine whether a current block of a current picture is to be decoded, and based on the determination, decoding the current block by selectively applying intra-block copying to the current block.
[0383] In other embodiments, a decoder-side method of video decoding may use intra-block copying to improve video quality by determining whether to decode a current block of a current picture using intra-block copying, and based on the determination, decoding the current block by selectively applying a motion compensation algorithm to the current block.
[0384] In some embodiments, the video decoding method can be implemented using a decoding device implemented on a hardware platform, such as Fig.10 and Fig.11 described.
[0385] Below are the improvements measured by incorporating IBC into VTM-1.0, the reference software for the video coding standard called Versatile Video Coding (VVC). VTM stands for VVC Test Model.
[0386]
[0387] In the above table, "Y", "U", and "V" represent colors in the YUV color encoding system, which encodes color pictures or videos with human perception in mind. EncT and DecT represent the ratio of encoding and decoding time using IBC to encoding and decoding time without IBC, respectively. Specifically,
[0388] EncT = test encoding time (TestEncodingTime) / (anchorEncodingTime)
[0389] DecT = test encoding time (TestDecodingTime) / (anchorDecodingTime)
[0390] The various categories (such as A1, A2, etc.) represent a set of standard video sequences used to test the performance of various video coding techniques. The negative percentages under the "Y", "U", and "V" columns represent the bit rate savings when IBC is added to VTM-1.0. The percentages over 100% under the EncT and DecT columns represent how much slower encoding / decoding is with IBC than without IBC. For example, 150% means that encoding / decoding with IBC is 50% slower than encoding / decoding without IBC. The percentages below 100% represent how much faster encoding / decoding is with IBC than without IBC. The two categories shown in the above table (category F and category SCC) show bit rate savings of more than 3%.
[0391] From the above, it should be understood that for ease of illustration, specific embodiments of the technology disclosed in the present invention have been described herein, but various modifications may be made without departing from the scope of the present invention. Therefore, the technology disclosed in the present invention is not limited except as defined in the claims.
[0392] The implementation and functional operation of the subject matter described in this patent document can be implemented in various systems, digital electronic circuits, or computer software, firmware or hardware, including the structures disclosed in this specification and their structural equivalents, or a combination of one or more thereof. The implementation of the subject matter described in this specification can be implemented as one or more computer program products, that is, one or more modules of computer program instructions encoded on a tangible and non-volatile computer-readable medium for data processing devices to execute or control the operation of the data processing device. The computer-readable medium can be a machine-readable storage device, a machine-readable storage substrate, a storage device, a material composition that affects a machine-readable propagation signal, or a combination of one or more thereof. The term "data processing unit" or "data processing device" includes all devices, equipment and machines for processing data, including, for example, a programmable processor, a computer or a multiprocessor or a computer group. In addition to hardware, the device may also include code that creates an execution environment for a computer program, for example, code constituting processor firmware, a protocol stack, a database management system, an operating system, or a combination of one or more thereof.
[0393] A computer program (also referred to as a program, software, software application, script, or code) may be written in any form of programming language (including compiled or interpreted languages) and may be deployed in any form, including as a stand-alone program or as a module, component, subroutine, or other unit suitable for use in a computing environment. A computer program does not necessarily correspond to a file in a file system. A program may be stored in a portion of a file that holds other programs or data (e.g., one or more scripts stored in a markup language document), in a single file dedicated to the program, or in multiple coordinated files (e.g., files that store one or more modules, subroutines, or portions of code). A computer program may be deployed for execution on one or more computers that are located at one site or distributed across multiple sites and interconnected by a communications network.
[0394] The processes and logic flows described in this specification may be performed by one or more programmable processors executing one or more computer programs to perform functions by operating on input data and generating output. The processes and logic flows may also be performed by special purpose logic circuits, and the apparatus may also be implemented as special purpose logic circuits, such as FPGAs (field programmable gate arrays) or ASICs (application specific integrated circuits).
[0395] For example, processors suitable for executing computer programs include general and special purpose microprocessors, and any one or more of any type of digital computer. Typically, the processor will receive instructions and data from a read-only memory or a random access memory or both. The basic elements of a computer are a processor that executes instructions and one or more storage devices that store instructions and data. Typically, a computer will also include one or more mass storage devices for storing data, such as magnetic disks, magneto-optical disks, or optical disks, or be coupled to one or more mass storage devices by operation to receive data from them or transfer data to one or more mass storage devices, or both. However, a computer does not necessarily have such a device. Computer-readable media suitable for storing computer program instructions and data include all forms of non-volatile memory, media, and memory devices, including, for example, semiconductor memory devices, such as EPROM, EEPROM, and flash memory devices. The processor and memory can be supplemented by, or incorporated into, a dedicated logic circuit.
[0396] This specification and drawings are intended to be regarded as exemplary only, where exemplary refers to examples. As used herein, the singular forms "a", "an", and "the" shall include the plural forms as well, unless the context clearly indicates otherwise. In addition, the use of "or" is intended to include "and / or" unless the context clearly indicates otherwise.
[0397] Although this patent document contains many details, they should not be construed as limitations on the scope of any invention or the claims, but rather as descriptions of features of particular embodiments of particular inventions. Certain features described in this patent document in the context of separate embodiments may also be implemented in combination in a single embodiment. Conversely, various functions described in the context of a single embodiment may also be implemented separately in multiple embodiments, or in any suitable subcombination. In addition, although the above-mentioned features may be described as working in certain combinations, or even initially claimed to be so, in some cases, one or more features in the claim combination may be deleted from the combination, and the claim combination may be directed to subcombinations or variations of subcombinations.
[0398] Likewise, although operations are described in a particular order in the drawings, this should not be understood as requiring that such operations be performed in the particular order or order shown, or that all illustrated operations be performed, in order to achieve the desired results. In addition, the separation of various system components in the embodiments described in this patent document should not be understood as requiring such separation in all embodiments.
[0399] Only a few implementations and examples are described, and other implementations, enhancements, and variations can be made based on what is described and illustrated in this patent document.
Claims
1. A visual information encoding and decoding method, comprising: For conversion between a current video block of a video and a bitstream of the video, determining that a current video block encoded and representing a portion of the visual information is encoded and decoded using a first technique; as well as performing the conversion by using the first technique and avoiding the use of a second technique; Wherein, one of the first technique and the second technique corresponds to an intra-block copy (IBC) technique for encoding and decoding a current video block using sample values within the same video picture; and the other of the first technique and the second technique corresponds to an affine encoding and decoding technique for encoding and decoding a current video block using an affine motion model; In the affine encoding and decoding technology, the current video block is divided into a plurality of sub-blocks, and the plurality of sub-blocks are encoded and decoded using an affine motion model and a control point motion vector CPMV, and the CPMV is obtained according to a candidate list of the current video block, The determining that the current video block is encoded and decoded using the first technology is determined according to a usage indicator of the first technology, and the usage indicator of the first technology does not indicate whether to avoid using the second technology, and When the current video block uses the first technology, a bitstream of the video does not include a usage indicator that the second technology is used for the current video block.
2. The method according to claim 1, wherein: The first technology is the IBC technology, and the second technology is the affine coding technology; or The first technology is the affine coding technology, and the second technology is the IBC technology.
3. The method according to claim 1 or 2, wherein: At least one candidate in the candidate list of the current video block is obtained according to a motion vector of a neighboring block of the current video block.
4. The method according to claim 1 or 2, wherein: The converting includes encoding the current video block into the bitstream.
5. The method according to claim 1 or 2, wherein: The converting includes decoding the current video block from the bitstream.
6. The method according to claim 1 or 2, comprising: In response to an indicator associated with the current video block signaling use of the IBC technique, performing conversion without applying the affine coding technique; or In response to an indicator associated with the current video block signaling use of the affine coding technique, converting is performed without applying the IBC technique.
7. An apparatus for processing video data, comprising a processor and a non-transitory memory having instructions thereon, wherein: When the instructions are executed by the processor, the processor implements the following method steps: For conversion between a current video block of a video and a bitstream of the video, determining that a current video block being encoded representing a portion of the visual information is encoded using a first technique; as well as performing the conversion by using the first technique and avoiding the use of a second technique; Wherein, one of the first technique and the second technique corresponds to an intra-block copy (IBC) technique for encoding and decoding a current video block using sample values within the same video picture; and the other of the first technique and the second technique corresponds to an affine encoding and decoding technique for encoding and decoding a current video block using an affine motion model; In the affine encoding and decoding technology, the current video block is divided into a plurality of sub-blocks, and the plurality of sub-blocks are encoded and decoded using an affine motion model and a control point motion vector CPMV, and the CPMV is obtained according to a candidate list of the current video block, The determining that the current video block is encoded and decoded using the first technology is determined according to a usage indicator of the first technology, and the usage indicator of the first technology does not indicate whether to avoid using the second technology, and When the current video block uses the first technology, a bitstream of the video does not include a usage indicator that the second technology is used for the current video block.
8. A non-transitory computer-readable storage medium storing instructions that cause a processor to: For conversion between a current video block of a video and a bitstream of the video, determining that a current video block encoded representing a portion of the visual information is encoded using a first technique; and performing the conversion by using the first technique and avoiding the use of a second technique; in, One of the first technique and the second technique corresponds to an intra-block copy (IBC) technique for encoding and decoding a current video block using sample values within the same video picture; and the other of the first technique and the second technique corresponds to an affine encoding and decoding technique for encoding and decoding a current video block using an affine motion model; In the affine encoding and decoding technology, the current video block is divided into a plurality of sub-blocks, and the plurality of sub-blocks are encoded and decoded using an affine motion model and a control point motion vector CPMV, and the CPMV is obtained according to a candidate list of the current video block, The determining that the current video block is encoded and decoded using the first technology is determined according to a usage indicator of the first technology, and the usage indicator of the first technology does not indicate whether to avoid using the second technology, and When the current video block uses the first technology, a bitstream of the video does not include a usage indicator that the second technology is used for the current video block.
9. A method for storing a bitstream of a video, comprising: For a current video block of the video, determining that the current video block being encoded representing a portion of the visual information is encoded using a first technique; generating the bitstream by using the first technique and avoiding using a second technique; as well as storing the bitstream in a non-transitory computer-readable recording medium, Wherein, one of the first technique and the second technique corresponds to an intra-block copy (IBC) technique for encoding and decoding a current video block using sample values within the same video picture; and the other of the first technique and the second technique corresponds to an affine encoding and decoding technique for encoding and decoding a current video block using an affine motion model; In the affine encoding and decoding technology, the current video block is divided into a plurality of sub-blocks, and the plurality of sub-blocks are encoded and decoded using an affine motion model and a control point motion vector CPMV, and the CPMV is obtained according to a candidate list of the current video block, The determining that the current video block is encoded and decoded using the first technology is determined according to a usage indicator of the first technology, and the usage indicator of the first technology does not indicate whether to avoid using the second technology, and When the current video block uses the first technology, a bitstream of the video does not include a usage indicator that the second technology is used for the current video block.
Citation Information
Cited By
Interaction between IBC and affine
US12407835B2
Simplified history based motion vector prediction
US12764273B2