Method, apparatus and computer program for wraparound motion compensation with reference picture resampling - Patents.com

By disabling wraparound motion compensation based on layer independence and reference picture resampling, the method addresses the challenges of picture size variations and wraparound motion compensation, enhancing encoding efficiency and reducing computational complexity.

JP7682242B2Active Publication Date: 2025-05-23TENCENT AMERICA LLC

Patent Information

Application Number
JP2023176671
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2020-10-06
Filing Date
2023-10-12
Publication Date
2025-05-23
Estimated Expiration
2040-11-09

AI Technical Summary

Technical Problem

Existing video encoding and decoding technologies face challenges in efficiently handling picture size variations and wraparound motion compensation, particularly when reference picture resampling is enabled, leading to complexities in implementation and computational overhead.

Method used

The method involves determining whether a current layer of a picture is independent and whether reference picture resampling is enabled, and then disabling wraparound motion compensation accordingly, allowing for efficient encoding and decoding without the need for complex offset adjustments.

Benefits of technology

This approach simplifies the encoding process, reduces computational complexity, and ensures accurate motion compensation, even when reference picture sizes differ from the current picture size, thereby improving coding efficiency and reducing visual artifacts.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007682242000009
    Figure 0007682242000009
  • Figure 0007682242000010
    Figure 0007682242000010
  • Figure 0007682242000011
    Figure 0007682242000011
Patent Text Reader

Abstract

To provide a method, a device, and a computer program for wraparound motion compensation with reference picture resampling.SOLUTION: A generation method of an encoded video bitstream using at least one processor includes the steps of making a first determination regarding whether the current layer of the current picture is an independent layer, making a second determination regarding whether reference picture resampling is enabled for the current layer, disabling wraparound compensation for the current layer on the basis of the first determination and the second determination, and encoding the current layer without wraparound compensation.SELECTED DRAWING: Figure 7
Need to check novelty before this filing date? Find Prior Art

Description

[Technical field]

[0001] CROSS-REFERENCE TO RELATED APPLICATIONS This application claims priority from U.S. Provisional Patent Application No. 62 / 955,520, filed December 31, 2019, and U.S. Patent Application No. 17 / 064,172, filed October 6, 2020, both of which are incorporated herein in their entireties.

[0002] Field The disclosed subject matter relates to video encoding and decoding, and more particularly, to enabling and disabling wraparound motion compensation. [Background technology]

[0003] Video encoding and decoding using inter-picture prediction with motion compensation is known. Uncompressed digital video can consist of a sequence of pictures, each having spatial dimensions of, for example, 1920x1080 luminance samples and associated chrominance samples. The sequence of pictures can have a fixed or variable picture rate (also informally known as frame rate), for example, 60 pictures per second or 60 Hz. Uncompressed video has significant bitrate requirements. For example, 1080p60 4:2:0 video (1920x1080 luminance sample resolution at a frame rate of 60 Hz) with 8 bits per sample requires a bandwidth approaching 1.5 Gbit / s. One hour of such video requires more than 600 Gbytes of storage space.

[0004] One goal of video encoding and decoding may be the reduction of redundancy in the input video signal through compression. Compression may help reduce the aforementioned bandwidth or storage space requirements, in some cases by more than one order of magnitude. Both lossless and lossy compression, as well as combinations thereof, may be used. Lossless compression refers to techniques where an exact copy of the original signal can be reconstructed from the compressed original signal. When lossy compression is used, the reconstructed signal may not be identical to the original signal, but the distortion between the original and reconstructed signals is small enough to make the reconstructed signal useful for the intended application. For video, lossy compression is widely used. The amount of acceptable distortion depends on the application, for example, users of certain consumer streaming applications may tolerate higher distortion than users of television distribution applications. The achievable compression ratio may reflect that a higher tolerable / acceptable distortion can result in a higher compression ratio.

[0005] Video encoders and decoders can use techniques from several broad categories, including motion compensation, transform, quantization, and entropy coding, some of which are introduced below.

[0006] Historically, video encoders and decoders have tended to work on a given picture size, which has remained constant, most often defined for a coded video sequence (CVS), a group of pictures (GOP), or a similar multi-picture time frame. For example, in MPEG-2, system designs are known to vary the horizontal resolution (and thus the picture size) depending on factors such as scene activity, but only in I-pictures and thus typically for GOPs. Resampling of reference pictures to use different resolutions within a CVS is known, for example, from ITU-T Rec. H.263 Annex P. However, here the picture size does not change, only the reference pictures are resampled, so that potentially only a part of the picture canvas is used (in the case of downsampling) or only a part of the scene is captured (in the case of upsampling). Furthermore, H.263 Annex Q allows resampling of individual macroblocks up or down by a factor of two (in each dimension). Again, the picture size remains the same. The size of the macroblocks is fixed in H.263 and therefore does not need to be signaled.

[0007] Picture size variations in predicted pictures have become more mainstream in modern video coding. For example, VP9 allows resampling and resolution changes of reference pictures for the entire picture. Similarly, certain proposals made for VVC (including, for example, 3GPP TS 2010-011011, incorporated herein in its entirety) allow resampling of the entire reference picture to different—higher or lower—resolutions. In that document, it is proposed that the different candidate resolutions are coded in the sequence parameter set and referenced by per-picture syntax elements in the picture parameter set. [Non-Patent Document 1] Hendry, et. al, "On adaptive resolution change (ARC) for VVC", Joint Video Team document JVET-M0135-v1, Jan 9-19, 2019 Summary of the Invention [Means for solving the problem]

[0008] In one embodiment, a method for generating an encoded video bitstream using at least one processor is provided, the method including making a first determination as to whether a current layer of a current picture is an independent layer; making a second determination as to whether reference picture resampling is enabled for the current layer; disabling wraparound compensation for the current layer based on the first determination and the second determination; and encoding the current layer without wraparound compensation.

[0009] In one embodiment, an apparatus for generating an encoded video bitstream is provided, the apparatus including at least one memory configured to store program code and at least one processor configured to read the program code and operate as instructed by the program code, the program code including: a first decision code configured to cause the at least one processor to make a first decision regarding whether a current layer of a current picture is an independent layer; a second decision code configured to cause the at least one processor to make a second decision regarding whether reference picture resampling is enabled for the current layer; a disabling code configured to cause the at least one processor to disable wraparound compensation for the current layer based on the first decision and the second decision; and an encoding code configured to cause the at least one processor to encode the current layer without wraparound compensation.

[0010] In one embodiment, a non-transitory computer-readable medium is provided having instructions stored thereon that, when executed by one or more processors of an apparatus for generating an encoded video bitstream, cause the one or more processors to: make a first determination regarding whether a current layer of a current picture is an independent layer; make a second determination regarding whether reference picture resampling is enabled for the current layer; disable wraparound compensation for the current layer based on the first determination and the second determination; and encode the current layer without wraparound compensation. [Brief description of the drawings]

[0011] Further features, nature and various advantages of the disclosed subject matter will become more apparent from the following detailed description and the accompanying drawings.

[0012] [Figure 1] FIG. 1 is a schematic diagram of a simplified block diagram of a communication system according to an embodiment.

[0013] [Diagram 2] FIG. 1 is a schematic diagram of a simplified block diagram of a communication system according to an embodiment.

