Method and system for video coding with processing of non-compliant block partitions

By detecting and correcting non-compliant partitioning syntax, video frame loss and system suspension problems caused by non-compliant block partitioning in video encoding and decoding systems are solved, and more stable and high-quality video decoding is achieved.

CN120238653APending Publication Date: 2025-07-01INTEL CORP
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202411727262.8
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2023-12-28
Filing Date
2024-11-28
Publication Date
2025-07-01

AI Technical Summary

Technical Problem

When existing video encoding and decoding systems face non-compliant block partitions, they can easily lead to video frame loss and quality degradation, and even the entire system is suspended, affecting the user experience.

Method used

By detecting non-compliant partitions and generating correction partition syntax, ignoring non-compliant partitions, and using compliant partition syntax for decoding, ensuring the stability and quality of the video encoding and decoding system.

Benefits of technology

It effectively avoids video frame loss and system hangs due to non-compliant partitions, improves user experience, and ensures the stability and quality of video decoding.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN120238653A_ABST
    Figure CN120238653A_ABST
Patent Text Reader

Abstract

Methods, systems, and articles of manufacture related to video coding are described herein. The method includes receiving compressed image data of a video frame, the compressed image data including a block of image data of at least one of the frames. The method further includes receiving first partition data to be used for decoding the compressed image data and indicating a partition in the block. The method includes detecting whether a block has a non-compliant block partition. Moreover, the method includes generating second partition data to indicate a non-compliant block partition of the block to be ignored. Further, the method includes decoding the block according to at least the second partition data.
Need to check novelty before this filing date? Find Prior Art

Description

Background Art

[0001] Video coding and decoding standards or codecs provide such standards for an encoder: dividing blocks of image data on a video frame into partitions or sub - blocks to improve efficiency during compression of the image data blocks and obtain better image quality. The partitions have sizes set according to the codec standard. A remote decoder receives a video bitstream of the compressed image data and reconstructs the video frame using the partition syntax with the received compressed image data blocks, where the partition syntax indicates how the blocks were partitioned at the encoder. Brief Description of the Drawings

[0002] The materials described herein are shown by way of example and not limitation in the drawings. For simplicity and clarity of illustration, the elements shown in the drawings are not necessarily drawn to scale. For example, the dimensions of some elements may be exaggerated relative to other elements for clarity. Additionally, where considered appropriate, reference numerals are repeated in the drawings to indicate corresponding or similar elements. In the figures:

[0003] Figure 1 is a schematic diagram of an image processing system having a decoder that processes non - compliant (illegal) video coding and decoding block partitions according to at least one implementation of the implementations herein;

[0004] Figure 2 is a flowchart of a method for video encoding with non - compliant block partition processing according to at least one implementation of the implementations herein;

[0005] Figure 3 is a schematic diagram of a video coding and decoding block partition syntax according to at least one implementation of the implementations herein;

[0006] Figure 4 is a schematic diagram of a video coding and decoding block partition according to an implementation herein;

[0007] Figure 5 is a schematic diagram of an example system;

[0008] Figure 6 is a schematic diagram of another example system; and

[0009] Figure 7 shows another example device, all arranged according to at least some implementations of the present disclosure. Detailed Description

[0010] Reference is now made to the accompanying drawings to describe one or more implementations. Although specific configurations and arrangements are discussed, it should be understood that this is for illustrative purposes only. Those skilled in the relevant art will recognize that other configurations and arrangements may be employed without departing from the spirit and scope of the description. Those skilled in the relevant art will understand that the techniques and / or arrangements described herein can also be used in a variety of other systems and applications other than those described herein.

[0011] Although the following description sets forth various implementations that can be embodied in an architecture such as, for example, a system-on-chip (SoC) architecture, the implementations of the techniques and / or arrangements described herein are not limited to a particular architecture and / or computing system and can be implemented by any architecture and / or computing system for similar purposes. For example, various architectures and / or various computing devices, commercial devices (e.g., servers), and / or consumer electronics (CE) devices (e.g., set-top boxes, smartphones, tablets, TVs, etc.) employing, for example, multiple integrated circuit (IC) chips and / or packages can implement the techniques and / or arrangements described herein. Additionally, although the following description may set forth many specific details such as logical implementations, types and interrelationships of system components, logical partitioning / integration choices, etc., the claimed subject matter can be practiced without these specific details. In other instances, some materials such as, for example, control structures and complete software instruction sequences may not be shown in detail so as not to obscure the materials disclosed herein.

[0012] The materials disclosed herein can be implemented in hardware, firmware, software, or any combination thereof. The materials disclosed herein can also be implemented as instructions stored on a machine-readable medium, which can be read and executed by one or more processors. A machine-readable medium can include any medium and / or mechanism for storing or transmitting information in a form readable by a machine (e.g., a computing device). For example, a machine-readable medium can include read-only memory (ROM); random access memory (RAM); disk storage media; optical storage media; flash memory devices; electrical, optical, acoustic, or other forms of propagated signals (e.g., carrier waves, infrared signals, digital signals, etc.). In another form, a non-transitory article (e.g., a non-transitory computer-readable medium) can be used in conjunction with any of the above examples or other examples, except that it does not include transitory signals per se. It does include those elements other than the signal itself that can store data in a "transitory" manner temporarily, such as RAM, etc.

[0013] References in the specification to "one implementation", "an implementation", "an example implementation", etc. indicate that the implementation described may include a particular feature, structure, or characteristic, but each implementation may not necessarily include the particular feature, structure, or characteristic. Moreover, these phrases do not necessarily refer to the same implementation. Further, when a particular feature, structure, or characteristic is described in connection with an implementation, implementing such feature, structure, or characteristic in connection with other implementations is within the knowledge of those skilled in the art, whether or not explicitly described herein.

[0014] Systems, articles of manufacture, and methods related to a method and system for video encoding with processing of non - compliant block partitions according to implementations herein are described below.

[0015] There are many different video compression codecs that specify the block size for video encoding and decoding. One such codec is the Alliance for Open Media Video 1 (AV1), which is a currently (2023) open royalty - free video codec format. AV1 will be used as an example codec herein, specifically the AV1 4:2:2 chroma subsampling format, although other codecs and chroma subsampling formats may also be used. The specification of AV1 can be found at https: / / github.com / AOMediaCodec / av1 - spec / releases.

[0016] When an encoder uses a codec (e.g., AV1), the encoder typically divides a video frame into block sizes called partitions according to the block size specified by the codec standard and performs prediction, thereby generating the residual or the change in the image data between the original version of the frame and the simulated decoded frame determined by the decoding loop at the encoder. Then, the image data can be sent in a bitstream to the decoder and used to reconstruct the video frame. Thus, the image data can include video codec layer data (e.g., image luminance and color pixel values) as well as intra - frame and inter - frame prediction data, filtering data, residuals, etc., such that the luminance and color data for each pixel in all frames do not need to be placed in the bitstream from the encoder to the decoder.

[0017] The video codec layer may also include partition syntax that indicates the partitions to be used with respective large pixel blocks (referred to as superblocks in the AV1 codec) and sub - blocks of the large blocks. These partition syntaxes are compressed and placed in the header of the image data of the superblocks (superblock level and frame level). The image data of the superblocks and sub - blocks are also often compressed and packed in the bitstream in the order indicating the partitions used in the superblocks.

