Signaling of global motion vectors in image headers

By extracting and using the reference frame list header of global motion compensation in the decoder, determining and applying the global motion model, the problem of low global motion efficiency in the prior art is solved, and the compression efficiency and decoding quality of video encoding are improved.

CN120302057APending Publication Date: 2025-07-11DOLBY INTERNATIONAL AB
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202510285218.4
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2019-04-25
Filing Date
2020-04-24
Publication Date
2025-07-11

AI Technical Summary

Technical Problem

Existing video encoding technology is inefficient when handling global motion, resulting in poor quality of decompressed videos, and high complexity of encoding and decoding algorithms, which are susceptible to data loss and errors.

Method used

By receiving the bit stream in the decoder, extracting the global motion compensation reference frame list header, determining the global motion model of the current block, and using the model to decode the current block, using the global motion vector to improve compression efficiency.

Benefits of technology

It improves the compression efficiency of video encoding, reduces the transmission amount of motion vector information, enhances the accuracy of encoding and decoding quality, and reduces the encoding complexity.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN120302057A_ABST
    Figure CN120302057A_ABST
Patent Text Reader

Abstract

A decoder includes circuitry configured to receive a bitstream, extract a header including a list of reference frames available for global motion compensation, determine a global motion model for a current block using the header, the global motion relative to reference frames contained in the list of reference frames, and decode the current block using the global motion model. Related apparatus, systems, techniques, and articles of manufacture are also described.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] Divisional Application

[0002] This application is a divisional application of U.S. application Ser. No. 202080045922.8, filed Apr. 24, 2020, entitled "Signaling of Global Motion Vectors in Image Headers".

[0003] Cross - Reference to Related Applications

[0004] This application claims priority to U.S. Provisional Patent Application Ser. No. 62 / 838,517, filed Apr. 25, 2019, and entitled "Signaling of Global Motion Vectors in Image Headers", which are hereby incorporated by reference in their entirety. Technical Field

[0005] The present invention generally relates to the field of video compression. In particular, the present invention relates to the signaling of global motion vectors relative to available reference frames. Background Art

[0006] A video codec may include electronic circuitry or software for compressing or decompressing digital video. It can convert uncompressed video into a compressed format and vice versa. In the case of video compression, the device that compresses the video (and / or performs certain functions of that compressed video device) is typically referred to as an encoder, while the device that decompresses the video (and / or performs certain functions of that compressed video device) is referred to as a decoder.

[0007] The format of the compressed data may conform to standard video compression specifications. The compression may be lossy because the compressed video lacks some of the information present in the original video. As a result, the quality of the decompressed video may be lower than that of the original uncompressed video since there is not enough information to precisely reconstruct the original video.

[0008] There may be complex relationships between video quality, the amount of data used to represent the video (e.g., determined by the bit rate), the complexity of the encoding and decoding algorithms, the sensitivity to data loss and errors, ease of editing, random access, end - to - end latency (e.g., delay), and so on.

[0009] Motion compensation can include a method that predicts a video frame or a portion of a video frame, such as a previous and / or future frame, of a given reference frame by calculating the motion of an object in a camera and / or video. It can be used for encoding and decoding video data for video compression, such as encoding and decoding using the Moving Picture Experts Group (MPEG)-2 (also known as Advanced Video Coding (AVC) and H.264) standard. Motion compensation can describe an image based on the transformation from a reference image to the current image. When compared with the current image, the reference image can be previous in time, and when compared with the current image, the reference image can be future. Compression efficiency can be improved when an image can be precisely synthesized from previously transmitted and / or stored images. Summary of the Invention

[0010] In one aspect, a decoder includes circuitry configured to receive a bitstream, extract a header including a reference frame list usable for global motion compensation, determine a global motion model for a current block using the header, the global motion relative to the reference frames included in the reference frame list, and decode the current block using the global motion model.

[0011] In another aspect, a method includes receiving, by a decoder, a bitstream. The method includes extracting a header that includes a reference frame list usable for global motion compensation. The method includes determining a global motion model for a current block using the header, the global motion relative to the reference frames included in the reference frame list. The method includes decoding the current block using the global motion model.