[0014] [Diagram 3] FIG. 2 is a schematic diagram of a simplified block diagram of a decoder according to an embodiment.

[0015] [Figure 4] FIG. 2 is a schematic diagram of a simplified block diagram of an encoder according to an embodiment.

[0016] [Diagram 5] 5A-5E are schematic diagrams of options for signaling ARC parameters according to an embodiment;

[0017] [Figure 6] A to B is a schematic diagram of an example of a syntax table according to an embodiment.

[0018] [Figure 7] It is a schematic diagram of an example of a syntax table according to an embodiment.

[0019] [Figure 8] A to C is a flowchart of an exemplary process for generating an encoded video bitstream according to an embodiment.

[0020] [Figure 9] It is a schematic diagram of a computer system according to an embodiment.

DETAILED DESCRIPTION OF THE INVENTION

[0021] FIG. 1 shows a simplified block diagram of a communication system (100) according to an embodiment of the present disclosure. The system (100) may include at least two terminals (110 to 120) interconnected via a network (150). For one-way data transmission, the first terminal (110) can encode video data at a local location for transmission to the other terminal (120) via the network (150). The second terminal (120) can receive the encoded video data of the other terminal from the network (150), decode the encoded data, and display the recovered video data. One-way data transmission may be common in media providing applications and the like.

[0022] 1 illustrates a second pair of terminals (130, 140) arranged to support bidirectional transmission of encoded video, such as may occur during a video conference. For bidirectional transmission of data, each terminal (130, 140) can encode video data captured at a local location for transmission to the other terminal over the network (150). Each terminal (130, 140) can also receive encoded video data transmitted by the other terminal, decode the encoded data, and display the recovered video data on a local display device.

[0023] In FIG. 1, the terminals (110-140) may be illustrated as servers, personal computers, and smartphones, although the principles of the present disclosure may not be so limited. Embodiments of the present disclosure find application with laptop computers, tablet computers, media players, and / or dedicated video conferencing equipment. Network (150) represents any number of networks that convey encoded video data between the terminals (110-140), including, for example, wired and / or wireless communication networks. The communication network (150) may exchange data in circuit-switched and / or packet-switched channels. Exemplary networks include telecommunications networks, local area networks, wide area networks, and / or the Internet. For purposes of the present discussion, the architecture and topology of network (150) may not be important to the operation of the present disclosure, unless described below.

[0024] 2 shows an arrangement of video encoders and decoders in a streaming environment as an example for application of the disclosed subject matter. The disclosed subject matter may be equally applicable to other video-enabled applications including, for example, video conferencing, digital TV, storage of compressed video on digital media including CDs, DVDs, memory sticks, etc.

[0025] The streaming system may include a video source (201), e.g., a digital camera, and may include a capture subsystem (213) that generates, e.g., an uncompressed video sample stream (202). The sample stream (202) is depicted in bold to emphasize its high data volume as compared to an encoded video bitstream and may be processed by an encoder (203) coupled to the camera (201). The encoder (203) may include hardware, software, or a combination thereof to enable or achieve aspects of the disclosed subject matter, as described in more detail below. The encoded video bitstream (204), depicted in thin to emphasize its lower data volume as compared to the sample stream, may be stored in a streaming server (205) for future use. One or more streaming clients (206, 208) may access the streaming server (205) to retrieve copies (207, 209) of the encoded video bitstream (204). The client (206) may include a video decoder (210). The video decoder decodes an incoming copy of an encoded video bitstream (207) and generates an outgoing video sample stream (211) that can be rendered on a display (212) or other rendering device (not shown). In some streaming systems, the video bitstream (204, 207, 209) may be encoded according to some video encoding / compression standard. Examples of these standards include ITU-T Recommendation H.265. A video encoding standard informally known as Versatile Video Coding, or VVC, is also under development. The disclosed subject matter may be used in the context of VVC.

[0026] FIG. 3 may be a functional block diagram of a video decoder (210) according to one embodiment of the present disclosure.

[0027] The receiver (310) may receive one or more encoded video sequences to be decoded by the decoder (210); in the same or another embodiment, it is one encoded video sequence at a time, and the decoding of each encoded video sequence is independent of other encoded video sequences. The encoded video sequence may be received from a channel (312), which may be a hardware / software link to a storage device storing the encoded video data. The receiver (310) may receive the encoded video data together with other data, such as encoded audio data and / or auxiliary data streams, and these data may be transferred to their respective usage entities (not shown). The receiver (310) can separate the encoded video sequence from other data. As a network jitter countermeasure, a buffer memory (315) may be coupled between the receiver (310) and the entropy decoder / parser (320) (hereinafter "parser"). If the receiver (310) is receiving data from a storage / transfer device with sufficient bandwidth and controllability, or from an isochronous network, the buffer (315) may not be required or may be small. For use in a best-effort packet network such as the Internet, a buffer (315) may be required, may be relatively large, and advantageously may be of an adaptable size.

[0028] The video decoder (210) may include a parser (320) for reconstructing symbols (321) from the entropy coded video sequence. These categories of symbols include information used to manage the operation of the decoder (210) and potentially information for controlling a rendering device such as a display (212) that is not an integral part of the decoder but may be coupled to the decoder as shown in FIG. 3. The control information for the rendering device(s) may be in the form of a Supplementary Enhancement Information (SEI) message or a Video Usability Information (VUI) parameter set fragment (not shown). The parser (320) may parse / entropy decode the received coded video sequence. The coding of the coded video sequence may follow any video coding technique or standard and may follow a variety of principles well known to those skilled in the art, including variable length coding, Huffman coding, arithmetic coding with or without context sensitivity, etc. The parser (320) may extract from the encoded video sequence a set of subgroup parameters for at least one of the subgroups of pixels in the video decoder based on at least one parameter corresponding to the group. The subgroup may include a Group of Pictures (GOP), a picture, a subpicture, a tile, a slice, a macroblock, a coding tree unit (CTU), a coding unit (CU), a block, a transform unit (TU), a prediction unit (PU), etc. A tile may refer to a rectangular region of a CU / CTU in a particular tile column and row in a picture. A brick may refer to a rectangular region of a CU / CTU row in a particular tile. A slice may refer to one or more bricks included in a NAL unit of a picture.A subpicture may represent a rectangular region of one or more slices within a picture. The entropy decoder / parser may also extract information from the coded video sequence, such as transform coefficients, quantizer parameter values, motion vectors, etc.

[0029] The parser (320) performs an entropy decoding / parsing operation on the video sequence received from the buffer (315), thereby generating symbols (321).

[0030] The reconstruction of symbols (321) can involve several different units, depending on the type of coded video picture or its parts (e.g., intra blocks) and other factors. Which units are involved and how can be controlled by subgroup control information parsed by the parser (320) from the coded video sequence. The flow of such subgroup control information between the parser (320) and the following units is not depicted for clarity.

[0031] In addition to the functional blocks already mentioned, the decoder 210 can be conceptually divided into several functional units, as described below. In a practical implementation working under commercial constraints, many of these units will interact closely with each other and may be at least partially integrated with each other. However, for purposes of describing the disclosed subject matter, the following conceptual subdivision into functional units is adequate.