[0018] Non - compliant partition sizes can be caused by a variety of different situations. One form is that the codec used at the decoder should be the same as the codec used at the encoder. Thus, at the encoder, in some cases, the partitions used may not be fully compatible with the codec used at the decoder, and the encoder may use non - compliant block partition sizes that are not allowed for the specified chroma subsampling format and the codec at the decoder (here the AV1 codec). Otherwise, when the bitstream is sent over the Internet, corruption may occur within the bitstream, thus changing the values of the partition syntax. For example, this may occur due to an overloaded network connection or a malicious hacker attack. In such a case, non - compliant partition splitting may occur during the decoding of the corrupted bitstream. Such corruption may result in the loss of video frames and a reduction in video quality. The corruption may also pause the entire video decoding system (or in other words, hang). Thus, when the system enters a reset sequence, the hang may degrade the user experience.

[0019] To address these issues, the currently disclosed methods and systems detect non - compliant prediction partition block sizes that are non - compliant according to the codec used for video encoding and decoding. In such cases, the system and method override the non - compliant syntax codes, thus providing a more resilient video encoding and decoding system and thus a better user experience. The example methods described herein can be implemented in software, firmware, and / or hardware, operate the codec on the decoder, and in particular, the decoding partition function code that sets partitions for blocks of image data at the decoder using the partition syntax. In one form of the present method and system, the decoding partition function code can have instructions to detect and ignore non - compliant partition syntax received in the bitstream along with the compressed image data, and use a different compliant or corrected partition syntax instead. By one form, the corrected partition syntax indicates that a large block of image data does not have any partitions. For large blocks, this partition_none syntax is used instead of other partition modes because this implementation involves the least amount of data in the super - block overhead. By one form, the partitions are used for prediction, and then the decoder can continue with the prediction without errors or a poor user experience due to non - compliant partitions. It should be noted that the terms syntax and partition can be used as singular or plural in this document.

[0020] Now refer to Figure 1For more details, an example image or video processing system (or video codec system) 100 can be used to perform the method of video encoding using out-of-compliance partition processing described herein. System 100 can have an image or video processing device, also referred to as an encoder device or simply an encoder 102, which can send a bitstream 106 of compressed video frames to a decoded image processing device or decoder 104. The encoder system 102 can receive input video in the form of frames of a video sequence (also referred to as images or pictures), such as image data frames preprocessed to have a specific color sampling format (e.g., 4:2:2), and in other ways prepared for encoding by the encoder using a video coding codec (such as, for example, AV1).

[0021] The encoder 102 can operate according to the AV1 or other codec syntax and functions accessible to the encoder and that may have a partition syntax that indicates the available partition sizes for dividing large or super blocks of image data. The partitions discussed herein are prediction partitions for performing inter-frame or intra-frame prediction on super blocks and their sub-blocks to generate residuals to be compressed with the bitstream, although other types of partitions can alternatively be processed. Once the compressed super block (or its residuals) is compressed and placed in a bitstream packet, the partition syntax for each large block (or super block) and its sub-blocks can also be placed in the header of each large block (e.g., super block level or layer). The compressed video bitstream 106 is then sent to the decoder.

[0022] On the decoding side, the device (or decoder) 104 can have a data extractor 108, an entropy decoder 110, an out-of-compliance partition detector unit 112, a partition syntax corrector unit 114, and an image data decoder unit 116, and the image data decoder unit 116 has at least a partition unit 118 and a prediction unit 120. The prediction unit 120 can have an inverse quantization unit, an inverse transform unit, an intra-frame prediction unit, and an inter-frame prediction unit (not shown), including a motion compensation unit that uses motion vectors obtained from the bitstream or performs its own motion estimation.

[0023] In operation, the data extractor 108 can have a hook or other known mechanism to extract and separate the super blocks of image data and partition syntax, and this may involve counters and / or data shifters. The bitstream data of the super blocks can be placed in a buffer until the entropy decoder 110 is ready to decode the image data super blocks. The entropy decoder 110 also entropy decodes the partition syntax by using the context adaptive binary arithmetic coding (CABAC) algorithm or other algorithms specified in the AV1 or other codec specifications in this example. The entropy decoded image data can be provided to the image data decoder unit 116, while the partition syntax is first provided to the out-of-compliance partition detector unit 112.

[0024] The non - compliant partition detector unit 112 can run the decoding partition function code of the codec, here AV1, and for the color subsampling format used, here 422. In one form, the detector unit 112 receives or obtains the size of the current block being analyzed and the partition syntax retrieved from the bitstream and assigned to the current block for partitioning. The current block can be a super - block (e.g., 128x128 pixels) or one of its sub - blocks, such as 64x64, 32x32, 16x16, or 8x8 pixels. Once the size of the current block being analyzed and its initial or first partition syntax are obtained, the first partition syntax can be compared with the non - compliant partitions for that block size.

[0025] If the first partition syntax is a non - compliant partition (or in other words, has a non - compliant partition pattern), the partition syntax corrector unit 114 can change the partition syntax of the current block. In one form, the partition is changed to ignore the first partition syntax and is set such that the partitioning of the current block will not be performed. Thus, the current block will be decoded as a single block or decoded together as a whole, and this can be signaled by a corrected partition syntax or second partition syntax indicating that the partitioning of the current block should be omitted.

[0026] It should be understood that the detector unit 112 and the corrector unit 114 can be a single unit that operates the decoding partition function code, which uses the partition syntax as part of the decoder operation to set compliant partitions for each block or a single block used for inter - frame prediction.

[0027] Next, the partitioning unit 118 can use the corrected partition syntax (or other syntax if the first partition is compliant) to partition the current block, and the partitioned blocks are provided to the prediction unit 120 and any other units using these blocks at the decoder for inter - frame prediction.

[0028] In some examples, for clarity, the system 100 can include Figure 1Additional items not shown. For example, an encoder may include units or modules for predicting block partitions themselves, residual generation, transform block partitioning, quantization, and entropy coding, as well as a decoding loop that may include inverse quantization and transform, residual addition and block reconstruction, loop filters, motion estimation, motion compensation, intra prediction, etc. In addition to the above units, decoder 104 may also include other units or modules, such as filters. Moreover, video codec system 100 may include processor circuitry providing at least one processor, a radio frequency (RF) transceiver, a splitter and / or multiplexer, a display, and / or an antenna. Additionally, video codec system 100 may include additional items such as speakers, microphones, accelerometers, memories, routers, network interface logic, etc. These implementations are shown in systems 500, 600, or 700 described below.

[0029] As used herein, the term "codec" may refer to an encoder and / or a decoder. Similarly, as used herein, the term "codec" may refer to encoding via an encoder and / or decoding via a decoder. A codec, encoder, or decoder may have components of both an encoder and a decoder.

[0030] Reference Figure 2 , an example process 200 for video encoding arranged in accordance with at least some implementations of the present disclosure using non-compliant partition processing is shown. In the illustrated implementation, process 200 may include one or more operations, functions, or actions, as shown in one or more of the even-numbered operations 202 to 218. As a non-limiting example, herein, reference will be made to the operations and related content discussed for example systems 100, 500, 600, or 700 for Figure 1 and Figures 5 - 7 to describe process 200.

[0031] First, the encoder may receive image data to be encoded in the form of a video sequence of frames, and may preprocess the image data of the frames to format the image data for more efficient video coding. This may include demosaicking (e.g., 422 chroma subsampling format), denoising, etc. The preprocessing may or may not also include the process of converting the image data to a specific color space (e.g., from RGB to YUV) for better coding efficiency.