[0012] Details of one or more variations of the subject matter described herein are set forth in the accompanying drawings and the following description. Other features and advantages of the subject matter described herein will be apparent from the specification and drawings, and from the claims. Brief Description of the Drawings

[0013] To illustrate the invention, the drawings show various aspects of one or more embodiments of the invention. However, it is to be understood that the invention is not limited to the exact arrangements and instrumentalities shown in the drawings, wherein:

[0014] Figure 1 is a motion vector diagram illustrating an example frame with global and local motion;

[0015] Figure 2 is a process flow diagram according to some example implementations of the current subject matter;

[0016] Figure 3 is a system block diagram of an example decoder according to some example implementations of the current subject matter;

[0017] Figure 4 is a process flow diagram according to some example implementations of the current subject matter;

[0018] Figure 5 is a system block diagram of an example encoder according to some example implementations of the current subject matter; and

[0019] Figure 6 is a block diagram of a computing system that can be used to implement any one or more of the methods disclosed herein and any one or more portions thereof.

[0020] The drawings are not necessarily to scale and may be illustrated by broken lines, diagrammatic representations, and partial views. In some instances, details that are not necessary for an understanding of the embodiments or that render other details difficult to perceive may have been omitted. Like reference numerals in the various drawings denote like elements. Detailed Description

[0021] Global motion in a video refers to motion that occurs across an entire frame. Global motion can be caused by camera motion; for example, camera pan and zoom can produce motion in a frame that generally affects the entire frame. Motion present in a portion of the video can be referred to as local motion. Local motion can be caused by moving objects in the scene; for example, but not limited to, an object moving from left to right in the scene. A video can contain a combination of local and global motion. Some implementations of the current subject matter can provide an efficient method for communicating global motion to a decoder and for using global motion vectors to improve coding efficiency.

[0022] Figure 1 is a diagram showing motion vectors for an example frame 100 having global and local motion. Frame 100 can include a plurality of pixel blocks shown as squares and associated motion vectors shown as arrows. A square (e.g., a pixel block) having an arrow pointing upward and to the left represents a block having what can be considered global motion, and squares (indicated by 104) having arrows pointing in other directions indicate blocks having local motion. In Figure 1In the example shown, many blocks have the same global motion. Signaling the global motion in the header (e.g., Picture Parameters Set (PPS) or Sequence Parameters Set (SPS)) and using the signal for global motion can reduce the motion vector information required for the blocks and can result in improved prediction. Although, for illustrative purposes, the examples described below relate to determining and / or applying global or local motion vectors at the block layer, global motion vectors can be determined and / or applied for any region of the frame and / or image and / or for the entire frame and / or image, where the region includes a region composed of multiple blocks, a region defined by any geometric form, such as but not limited to a region defined by geometric and / or exponential coding, wherein one or more lines and / or curves defining the shape can be angled and / or curved. Although signaling is described herein as being performed at the frame layer and / or in the header and / or parameter set of the frame, the signaling can alternatively or additionally be performed at the sub-image layer, where the sub-image can include any region of the frame and / or image, as described above.

[0023] As an example, and still referring to Figure 1 a motion vector (MV) having two components MV x and MV y can be used to describe simple translational motion, where the MV x and MV y describe the displacement of a block and / or pixel in the current frame. Affine motion vectors can be used to describe more complex motions such as rotation, scaling, and warping, where an “affine motion vector” as used in the present disclosure is a vector that describes a uniform displacement of a set of pixels or points represented in a video image and / or image, such as a set of pixels that illustrate an object moving on a view in a video without changing its appearance shape during the motion. Some methods of video encoding and / or decoding can use a 4-parameter or 6-parameter affine model, which is used for motion compensation in inter-image coding.

[0024] For example, the six-parameter affine motion can be:

[0025] x’ = ax + by + c

[0026] y’ = dx + ey + f

[0027] The four-parameter affine motion can be described as:

[0028] x’ = ax + by + c

[0029] y’ = -bx + ay + f

[0030] where (x, y) and (x', y') are pixel positions in the current image and the reference image respectively; a, b, c, d, e, and f are parameters of the affine motion model.