[0032] The first unit is a scaler / inverse transform unit (351). The scaler / inverse transform unit (351) receives quantized transform coefficients and control information as symbol(s) (321) from the parser (320). The control information includes which transform to use, block size, quantization factor, quantization scaling matrix, etc. The scaler / inverse transform unit can output a block containing sample values ​​that can be input to an aggregator (355).

[0033] In some cases, the output samples of the scaler / inverse transform (351) may relate to intra-coded blocks, i.e. blocks that do not use prediction information from a previously reconstructed picture, but can use prediction information from a previously reconstructed part of the current picture. Such prediction information may be provided by an intra picture prediction unit (352). In some cases, the intra picture prediction unit (352) uses surrounding already reconstructed information taken from the current (partially reconstructed) picture (358) to generate a block of the same size and shape as the block being reconstructed. The aggregator (355) adds, possibly on a sample-by-sample basis, the prediction information generated by the intra prediction unit (352) to the output sample information provided by the scaler / inverse transform unit (351).

[0034] In other cases, the output samples of the scaler / inverse transform unit (351) may relate to an inter-coded, potentially motion-compensated block. In such cases, the motion compensation prediction unit (353) may access a reference picture memory (357) to fetch samples used for prediction. After motion compensating the fetched samples according to the symbols (321) for the block, these samples may be added by an aggregator (355) to the output of the scaler / inverse transform unit (in this case referred to as residual samples or residual signals) to generate output sample information. The addresses in the reference picture memory from which the motion compensation unit fetches prediction samples may be controlled by a motion vector available to the motion compensation unit in the form of a symbol (321). The symbol may have, for example, X, Y, and reference picture components. Motion compensation may include interpolation of sample values ​​fetched from the reference picture memory when subsample accurate motion vectors are used, motion vector prediction mechanisms, etc.

[0035] The output samples of the aggregator (355) can undergo various loop filtering techniques within the loop filter unit (356). Video compression techniques can include in-loop filter techniques. The in-loop filter techniques are controlled by parameters included in the encoded video bitstream and are made available to the loop filter unit (356) as symbols (321) from the parser (320), but also in response to meta information obtained during the decoding of the previous part (in decode order) of the encoded picture or encoded video sequence, and can also respond to previously reconstructed and loop filtered sample values.

[0036] The output of the loop filter unit (356) can be a sample stream, which can be output to the renderer device (212) and can also be stored in the reference picture memory for use in future inter-picture prediction.

[0037] Once a certain encoded picture is fully reconstructed, it can be used as a reference picture for future prediction. For example, when the encoded picture is fully reconstructed and the encoded picture is identified as a reference picture (e.g., by the parser (320)), the current reference picture (358) can become part of the reference picture buffer (357), and a fresh current picture memory can be reallocated before starting the reconstruction of subsequent encoded pictures.

[0038] The video decoder (210) may perform decoding operations according to a given video compression technique, which may be documented in a standard such as ITU-T Recommendation H.265. The encoded video sequence may conform to the syntax specified by the video compression technique or standard used, in the sense that it follows the syntax of the video compression technique or standard specified in the video compression technique document or standard, and in particular in a profile document therein. Conformance may also require that the complexity of the encoded video sequence be within a range defined by the level of the video compression technique or standard. In some cases, the level constrains the maximum picture size, maximum frame rate, maximum reconstruction sample rate (e.g., measured in units of megasamples per second), maximum reference picture size, etc. The limits set by the level may be further constrained through a Hypothetical Reference Decoder (HRD) specification and metadata for HRD buffer management, which may be signaled in the encoded video sequence.

[0039] In some embodiments, the receiver (310) may receive additional (redundant) data along with the encoded video. The additional data may be included as part of the encoded video sequence(s). The additional data may be used by the video decoder (210) to properly decode the data and / or to more accurately reconstruct the original video data. The additional data may be in the form of, for example, temporal, spatial, or SNR improvement layers, redundant slices, redundant pictures, forward error correction codes, etc.

[0040] FIG. 4 may be a functional block diagram of a video encoder (203) according to an embodiment of the present disclosure.

[0041] The encoder (203) may receive video samples from a video source (201) (which is not part of the encoder) that may capture video images to be encoded by the encoder (203).

[0042] The video source (201) may provide a source video sequence to be encoded by the encoder (203) in the form of a digital video sample stream that may be of any suitable bit depth (e.g., 8-bit, 10-bit, 12-bit, ...), any color space (e.g., BT.601 YCrCB, RGB, ...) and any suitable sampling structure (e.g., YCrCb 4:2:0, YCrCb 4:4:4). In a media service system, the video source (201) may be a storage device that stores pre-prepared videos. In a video conferencing system, the video source (203) may be a camera that captures image information locally as a video sequence. The video data may be provided as a number of individual pictures that impart motion when viewed in sequence. The pictures themselves may be organized as a spatial array of pixels, each pixel may contain one or more samples depending on the sampling structure, color space, etc. in use. Those skilled in the art can easily understand the relationship between pixels and samples. The following description focuses on samples.

[0043] According to an embodiment, the encoder (203) can encode and compress pictures of a source video sequence into an encoded video sequence (443) in real-time or under any other time constraint required by the application. Enforcing an appropriate encoding rate is one function of the controller (450). The controller controls and is operatively coupled to other functional units, as described below. Such couplings are not depicted for clarity. Parameters set by the controller can include parameters related to rate control (picture skip, quantizer, lambda value for rate-distortion optimization techniques, ...), picture size, group of pictures (GOP) layout, maximum motion vector search range, etc. One skilled in the art can easily identify other functions of the controller (450) that may be relevant for a video encoder (203) optimized for a certain system design.

[0044] Some video encoders operate in what one skilled in the art would easily recognize as a "coding loop." As a simplistic explanation, in one example, the coding loop can consist of an encoding part of the encoder (430) (hereafter "source encoder") (responsible for generating symbols based on the input picture to be encoded and the reference picture(s)) and a (local) decoder (433) embedded in the encoder (203). The decoder reconstructs the symbols to generate sample data that the (remote) decoder will also generate (in the video compression techniques considered in the disclosed subject matter, any compression between the symbols and the encoded video bitstream is lossless). The reconstructed sample stream is input to a reference picture memory (434). The decoding of the symbol stream produces bit-exact results regardless of the decoder location (local or remote), so the contents of the reference picture buffer are also bit-exact between the local and remote encoders. In other words, the prediction part of the encoder "sees" exactly the same sample values ​​as the reference picture samples that the decoder "sees" when using the prediction during decoding. This basic principle of reference picture synchrony (and the resulting drift when synchrony cannot be maintained, e.g., due to channel errors) is well known to those skilled in the art.

[0045] The operation of the "local" decoder (433) may be the same as the operation of the "remote" decoder (210) already described in detail above in connection with Figure 3. However, referring also for a moment to Figure 4, since symbols are available and the encoding / decoding of symbols into an encoded video sequence by the entropy coder (445) and parser (320) may be lossless, the entropy decoding portion of the decoder (210), including the channel (312), receiver (310), buffer (315) and parser (320), may not be fully implemented in the local decoder (433).

[0046] An observation that can be made at this point is that any decoder technique, other than parsing / entropy decoding, that is present in the decoder must necessarily be present in substantially the same functional form in the corresponding encoder. For this reason, the disclosed subject matter focuses on decoder operation. The description of the encoder techniques can be abbreviated since they are the inverse of the decoder techniques, which are described generically. Only in certain areas is more detailed explanation necessary, and is provided below.

