Coder and decoder, coding method and decoding method for independent coding regions free dift fill and hash
By filtering the boundaries of independent coding regions in the video encoder and decoder, and using reference blocks and filter kernels to correct boundary effects, the drift problem in image boundary processing in the HEVC standard is solved, improving coding efficiency and image quality.
Patent Information
- Application Number
- CN202511431189.4
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2019-05-22
- Filing Date
- 2020-05-20
- Publication Date
- 2026-01-20
AI Technical Summary
Existing video encoders and decoders are insufficient in parallel processing capabilities. In particular, in the HEVC standard, there is a drift problem in the boundary processing between independent coding regions of an image, which affects coding efficiency and quality.
A video encoder and decoder are provided that filter the boundaries between independent coding regions of an image, use reference blocks for decoding and encoding, ensure that boundary filtering only affects predefined sample groups and avoids affecting other samples, and correct the influence range of boundary filtering through a filter kernel.
It improves the efficiency and quality of video encoding and decoding, reduces drift in boundary processing, enhances parallel processing capabilities, and improves the accuracy and consistency of image reconstruction.
Smart Images

Figure CN121367775A_ABST
Abstract
Description
TECHNICAL FIELD
[0001] This application is a divisional application of application number: 202080050882.6, Invention title: Encoder and decoder for drift-free padding and hashing of independently coded regions, encoding method and decoding method. The present invention relates to video encoding and video decoding, in particular to an encoder and decoder for drift-free padding and / or hashing of independently coded regions, encoding method and decoding method. BACKGROUND
[0002] H.265 / HEVC (HEVC = High Efficiency Video Coding) is a video codec which already provides tools for boosting or even enabling parallel processing at the encoder and / or decoder. For example, HEVC supports the subdivision of a picture into an array of tiles which are coded independently from each other. Another concept supported by HEVC relates to WPP, according to which CTU rows or CTU rows of a picture can be processed in parallel from left to right, e.g. in a slice, provided that some minimum CTU offset is respected when processing consecutive CTU rows (CTU = Coding Tree Unit). However, it would be advantageous to have a video codec which more efficiently supports the parallel processing capabilities of a video encoder and / or a video decoder.
[0003] In the following, an introduction to VCL partitioning according to the prior art is described (VCL = Video Coding Layer).
[0004] Generally, in video coding, the coding process of image samples requires small partitions in which the samples are divided into rectangular regions for joint processing, such as prediction or transform coding. Therefore, the picture is divided into blocks of a certain size which is constant during the encoding of a video sequence. In the H.264 / AVC standard, fixed size blocks of 16x16 samples, so-called macroblocks, are used (AVC = Advanced Video Coding).
[0005] In the prior art HEVC standard (cf. [1]), there are coding tree blocks (CTB) or coding tree units (CTU) of a maximum size of 64x64 samples. In further descriptions of HEVC, the more common term CTU is used for such blocks.
[0006] The CTUs are processed in a raster scan order, starting with the CTU in the top left corner and processing the CTUs in the picture row by row until the CTU in the bottom right corner.
[0007] Encoded CTU data is organized into a container called a slice. Initially, in previous video coding standards, a slice referred to a slice segment comprising one or more consecutive CTUs of a picture. A slice was used for the segmentation of the encoded data. From another perspective, a complete picture can also be defined as one large segment, and thus, historically, the term slice still applies. In addition to the encoded picture samples, a slice also comprises additional information related to the encoding process of the slice itself, which is placed in a so-called slice header.
[0008] According to the state of the art, the VCL (Video Coding Layer) also comprises techniques for segmentation and spatial partitioning. For example, such a division can be applied to video coding for various reasons, including processing load balancing in parallelization, CTU size matching in network transmission, error mitigation, etc. SUMMARY
[0009] It is an object of the present invention to provide an improved concept for video encoding and video decoding.
[0010] The object of the present invention is solved by the subject matter of the independent claims.
[0011] A video decoder is provided for decoding an encoded video signal comprising encoded picture data according to an embodiment to reconstruct a plurality of pictures of a video. The video decoder comprises an input interface configured to receive the encoded video signal, and a data decoder configured to reconstruct the plurality of pictures of the video by decoding the encoded picture data. Each of the plurality of pictures comprises a plurality of tiles, wherein each of the plurality of tiles comprises a plurality of samples. For a first tile and a second tile of two adjacent tiles of the plurality of tiles of a first picture of the plurality of pictures, the data decoder is configured for filtering across a boundary between the first tile and the second tile to obtain a first filtered tile, wherein the first tile and the second tile have been independently encoded with respect to each other. The data decoder is configured to decode a current tile of the plurality of tiles of a second picture of the plurality of pictures from a reference block of the first filtered tile of the first picture, wherein the reference block comprises a first set of samples of the first filtered tile, and wherein the reference block does not comprise a second set of samples of the first filtered tile, wherein none of the first set of samples is affected by the filtering across the boundary between the first tile and the second tile, and wherein one or more of the second set of samples has been affected by the filtering across the boundary between the first tile and the second tile.
[0012] Further, a video encoder for encoding a plurality of images of a video by generating an encoded video signal according to an embodiment is provided. Each of the plurality of images comprises original image data. The video encoder comprises a data encoder configured to generate an encoded video signal comprising encoded image data, wherein the data encoder is configured to encode the plurality of images of the video into the encoded image data, and an output interface configured to output the encoded image data of each of the plurality of images. Each of the plurality of images comprises a plurality of tiles, wherein each of the plurality of tiles comprises a plurality of samples. For a first tile and a second tile of two adjacent tiles of the plurality of tiles of a first image of the plurality of images, there is a boundary between the first tile and the second tile. The data encoder is configured to encode the first tile and the second tile independently from each other. Further, the data encoder is configured to encode a current tile of the plurality of tiles of a second image of the plurality of images from a reference block of the first tile of the first image, wherein a filter defines a filtering across the boundary between the first tile and the second tile, wherein the reference block comprises a first set of samples of the first tile, and wherein the reference block does not comprise a second set of samples of the first tile, wherein none of the first set of samples is to be affected by the filtering using the filter, and wherein one or more of the second set of samples is to be affected by the filtering using the filter.
[0013] Further, a method for decoding an encoded video signal comprising encoded image data to reconstruct a plurality of images of a video according to an embodiment is provided. The decoding method comprises: - receiving the encoded video signal. and: - reconstructing the plurality of images of the video by decoding the encoded image data.
[0014] Each of the plurality of images comprises a plurality of tiles, wherein each of the plurality of tiles comprises a plurality of samples. For a first tile and a second tile of two adjacent tiles of the plurality of tiles of a first image of the plurality of images, the method comprises filtering across a boundary between the first tile and the second tile to obtain a first filtered tile, wherein the first tile and the second tile have been encoded independently from each other. The method comprises decoding a current tile of the plurality of tiles of a second image of the plurality of images from a reference block of the first filtered tile of the first image, wherein the reference block comprises a first set of samples of the first filtered tile, and wherein the reference block does not comprise a second set of samples of the first filtered tile, wherein none of the first set of samples is affected by the filtering across the boundary between the first tile and the second tile, and wherein one or more of the second set of samples has been affected by the filtering across the boundary between the first tile and the second tile.
[0015] Further, a method of encoding a plurality of images of a video by generating an encoded video signal is provided according to embodiments. Each of the plurality of images comprises original image data. The method comprises: - generating an encoded video signal comprising encoded image data, wherein generating the encoded video signal comprises encoding the plurality of images of the video as the encoded image data, and - outputting the encoded image data of each of the plurality of images, Each of the plurality of images comprises a plurality of tiles, wherein each of the plurality of tiles comprises a plurality of samples. For a first tile and a second tile of two adjacent tiles of the plurality of tiles of a first image of the plurality of images, there is a boundary between the first tile and the second tile. The method comprises independently encoding the first tile and the second tile with respect to each other. Further, the method comprises encoding a current tile of the plurality of tiles of a second image of the plurality of images from a reference block of the first tile of the first image, wherein a filter defines a filtering across the boundary between the first tile and the second tile, wherein the reference block comprises a first set of samples of the first tile, and wherein the reference block does not comprise a second set of samples of the first tile, wherein none of the first set of samples is affected by the filtering using the filter, and wherein one or more of the second set of samples is affected by the filtering using the filter.
[0016] Further, a computer program for implementing one of the above methods of claims when executed on a computer or signal processor is provided.
[0017] Further, an encoded video signal encoding a plurality of images comprising a plurality of tiles is provided according to embodiments. Each of the plurality of tiles comprises a plurality of samples, wherein the encoded video signal comprises encoded image data encoding the plurality of images. The encoded video signal comprises an encoding of the plurality of images. For a first tile and a second tile of two adjacent tiles of the plurality of tiles of a first image of the plurality of images, there is a boundary between the first tile and the second tile. The first tile and the second tile are independently encoded with respect to each other within the encoded video signal. A current tile of the plurality of tiles of a second image of the plurality of images is encoded from a reference block of the first tile of the first image, wherein a filter defines a filtering across the boundary between the first tile and the second tile, wherein the reference block comprises a first set of samples of the first tile, and wherein the reference block does not comprise a second set of samples of the first tile, wherein none of the first set of samples is affected by the filtering using the filter, and wherein one or more of the second set of samples is affected by the filtering using the filter.
[0018] In one embodiment, the encoded video signal may, for example, comprise an indication of a coding mode, the indication indicating that samples of the reference block used for decoding the current tile are not subject to the filtering across the boundary between the first tile and the second tile.
[0019] Further, a system comprising the above-mentioned video encoder and the above-mentioned video decoder is provided. The video encoder is configured to generate an encoded video signal. The video decoder is configured to decode the encoded video signal to reconstruct images of a video.
[0020] Further, a video decoder for decoding an encoded video signal comprising encoded image data to reconstruct a plurality of images of a video according to an embodiment is provided. The video decoder comprises an input interface configured to receive the encoded video signal, and a data decoder configured to reconstruct the plurality of images of the video by decoding the encoded image data. Each of the plurality of images comprises a plurality of tiles, wherein each of the plurality of tiles comprises a plurality of blocks, wherein each of the plurality of blocks comprises a plurality of samples. For a first tile and a second tile of two adjacent tiles of the plurality of tiles of one image of the plurality of images, there is a boundary between the first tile and the second tile. The first tile and the second tile have been independently encoded with respect to each other. The data decoder is configured to filter the first tile using a filter or a filter kernel, wherein the data decoder is configured to modify a reach of the filter or the filter kernel depending on a distance between a block of the first tile to be filtered by the filter or the filter kernel and the boundary between the first tile and the second tile, the block being one of the plurality of blocks of the first tile.
[0021] Further, a video encoder for encoding a plurality of pictures of a video by generating an encoded video signal is provided according to embodiments. Each of the plurality of pictures comprises original picture data. The video encoder comprises a data encoder configured to generate the encoded video signal comprising encoded picture data, wherein the data encoder is configured to encode the plurality of pictures of the video into the encoded picture data, and an output interface configured to output the encoded picture data of each of the plurality of pictures. Each of the plurality of pictures comprises a plurality of tiles, wherein each of the plurality of tiles comprises a plurality of blocks, wherein each of the plurality of blocks comprises a plurality of samples. For a first tile and a second tile of two adjacent tiles of the plurality of tiles of a first picture of the plurality of pictures, a boundary exists between the first tile and the second tile. The data encoder is configured to encode the first tile and the second tile independently from each other. Further, the data encoder is configured to filter the first tile using a filter or a filter kernel, wherein the data encoder is configured to modify an influence range of the filter or the filter kernel depending on a distance between a block to be filtered by the filter or the filter kernel and the boundary between the first tile and the second tile, the block being one of the plurality of blocks of the first tile.
[0022] Further, a method for decoding an encoded video signal comprising encoded picture data to reconstruct a plurality of pictures of a video is provided according to embodiments. The decoding method comprises: - receiving the encoded video signal, and - reconstructing the plurality of pictures of the video by decoding the encoded picture data.
[0023] Each of the plurality of pictures comprises a plurality of tiles, wherein each of the plurality of tiles comprises a plurality of blocks, wherein each of the plurality of blocks comprises a plurality of samples.
[0024] For a first tile and a second tile of two adjacent tiles of the plurality of tiles of a picture of the plurality of pictures, a boundary exists between the first tile and the second tile. The first tile and the second tile have been encoded independently from each other. The method comprises filtering the first tile using a filter or a filter kernel, wherein the method comprises modifying an influence range of the filter or the filter kernel depending on a distance between a block to be filtered by the filter or the filter kernel and the boundary between the first tile and the second tile, the block being one of the plurality of blocks of the first tile.
[0025] Further, a method for encoding a plurality of pictures of a video by generating an encoded video signal, wherein each of the plurality of pictures comprises original picture data, wherein the method comprises: - generating an encoded video signal comprising the encoded image data, wherein generating the encoded video signal comprises encoding the plurality of images of the video as the encoded image data. And: - outputting the encoded image data of each of the plurality of images.
[0026] Each of the plurality of images comprises a plurality of tiles, wherein each of the plurality of tiles comprises a plurality of blocks, wherein each of the plurality of blocks comprises a plurality of samples. For a first tile and a second tile of two adjacent tiles of the plurality of tiles of a first image of the plurality of images, there is a boundary between the first tile and the second tile. The method comprises independently encoding the first tile and the second tile with respect to each other. Furthermore, the method comprises filtering the first tile using a filter or a filter kernel, wherein the method comprises modifying an influence range of the filter or the filter kernel depending on a distance between a block to be filtered by the filter or the filter kernel and the boundary between the first tile and the second tile, the block being one of the plurality of blocks of the first tile.
[0027] Furthermore, a computer program for implementing one of the above-mentioned methods when executed on a computer or signal processor according to an embodiment is provided.
[0028] Furthermore, an encoded video signal is provided, the encoded video signal encoding a plurality of images comprising a plurality of tiles according to an embodiment. Each of the plurality of tiles comprises a plurality of samples. The encoded video signal comprises encoded image data encoding the plurality of images. Furthermore, the encoded video signal comprises an encoding of the plurality of images. Each of the plurality of images comprises a plurality of tiles, wherein each of the plurality of tiles comprises a plurality of blocks, wherein each of the plurality of blocks comprises a plurality of samples. For a first tile and a second tile of two adjacent tiles of the plurality of tiles of a first image of the plurality of images, there is a boundary between the first tile and the second tile. The first tile and the second tile are independently encoded with respect to each other within the encoded video signal. The encoded video signal depends on a filtering of the first tile using a filter or a filter kernel, wherein during the filtering an influence range of the filter or the filter kernel has been modified depending on a distance between a block to be filtered by the filter or the filter kernel and the boundary between the first tile and the second tile, the block being one of the plurality of blocks of the first tile.
[0029] Furthermore, a system comprising the above-mentioned video encoder and the above-mentioned video decoder according to an embodiment is provided. The video encoder is configured to generate an encoded video signal. The video decoder is configured to decode the encoded video signal to reconstruct images of a video.
[0030] Further, a video encoder for encoding a plurality of pictures of a video by generating an encoded video signal is provided according to embodiments. Each of the plurality of pictures comprises original picture data. The video encoder comprises a data encoder configured to generate the encoded video signal comprising encoded picture data, wherein the data encoder is configured to encode the plurality of pictures of the video into the encoded picture data, and an output interface configured to output the encoded picture data of each of the plurality of pictures. Each of the plurality of pictures comprises a plurality of tiles, wherein each of the plurality of tiles comprises a plurality of samples. The data encoder is configured to determine a group of independently encoded tiles comprising three or more tiles of the plurality of tiles of a reference picture of the plurality of pictures. Further, the data encoder is configured to encode the plurality of pictures according to a reference block located within the reference picture. Further, the data encoder is configured to select a position for the reference block within the reference picture such that the reference block is not both partially within three of the three or more tiles of the group of independently encoded tiles and partially within another tile of the plurality of tiles of the reference picture not belonging to the group of independently encoded tiles.
[0031] Further, a method of encoding a plurality of pictures of a video by generating an encoded video signal is provided according to embodiments. Each of the plurality of pictures comprises original picture data. The method comprises: - generating the encoded video signal comprising encoded picture data, wherein generating the encoded video signal comprises encoding the plurality of pictures of the video into the encoded picture data. and - outputting the encoded picture data of each of the plurality of pictures.
[0032] Each of the plurality of pictures comprises a plurality of tiles, wherein each of the plurality of tiles comprises a plurality of samples. The method comprises determining a group of independently encoded tiles comprising three or more tiles of the plurality of tiles of a reference picture of the plurality of pictures. Further, the method comprises encoding the plurality of pictures according to a reference block located within the reference picture. Further, the method comprises selecting a position for the reference block within the reference picture such that the reference block is not both partially within three of the three or more tiles of the group of independently encoded tiles and partially within another tile of the plurality of tiles of the reference picture not belonging to the group of independently encoded tiles.
[0033] Further, a computer program for implementing one of the above-described methods when executed on a computer or signal processor according to embodiments is provided.
[0034] Further, an encoded video signal is provided according to embodiments, the encoded video signal encoding a plurality of pictures comprising a plurality of tiles. Each of the plurality of tiles comprises a plurality of samples. The encoded video signal comprises encoded picture data encoding the plurality of pictures. The encoded video signal comprises an encoding of the plurality of pictures. Each of the plurality of pictures comprises a plurality of tiles, wherein each of the plurality of tiles comprises a plurality of samples. The encoded video signal comprises an independently encoded tile group comprising three or more tiles of a plurality of tiles of a reference picture of the plurality of pictures. The plurality of pictures is encoded within a video data stream according to a reference block located within the reference picture. The reference block is not partially located within three of the three or more tiles of the independently encoded tile group and partially located within another of the plurality of tiles of the reference picture not belonging to the independently encoded tile group.
[0035] Further, a system is provided according to embodiments, comprising the above-mentioned video encoder and video decoder for decoding an encoded video signal comprising encoded picture data to reconstruct a plurality of pictures of a video. The video decoder comprises an input interface configured to receive the encoded video signal, and a data decoder configured to reconstruct the plurality of pictures of the video by decoding the encoded picture data. The video encoder is configured to generate the encoded video signal. The video decoder is configured to decode the encoded video signal to reconstruct the pictures of the video.
[0036] A video encoder for encoding a plurality of pictures of a video by generating an encoded video signal according to embodiments is provided. Each of the plurality of pictures comprises original picture data. The video encoder comprises a data encoder configured to generate an encoded video signal comprising encoded picture data, wherein the data encoder is configured to encode the plurality of pictures of the video into the encoded picture data, and an output interface configured to output the encoded picture data of each of the plurality of pictures. Each of the plurality of pictures comprises a plurality of tiles, wherein each of the plurality of tiles comprises a plurality of samples. The data encoder is configured to determine an independently encoded tile group comprising three or more tiles of a plurality of tiles of a reference picture of the plurality of pictures. Further, the data encoder is configured to encode the plurality of pictures according to a reference block located within the reference picture, wherein the reference block is partially located within three of the three or more tiles of the independently encoded tile group and partially located within another tile of the plurality of tiles of the reference picture not belonging to the independently encoded tile group. Further, the data encoder is configured to determine a plurality of reference samples of a portion of the reference block located within the another tile not belonging to the independently encoded tile group according to one or more of a plurality of samples of a first one of the three tiles of the independently encoded tile group and according to one or more of a plurality of samples of a second one of the three tiles of the independently encoded tile group.
[0037] Further, a video decoder for decoding an encoded video signal comprising encoded picture data to reconstruct a plurality of pictures of a video according to embodiments is provided. The video decoder comprises an input interface configured to receive the encoded video signal, and a data decoder configured to reconstruct the plurality of pictures of the video by decoding the encoded picture data. Each of the plurality of pictures comprises a plurality of tiles, wherein each of the plurality of tiles comprises a plurality of samples. The encoded video signal comprises an independently encoded tile group comprising three or more tiles of a plurality of tiles of a reference picture of the plurality of pictures. The data decoder is configured to decode the plurality of pictures according to a reference block located within the reference picture, wherein the reference block is partially located within three of the three or more tiles of the independently encoded tile group and partially located within another tile of the plurality of tiles of the reference picture not belonging to the independently encoded tile group. Further, the data decoder is configured to determine a plurality of reference samples of a portion of the reference block located within the another tile not belonging to the independently encoded tile group according to one or more of a plurality of samples of a first one of the three tiles of the independently encoded tile group and according to one or more of a plurality of samples of a second one of the three tiles of the independently encoded tile group.
[0038] Further, a method of encoding a plurality of images of a video by generating an encoded video signal is provided. Each of the plurality of images comprises original image data. The method comprises: - generating the encoded video signal comprising encoded image data, wherein generating the encoded video signal comprises encoding the plurality of images of the video into the encoded image data. and - outputting the encoded image data of each of the plurality of images.
[0039] Each of the plurality of images comprises a plurality of tiles, wherein each of the plurality of tiles comprises a plurality of samples. The method comprises determining a group of independently encoded tiles comprising three or more tiles of a plurality of tiles of a reference image of the plurality of images. Further, the method comprises encoding the plurality of images in dependence on a reference block located within the reference image, wherein the reference block is partially located within three of the three or more tiles of the group of independently encoded tiles and partially located within another tile of the plurality of tiles of the reference image not belonging to the group of independently encoded tiles. Further, the method comprises determining a plurality of reference samples of a portion of the reference block located within the another tile not belonging to the group of independently encoded tiles in dependence on one or more of a plurality of samples of a first of the three tiles of the group of independently encoded tiles and one or more of a plurality of samples of a second of the three tiles of the group of independently encoded tiles.
[0040] Further, a method of decoding an encoded video signal comprising encoded image data to reconstruct a plurality of images of a video according to an embodiment is provided. The decoding method comprises: - receiving the encoded video signal. and - reconstructing the plurality of images of the video by decoding the encoded image data.
[0041] Each of the plurality of images comprises a plurality of tiles, wherein each of the plurality of tiles comprises a plurality of samples. The encoded video signal comprises a group of independently encoded tiles comprising three or more tiles of a plurality of tiles of a reference image of the plurality of images, The method comprises decoding a plurality of pictures from a reference block located within a reference picture, wherein the reference block is partially located within three of three or more tiles of a group of independently coded tiles and partially located within another tile of a plurality of tiles of the reference picture not belonging to the group of independently coded tiles. Further, the method comprises determining a plurality of reference samples of a portion of the reference block located within the another tile not belonging to the group of independently coded tiles from one or more of a plurality of samples of a first of the three tiles of the group of independently coded tiles and from one or more of a plurality of samples of a second of the three tiles of the group of independently coded tiles.
[0042] Further, a computer program is provided for implementing one of the above-described methods when being executed on a computer or a signal processor according to an embodiment.
[0043] Further, according to an embodiment, an encoded video signal encoding a plurality of pictures comprising a plurality of tiles is provided, wherein each of the plurality of tiles comprises a plurality of samples. The encoded video signal comprises encoded picture data encoding the plurality of pictures. Further, the encoded video signal comprises an encoding of the plurality of pictures. Each of the plurality of pictures comprises a plurality of tiles, wherein each of the plurality of tiles comprises a plurality of samples. A group of independently coded tiles comprising three or more tiles of a plurality of tiles of a reference picture is independently coded within the encoded video signal. The plurality of pictures is encoded within the encoded video signal from a reference block located within the reference picture, wherein the reference block is partially located within three of the three or more tiles of the group of independently coded tiles and partially located within another tile of the plurality of tiles of the reference picture not belonging to the group of independently coded tiles. A plurality of reference samples of a portion of the reference block located within the another tile not belonging to the group of independently coded tiles is derivable from one or more of a plurality of samples of a first of the three tiles of the group of independently coded tiles and from one or more of a plurality of samples of a second of the three tiles of the group of independently coded tiles.
[0044] Further, a system comprising the above-described video encoder and the above-described video decoder according to an embodiment is provided. The video encoder is configured to generate an encoded video signal. The video decoder is configured to decode the encoded video signal to reconstruct pictures of a video.
[0045] Further, a video encoder for encoding a plurality of images of a video by generating an encoded video signal is provided according to an embodiment. Each of the plurality of images comprises original image data. The video encoder comprises a data encoder configured to generate the encoded video signal comprising encoded image data, wherein the data encoder is configured to encode the plurality of images of the video into the encoded image data, and an output interface configured to output the encoded image data of each of the plurality of images. The data encoder is configured to encode hash information within the encoded video signal. Further, the data encoder is configured to generate the hash information dependent on a current portion of a current image of the plurality of images and independent of a subsequent portion of the current image, wherein the current portion has a first position within the current image and the subsequent portion has a second position within the image different from the first position.
[0046] Further, a video decoder for decoding an encoded video signal comprising encoded image data to reconstruct a plurality of images of a video is provided according to an embodiment. The video decoder comprises an input interface configured to receive the encoded video signal, and a data decoder configured to reconstruct the plurality of images of the video by decoding the encoded image data. The data decoder is configured to analyze hash information encoded within the encoded video signal, wherein the hash information is dependent on a current portion of a current image of the plurality of images and independent of a subsequent portion of the current image, wherein the current portion has a first position within the current image and the subsequent portion has a second position within the image different from the first position.
[0047] Further, a method of encoding a plurality of images of a video by generating an encoded video signal is provided, wherein each of the plurality of images comprises original image data. The method comprises: - generating the encoded video signal comprising encoded image data, wherein generating the encoded video signal comprises encoding the plurality of images of the video into the encoded image data. and - outputting the encoded image data of each of the plurality of images, The method comprises generating hash information dependent on a current portion of a current image of the plurality of images and independent of a subsequent portion of the current image, wherein the current portion has a first position within the current image and the subsequent portion has a second position within the image different from the first position. Further, the method comprises encoding the hash information within the encoded video signal.
[0048] Further, a method for decoding an encoded video signal comprising encoded image data to reconstruct a plurality of images of a video is provided according to an embodiment. The decoding method comprises: - receiving the encoded video signal. and - reconstructing the plurality of pictures of the video by decoding the encoded picture data.
[0049] The method comprises analyzing encoded hash information within the encoded video signal, wherein the hash information depends on a current portion of a current picture of the plurality of pictures, but does not depend on a subsequent portion of the current picture, wherein the current portion has a first position within the current picture and the subsequent portion has a second position in the picture different from the first position.
[0050] Further, a computer program according to an embodiment is provided which, when being executed on a computer or signal processor, implements one of the above-mentioned methods.
[0051] Further, an encoded video signal according to an embodiment is provided which encodes a plurality of pictures comprising a plurality of tiles. Each of the plurality of tiles comprises a plurality of samples, wherein the encoded video signal comprises encoded picture data encoding the plurality of pictures. The encoded video signal comprises an encoding of the plurality of pictures. The encoded video signal comprises an encoding of hash information, wherein the hash information depends on a current portion of a current picture of the plurality of pictures, but does not depend on a subsequent portion of the current picture, wherein the current portion has a first position within the current picture and the subsequent portion has a second position in the picture different from the first position.
[0052] Further, a system according to an embodiment is provided comprising the above-mentioned video encoder and the above-mentioned video decoder. The video encoder is configured to generate an encoded video signal. The video decoder is configured to decode the encoded video signal to reconstruct pictures of the video.
[0053] Preferred embodiments are provided in the dependent claims. BRIEF DESCRIPTION OF DRAWINGS
[0054] Embodiments of the application are explained below with reference to the drawings wherein: Figure 1 A video encoder according to an embodiment is shown.
[0055] Figure 2 A video decoder according to an embodiment is shown.
[0056] Figure 3 A system according to an embodiment is shown.
[0057] Figure 4a Contaminated samples within a tile from a loop filtering procedure are shown.
[0058] Figure 4b VVC tile boundary extension from independent regions of contaminated samples is shown.
[0059] Figure 5 A tile boundary extension process subject to a loop filter kernel influence range is shown in accordance with an embodiment.
[0060] Figure 6 A tile and tile group partitioning of an encoded image is shown.
[0061] Figure 7 A reference block with prior art boundary padding is shown.
[0062] Figure 8 A concave tile group boundary of a diagonal split is shown in accordance with an embodiment.
[0063] Figure 9 A video encoder is shown.
[0064] Figure 10 A video decoder is shown.
[0065] Figure 11 The relationship between, on the one hand, a reconstructed signal, i.e. a reconstructed image, and, on the other hand, a combination of a prediction residual signal and a prediction signal signaled in a data stream is shown. DETAILED DESCRIPTION
[0066] The following description of the drawings begins with a presentation of a description of an encoder and a decoder of a block-based prediction codec for encoding images of a video in order to form an example of an encoding framework in which embodiments of the present application can be established. With respect to Figures 9 to 11 A respective encoder and decoder are described. In the following a description of embodiments of the inventive concepts will be provided as well as with respect to how these concepts can be respectively built into Figure 9 and Figure 10 the encoder and decoder of Figures 1 to 3 and the embodiments described below can also be used to form an encoder and decoder operating in an encoding framework not according to the encoder and decoder of Fig. 9 and Fig. 10.
[0067] Figure 9 A video encoder is shown, an apparatus for predictively encoding an image 12 into a data stream 14 using, exemplarily, a transform-based residual encoding. The apparatus or encoder is denoted by reference sign 10. Figure 10 A corresponding video decoder 20 is shown, an apparatus 20 configured to predictively decode the image 12’ from the data stream 14 also using a transform-based residual decoding, wherein a prime has been used to indicate that the image 12’ reconstructed by the decoder 20 deviates from the image 12 originally encoded by the apparatus 10 in terms of encoding losses introduced by a quantization of the prediction residual signal. Figure 9 and Figure 10 using a transform-based prediction residual encoding, but embodiments of the present application are not limited to such a prediction residual encoding. For further information with respect toFigure 9 and Figure 10 The same applies to other details described as outlined below.
[0068] The encoder 10 is configured to spatial-to-spectral transform the prediction residual signal and to encode the prediction residual signal thus obtained into the data stream 14. Likewise, the decoder 20 is configured to decode the prediction residual signal from the data stream 14 and to perform a spectral-to-spatial transform on the prediction residual signal thus obtained.
[0069] Internally, the encoder 10 can comprise a prediction residual signal former 22 which generates a prediction residual 24 in order to measure a deviation of a prediction signal 26 from the original signal, i.e. from the image 12. The prediction residual signal former 22 can, for example, be a subtractor which subtracts the prediction signal from the original signal, i.e. from the image 12. The encoder 10 then further comprises a transformer 28 which subjects the prediction residual signal 24 to a spatial-to-spectral transform in order to obtain a spectral-domain prediction residual signal 24’ which is then quantized by a quantizer 32 which is also comprised in the encoder 10. The prediction residual signal 24’’ thus quantized is encoded into the bit stream 14. To this end, the encoder 10 can optionally comprise an entropy encoder 34 which entropy-encodes the prediction residual signal transformed and quantized into the data stream 14. Based on the prediction residual signal 24’’ encoded into the data stream 14 and decodable from the data stream 14, the prediction signal 26 is generated by a prediction stage 36 of the encoder 10. To this end, the prediction stage 36 can internally, as shown in Figure 9 dequantizer 38 which dequantizes the prediction residual signal 24’’ in order to obtain a spectral-domain prediction residual signal 24’’’ which corresponds to the signal 24’ except for the quantization loss, followed by an inverse transformer 40 which inverse-transforms, i.e. spectral-to-spatial transforms, the prediction residual signal 24’’’ to obtain a prediction residual signal 24’’’’ which corresponds to the original prediction residual signal 24 except for the quantization loss. A combiner 42 of the prediction stage 36 then recombines the prediction signal 26 and the prediction residual signal 24’’’’ by, for example, addition to obtain a reconstructed signal 46, i.e. a reconstruction of the original signal 12. The reconstructed signal 46 can then correspond to the signal 12’. A prediction module 44 of the prediction stage 36 generates the prediction signal 26 based on the signal 46 by using, for example, spatial prediction, i.e. intra-image prediction, and / or temporal prediction, i.e. inter-image prediction.
[0070] Likewise, the decoder 20, as shown in Figure 10As shown, the decoder 20 can internally consist of a group of components corresponding to and interconnected in a manner corresponding to the prediction stage 36. In particular, the entropy decoder 50 of the decoder 20 can entropy-decode the quantized spectral-domain prediction residual signal 24" from the data stream, and thus the dequantizer 52, the inverse transformer 54, the combiner 56 and the prediction module 58, interconnected and cooperating in the manner of the modules described above with respect to the prediction stage 36, recover a reconstructed signal on the basis of the prediction residual signal 24", so that, as Figure 10 As shown, the output of the combiner 56 produces the reconstructed signal, i.e. the image 12'.
[0071] Although not specifically described above, it is readily clear that the encoder 10 can set the encoding parameters, including for example the prediction modes, the motion parameters, etc., in accordance with some optimization scheme, such as in a way that optimizes some rate of some distortion related criterion, i.e. the encoding cost. For example, the encoder 10 and the decoder 20 can support different prediction modes, such as intra- and inter- coding modes, respectively, in the corresponding modules 44, 58. The granularity at which the encoder and the decoder switch between these prediction mode types can correspond to a subdivision of the images 12 and 12', respectively, into encoding segments or encoding blocks. For example, the images can be subdivided into blocks that are intra- and inter- coded, in units of these encoding segments. As outlined in more detail below, intra- coded blocks are predicted based on the spatial neighborhood of the respective block that has already been encoded / decoded. A plurality of intra-coding modes can exist and be selected for the respective intra-coding mode that includes directional or angular intra-coding modes, according to which the respective segment is filled by extrapolating sample values of the neighborhood along a specific direction that is specific to the respective directional intra-coding mode into the respective intra-coding segment. For example, the intra-coding modes can further include one or more other modes, such as a DC-coding mode, according to which the prediction of the respective intra-coded block assigns a DC value to all samples within the respective intra-coding segment, and / or a planar intra-coding mode, according to which the prediction of the respective block is approximated or determined as a spatial distribution of sample values described by a two-dimensional linear function, the tilt and the offset of the plane defined by the two-dimensional linear function being driven on the basis of neighboring samples. In contrast, inter-coded blocks can be predicted, for example, in time. For inter-coded blocks, motion vectors can be signaled within the data stream 14, the motion vectors indicating a spatial displacement of a previously encoded image portion of the video to which the image 12 belongs, from which the previously encoded / decoded image is sampled to obtain a prediction signal for the respective inter-coded block. This means that, in addition to the residual signal coding included in the data stream 14, such as the entropy coding of the quantized spectral domain prediction residual signal 24", the data stream 14 can have encoded therein encoding mode parameters for the assigned encoding modes to the various blocks, prediction parameters, such as motion parameters for inter-coded segments, and optionally further parameters, such as for controlling and signaling the subdivision of the images 12 and 12' into segments, respectively. The decoder 20 uses these parameters to subdivide the images in the same way as the encoder, to assign the same prediction modes to the segments, and to perform the same predictions to yield the same prediction signals.
[0072] Figure 11 The reconstruction of the signal, i.e. the reconstructed image 12', is illustrated to be a combination between, on the one hand, the prediction residual signal 24" signaled in the data stream 14 and, on the other hand, the prediction signal 26. As outlined above, this combination can be an addition. The prediction signal 26 is in the case of the intra-coded segments a prediction of the respective intra-coded segment based on the spatial neighborhood of the respective intra-coded segment that has already been encoded / decoded. In the case of the inter-coded segments, the prediction signal 26 is a prediction of the respective inter-coded segment based on the spatial neighborhood of the respective inter-coded segment that has already been encoded / decoded. Figure 11The image region is shown to be subdivided into intra-coded blocks, illustratively represented with hatching, and inter-coded blocks, illustratively represented without hatching. The subdivision can be an arbitrary subdivision, such as a regular subdivision of the image region into rows and columns of square or non-square blocks, or a variable size multi-tree subdivision of the image 12 from one tree root block into a plurality of leaf blocks, such as a quad-tree subdivision, etc., wherein Figure 11 A hybrid thereof is shown, wherein the image region is first subdivided into rows and columns of tree root blocks, and the tree root blocks are then further subdivided according to a recursive multi-subdivision into one or more leaf blocks.
[0073] Again, the data stream 14 can have encoded therein intra coding modes for the intra-coded blocks 80, which assign one of several supported intra coding modes to the respective intra-coded block 80. For the inter-coded blocks 82, the data stream 14 can have encoded therein one or more motion parameters. In general, the inter-coded blocks 82 are not limited to being time coded. Alternatively, the inter-coded blocks 82 can be any block predicted from a previously coded portion of the current image 12 itself, such as a previously coded image of the video to which the image 12 belongs, or an image of another view or a lower layer in case of a scalable encoder and decoder, respectively.
[0074] Figure 11 The prediction residual signal 24’’’’ in the image region is also shown to be subdivided into blocks 84. These blocks can be referred to as transform blocks in order to distinguish them from the coding blocks 80 and 82. In fact, Figure 11 It is illustrated that the encoder 10 and the decoder 20 can use two different subdivisions of the image 12 and the image 12’, respectively, into blocks, namely one subdivision into coding blocks 80 and 82, respectively, and another subdivision into transform blocks 84. The two subdivisions can be identical, i.e. each coding block 80 and 82 can at the same time form a transform block 84, but Figure 11 It is illustrated that the subdivision into transform blocks 84 forms an extension of the subdivision into coding blocks 80, 82, for example, such that any boundary between two of the blocks 80 and 82 covers a boundary between two of the blocks 84, or, in other words, each block 80, 82 either coincides with one of the transform blocks 84 or coincides with a group of transform blocks 84. However, the subdivision can also be determined or selected independently from each other such that the transform blocks 84 can alternatively span across block boundaries between the blocks 80, 82. In terms of the subdivision into transform blocks 84, similar statements thus hold as those with respect to the subdivision into blocks 80, 82, i.e. the blocks 84 can be the result of a regular subdivision of the image region into blocks (with or without being arranged into rows and columns), a recursive multi-tree subdivision of the image region, or a combination thereof or any other type of blocks. Incidentally, it is noted that the blocks 80, 82 and 84 are not limited to being square, rectangular or any other shape.
[0075] Figure 11It is further illustrated that the combination of the prediction signal 26 and the prediction residual signal 24’’’’ directly results in the reconstructed signal 12’. However, it should be noted that according to alternative embodiments more than one prediction signal 26 can be combined with the prediction residual signal 24’’’’ to form the image 12’.
[0076] In Figure 11 The transform blocks 84 should have the following meaning. The transformer 28 and the inverse transformer 54 perform their transformations in units of these transform blocks 84. For example, many codecs use some kind of DST or DCT for all transform blocks 84. Some codecs allow to skip the transform, so that for some transform blocks 84 the prediction residual signal is directly coded in the spatial domain. However, according to the embodiments described below, the encoder 10 and the decoder 20 are configured in a way that they support several transforms. For example, the transforms supported by the encoder 10 and the decoder 20 can include: o DCT-II (or DCT-III), where DCT stands for Discrete Cosine Transform o DST-IV, where DST stands for Discrete Sine Transform o DCT-IV o DST-VII o Identity Transform (IT) Naturally, while the transformer 28 will support all forward transform versions of these transforms, the decoder 20 or inverse transformer 54 will support their corresponding backward or inverse versions: o Inverse DCT-II (or Inverse DCT-III) o Inverse DST-IV o Inverse DCT-IV o Inverse DST-VII o Identity Transform (IT) The following description provides more details on which transforms the encoder 10 and the decoder 20 can support. In any case, it should be noted that the supported set of transforms can include only one transform, such as one spectral-to-spatial or spatial-to-spectral transform.
[0077] As mentioned above, Figures 9 to 11 have been presented as examples, in which the inventive concept described further below can be implemented to form particular examples of encoders and decoders according to the present application. In this regard, Figure 9 and Figure 10 may represent possible implementations of the encoder and the decoder described below, respectively. However, Figure 9 and Figure 10are merely examples. However, an encoder according to embodiments of the present application can perform block-based encoding of the images 12 using the concepts outlined in more detail below and differ from Figure 9 the encoder of, for example, the same is not a video encoder but a still image encoder since it does not support inter prediction or performs the subdivision of the image 12 into blocks 80 in a different way than Figure 11 the encoder of, for example, the same is not a video decoder but a still image decoder since it does not support intra prediction or derives the prediction residuals from the data stream 14 in the transform domain, for example, but in the spatial domain in a different way than described with respect to Figure 10 the decoder of, for example, the same is not a video decoder but a still image decoder since it does not support intra prediction or derives the prediction residuals from the data stream 14 in the transform domain, for example, but in the spatial domain in a different way than described with respect to Figure 11 the decoder of, for example, the same is not a video decoder but a still image decoder since it does not support intra prediction or derives the prediction residuals from the data stream 14 in the transform domain, for example, but in the spatial domain in a different way than described with respect to
[0078] In the following, a general video encoder according to embodiments is described in Figure 1 , a general video decoder according to embodiments is described in Figure 2 , and a general system according to embodiments is described in Figure 3 .
[0079] Figure 1 A general video encoder 101 according to embodiments is shown.
[0080] The video encoder 101 is configured to encode a plurality of images of a video by generating an encoded video signal, wherein each of the plurality of images comprises original image data.
[0081] The video encoder 101 comprises a data encoder 110 configured to generate the encoded video signal comprising encoded image data, wherein the data encoder is configured to encode the plurality of images of the video into the encoded image data.
[0082] Further, the video encoder 101 comprises an output interface 120 configured to output the encoded image data of each of the plurality of images.
[0083] Figure 2 A general video decoder 151 according to embodiments is shown.
[0084] The video decoder 151 is configured to decode an encoded video signal comprising encoded image data to reconstruct a plurality of images of a video.
[0085] The video decoder 151 comprises an input interface 160 configured to receive the encoded video signal.
[0086] Furthermore, the video decoder comprises a data decoder 170 configured to reconstruct a plurality of pictures of the video by decoding the encoded picture data.
[0087] Figure 3 A general system according to an embodiment is shown.
[0088] The system comprises Figure 1 a video encoder 101 and Figure 2 a video decoder 151.
[0089] The video encoder 101 is configured to generate an encoded video signal. The video decoder 151 is configured to decode the encoded video signal, reconstructing the video pictures.
[0090] There are video applications where it is beneficial to divide the video into rectangular tiles / regions and encode them independently. For example, in 360-degree video streaming, the current viewing direction of the client is used to select the resolution of a single region (high resolution in the current viewport, low resolution outside the current viewport as a replacement for user direction changes). These tiles / regions are recombined into a single bitstream at the client and jointly decoded, whereby each tile can have different neighboring tiles that were not available or did not exist during encoding.
[0091] Other examples can be RoI (RoI = Region of Interest) encoding, where for example there is a region in the middle of the image that can be selected by the viewer, for example using a zoom operation (decoding the RoI only) or a gradual decoder refresh (GDR), where the inner data (typically put in one frame of the video sequence) is distributed over time on several consecutive frames, for example as a column of inner blocks that slide over the image plane and locally reset the temporal prediction chain in the same way as the inner image does for the entire image plane. For the latter, there are two regions in each image, one that is recently reset and the other that is a region that can be affected by errors and error propagation.
[0092] For these use cases and possibly others, limiting the prediction dependency from images of different time instants is essential in order to have (some) region / tile independent encoding. However, this leads to several problems that the invention solves. On the one hand, traditional boundary filtering cannot be used to mitigate the subjective quality impact of dividing the image plane into separate regions. Secondly, the state of the art does not describe how certain boundary geometries should be filtered. Thirdly, the image hash signaling of standards such as HEVC cannot be meaningfully used in the above use cases, as the value derivation contains the complete image plane.
[0093] A first aspect of the invention is claimed in claims 1 to 45.
[0094] A second aspect of the invention is claimed in claims 46 to 74.
[0095] A third aspect of the application is claimed in claims 75 to 101.
[0096] In the following, the first aspect of the application is now described in detail.
[0097] In particular, the first aspect provides drift free filtering.
[0098] There is provided a video decoder 151 according to an embodiment for decoding an encoded video signal comprising encoded image data to reconstruct a plurality of images of a video. The video decoder 151 comprises an input interface 160 configured to receive the encoded video signal, and a data decoder 170 configured to reconstruct the plurality of images of the video by decoding the encoded image data. Each of the plurality of images comprises a plurality of tiles, wherein each of the plurality of tiles comprises a plurality of samples. For a first tile and a second tile of two adjacent tiles of the plurality of tiles of a first image of the plurality of images, the data decoder 170 is configured to filter across a boundary between the first tile and the second tile to obtain a first filtered tile, wherein the first tile and the second tile have been independently encoded with respect to each other. The data decoder 170 is configured to decode a current tile of the plurality of tiles of a second image of the plurality of images from a reference block of the first filtered tile of the first image, wherein the reference block comprises a first set of samples of the first filtered tile, and wherein the reference block does not comprise a second set of samples of the first filtered tile, wherein none of the first set of samples is affected by the filtering across the boundary between the first tile and the second tile, and wherein one or more of the second set of samples has been affected by the filtering across the boundary between the first tile and the second tile.
[0099] For example, in some embodiments, two tiles can for example be considered as adjacent, or can for example be considered as adjacent tiles, if they are adjacent / adjacent to each other in an image of the plurality of images, or, if their positions are adjacent, if they are adjacent / adjacent to each other in a map after being mapped, e.g. by one or more mappings, according to a mapping rule into the map (e.g. into a projection map, or, e.g. into a cubemap, or, e.g. into an equirectangular map). For example, tiles can for example be mapped by employing region-wise packing. For example, tiles can for example be mapped to a projection map by a first mapping, and for example to an equirectangular map by a second mapping from the projection map.
[0100] In an embodiment, the data decoder 170 can for example be configured to not use another reference block for determining the decoding of the current tile of the second picture, wherein the another reference block comprises one or more of the second set of samples of the first filtered tile that have been affected by the filtering across the boundary between the first tile and the second tile.
[0101] According to an embodiment, the data decoder 170 can for example be configured to determine the reference block such that the reference block comprises the first set of samples of the first filtered tile and such that none of the first set of samples is affected by the filtering across the boundary between the first tile and the second tile and such that the one or more samples of the second set of samples have been affected by the filtering across the boundary between the first tile and the second tile.
[0102] In an embodiment, the data decoder 170 can for example be configured to determine the reference block according to an influence range of a filter or filter kernel, wherein the data decoder 170 can for example be configured to employ the filter or the filter kernel for the filtering across the boundary between the first tile and the second tile.
[0103] According to an embodiment, the data decoder 170 can for example be configured to determine the reference block according to filter information on an influence range of a filter or filter kernel. The filter information comprises a horizontal filter kernel influence range indicating how many of a plurality of samples of the first tile within one horizontal line of the first tile are affected by one or more samples of a plurality of samples of the second tile that are filtered by the first tile and the second tile across the boundary between the first tile and the second tile, wherein the data decoder 170 can for example be configured to determine the reference block according to the horizontal filter kernel influence range. And / or: the filter information comprises a vertical filter kernel influence range indicating how many of a plurality of samples of the first tile within one vertical column of the first tile are affected by one or more samples of a plurality of samples of the second tile that are filtered by the first tile and the second tile across the boundary between the first tile and the second tile, wherein the data decoder 170 can for example be configured to determine the reference block according to the vertical filter kernel influence range.
[0104] According to an embodiment, the data decoder 170 can for example be configured to determine the reference block according to the vertical filter kernel influence range by extrapolating samples of the first set of samples. And / or the data decoder 170 can for example be configured to determine the reference block according to the horizontal filter kernel influence range by extrapolating samples of the first set of samples.
[0105] In embodiments, the data decoder 170 may, for example, be configured to determine the reference block according to the vertical filter kernel reach by using a vertical clipping of the first set of samples, and / or the data decoder 170 may, for example, be configured to determine the reference block according to the horizontal filter kernel reach by using a horizontal clipping of the first set of samples.
[0106] According to embodiments, the vertical clipping may, for example, be defined according to: yInt i = Clip3( topTileBoundaryPosition + verticalFilterKernelReachInSamples, bottomTileBoundaryPosition - 1 - verticalFilterKernelReachInSamples, yInt L + i - 3 ) yInt L denotes one of the samples of the first tile at position L in the vertical column of the first tile before the vertical clipping, yInt i denotes one of the samples of the first tile at position i in the vertical column of the first tile after the vertical clipping, verticalFilterKernelReachInSamples denotes the number of samples representing the vertical filter kernel reach, topTileBoundaryPosition denotes the topmost position of the samples within the vertical column of the first tile, bottomTileBoundaryPosition denotes the bottommost position of the samples within the vertical column of the first tile, wherein the horizontal clipping may, for example, be defined according to: xInt i = Clip3( leftTileBoundaryPosition + horizontalFilterKernelReachInSamples, rightTileBoundaryPosition - 1 - horizontalFilterKernelReachInSamples, xInt L + i - 3 ) xInt L denotes one of the samples of the first tile at position L in the horizontal row of the first tile before the horizontal clipping, xInt ione of the plurality of samples of the first tile at position i in a horizontal row representing the first tile after horizontal cropping, horizontalFilterKernelReachInSamples represents a number of samples representing the horizontal filter kernel reach, leftTileBoundaryPosition represents a leftmost position of a plurality of samples within the horizontal row of the first tile, rightTileBoundaryPosition represents a rightmost position of a plurality of samples within the horizontal row of the first tile, wherein Clip3 is defined as: According to embodiments, the data decoder 170 can be configured to determine the reference block by employing the horizontal cropping according to the horizontal filter kernel reach and by employing the vertical cropping according to the vertical filter kernel reach, wherein verticalFilterKernelReachInSamples = horizontalFilterKernelReachInSamples.
[0107] In embodiments, the data decoder 170 can be configured to determine the reference block by employing the horizontal cropping according to the horizontal filter kernel reach and by employing the vertical cropping according to the vertical filter kernel reach, wherein verticalFilterKernelReachInSamples ≠ horizontalFilterKernelReachInSamples.
[0108] According to embodiments, the data decoder 170 can be configured to filter the first tile using the filter or the filter kernel, wherein the data decoder 170 can be configured to modify a reach of the filter or the filter kernel depending on a distance between a block of the first tile to be filtered by the filter or the filter kernel and the boundary between the first tile and the second tile.
[0109] In an embodiment, if the distance has a first distance value that is less than or equal to a threshold distance, the data decoder 170 can be configured to set the impact range of the filter or the filter kernel to a first size value, for example. If the distance has a second distance value that is greater than the first distance value, and if the block and the neighboring block of the block belong to the same reference picture, the data decoder 170 can be configured to set the impact range of the filter or the filter kernel to a second size value that is greater than the first size value, for example. The data decoder 170 can be configured to set the impact range of the filter or the filter kernel to the first size value if the distance has the second distance value that is greater than the first distance value and if the block and the neighboring block of the block do not belong to the same reference picture, for example.
[0110] Further, a video encoder 101 for encoding a plurality of pictures of a video by generating an encoded video signal according to an embodiment is provided. Each of the plurality of pictures comprises original picture data. The video encoder 101 comprises a data encoder 110 for generating the encoded video signal comprising encoded picture data, wherein the data encoder 110 is configured to encode the plurality of pictures of the video into the encoded picture data, and an output interface 120 for outputting the encoded picture data of each of the plurality of pictures. Each of the plurality of pictures comprises a plurality of tiles, wherein each of the plurality of tiles comprises a plurality of samples. For a first tile and a second tile of two neighboring tiles of the plurality of tiles of a first picture of the plurality of pictures, there is a boundary between the first tile and the second tile. The data encoder 110 is configured to encode the first tile and the second tile independently from each other. Further, the data encoder 110 is configured to encode a current tile of the plurality of tiles of a second picture of the plurality of pictures depending on a reference block of the first tile of the first picture, wherein a filter defines a filtering across the boundary between the first tile and the second tile, wherein the reference block comprises a first set of samples of the first tile, and wherein the reference block does not comprise a second set of samples of the first tile, wherein none of the first set of samples is affected by the filtering using the filter, and wherein one or more of the second set of samples is affected by the filtering using the filter.
[0111] For example, in some embodiments, two tiles can for example be considered as neighboring, or can for example be considered as neighboring tiles, if they are neighboring / adjacent to each other in the images of the plurality of images, or, if they are neighboring, if they should be mapped to the decoder side such that they are neighboring / adjacent to each other in the mapping after being mapped to the decoder side, e.g. by one or more mappings, according to a mapping rule to a map (e.g. a projection map, or, e.g. a cubemap, or, e.g. an equirectangular map). For example, the tiles can be mapped, e.g. by employing region-wise packing. For example, the tiles can be mapped, e.g. by a first mapping, to a projection map, and, e.g. by a second mapping from the projection map to an equirectangular map.
[0112] In embodiments, the data encoder 110 can for example be configured to encode the current tile according to a further reference block that comprises one or more of the second set of samples of the first filtered tile that have been affected by the filtering across the boundary between the first tile and the second tile.
[0113] According to embodiments, the data encoder 110 can for example be configured to determine the reference block such that the reference block comprises the first set of samples of the first tile and such that the reference block does not comprise the second set of samples of the first tile, such that none of the first set of samples is affected by the filtering using the filter and such that the one or more samples of the second set of samples will be affected by the filtering using the filter.
[0114] In embodiments, the data encoder 110 can for example be configured to determine the reference block according to an influence range of a filter or filter kernel, wherein the data encoder 110 can for example be configured to employ the filter or the filter kernel for the filtering across the boundary between the first tile and the second tile.
[0115] According to embodiments, the data encoder 110 can for example be configured to determine the reference block in dependence on filter information on an influence range of a filter or filter kernel. The filter information comprises a horizontal filter kernel influence range indicating how many of a plurality of samples of the first tile within one horizontal line of the first tile are influenced by one or more of a plurality of samples of the second tile by filtering across the boundary between the first tile and the second tile, wherein the data encoder 110 can for example be configured to determine the reference block in dependence on the horizontal filter kernel influence range. And / or the filter information comprises a vertical filter kernel influence range indicating how many of a plurality of samples of the first tile within one vertical column of the first tile are influenced by one or more of a plurality of samples of the second tile by filtering across the boundary between the first tile and the second tile, wherein the data encoder 110 can for example be configured to determine the reference block in dependence on the vertical filter kernel influence range.
[0116] According to embodiments, the data encoder 110 can for example be configured to determine the reference block in dependence on the vertical filter kernel influence range by extrapolating samples of the first set of samples. And / or the data encoder 110 can for example be configured to determine the reference block in dependence on the horizontal filter kernel influence range by extrapolating samples of the first set of samples.
[0117] In embodiments, the data encoder 110 can for example be configured to determine the reference block in dependence on the vertical filter kernel influence range by using a vertical clipping of the first set of samples. And / or the data encoder 110 can for example be configured to determine the reference block in dependence on the horizontal filter kernel influence range by using a horizontal clipping of the first set of samples.
[0118] According to embodiments, the vertical clipping can for example be defined in dependence on: yInt i = Clip3( topTileBoundaryPosition + verticalFilterKernelReachInSamples, bottomTileBoundaryPosition - 1 - verticalFilterKernelReachInSamples, yInt L + i - 3 ) yInt L denotes one of a plurality of samples of the first tile at a position L in a vertical column of the first tile before the vertical clipping, yInt ione of the samples of the first tile located at position i in a vertical column of the first tile after vertical cropping, verticalFilterKernelReachInSamples indicates a number of samples indicating the vertical filter kernel reach, topTileBoundaryPosition indicates a topmost position of a number of samples within the vertical column of the first tile, bottomTileBoundaryPosition indicates a bottommost position of a number of samples within the vertical column of the first tile, wherein horizontal cropping can be defined, for example, according to xInt i = Clip3( leftTileBoundaryPosition + horizontalFilterKernelReachInSamples, rightTileBoundaryPosition - 1 - horizontalFilterKernelReachInSamples, xInt L + i - 3 ) xInt L one of the samples of the first tile located at position L in a horizontal row of the first tile before horizontal cropping, xInt i one of the samples of the first tile located at position i in a horizontal direction of the first tile after horizontal cropping, horizontalFilterKernelReachInSamples indicates a number of samples indicating the horizontal filter kernel reach, leftTileBoundaryPosition indicates a leftmost position of a number of samples within the horizontal row of the first tile, rightTileBoundaryPosition indicates a rightmost position of a number of samples within the horizontal row of the first tile, wherein Clip3 is defined as: In embodiments, the data encoder 110 can be configured, for example, to determine the reference block by employing the horizontal cropping according to the horizontal filter kernel reach and by employing the vertical cropping according to the vertical filter kernel reach, wherein verticalFilterKernelReachInSamples = horizontalFilterKernelReachInSamples.
[0119] According to an embodiment, the data encoder 110 can for example be configured to determine the reference block by applying said horizontal cut according to said horizontal filter kernel reach and by applying said vertical cut according to said vertical filter kernel reach, wherein verticalFilterKernelReachInSamples ≠ horizontalFilterKernelReachInSamples.
[0120] In an embodiment, the data encoder 110 can for example be configured to filter the first tile using said filter or said filter kernel. The data encoder 110 can for example be configured to modify the reach of said filter or said filter kernel according to a distance between a block of the first tile to be filtered by said filter or said filter kernel and said boundary between said first tile and said second tile.
[0121] According to an embodiment, if said distance has a first distance value which is less than or equal to a threshold distance, the data encoder 110 can for example be configured to set the reach of said filter or said filter kernel to a first size value. If said distance has a second distance value which is greater than said first distance value and if said block and a neighboring block of said block belong to a same reference picture, the data encoder 110 can for example be configured to set the reach of said filter or said filter kernel to a second size value which is greater than the first size value. Moreover, if said distance has said second distance value which is greater than said first distance value and if said block and said neighboring block of said block do not belong to said same reference picture, the data encoder 110 can for example be configured to set the reach of said filter or said filter kernel to said first size value.
[0122] Moreover, a system comprising the above-mentioned video encoder 101 and the above-mentioned video decoder 151 is provided. The video encoder 101 is configured to generate an encoded video signal. The video decoder 151 is configured to decode the encoded video signal, reconstructing video pictures.
[0123] Further, a video decoder 151 for decoding an encoded video signal comprising encoded image data to reconstruct a plurality of images of a video is provided according to embodiments. The video decoder 151 comprises an input interface 160 configured to receive the encoded video signal, and a data decoder 170 configured to reconstruct the plurality of images of the video by decoding the encoded image data. Each of the plurality of images comprises a plurality of tiles, wherein each of the plurality of tiles comprises a plurality of blocks, wherein each of the plurality of blocks comprises a plurality of samples. For a first tile and a second tile of two neighboring tiles of the plurality of tiles of one image of the plurality of images, a boundary exists between the first tile and the second tile. The first tile and the second tile have been independently encoded with respect to each other. The data decoder 170 is configured to filter the first tile using a filter or a filter kernel, wherein the data decoder 170 is configured to modify an influence range of the filter or the filter kernel depending on a distance between a block of the first tile to be filtered by the filter or the filter kernel and the boundary between the first tile and the second tile, the block being one of the plurality of blocks of the first tile.
[0124] According to embodiments, if the distance has a first distance value being smaller than or equal to a threshold distance, the data decoder 170 may, for example, be configured to set the influence range of the filter or the filter kernel to a first size value. Further, if the distance has a second distance value being larger than the first size value and if the block and a neighboring block of the block belong to a same reference image, the data decoder 170 may, for example, be configured to set the influence range of the filter or the filter kernel to a second size value being larger than the first size value. Further, if the distance has the second distance value being larger than the first distance value and if the block and the neighboring block of the block do not belong to the same reference image, the data decoder 170 may, for example, be configured to set the influence range of the filter or the filter kernel to the first size value.
[0125] According to embodiments, the data decoder 170 may, for example, comprise a deblocking filter. For the block of the first tile to be filtered, the data decoder 170 may, for example, be configured to filter the first tile using the deblocking filter, if a second block within the second tile independently encoded with respect to the first tile within the second tile is within a filter influence range of the deblocking filter with respect to the block of the first tile to be filtered, and / or wherein, for the block of the first tile to be filtered, the data decoder 170 may, for example, be configured to set a deblocking filter strength of the deblocking filter depending on the block of the first tile to be filtered, if the second block within the second tile independently encoded with respect to the first tile is within the filter influence range of the deblocking filter.
[0126] In an embodiment, the data decoder 170 can for example comprise a sample adaptive offset filter, wherein the sample adaptive offset filter can for example comprise an edge offset mode and a band offset mode. For the block of the first tile to be filtered, the data decoder 170 can for example be configured to activate the band offset mode and to filter the first tile using the adaptive offset filter, if from the block of the first tile to be filtered, a third block within a second tile independently encoded with respect to the first tile, is within a filter influencing range of the sample adaptive offset filter in the edge offset mode.
[0127] According to an embodiment, the data decoder 170 can for example comprise an adaptive loop filter. For the block of the first tile to be filtered, the data decoder 170 can for example be configured to deactivate the adaptive loop filter, if from the block of the first tile to be filtered, a fourth block within a second tile independently encoded with respect to the first tile, is within a filter influencing range of the adaptive loop filter.
[0128] Further, a video encoder 101 for encoding a plurality of images of a video by generating an encoded video signal is provided according to an embodiment. Each of the plurality of images comprises original image data. The video encoder 101 comprises a data encoder 110 configured to generate the encoded video signal comprising encoded image data, wherein the data encoder 110 is configured to encode the plurality of images of the video as the encoded image data, and an output interface 120 for outputting the encoded image data of each of the plurality of images. Each of the plurality of images comprises a plurality of tiles, wherein each of the plurality of tiles comprises a plurality of blocks, wherein each of the plurality of blocks comprises a plurality of samples. For a first tile and a second tile of two adjacent tiles of the plurality of tiles of a first image of the plurality of images, a boundary exists between the first tile and the second tile. The data encoder 110 is configured to encode the first tile and the second tile independently with respect to each other. Further, the data encoder 110 is configured to filter the first tile using a filter or a filter kernel, wherein the data encoder 110 is configured to modify an influencing range of the filter or the filter kernel depending on a distance between a block to be filtered by the filter or the filter kernel and the boundary between the first tile and the second tile, the block being one of the plurality of blocks of the first tile.
[0129] In an embodiment, data encoder 110 can for example be configured to set the range of influence of the filter or the filter kernel to a first size value, if the distance has a first distance value that is less than or equal to a threshold distance. Data encoder 110 can for example be configured to set the range of influence of the filter or the filter kernel to a second size value that is larger than the first size value, if the distance has a second distance value that is larger than the first distance value and if the block and a neighboring block of the block belong to a same reference picture. Furthermore, data encoder 110 can for example be configured to set the range of influence of the filter or the filter kernel to the first size value, if the distance has the second distance value that is larger than the first distance value and if the block and the neighboring block of the block do not belong to the same reference picture.
[0130] According to an embodiment, data encoder 110 can for example comprise a deblocking filter. Data encoder 110 can for example be configured to filter a first picture tile using the deblocking filter for a block of the first picture tile to be filtered, if a second block within a second picture tile that is independently encoded from the first picture tile is within a filter range of influence of the deblocking filter with respect to the block of the first picture tile to be filtered, and / or wherein data decoder (170) can for example be configured to set a deblocking filter strength of the deblocking filter depending on whether the second block within the second picture tile that is independently encoded from the first picture tile is within the filter range of influence of the deblocking filter from the block of the first picture tile to be filtered.
[0131] In an embodiment, data encoder 110 can for example comprise a sample adaptive offset filter, wherein the sample adaptive offset filter can for example comprise an edge offset mode and a band offset mode. Data encoder 110 can for example be configured to filter a first picture tile using the adaptive offset filter for a block of the first picture tile to be filtered, if a third block within a second picture tile that is independently encoded from the first picture tile is within a filter range of influence of the sample adaptive offset filter in the edge offset mode with respect to the block of the first picture tile to be filtered, activate the band offset mode and use the adaptive offset filter.
[0132] According to an embodiment, data encoder 110 can for example comprise an adaptive loop filter. Data encoder 110 can for example be configured to deactivate the adaptive loop filter for a block of a first picture tile to be filtered, if a fourth block within a second picture tile that is independently encoded from the first picture tile is within a filter range of influence of the adaptive loop filter with respect to the block of the first picture tile to be filtered.
[0133] Furthermore, a system comprising the above-mentioned video encoder 101 and the above-mentioned video decoder 151 according to an embodiment is provided. The video encoder 101 is configured to generate an encoded video signal. The video decoder 151 is configured to decode the encoded video signal to reconstruct video pictures.
[0134] When regions of a picture are independently coded, for example as with tiles in HEVC, subjective artifacts are visible. By allowing in-loop filtering across tile boundaries, this unwanted artifact can be mitigated. This is not a problem when encoder and decoder can perform the same process, but when tiles need to be independently decodable and interchangeable, such as in the use cases mentioned above, this approach is only possible if the content is coded using MCTS and the MVs are constrained not to point to any samples affected by the filtering process. Otherwise, if the region / tile boundary approach is used instead, the use of such features is prohibited, because simply allowing the in-loop filter across tile boundaries would result in reconstructed sample values that are erroneous due to the "wrong" reference samples outside the tile (given by the in- loop filter kernel impact range). In turn, using such contaminated samples, the motion compensated prediction would lead to further error propagation in the temporally following coded pictures. Especially, when the contaminated samples are used for the boundary padding procedures envisaged in the VVC independent tiles, the affected region would quickly expand (VVC = Versatile Video Coding).
[0135] In 360-degree video streaming, for example using the MPEG OMAF standard (MPEG = Moving Picture Experts Group; OMAF = Omnidirectional Media Format), a specific approach to mitigate the above-mentioned problem is to over-provision each individual region in the coded picture with some spare picture samples, which can be omitted or mixed with the spare picture samples of spatially neighboring regions. However, this approach negatively impacts the sample budget available to a decoder of a given level, and is therefore not desirable, as the decoded samples are either discarded or mixed together after decoding.
[0136] Embodiments aim at enabling the in-loop filter to cross the boundaries of independent regions, but prevent the motion compensated prediction from using sample values affected by potentially affected samples. One solution, similar to the encoder-side constraints used in HEVC, is to restrict the motion compensation to respect the independent tile boundaries plus the inward pointing filter kernel, such that no reference contains contaminated samples, i.e. the dashed line in Figure 4a .
[0137] Figure 4a The contaminated samples within a tile from the in-loop filter process are shown.
[0138] However, in VVC another approach was adopted to enable motion compensated prediction within independently coded tiles, characterized by tile boundary extrapolation. Here, sample values at tile boundaries are extrapolated perpendicular to the tile boundary and motion estimation is allowed to reach this boundary extrapolation. Now, when these tile boundary sample values are contaminated by the in-loop filter program, the error propagates into the boundary extrapolation and thus into the following picture as Figure 4b illustrated.
[0139] Figure 4b VVC tile boundary extrapolation from the independent region of contaminated samples is illustrated.
[0140] Therefore, embodiments aim at, instead of using the tile boundary sample as the last sample within the tile for deriving the boundary padding, using the closest sample within the tile that is not affected by the in-loop filter program for the vertical tile boundary extrapolation, covering also the sample values of the contaminated samples within the tile, as illustrated below. Figure 5
[0141] Figure 5 Tile boundary extrapolation process according to embodiments subject to the in- loop filter kernel influence range is illustrated.
[0142] According to embodiments, the existing technology clipping for generating the boundary padding samples in the reference block is adapted. The given example is the equation for the horizontal and vertical components of the reference block sample positions following the horizontal and vertical picture boundaries in the current VVC Draft 5 specification v3 (while omitting the motion vector wrap-around) as follows: yInt i = Clip3( 0, picH - 1, yInt L + i - 3 ) xInt i = Clip3( 0, picW - 1, xInt L + i - 3 ) which will be changed according to embodiments to include further constants representative of the filter kernel influence range as follows: yInt i = Clip3( topTileBoundaryPosition + verticalFilterKernelReachInSamples, bottomTileBoundaryPosition - 1 - verticalFilterKernelReachInSamples, yInt L + i - 3 ) xInt i = Clip3( leftTileBoundaryPosition+horizontalFilterKernelReachInSamples, rightTileBoundaryPosition – 1 – horizontalFilterKernelReachInSamples, xInt L + i – 3 ) Clip3 is defined in [1] as: In an embodiment, verticalFilterKernelReachInSamples can for example be equal to horizontalFilterKernelReachInSamples.
[0143] In another embodiment, verticalFilterKernelReachInSamples can for example be different from horizontalFilterKernelReachInSamples.
[0144] It is important to note that the tile boundary extension is not part of the output image, it still contains the contaminated samples.
[0145] As an alternative or in addition to the above concepts, another embodiment is employed. According to such an embodiment, the filterKernelReachInSamples (e.g. horizontalFilterKernelReachInSamples or verticalFilterKernelReachInSamples) of the filtering process is modified. Currently in VVC, all in-loop filters are either enabled across tiles or disabled. Still to make the described region boundary extension more effective, it is desirable to limit the number of samples affected by the filtering process. For example, the deblocking filter has 2 strengths, typically depending on checks such as whether the same reference picture is used for 2 neighboring blocks. According to an embodiment, the blocks at the region boundary can for example always be derived as blocks for which the filter strength is such that a lower number of samples are affected in the process or the filter derivation process is independent / less dependent on the decoding context. Similarly, the impact range of each other filter (SAO and ALF) can be modified at the region boundary (SAO = sample adaptive offset, ALF = adaptive loop filtering). Or the filters can be disabled individually instead of being disabled all at once as currently, e.g. only ALF is disabled.
[0146] According to an embodiment, the deblocking filter strength can for example be derived as follows: If at least one of the two blocks at the block boundary belongs to a tile of the tile to which the other block belongs that is to be coded independently, the strength can for example be set to 1.
[0147] In an embodiment, for SAO, if two blocks that are located in different tiles that are coded independently from each other are located on an independent tile boundary, the band offset mode can for example always be used instead of the edge offset mode.
[0148] According to an embodiment, the combination of ALF, SAO, deblocking can for example be disabled at independent tile boundaries.
[0149] In the following, a second aspect of the embodiments is now described in detail.
[0150] In particular, the second aspect provides motion compensated prediction on the concave tile group boundaries (inward pointing boundaries of the concave tile groups).
[0151] A video encoder 101 for encoding a plurality of pictures of a video by generating an encoded video signal is provided according to embodiments. Each of the plurality of pictures comprises original picture data. The video encoder 101 comprises a data encoder 110 configured to generate the encoded video signal comprising encoded picture data, wherein the data encoder 110 is configured to encode the plurality of pictures of the video into the encoded picture data, and an output interface 120 for outputting the encoded picture data of each of the plurality of pictures. Each of the plurality of pictures comprises a plurality of tiles, wherein each of the plurality of tiles comprises a plurality of samples. The data encoder 110 is configured to determine a group of independently encoded tiles comprising three or more tiles of a plurality of tiles of a reference picture of the plurality of pictures. Further, the data encoder 110 is configured to encode the plurality of pictures according to a reference block located within the reference picture. Further, the data encoder 110 is configured to select a position for the reference block within the reference picture such that the reference block is not both partially within a first one of the three or more tiles of the group of independently encoded tiles and partially within a second one of the plurality of tiles of the reference picture not belonging to the group of independently encoded tiles.
[0152] In embodiments, the three or more tiles may, for example, be arranged in the reference picture such that they have an inward pointing boundary with respect to the plurality of tiles of the reference picture not belonging to the group of independently encoded tiles.
[0153] According to embodiments, the data encoder 110 may, for example, be configured to select a position for the reference block within the reference picture such that the reference block is not both partially within a first one of the three or more tiles of the group of independently encoded tiles and partially within a second one of the plurality of tiles of the reference picture not belonging to the group of independently encoded tiles.
[0154] Further, a system according to embodiments is provided, comprising the above described video encoder 101 and a video decoder 151 for decoding the encoded video signal comprising encoded picture data to reconstruct the plurality of pictures of the video. The video decoder 151 comprises an input interface 160 configured to receive the encoded video signal, and a data decoder 170 configured to reconstruct the plurality of pictures of the video by decoding the encoded picture data. The video encoder 101 is configured to generate the encoded video signal. The video decoder 151 is configured to decode the encoded video signal to reconstruct the video pictures.
[0155] Further, a video encoder 101 for encoding a plurality of images of a video by generating an encoded video signal according to embodiments is provided. Each of the plurality of images comprises original image data. The video encoder 101 comprises a data encoder 110 configured to generate an encoded video signal comprising encoded image data, wherein the data encoder 110 is configured to encode the plurality of images of the video into the encoded image data, and an output interface 120 for outputting the encoded image data of each of the plurality of images. Each of the plurality of images comprises a plurality of tiles, wherein each of the plurality of tiles comprises a plurality of samples. The data encoder 110 is configured to determine a group of independently encoded tiles comprising three or more tiles of a plurality of tiles of a reference image of the plurality of images. Further, the data encoder 110 is configured to encode the plurality of images according to a reference block located within the reference image, wherein the reference block is partially located within three of the three or more tiles of the group of independently encoded tiles and is partially located within another tile of the plurality of tiles of the reference image not belonging to the group of independently encoded tiles. Further, the data encoder 110 is configured to determine a plurality of reference samples of a portion of the reference block located within the other tile not belonging to the group of independently encoded tiles according to one or more of a plurality of samples of a first of the three tiles of the group of independently encoded tiles and according to one or more of a plurality of samples of a second of the three tiles not belonging to the group of independently encoded tiles.
[0156] In embodiments, the three or more tiles can for example be arranged in the reference image such that they have an inward pointing boundary with respect to the plurality of tiles of the reference image not belonging to the group of independently encoded tiles.
[0157] According to embodiments, the data encoder 110 can for example be configured to determine the plurality of reference samples of the portion of the reference block located within the other tile not belonging to the group of independently encoded tiles according to a separation of the portion of the reference block into a first sub-portion and a second sub-portion, such that those of the plurality of reference samples located in the first sub-portion are determined using the one or more samples of the first of the three tiles but not using the one or more samples of the second of the three tiles, and such that those of the plurality of reference samples located in the second sub-portion are determined using the one or more samples of the second of the three tiles but not using the one or more samples of the first of the three tiles.
[0158] In embodiments, the separation of the portion of the reference block located within the further tile not belonging to the independently coded tile group into a first sub-portion and a second sub-portion of the portion of the reference block, for example, can be a diagonal separation of the reference block.
[0159] According to embodiments, the data encoder 110 can be configured to determine the plurality of reference samples of a portion of the reference block located within the further tile not belonging to the independently coded tile group, for example, by applying a planar intra prediction using one or more samples of the first tile of the three tiles of the independently coded tile group and using the one or more samples of the second tile of the three tiles or tree tiles.
[0160] Further, a video decoder 151 for decoding an encoded video signal comprising encoded image data to reconstruct a plurality of images of a video according to embodiments is provided. The video decoder 151 comprises an input interface 160 configured to receive the encoded video signal and a data decoder 170 configured to reconstruct the plurality of images of the video by decoding the encoded image data. Each of the plurality of images comprises a plurality of tiles, wherein each of the plurality of tiles comprises a plurality of samples. The encoded video signal comprises an independently coded tile group comprising three or more tiles of a plurality of tiles of a reference image of the plurality of images. The data decoder 170 is configured to decode the plurality of images according to a reference block located within the reference image, wherein the reference block is partially located within three of the three or more tiles of the independently coded tile group and partially located within a further tile of the plurality of tiles of the reference image not belonging to the independently coded tile group. Further, the data decoder 170 is configured to determine a plurality of reference samples of a portion of the reference block located within the further tile not belonging to the independently coded tile group according to one or more of a plurality of samples of a first tile of the three tiles of the independently coded tile group and according to one or more samples of a plurality of samples of a second tile of the three tiles of the independently coded tile group.
[0161] In embodiments, the three or more tiles are arranged in the reference image such that they have an inward pointing boundary with respect to a concave tile group of the plurality of tiles of the reference image not belonging to the independently coded tile group.
[0162] According to an embodiment, the data decoder 170 can for example be configured to determine the plurality of reference samples of the portion of the reference block located within the further tile not belonging to the independently coded tile group from a separation of the portion of the reference block into a first sub-portion and a second sub-portion such that those of the plurality of reference samples located in the first sub-portion are determined using the one or more samples of the first tile of the three tiles but not using the one or more samples of the second tile of the three tiles and such that those of the plurality of reference samples located in the second sub-portion are determined using the one or more samples of the second tile of the three tiles but not using the one or more samples of the first tile of the three tiles.
[0163] In an embodiment, the separation of the portion of the reference block located within the further tile not belonging to the independently coded tile group into a first sub-portion and a second sub-portion is a diagonal separation of the reference block.
[0164] According to an embodiment, the data decoder 170 can for example be configured to determine the plurality of reference samples of the portion of the reference block located within the further tile not belonging to the independently coded tile group by applying an intra-planar prediction using one or more samples of the first tile of the three tiles of the independently coded tile group and using the one or more samples of the second tile of the three tiles or tree tiles.
[0165] A system comprising the above-mentioned video encoder 101 and the above-mentioned video decoder 151. The video encoder 101 is configured to generate an encoded video signal. The video decoder 151 is configured to decode the encoded video signal, reconstructing a video picture.
[0166] When tile groups are formed in a raster scan order, for example according to the provisions in VVC Draft 5 specification v3, the boundary extension procedure can be performed on independently coded tile groups and needs to accommodate to the tile configurations in Figure 6
[0167] Figure 6 The tile and tile group partitioning of an encoded picture is shown.
[0168] From the picture it can be seen that by clipping sample positions, for example as defined in VVC Draft 5 specification v3, it is not sufficient to cover tile boundaries, such as marked with a red cross, when processing tile group 0.
[0169] In the following, first it is provided what happens when the motion-compensated prediction of a given reference block involves the top and left boundaries of tile 0 of tile group 0, i.e. a close look at the convex top-left boundary of tile 0 in tile group 0. According to the state of the art, three regions outside tile 0 can be distinguished as shown in the following Figure 7
[0170] Figure 7 A reference block with state-of-the-art boundary padding is shown.
[0171] The reference block portion located within the region marked as to be top is padded with a vertical extrapolation of the corresponding top sample row of tile 0, while the reference block portion located within the region marked as to be left is padded with a horizontal extrapolation of the corresponding left sample column of tile 0. As for the reference block portion located within the region marked as to be top-left, it is padded with a single sample value, namely sampled at position 0,0 of tile 0, i.e. the top-left corner sample of tile 0.
[0172] Another example is shown in Figure 8 where a boundary extension would apply to the L-shaped region. In this case, for the bottom-right corner of tile 0, i.e. the concave tile group boundary of tile group 0 as shown in Figure 8 , extrapolation for motion-compensated prediction is needed as well. However, for convex tile group boundaries, similar to the state of the art for image boundaries, sample value extrapolation cannot be simply done, because a vertical extrapolation of tile boundaries in a concave tile group boundary yields two possible values per sample position in the boundary extension.
[0173] Therefore, embodiments are directed to restrict motion-compensated prediction on the encoder side in the bitstream and not to allow a reference block that contains samples from both tile 1 and tile 2 at the same time, such as the first reference block as shown in Figure 8
[0174] Figure 8 A diagonally split concave tile group boundary according to an embodiment is shown.
[0175] Only when a sample of tile 1 or a sample of tile 2 is exclusively located within the reference block, entry into the tile group 0 boundary extension region as shown in Figure 8 is allowed, as shown in the second reference block in Figure 8 In this case, the vertical boundary padding of the rule is applied with respect to the boundary of the neighboring tile involved, i.e. tile 1 in the example.
[0176] As an alternative to the above bitstream restriction, a solution is to split the boundary padding region diagonally, as shown in Figure 8 In this alternative, reference blocks are also allowed that contain samples from tile 1 and tile 2, i.e. the exemplary first reference block. In a further alternative of the diagonal division of the boundary padding region, the entire region is filled from sample values of tile 1 and tile 2 according to the in-plane prediction mode.
[0177] In a further alternative embodiment, if such independent region exists, it is required to restrict the motion compensated prediction from the region to not point outside the region, unless it only crosses one boundary, i.e. no first reference block and no second reference block are allowed.
[0178] In the following, the third aspect of the present application is now described in detail.
[0179] In particular, the third aspect provides a decoded picture hash for GDR.
[0180] A video encoder 101 for encoding a plurality of pictures of a video by generating an encoded video signal according to an embodiment is provided. Each of the plurality of pictures comprises original picture data. The video encoder 101 comprises a data encoder 110 configured to generate the encoded video signal containing encoded picture data, wherein the data encoder 110 is configured to encode the plurality of pictures of the video as the encoded picture data, and an output interface 120 for outputting the encoded picture data of each of the plurality of pictures. The data encoder 110 is configured to encode hash information within the encoded video signal. Further, the data encoder 110 is configured to generate the hash information picture from a current portion of a current picture of the plurality of pictures, but not from a subsequent portion of the current picture, wherein the current portion has a first position within the current picture and the subsequent portion has a second position within the picture different from the first position.
[0181] According to an embodiment, the current picture comprises a plurality of portions, the current portion being one of the plurality of portions and the subsequent portion being another one of the plurality of portions, wherein each of the plurality of portions has a different position within the picture. The data encoder 110 can for example be configured to encode the plurality of portions within the encoded video signal in an encoding order, wherein the subsequent portion immediately follows the current portion in the encoding order, or wherein the subsequent portion is interleaved with the current portion and partially succeeds the current portion in the encoding order.
[0182] In an embodiment, the data encoder 110 can for example be configured to encode the hash information dependent on the current portion.
[0183] According to an embodiment, the data encoder 110 can for example be configured to generate the hash information such that the hash information depends on the current portion and such that the hash information does not depend on any other portion of the plurality of portions of the current image preceding the current portion in encoding order.
[0184] In an embodiment, the data encoder 110 can for example be configured to generate the hash information such that the hash information depends on the current portion and such that the hash information depends on one or more other portions of the plurality of portions preceding the current portion in encoding order, but such that the hash information does not depend on any other portion of the plurality of portions of the current image succeeding the current portion in encoding order.
[0185] According to an embodiment, the data encoder 110 can for example be configured to generate the hash information such that the hash information depends on the current portion and such that the hash information depends on the current portion of the current image, and wherein the hash information depends on each other portion of the plurality of portions of the current image preceding the current portion in encoding order or interleaved with the current portion of the current image and partially preceding the current portion of the current image in encoding order.
[0186] In an embodiment, the data encoder 110 can for example be configured to encode the current image of the plurality of images such that the encoded video signal can for example be decoded by employing progressive decoding refresh.
[0187] For example, in an embodiment, the hash information can for example depend on a refreshed region of the current image refreshed by employing progressive decoding refresh and not on another region of the current image not refreshed by progressive decoding refresh.
[0188] According to an embodiment, the data encoder 110 can for example be configured to generate the hash information such that the hash information indicates one or more hash values depending on the current portion of the current image and not depending on the subsequent portion of the current image.
[0189] In an embodiment, the data encoder 110 can for example be configured to generate each of the one or more hash values depending on a plurality of luma samples of the current portion and / or depending on a plurality of chroma samples of the current portion.
[0190] According to an embodiment, the data encoder 110 can for example be configured to generate each of the one or more hash values as a message digest algorithm 5 value or as a cyclic redundancy check value or as a checksum depending on the plurality of luma samples of the current portion and / or depending on the plurality of chroma samples of the current portion.
[0191] A video decoder 151 provides for decoding an encoded video signal comprising encoded image data to reconstruct a plurality of images of a video according to embodiments. The video decoder 151 comprises an input interface 160 configured to receive the encoded video signal, and a data decoder 170 configured to reconstruct the plurality of images of the video by decoding the encoded image data. The data decoder 170 is configured to analyze encoded hash information within the encoded video signal, wherein the hash information depends on a current portion of a current image of the plurality of images, but does not depend on a subsequent portion of the current image, wherein the current portion has a first position within the current image and the subsequent portion has a second position within the image different from the first position.
[0192] According to embodiments, the current image comprises a plurality of portions, the current portion being one of the plurality of portions, the subsequent portion being another one of the plurality of portions, wherein each of the plurality of portions has a different position within the image. Wherein the plurality of portions is encoded within the encoded video signal in an encoding order, wherein the subsequent portion immediately follows the current portion in the encoding order, or wherein the subsequent portion is interleaved with the current portion and partially precedes the current portion in the encoding order.
[0193] In embodiments, the hash information depending on the current portion can for example be encoded.
[0194] According to embodiments, the hash information depends on the current portion, but does not depend on any other portion of the plurality of portions of the current image.
[0195] In embodiments, the hash information depends on the current portion and such that the hash information depends on one or more other portions of the plurality of portions preceding the current portion within the encoding order, but such that the hash information does not depend on any other portion of the plurality of portions of the current image succeeding the current portion within the encoding order.
[0196] According to embodiments, the hash information depends on the current portion, and wherein the hash information depends on the current portion of the current image, and wherein the hash information depends on each other portion of the plurality of portions of the current image preceding the current portion in the encoding order, or the other portion being interleaved with the current portion of the current image and partially preceding the current portion of the current image within the encoding order.
[0197] In embodiments, the data decoder 170 can for example be configured to decode the encoded video signal to reconstruct the current image using progressive decoding refresh.
[0198] For example, in an embodiment, the hash information can depend, for example, on a refresh region of the current picture that is refreshed using progressive decoding refresh, and not on another region of the current picture that is not refreshed using progressive decoding refresh.
[0199] According to an embodiment, the hash information indicates one or more hash values that depend on the current portion of the current picture but not on the subsequent portion of the current picture.
[0200] In an embodiment, each of the one or more hash values depends on a plurality of luma samples of the current portion and / or on a plurality of chroma samples of the current portion.
[0201] According to an embodiment, each of the one or more hash values is a message-digest algorithm 5 value, or a cyclic redundancy check value, or a checksum, that depends on a plurality of luma samples of the current portion and / or on a plurality of chroma samples of the current portion.
[0202] Furthermore, a system comprising the above described video encoder 101 according to an embodiment and the above described video decoder 151 is provided. The video encoder 101 is configured to generate an encoded video signal. The video decoder 151 is configured to decode the encoded video signal, reconstructing a video picture.
[0203] One important tool for implementers is the control points carried in the encoded video bitstream to verify correct operation of the decoder and integrity of the bitstream. For example, there are means to carry a hash such as MD5, CRC or simple checksum of decoded sample values of an image in an SEI message (SEI = supplemental enhancement information; MD5 = message-digest algorithm 5; CRC = cyclic redundancy check) associated with each image. Thus, it is possible to verify at the decoder side that the decoding output matches the encoder intended output without access to the original material or the encoder. Mismatches can identify problems in the decoder implementation (during development) but also in the bitstream (in service) in case the decoder implementation has already been verified. This can be used, for example, for error detection in a system, for example in a session scenario using RTP based communication channels, where a client has to actively request a predictive chain reset IDR picture to resolve decoding errors caused by bitstream corruption.
[0204] However, in the GDR scenario, the SEI message mechanism of the prior art is not sufficient to allow meaningful detection of decoder or bitstream integrity. This is because in the GDR scenario, when only a part is correctly reconstructed, it can also be considered that the picture is correctly decoded, i.e. the area whose temporal prediction chain has been recently refreshed by an intra-column or line refresh. Take the example of a random access of a stream using a GDR based encoding scheme. From the point where the stream is decoded, many (partially) erroneous pictures will be decoded until the first fully correct picture is decoded and can be displayed. Now, while the client is able to identify the first fully correct decoded picture from the matching prior art decoded picture hash SEI message, the client will not be able to check the decoder or bitstream integrity in the decoded picture until the first fully correct decoded picture. Thus, it can be that the problem of the client never getting a fully correct decoded picture is caused by a bitstream corruption or a decoder implementation error. Thus, the point in time at which the client can take aversive measures (e.g. request the sending side to provide a different type of random access to ensure bitstream integrity) will be significantly later with the present invention, which allows per-picture detection of these cases. One example of this disadvantageous prior art detection mechanism is to wait for a predefined time threshold, e.g. a number of GDR periods (derivable from the bitstream signaling) before identifying the bitstream as corrupted etc. Thus, in the GDR scenario, it is crucial to distinguish between encoder / decoder mismatches per area.
[0205] The embodiments provide bitstream signaling of decoded picture hashes for GDR refreshed areas so that clients can benefit from them as described above. In one embodiment, the areas are defined in the SEI message by the position of the luma samples in the encoded picture and a respective hash is provided for each area.
[0206] In another embodiment, a single hash for a GDR refreshed area is provided in the bitstream, e.g. by a SEI message. The area associated with the hash in a particular access unit (i.e. picture) changes over time and corresponds to all blocks that have had their prediction chain reset from an intra-column or line refresh in the GDR period. I.e. for the first picture of a GDR period, e.g. there is one column of intra blocks on the left side of the picture, the area contains only the intra blocks of that particular column, while for each consecutive picture, the area contains the column of intra blocks and all blocks to the left, assuming a left-to-right scan of the intra refresh columns, until the final picture of the GDR period no longer contains blocks that have not been refreshed and the hash is derived using all blocks of the encoded picture. An exemplary syntax and semantics of such a message is given below.
[0207] Decoded GDR refreshed area hash SEI message syntax This message provides a hash value for the refreshed area of each color component of the current decoded picture.
[0208] NOTE 1 - The decoded GDR refresh region hash SEI message is a suffix SEI message and cannot be included in a scalable nesting SEI message.
[0209] Before computing the hash, the GDR refresh region of the decoded picture data is arranged into one or three byte strings of length dataLen[cldx] called pictureData[cldx] by copying the respective sample values of each decoded picture component in sequence to the byte string of bytes pictureData.
[0210] The syntax elements hash_type, picture_md5[cldx][i], picture_crc[cldx], picture_checksum[cldx] are essentially identical to what is defined in HEVC for the decoded picture hash SEI message, i.e. the hash is derived from the data in the pictureData array.
[0211] When the above concepts are combined with the first aspect of the present application, i.e. the adherence to the mechanism of the boundary extension of the influence range of the in-loop filter kernel, the region used for the hash computation also omits samples that can be contaminated by the influence range of the in-loop filter kernel.
[0212] In embodiments, the hash information can be sent at the beginning or at the end of the picture.
[0213] Although certain aspects have been described in the context of an apparatus, it is clear that these aspects also represent a description of the corresponding method, where a block or device corresponds to a method step or a feature of a method step. Analogously, aspects described in the context of a method step also represent a description of a corresponding block or item or feature of a corresponding apparatus. Some or all of the method steps can be executed by (or using) a hardware apparatus, like for example, a microprocessor, a programmable computer or an electronic circuit. In some embodiments, one or more of the most important method steps can be executed by such an apparatus.
[0214] Depending on certain implementation requirements, embodiments of the application can be implemented in hardware or in software or in both hardware and software. The implementation can be performed using a digital storage medium, for example a floppy disk, a DVD, a Blu-Ray, a CD, a ROM, a PROM, an EPROM, an EEPROM or a FLASH memory, having electronically readable control signals stored thereon, which cooperate (or are capable of cooperating) with a programmable computer system such that the respective method is performed. Therefore, the digital storage medium can be computer readable.
[0215] Some embodiments according to the invention comprise a data carrier having electronically readable control signals, which are capable of cooper ating with a programmable computer system, such that one of the methods described herein is performed.
[0216] Generally, embodiments of the present invention can be implemented as a computer program product with a program code, the program code being operative for performing one of the methods when the computer program product runs on a computer. The program code can for example be stored on a machine readable carrier.
[0217] Other embodiments comprise the computer program for performing one of the methods described herein, stored on a machine readable carrier.
[0218] In other words, an embodiment of the inventive method is, therefore, a computer program having a program code for performing one of the methods described herein, when the computer program runs on a computer.
[0219] A further embodiment of the inventive methods is, therefore, a data carrier (or a digital storage medium, or a computer-readable medium) comprising, recorded thereon, the computer program for performing one of the methods described herein. The data carrier, the digital storage medium or the recorded medium are typically tangible and / or non- transitory.
[0220] A further embodiment of the inventive method is, therefore, a data stream or a sequence of signals representing the computer program for performing one of the methods described herein. The data stream or the sequence of signals can for example be configured to be transferred via a data communication connection, e.g. via the Internet. A further embodiment comprises a processing means, e.g. a computer, or a programmable logic device, configured to or adapted for performing one of the methods described herein.
[0221] A further embodiment comprises a processing means, e.g. a computer, or a programmable logic device, configured to or adapted for performing one of the methods described herein.
[0222] A further embodiment comprises a computer having installed thereon the computer program for performing one of the methods described herein.
[0223] A further embodiment according to the invention comprises an apparatus or a system configured to transfer (for example, electronically or optically) a computer program for performing one of the methods described herein to a receiver. The receiver may, for example, be a computer, a mobile device, a memory device or the like. The apparatus or system may, for example, comprise a file server for transferring the computer program to the receiver.
[0224] In some embodiments, a programmable logic device (for example a field programmable gate array) can be used to perform some or all functions of the methods described herein. In some embodiments, a field programmable gate array can cooperate with a microprocessor in order to perform one of the methods described herein. Generally, the methods are preferably performed by any hardware apparatus.
[0225] The apparatus described herein can be implemented through the use of hardware apparatus, as well as through the use of computer software, or a combination of hardware and software. The apparatus described herein can be implemented using a programmed computer processor.
[0226] The methods described herein can be performed using a hardware apparatus, or using a computer, or using a combination of hardware and computer.
[0227] The above-described embodiments are merely descriptive of principles of the application. It should be understood to those skilled in the art that modifications and changes to the arrangements and details described herein will be apparent. It is intended, therefore, to be limited only by the scope of the forthcoming patent claims, and not by the specific details presented by the description and explanation on embodiments herein.
[0228] References [1] ISO / IEC, ITU-T. High efficiency video coding. ITU-T Recommendation H.265 | ISO / IEC 23008-10 (HEVC), edition 1, 2013; edition 2, 2014.
Claims
1. A video decoder for decoding an encoded video signal, wherein the video decoder is configured to: decode a current portion of a current picture and hash information encoded within the encoded video signal; and analyze the hash information for error detection, wherein the hash information depends on the current portion of the current picture but does not depend on a subsequent portion of the current picture, wherein the current portion has a first position within the current picture and the subsequent portion has a second position within the current picture different from the first position, characterized in that: the current portion of the current picture on which the hash information depends corresponds to all blocks that have been refreshed within a current gradual decoding refresh (GDR) period, and the subsequent portion on which the hash information does not depend has not been refreshed within the current gradual decoding refresh (GDR) period.
2. The video decoder of claim 1, wherein the current picture comprises a plurality of portions, the current portion being one of the plurality of portions, the subsequent portion being another one of the plurality of portions, wherein each of the plurality of portions has a different position within the picture, wherein the plurality of portions being encoded within the encoded video signal in an encoding order, wherein the subsequent portion immediately follows the current portion in the encoding order, or wherein the subsequent portion is interleaved with the current portion and partially precedes the current portion in the encoding order.
3. The video decoder of claim 2, wherein the hash information depends on the current portion but does not depend on any other portion of the plurality of portions of the current picture.
4. The video decoder of claim 2, wherein the hash information depends on the current portion and such that the hash information depends on one or more other portions of the plurality of portions that precede the current portion in the encoding order, but such that the hash information does not depend on any other portion of the plurality of portions of the current picture that succeeds the current portion in the encoding order.
5. The video decoder of claim 2 or 4, wherein the hash information depends on the current portion of the current picture, and wherein the hash information depends on each other portion of the plurality of portions of the current picture, the other portion precedes the current portion in the encoding order, or the other portion is interleaved with the current portion of the current picture and partially precedes the current portion of the current picture in the encoding order.
6. A video encoder for generating an encoded video signal, wherein the video encoder is configured to: encode a current portion of a current picture into the encoded video signal; generate hash information that depends on the current portion of the current picture but does not depend on a subsequent portion of the current picture, wherein the current portion has a first position within the current picture and the subsequent portion has a second position within the current picture different from the first position; and encode the hash information into the encoded video signal, characterized in that: the current portion of the current picture on which the hash information depends corresponds to all blocks that have been refreshed within a current gradual decoding refresh (GDR) period, and the subsequent portion on which the hash information does not depend has not been refreshed within the current gradual decoding refresh (GDR) period. The current portion of the current picture on which the hash information depends corresponds to all blocks to be refreshed in a current gradual decoding refresh (GDR) period, and the subsequent portion on which the hash information does not depend will not be refreshed in the current gradual decoding refresh (GDR) period.
7. The video encoder of claim 6, wherein the current picture comprises a plurality of portions, the current portion being one of the plurality of portions, the subsequent portion being another of the plurality of portions, wherein each of the plurality of portions has a different location within the picture, wherein the data encoder is configured to encode the plurality of portions within the encoded video signal in an encoding order, wherein the subsequent portion immediately follows the current portion in the encoding order, or wherein the subsequent portion is interleaved with the current portion and partially precedes the current portion in the encoding order.
8. The video encoder of claim 7, further configured to generate the hash information such that the hash information depends on the current portion, but does not depend on any other portion of the plurality of portions of the current picture.
9. The video encoder of claim 7, further configured to generate the hash information such that the hash information depends on the current portion, and such that the hash information depends on one or more other portions of the plurality of portions, the other portions preceding the current portion in the encoding order, but such that the hash information does not depend on any other portion of the plurality of portions of the current picture that succeeds the current portion in the encoding order.
10. The video encoder of claim 7 or 9, further configured to generate the hash information such that the hash information depends on the current portion of the current picture, and wherein, the hash information depends on each other portion of the plurality of portions of the current picture, the other portion preceding the current portion in the encoding order, or the other portion is interleaved with the current portion of the current picture and partially precedes the current portion of the current picture in the encoding order.
11. A method for decoding an encoded video signal, the method comprising: decoding a current portion of a current picture and hash information encoded within the encoded video signal; and analyzing the hash information for error detection, wherein the hash information depends on a current portion of the current picture, but does not depend on a subsequent portion of the current picture, wherein the current portion has a first location within the current picture and the subsequent portion has a second location within the current picture different from the first location, characterized in that: the current portion of the current picture on which the hash information depends corresponds to all blocks that have been refreshed in a current gradual decoding refresh (GDR) period, and the subsequent portion on which the hash information does not depend has not been refreshed in the current gradual decoding refresh (GDR) period.
12. A method for generating an encoded video signal, the method comprising: encoding a current portion of a current picture into the encoded video signal; generating hash information dependent on a current portion of a current picture but not on a subsequent portion of the current picture, wherein the current portion has a first location within the current picture and the subsequent portion has a second location within the current picture different from the first location; and encoding the hash information into the encoded video signal, characterized in that: the current portion of the current picture on which the hash information is dependent corresponds to all blocks to be refreshed within a current gradual decoding refresh (GDR) period, and the subsequent portion on which the hash information is not dependent is not to be refreshed within the current gradual decoding refresh (GDR) period.
13. A computer program for implementing the method according to claim 11 or 12 when being executed on a computer or signal processor.