[0031] Still referring to Figure 1 , the parameters used to describe the affine motion can be signaled to the decoder for applying affine motion compensation in the decoder. In some methods, the motion parameters can be explicitly signaled or by signaling translational control point motion vectors (CPMVs) and then deriving the affine motion parameters from the translational motion vectors. Two control point motion vectors (CPMVs) can be used to derive the affine motion parameters for a four-parameter affine motion model, and three control point translational motion vectors (CPMVs) can be used to obtain the parameters of a six-parameter motion model. Signaling the affine motion parameters using control point motion vectors can allow the use of an efficient motion vector coding method to signal the affine motion parameters.

[0032] Continuing to refer to Figure 1 , some modern video compression techniques can use multiple reference frames in inter-frame prediction. When there are multiple reference frames, the global motion relative to the available reference frames can be signaled to apply motion compensation more efficiently and improve the compression efficiency. The list of available reference frames can be saved in frame list List0. The frames in the list can be indexed according to their order relative to the current frame. When encoding the current image, all available reference frames can be indexed in List0. Global motion parameters can be specified for all available reference frames. The presence or absence of global motion relative to the reference frame list can be signaled; this can allow an efficient signaling of the global motion information.

[0033] For example, still referring to Figure 1 , Table 1 shows a new PPS that has global motion parameters for one or more frames in the reference image list. In the example of Table 1, up to 16 reference images can be signaled. For each available reference frame, the presence of global motion can be signaled. For all frames with global motion, the global motion parameters can be encoded as shown in Table 1. If no prediction block in the current image uses the global motion from a previously encoded frame available for reference, the corresponding global motion parameters may not be encoded. At the encoder side, if the PPS has to be updated after encoding the current image, this may cause frame delay. Alternatively, an efficient coding method may be able to predict which available reference frames are not suitable for global motion compensation and remove such frames from the PPS. Table 1:

[0034]

[0035]

[0036] In one embodiment, still referring to Figure 1 , the sps_affine_enabled_flag in the PPS and / or SPS may specify whether motion compensation based on an affine model can be used for inter-frame prediction. If sps_affine_enabled_flag = 0, the syntax may be constrained such that motion compensation based on an affine model is not used in the post-encoded video sequence (CLVS), and the inter_affine_flag and cu_affine_type_flag may not be present in the coding unit syntax of the CLVS. Otherwise (sps_affine_enabled_flag = 1), motion compensation based on an affine model may be used in the CLVS.

[0037] Continuing to refer to Figure 1 , the sps_affine_type_flag in the PPS and / or SPS may specify whether motion compensation based on a 6-parameter affine model can be used for inter-frame prediction. If sps_affine_type_flag = 0, the syntax may be constrained such that motion compensation based on a 6-parameter affine model is not used in the CLVS, and the cu_affine_type_flag may not be present in the coding unit syntax of the CLVS. Otherwise (sps_affine_type_flag = 1), motion compensation based on a 6-parameter affine model may be used in the CLVS. When it is not present, it can be inferred that the value of sps_affine_type_flag is equal to 0.

[0038] Accordingly, still referring to Figure 1 , some implementations of the current subject matter may include leveraging global motion between the current frame and one of multiple reference frames. Which reference frame to use may be explicitly signaled (e.g., in the PPS). In some implementations, if the reference frame to be leveraged is not explicitly signaled, then the reference frame to be leveraged may be the frame immediately preceding the current frame. This approach may achieve a more accurate motion representation (e.g., smaller motion vector residuals) and smaller pixel residuals.

[0039] Figure 2 is a process flow diagram that illustrates an exemplary process 200 that leverages global motion between the current frame and one of multiple reference frames.

[0040] In step 205, and still referring to Figure 2, the decoder receives a bitstream. The current block may be included within the bitstream received by the decoder. The bitstream may include, for example, data found in a bitstream that is an input to the decoder when using data compression. The bitstream may contain information necessary for decoding the video. Receiving may include extracting and / or parsing the block and associated signal information from the bitstream. In some implementations, the current block may include a coding tree unit (CTU), a coding unit (CU), or a prediction unit (PU).