[0047] As part of its operation, the source encoder (430) may perform motion-compensated predictive encoding, which predictively encodes an input frame with reference to one or more previously encoded frames from the video sequence, designated as “reference frames.” In this manner, the encoding engine (432) encodes the difference between pixel blocks of the input frame and pixel blocks of the reference frame(s) that may be selected as prediction references for the input frame.

[0048] The local video decoder (433) can decode the encoded video data of a frame that may be designated as a reference frame based on the symbols generated by the source encoder (430). The operation of the encoding engine (432) can advantageously be a lossy process. When the encoded video data can be decoded in a video decoder (not shown in FIG. 4), the reconstructed video sequence can be a copy of the source video sequence, typically with some errors. The local video decoder (433) can replicate the decoding process that may be performed on the reference frame by the video decoder and store the reconstructed reference frame in the reference picture cache (434). In this way, the encoder (203) can locally store copies of reconstructed reference frames that have common content (in the absence of transmission errors) as the reconstructed reference frames that would be obtained by the far-end video decoder.

[0049] The predictor (435) can perform a prediction search for the coding engine (432). That is, for a new frame to be coded, the predictor (435) can search the reference picture memory (434) for sample data (as candidate reference pixel blocks) or certain metadata, such as reference picture motion vectors, block shapes, etc., that can serve as suitable prediction references for the new picture. The predictor (435) can operate on a sample block-by-pixel block basis to find suitable prediction references. In some cases, as determined by the search results obtained by the predictor (435), the input picture can have prediction references derived from multiple reference pictures stored in the reference picture memory (434).

[0050] The controller (450) may manage the encoding operations of the video encoder (430), including, for example, setting the parameters and subgroup parameters used to encode the video data.

[0051] The output of all the above functional units may be subjected to entropy coding in an entropy coder (445), which converts the symbols produced by the various functional units into an encoded video sequence by losslessly compressing the symbols according to techniques known to those skilled in the art, such as Huffman coding, variable length coding, arithmetic coding, etc.

[0052] The transmitter (440) can buffer the encoded video sequence produced by the entropy encoder (445) and prepare it for transmission over a communication channel (460). The communication channel can be a hardware / software link to a storage device that stores the encoded video data. The transmitter (440) can merge the encoded video data from the video encoder (430) with other data to be transmitted, such as encoded audio data and / or auxiliary data streams (sources not shown).

[0053] A controller (450) may manage the operation of the encoder (203). During encoding, the controller (450) may assign a coding picture type to each coded picture. The coding picture type may affect the coding technique that may be applied to each picture. For example, pictures may often be assigned as one of the following frame types:

[0054] An intra picture (I picture) may be one that can be coded and decoded without using other pictures in the sequence as a source of prediction. Some video codecs allow different types of intra pictures, including, for example, Independent Decoder Refresh pictures. Those skilled in the art will recognize these variations of I pictures, as well as their respective uses and characteristics.

[0055] A predictive picture (P picture) may be one that can be encoded and decoded using intra- or inter-prediction, which uses at most one motion vector and reference index to predict the sample values ​​of each block.

[0056] A bidirectionally predictive picture (B picture) may be one that can be encoded and decoded using intra- or inter-prediction that uses up to two motion vectors and reference indices to predict the sample values ​​of each block. Similarly, a multi-predictive picture may use more than two reference pictures and associated metadata for the reconstruction of a single block.

[0057] A source picture is usually spatially divided into multiple sample blocks (e.g., blocks of 4x4, 8x8, 4x8, or 16x16 samples each) and may be coded block by block. Blocks may be predictively coded with reference to other (already coded) blocks, as determined by the coding assignment applied to the respective picture of the block. For example, blocks of an I picture may be non-predictively coded or predictively coded with reference to already coded blocks of the same picture (spatial or intra prediction). Pixel blocks of a P picture may be predictively coded via spatial prediction or via temporal prediction with reference to one previously coded reference picture. Blocks of a B picture may be predictively coded via spatial prediction or via temporal prediction with reference to one or two previously coded reference pictures.

[0058] The video encoder (203) may perform encoding operations according to a given video encoding technique or standard, such as ITU-T Recommendation H.265. In its operations, the video encoder (203) may perform various compression operations, including predictive encoding operations that exploit temporal and spatial redundancy in the input video sequence. Thus, the encoded video data may conform to a syntax specified by the video encoding technique or standard used.

[0059] In some embodiments, the transmitter (440) may transmit additional data along with the encoded video. The video encoder (430) may include such data as part of the encoded video sequence. The additional data may include temporal / spatial / SNR enhancement layers, other forms of redundant data such as redundant pictures and slices, Supplemental Enhancement Information (SEI) messages, Visual Usability Information (VUI) parameter set fragments, etc.

[0060] In recent years, the aggregation and extraction in the compression domain of multiple semantically independent picture parts into a single video picture has received some attention. In particular, for example, in the context of 360 encoding or certain surveillance applications, multiple semantically independent source pictures (e.g., six cubic surfaces of a cubically projected 360 scene, or individual camera inputs in case of a multi-camera surveillance setup) may require separate adaptive resolution settings to deal with different scene-wise activities at a given time point. In other words, the encoder may choose to use different resampling factors for the different semantically independent pictures that make up the entire 360 ​​or surveillance scene at a given time point. When combined into a single picture, this requires that reference picture resampling is performed and adaptive resolution coding signaling is available for the parts of the encoded picture.

[0061] Below we introduce some terminology that will be referred to in the remainder of this article.

[0062] A sub-picture may refer in some cases to a rectangular arrangement of samples, blocks, macroblocks, coding units, or similar entities that may be semantically grouped and coded independently at a modified resolution. One or more sub-pictures may form a picture. One or more coded sub-pictures may form a coded picture. One or more sub-pictures may be assembled into a picture, or one or more sub-pictures may be extracted from a picture. In some circumstances, one or more coded sub-pictures may be assembled into a picture coded in the compressed domain without transcoding to the sample level, or in the same or other cases, one or more coded sub-pictures may be extracted from a picture coded in the compressed domain.

[0063] Adaptive Resolution Change (ARC) may refer to a mechanism that allows for a change in resolution of pictures or sub-pictures in a coded video sequence, e.g., by reference picture resampling. Hereinafter, ARC parameters refer to the control information needed to perform adaptive resolution change, and may include, e.g., filter parameters, scaling factors, output and / or reference picture resolutions, various control flags, etc.

[0064] In embodiments, encoding and decoding may be performed on a single semantically independent coded video picture. Before describing the implications of encoding / decoding multiple sub-pictures with independent ARC parameters and the additional complexities implied, options for signaling ARC parameters are described.

[0065] 5A-5E, several embodiments for signaling ARC parameters are shown. As noted with respect to each of the embodiments, they may have certain advantages and certain disadvantages in terms of coding efficiency, complexity, and architecture. A video coding standard or technology may select one or more of these embodiments or options known from related technologies for signaling ARC parameters. It is contemplated that the embodiments may not be mutually exclusive and may be interchanged based on application needs, related standards, or encoder preferences.

[0066] The ARC parameter classes may include the following:

[0067] Separate or combined upsampling / downsampling factors in the X and Y dimensions.

[0068] · An upsampling / downsampling factor plus a time dimension indicating a constant speed of zooming in / out for a given number of pictures.

[0069] · Either of the above two may involve the encoding of one or more, possibly short, syntax elements that may point into a table containing said factor(s).

[0070] Resolution of the X or Y dimension of the input picture, output picture, reference picture, coded picture, in units of samples, blocks, macroblocks, coding units (CUs), or any other suitable granularity. If there are multiple resolutions (e.g., one for the input picture and one for the reference picture), in some cases one set of values ​​may be inferred from another set of values. It can be gated, for example, by use of a flag. See below for more detailed examples.

[0071] "Warping" coordinates similar to those used in H.263 Annex P, again with suitable granularity as described above. H.263 Annex P defines one efficient way to encode such distortion coordinates, but it is conceivable that other, potentially more efficient ways, could be devised. For example, the variable-length, reversible "Huffman"-style encoding of the distortion coordinates of Annex P could be replaced by a suitable-length binary encoding, where the length of the binary codewords could be derived, for example, from the maximum picture size, possibly multiplied by a factor to allow for "warping" outside the bounds of the maximum picture size, offset by a value.

[0072] Upsampling or downsampling filter parameters. In embodiments, there may be only a single filter for up- and / or downsampling. However, in embodiments, it may be desirable to allow greater flexibility in filter design, which may require signaling of filter parameters. Such parameters may be selected through an index in a list of possible filter designs, the filter may be fully specified (e.g., through a list of filter coefficients, using a suitable entropy coding technique), or the filter may be selected implicitly through the upsampling / downsampling ratio signaled according to any of the mechanisms described above.

[0073] In the rest of this paper we assume the encoding of a finite set of upsampling / downsampling factors (the same factors are used in both X and Y dimensions) indicated through a codeword. The codeword may be variable length coded, for example using Ext-Golomb codes common to certain syntax elements in video coding specifications such as H.264 and H.265. One suitable mapping of values ​​to upsampling / downsampling factors may be, for example, according to Table 1: [Table 1]

[0074] Many similar mappings can be devised according to the needs of the application and the capabilities of the up-scaling and down-scaling mechanisms available in the video compression technology or standard. This table can be extended to more values. The values ​​may be represented by entropy coding mechanisms other than Ext-Golomb codes, for example using binary coding. That may have certain advantages if the resampling factor is of interest outside the video processing engine (encoder and decoder first) itself, for example by MANE. It should be noted that for situations where no resolution change is required, a short Ext-Golomb code can be chosen, only one bit in the above table. This may be more coding efficient than using binary codes for the most general case.

[0075] The number of items in the table and their semantics may be fully or partially configurable. For example, a basic outline of the table may be conveyed in a "higher level" parameter set such as a sequence or decoder parameter set. In embodiments, one or more such tables may be defined in a video coding technology or standard, and may be selected, for example, via a decoder or sequence parameter set.

[0076] Below we describe how the upsampling / downsampling factors (ARC information) coded as described above may be included in a video coding technique or standard syntax. Similar considerations may apply to one or a small number of codewords that control up / downsampling filters. See below for a discussion of when relatively large amounts of data are required for filters and other data structures.

[0077] As shown in Figure 5A, H.263 Annex P includes ARC information (502) in the form of four distortion coordinates in the picture header (501), specifically in the H.263 PLUSPTYPE (503) header extension. This may be a reasonable design choice when a) there is a picture header available and b) frequent changes of the ARC information are expected. However, the overhead when using H.263-style signaling may be very high, and because picture headers may be of a transient nature, the scaling factor may not be relevant across picture boundaries.

[0078] As shown in Fig. 5B, JVCET-M135-v1 includes ARC reference information (505) (index) located in a picture parameter set (504), which indexes a table (506) containing target resolutions located in a sequence parameter set (507). Populating the table (506) with possible resolutions in the sequence parameter set (507) can be justified by verbal statements made by the author, using SPS as an interoperability negotiation point during capability exchange. Resolution can be varied, within the limits set by the values ​​in the table (506), on a picture-by-picture basis, by referencing the appropriate picture parameter set (504).

[0079] With reference to Figures 5C-5E, the following embodiments may exist for conveying ARC information in a video bitstream. Each of these options has certain advantages over the above-mentioned embodiments. The embodiments may coexist in the same video coding technology or standard.

[0080] In various embodiments, such as the embodiment shown in FIG. 5C, the ARC information (509), such as the resampling (zoom) factor, may be in a slice header, a GOP header, a tile header, or a tile group header. FIG. 5C shows an embodiment in which a tile group header (508) is used. This may be sufficient if the ARC information is small, e.g., a single variable-length ue(v) or a fixed-length codeword of e.g., a few bits as shown above. Having the ARC information directly in the tile group header has the additional advantage that the ARC information may be applicable, e.g., to the sub-picture represented by the tile group, rather than to the entire picture. See also below. Furthermore, even if a video compression technique or standard only assumes picture-wide adaptive resolution changes (e.g., rather than tile group-based adaptive resolution changes), putting the ARC information in the tile group header has certain advantages in terms of error resilience compared to putting it in an H.263-style picture header.

[0081] In various embodiments, such as the embodiment shown in FIG. 5D, the ARC information (512) itself may be present in an appropriate parameter set, such as a picture parameter set, a header parameter set, a tile parameter set, an adaptation parameter set, etc. FIG. 5D shows an embodiment in which an adaptation parameter set (511) is used. The scope of that parameter set may advantageously be no larger than a picture, such as a tile group. The use of the ARC information is implicit through the activation of the associated parameter set. For example, if a video coding technique or standard only contemplates picture-based ARC, then a picture parameter set or equivalent may be appropriate.

[0082] In an embodiment, such as the embodiment shown in Figure 5E, the ARC reference information (513) may be present in a tile group header (514) or similar data structure, and may reference a subset of the ARC information (515) available in a parameter set (516) that has a scope beyond a single picture, such as a sequence parameter set or a decoder parameter set.

[0083] The activation implied by the additional level of indirection of the PPS from the tile group header, PPS, and SPS used in JVET-M0135-v1 seems unnecessary since picture parameter sets can be used (and can be in some standards such as RFC3984) for capability negotiation or announcements, similar to sequence parameter sets. However, if the ARC information should be applicable to e.g. sub-pictures that are also represented by tile groups, a parameter set with activation scope limited to the tile group, such as an adaptation parameter set or a header parameter set, may be a better choice. Also, if the ARC information contains filter control information, e.g. a large number of filter coefficients, that is non-negligible, the parameters may be a better choice in terms of coding efficiency than using the header (508) directly, because their settings can be reused by future pictures or sub-pictures by referencing the same parameter set.

[0084] When using a sequence parameter set, or another higher level parameter set whose scope spans multiple pictures, certain considerations may apply.

[0085] 1. The parameters set for storing the ARC information table (516) can in some cases be a sequence parameter set, but in other cases advantageously be a decoder parameter set. A decoder parameter set can have an activation scope of multiple CVSs, i.e., of the coded video stream, i.e., all coded video bits from session start to session release. Possible ARC factors can also be decoder functions, possibly implemented in hardware, and such a scope may be more appropriate, since hardware capabilities tend not to change for any CVS (at least in some entertainment systems, a CVS is a picture group of one second or less in length). However, putting the table in a sequence parameter set is explicitly included in the deployment options described herein, especially in connection with point 2 below.