[0032] Then, the encoder may compress the image data according to a codec (e.g., AV1), and when the encoder makes a decision on which partitions to use on the blocks of the image data to perform prediction, the codec generates a partition syntax. Then, the partition syntax is also entropy encoded.

[0033] Then, the encoder places the compressed image data and the partitioning syntax into a bitstream packet. The partitioning syntax for a large block (or superblock) can be placed in the header of the associated large block. This includes the partitioning syntax for any partitioning syntax of the sub-blocks of the large block. Thus, the partitioning syntax is placed in the same bitstream as the compressed image data.

[0034] Then, the bitstream of the compressed video frame or image data, along with the compressed partitioning syntax, is sent to the decoder for wired or wireless transmission. Units capable of providing such transmission are mentioned below. Such transmission can be through any desired wide area network (WAN), such as the Internet, local area network (LAN), personal area network (PAN), or even within the same device.

[0035] Process 200 may include "receiving the compressed image data of a block of image data of at least one frame including the frame" 202. Now on the decoder side, the decoder or the image processing device having the decoder may have a receiver or transceiver unit to receive the bitstream over a wired network or wirelessly. This may include receiving a large block of image data of a frame of the compressed video sequence, and for an AV1 codec superblock of 128x128 pixels. The decoder can extract the encoded image data. This may also include placing the data in a buffer or other memory until needed.

[0036] Process 200 may include "receiving a first syntax of a video codec for decoding the compressed image data and indicating the partition size in the block" 204. This first involves extracting a syntax such as the partitioning syntax from the bitstream and separating it from the image data, for example, by using a demultiplexer. Then, the decoder can perform entropy decoding to decode the partitioning syntax and then read the partitioning syntax to perform the decoding function. Specifically, the decoder runs the decoding partition function of the codec (here AV1), and specifically finds it in the decoding partition syntax within the codec stored at the decoder. It will be understood that the term "syntax" here can refer to a single code (or multiple codes as described above) in the codec or, depending on the context, a routine or function within the codec. Here, the partitioning syntax is a single code that refers to the partitioning mode used by the decoding partition function to set the partitions of the block of image data.

[0037] Reference Figure 3 , the list 300 of partitioning syntax available on the AV1 codec and indicating the partition or sub-block mode is shown in Table 1 below, and as Figure 3 shown.

[0038] Table 1: Partitioning Syntax Available on the AV1 Codec

[0039] PARTITION_NONE The block cannot be partitioned PARTITION_HORZ The block is partitioned horizontally into two blocks (one on top of the other). PARTITION_VERT The block is partitioned vertically into two blocks (side by side). PARTITION_SPLIT The block is partitioned into four quadrant blocks, and the decoding logic checks the partition again iteratively. PARTITION_HORZ_A Horizontal split, and the top partition is split again PARTITION_HORZ_B Horizontal split, and the bottom partition is split again PARTITION_VERT_A Vertical split, and the left partition is split again PARTITION_VERT_B Vertical split, and the right partition is split again PARTITION_HORZ_4 The block is partitioned horizontally into four equal blocks. PARTITION_VERT_4 The block is partitioned vertically into four equal blocks.

[0040] The partitioning syntax in Table 3 is as Figure 3 shown and can be the same or different on other codecs that can be used with the method and system here.

[0041] Referring Figure 4 , process 200 can include "detecting whether a block has a non-compliant block partition that is inconsistent with the video codec" 206. Available or compliant blocks may vary depending on the block size to be partitioned and the chroma subsampling format. Generally for the AV1 codec, the partitioning map 400 shows the available compliant partitions (or partitioning syntax) depending on the block size and block partitioning of the parent block (whether it is a superblock or a sub-block of a superblock).

[0042] Specifically for AV1, and now ignoring non-compliant partitions for a specific chroma subsampling format, superblock 402 can be partitioned into Figure 3 the eight partitioning modes shown here, numbered uniformly from 404 to 418 here, except for the PARTITION_VERT_4 and PARTITION_HORZ_4 modes. The pixel sizes of the sub-blocks are as shown.

[0043] When PARTITION_SPLIT 416 is decoded from the bitstream, the block is evenly divided into four quadrant sub-blocks 419. Each split sub-block 419 then becomes the parent block and can be partitioned again. This is repeated until the block is the smallest allowed size, or PARTITION_NONE is decoded from the bitstream. All splits other than PARTITION_SPLIT and PARTITION_NONE will divide the block according to their respective partitioning configurations but will not repartition recursively.

[0044] In this example, it is shown that the split sub-block 419 can be partitioned into any of the 10 available partitioning syntaxes, including the PARTITION_VERT_4 420 and PARTITION_HOR_4 422 modes. The split mode sub-blocks at the 64x64 level (now 32x32 blocks) can also be partitioned into any of the 10 partitioning syntax modes, including mode 430 and mode 432. The split partitions of the previous sub-blocks can be split again to the 16x16 level, but now only four partitioning syntaxes or modes are available, including PARTITION_NONE, PARTITION_SPLIT, PARTITION_HORZ, and PARTITION_VERT. In some codecs, the 16x16 partition split sub-blocks can be split again to the 8x8 level and then again to the 4x4 level, with various compliant partitioning modes.

[0045] Decoding can be carried out through the following process: execute a loop function such as decode_partition when receiving the superblock, and then when further partitioning can be performed according to, for example, Figure 4 when further partitioning can be done, execute this loop function again for each split sub-block (or blocks of other authorized partitions) for further partitioning.

[0046] Regarding non-compliant partition syntax, this also depends on the chroma subsampling format used, which is 422 in this example. For bitstream compliance in AV1, it is determined whether get_plane_residual_size(subSize, 1) is not equal to BLOCK_INVALID, which occurs when the block size is non-compliant and thus the partition syntax is non-compliant. This check attempts to limit the chroma UV blocks (YUV color scheme) and thus the transform blocks so that they are not too tall or too wide (i.e., have an aspect ratio outside the range of 1:4 to 4:1). However, a stream damaged during transmission or incorrectly generated by the encoder may not conform to this specification.

[0047] Here, for the 422 chroma subsampling format, the sizes of the partition syntax identified as invalid or non-compliant in the AV1 specification are shown in Table 2 below.

[0048] Table 2: Non-compliant partition syntax for the 4:2:2 format on the AV1 codec

[0049]

[0050]

[0051] Continuing with decoding, operation 206 may include "obtaining the currently partitioned block size" 208, "reading the first partition syntax" 210, and "determining whether the partition size of the first syntax is non-compliant for the current block size" 212. Thus, to limit the number of video frames suspended or discarded by the decoding system, the decoding logic or decoder compares the first partition syntax with non-compliant partitions of the parent block size, and repeats this operation for each superblock and sub-block of the superblock that can have partitions. As described below, in one example form, the decoding partition function may have non-compliant partition patterns or syntax mentioned in the partition function code itself. Otherwise, for example, such non-compliant sizes (or compliant sizes) can be listed in a lookup table or other memory.