[0041] In step 210, continuing reference Figure 2 , a header may be extracted. The header may contain a reference frame list for global motion compensation. In step 215, the global motion model for the current block may be determined using the header. The global motion may be relative to a reference frame included in the reference coordinate series list. In step 220, the current block may be decoded using the global motion model.

[0042] Figure 3 is a system block diagram that illustrates an exemplary decoder 300 that is capable of decoding a bitstream 328 using global motion between a current frame and one of a number of reference frames. The decoder 300 may include an entropy decoder processor 304, an inverse quantization and inverse transform processor 308, a deblocking filter 312, a frame buffer 316, a motion compensation processor 320, and an intra prediction processor 324.

[0043] In operation, and further reference Figure 3 , the bitstream 328 may be received by the decoder 300 and input to the entropy decoder processor 304, which entropy decodes a portion of the bitstream into quantization coefficients. The quantization coefficients may be provided to the inverse quantization and inverse transform processor 308, which may perform inverse quantization and inverse transform to create a residual signal that may be added, depending on the processing mode, to the output of the motion compensation processor 320 or the intra prediction processor 324. The outputs of the motion compensation processor 320 and the intra prediction processor 324 may include a block prediction based on previously decoded blocks. The sum of the prediction and the residual may be processed by the deblocking filter 630 and stored in the frame buffer 640.

[0044] Figure 4is a process flow diagram that illustrates an exemplary embodiment of a process 400 for encoding a video using INSERT in accordance with some aspects disclosed herein. The process 400 can reduce encoding complexity while improving compression efficiency. At step 405, a video frame can undergo an initial block partitioning, which can be implemented, for example, using a tree-structured macroblock partitioning scheme that can include partitioning an image frame into coding tree units (CTUs) and coding units (CUs). At step 410, the global motion of the current block can be determined, including determining a reference frame from among a plurality of available reference frames. At step 415, the global motion information and the block can be encoded and included in a bitstream. The encoded information can include an index of the list of available reference frames. For example, the encoding can include utilizing inter-frame prediction and intra-frame prediction modes.

[0045] Figure 5 is a system block diagram that illustrates a non-limiting example of a video encoder 500 capable of exploiting global motion between a current frame and one of a plurality of reference frames. An example video encoder 500 can receive an input video 504, which can be initially partitioned or divided according to a tree-structured macroblock partitioning scheme, such as, for example, a quadtree plus binary tree. Examples of tree-structured macroblock partitioning schemes can include partitioning an image frame into large block elements called coding tree units (CTUs). In some implementations, each CTU can be further divided into one or more sub-blocks called coding units (CUs). The end result of this partitioning can include a set of sub-blocks called prediction units (PUs). Transform units (TUs) can also be used.

[0046] Still referring to Figure 5 , the example video encoder 500 can include an intra-frame prediction processor 415, a motion estimation / compensation processor 512 (also referred to as an inter-frame prediction processor) capable of supporting global motion between a current frame and one of a plurality of reference frames, a transform / quantization processor 516, an inverse quantization / inverse transform processor 520, a loop filter 524, a decoded picture buffer 528, and / or an entropy coding processor 532. Bitstream parameters can be input to the entropy coding processor 532 for inclusion in an output bitstream 536.

[0047] In operation, and still referring to Figure 5, for each block of the 504 frames of the input video, it can be determined whether to process the block via intra-image prediction or using motion estimation / compensation. The block can be provided to the intra-prediction processor 508 or the motion estimation / compensation processor 512. If the block is to be processed via intra-prediction, the intra-prediction processor 508 can perform processing to output a predicted value. If the block is to be processed via motion estimation / compensation, then if applicable, the motion estimation / compensation processor 512 can perform processing including using global motion between the current frame and one of a plurality of reference frames.