[0086] 2. The ARC reference information (513) may advantageously be placed directly in the picture / slice tile / GOP / tile group header, e.g., the tile group header (514), rather than in the picture parameter set as in JVCET-M0135-v1. For example, if an encoder wants to change a single value in a picture parameter set, e.g., the ARC reference information, it must create a new PPS and reference the new PPS. Assume that only the ARC reference information changes and other information, e.g., the quantization matrix information in the PPS, does not change. Such information may be of significant size and would need to be retransmitted to complete the new PPS. Since the ARC reference information (513) may be a single codeword, such as an index into a table, which would be the only value that changes, it would be cumbersome and wasteful to retransmit the entirety of, e.g., the quantization matrix information. So, it may be significantly better in terms of coding efficiency to avoid indirect referencing through the PPS, as proposed in JVET-M0135-v1. Similarly, putting the ARC reference information in the PPS has the additional disadvantage that the ARC information referenced by the ARC reference information (513) may apply to the entire picture rather than a sub-picture, since the scope of activation of a picture parameter set is the picture.

[0087] In the same or another embodiment, ARC parameter signaling may follow detailed examples outlined in Figures 6A-6B, which show syntax diagrams in an expressive format using a notation that roughly follows C-style programming, e.g., as used in video coding standards since at least 1993. Bold lines indicate syntax elements present in the bitstream, while non-bold lines often indicate control flow or variable setting.

[0088] As shown in FIG. 6A, the tile group header (601) can conditionally contain a variable-length Exp-Golomb coding syntax element dec_pic_size_idx (602) as an example syntax structure for a header applicable to a (possibly rectangular) portion of a picture (shown in bold). The presence of this syntax element in the tile group header can be gated using the adaptive resolution (603) flag value, not shown here in bold. This means that the flag is present in the bitstream at the point where it appears in the syntax diagram. Whether adaptive resolution is used for this picture or part of it can be signaled in any high-level syntax structure inside or outside the bitstream. In the example shown, it is signaled in the sequence parameter set, as outlined below.

[0089] Referring to FIG. 6B, an excerpt of a sequence parameter set (610) is also shown. The first syntax element shown is adaptive_pic_resolution_change_flag (611). If true, that flag can indicate the use of adaptive resolution, which may require some kind of control information. In this example, such control information is conditionally present based on the value of the flag, based on if() statements in the parameter set (612) and the tile group header (601).

[0090] If adaptive resolution is used, the output resolution (613) in units of samples is coded in this example. Symbol 613 refers to both output_pic_width_in_luma_samples and output_pic_height_in_luma_samples, which together may define the resolution of the output picture. Certain constraints on either value may be defined elsewhere in the video coding technology or standard. For example, the level definition may limit the total number of output samples, which may be the product of the values ​​of these two syntax elements. Also, certain video coding technologies or standards, or external technologies or standards, such as system specifications, may limit the numbering range (e.g., one or both dimensions must be divisible by a power of two) or the aspect ratio (e.g., width and height must have a relationship such as 4:3 or 16:9). Such constraints may be introduced to facilitate hardware implementation or for other reasons, and are well known in the art.

[0091] In certain applications, it may be desirable for the encoder to instruct the decoder to use some reference picture size, rather than implicitly assuming that size is the output picture size. In this example, the syntax element reference_pic_size_present_flag (614) gates the conditional presence of the reference picture dimensions (615) (again, the numbers refer to both width and height).

[0092] Finally, a table of possible decoded picture widths and heights is shown. Such a table can be represented, for example, by the table designation (num_dec_pic_size_in_luma_samples_minus1) (616). The "minus1" can refer to an interpretation of the value of that syntax element. For example, if the encoded value is zero, there is one table entry, if the value is five, there are six table entries. For each "row" in the table, the width and height of the decoded picture are included in the syntax (617).

[0093] The presented table entries (617) can be indexed using the syntax element dec_pic_size_idx (602) in the tile group header, thereby allowing different decoded sizes, effectively zoom factors, per tile group.

[0094] In the implementation of related art of VVC, there may be a problem that wrap-around motion compensation cannot function correctly when the reference picture width is different from the current picture width. In some embodiments, wrap-around motion compensation may be disabled in high-level syntax when the layer of the current picture is a dependent layer or when RPR is enabled for the current layer. In some embodiments, when the reference picture width is different from the current picture width, wrap-around processing may be disabled during the interpolation process for motion compensation.

[0095] Wrap-around motion compensation can be a useful feature for encoding, for example, 360 projection pictures with an equirectangular projection (ERP) format. This can reduce some visual artifacts at the seams and improve the coding gain. In the current VVC specification draft JVET-P2001 (editorially updated by JVET-Q0041), sps_ref_wraparound_offset_minus1 in the SPS specifies the offset used for calculating the horizontal wrap-around position.

[0096] The problem can occur that the wrap-around offset value is determined in relation to the picture width. If the picture width of the reference picture is different from the current picture width, the wrap-around offset value should be changed in proportion to the scaling ratio between the current picture and the reference picture. However, in practice, adjusting the offset value according to the picture width of each reference picture can significantly increase the implementation and computational complexity compared to the advantages of wrap-around motion compensation. Inter-layer prediction and reference picture resampling (RPR) with different picture sizes can result in a daunting variety of combinations of different picture resolutions across layers and temporal pictures.

[0097] Embodiments can address this issue. For example, in embodiments, if the layer of the current picture is a dependent layer or if RPR is enabled for the current layer, wraparound motion compensation may be disabled by setting sps_ref_wraparound_enabled_flag equal to 0. Thus, wraparound motion compensation can be used only if the current layer is an independent layer and RPR is disabled. Under this condition, the reference picture size is equal to the current picture size. Furthermore, in embodiments, if the reference picture width is different from the current picture width, the wraparound motion compensation process may be disabled during the interpolation process for motion compensation.

[0098] The embodiments may be used separately or combined in any order. Furthermore, each of the methods (or embodiments), the encoder, and the decoder may be implemented by a processing circuit (e.g., one or more processors, or one or more integrated circuits). In one example, the one or more processors execute a program stored on a non-transitory computer-readable medium.

[0099] 7 shows an exemplary syntax table according to embodiments. In embodiments, sps_ref_wraparound_enabled_flag (701) equal to 1 may specify that horizontal wraparound motion compensation is applied to inter prediction. sps_ref_wraparound_enabled_flag (701) equal to 0 may specify that horizontal wraparound motion compensation is not applied. sps_ref_wraparound_enabled_flag (701) may be equal to 0 if the value of (CtbSizeY / MinCbSizeY+1) is less than or equal to (pic_width_in_luma_samples / MinCbSizeY-1), where pic_width_in_luma_samples is the value of pic_width_in_luma_samples in any PPS that references the SPS. It may be a bitstream conformance requirement that the value of sps_ref_wraparound_enabled_flag (701) be equal to 0 when vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]] is equal to 0. If not present, the value of sps_ref_wraparound_enabled_flag (701) may be inferred to be equal to 0.