[0052] Process 200 may include "decoding a block by ignoring non - compliant block partitioning" 214, and this may include "providing a second syntax indicating that non - compliant block partitioning in the block will be ignored" 216. For example, assume that the current super - block size is 128x128, and PARTITION_VERT is retrieved from the bit - stream as the initial partitioning syntax for this super - block. In this case, the 128x128 super - block will be split into two 64x128 partition units according to the initial partitioning syntax. This partitioning syntax (or partitioning pattern) is non - compliant for the parent super - block. Thus, in this case, the method and system (or bit - stream decoding logic or codec) overrides this non - compliant partitioning. This is done by generating a second corrected partitioning syntax for decoding the super - block, and this second corrected partitioning syntax is compliant. In one form, this can be any compliant partitioning syntax, but in another approach, only the partitioning syntax PARTITION_NONE is used, such that the parent block (whether a super - block or a sub - block) is not partitioned or divided at all for predictive decoding.

[0053] Moreover, all logic downstream of the block with the corrected partitioning syntax will receive a syntax element equal to PARTITION_NONE, such that the overridden and corrected partitioning syntax or element will be used in the sub - block units downstream of the super - block (or any parent block that initiates the override chain). Since all non - compliant splits only mean one more level of re - partitioning of the current block, the decoding logic can override the current split as PARTITION_NONE even if the bit - stream is non - compliant to ensure syntax element consistency.

[0054] In one form, the detection of non - compliant partitioning syntax and the generation of the second compliant partitioning syntax to be used instead can be performed by a single unit that is operating on revised decode - partition function code that has been modified to include instructions for handling non - compliant partitioning syntax. Such function code can be activated by running the decode_partition (decode_ partition) function (e.g., AV1). An example of revised pseudo - code for this function is as follows.

[0055] Legend and Explanation:

[0056] AV1 operates on a 4x4 pixel grid such that the origin of each partition must be passed to the decode_partition function.

[0057] r is the r - th row of 4x4 in the frame.

[0058] c is the c - th column of 4x4 in the frame.

[0059] Mirows is the number of 4x4 rows in the frame.

[0060] Micols is the number of 4x4 columns in the frame.

[0061] AvailU and AvailL are used to calculate the context for looking up the general data format (CDF) table of AV1 CABAC, which is not relevant here.

[0062] split_or_vert is used to calculate the partitioning of a block when only split or vert partitioning is allowed due to overlap with the right edge of the frame.

[0063] split_or_horz is used to calculate the partitioning of a block when only split or horz partitioning is allowed due to overlap with the bottom edge of the frame.

[0064] Table 3 below indicates the block size (bsize) or sub - size (subsize) code for the current partition.

[0065] Table 3: Block Size (bsize)

[0066] subSize The name of subSize 0 BLOCK_4X4 1 BLOCK_4X8 2 BLOCK_8X4 3 BLOCK_8X8 4 BLOCK_8X16 5 BLOCK_16X8 6 BLOCK_16X16 7 BLOCK_16X32 8 BLOCK_32X16 9 BLOCK_32X32 10 BLOCK_32X64 11 BLOCK_64X32 12 BLOCK_64X64 13 BLOCK_64X128 14 BLOCK_128X64 15 BLOCK_128X128 16 BLOCK_4X16 17 BLOCK_16X4 18 BLOCK_8X32 19 BLOCK_32X8 20 BLOCK_16X64 21 BLOCK_64X16

[0067] Example pseudo - code for ignoring non - compliant partitions:

[0068] (Bold and italic text are modified code added to handle non - compliant partitions)

[0069]

[0070]

[0071] decode_block(r, c + halfBlock4x4, splitSize)

[0072] decode_block(r + halfBlock4x4, c, subSize)

[0073] } else if (partition == PARTITION_HORZ_B) {

[0074] decode_block(r, c, subSize)

[0075] decode_block(r + halfBlock4x4, c, splitSize)

[0076] decode_block(r + halfBlock4x4, c + halfBlock4x4, splitSize)

[0077] } else if (partition == PARTITION_VERT_A) {

[0078] decode_block(r, c, splitSize)

[0079] decode_block(r + halfBlock4x4, c, splitSize)

[0080] decode_block(r, c + halfBlock4x4, subSize)

[0081] } else if (partition == PARTITION_VERT_B) {

[0082] decode_block(r, c, subSize)

[0083] decode_block(r, c + halfBlock4x4, splitSize)

[0084] decode_block(r + halfBlock4x4, c + halfBlock4x4, splitSize)

[0085] } else if (partition == PARTITION_HORZ_4) {

[0086] decode_block(r + quarterBlock4x4 * 0, c, subSize)

[0087] decode_block(r + quarterBlock4x4 * 1, c, subSize)

[0088] decode_block(r + quarterBlock4x4 * 2, c, subSize)

[0089] if (r + quarterBlock4x4 * 3 < MiRows)

[0090] decode_block(r + quarterBlock4x4 * 3, c, subSize)

[0091] } else {

[0092] decode_block(r, c + quarterBlock4x4 * 0, subSize)

[0093] decode_block(r, c + quarterBlock4x4 * 1, subSize)

[0094] decode_block(r, c + quarterBlock4x4 * 2, subSize)

[0095] if (c + quarterBlock4x4 * 3 < MiCols)

[0096] decode_block(r, c + quarterBlock4x4 * 3, subSize)

[0097] }

[0098] }

[0099] It should be understood that alternatively, the retrieved initial partition code can also be compared with the compliant partition code, and when necessary, it can be determined that the retrieved initial partition code is non - compliant through an elimination process.

[0100] Operation 214 may include "decoding the block at least according to a second syntax" 218, and is performed in this example case by using the decoding process of the AV1 codec standard, although other standards can also be used. Relevant details are provided above, where the compliant partition can be provided to the prediction unit to generate a prediction to be added to the decompressed residual, and thereby reconstruct the decoded frame. The result is a set of decoded and decompressed images with good quality and fewer losses or pauses caused by non - compliant partitions. Now, the image is ready to be provided to a display, stored, or further sent to another device for further analysis or processing.

[0101] Although the implementation of the example processes discussed herein may include performing all the operations shown in the order shown by any method herein, the present disclosure is not limited in this regard, and in various examples, the implementation of the example processes herein may include only a subset of the operations shown, operations performed in an order different from the order shown, or additional operations.

[0102] Additionally, any one or more of the operations discussed herein can be performed in response to instructions provided by one or more computer program products. Such program products can include a signal-bearing medium that provides the instructions, which, when executed by, for example, a processor, can provide the functions described herein. The computer program products can be provided in any form of one or more machine-readable media. Thus, for example, a processor including one or more graphics processing units or processor cores can perform one or more blocks of the example processes herein in response to program code and / or instructions or instruction sets transmitted to the processor by one or more machine-readable media. Generally, the machine-readable media can transmit software in the form of program code and / or instructions or instruction sets that can cause any device and / or system described herein to implement at least part of the operations described herein and / or any part of the devices, systems, or any modules or components described herein.

[0103] As used in any implementation described herein, the term "module" refers to any combination of software logic, firmware logic, hardware logic, and / or circuitry configured to provide the functions described herein. Software can be embodied as a software package, code, and / or instruction set or instructions, and "hardware" (as used in any implementation described herein) can include, for example, hardwired circuitry, programmable circuitry, state machine circuitry, fixed function circuitry, execution unit circuitry, and / or firmware that stores instructions executed by the programmable circuitry, either alone or in any combination. Modules can be embodied collectively or individually as circuitry that forms part of a larger system, for example, an integrated circuit (IC), a system on a chip (SoC), etc.