[0048] Further reference Figure 5 , a residual can be formed by subtracting the predicted value from the input video. The residual can be received by the transform / quantization processor 516, which can perform transform processing (e.g., Discrete Cosine Transform (DCT)) to produce quantizable coefficients. The quantized coefficients and any associated signal information can be provided to the entropy coding processor 532 for entropy coding and included in the output bitstream 536. The entropy coding processor 532 can support the coding of signal information related to coding the current block. Additionally, the quantized coefficients can be provided to the inverse quantization / inverse transform processor 520, which reproduces pixels that can be combined with predictors and processed by the loop filter 524. The output of the loop filter 524 can be stored in the decoded image buffer 528 for use by the motion estimation / compensation processor 512, which can utilize global motion between the current frame and one of a plurality of reference frames.

[0049] Still referring Figure 5 , although some variations have been described in detail above, other modifications or additions are also possible. For example, in some implementations, the current block can include any symmetric block (8x8, 16x16, 32x32, 64x64, 128x128, etc.) and any asymmetric block (8x4, 16x8, etc.).

[0050] Continuing to refer Figure 5 , in some implementations, a Quadtree Plus Binary Decision (QTBT) can be implemented. In QTBT, at the coding tree unit layer, the partitioning parameters of the QTBT are dynamically derived to adapt to local characteristics without transmitting any overhead. Subsequently, at the coding unit layer, the joint classifier decision tree structure can eliminate unnecessary iterations and control the risk of error prediction. In some implementations, the LTR frame block update mode can be used as an additional option available at each leaf node of the QTBT.

[0051] In some implementations, further referenceFigure 5 , additional syntax elements can be signaled at different levels of the bitstream. For example, a flag can be enabled for an entire sequence by including an enable flag encoded in the Sequence Parameter Set (SPS). Additionally, the CTU flag can be encoded at the Coding Tree Unit (CTU) layer.

[0052] It should be noted that, as will be apparent to those of ordinary skill in the art of computing, any one or more aspects and embodiments described herein can be readily implemented using digital electronic circuits, integrated circuits, Application Specific Integrated Circuits (ASICs) specifically designed, Field Programmable Gate Arrays (FPGAs), computer hardware, firmware, software, and / or combinations thereof implemented in and / or on one or more machines programmed according to the teachings of this specification (e.g., one or more computing devices serving as user computing devices for electronic documents, one or more server devices such as document servers, etc.). These various aspects or features can include implementation in one or more computer programs and / or software that are executable and / or interpretable on a programmable system including at least one programmable processor, which can be special-purpose or general-purpose, coupled to receive data and instructions from a storage system, at least one input device, and at least one output device, and to send data and instructions to the storage system, at least one input device, and at least one output device. It will be apparent to those of ordinary skill in the software art that a skilled programmer can readily prepare appropriate software code based on the teachings of this disclosure. The aspects and implementations employing software and / or software modules discussed above can also include appropriate hardware for facilitating the implementation of the software and / or software modules.

[0053] Such software can be a computer program product that employs a machine-readable storage medium. A machine-readable storage medium can be any medium that is capable of storing and / or encoding a sequence of instructions executable by a machine (e.g., a computing device) and causing the machine to perform any one of the methods and / or embodiments described herein. Examples of machine-readable storage media include, but are not limited to, magnetic disks, optical disks (e.g., CD, CD-R, DVD, DVD-R, etc.), magneto-optical disks, read-only memory "ROM" devices, random access memory "RAM" devices, magnetic cards, optical cards, solid-state memory devices, EPROM, EEPROM, programmable logic devices (PLDs), and / or any combination thereof. As used herein, a machine-readable medium is intended to include a single medium as well as a collection of physically separate media, such as a collection of optical disks or one or more hard disk drives coupled with a computer memory. As used herein, a machine-readable storage medium does not include transitory forms of signal transmissions.

[0054] Such software can also include information (e.g., data) that is carried on a data carrier, such as a carrier wave, as a data signal. For example, machine-executable information can include a data-carrying signal that is contained in a data carrier, where the signal encodes a sequence of instructions or a portion of the sequence of instructions for execution by a machine (e.g., a computing device), and any associated information (e.g., data structures and data) that causes the machine to perform any one of the methods and / or embodiments described herein.