[0100] In embodiments, refPicWidthInLumaSamples may be the pic_width_in_luma_samples of the current reference picture of the current picture. In embodiments, if refPicWidthInLumaSamples is equal to the pic_width_in_luma_samples of the current picture, then refWraparoundEnabledFlag may be set equal to sps_ref_wraparound_enabled_flag. Otherwise, refWraparoundEnabledFlag may be set equal to 0.

[0101] The luma position (xInti, yInti) in full sample units, for i=0..1, may be derived as follows:

[0102] If subpic_treated_as_pic_flag[SubPicIdx] is equal to 1, the following may apply:

number

[0103] Otherwise (subpic_treated_as_pic_flag[subPicIdx] is equal to 0), the following may apply:

number

[0104] The luma position (xInt, yInt) in full sample units may be derived as follows:

[0105] If subpic_treated_as_pic_flag[SubPicIdx] is equal to 1, the following may apply:

number

[0106] Otherwise, the following may apply:

number

[0107] The predicted luma sample value preSampleLXL may be derived as follows: preSampleLXL=refPicLXL[xInt][yInt]< <shift3。

[0108] The chroma position (xInti, yInti) in full sample units may be derived as follows for i=0..3:

[0109] If subpic_treated_as_pic_flag[SubPicIdx] is equal to 1, the following may apply:

number

[0110] Otherwise (subpic_treated_as_pic_flag[subPicIdx] is equal to 0), the following may apply:

number

[0111] The chroma position (xInti, yInti) in full sample units may be further modified as follows, for i=0..3:

number

[0112] 8A-8C are flowcharts of example processes 800A, 800B, and 800C for generating an encoded video bitstream, according to embodiments. In embodiments, any of the processes 800A, 800B, and 800C, or any portions of the processes 800A, 800B, and 800C, may be combined in any combination or permutation, in any order desired. In some implementations, one or more process blocks of FIGS. 8A-8C may be performed by the decoder 210. In some implementations, one or more process blocks of FIGS. 8A-8C may be performed by another device or devices, such as the encoder 203, separate from or including the decoder 210.

[0113] As shown in FIG. 8A, process 800A may include making a first determination as to whether a current layer of a current picture is an independent layer (block 811).

[0114] As further shown in FIG. 8A, process 800A may include making a second determination as to whether reference picture resampling is enabled for the current layer (block 812).

[0115] As further shown in FIG. 8A, process 800A may include disabling wrap-around compensation for the current picture based on the first and second determinations (block 813).

[0116] As further shown in FIG. 8A, process 800A may include encoding the current picture without wrap-around compensation (block 814).

[0117] In some embodiments, the first determination may be made based on a first flag signaled in a first syntax structure, and the second determination may be made based on a second flag signaled in a second syntax structure that is lower in precedence than the first syntax structure.

[0118] In some embodiments, the first flag may be signaled in a video parameter set, and the second flag may be signaled in a sequence parameter set.

[0119] In some embodiments, wrap-around compensation may be disabled based on the second flag not being present in the sequence parameter set.

[0120] As shown in FIG. 8B, process 800B may include determining whether the current layer of the current picture is an independent layer (block 821).

[0121] As further shown in FIG. 8B Current If it is determined that the layer is not an independent layer (NO at block 821), process 800B may proceed to block 822, where wrap-around motion compensation may be disabled.

[0122] As further shown in FIG. 8B, if it is determined that the current layer is an independent layer (YES at block 821), the process 800B may proceed to block 823.

[0123] As further shown in FIG. 8B, the process 800B may include determining whether reference picture resampling is enabled (block 823).

[0124] As further shown in FIG. 8B, if it is determined that reference picture resampling is enabled (YES at block 823), process 800B may proceed to block 822, where wraparound motion compensation may be disabled.

[0125] As further shown in FIG. 8B, if it is determined that reference picture resampling is not enabled (NO at block 823), process 800B may proceed to block 824, where wraparound motion compensation may be enabled.

[0126] As shown in FIG. 8C, the process 800C may include determining that a current layer of a current picture is an independent layer (block 831).

[0127] As further shown in FIG. 8C, the process 800C may include determining that reference picture resampling is enabled (block 832).

[0128] As further shown in FIG. 8C, the process 800C may include determining whether the width of the current picture is different from the width of the current reference picture (block 833).

[0129] As further shown in FIG. 8C, if it is determined that the width of the current picture is different from the width of the current reference picture (YES at block 833), process 800C may proceed to block 834, where wraparound motion compensation may be disabled.

[0130] As further shown in FIG. 8C, if it is determined that the width of the current picture is the same as the width of the current reference picture (NO at block 821), process 800C may proceed to block 835, where wraparound motion compensation may be enabled.

[0131] In one embodiment, block 833 may be performed during the interpolation process for motion compensation.

[0132] 8A-8C depict example blocks of processes 800A, 800B, and 800C, in some implementations process 800 may include additional blocks, fewer blocks, different blocks, or blocks in a different arrangement than the blocks depicted in Figures 8A-8C. Additionally or alternatively, two or more of the blocks of processes 800A, 800B, and 800C may be performed in parallel.

[0133] Furthermore, the proposed methods may be implemented by a processing circuit (e.g., one or more processors or one or more integrated circuits), in one example, the one or more processors execute a program stored on a non-transitory computer-readable medium to perform one or more of the proposed methods.

[0134] The techniques described above can be implemented as computer software using computer-readable instructions and can be physically stored on one or more computer-readable media. For example, FIG. 9 illustrates a computer system 900 suitable for implementing certain embodiments of the disclosed subject matter.

[0135] Computer software may be coded using any suitable machine code or computer language and may be subject to assembly, compilation, linking, or similar mechanisms to create code containing instructions that are executable by a computer central processing unit (CPU), graphics processing unit (GPU), etc., either directly, or through interpretation, microcode execution, etc.

[0136] The instructions may be executed on various types of computers or components thereof including, for example, personal computers, tablet computers, servers, smart phones, gaming devices, Internet of Things devices, and the like.

[0137] 9 for computer system 900 are exemplary in nature and are not intended to suggest any limitation as to the scope of use or functionality of the computer software implementing the embodiments of the present disclosure. Neither the arrangement of components should be interpreted as having any dependency or requirement regarding any one or combination of components illustrated in the exemplary embodiment of computer system 900.

[0138] The computer system 900 may include certain human interface input devices that may be responsive to input by one or more human users through, for example, tactile input (e.g., keystrokes, swipes, data glove movements), audio input (e.g., voice, clapping), visual input (e.g., gestures), and olfactory input (not shown). Human interface devices may also be used to capture certain media that are not necessarily directly related to conscious human input, such as audio (e.g., speech, music, ambient sounds), images (e.g., scanned images, photographic images obtained from still image cameras), and video (e.g., two-dimensional video, three-dimensional video including stereoscopic video).

[0139] The input human interface devices may include one or more of a keyboard 901, a mouse 902, a trackpad 903, a touch screen 910 and associated graphics adapter 950, a data glove, a joystick 905, a microphone 906, a scanner 907, and a camera 908 (only one of each is depicted).