[0104] As used in any implementation described herein, the term "logic unit" refers to any combination of firmware logic and / or hardware logic configured to provide the functions described herein. Logic units can be embodied collectively or individually as circuitry that forms part of a larger system, such as an integrated circuit (IC), a system on a chip (SoC), etc. For example, a logic unit can be embodied in logic circuitry for implementing the firmware or hardware of the codec system described herein. Those of ordinary skill in the art will recognize that operations performed by hardware and / or firmware can alternatively be implemented via software, which can be embodied as a software package, code, and / or instruction set or instructions, and will also recognize that logic units can also utilize a portion of software to implement their functions.

[0105] As used in any implementation described herein, the term "component" can refer to a module or a logic unit, as described above. Thus, the term "component" can refer to any combination of software logic, firmware logic, and / or hardware logic configured to provide the functions described herein. For example, those of ordinary skill in the art will recognize that operations performed by hardware and / or firmware can alternatively be implemented via software modules, which can be embodied as software packages, code, and / or instruction sets, and will also recognize that a logic unit can also utilize a portion of software to implement its functions. Components herein can also refer to processors and other specific hardware devices.

[0106] The term "circuit" or "circuitry" in any implementation herein can include or form, for example, hardwired circuitry, programmable circuitry (e.g., a computer processor including one or more separate instruction processing cores), state machine circuitry, and / or firmware storing instructions executed by the programmable circuitry, either alone or in any combination. The circuitry can include a processor ("processor circuitry") and / or a controller configured to execute one or more instructions to perform one or more operations described herein. The instructions can be embodied as, for example, an application, software, firmware, etc., configured to cause the circuitry to perform any of the foregoing operations. The software can be embodied as a software package, code, instructions, instruction sets, and / or data recorded on a computer-readable storage device. The software can be embodied or implemented as including any number of processes, and the processes in turn can be embodied or implemented as including any number of threads, etc. in a hierarchical manner. The firmware can be embodied as code, instructions, or instruction sets and / or data hard-coded (e.g., non-volatile) in a memory device.

[0107] The circuitry can be embodied, collectively or individually, as circuitry that forms part of a larger system, such as an integrated circuit (IC), an application specific integrated circuit (ASIC), a system on a chip (SoC), a desktop computer, a laptop computer, a tablet computer, a server, a smart phone, etc. Other implementations can be implemented as software executed by a programmable control device. In such cases, the term "circuit" or "circuitry" is intended to include a combination of software and hardware, such as a programmable control device or a processor capable of executing software. As described herein, various implementations can be realized using hardware elements, software elements, or any combination thereof that form a circuit, circuitry, or processor circuitry. Examples of hardware elements can include processors, microprocessors, circuits, circuit elements (e.g., transistors, resistors, capacitors, inductors, etc.), integrated circuits, application specific integrated circuits (ASICs), programmable logic devices (PLDs), digital signal processors (DSPs), field programmable gate arrays (FPGAs), logic gates, registers, semiconductor devices, chips, microchips, chip sets, etc.

[0108] Reference Figure 5 , in accordance with at least some implementations of the present disclosure, an example video codec system 500 for providing video encoding and decoding using non-compliant partition processing can be arranged. In the illustrated implementation, the system 500 can include an imaging device 501 or can be connected to a separate imaging device 501. In one form, the imaging device can be a camera, a still image camera, or both, and the device 500 houses such a camera, such as a smart phone, a tablet computer, etc. In other examples, the device 500 is a camera, and the imaging device 501 is the hardware and sensors that make up the image capture component of the camera.

[0109] The system 500 can also include one or more central and / or graphics processing circuitry systems 503, which constitute a processing unit or a processor, including a CPU, an ISP, a GPU, etc., a display device 505, and one or more memory storages 504. The central processing unit 503, the memory storage 504, and / or the display device 505 can be capable of communicating with each other via, for example, a bus, a line, or other access. In various implementations, the display device 505 can be integrated in the system 500 or implemented separately from the system 500.

[0110] The system 500 can also have an antenna 512 to receive or transmit image data, configuration files, and syntax data (e.g., partition syntax), as well as other data related to video encoding and decoding. Thus, in some cases, the imaging device 501 may not be the only source of image data.

[0111] As Figure 5 shown and as described above, the processing unit 520 can have a logic circuitry system 550, which optionally has a video encoder 102, a data extractor 108, an entropy unit 110, a non-compliant partition detector 112, and a partition syntax corrector 114. These units can be part of a decoder 116, or the decoder 116 can be regarded as a separate unit. Thus, as shown, the system 500 can be located on the encoder side or the decoder side of the system (or alternatively can be used as either side). These components can be respectively similar to the components with similar names on the system 100 ( Figure 1 ), except that two devices 102 and 104 are required, one used as an encoder and the other used as a decoder. The video decoder 104 can have a non-compliant partition detector 112 to detect non-compliant partition sizes, and a partition corrector 114 to generate a corrected partition syntax for large image blocks in reverse. It should be understood that the detector unit 112 and the corrector unit 114 can be a single unit, and its operation uses the partition syntax as the decoding partition function code that is part of the decoder operation, as described above.

[0112] It should be understood thatFigure 5 The modules or units shown in Figure 5 may include various software and / or hardware modules and / or modules that can be implemented via software or hardware or a combination thereof. For example, a module can be implemented as software via the processing unit 520, or a module can be implemented via a dedicated hardware portion. Additionally, the memory storage 504 shown can be, for example, a shared memory of the processing unit 520. Image data, partition functions, and syntax data, as well as other video codec data, can be stored on any of the above options, or can be stored on a combination of these options, or can be stored elsewhere. Moreover, the system 500 can be implemented in various ways. For example, the system 500 (excluding the display device 505) can be implemented as a single chip or device having a graphics processor, a quad-core central processing unit, and / or a memory controller input / output (I / O) module. In other examples, the system 500 (again excluding the display device 505) can be implemented as a chipset.

[0113] The processor of the processor circuitry 503 can include any suitable implementation, including, for example, a microprocessor, a multi-core processor, an application-specific integrated circuit, a chip, a chipset, a programmable logic device, a graphics card, an integrated graphics card, a general-purpose graphics processing unit, etc. Additionally, the memory storage 504 can be any type of memory, such as volatile memory (e.g., static random access memory (SRAM), dynamic random access memory (DRAM), etc.) or non-volatile memory (e.g., flash memory, etc.). In a non-limiting example, the memory storage 504 can also be implemented via a cache memory.

[0114] Reference Figure 6 Figure 6 , according to the present disclosure and examples of various implementations, the example system 600 can be a media system, although the system 600 is not limited to this context. For example, the system 600 can be incorporated into a personal computer (PC), a laptop computer, a super laptop computer, a tablet computer, a touchpad, a portable computer, a handheld computer, a palmtop computer, a personal digital assistant (PDA), a cellular phone, a combination cellular phone / PDA, a television, a smart device (e.g., a smart phone, a smart tablet computer, or a smart television), a mobile Internet device (MID), a messaging device, a data communication device, etc.

[0115] In various implementations, the system 600 includes a platform 602 communicatively coupled to a display 620. The platform 602 can receive content from a content device (e.g., a content service device 630 or a content delivery device 640 or other similar content sources). A navigation controller 650 including one or more navigation features can be used to interact with, for example, the platform 602 and / or the display 620. Each of these components will be described in more detail below.