[0055] Examples of computing devices include, but are not limited to, e-book reading devices, computer workstations, terminal computers, server computers, handheld devices (e.g., tablet computers, smart phones, etc.), network devices, network routers, network switches, bridges, any machine capable of executing a sequence of instructions specifying actions to be taken by the machine, and any combination thereof. In one example, a computing device can include and / or be included in a kiosk.

[0056] Figure 6Shows an illustration of an embodiment, which is an exemplary form of a computing device of computer system 600, in which a set of instructions can be executed to cause the control system to perform any one or more of the aspects and / or methods of the present disclosure. It is also contemplated that multiple computing devices can be utilized to implement a specially configured set of instructions for causing one or more of the devices to perform any one or more of the aspects and / or methods of the present invention. Computer system 600 includes a processor 604 and a memory 608, which communicate with each other via a bus 612 and with other components. Bus 612 can include any one of several types of bus structures, including but not limited to a memory bus, a memory controller, a peripheral bus, a local bus, and any combination thereof, using any one of various bus architectures.

[0057] Memory 608 can include various components (e.g., machine-readable media), including but not limited to random access memory components, read-only components, and any combination thereof. In one example, a basic input / output system 616 (BIOS) can be stored in memory 608, including, for example, basic routines that assist in transferring information between elements within computer system 600 during startup. Memory 608 can also include (e.g., stored on one or more machine-readable media) instructions (e.g., software) 620 that embody any one or more of the aspects and / or methods of the present disclosure. In another example, memory 608 can also include any number of program modules, including but not limited to an operating system, one or more applications, other program modules, program data, and any combination thereof.

[0058] The computer system 600 may also include a storage device 624. Examples of storage devices (e.g., storage device 624) include, but are not limited to, hard disk drives, disk drives, optical disc drives in combination with optical media, solid state memory devices, and any combination thereof. The storage device 624 may be connected to the bus 612 via a suitable interface (not shown). Exemplary interfaces include, but are not limited to, SCSI, Advanced Technology Attachment (ATA), Serial ATA, Universal Serial Bus (USB), IEEE 1394 (FIREWIRE), and any combination thereof. In one example, the storage device 624 (or one or more components of the storage device 624) may be removably interfaced with the computer system 600 (e.g., via an external port connector (not shown)). In particular, the storage device 624 and the associated machine-readable medium 628 may provide non-volatile and / or volatile storage for machine-readable instructions, data structures, program modules, and / or other data for the computer system 600. In one example, the software 620 may reside entirely or partially within the machine-readable medium 628. In another example, the software 620 may reside entirely or partially within the processor 604.

[0059] The computer system 600 may also include an input device 632. In one example, a user of the computer system 600 may input commands and / or other information into the computer system 600 via the input device 632. Examples of the input device 632 include (but are not limited to) alphanumeric input devices (e.g., keyboards), pointing devices, joysticks, gamepads, audio input devices (e.g., microphones, voice response systems, etc.), cursor control devices (e.g., mice), touchpads, optical scanners, video capture devices (e.g., still cameras, video cameras), touchscreens, and any combination thereof. The input device 632 may be connected to the bus 612 via any of a variety of interfaces (not shown), which include but are not limited to serial interfaces, parallel interfaces, game ports, USB interfaces, FIREWIRE interfaces, direct interfaces to the bus 612, and any combination thereof. The input device 632 may include a touchscreen interface, which may be part of or separate from the display 636, as will be discussed further below. The input device 632 may be used as a user selection device for selecting one or more graphical representations in the graphical interface described above.

[0060] A user may also input commands and / or other information to the computer system 600 via a storage device 624 (e.g., a removable disk drive, a flash drive, etc.) and / or a network interface device 640. A network interface device, such as network interface device 640, may be used to connect the computer system 600 to one or more of a variety of networks, such as network 644, and to one or more remote devices 648 connected to the network 644. Examples of network interface devices include, but are not limited to, network interface cards (e.g., mobile network interface cards, LAN cards), modems, and any combination thereof. Examples of networks include, but are not limited to, wide area networks (e.g., the Internet, enterprise networks), local area networks (e.g., networks associated with an office, a building, a campus, or other relatively small geographical spaces), telephone networks, data networks associated with telephone / voice providers (e.g., mobile communication provider data and / or voice networks), direct connections between two computing devices, and any combination thereof. A network such as network 644 may employ wired and / or wireless communication modes. Generally, any network topology may be used. Information (e.g., data, software 620, etc.) may be transmitted to and / or from the computer system 600 via the network interface device 640.

