Method, device and computer program for padding with subregion partitions in a video stream
The wrap-around padding process addresses the challenge of maintaining visual quality during sub-area division in video coding by using decrypted syntax elements, improving coding efficiency and reducing artifacts in compressed images.
Patent Information
- Application Number
- JP2021549513
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2020-09-14
- Filing Date
- 2020-09-17
- Publication Date
- 2025-01-28
- Estimated Expiration
- 2040-09-17
AI Technical Summary
Existing video coding and decryption technologies face challenges in efficiently compressing and decompressing video data while maintaining visual quality, particularly when dividing pictures into sub-areas, as boundary processing affects coding efficiency and subjective visual quality.
Implementing a wrap-around padding process based on decrypted synchronized syntax elements to restore encoded current pictures, which includes horizontal geometric padding for reference pictures in ERP and PERP formats to reduce artifacts at picture boundaries.
Improves coding efficiency and subjective visual quality by effectively handling picture boundaries during sub-area division, reducing artifacts and enhancing the restoration of compressed images.
Smart Images

Figure 0007623287000006 
Figure 0007623287000007 
Figure 0007623287000008
Abstract
Description
[Technical field]
[0001] [CROSS-REFERENCE TO RELATED APPLICATIONS] This application claims the benefit of priority to U.S. Provisional Patent Application No. 62 / 903,635, filed September 20, 2019, and U.S. Patent Application No. 17 / 019,692, filed September 14, 2020, the entire contents of which are incorporated herein by reference.
[0002] [Technical field] The present disclosure relates generally to the field of data processing, and more particularly to video encoding and decoding. [Background technology]
[0003] Video encoding and decoding using inter-picture prediction with motion compensation has been known for several decades. Uncompressed digital video can consist of a sequence of pictures, each having spatial dimensions of, for example, 1920x1080 luma samples and associated chroma 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 luma sample resolution with a frame rate of 60 Hz) with 8 bits per sample requires a bandwidth close to 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 is to be able to reduce redundancy in the input video signal through compression. Compression can help reduce the bandwidth or storage space requirements, in some cases by more than one order of magnitude. Both lossless and lossy compression, as well as combinations of these, can be used. Lossless compression refers to techniques where an exact copy of the original signal can be restored from the compressed original signal. When lossy compression is used, the restored signal may not be identical to the original signal, but the distortion between the original and restored signals is small enough to make the restored 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 a particular consumer streaming application may tolerate higher distortion than users of a television distribution application. The achievable compression ratio can reflect higher acceptable distortion / acceptable distortion can result in higher compression ratios.
[0005] Video encoders and decoders may utilize techniques from several broad categories, including, for example, motion compensation, transform, quantization, and entropy coding, some of which are introduced below.
[0006] The concept of dividing a coded video bitstream into packets for transport over packet networks has been in use for several decades. In the early stages, video coding standards and technologies defined bitstreams optimized mainly for bot-oriented transport. Packetization occurs at system layer interfaces, e.g., specified in the Real-time Transport Protocol (RTP) payload format. With the advent of Internet connections suitable for the mass use of video over the Internet, video coding standards reflect its prominent use cases through the conceptual distinction of the video coding layer (VCL) and the network abstraction layer (NAL). NAL units were introduced in H.264 in 2003 and have been maintained in certain video coding standards and technologies since then, with only minor modifications.
[0007] A NAL unit can often be considered the smallest entity on which a decoder can operate without necessarily decoding all preceding NAL units of a coded video sequence. To that extent, NAL units enable certain error prevention techniques and certain bitstream manipulation techniques, including bitstream pruning by Media Aware Network Elements (MANEs), such as a Selective Forwarding Unit (SFU) or a Multipoint Control Unit (MCU).
[0008] Figure 1 shows the relevant parts of the syntax diagram of the NAL unit header according to H.264 (101) and H.265 (102), in both cases without their respective extensions. In both cases, the forbidden_zero_bit is a zero bit used for start code emulation prevention in a particular system layer environment. The nal_unit_type syntax element indicates the type of data the NAL unit carries, which may be, for example, a particular slice type, a parameter set type, a Supplementary Enhancement Information (SEI) message, etc. The H.265 NAL unit header further includes nuh_layer_id and nuh_temporal_id_plus1, which indicate the spatial / SNR and temporal layer of the coded picture to which the NAL unit belongs.
[0009] It can be seen that NAL unit headers contain only easily parsable fixed-length codewords that have no parsing dependencies on other data in the bitstream, such as, for example, other NAL unit headers, parameter sets, etc. Since NAL unit headers are the first octets in a NAL unit, a MANE can easily extract them, parse them, and act on them. In contrast, other high-level syntax elements (e.g., slice or tile headers) are less easily accessible to a MANE, since they may require maintaining parameter set context and / or processing variable-length or arithmetically coded codepoints.
[0010] It can further be seen that the NAL unit header shown in FIG. 1 does not contain any information that would allow associating the NAL unit with a coded picture that is composed of multiple NAL units (e.g., containing multiple tiles or slices, at least some of which are packetized into individual NAL units).
[0011] Particular transport technologies like RTP (RFC3550), MPEG-system standards, ISO file formats, etc. may contain specific information, often in the form of timing information like presentation time (for MPEG and ISO file formats) or capture time (for RTP), that can be easily accessed by the MANE and help to associate each transport unit with a coded picture. However, the meaning of these information may vary depending on the transport / storage technology and may not have a direct relationship to the picture structure used in the video coding. Therefore, these information may be heuristic at best and may not be particularly suitable for identifying whether NAL units in a NAL unit stream belong to the same coded picture or not. Summary of the Invention
[0012] One embodiment relates to a method, a system, and a computer-readable medium for video encoding. According to one aspect, a method for video encoding is provided. The method may include decoding an encoding syntax element corresponding to a wrap-around padding operation. At least one encoded current picture is reconstructed using the wrap-around padding operation. The syntax element indicates an offset value or left and right padding width information of the wrap-around operation.
[0013] According to another aspect, a computer system for video encoding is provided. The computer system includes one or more processors, one or more computer-readable memories, one or more computer-readable tangible storage devices, and program instructions stored in at least one of the one or more storage devices for execution by at least one of the one or more processors via at least one of the one or more memories, thereby enabling the computer system to perform a method. The method may include decoding an encoding syntax element corresponding to a wrap-around padding operation. At least one encoded current picture is reconstructed using the wrap-around padding operation. The syntax element indicates an offset value or left and right padding width information of the wrap-around operation.
[0014] According to yet another aspect, a computer-readable medium for video encoding is provided. The computer-readable medium includes one or more computer-readable storage devices and program instructions stored in at least one of the one or more tangible storage devices, the program instructions being executable by a processor. The program instructions are executable by the processor to perform a method that may include decoding an encoding syntax element corresponding to a wrap-around padding operation. At least one encoded current picture is reconstructed using the wrap-around padding operation. The syntax element indicates an offset value or left and right padding width information of the wrap-around operation. [Brief description of the drawings]
[0015] The above and other objects, features and advantages will become apparent from the following detailed description of illustrative embodiments, which is to be read in connection with the accompanying drawings, in which various features of the drawings are not drawn to scale, as the drawings are for clarity in facilitating understanding by those skilled in the art in connection with the detailed description. [Figure 1]1 is a schematic diagram of a NAL unit header according to H.264 and H.265. [Diagram 2] FIG. 1 is a schematic diagram of a simplified block diagram of a communication system according to one embodiment. [Diagram 3] FIG. 1 is a schematic diagram of a simplified block diagram of a communication system according to one embodiment. [Figure 4] FIG. 2 is a schematic diagram of a simplified block diagram of a decoder according to one embodiment. [Diagram 5] FIG. 2 is a schematic diagram of a simplified block diagram of an encoder according to one embodiment. [Figure 6] FIG. 13 is a schematic diagram of syntax elements for offset signaling according to one embodiment. [Figure 7] FIG. 13 is a schematic diagram of a syntax element for signaling padding width in an encoder according to one embodiment. [Figure 8] FIG. 13 is a schematic diagram of a simplified block diagram of the padding process for each sub-region (tile or sub-picture) according to one embodiment. [Figure 9] 11 is a schematic diagram of syntax elements for signaling padding offsets for each sub-picture according to one embodiment. FIG. [Figure 10] 1 is a schematic diagram of a syntax element for conveying a unified padding offset for each sub-picture according to one embodiment. [Figure 11] FIG. 1 is a schematic diagram of a computer system according to one embodiment. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0016] Although detailed embodiments of the claimed structures and methods are disclosed herein, it is understood that the disclosed embodiments are merely examples of the claimed structures and methods that may be embodied in various forms. However, these structures and methods may be embodied in many different forms and should not be construed as being limited to the exemplary embodiments described herein. Rather, these exemplary embodiments are provided so that this disclosure will be thorough and comprehensive, and will fully convey the scope to those skilled in the art. In the description, details of well-known features and techniques may be omitted to avoid unnecessarily obscuring the presented embodiments.
[0017] FIELD OF THE DISCLOSURE The embodiments relate generally to the field of data processing, and more particularly to video encoding and decoding. The exemplary embodiments described below provide, among other things, a system, method and computer program for reconstructing an encoded current picture using a wrap-around padding process based on decoding encoded syntax elements. Thus, some embodiments have the ability to improve the field of computing by enabling the encoding of syntax elements used in the reconstruction of compressed images.
[0018] As mentioned above, one goal of video encoding and decoding is to be able to reduce the redundancy of the input video signal through compression. Compression can help reduce the bandwidth or storage space requirements, in some cases by more than two orders of magnitude. Both lossless and lossy compression, as well as combinations of these, can be used. Lossless compression refers to techniques where an exact copy of the original signal can be restored from the compressed original signal. When lossy compression is used, the restored signal may not be identical to the original signal, but the distortion between the original and restored signals is small enough to make the restored 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 a particular consumer streaming application may tolerate higher distortion than users of a television distribution application. The achievable compression ratio can reflect that higher tolerable distortion / acceptable distortion can result in a higher compression ratio. However, when a picture is divided into one or more sub-regions (tiles, slices, or sub-pictures), the boundary processing of each sub-region may affect the coding efficiency and subjective visual quality. Adaptive control of boundary processing at each sub-region boundary is an important element in 360 media processing. Therefore, it can be advantageous to recover the current coded picture using a wrap-around padding process based on decoding of coded syntax elements.
[0019] Various aspects are described herein with reference to flowchart and / or block diagrams of methods, apparatus (systems) and computer-readable media according to various embodiments. It will be understood that each block of the flowchart illustrations and / or block diagrams, and combinations of blocks in the flowchart illustrations and / or block diagrams, can be implemented by computer-readable program instructions.
[0020] DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS The exemplary embodiments described below provide a system, method and computer program for recovering a current coded picture using a wrap-around padding process based on decoding of coded syntax elements.
[0021] 2 shows a simplified block diagram of a communication system (200) according to one embodiment of the present disclosure. The system (200) may include at least two terminals (210-220) interconnected via a network (250). For one-way transmission of data, a first terminal (210) may encode video data at a local location for transmission to the other terminal (220) via the network (250). The second terminal (220) may receive the other terminal's encoded video data from the network (250), decode the encoded video data, and display the reconstructed video data. One-way data transmission may be common in media provisioning applications, etc.
[0022] 2 illustrates a second pair of terminals (230, 240) provided to support bidirectional transmission of encoded video that may occur, for example, during a video conference. For the bidirectional transmission of data, each terminal (230, 240) may encode video data captured at a local location for transmission over the network (250) to the other terminal. Each terminal (230, 240) may also receive encoded video data transmitted by the other terminal, decode the encoded data, and display the reconstructed video data on a local display device.
[0023] In FIG. 2, the terminals (210-240) may be depicted as servers, personal computers, and smartphones, although the principles of the present disclosure are not so limited. The embodiments of the present disclosure may be applied to laptop computers, tablet computers, media players, and / or dedicated videoconferencing equipment. The network (250) represents any number of networks that convey encoded video data between the terminals (210-240), including, for example, wired and / or wireless communication networks. The communication network (250) 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 this description, the architecture and topology of the network (250) is not important to the operation of the present disclosure, unless otherwise described herein below.
[0024] 3 shows an arrangement of video encoders and decoders in a streaming environment as an example of an application of the disclosed subject matter, which is equally applicable to other video-enabled applications including, for example, videoconferencing, digital TV, storage of compressed video on digital media (including CDs, DVDs, memory sticks, etc.), etc.
[0025] The streaming system may include a capture subsystem (313), which may include, for example, a video source (301) (e.g., a digital camera) that generates an uncompressed video sample stream (302). The sample stream (302), depicted as a thick line to emphasize its high amount of data compared to an encoded video bitstream, may be processed by an encoder (303) coupled to the camera (301). The encoder (303) may include hardware, software, or a combination thereof to enable or implement aspects of the disclosed subject matter, as described in more detail below. The encoded video bitstream (304), depicted as a thin line to emphasize its lower amount of data compared to the sample stream, may be stored on a streaming server (305) for future use. One or more streaming clients (306, 308) may access the streaming server (305) to obtain copies (307, 309) of the encoded video bitstream (304). The client (306) may include a video decoder (310) that decodes an input copy (307) of an encoded video bitstream and generates an output video sample stream (311) that can be rendered on a display (312) or other rendering device (not shown). In some streaming systems, the video bitstreams (304, 307, 309) may be encoded according to a particular video encoding / compression standard. Examples of these standards include ITU-T Recommendation H.265. The developing video encoding standard is informally known as Versatile Video Coding (VVC). The disclosed subject matter may be used in the context of VVC.
[0026] FIG. 4 shows a functional block diagram of a video decoder (310) according to one embodiment of this disclosure.
[0027] The receiver (410) may receive one or more coded video sequences to be decoded by the decoder (310), and in the same or other embodiments, may receive one coded video sequence at a time, with the decoding of each coded video sequence being independent of the other coded video sequences. The coded video sequences may be received from a channel (412), which may be a hardware / software link to a storage device that stores the coded video data. The receiver (410) may receive the coded video data along with other data (e.g., coded audio data and / or auxiliary data streams), which may be forwarded to respective usage entities (not shown). The receiver (410) may separate the coded video sequences from the other data. To prevent network jitter, a buffer memory (415) may be coupled between the receiver (410) and the entropy decoder / parser (420) (hereinafter the "parser"). If the receiver 410 is receiving data from a store-and-forward device with sufficient bandwidth and controllability, or from an isochronous network, the buffer 415 may not be needed or may be small. For use with best-effort packet networks such as the Internet, the buffer 415 may be needed and may be relatively large, and advantageously of adaptive size.
[0028] The video decoder (310) may include a parser (420) for recovering symbols (421) from the entropy coded video sequence. These categories of symbols include information used to manage the operation of the decoder (310), and potentially include information for controlling a rendering device, such as a display (312), which may not be 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 may be in the form of Supplementary Enhancement Information (SEI) (SEI message) or Video Usability Information (VUI) parameter set fragments (not shown). The parser (420) 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 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 (420) may extract a set of subgroup parameters for at least one of the subgroups of pixels in the video decoder from the coded video sequence based on at least one parameter corresponding to the group. The subgroups may include a group of pictures (GOP), a picture, a tile, a slice, a macroblock, a coding unit (CU), a block, a transformation unit (TU), a prediction unit (PU), etc. The entropy decoder / parser may also extract information such as transform coefficients, quantization parameter values, motion vectors, etc. from the coded video sequence.
[0029] The parser (420) may perform entropy decoding / parsing operations on the video sequence received from the buffer (415) to generate symbols (421).
[0030] The reconstruction of the symbols (421) may involve several different units, depending on the type of coded video picture or portion thereof (e.g., inter-picture and intra-picture, inter-block and intra-block) and other factors. Which units are involved and how may be controlled by subgroup control information parsed from the coded video sequence by the parser (420). The flow of such subgroup control information between the parser (420) and the following units is not shown for clarity.
[0031] In addition to the functional blocks described above, the decoder (310) may be conceptually subdivided into a number of functional units, as described below. In a practical implementation operating under commercial constraints, many of these units may interact closely with each other and may be at least partially integrated with each other. However, for purposes of describing the disclosed subject matter, a conceptual subdivision into the following functional units is appropriate:
[0032] The first unit is a scalar / inverse transform unit (451), which receives the quantized transform coefficients as symbols (421) from the parser (420), along with control information (including which transform to use, block size, quantization factor, quantization scaling matrix, etc.) The scalar / inverse transform unit may output a block containing sample values that can be input to an aggregator (455).
[0033] In some cases, the output samples of the scaler / inverse transform (451) 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 (452). In some cases, the intra-picture prediction unit (452) uses surrounding already reconstructed information taken from the (partially reconstructed) current picture (458) to generate blocks of the same size and shape of the block being reconstructed. In some cases, the aggregator (455) adds, sample by sample, the prediction information generated by the intra-prediction unit (452) to the output sample information provided by the scaler / inverse transform unit (451).
[0034] In other cases, the output samples of the scalar / inverse transform unit (451) may relate to an inter-coded and potentially motion-compensated block. In such cases, the motion compensation prediction unit (453) may access the reference picture memory (457) to retrieve samples used for prediction. After motion compensating the retrieved samples according to the symbols (421) associated with the block, these samples may be added by the aggregator (455) to the output of the scalar / inverse transform unit (in this case called residual samples or residual signals) to generate output sample information. The addresses in the reference picture memory available to the motion compensation unit from which the motion compensation unit retrieves prediction samples may be controlled by a motion vector, for example in the form of a symbol (421) that may have X, Y and reference picture components. Motion compensation may also include interpolation of sample values retrieved from the reference picture memory when sub-sample accurate motion vectors are used, motion vector prediction mechanisms, etc.
[0035] The output samples of the aggregator (455) may be subjected to various loop filtering techniques in a loop filter unit (456). The video compression techniques may include in-loop filter techniques, controlled by parameters contained in the coded video bitstream and made available to the loop filter unit (456) as symbols (421) from the parser (420), that may be responsive to meta-information obtained during decoding of previous portions of the coded pictures or coded video sequences (in decoding order), as well as to previously reconstructed loop filtered sample values.
[0036] The output of the loop filter unit (456) may be a sample stream that may be output to the rendering device (312) and also stored in a reference picture memory (456) for use in future inter-picture prediction.
[0037] Once a particular coded picture is fully reconstructed, it may be used as a reference picture for future prediction. Once a coded picture is fully reconstructed and identified as a reference picture (e.g., by the parser (420)), the current reference picture (456) may become part of the reference picture buffer (457), and a new current picture memory may be reallocated before beginning reconstruction of the subsequent coded picture.
[0038] The video decoder (420) may perform decoding operations according to a given video compression technique, which may be documented in a standard such as ITU-T Rec. H.265. The coded video sequence may conform to the syntax specified by the video compression technique or standard being used, in the sense that the coded video sequence conforms to the syntax of the video compression technique or standard specified in the video compression technique or standard profile documents, and in particular the syntax of the video compression technique or standard specified in these profile documents. Also required for compliance is that the complexity of the coded video sequence is within a range defined by the level of the video compression technique or standard. In some cases, the level limits the maximum picture size, maximum frame rate, maximum reconstructed sample rate (e.g., measured in megasamples per second), maximum reference picture size, etc. In some cases, the limits set by the level may be further limited through a Hypothetical Reference Decoder (HRD) specification and metadata about HRD buffer management conveyed in the coded video sequence.
[0039] In one embodiment, the receiver (410) may receive additional (redundant) data along with the encoded video. The additional data may be included as part of the encoded video sequence. The additional data may be used by the video decoder (420) to properly decode the data and / or to more accurately recover the original video data. The additional data may be in the form of, for example, temporal, spatial or SNR enhancement layers, redundant slices, redundant pictures, forward error correction codes, etc.
[0040] FIG. 5 may be a functional block diagram of a video encoder (303) according to one embodiment of the present disclosure.
[0041] The encoder (303) may receive video samples from a video source (301) (not part of the encoder), which may capture video images to be encoded by the encoder (303).
[0042] The video source (301) may provide a source video sequence to be encoded by the encoder (303) in the form of a digital video sample stream, which may be of any suitable bit depth (e.g., 8-bit, 10-bit, 12-bit, etc.), any color space (e.g., BT.601 Y CrCB, RGB, etc.), and any suitable sampling structure (e.g., Y CrCb 4:2:0, Y CrCb 4:4:4). In a media presentation system, the video source (301) may be a storage device that stores pre-prepared video. In a video conferencing system, the video source (303) may be a camera that captures local image information as a video sequence. The video data may be provided as a number of individual pictures that convey motion when viewed in sequence. The pictures themselves may be organized as a spatial array of pixels, each of which 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 one embodiment, the encoder (303) may encode and compress pictures of a source video sequence into an encoded video sequence (543) in real-time or under any other time constraint required by an application. Achieving an appropriate encoding rate is one function of the controller (550). The controller controls and is operatively coupled to other functional units, as described below. Coupling is not shown for clarity. Parameters set by the controller may include rate control related parameters (picture skip, quantization, lambda value for rate distortion optimization techniques, etc.), picture size, group of pictures (GOP) layout, maximum motion vector search range, etc. Those skilled in the art can readily recognize other functions of the controller (550) that may be associated with a video encoder (303) optimized for a particular system design.
[0044] Some video encoders operate in what those skilled in the art will easily recognize as a "coding loop." As a very simplified description, the coding loop may consist of a coding part (hereafter referred to as the "source coder") of the encoder (530) (responsible for generating symbols based on the input picture to be encoded and the reference pictures) and a (local) decoder (533) embedded in the encoder (303). The decoder (533) reconstructs the symbols to generate sample data similar to what the (remote) decoder would generate (so that any compression between the symbols and the encoded video bitstream is lossless in the video compression techniques considered in the disclosed subject matter). That reconstructed sample stream is input to a reference picture memory (534). Since the decoding of the symbol stream results in bit-for-bit accurate results independent of the location of the decoder (local or remote), the contents of the reference picture buffer are also bit-for-bit accurate between the local and remote encoders. In other words, the predictive part of the encoder "sees" exactly the same sample values as the reference picture samples that the decoder "sees" when using prediction during decoding. This basic principle of reference picture synchronization (including the resulting drift when synchronization cannot be maintained, for example, due to channel errors) is well known to those skilled in the art.
[0045] The operation of the "local" decoder (533) may be the same as the "remote" decoder (310), which has already been described in detail above in connection with Figure 4. However, with brief reference to Figure 4, because symbols are available and the encoding / decoding of symbols into a coded video sequence by the entropy coder (545) and parser (420) may be lossless, the entropy decoding portion of the decoder (310), including the channel (412), receiver (410), buffer (415) and parser (420), may not be fully implemented in the local decoder (533).
[0046] An observation that can be made at this point is that any decoder technique, other than analysis / entropy decoding, present in the decoder must necessarily be present in the corresponding encoder in substantially the same functional form. For this reason, the subject matter of the disclosure focuses on the decoder operation. A description of the encoder techniques can be omitted, as they are the inverse of the decoder techniques, which are described generically. Only in certain areas are more detailed descriptions necessary, and are provided below.
[0047] As part of its operation, the source coder (530) may perform motion-compensated predictive coding, which predictively codes an input frame with reference to one or more previously coded frames from the video sequence designated as “reference frames.” In this manner, the coding engine (532) codes differences between pixel blocks of the input frame and pixel blocks of reference frames that may be selected as predictive references for the input frame.
[0048] The local video decoder (533) may decode the encoded video data of frames that may be designated as reference frames based on the symbols generated by the source coder (530). The operation of the encoding engine (532) may advantageously be a lossy process. If the encoded video data can be decoded in a video decoder (not shown in FIG. 5), the reconstructed video sequence may be a replica of the source video sequence, typically with some errors. The local video decoder (533) may replicate the decoding process that may be performed by the video decoder on the reference frames and store the reconstructed reference frames in a reference picture cache (534). In this way, the encoder (303) may locally store copies of reconstructed reference frames that have common content as the reconstructed reference frames (without transmission errors) obtained by the far-end video decoder.
[0049] The predictor (535) may perform a prediction search for the coding engine (532). That is, for a new frame to be coded, the predictor (535) may search the reference picture memory (534) for sample data (as candidate reference pixel blocks) or specific metadata (reference picture motion vectors, block shapes, etc.), which may serve as suitable prediction references for the new picture. The predictor (535) may operate on a sample block-by-pixel block basis to find suitable prediction references. In some cases, the input picture determined by the search results obtained by the predictor (535) may have prediction references drawn from multiple reference pictures stored in the reference picture memory (534).
[0050] The controller (550) may manage the encoding operations of the video coder (530), 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 (545), which converts the symbols produced by the various functional units into a coded video sequence by losslessly compressing the symbols according to techniques known to those skilled in the art, such as, for example, Huffman coding, variable length coding, arithmetic coding, etc.
[0052] The transmitter (540) may buffer the encoded video sequence produced by the entropy coder (545) and prepare it for transmission over a communication channel (560), which may be a hardware / software link to a storage device that stores the encoded video data. The transmitter (540) may merge the encoded video data from the video coder (530) with other data to be transmitted, such as encoded audio data and / or an auxiliary data stream (not shown).
[0053] A controller (550) may manage the operation of the encoder (303). During encoding, the controller (550) may assign each coded picture a particular coding picture type, which 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 a sequence as a source of prediction. Some video codecs allow different types of Intra pictures, including, for example, Independent Decoder Refresh (IDR) pictures. Those skilled in the art will recognize these variations of I-pictures and their respective uses and characteristics.
[0055] A predictive picture (P-picture) may be encoded and decoded using intra- or inter-prediction, using at most one motion vector and reference index to predict the sample values of each block.
[0056] Bidirectionally predicted pictures (B-pictures) may be encoded and decoded using intra- or inter-prediction, using up to two motion vectors and reference indices to predict the sample values of each block. Similarly, multiple predicted pictures may use more than two reference pictures and associated metadata for the reconstruction of a single block.
[0057] In general, a source picture may be spatially subdivided into multiple sample blocks (e.g., blocks of 4x4, 8x8, 4x8 or 16x16 samples, respectively) and 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 blocks. For example, blocks of an I-picture may be non-predictively coded or may be predictively coded with reference to already coded blocks of the same picture (spatial or intra prediction). Pixel blocks of a P-picture may be non-predictively coded via spatial or temporal prediction with reference to the reference picture coded one step before. Blocks of a B-picture may be predictively coded via spatial or temporal prediction with reference to the reference picture coded one or two steps before.
[0058] The video coder (303) may perform encoding operations according to a given video encoding technique or standard, such as ITU-T Rec. H.265. In its operation, the video coder (303) 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 being used.
[0059] In one embodiment, the transmitter (540) may transmit additional data along with the coded video. The video coder (530) may include such data as part of the coded video sequence. The additional data may include other types of redundant data, such as temporal / spatial / SNR enhancement layers, redundant pictures and slices, Supplementary Enhancement Information (SEI) messages, Visual Usability Information (VUI) parameter set fragments, etc.
[0060] In one embodiment, 360 video is captured by a set of cameras or camera devices with multiple lenses. The cameras typically cover all directions around a center point of the camera set. Pictures from the same point in time are stitched, possibly rotated, projected, and mapped onto the picture. The packed pictures are encoded and streamed into a coded video bitstream according to a specific media container file format. The file contains metadata such as projection information and packing information.
[0061] In one embodiment, the 360 video may be projected into the 2D video using equirectangular projection (ERP). ERP projection may result in seam artifacts. A padded ERP (PERP) format may effectively reduce the seam artifacts in the reconstruction viewport that encompasses the left and right boundaries of the ERP picture. However, padding and blending may not be sufficient to completely solve the seam problem.
[0062] In one embodiment, horizontal geometric padding may be applied to the ERP or PERP to reduce splicing artifacts. The padding process for the PERP may be the same as for the ERP, except that the offset may be based on the unpadded ERP width instead of the picture width to account for the size of the padded region. If a reference block is outside the left (right) reference picture boundary, it may be replaced with a "wrapped-around" reference block shifted right (left) by the ERP width. Conventional repeated padding may be used vertically. Blending of left and right padding regions is looped out as a post-processing operation.
[0063] In one embodiment, syntax enabling horizontal geometric padding of reference pictures for the ERP and PERP formats is shown in FIG.
[0064] sps_ref_wrapaund_enabled_flag (602) equal to 1 specifies that horizontal wraparound motion compensation is used for inter prediction. sps_ref_wrapaund_enabled_flag equal to 0 specifies that this motion compensation method is not applied.
[0065] ref_wraparound_offset (603) specifies the offset in luma samples used to calculate the horizontal wraparound position. ref_wraparound_offset shall be greater than pic_width_in_luma_samples-1, not greater than pic_width_in_luma_samples, and an integer multiple of MinCbSizeY.
[0066] In one embodiment, syntax elements that enable horizontal geometric padding of reference pictures for the ERP and PERP formats are shown in FIG.
[0067] sps_ref_wraparound_enabled_flag (702) equal to 1 specifies that horizontal wraparound motion compensation is used for inter prediction. sps_ref_wraparound_enabled_flag equal to 0 specifies that this motion compensation method is not applied.
[0068] left_wraparound_padding_width (703) specifies the width of the left padding area in luma samples. ref_wraparound_offset shall be greater than or equal to 0, not greater than pic_width_in_luma_samples / 2, and an integer multiple of MinCbSizeY.
[0069] right_wraparound_padding_width (704) specifies the width of the right padding area in luma samples. ref_wraparound_offset shall be greater than or equal to 0, not greater than pic_width_in_luma_samples / 2, and an integer multiple of MinCbSizeY.
[0070] Referring now to FIG. 8, an operational flow chart illustrating steps of a method 900 for encoding video data is shown.
[0071] At 901, the method 900 includes analyzing a parameter set.
[0072] At 902, the method 900 includes decoding picture partition information.
[0073] At 903, the method 900 includes determining whether padding is applied to a boundary of the subregion.
[0074] At 904, the method 900 includes analyzing a padding type if padding is applied to the boundaries of the subregion.
[0075] At 905, the method 900 includes decoding each sub-region without padding if padding is not applied to a boundary of the sub-region.
[0076] At 906, the method 900 includes determining whether wraparound padding is applied.
[0077] At 907, the method 900 includes padding the boundaries of the subregion with wrap-around padding, if wrap-around padding is applied.
[0078] At 908, the method 900 includes padding a boundary of the subregion with non-wraparound padding if wraparound padding is not applied.
[0079] In one embodiment, the wraparound offset value may be obtained by the following derivation process:
[0080] If ref_wraparound_offset is present, wrapAroundOffset=ref_wraparound_offset Otherwise, if left_wraparound_padding_width and right_wraparound_padding_width are present, wrapAroundOffset=pic_width_in_luma_samples-(left_wraparound_padding_width+right_wraparound_padding_width) Otherwise, wrapAroundOffset=pic_width_in_luma_samples In one embodiment, the luma and chroma sample interpolation process may be modified to allow for horizontal geometric padding of reference pictures for the ERP and PERP formats.
[0081]
number
[0082] The variables shift1, shift2, and shift3 are derived as follows. The variable shift1 is set equal to Min(4, BitDepth Y - 8), the variable shift2 is set equal to 6, and the variable shift3 is set equal to Max(2, 14 - BitDepth Y ). The variable picW is set equal to pic_width_in_luma_samples, and the variable picH is set equal to pic_height_in_luma_samples. The variable xOffset is set equal to wrapAroundOffset. For each 1 / 16 fractional sample position p equal to xFrac L or yFrac L , the luminance interpolation filter coefficient f L [p] may be specified.
[0083] The predicted luminance sample value predSampleLX L is derived as follows. When both xFrac L and yFrac L are equal to 0, the following applies. When sps_ref_wraparound_enabled_flag is equal to 0, the value of predSampleLX L is derived as predSampleLX L = refPicLX L [Clip3(0, picW - 1, xInt L )][Clip3(0, picH - 1, yInt L )] << shift3. Otherwise, the value of predSampleLX L is derived as predSampleLX L = refPicLX L [ClipH(xOffset, picW, xInt L )][Clip3(0, picH - 1, yInt L )] << shift3. Otherwise, when xFrac L is not equal to 0 and yFrac L is equal to 0, the following applies. The value of yPos L is the value of yPosL =Clip3(0,picH-1,yInt L ) is derived as
[0084] If sps_ref_wraparound_enabled_flag is 0, predSampleLX L The value of is derived as follows: predSampleLX L =(f L [xFrac L ][0]*refPicLX L [Clip3(0,picW-1,xInt L -3)][yPos L ]+ f L [xFrac L ][1]*refPicLX L [Clip3(0,picW-1,xInt L -2)][yPos L ]+ f L [xFrac L ][2]*refPicLX L [Clip3(0,picW-1,xInt L -1)][yPos L ]+ f L [xFrac L ][3]*refPicLX L [Clip3(0,picW-1,xInt L )][yPos L ]+ f L [xFrac L ][4]*refPicLX L [Clip3(0,picW-1,xInt L +1)][yPos L ]+ f L [xFrac L ][5]*refPicLX L [Clip3(0,picW-1,xInt L +2)][yPos L ]+ f L[xFrac L ][6]*refPicLX L [Clip3(0,picW-1,xInt L +3)][yPos L ]+ f L [xFrac L ][7]*refPicLX L [Clip3(0,picW-1,xInt L +4)][yPos L ])>>shift1 Otherwise, predSampleLX L The value of is derived as follows: predSampleLX L =(f L [xFrac L ][0]*refPicLX L [ClipH(xOffset,picW,xInt L -3)][yPos L ]+ f L [xFrac L ][1]*refPicLX L [ClipH(xOffset,picW,xInt L -2)][yPos L ]+ f L [xFrac L ][2]*refPicLX L [ClipH(xOffset,picW,xInt L -1)][yPos L ]+ f L [xFrac L ][3]*refPicLX L [ClipH(xOffset,picW,xInt L )][yPos L ]+ f L [xFrac L ][4]*refPicLX L [ClipH(xOffset,picW,xInt L +1)][yPos L ]+ f L [xFrac L ][5]*refPicLX L [ClipH(xOffset,picW,xInt L +2)][yPos L ]+ f L [xFrac L ][6]*refPicLX L [ClipH(xOffset,picW,xInt L +3)][yPos L ]+ f L [xFrac L ][7]*refPicLX L [ClipH(xOffset,picW,xInt L +4)][yPos L ])>>shift Instead, xFrac L is equal to 0, and yFrac L If is not equal to 0, predSampleLX L The value of is derived as follows: If sps_ref_wraparound_enabled_flag is equal to 0, then xPos L The value of xPos L =Clip3(0,picW-1,xInt L ) otherwise, xPos L The value of xPos L =ClipH(xOffset,picW,xInt L ) is derived as
[0085] Predicted luminance sample value predSampleLX L is derived as follows: predSampleLX L =(f L [yFrac L ][0]*refPicLX L [xPos L ][Clip3(0,picH-1,yInt L -3)]+ f L [yFracL ][1]*refPicLX L [xPos L ][Clip3(0,picH-1,yInt L -2)]+ f L [yFrac L ][2]*refPicLX L [xPos L ][Clip3(0,picH-1,yInt L -1)]+ f L [yFrac L ][3]*refPicLX L [xPos L ][Clip3(0,picH-1,yInt L )]+ f L [yFrac L ][4]*refPicLX L [xPos L ][Clip3(0,picH-1,yInt L +1)]+ f L [yFrac L ][5]*refPicLX L [xPos L ][Clip3(0,picH-1,yInt L +2)]+ f L [yFrac L ][6]*refPicLX L [xPos L ][Clip3(0,picH-1,yInt L +3)]+ f L [yFrac L ][7]*refPicLX L [xPos L ][Clip3(0,picH-1,yInt L +4)])>>shift1 Instead, xFrac L is not equal to 0 and yFrac L If is not equal to 0, predSampleLX LThe value of is derived as follows: If sps_ref_wraparound_enabled_flag is equal to 0, the sample array temp[n] (n=0..7) is derived as follows: yPos L =Clip3(0,picH-1,yInt L +n-3) temp[n]=(f L [xFrac L ][0]*refPicLX L [Clip3(0,picW-1,xInt L -3)][yPos L ]+ f L [xFrac L ][1]*refPicLX L [Clip3(0,picW-1,xInt L -2)][yPos L ]+ f L [xFrac L ][2]*refPicLX L [Clip3(0,picW-1,xInt L -1)][yPos L ]+ f L [xFrac L ][3]*refPicLX L [Clip3(0,picW-1,xInt L )][yPos L ]+ f L [xFrac L ][4]*refPicLX L [Clip3(0,picW-1,xInt L +1)][yPos L ]+ f L [xFrac L ][5]*refPicLX L [Clip3(0,picW-1,xInt L +2)][yPos L ]+ f L [xFrac L ][6]*refPicLXL [Clip3(0,picW-1,xInt L +3)][yPos L ]+ f L [xFrac L ][7]*refPicLX L [Clip3(0,picW-1,xInt L +4)][yPos L ])>>shift1 Otherwise, the sample array temp[n] (n=0..7) is derived as follows: yPos L =Clip3(0,picH-1,yInt L +n-3) temp[n]=(f L [xFrac L ][0]*refPicLX L [ClipH(xOffset,picW,xIntL-3)][yPos L ]+ f L [xFrac L ][1]*refPicLX L [ClipH(xOffset,picW,xInt L -2)][yPos L ]+ f L [xFrac L ][2]*refPicLX L [ClipH(xOffset,picW,xInt L -1)][yPos L ]+ f L [xFrac L ][3]*refPicLX L [ClipH(xOffset,picW,xInt L )][yPos L ]+ f L [xFrac L ][4]*refPicLX L [ClipH(xOffset,picW,xInt L +1)][yPos L ]+ f L [xFrac L ][5]*refPicLX L [ClipH(xOffset,picW,xInt L +2)][yPos L ]+ f L [xFrac L ][6]*refPicLX L [ClipH(xOffset,picW,xInt L +3)][yPos L ]+ f L [xFrac L ][7]*refPicLX L [ClipH(xOffset,picW,xInt L +4)][yPos L ])>>shift1 Predicted luminance sample value predSampleLX L is derived as follows: predSampleLX L =(f L [yFrac L ][0]*temp[0]+ f L [yFrac L ][1]*temp[1]+ f L [yFrac L ][2]*temp[2]+ f L [yFrac L ][3]*temp[3]+ f L [yFrac L ][4]*temp[4]+ f L [yFrac L ][5]*temp[5]+ f L [yFrac L ][6]*temp[6]+ f L [yFrac L ][7]*temp[7])>>shift2 Chrominance sample interpolation process. The input to this process is the chrominance position in whole samples (xInt C, yInt C ) and the chrominance position in 1 / 32 fractional sample units (xFrac C ,yFrac C ) and the color difference reference sample array refPicLX C The output of this process may include predicted chrominance sample values predSampleLX C may include:
[0086] The variables shift1, shift2, and shift3 are derived as follows: Variable shift1 is Min(4,BitDepth C -8), variable shift2 is set equal to 6, and variable shift3 is set equal to Max(2,14-BitDepth C The variable picW C pic_width_in_luma_samples / SubWidth C The variable picH is set equal to C pic_height_in_luma_samples / SubHeight C xFrac C or yFrac C The luminance interpolation filter coefficients f for each 1 / 32 fractional sample position p are equal to C [p] may be specified.
[0087] Predicted luminance sample value predSampleLX C is derived as follows: xFrac C and yFrac C If both are equal to 0, the following applies: If sps_ref_wraparound_enabled_flag is equal to 0, then predSampleLX C The value of predSampleLX C =refPicLX C [Clip3(0,picW C -1,xInt C )][Clip3(0,picHC -1, yInt C )] is derived as <shift3>.
[0088] Otherwise, the value of predSampleLX C is predSampleLX C = refPicLX C [ClipH(xOffset C , picW C , xInt C )][Clip3(0, picH C -1, yInt C )] is derived as <shift3>.
[0089] Otherwise, when xFrac C is not equal to 0 and yFrac C is equal to 0, the following applies. The value of yPos C is yPos C = Clip3(0, picH C -1, yInt C ) is derived. When sps_ref_wraparound_enabled_flag is 0, the value of predSampleLX C is derived as follows. predSampleLX C =(f C [xFrac C )[0] * refPicLX C [Clip3(0, picW C -1, xInt C -1)][yInt C + f C [xFrac C )[1] * refPicLX C [Clip3(0, picW C -1, xInt C )][yInt C + f C [xFrac C )[2] * refPicLX C [Clip3(0, picW C -1, xIntC +1)][yInt C ]+ f C [xFrac C ][3]*refPicLX C [Clip3(0,picW C -1,xInt C +2)][yInt C ])>>shift1 Otherwise, predSampleLX C The value of is derived as follows: predSampleLX C =(f C [xFrac C ][0]*refPicLX C [ClipH(xOffset C ,picW C ,xInt C -1)][yPos C ]+ f C [xFrac C ][1]*refPicLX C [ClipH(xOffset C ,picW C ,xInt C )][yPos C ]+ f C [xFrac C ][2]*refPicLX C [ClipH(xOffset C ,picW C ,xInt C +1)][yPos C ]+ f C [xFrac C ][3]*refPicLX C [ClipH(xOffset C ,picW C ,xInt C +2)][yPos C ])>>shift1 Instead, xFrac C is equal to 0, and yFrac C If is not equal to 0, predSampleLXC The value of is derived as follows: If sps_ref_wraparound_enabled_flag is equal to 0, then xPos C The value of xPos C =Clip3(0,picW C -1,xInt C ) otherwise, xPos C The value of xPos C =ClipH(xOffset C ,picW C ,xInt C ) is derived as
[0090] Predicted color difference sample value predSampleLX C is derived as follows: predSampleLX C =(f C [yFrac C ][0]*refPicLX C [xPos C ][Clip3(0,picH C -1,yInt C -1)]+ f C [yFrac C ][1]*refPicLX C [xPos C ][Clip3(0,picH C -1,yInt C )]+ f C [yFrac C ][2]*refPicLX C [xPos C ][Clip3(0,picH C -1,yInt C +1)]+ f C [yFrac C ][3]*refPicLX C [xPos C ][Clip3(0,picH C -1,yInt C +2)])>>shift1 Instead, xFrac Cis not equal to 0 and yFrac C If is not equal to 0, predSampleLX C The value of is derived as follows: If sps_ref_wraparound_enabled_flag is equal to 0, the sample array temp[n] (n=0..3) is derived as follows: yPos C =Clip3(0,picH C -1,yInt C +n-1) temp[n]=(f C [xFrac C ][0]*refPicLX C [Clip3(0,picW C -1,xInt C -1)][yPos C ]+ f C [xFrac C ][1]*refPicLX C [Clip3(0,picW C -1,xInt C )][yPos C ]+ f C [xFrac C ][2]*refPicLX C [Clip3(0,picW C -1,xInt C +1)][yPos C ]+ f C [xFrac C ][3]*refPicLX C [Clip3(0,picW C -1,xInt C +2)][yPos C ])>>shift1 Otherwise, the sample array temp[n] (n=0..3) is derived as follows: yPos C =Clip3(0,picH C -1,yInt C +n-1) temp[n]=(f C [xFracC ][0]*refPicLX C [ClipH(xOffset C ,picW C ,xInt C -1)][yPos C ]+ f C [xFrac C ][1]*refPicLX C [ClipH(xOffset C ,picW C ,xInt C )][yPos C ]+ f C [xFrac C ][2]*refPicLX C [ClipH(xOffset C ,picW C ,xInt C +1)][yPos C ]+ f C [xFrac C ][3]*refPicLX C [ClipH(xOffset C ,picW C ,xInt C +2)][yPos C ])>>shift1 Predicted color difference sample value predSampleLX C is derived as follows: predSampleLX C =(f C [yFrac C ][0]*temp[0]+ f C [yFrac C ][1]*temp[1]+ f C [yFrac C ][2]*temp[2]+ f C [yFrac C ][3]*temp[3])>>shift2 In one embodiment, if sps_ref_wraparound_enabled_flag is equal to 0 or is not present, conventional repeat padding may be applied. Otherwise, wraparound padding may be applied.
[0091] In one embodiment, wrap-around padding may be applied to both horizontal and vertical boundaries. A flag in a high-level syntax structure may indicate that wrap-around padding is applied both horizontally and vertically.
[0092] In one embodiment, wrap-around padding may be applied at tile or tile group boundaries. A flag in a high-level syntax structure may indicate that wrap-around padding is applied both horizontally and vertically.
[0093] In one embodiment, the reference picture may be the same as the current picture for motion compensated prediction. Wrap-around padding may be applied to the boundaries of the current picture when the current picture is a reference.
[0094] In one embodiment, when a picture is divided into one or more sub-pictures, which are rectangular regions of one or more slices, the boundaries of each sub-picture may or may not be treated as picture boundaries. Treating a sub-picture as a picture implies that the boundaries of each sub-picture may be padded for motion compensation prediction.
[0095] 9, in an SPS (or any other parameter set), subpic_treated_as_pic_flag[i] equal to 1 specifies that the i-th subpicture of each coded picture in the CVS is treated as a picture in the decoding process. Subpic_treated_as_pic_flag[i] equal to 0 specifies that the i-th subpicture of each coded picture in the CVS is not treated as a picture in the decoding process. If not present, the value of subpic_treated_as_pic_flag[i] is inferred to be equal to 0.
[0096] In the same embodiment, a flag subpic_ref_wraparound_enabled_flag[i] is signaled if subpic_treated_as_pic_flag[i] is equal to 1, i.e., indicates that the i-th subpicture is treated as a picture. subpic_ref_wraparound_enabled_flag[i] equal to 1 specifies that horizontal wraparound motion compensation is applied in inter prediction at the boundary of the i-th subpicture of each coded picture. subpic_ref_wraparound_enabled_flag[i] equal to 0 specifies that horizontal wraparound motion compensation is not applied at the boundary of the i-th subpicture of each coded picture.
[0097] In the same embodiment, subpic_ref_wraparound_offset_minus1[i]+1 specifies the offset of the i-th subpicture of each coded picture used to calculate the horizontal wraparound position in units of MinCbSizeY luma samples.
[0098] In the same embodiment, the interpolation filtering process is as follows: Luminance sample interpolation filtering process. The input to this process is the luminance position in whole sample units (xInt L ,yInt L ) and the luminance position in fractional sample units (xFrac L,yFrac L ) and the luminance position (xSbInt L ,ySbInt L ) and the luminance reference sample array refPicLX L The output of this process may include a predicted luma sample value predSampleLX, a half-sample interpolation filter index hpelIfIdx, a variable sbWidth that specifies the width of the current sub-block, a variable sbHeight that specifies the height of the current sub-block, and a luma position (xSb, ySb) that specifies the top left sample of the current sub-block relative to the top left luma sample of the current picture. L may include:
[0099] The variables shift1, shift2, and shift3 are derived as follows: Variable shift1 is Min(4,BitDepth Y -8), variable shift2 is set equal to 6, and variable shift3 is set equal to Max(2,14-BitDepth Y The variable picW is set equal to pic_width_in_luma_samples, and the variable picH is set equal to pic_height_in_luma_samples.
[0100] xFrac L or yFrac L The luminance interpolation filter coefficients f for each 1 / 16 fractional sample position p are equal to L [p] is derived as follows: If MotionModelIdc[xSb][ySb] is greater than 0 and sbWidth and sbHeight are both equal to 4, the luminance interpolation filter coefficient f L [p] may be specified. Otherwise, the luminance interpolation filter coefficients f L [p] depends on hpelIfIdx and is specified in Table 8-11.
[0101] Luminance position in whole sample units (xInti ,yInt i ) is derived as follows, for i=0...7: If subpic_treated_as_pic_flag[SubPicIdx] is equal to 1, the following applies: xInt i =Clip3(SubPicLeftBoundaryPos,SubPicRightBoundaryPos,subpic_ref_wraparound_enabled_flag[SubPicIdx] ClipH((subpic_ref_wraparound_offset_minus1[SubPicIdx]+1)*MinCbSizeY,SubPicRightBoundaryPos,xInt L +i-3): xInt L +i-3) yInt i =Clip3(SubPicTopBoundaryPos,SubPicBotBoundaryPos,yIntL+i-3) Otherwise (subpic_treated_as_pic_flag[SubPicIdx] is equal to 0), the following applies: xInt i =Clip3(0,picW-1,sps_ref_wraparound_enabled_flag ClipH((sps_ref_wraparound_offset_minus1+1)*MinCbSizeY,picW,xInt L +i-3): xInt L +i-3) yInt i =Clip3(0,picH-1,yIntL+i-3) The luminance position in whole sample units is further modified as follows for i=0...7: xInt i =Clip3(xSbInt L -3,xSbInt L +sbWidth+4,xInt i ) yInt i =Clip3(ySbInt L -3,ySbInt L +sbHeight+4,yInt i ) Predicted luminance sample value predSampleLX L is derived as follows: xFrac L and yFrac L If both are 0, predSampleLX L The value of is derived as follows: predSampleLX L =refPicLX L [xInt3][yInt3]< <shift3 Instead, xFrac L is not equal to 0 and yFrac L If is equal to 0, predSampleLX L The value of is
[0102]
number
[0103] Instead, xFrac L is equal to 0, and yFrac L If is not equal to 0, predSampleLX L The value of is
[0104]
number
[0105] Instead, xFrac L is not equal to 0 and yFrac L If is not equal to 0, predSampleLX L The value of is derived as follows:
[0106] The sample array temp[n] (n=0..7) is
[0107]
number
[0108] Predicted luminance sample value predSampleLX L teeth,
[0109]
number
[0110] In the same or other embodiments, referring to Figure 10, in the SPS (or any other parameter set), all_subpic_treated_as_pic_flag equal to 1 specifies that any subpicture of each coded picture in the CVS is treated as a picture in the decoding process, and subpic_treated_as_pic_flag[i] equal to 0 specifies that any subpicture of each coded picture in the CVS is not treated as a picture in the decoding process.
[0111] In the same embodiment, the all_subpic_ref_wraparound_enabled_flag flag is signaled if all_subpic_treated_as_pic_flag[i] is equal to 1. all_subpic_ref_wraparound_enabled_flag equal to 1 specifies that horizontal wraparound motion compensation is applied to inter prediction at any sub-picture boundary of each coded picture. all_sps_ref_wraparound_enabled_flag equal to 0 specifies that horizontal wraparound motion compensation is not applied at any sub-picture boundary of each coded picture.
[0112] In the same embodiment, all_subpic_ref_wraparound_offset_minus1[i]+1 specifies the offset of one of the subpictures of each coded picture used to calculate the horizontal wraparound position in units of MinCbSizeY luma samples. In the same embodiment, if subpic_treated_as_pic_flag[i] is not present, the value of subpic_treated_as_pic_flag[i] is inferred to be equal to all_subpic_treated_as_pic_flag.
[0113] In the same embodiment, if subpic_ref_wraparound_enabled_flag[i] is not present, the value of subpic_ref_wraparound_enabled_flag[i] is inferred to be equal to all_subpic_ref_wraparound_enabled_flag.
[0114] In the same embodiment, if subpic_ref_wraparound_offset_minus1[i] is not present, the value of subpic_ref_wraparound_offset_minus1[i] is inferred to be equal to all_subpic_ref_wraparound_offset_minus1.
[0115] The techniques for wraparound padding described above may be implemented as computer software using computer readable instructions or physically stored on one or more computer readable media. For example, FIG. 11 illustrates a computer system 800 suitable for implementing certain embodiments of the disclosed subject matter.
[0116] Computer software may be encoded using any suitable machine code or computer language, which may be assembled, compiled, linked, or similar mechanisms to generate code including instructions, which may be executed by a computer central processing unit (CPU), graphics processing unit (GPU), or the like, either directly or through an interpreter, microcode execution, or the like.
[0117] 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, etc.
[0118] 11 for computer system 800 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, nor should the arrangement of components be interpreted as having any dependency or requirement regarding any one or combination of components illustrated in the exemplary embodiment of computer system 800.
[0119] The computer system 800 may include certain human interface input devices. Such human interface input devices may be responsive to input by one or more human users, for example, through tactile input (keystrokes, swipes, data glove movements, etc.), audio input (voice, clapping, etc.), visual input (gestures, etc.), and olfactory input (not shown). Human interface devices may also be used to capture certain media not necessarily directly associated with conscious human input, such as audio (e.g., speech, music, ambient sounds), images (scanned images, photographic images obtained from a still camera, etc.), and video (2D video, 3D video including stereoscopic pictures, etc.).
[0120] The input human interface devices may include one or more of a keyboard 801 , a mouse 802 , a trackpad 803 , a touch screen 810 , a data glove 804 , a joystick 805 , a microphone 806 , a scanner 807 , and a camera 808 .
[0121] The computer system 800 may also include certain human interface output devices. Such human interface output devices may stimulate one or more of the human user's senses, for example, through haptic output, sound, light, and smell / taste. Such human interface output devices may include haptic output devices (e.g., haptic feedback via a touch screen 810, data gloves 804, or joystick 805, although there may be haptic feedback devices that do not function as input devices), audio output devices (speakers 809, headphones (not shown), etc.), visual output devices (screens 810 including CRT screens, LCD screens, plasma screens, OLED screens, each of which may or may not have touch screen input capability, each of which may or may not have haptic feedback capability, some of which may be capable of outputting two-dimensional visual output or three or more dimensional output through such means as stereoscopic output, virtual reality glasses (not shown), holographic displays, and smoke tanks (not shown)), and printers (not shown).
[0122] The computer system 800 may also include human accessible storage devices and associated media such as optical media including CD / DVD ROM / RW 820 with CD / DVD or similar media 821, thumb drives 822, removable hard drives or solid state drives 823, legacy magnetic media such as tapes and floppy disks (not shown), specialized ROM / ASIC / PLD based devices such as security dongles (not shown), etc.
[0123] Additionally, those skilled in the art should understand that the term "computer-readable medium" as used in connection with the subject matter disclosed herein does not include transmission media, carrier waves, or other non-transitory signals.
[0124] The computer system 800 may also include interfaces to one or more communication networks. The networks may be, for example, wireless, wired, optical. The networks may be local, wide area, metropolitan, vehicular and industrial, real-time, delay tolerant, etc. Examples of networks include Ethernet, wireless LAN, cellular networks (including GSM, 3G, 4G, 5G, LTE, etc.), TV wired or wireless wide area digital networks (including cable TV, satellite TV, and terrestrial broadcast TV), vehicular and industrial (including CANBus), etc. Certain networks typically require an external network interface adapter (e.g., a USB port on the computer system 800, etc.) that is attached to a particular general-purpose data port or peripheral bus 849, while other network interface adapters are typically integrated into the core of the computer system 800 by being attached to a system bus (e.g., an Ethernet interface to a PC computer system or a cellular network to a smartphone computer system) as described below. Using any of these networks, the computer system 800 can communicate with other entities. Such communications may be one-way receive only (e.g., broadcast TV), one-way transmit only (e.g., CANbus to a particular CANbus device), or bidirectional, for example, to other computer systems using local or wide area digital networks. Specific protocols and protocol stacks may be used in each of these networks and network interfaces.
[0125] The above-mentioned human interface devices, human accessible storage devices and network interfaces may be attached to core 840 of computer system 800 .
[0126] The core 840 may include one or more central processing units (CPUs) 841, graphics processing units (GPUs) 842, specialized programmable processing units in the form of field programmable gate arrays (FPGAs) 843, hardware accelerators for specific tasks 844, etc. These devices may be connected through a system bus 848, along with read only memory (ROM) 845, random access memory 846, and internal mass storage (internal non-user accessible hard drive, SSD, etc.) 847. In some computer systems, the system bus 848 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 848 or through a peripheral bus 849. Peripheral bus architectures include PCI, USB, etc.
[0127] The CPU 841, GPU 842, FPGA 843 and accelerator 844 may execute certain instructions, which in combination may constitute the above computer code. The computer code may be stored in ROM 845 or RAM 846. Also, temporary data may be stored in RAM 846, while persistent data may be stored in, for example, internal mass storage device 847. Fast storage and retrieval in 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 841, GPU 842, mass storage device 847, ROM 845, RAM 846, etc.
[0128] The computer-readable medium may bear computer code 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 skilled in the computer software arts.
[0129] By way of example and not limitation, the architecture 800, and in particular a computer system having a core 840, may provide functionality as a result of a processor (including a CPU, GPU, FPGA, accelerator, etc.) executing software embodied in one or more tangible computer-readable media. Such computer-readable media may be media associated with a user-accessible mass storage device as described above, as well as specific storage of the core 840 of a non-transitory nature, such as a mass storage device 847 internal to the core or a ROM 845. Software implementing various embodiments of the present disclosure may be stored in such devices and executed by the core 840. The computer-readable media may include one or more memory devices or chips according to specific needs. The software may cause the core 840, and in particular the processor therein (including a CPU, GPU, FPGA, etc.) to perform certain operations or certain portions of certain operations described herein, including defining data structures stored in RAM 846 and modifying such data structures according to operations defined by the software. Additionally or alternatively, a computer system may provide functionality as a result of hardwired or otherwise embodied logic in circuitry (e.g., accelerator 844) that may operate in place of or in conjunction with software to perform particular operations or portions of particular operations described herein. References to software include logic, and vice versa, where appropriate. References to computer-readable media may include circuitry (such as an integrated circuit (IC)) that stores software for execution, circuitry embodying logic for execution, or both, where appropriate. The present disclosure includes any appropriate combination of hardware and software.
[0130] While this disclosure describes several exemplary embodiments, there are alterations, permutations, and various substitute equivalents that fall within the scope of this disclosure. It will thus be recognized that those skilled in the art will be able to devise numerous systems and methods that, although not explicitly shown or described herein, embody the principles of the present disclosure and are therefore within the spirit and scope of the present disclosure.
Claims
1. 1. A processor-implemented method of video decoding, comprising: decoding a coding syntax element corresponding to a wrap-around padding process and a first flag indicating that the sub-picture is to be treated as a picture in a decoding process; recovering at least one current coded picture using the wrap-around padding process; Including, the coding syntax element includes a second flag indicating whether the wrap-around padding process is applied, a width of a left padding area in luma samples, and a width of a right padding area in luma samples; When the first flag indicates that a sub-picture is treated as a picture in a decoding process and the second flag indicates that the wrap-around padding process is applied, the wrap-around padding process is applied to a boundary of the sub-picture, which is a rectangular area divided from the current picture, that is different from a boundary of the current picture; A method according to claim 1, wherein a wraparound offset value is derived by subtracting a width of a left padding area in luma samples and a width of a right padding area in luma samples from a picture width in luma samples.
2. The method of claim 1 , wherein pixel locations for motion compensated prediction in a reference picture are determined by interpreting the syntax elements corresponding to the wrap-around padding operation by a clipping operation.
3. The method of claim 2 , wherein fractional pixels are interpolated for motion compensated prediction based on the determined pixel locations.
4. 4. The method of claim 1, wherein the at least one reconstructed current picture is stored for use as a reference picture for motion compensation.
5. The method of claim 4 , wherein the wrap-around padding process is applied at a boundary of the at least one reconstructed current picture.
6. The method according to claim 1 , wherein the wrap-around padding is applied at horizontal or vertical boundaries, or at both horizontal and vertical boundaries.
7. The method of claim 6 , wherein a flag in a high level syntax structure indicates whether the wrap-around padding process is applied at horizontal or vertical boundaries, or at both horizontal and vertical boundaries.
8. 1. An apparatus for video decoding, comprising: one or more memories configured to store a computer program; one or more processors configured to access and execute said computer programs to implement the method of any one of claims 1 to 7; An apparatus comprising:
9. 1. A computer program for video decoding, comprising: A computer program causing one or more computers to carry out the method according to any one of claims 1 to 7.
10. 1. A processor-implemented method of video encoding, comprising: encoding a syntax element corresponding to a wrap-around padding process used to reconstruct the at least one encoded current picture and a first flag indicating that the sub-picture is treated as a picture in the decoding process; transmitting the syntax element and the first flag; Including, the syntax element includes a second flag indicating whether the wrap-around padding process is applied, a width of a left padding area in luma samples, and a width of a right padding area in luma samples; When the first flag indicates that a sub-picture is treated as a picture in a decoding process and the second flag indicates that the wrap-around padding process is applied, the wrap-around padding process is applied to a boundary of the sub-picture, which is a rectangular area divided from the current picture, that is different from a boundary of the current picture; A method according to claim 1, wherein a wraparound offset value is derived by subtracting a width of a left padding area in luma samples and a width of a right padding area in luma samples from a picture width in luma samples.
Citation Information
Cited By
Method for padding processing with sub-region partition in video stream
JP2023126347A