[0116] In various implementations, platform 602 may include any combination of chipset 605, processor 614, memory 612, storage device 611, graphics subsystem 615, applications 616, and / or radio 618, and antenna 610. Chipset 605 may provide intercommunication between processor 614, memory 612, storage device 611, graphics subsystem 615, applications 616, and / or radio 618. For example, chipset 605 may include a storage adapter (not depicted) capable of providing intercommunication with storage device 611.

[0117] Processor 614 may be implemented as a complex instruction set computer (CISC) or reduced instruction set computer (RISC) processor; an x86 instruction set compatible processor, a multi-core, or any other microprocessor or central processing unit (CPU). In various implementations, processor 614 may be a dual-core processor, a dual-core mobile processor, etc.

[0118] Memory 612 may be implemented as a volatile memory device, such as but not limited to random access memory (RAM), dynamic random access memory (DRAM), or static RAM (SRAM).

[0119] Storage device 611 may be implemented as a non-volatile storage device, such as but not limited to a disk drive, an optical disk drive, a tape drive, an internal storage device, an attached storage device, flash memory, battery-backed SDRAM (synchronous DRAM), and / or a network-accessible storage device. In various implementations, storage device 611 may include technologies for improving storage performance, such as enhancing the protection of valuable digital media when multiple hard disk drives are included.

[0120] Graphics subsystem 615 may perform processing of images (e.g., still images or video) for display. For example, graphics subsystem 615 may be a graphics processing unit (GPU) or a visual processing unit (VPU). An analog or digital interface may be used to communicatively couple graphics subsystem 615 and display 620. For example, the interface may be any one of a high-definition multimedia interface, a DisplayPort, a wireless HDMI, and / or a wireless HD-compatible technology. Graphics subsystem 615 may be integrated into processor 614 or chipset 605. In some implementations, graphics subsystem 615 may be a stand-alone card communicatively coupled to chipset 605.

[0121] The graphics and / or video processing techniques described herein can be implemented in a variety of hardware architectures. For example, the graphics and / or video functionality can be integrated within a chipset. Alternatively, discrete graphics and / or video processors can be used. As another implementation, the graphics and / or video functionality can be provided by a general-purpose processor (including multi-core processors). In other implementations, these functions can be implemented in consumer electronic devices.

[0122] Radio 618 can include one or more radios capable of transmitting and receiving signals using a variety of suitable wireless communication technologies. Such technologies can involve communication across one or more wireless networks. Example wireless networks include (but are not limited to) wireless local area networks (WLANs), wireless personal area networks (WPANs), wireless metropolitan area networks (WMANs), cellular networks, and satellite networks. When communicating across such networks, radio 618 can operate in accordance with one or more applicable standards of any version.

[0123] In various implementations, display 620 can include any television-type monitor or display. Display 620 can include, for example, a computer display screen, a touchscreen display, a video monitor, a television-like device, and / or a television. Display 620 can be digital and / or analog. In various implementations, display 620 can be a holographic display. Moreover, display 620 can be a transparent surface capable of receiving a visual projection. Such a projection can convey various forms of information, images, and / or objects. For example, such a projection can be a visual overlay for a mobile augmented reality (MAR) application. Under the control of one or more software applications 616, platform 602 can display user interface 622 on display 620.

[0124] In various implementations, content service device 630 can be hosted by any national, international, and / or independent service and can thus access platform 602 via, for example, the Internet. Content service device 630 can be coupled to platform 602 and / or display 620. Platform 602 and / or content service device 630 can be coupled to network 660 to transfer (e.g., send and / or receive) media information between network 660. Content delivery device 640 can also be coupled to platform 602 and / or display 620.

[0125] In various implementations, the content service device 630 can include a cable TV box, a personal computer, a network, a telephone, an Internet-enabled device or appliance capable of delivering digital information and / or content, and any other similar device capable of transmitting content unidirectionally or bidirectionally between a content provider and the platform 602 and / or the display 620, either via the network 660 or directly. It can be understood that content can be transmitted unidirectionally and / or bidirectionally to and from any one of the components in the system 600 and the content provider via the network 660. Examples of content can include any media information, including, for example, video, music, medical, and game information, etc.

[0126] The content service device 630 can receive content, such as cable TV programs, including media information, digital information, and / or other content. Examples of content providers can include any cable or satellite TV or radio or Internet content provider. The provided examples are not meant to limit the implementations according to the present disclosure in any way.

[0127] In various implementations, the platform 602 can receive control signals from a navigation controller 650 having one or more navigation features. For example, the navigation features of the controller 650 can be used to interact with the user interface 622. In an implementation, the navigation controller 650 can be a pointing device, which can be a computer hardware component (specifically, a human-machine interface device) that allows a user to input spatial (e.g., continuous and multi-dimensional) data into a computer. Many systems (e.g., graphical user interfaces (GUIs) as well as televisions and monitors) allow users to control a computer or a television and provide data to a computer or a television using physical gestures.

[0128] The movement of the navigation features of the controller 650 can be replicated on a display (e.g., the display 620) by the movement of a pointer, a cursor, a focus ring, or other visual indicators displayed on the display. For example, under the control of a software application 616, the navigation features located on the navigation controller 650 can be mapped to virtual navigation features displayed on the user interface 622. In an implementation, the controller 650 may not be a separate component but can be integrated into the platform 602 and / or the display 620. However, the present disclosure is not limited to the elements or contexts shown or described herein.

[0129] In various implementations, a driver (not shown) can include techniques that enable a user to immediately turn on and off a platform 602 (such as a television) via a touch button after an initial startup (e.g., when enabled). Program logic can allow the platform 602 to stream content to a media adapter or other content service device 630 or content delivery device 640 even when the platform is “off.” Additionally, the chipset 605 can include hardware and / or software support for, for example, 7.1 surround sound audio and / or high definition (7.1) surround sound audio. The driver can include a graphics driver for an integrated graphics platform. In an implementation, the graphics driver can include a Peripheral Component Interconnect (PCI) Express graphics card.

[0130] In various implementations, any one or more of the components shown in system 600 can be integrated. For example, the platform 602 and the content service device 630 can be integrated, or the platform 602 and the content delivery device 640 can be integrated, or for example, the platform 602, the content service device 630, and the content delivery device 640 can be integrated. In various implementations, the platform 602 and the display 620 can be an integrated unit. For example, the display 620 and the content service device 630 can be integrated, or the display 620 and the content delivery device 640 can be integrated. These examples are not intended to limit the present disclosure.

[0131] In various implementations, system 600 can be implemented as a wireless system, a wired system, or a combination of both. When implemented as a wireless system, system 600 can include components and interfaces suitable for communicating via a wireless shared medium, such as one or more antennas, transmitters, receivers, transceivers, amplifiers, filters, control logic, etc. Examples of wireless shared media can include portions of the wireless spectrum, such as the RF spectrum, etc. When implemented as a wired system, system 600 can include components and interfaces suitable for communicating via a wired communication medium, such as input / output (I / O) adapters, physical connectors for connecting the I / O adapter to the corresponding wired communication medium, network interface cards (NICs), disk controllers, video controllers, audio controllers, etc. Examples of wired communication media can include wires, cables, metal leads, printed circuit boards (PCBs), backplanes, switch fabrics, semiconductor materials, twisted pairs, coaxial cables, optical fibers, etc.