[0061] The computer system 600 may also include a video display adapter 652 for transmitting a displayable image to a display device, such as display device 636. Examples of display devices include, but are not limited to, liquid crystal displays (LCDs), cathode ray tubes (CRTs), plasma displays, light emitting diode (LED) displays, and any combination thereof. The display adapter 652 and the display device 636 may be used in combination with the processor 604 to provide a graphical representation of aspects of the present disclosure. In addition to the display device, the computer system 600 may include one or more other peripheral output devices, including but not limited to audio speakers, printers, and any combination thereof. Such peripheral output devices may be connected to the bus 612 via a peripheral interface 656. Examples of peripheral interfaces include, but are not limited to, serial ports, USB connections, FIREWIRE connections, parallel connections, and any combination thereof.

[0062] The above is a detailed description of illustrative embodiments of the present invention. Various modifications and additions can be made without departing from the spirit and scope of the present invention. The features of each of the above embodiments can be appropriately combined with the features of other described embodiments to provide various combinations of features in related new embodiments. In addition, although multiple separate embodiments are described above, the content described herein is merely an illustration of the application of the principles of the present invention. Additionally, although a particular method herein may be shown and / or described as being performed in a particular order, that order is highly variable to those of ordinary skill in the art to achieve the embodiments disclosed herein. Accordingly, this specification is provided by way of example only and is not intended to limit the scope of the present invention.

[0063] In the above description and claims, phrases such as "at least one" or "one or more" may appear, followed by a conjunctive list of elements or features. The term "and / or" may also appear in a list of two or more elements or features. Unless there is a contrary implication or express contradiction in the context in which it is used, such phrases are intended to mean any of the elements or features individually listed, or any of the recited elements or features in combination with any other recited element or feature. For example, the phrases "at least one of A and B;" "one or more of A and B;" and "A and / or B" each respectively mean "A alone, B alone, or A and B together." Similar interpretations are intended for lists including three or more items. For example, the phrases "at least one of A, B, and C;" "one or more of A, B, and C;" and "A, B, and / or C" each respectively mean "A alone, B alone, C alone, A and B together, A and C together, B and C together, or A and B and C together." Additionally, the term "based on" as used above and in the claims is intended to mean "at least in part based on," such that unrecited features or elements are also permissible.

[0064] Depending on the desired configuration, the subject matter described herein can be embodied in a system, apparatus, method, and / or article. The implementations set forth in the above description do not represent all implementations consistent with the subject matter described herein. Rather, they are merely some examples consistent with aspects of the described subject matter. Although some variations have been described in detail above, other modifications or additions are possible. In particular, additional features and / or variations can be provided in addition to those set forth herein. For example, the above embodiments can relate to various combinations and sub - combinations of the disclosed features and / or combinations and sub - combinations of several other features disclosed above. Additionally, the logical flows depicted in the figures and / or described herein do not necessarily need to be in the particular order or sequential order shown to achieve the desired result. Other embodiments are within the scope of the appended claims.

Claims