[0140] The computer system 900 may also include some type of human interface output device. Such human interface output devices may stimulate one or more of the human user's senses, for example, through tactile output, sound, light, and smell / taste. Such human interface output devices may include haptic output devices (e.g., haptic feedback via a touch screen 910, data gloves, or joystick 905; although some haptic feedback devices may not act as input devices), audio output devices (e.g., speakers 909, headphones (not shown)), visual output devices (e.g., screens 910 including cathode ray tube (CRT) screens, liquid crystal display (LCD) screens, plasma screens, organic light emitting diode (OLED) screens; each may or may not have touch screen input capabilities, each may or may not have haptic feedback capabilities, some of which may be capable of outputting two-dimensional visual output or higher than three-dimensional output through means such as stereoscopic output; virtual reality glasses (not shown), holographic displays, and smoke tanks (not shown)), and printers (not shown).

[0141] The computer system 900 may also include human accessible storage and associated media, such as optical media including CD / DVD ROM / RW 920 along with CD / DVD or similar media 921, thumb drives 922, removable hard drives or solid state drives 923, legacy magnetic media such as tapes and floppy disks (not shown), specialized ROM / ASIC / PLD based devices (not shown) such as security dongles, etc.

[0142] Those skilled in the art should also understand that the term "computer-readable medium" as used in connection with the presently disclosed subject matter does not encompass transmission media, carrier waves, or other transitory signals.

[0143] The computer system 900 may also include an interface to one or more communication networks (955). The networks may be, for example, wireless, wired, optical. The networks may further be local, wide area, metropolitan, in-vehicle and industrial, real-time, delay tolerant, etc. Examples of networks include cellular networks including Ethernet, wireless LAN, Global System for Mobile Communications (GSM), third generation (3G), fourth generation (4G), fifth generation (5G), long-term evolution (LTE), etc., TV wired or wireless wide area digital networks including cable television, satellite television, terrestrial broadcast television, in-vehicle and industrial including CANBus, etc. Some networks typically require an external network interface adapter (954) that is attached to some kind of general-purpose data port or peripheral bus (949) (e.g., a Universal Serial Bus (USB) port of the computer system 900, etc.). Others are typically integrated into the core of the computer system 900 by attachment to a system bus as described below (e.g., an Ethernet interface to a PC computer system or a cellular network interface to a smartphone computer system). Using any of these networks, the computer system 900 can communicate with other entities. Such communications may be unidirectional, receive only (e.g., broadcast television), unidirectional transmit only (e.g., CANbus to certain CANbus devices), or bidirectional, for example, to other computer systems using local or wide area digital networks. Certain protocols and protocol stacks may be used with each of these networks and network interfaces (1154) as described above.

[0144] The aforementioned human interface devices, human accessible storage, and network interfaces may be attached to the core 940 of the computer system 900.

[0145] The core 940 may include one or more central processing units (CPUs) 941, graphics processing units (GPUs) 942, specialized programmable processing units in the form of field programmable gate arrays (FPGAs) 943, hardware accelerators for certain tasks 944, etc. These devices may be connected through a system bus 948, along with read only memory (ROM) 945, random access memory (RAM) 946, internal mass storage such as internal non-user accessible hard drives, solid state devices (SSDs), etc. 947. In some computer systems, the system bus 948 may be accessible in the form of one or more physical plugs to allow expansion with additional CPUs, GPUs, etc. Peripheral devices may be attached directly to the core's system bus 948 or through a peripheral bus 949. Architectures for peripheral buses include peripheral component interconnect (PCI), USB, etc.

[0146] The CPU 941, GPU 942, FPGA 943, and accelerator 944 may execute certain instructions that may combine to constitute the computer code described above. The computer code may be stored in ROM 945 or RAM 946. Temporary data may also be stored in RAM 946, while persistent data may be stored, for example, in internal mass storage device 947. Rapid storage and retrieval to any of the memory devices may be enabled through the use of cache memory, which may be closely associated with one or more of the CPU 941, GPU 942, mass storage device 947, ROM 945, RAM 946, etc.

[0147] The computer-readable medium can have computer code thereon for performing various computer-implemented operations. The medium and computer code may be those specially designed and constructed for the purposes of the present disclosure, or they may be of the kind well known and available to those having skill in the computer software arts.

[0148] By way of example and not limitation, the architecture 900, and in particular a computer system having the core 940, can provide functionality as a result of the processor (including CPU, GPU, FPGA, accelerator, etc.) executing software embodied in one or more tangible computer readable media. Such computer readable media can be user accessible mass storage as introduced above as well as media associated with some type of storage of the core 940 that is non-transitory in nature such as the core internal mass storage 947 or ROM 945. Software implementing various embodiments of the present disclosure can be stored in such devices and executed by the core 940. The computer readable media can include one or more memory devices or chips depending on the particular needs. The software can cause the core 940, and in particular the processors therein (including CPU, GPU, FPGA, etc.) to execute certain processes or certain portions of certain processes described herein, including defining data structures stored in RAM 946 and modifying such data structures according to the software defined processes. Additionally or alternatively, a computer system may provide functionality as a result of logic hardwired or otherwise embodied in circuitry (e.g., accelerator 944), which may operate in place of or together with software to perform particular processes or portions of particular processes described herein. Reference to software includes logic, and vice versa, as appropriate. Reference to a computer-readable medium may encompass circuitry (e.g., an integrated circuit (IC)) that stores software for execution, circuitry that embodies logic for execution, or both, as appropriate. The present disclosure encompasses any suitable combination of hardware and software.

[0149] While this disclosure has described several exemplary embodiments, there are alterations, substitutions, and various substitute equivalents, which fall within the scope of this disclosure. Thus, it will be appreciated that those skilled in the art will be able to devise many systems and methods that, although not explicitly shown or described herein, embody the principles of the present disclosure and are thus within the spirit and scope of the present disclosure.

Claims

1. 1. A method of generating, by at least one processor, an encoded video bitstream, comprising: encoding a current layer of a current picture with or without wraparound compensation; Wrap-around compensation is disabled if the width of the current picture is different from the width of the current reference picture; Wrap-around compensation is enabled if the width of the current picture is the same as the width of the current reference picture. method.

2. 2. The method of claim 1, wherein the determination as to whether the width of the current picture differs from the width of the current reference picture is made if reference picture resampling is enabled, and wraparound compensation is enabled if the reference picture resampling is not enabled.

3. determining whether the reference picture resampling is enabled is made based on a first flag signaled in a first syntax structure; The method of claim 2.

4. the first flag is signaled in a sequence parameter set; The method according to claim 3.

5. 5. The method according to claim 1, wherein the determination whether the width of the current picture differs from the width of the current reference picture is made during an interpolation process for motion compensation.

6. 1. An apparatus for generating an encoded video bitstream, the apparatus comprising: at least one memory configured to store program code; at least one processor configured to read the program code and to operate as directed by the program code; The program code: Apparatus adapted to cause said at least one processor to carry out the method according to any one of claims 1 to 5.

7. A computer program product for causing one or more processors to carry out the method according to any one of claims 1 to 5.

Citation Information

Patent Citations

  • Sample derivation for 360-degree video coding

    WO2020069058A1

  • Methods for performing wrap-around motion compensation

    WO2021127118A1

  • Wraparound offsets for reference picture resampling in video coding

    WO2021133979A1

Cited By

  • Method, device, and computer program for wraparound motion compensation with reference picture resampling

    JP2025089340A