[0132] Platform 602 may establish one or more logical or physical channels to transmit information. The information may include media information and control information. Media information may refer to any data representing content for a user. Examples of content may include, for example, data from a voice conversation, a video conference, a streaming video, an email message, a voicemail message, alphanumeric symbols, graphics, images, video, text, etc. Data from a voice conversation may be, for example, voice information, a silence period, background noise, comfort noise, tones, etc. Control information may refer to any data representing commands, instructions, or control words for an automated system. For example, control information may be used to route media information through the system or to instruct a node to process media information in a predetermined manner. However, the implementation is not limited to Figure 6 the elements or contexts shown or described in

[0133] As described above, system 600 may be embodied in different physical styles or form factors. Figure 7 An example small form factor device 700 arranged according to at least some implementations of the present disclosure is shown. In some examples, system 500 or 600 may be implemented via device 700. In other examples, other systems, components, or modules or portions thereof discussed herein may be implemented via device 700. In various implementations, for example, device 700 may be implemented as a mobile computing device having wireless capabilities. A mobile computing device may refer to any device having a processing system and a mobile power source or supply (such as, for example, one or more batteries).

[0134] Examples of mobile computing devices may include a personal computer (PC), a laptop computer, a super laptop computer, a tablet computer, a touchpad, a portable computer, a handheld computer, a palmtop computer, a personal digital assistant (PDA), a cellular phone, a cellular phone / PDA combination, a smart device (e.g., a smart phone, a smart tablet computer, or a smart mobile TV), a mobile Internet device (MID), a messaging device, a data communication device, a camera (e.g., a point-and-shoot camera, a superzoom camera, a digital single-lens reflex (DSLR) camera), etc.

[0135] Examples of mobile computing devices may also include computers arranged to be implemented by a motor vehicle or a robot or worn by a person, such as a wrist computer, a finger computer, a ring computer, a glasses computer, a belt clip computer, an armband computer, a shoe computer, a clothing computer, and other wearable computers. In various implementations, for example, a mobile computing device may be implemented as a smart phone capable of executing computer applications as well as voice communication and / or data communication. Although some implementations may be described with a mobile computing device implemented as an example smart phone, it can be understood that other implementations may also use other wireless mobile computing devices. The implementation is not limited to this context.

[0136] As Figure 7 shown, device 700 may include a housing having a front face 701 and a back face 702. Device 700 includes a display 704, an input / output (I / O) device 706, cameras 721, 722, and an integrated antenna 708. In some implementations, device 700 does not include cameras 721 and 722, and device 700 obtains input image data (e.g., any of the input image data discussed herein) from another device. Device 700 may also include a navigation feature 712. I / O device 706 may include any suitable I / O device for inputting information into the mobile computing device. Examples of I / O device 706 may include an alphanumeric keyboard, a numeric keypad, a touchpad, input keys, buttons, switches, a microphone 714, a speaker 715, a voice recognition device, and software, etc. Information may also be input into device 700 through a microphone (not shown), or may be digitized through a voice recognition device. As shown, device 700 may include cameras 721, 722, and a flash 710 integrated into the back face 702 (or elsewhere) of device 700. In other examples, cameras 721, 722, and flash 710 may be integrated into the front face 701 of device 700, or a camera set may be provided for both the front and back faces.

[0137] Various implementations may be realized using hardware elements, software elements, or a combination of both. Examples of hardware elements may include a processor, a microprocessor, a circuit, circuit elements (e.g., transistors, resistors, capacitors, inductors, etc.), an integrated circuit, an application-specific integrated circuit (ASIC), a programmable logic device (PLD), a digital signal processor (DSP), a field-programmable gate array (FPGA), logic gates, registers, semiconductor devices, chips, microchips, chip sets, etc. Examples of software may include software components, programs, applications, computer programs, application programs, system programs, machine programs, operating system software, middleware, firmware, software modules, routines, subroutines, functions, methods, procedures, software interfaces, application program interfaces (API), instruction sets, computing code, computer code, code segments, computer code segments, words, values, symbols, or any combination thereof. Determining whether an implementation uses hardware elements and / or software elements to be realized may vary according to many factors, such as the desired computing rate, power level, heat capacity limit, processing cycle budget, input data rate, output data rate, memory resources, data bus speed, and other design or performance constraints.

[0138] One or more aspects of at least one implementation may be implemented by representative instructions stored on a machine-readable medium that represent various logic within a processor, which, when read by the machine, cause the machine to fabricate the logic to perform the techniques described herein. Such representation, referred to as an IP core, may be stored on a tangible machine-readable medium and provided to various customers or manufacturing facilities to be loaded into a manufacturing machine for actual fabrication of the logic or processor.

[0139] Although the specific features described herein have been described with reference to various implementations, this description is not intended to be construed in a limiting sense. Accordingly, various modifications of the implementations described herein, as well as other implementations, will be apparent to those of ordinary skill in the art to which this disclosure pertains and are considered to be within the spirit and scope of this disclosure.

[0140] The following examples relate to additional implementations.

[0141] By Example 1, a computer-implemented video encoding and decoding method includes: receiving compressed image data of a video frame, the compressed image data including blocks of image data of at least one frame in the frame; receiving first partition data for decoding the compressed image data and indicating partitions in the blocks; detecting whether a block has a non-compliant block partition; generating second partition data for indicating that the non-compliant block partition of the block is to be ignored; and decoding the block based on the second partition data.

[0142] By Example 2, according to the subject matter of Example 1, wherein the first partition data and the second partition data are respectively a first partition syntax and a second partition syntax of a video encoding and decoding codec.

[0143] By Example 3, according to the subject matter of Example 2, wherein the codec is AV1 (AO Media Audio Video 1).

[0144] By Example 4, according to the subject matter of Example 3, wherein the second partition syntax is the code of partition_none.

[0145] By Example 5, according to the subject matter of any one of Examples 1 to 4, wherein the second partition data is further used to indicate that any partition of the block should be ignored for prediction.

[0146] By Example 6, according to the subject matter of any one of Examples 1 to 5, wherein the first partition data is received in a compressed state in a bitstream together with the compressed image data, and wherein the second partition data is generated at a decoding device that receives the bitstream.

[0147] By Example 7, according to the subject matter of any one of Examples 1 to 6, wherein the detection includes: determining the block size of a block, determining a partitioning pattern of first partition data to subdivide the block, and determining whether the partitioning pattern is the same as one or more non-compliant partitioning patterns associated with the block size.

[0148] By Example 8, at least one article, the article including a computer-readable medium having instructions thereon that, when executed, cause a computing device to operate by: receiving compressed image data of a video frame, the compressed image data including blocks of image data of at least one frame in the frame; receiving a partitioning syntax of a video codec for decoding the compressed image data and indicating partitions in the blocks; detecting whether a block has a non-compliant block partition; generating a corrected partitioning syntax of the video codec, the corrected partitioning syntax for indicating that the non-compliant block partition of the block is to be ignored; and decoding the block based on the corrected partitioning syntax.

[0149] By Example 9, according to the subject matter of Example 8, wherein the non-compliant block partition depends at least in part on the chrominance subsampling format of the image data.

[0150] By Example 10, according to the subject matter of Example 8 or 9, wherein the non-compliant block partition depends at least in part on the size of the block and a predetermined set of compliant partitioning patterns depending on the block size.

[0151] By Example 11, according to the subject matter of any one of Examples 8 to 10, wherein the corrected partitioning syntax indicates a compliant partitioning pattern according to the codec.