1. An encoder is configured to generate a bitstream for decoding by a compatible decoder. The generated bitstream includes an encoded current image, and the encoded current image includes a plurality of coding tree units, each coding tree unit including one or more coding units. The decoder performs a decoding method, and the decoding method includes: Receiving a bitstream that includes an encoded current image, the encoded current image including a plurality of coding tree units, each coding tree unit including one or more coding units; Using the bitstream to construct a stored list of previously decoded images to be used as reference images for motion compensation prediction for the encoded current image; For a current coding unit in the current image, detecting a flag from header information in the bitstream for the current coding unit, the flag indicating that motion compensation prediction is enabled for the current coding unit, thereby indicating that each motion vector of the current coding unit is determined based on motion vectors of adjacent coding units relative to a reference image in the list; If motion compensation prediction is enabled for the current coding unit, determining, based on the header information of the current coding unit, whether the motion model of the current coding unit is translational motion, four-parameter affine motion, or six-parameter affine motion; Based on adjacent coding units, determining at least one motion vector, wherein: If the motion model of the current coding unit is translational motion, determining the at least one motion vector further includes: determining a translational motion vector from the motion vectors of adjacent coding units and using the translational motion vector to decode the current coding unit; If the motion model of the current coding unit is four-parameter affine motion, determining the at least one motion vector further includes: determining two control point motion vectors from the motion vectors of adjacent coding units and using the two control point motion vectors to decode the current coding unit; and If the motion model of the current coding unit is six-parameter affine motion, determining the at least one motion vector further includes: determining three control point motion vectors from the motion vectors of adjacent coding units and using the three control point motion vectors to decode the coding unit.

2. The encoder according to claim 1, wherein, The reference frames are indexed in the list in an order relative to the current frame.

3. The encoder according to claim 1, wherein The header information includes an image parameter set or a sequence parameter set.

4. The encoder according to claim 1, wherein, The header information includes a flag characterizing whether there is global motion for the current block.

5. The encoder according to claim 1, wherein the global motion model includes a translational motion model.

6. The encoder according to claim 1, wherein the global motion model includes a four-parameter affine motion model.

7. The encoder according to claim 1, wherein the global motion model includes a six-parameter affine motion model.

8. The encoder according to claim 1, wherein, The current image includes a plurality of 128x128 coding tree units.

9. The encoder according to claim 8, wherein, One of the coding tree units has a coding unit with geometric partitioning.

10. A computer-readable recording medium stores an encoded bitstream that is decoded by a decoding method, the method including: A bitstream is received by a decoder, the bitstream including an encoded current image, the encoded current image including a plurality of coding tree units, each coding tree unit including one or more coding units; The bitstream is used to construct a stored list of previously decoded images to be used as reference images for motion compensation prediction of the encoded current image; For a current coding unit in the current image, a flag is detected from header information in the bitstream for the current coding unit, the flag indicating that motion compensation prediction is enabled for the current coding unit, thereby indicating that each motion vector of the current coding unit is determined based on motion vectors of adjacent coding units relative to the reference images in the list; If motion compensation prediction is enabled for the current coding unit, based on the header information of the current coding unit, determine whether the motion model of the current coding unit is translational motion, four-parameter affine motion, or six-parameter affine motion; Based on adjacent coding units, determine at least one motion vector, wherein: If the motion model of the current coding unit is translational motion, determining the at least one motion vector further includes: determining a translational motion vector from the motion vectors of adjacent coding units and using the translational motion vector to decode the current coding unit; If the motion model of the current coding unit is four-parameter affine motion, determining the at least one motion vector further includes: determining two control point motion vectors from the motion vectors of adjacent coding units and using the two control point motion vectors to decode the current coding unit; and If the motion model of the current coding unit is six-parameter affine motion, determining the at least one motion vector further includes: determining three control point motion vectors from the motion vectors of adjacent coding units and using the three control point motion vectors to decode the coding unit.

11. The computer-readable recording medium according to claim 10, wherein, The reference frames are indexed in the list in order relative to the current frame.

12. The computer-readable recording medium according to claim 10, wherein, The header information includes a picture parameter set (PPS) or a sequence parameter set (SPS).

13. The computer-readable recording medium according to claim 10, wherein, The header information includes a flag characterizing whether global motion exists for the current block.

14. The computer-readable recording medium according to claim 10, wherein the global motion model includes a translational motion model.

15. The computer-readable recording medium according to claim 10, wherein the global motion model includes a four-parameter affine motion model.

16. The computer-readable recording medium according to claim 10, wherein the global motion model includes a six-parameter affine motion model.

17. The computer-readable recording medium according to claim 10, wherein, The current image includes a plurality of 128x128 coding tree units.

18. The computer-readable recording medium according to claim 17, wherein, One of the coding tree units has a coding unit with geometric partitioning.