[0152] By Example 12, according to the subject matter of any one of Examples 8 to 11, wherein the corrected partitioning syntax indicates that at least one block will be predicted and decoded without partitioning.

[0153] By Example 13, according to the subject matter of any one of Examples 8 to 12, wherein the corrected partitioning syntax indicates a compliant partitioning pattern of a block having at least one partition.

[0154] By Example 14, according to the subject matter of any one of Examples 8 to 13, wherein the detection and generation include: running revised decoded partitioning function code of an AV1 codec that changes the partitioning syntax when a non-compliant partition is detected.

[0155] By Example 15, a computer-implemented video encoding and decoding system includes: a memory; and a processor circuitry communicatively coupled to the memory, wherein the processor circuitry is arranged to operate by: encoding image data of a video sequence of frames and at least one block of at least one frame in the frames; and placing the encoded image data and first partition data into a bitstream, wherein the first partition data indicates a block partition of the at least one block; and sending the bitstream to a decoder, wherein the decoder is arranged to: detect whether the block partition is a non-compliant partition, and generate a corrected partition, which, when the block partition is a non-compliant partition, indicates whether the block partition is to be ignored for decoding the block.

[0156] By Example 16, the subject matter of Example 15, wherein the detecting includes: running a decoding partition function code having instructions for receiving a block size of the at least one block and comparing a first partition syntax of the first partition data with a non-compliant or compliant partition of the at least one block having the block size.

[0157] By Example 17, the subject matter of Example 16, wherein, when the block size is 8x8 pixels, the non-compliant partition has exactly a single vertical division between two blocks, and wherein, when the block size is 16x16 pixels, 32x32 pixels or 64x64 pixels, in addition to the split dividing the block into four quadrant blocks, the non-compliant partition has at least one vertical linear division completely passing through the block, and wherein, when the block size is 128x128 pixels, the non-compliant partition has a single vertical linear division completely passing through the block and a single horizontal division passing through half of the block.

[0158] By Example 18, the subject matter of Example 16, wherein the detecting is performed by running a revised decoding partition function code, which is modified to handle non-compliant partitions.

[0159] By Example 19, the subject matter of any one of Examples 15 to 18, wherein the decoder includes a partitioning unit that receives the corrected partition to generate a predicted partition.

[0160] By Example 20, the subject matter of any one of Examples 15 to 19, wherein the corrected partition indicates that the partition of at least one block should be omitted for prediction at the decoder.

[0161] In another example, at least one machine-readable medium may include multiple instructions that, in response to being executed on a computing device, cause the computing device to perform the method according to any one of the above examples.

[0162] In yet another example, an apparatus may include units for performing the method according to any one of the above examples.

[0163] The above examples may include specific combinations of features. However, the above examples are not limited thereto, and in various implementations, the above examples may include only a subset of these features, a different order of these features, different combinations of these features, and / or additional features other than the explicitly listed features. For example, all features described with respect to the example method may be implemented with respect to the example apparatus, the example system, and / or the example article of manufacture, and vice versa.

Claims

1. A computer-implemented video encoding and decoding method, comprising: receiving compressed image data of video frames, the compressed image data comprising blocks of image data of at least one of the frames; receiving first partition data, the first partition data being used for decoding the compressed image data and indicating a partition in the block; detecting whether the block has an illegal block partition; generating second partition data for indicating that the non-compliant block partition of the block is to be ignored; as well as The block is decoded based on the second partition data.

2. The method according to claim 1, wherein: The first partition data and the second partition data are respectively a first partition syntax and a second partition syntax of a video codec codec.

3. The method according to claim 2, wherein: The codec is AO Media Audio Video 1 (AV1).

4. The method according to claim 3, wherein: The second partition syntax is the code for partition_none.

5. The method according to any one of claims 1 to 4, wherein: The second partition data is also used to indicate that any partitions of the block should be ignored for prediction.

6. The method according to any one of claims 1 to 4, wherein: The first partition data is received in a compressed state in a bitstream together with the compressed image data, and wherein the second partition data is generated at a decoding device receiving the bitstream.

7. The method according to any one of claims 1 to 4, wherein: The detection includes: determining a block size of the block; determining a partition mode of the first partition data to subdivide the block; and determining whether the partition mode is the same as one or more non-compliant partition modes, wherein the one or more non-compliant partition modes are associated with the block size.

8. At least one article of manufacture, the article comprising a computer-readable medium having instructions thereon, the instructions, when executed, causing a computing device to: receiving compressed image data of video frames, the compressed image data comprising blocks of image data of at least one of the video frames; receiving a partition syntax of a video codec codec, the partition syntax being used to decode the compressed image data and indicating partitions in the block; detecting whether the block has an illegal block partition; generating a corrected partition syntax for the video codec codec, the corrected partition syntax being used to indicate that the non-compliant block partition of the block is to be ignored; as well as The block is decoded based on the corrected partition syntax.

9. The medium according to claim 8, wherein The non-compliant block partitioning depends at least in part on a chroma subsampling format of the image data.

10. The medium according to claim 8 or 9, wherein The non-compliant block partitioning depends at least in part on the size of the block and a predetermined set of compliant partitioning modes, wherein the predetermined set of compliant partitioning modes depends on the block size.

11. The medium according to claim 8 or 9, wherein: The corrected partition syntax indicates a compliant partition mode according to the codec.

12. The medium according to claim 8 or 9, wherein: The correction partition syntax indicates that at least one block is to be predictively decoded without partitioning.

13. The medium according to claim 8 or 9, wherein: The corrected partition syntax indicates a legal partition mode for the block having at least one partition.

14. The medium according to claim 8 or 9, wherein: The detecting and generating includes running a revised decoding partition function code of the AV1 codec, wherein the revised decoding partition function code changes a partition syntax when a non-compliant partition is detected.

15. A computer-implemented video encoding and decoding system, comprising: Memory; as well as processor circuitry communicatively connected to the memory, wherein the processor circuitry is arranged to operate by: encoding image data of a video sequence of frames and at least one block of at least one of the frames; and placing the encoded image data and first partition data into a bitstream, wherein the first partition data indicates a block partition of the at least one block; and The bitstream is sent to a decoder, wherein the decoder is arranged to detect whether the block partition is a non-compliant partition and generate a correction partition, wherein, when the block partition is a non-compliant partition, the correction partition indicates whether the block partition is to be ignored for decoding the block.

16. The system of claim 15, wherein: The detection includes: running a decode partition function code having instructions, wherein the instructions are used to: receive a block size of the at least one block; and compare a first partition syntax of the first partition data with a non-compliant partition of the at least one block having the block size.

17. The system of claim 16, wherein: When the block size is 8x8 pixels, the non-compliant partition has a single vertical partition entirely between two blocks, wherein when the block size is 16x16 pixels, 32x32 pixels, or 64x64 pixels, in addition to the splitting of the block into four quadrant blocks, the non-compliant partition has at least one vertical linear split that completely passes through the block, and Wherein, when the block size is 128x128, the non-compliant partition has a single vertical linear partition that completely passes through the block and a single horizontal partition that passes through half of the block.

18. The system of claim 16, wherein: The detection is performed by running a revised decode partition function code that is modified to handle the non-compliant partitions.

19. The system according to any one of claims 15 to 18, wherein: The decoder includes a partitioning unit that receives the correction partition to generate a prediction partition.

20. The system according to any one of claims 15 to 18, wherein: The correction partition indicates that a partition of the at least one block should be omitted for prediction at the decoder.