Method and apparatus for signaling decoded data using high-level syntax elements - Patents.com
By using syntax elements to indicate explicit coding or inference from previous data, the method addresses inefficient bit usage in video coding standards, enhancing compression efficiency and reducing redundancy in video bitstreams.
Patent Information
- Application Number
- JP2021571973
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2019-06-24
- Filing Date
- 2020-06-17
- Publication Date
- 2025-09-17
- Estimated Expiration
- 2040-06-17
AI Technical Summary
Current video coding standards use excessive bits for high-level syntax elements, leading to inefficient coding and repeated information in video bitstreams, which impairs compression efficiency.
Implement a method and apparatus for signaling decoded data within a video bitstream using syntax elements to indicate whether the data is explicitly coded or inferred from previous data, reducing redundant information by dividing decoded data into subsets and using syntax elements to specify the coding method for each subset.
This approach reduces the number of bits required for high-level syntax, improving coding efficiency and bitstream interoperability by minimizing redundant information transmission.
Smart Images

Figure 0007740992000001 
Figure 0007740992000002 
Figure 0007740992000003
Abstract
Description
[Technical Field]
[0001] The present embodiments generally relate to signaling decoded data using high-level syntax elements. [Background technology]
[0002] This section is intended to introduce the reader to various aspects of the art, which may be related to various aspects of at least one of the present embodiments described and / or claimed below. This discussion is believed to be helpful in providing the reader with background information to facilitate a better understanding of the various aspects of at least one embodiment. Accordingly, it should be understood that these statements are to be read in this light.
[0003] To achieve high compression efficiency, video coding schemes typically employ prediction and transformation to exploit spatial and temporal redundancy in video content. Intra- or inter-prediction is generally used to exploit intra- or inter-frame correlation. The difference between the original and predicted picture of the video, often referred to as the prediction error or prediction residual, is then transformed, quantized, and entropy coded. To reconstruct the picture, the compressed data is decoded by an inverse process corresponding to the prediction, transformation, quantization, and entropy coding. Summary of the Invention
[0004] This section provides a simplified summary of at least one of the present embodiments in order to provide a basic understanding of some aspects of the present disclosure. This summary is not an extensive overview of an embodiment. It is not intended to identify key or critical elements of an embodiment. The following summary merely presents some aspects of at least one of the present embodiments in a simplified form as a prelude to the more detailed description provided elsewhere herein.
[0005] According to at least one general aspect of the present embodiments, there is provided a method for signaling decoded data within a video bitstream, the method including using a syntax element to indicate whether the decoded data is explicitly coded in the video bitstream or whether it is inferred from previous data in the video bitstream.
[0006] According to another general aspect of at least one of the embodiments, there is provided an apparatus for signaling decoded data within a video bitstream, the apparatus comprising: means for using a syntax element to indicate whether the decoded data is explicitly coded in the video bitstream or whether it is inferred from previous data in the video bitstream.
[0007] In one embodiment, the step or means for dividing the set of decoded data into subsets of decoded data and using a syntax element for each subset that indicates whether the decoded data of the subset is explicitly coded in the video bitstream or whether it is inferred from previous data in the video bitstream.
[0008] In one embodiment, the decoding data is a constraint flag that controls the invocation of a coding tool, and a syntax element indicates whether the constraint flag is explicitly coded in a first portion of the video bitstream or whether it is inferred from previous data in a second portion of the video bitstream.
[0009] In one embodiment, the decoded data is decoded data of a header of a group of picture parts, and the syntax element indicates whether the decoded data of the header of the group of picture parts is explicitly coded in the video bitstream or whether it is inferred from the decoded data of another header of the group of picture parts in the video bitstream.
[0010] In one embodiment, the decoded data of the header of a group of picture portions is a list of reference pictures, and the previous data is a GOP structure and some reference frames.
[0011] In one embodiment, the decoded data is slice parameters and the previous data is the GOP structure and the decoded picture order.
[0012] In one embodiment, the decoded data is decoded data for a group of tiles and the previous data is decoded data for another group of tiles.
[0013] In one embodiment, the decoded data is a GOP structure and the previous data is a number of first decoded pictures in the GOP and a set of predefined GOP structures.
[0014] According to another general aspect of at least one embodiment, there is provided a method and device for encoding or decoding video, the method including signaling decoding data within a video bitstream according to one of the methods described above.
[0015] According to other general aspects of at least one embodiment, a non-transitory computer-readable storage medium, a computer program product, and a bitstream are provided.
[0016] The particular nature of at least one of the present embodiments, as well as at least one other object, advantage, feature and use of the present embodiment, will become apparent from the following description of examples taken in conjunction with the accompanying drawings. [Brief explanation of the drawings]
[0017] The drawings illustrate some example embodiments. [Figure 1] FIG. 2 is a simplified block diagram of an exemplary encoder according to one embodiment. [Figure 2] FIG. 2 is a simplified block diagram of an exemplary decoder according to one embodiment. [Figure 3] FIG. 1 illustrates an example of an HLS element signaling a constraint flag according to the prior art. [Figure 4] FIG. 1 is a diagram showing examples of tile slice slice groups, tiles, and bricks according to the prior art. [Figure 5] FIG. 1 illustrates an example of syntax elements for a tile according to the prior art. [Figure 6] FIG. 1 is a diagram showing an example of a tile group according to the prior art. [Figure 7] FIG. 1 is a diagram showing an example of a tile group according to the prior art. [Figure 7a] FIG. 1 illustrates examples of tiles, slices, and bricks according to at least one embodiment. [Figure 8] 8 is a flowchart of a method 800 for signaling a set of decoded data, according to at least one embodiment. [Figure 9] 10 is a flowchart of a variation of the method of FIG. 8 or FIG. 9 according to at least one embodiment. [Figure 10] FIG. 1 illustrates an example of dividing a set into subsets, according to at least one embodiment. [Figure 11] FIG. 10 is a diagram showing an example of dividing a set of 16 decoded data into two hierarchical levels. [Figure 12] FIG. 10 illustrates an example of an HLS element signaling a constraint flag, according to at least one embodiment. [Figure 13] FIG. 1 illustrates an example of an HLS element, according to at least one embodiment. [Figure 14] 1 shows an example of a slice segment according to the prior art. [Figure 15] 1 shows an example of a slice segment according to the prior art. [Figure 16] 16 is a flowchart 1600 of an embodiment of the method 800 or 900 when the set of decoded data includes decoded data for a header of a group of picture portions. [Figure 17]FIG. 2 illustrates an example of a temporal organization of syntax elements associated with a GOP, according to at least one embodiment. [Figure 18] FIG. 10 illustrates an example of a slice syntax according to at least one embodiment. [Figure 19] 19 is a flowchart 1900 of an embodiment of the method 800 or 900 when the set of decoded data includes a group of pictures structure. [Figure 20] FIG. 20 illustrates a variation of the method of FIG. 19. [Figure 21] FIG. 1 is a block diagram of a computing environment in which aspects of the present embodiments may be implemented. DETAILED DESCRIPTION OF THE INVENTION
[0018] The present detailed description illustrates the principles of the present embodiments, and it will thus be appreciated that those skilled in the art will be able to devise various arrangements that embody the principles of the present embodiments and are within their scope, even if not explicitly described or shown herein.
[0019] All examples and conditional language described herein are intended primarily for educational purposes to assist the reader in understanding the principles of the present embodiments and concepts provided by the inventors to further the art, and should not be construed as being limited to such specifically described examples and conditions.
[0020] Moreover, all statements herein reciting principles, aspects, and embodiments of the present disclosure, as well as specific examples thereof, are intended to encompass both structural and functional equivalents thereof. Additionally, such equivalents are intended to include both currently known equivalents as well as equivalents developed in the future, i.e., any elements developed that perform the same function, regardless of structure.
[0021] Thus, for example, those skilled in the art will appreciate that the block diagrams presented herein represent conceptual views of illustrative circuitry embodying the principles of the present embodiments. Similarly, it will be appreciated that any flowcharts, flow diagrams, state transition diagrams, pseudocode, or the like may be substantially represented in a computer-readable medium and, as such, represent various processes that may be performed by a computer or processor, whether or not such a computer or processor is explicitly illustrated.
[0022] The present embodiment will now be described more fully with reference to the accompanying drawings in which the present embodiment is illustrated. However, an embodiment may be embodied in many alternative forms and should not be construed as limited to the examples set forth herein. Accordingly, it should be understood that it is not intended to limit the embodiments to the particular forms disclosed. On the contrary, the present embodiment is intended to cover all modifications, equivalents, and alternatives falling within the spirit and scope of the present application.
[0023] Where a figure is presented as a flow diagram, it should be understood that it also provides a block diagram of the corresponding apparatus. Similarly, where a figure is presented as a block diagram, it should be understood that it also provides a flow diagram of the corresponding method / process.
[0024] The functions of the various elements shown in the figures may be provided through the use of dedicated hardware as well as hardware capable of executing software in association with appropriate software. If provided by a processor, the functions may be provided by a single dedicated processor, a single shared processor, or multiple individual processors, some of which may be shared. Moreover, when the term "processor" or "controller" is explicitly used, this should not be construed to refer exclusively to hardware capable of executing software, but may implicitly include, without limitation, digital signal processor (DSP) hardware, read-only memory (ROM) for storing software, random access memory (RAM), and non-volatile storage.
[0025] Other hardware, conventional and / or custom, may also be included. Similarly, the switches shown in the figures are conceptual only. Their functions may be performed through the operation of program logic, through dedicated logic, through the interaction of program control and dedicated logic, or even manually, with the particular technique being selectable by the implementer as more particularly understood from the context.
[0026] Similar or identical elements in the drawings are referred to with the same reference numbers.
[0027] Some figures represent syntax tables commonly used in video compression standard specifications to define the structure of bitstreams that comply with the video compression standard. In these syntax tables, the term "..." indicates an unchanged portion of the syntax for a well-known definition given in the video compression standard specification and removed from the figure for readability. A bolded term in a syntax table indicates that the value of this term is obtained by parsing the bitstream. The right column of the syntax table indicates the number of bits used to encode the data of the syntax element. For example, u(4) indicates that 4 bits are used to encode the data, u(8) indicates 8 bits, and ae(v) indicates the context-adaptive arithmetic entropy coding syntax element.
[0028] In the claims herein, any element expressed as a means for performing a certain function is intended to encompass any way for performing that function, including, for example, a) a combination of circuitry that performs that function, or b) software in any form, including firmware, microcode, etc., combined with appropriate circuitry for executing that software to perform the function. The present embodiments defined by such claims reside in the fact that the functionality provided by the various recited means is combined and brought together in the manner the claims call for. Thus, any means that can provide those functionality are regarded as equivalent to those shown herein.
[0029] It should be understood that for clarity, the figures and descriptions have been simplified to illustrate relevant elements for a clear understanding of the principles of the present embodiments, while excluding many other elements that may be found in a typical encoding and / or decoding device.
[0030] Although terms such as "first," "second," etc. may be used herein to describe various elements, it should be understood that these elements should not be limited by these terms. These terms are used only to distinguish one element from another. Various methods have been described above, each of which includes one or more steps or actions for achieving the described method. Unless a specific order of steps or actions is required for the correct operation of the method, the order and / or use of specific steps and / or actions may be varied or combined.
[0031] In the following sections, the words "reconstruction" and "decoding" may be used interchangeably. Typically, but not necessarily, "reconstruction" is used on the encoder side, while "decoding" is used on the decoder side. Also, the words "coded" and "encoded" may be used interchangeably. Furthermore, the words "image," "picture," and "frame" may also be used interchangeably. Furthermore, the words "coding," "source coding," and "compression" may also be used interchangeably.
[0032] References to "one embodiment" or "an embodiment" or "one implementation" or "an implementation," as well as other variations thereof, should be understood to mean that a particular feature, structure, characteristic, etc. described in connection with an embodiment is included in at least one embodiment of the present disclosure. Thus, the appearances of the phrases "in one embodiment" or "in an embodiment," or "in one implementation" or "in an implementation," as well as other variations thereof, appearing in various places throughout this specification are not necessarily all referring to the same embodiment.
[0033] Also, in the present embodiments or claims, various pieces of information may be referred to as "determining." Determining information may include, for example, one or more of estimating information, calculating information, predicting information, or retrieving information from a memory.
[0034] Also, in this application or claims, various information may be referred to as "providing." Providing information may include, for example, one or more of outputting information, storing information, transmitting information, sending information, displaying information, displaying information, or moving information.
[0035] Additionally, this application or its claims may refer to "accessing" various information. Accessing information may include, for example, one or more of receiving information, retrieving information (e.g., from a memory), storing information, processing information, moving information, copying information, erasing information, calculating information, determining information, predicting information, or estimating information.
[0036] Additionally, the application or claims may refer to "receiving" various pieces of information. Receiving, like "accessing," is intended to be a broad term. Receiving information may include, for example, one or more of accessing information or retrieving information (e.g., from memory). Furthermore, "receiving" typically involves in some manner, for example, storing information, processing information, transmitting information, moving information, copying information, erasing information, calculating information, determining information, predicting information, or evaluating information.
[0037] Furthermore, in this application or in the claims, various data may be referred to as "inferring" various data from previous data in the video bitstream. The term "previous data" is understood as data that was constructed, reconstructed, or analyzed before the current data was inferred. Note that data can be inferred from previously inferred data (recursive inference). One specific example of inference is default inference, which uses default data as inferred data. That is, the "previous" data is default data. Inferring or deriving from previous data in the video bitstream may include, for example, one or more of copying previous data or combining multiple previous data to obtain inferred data, or accessing information from previous data that provides an average indicator to derive inferred data.
[0038] Furthermore, in this application or in the claims, we may refer to "explicitly encoding decoded data into a video bitstream" and "explicitly decoding decoded data from a video bitstream." Explicitly encoding (decoding) decoded data refers to adding (obtaining) a dedicated syntax element to (from) a video bitstream. Explicitly encoding data refers to filling in / inputting at least one bin / information representing this data into an entropy coding engine (e.g., CABAC), while inferring data refers to not filling in the bin / information representing this data into the entropy coding engine. Similarly, explicitly decoding data refers to outputting at least one bin / information representing this data from an entropy decoding engine (i.e., CABAC), while inferring data refers to not outputting the bin / information representing this data to the entropy decoding engine. Note that the information on whether data is explicitly coded or inferred may be another syntax element that can also be explicitly coded or inferred.
[0039] For example, the decoded data may be slice parameters or an index into a table of a predefined GOP structure. Then, explicitly encoding the slice parameters refers to adding syntax elements of the slice parameters or the index into a table of a predefined GOP structure to the video bitstream each time the decoded data is used during the decoding process.
[0040] It should be appreciated that the various features shown and described are interchangeable. Features shown in one embodiment may be incorporated into another embodiment unless otherwise indicated. Furthermore, features described in various embodiments may be combined or separated unless otherwise indicated as inseparable or incombinable.
[0041] The functions of the various elements shown in the figures may be provided through the use of dedicated hardware as well as hardware capable of executing software in association with appropriate software. Also, when provided by a processor, the functions may be provided by a single dedicated processor, by a single shared processor, or by a plurality of individual processors, some of which may be shared.
[0042] It should be further understood that some of the system components and methods illustrated in the accompanying figures are preferably implemented in software, and therefore the actual connections between the system components or process function blocks may vary depending on the manner in which the processes of the present disclosure are programmed. Given the teachings herein, one of ordinary skill in the related art will be able to contemplate these and similar implementations or configurations of the present disclosure.
[0043] Although exemplary embodiments have been described in detail herein with reference to the accompanying drawings, it should be understood that the disclosure is not limited to those precise embodiments, and that various changes and modifications can be made in those embodiments by those skilled in the art without departing from the scope of the disclosure. In addition, individual embodiments can be combined without departing from the scope of the disclosure. All such changes and modifications are intended to be included within the scope of the disclosure as set forth in the appended claims.
[0044] For example, in the case of "A / B," "A and / or B," and "at least one of A and B," it should be understood that the use of any of the following " / ," "and / or," and "at least one of" is intended to encompass the selection of only the first-listed alternative (A), or the selection of only the second-listed alternative (B), or the selection of both alternatives (A and B). As a further example, in the case of "A, B, and / or C" and "at least one of A, B, and C," such phrases are intended to encompass the selection of only the first-listed alternative (A), or the selection of only the second-listed alternative (B), or the selection of only the third-listed alternative (C), or the selection of only the first and second-listed alternatives (A and B), or the selection of only the first and third-listed alternatives (A and C), or the selection of only the second and third-listed alternatives (B and C), or the selection of all three alternatives (A, B, and C). This can be applied regardless of the number of items listed, as will be readily apparent to one of ordinary skill in the art.
[0045] As will be apparent to those skilled in the art, implementations can generate a wide variety of signals formatted to carry information, which can be stored or transmitted, for example. The information can include, for example, instructions for performing a method or data produced by one of the described implementations. For example, a signal can be formatted to carry a bitstream of the described embodiments. Such a signal can be formatted, for example, as an electromagnetic wave (e.g., using the radio frequency portion of the spectrum) or as a baseband signal. Formatting can include, for example, encoding a data stream and modulating a carrier wave with the encoded data stream. The information carried by the signal can be, for example, analog or digital information. The signal can be transmitted over a wide variety of different wired or wireless links, as is known. The signal can be stored on a processor-readable medium.
[0046] A picture (also referred to as an image or frame) may be an array of luma samples in monochrome format, or an array of luma samples and two corresponding arrays of chroma samples in 4:2:0, 4:2:2 or 4:4:4 color format, or three arrays of three color components (e.g., RGB).
[0047] In video compression standards, a picture is divided into blocks that may vary in size and / or shape.
[0048] It should be understood that a block is a two-dimensional array or matrix. The horizontal or x direction (or axis) represents the width, and the vertical or y direction (or axis) represents the height. Indexing starts at 0. The x direction represents columns, and the y direction represents rows. The maximum x index is width - 1. The maximum y index is height - 1.
[0049] encoding FIG. 1 shows a simplified block diagram of an exemplary encoder 100 according to one embodiment.
[0050] The encoder 100 may be included in a transmitter or headend of a communication system.
[0051] To encode a video sequence containing one or more pictures, the pictures are divided into blocks (module 110), which can be of different sizes and / or shapes. For example, in HEVC ("ITU-T H.265 TELECOMMUNICATION STANDARDIZATION SECTOR OF ITU (10 / 2014), SERIES H: AUDIOVISUAL AND MULTIMEDIA SYSTEMS, Audiovisual Services Infrastructure - Coding of Moving Pictures, High Efficiency Video Coding, Recommendation ITU-T H.265"), a picture can be divided into square coding tree units (CTUs) of configurable size. A contiguous set of CTUs can be grouped into slices. A CTU is the root of a quadtree that is divided into coding units (CUs), hereinafter referred to as blocks.
[0052] In the exemplary encoder 100, pictures are encoded by a block-based encoding module, as described below.
[0053] Each block is coded using either an intra-prediction mode or an inter-prediction mode.
[0054] When a block is coded in intra prediction mode (module 160), the encoder 100 performs intra prediction (also referred to as spatial prediction) based on at least one sample of a block in the same picture (or a predefined value of the first block of a picture or slice). As an example, the predicted block is obtained by intra predicting the block from reconstructed neighboring samples.
[0055] When a block is coded in inter prediction mode, the encoder 100 performs inter prediction (also referred to as temporal prediction) based on at least one reference block of at least one reference picture or slice (stored in a reference picture buffer).
[0056] Inter-predictive coding is performed by performing motion estimation (module 175 ) and motion compensation (module 170 ) of reference blocks stored in a reference picture buffer 180 .
[0057] In unidirectional inter-prediction (also known as unidirectional prediction) mode, the prediction block may generally (but not necessarily) be based on a previous reference picture.
[0058] In bidirectional inter-prediction (also known as bi-prediction) mode, the prediction block may generally (but not necessarily) be based on a previous picture and a later picture.
[0059] The encoder 100 determines (module 105) which intra- or inter-prediction mode to use to encode a block, and indicates the intra / inter decision via a prediction mode syntax element.
[0060] A prediction residual block is calculated by subtracting (module 120) the prediction block (also denoted predictor) from the block.
[0061] The prediction residual block is transformed (module 125) and quantized (module 130). The transformation module 125 can convert the prediction residual block from the pixel (spatial) domain to the transform (frequency) domain. The transformation can be, for example, a cosine transform, a sine transform, a wavelet transform, etc. The quantization (module 130) can be performed, for example, according to a rate-distortion criterion.
[0062] The quantized transform coefficients, as well as motion vectors and other syntax elements, are entropy coded to output a bitstream (145). The entropy coding may be, for example, context-adaptive binary arithmetic coding (CABAC), context-adaptive variable length coding (CAVLC), Huffman arithmetic, exp-Golomb, etc.
[0063] The encoder may also skip the transform and apply quantization directly to the non-transformed prediction residual block. The encoder may also bypass both the transform and quantization, i.e., the prediction residual block is coded directly without applying the transform or quantization process.
[0064] In direct PCM coding, no prediction is applied and the block samples are coded directly into the bitstream.
[0065] The encoder 100 includes a decoding loop, which decodes coded blocks to provide references for further prediction. The quantized transform coefficients are dequantized (also known as inverse quantization) (module 140) and inverse transformed (module 150) to decode prediction residual blocks. Blocks are then reconstructed by combining the decoded prediction residual blocks with the prediction blocks (module 155). One or more in-loop filters (165) can be applied to the reconstructed picture to reduce coding artifacts, for example, by performing deblocking / sample adaptive offset (SAO) filtering. The filtered picture is stored in a reference picture buffer 180.
[0066] The modules of encoder 100 may be implemented in software and executed by a processor, or may be implemented using circuit components well known to those skilled in the art of compression. In particular, video encoder 100 may be implemented as an integrated circuit (IC).
[0067] Decryption FIG. 2 shows a simplified block diagram of an exemplary decoder 200 according to one embodiment.
[0068] The decoder 200 may be included in a receiver of a communication system.
[0069] The decoder 200 generally performs a decoding path that is the inverse of the encoding path performed by the encoder 100, as described in FIG. 1, although not all operations within the decoder are the inverse of the encoding process (e.g., intra- and inter-prediction).
[0070] In particular, the input of the decoder 200 includes a video bitstream that may be generated by the encoder 100 .
[0071] The video bitstream is first entropy decoded (module 230) to obtain, for example, transform coefficients, motion vectors MV, picture partitioning information, possibly prediction mode flags, syntax elements, and other decoded data.
[0072] For example, in HEVC, picture partitioning information indicates the size of a CTU and how the CTU is divided into CUs. Thus, the decoder may divide (235) a picture into CTUs and divide each CTU into CUs according to the decoded picture partitioning information.
[0073] The transform coefficients are dequantized (module 240) and inverse transformed (module 250) to decode the prediction residual block, which is then combined with the prediction block (also known as the predictor) (module 255) to obtain a decoded / reconstructed block.
[0074] The prediction block may be obtained from intra prediction (module 260) or motion compensated prediction (i.e., inter prediction) (module 270), possibly depending on a prediction mode flag (module 205). An in-loop filter (module 265) may be applied to the reconstructed picture. The in-loop filter may include a deblocking filter and / or an SAO filter. The filtered picture is stored in a reference picture buffer 280.
[0075] The modules of decoder 200 may be implemented in software and executed by a processor, or may be implemented using circuit components well known to those skilled in the art of compression. In particular, decoder 200 may be implemented as an integrated circuit (IC), either alone or in combination with encoder 100 as a codec.
[0076] The present embodiment aims to provide a mechanism to improve the high-level syntax (HLS) of block-based video coding by using fewer bits than the current syntax used in older block-based video compression standards.
[0077] HLS is a signaling mechanism that enables bitstream interoperability defined by organizations other than MPEG or ITU, such as DVB, ATSC, and 3GPP. For example, in the VVC draft standard (B. Bross, J. Chen, S. Liu, “Versatile Video Coding (Draft 4),” in JVET document JVET-N1001, 14th Meeting: Geneva, CH, 19-27 March 2019), HLS constraint flags allow control of the activation of coding tools in VVC decoders. HLS constraint flags are grouped in the syntax element “general_constraint_info(),” which is included in the SPS (Sequence Parameter Set) and / or profile and level, VPS (Video Parameter Set), and (Decoding Parameter Set) DPS bitstream portions, as shown in Figure 3. Constraint flags indicate characteristics that cannot be violated across the entire video bitstream. If a constraint flag is set in an SPS (or similar) syntax structure, the decoder can safely assume that the tool is not used in the bitstream.
[0078] Current syntax for coding constraint flags uses a very large number of bits, which can impair the coding efficiency of the video bitstream. Indeed, this information can be repeated in multiple locations in the video bitstream, since it is present in the SPS, which is typically transmitted at each random access point (RAP), and can also be repeated in other places, such as the decoder parameter set (DPS).
[0079] Another example of HLS is a high-level syntax that groups uncoded picture portions, such as sequence, picture, slice, or tile headers, supplemental enhancement information (SEI), video usability information (VUI), etc., and excludes coded macroblocks, CTUs, or CUs. Hereinafter, HLS that enables grouping information related to a subset of macroblocks, CTUs, or CUs into groups, for example, picture, slice, tile, slice, or brick headers, is referred to as "HLS partitioning."
[0080] In the AVC and HEVC video coding standards, high-level partitioning is performed using slices (consecutive CTUs in a raster scan) or tiles (uniform or non-uniform tile grids). In the VVC draft standard, high-level partitioning is performed using tiles and possibly bricks, which divide tiles vertically into rectangular sub-regions (Figure 4). When the tile spacing is non-uniform, the tiles are distributed according to a non-uniform grid (top right). In this case, in HLS, values for "tile-column-width" and "tile-column-height" may be signaled (Figure 5).
[0081] Multiple tiles can be grouped into one "tile group." To define a tile group, tiles are implicitly labeled in raster scan order, and a top-left tile index (top_left_tile_idx[i]) and a bottom-right tile index (bottom_right_tile_idx[i]) are signaled in HLS for each tile group "i," as shown in Figure 6. For example, eight tiles (top right in Figure 4) are grouped into four "tile groups" (Figure 6). For example, the first tile group 0 consists of tiles 0, 1, and 2, with top_left_tile_idx[0] = 0, bottom_right_tile_idx[0] = 2, and bottom_right_tile_idx_delta[0] = 2 (bottom_right_tile_idx_delta[i] = bottom_right_tile_idx[i] - top_left_tile_idx[i]) (Figure 7).
[0082] In one variation, a tile may be divided into one or more bricks, each of which consists of several CTU rows within the tile. A slice may contain several tiles or several bricks. Two slice modes may be supported: raster scan slice mode and rectangular slice mode. In raster scan slice mode, a slice may contain a series of tiles in a tile raster scan of the picture. In rectangular slice mode, a slice may contain several bricks of the picture that collectively form a rectangular region of the picture. The bricks within a rectangular slice may be in the order of the brick raster scan of the slice. The bricks may be implicitly labeled in raster scan order, and a top-left brick index (top_left_brick_idx[i]) and a bottom-right brick index (bottom_right_brick_idx[i]) may be signaled in HLS for each slice "i." For example, the first slice 0 (left side of Figure 7a) contains two tiles and three bricks. It consists of "brick_idx" 0, 1, and 2, with top_left_brick_idx[0] = 0, bottom_right_brick_idx[0] = 2, and bottom_right_brick_idx_delta[0] = 2 (bottom_right_brick_idx_delta[i] = bottom_right_brick_idx[i] - top_left_brick_idx[i]). The second slice 1 (top right in Figure 7a) contains two bricks. It consists of "brick_idx" 3 and 4, with top_left_brick_idx[0] = 3, bottom_right_brick_idx[0] = 4, and bottom_right_brick_idx_delta[0] = 1. The third slice 2 (center right in Figure 7a) contains three bricks. This consists of "brick_idx" 5, 6, and 7, with top_left_brick_idx[0]=5, bottom_right_brick_idx[0]=7 and bottom_right_brick_idx_delta[0]=2.The fourth slice 3 (bottom right in Figure 7a) contains three bricks. It consists of "brick_idx" 8, 9, and 10, with top_left_brick_idx[0]=8, bottom_right_brick_idx[0]=10, and bottom_right_brick_idx_delta[0]=2.
[0083] Note that the naming of these tiles, bricks, and tile groups may change, but the fundamentals will remain the same.
[0084] In a video bitstream, slice headers, tile headers, etc. are repeated at least once per coded picture, even if they share the same values in most cases.
[0085] This embodiment signals decoded data within the video bitstream by using syntax elements that indicate whether the decoded data is coded into the video bitstream or whether it is inferred from previous data in the video bitstream.
[0086] FIG. 8 illustrates a flowchart of a method 800 for signaling a set of decoded data, according to at least one embodiment.
[0087] In step 810, the method may check whether the set of decoded data is explicitly coded into the video bitstream or whether it is inferred from previous data PD of the video bitstream. A syntax element F may be added to the video bitstream. If the set of decoded data is inferred from previous data PD (step 830), the syntax element F indicates that the set of decoded data is inferred from previous data PD. If the set of decoded data is explicitly coded into the video bitstream (step 820), the syntax element F indicates that the set of decoded data is explicitly coded into the video bitstream.
[0088] In step 840, the method can access a syntax element F from the video bitstream.
[0089] In step 850, the method may check whether syntax element F indicates that the decoded data of the set of decoded data is inferred from previous data PD in the video bitstream. If so (step 870), the set of decoded data is inferred from previous data PD. If syntax element F indicates that the set of decoded data is explicitly coded in the video bitstream (step 860), the set of decoded data is explicitly decoded from the video bitstream.
[0090] FIG. 9 shows a flowchart of a variation of the method of FIG. 8 when the syntax element indicates that the set of decoded data is explicitly coded in the video bitstream.
[0091] In step 910, the set of decoded data is divided into subsets as shown in FIG. 10, where the set of decoded data is divided into four subsets i.
[0092] Following step 910, steps 810-830 of method 800 are repeated (FIG. 8). At each iteration, a current subset i of decoded data is taken as input for step 810 (step 920), during which the method may check whether the decoded data of the current subset i is explicitly coded into the video bitstream or inferred from previous data PDi of the video bitstream. A syntax element Fi may be added to the video bitstream. If the decoded data of the current subset i is inferred from previous data PDi (step 830), the syntax element Fi indicates that the decoded data of the current subset i is inferred from previous data PDi. If the decoded data of the current subset i is explicitly coded into the video bitstream (step 820), the syntax element Fi indicates that the decoded data of the current subset i is explicitly coded into the video bitstream.
[0093] Once all subsets i have been considered, steps 840-870 of method 800 are repeated (FIG. 8). At each iteration, the current subset i of decoded data is taken as input for step 840 (step 930), and in the process, the method can access the syntax elements F i of the current subset i from the video bitstream.
[0094] In step 850, the method may check whether syntax element F i indicates that the decoded data of subset i of the decoded data is inferred from previous data PDi of the video bitstream. If so (step 870), the decoded data of subset i is inferred from previous data PDi of the video bitstream. If syntax element F i indicates that the decoded data of the current subset i is explicitly coded in the video bitstream, (step 860) the decoded data of subset i is explicitly decoded from the video bitstream.
[0095] The index i (Fi, FDi) indicates that the syntax element and previous data are dedicated to the decoded data of subset i. Some Fi and / or FDi may be the same.
[0096] FIG. 10 illustrates the use of method 800 when the set of decoded data is divided into subsets.
[0097] In one variation, method 800 may be used when a set of decoded data is recursively partitioned to create multiple hierarchical levels as follows: If a syntax element indicates that decoded data for a subset of hierarchical level L is explicitly coded in the video bitstream, then the subset of hierarchical level L is partitioned into subsets of hierarchical level (L+1) (step 830). The recursive partitioning stops when a condition is met, such as a maximum number of hierarchical levels or a minimum cardinality of the subsets.
[0098] Once all subsets of decoded data for hierarchical level L have been considered, method 900 is iteratively applied to the subsets for a new hierarchical level (L+1), if one exists.
[0099] FIG. 11 shows an example of a two hierarchical level division of a set of 16 decoded data.
[0100] At the first hierarchical level 0, the set is initially split into two subsets (i=0 and i=1) of eight decoded data (810). In step 820, a syntax element is added to the bitstream to indicate that the subset of decoded (i=0) data is split into, for example, two subsets (i=00 and i=01). The decoded data of a second subset (i=1) is inferred from previous data in the video bitstream (step 830), and another syntax element is also added to the video bitstream to indicate that the second subset (i=1) is not split.
[0101] At the second hierarchical level 1, decoded data for subset(i=00) is inferred from previous data in the video bitstream (step 830), and another syntax element indicating that subset(i=00) will not be split is also added to the video bitstream. Decoded data for subset(i=01) is inferred from previous data in the video bitstream (step 830), and another syntax element indicating that subset(i=01) will not be split is also added to the video bitstream.
[0102] In one embodiment, a set of decoding data may include constraint flags that control the activation of a coding tool, where syntax element F (or Fi) may indicate whether the constraint flags of the set (or a subset of the set) are explicitly coded in the video bitstream or inferred from previous data PD in the video bitstream.
[0103] FIG. 12 illustrates an example of the HLS element "general_constraint_info" according to at least one embodiment.
[0104] The syntax element "general_constraint_info" contains constraint flags grouped under the syntax element "use_default_constraint_flag" (syntax element F or Fi), which can be a flag that is false if these constraint flags are explicitly coded into the video bitstream (step 820) or explicitly decoded from the video bitstream (step 860), or that is true if all these constraint flags are inferred from previous data PD in the video bitstream (steps 830, 870).
[0105] Note that if constraint flags are inferred, other constraint flags (not shown here) may be explicitly coded / decoded.
[0106] In one variant, the previous data PD is a single binary value (false or true) and all inferred constraint flag values are equal to this single binary value FD.
[0107] In one variant, the previous data PD depends on the decoding profile, level and / or at least one decoding parameter of the video bitstream, e.g., for a "high profile" all inferred constraint flag values are equal to false (all tools may be enabled), for a "low profile" some predetermined subset of constraint flag values are inferred to be true (tools are disabled) and other constraint flag values are inferred to be false (tools may be enabled).
[0108] In a variant, the status of syntax element F (or Fi) determines whether decoding parameters are present in the video bitstream.
[0109] For example, the set of syntax elements "profile_tier_level()" in Figure 13 includes a constraint flag "general_constraint_info()" under the syntax element "use_default_constraint-flag" (syntax element F or Fi). In Figure 13, if the syntax element "use_default_constraint_flag" is true, the set of syntax elements "general_constraint_info()" is explicitly coded into the video bitstream. If "use_default_constraint_flag" is false, this set of syntax elements is not present and the syntax elements are inferred.
[0110] In the variant shown in Figure 12, the syntax element "use_default_constraint_flag" is coded in "general_constraint_info()" instead of "profile_tier_level()". If the syntax element "use_default_constraint_flag" is false, then a set of syntax elements is present (explicitly coded) in the video bitstream indicating whether some tools may be enabled or disabled in the bitstream, otherwise this set of syntax elements is not present and the syntax elements are inferred.
[0111] In block-based video codec specifications, a video bitstream is partitioned into coded video sequences (CVSs) that contain one or more access units (AUs) in decoding order, where one AU contains exactly one coded picture.
[0112] For example, in HEVC, AUs are partitioned into slices. Some decoded data in different slice headers (or tile headers, or tile group headers) is the same for some slices. Therefore, in HEVC, the first slice of a picture must be independent, while subsequent slices may be dependent, as shown in Figure 14. A dependent slice header shares common decoded data with the first independent slice of the same picture (Figure 15).
[0113] 16 shows a flowchart 1600 of an embodiment of the method 800 or 900 when the set of decoded data includes decoded data for headers of groups of picture portions, such as slice headers of a picture and / or tile headers and / or tile group headers. In HEVC, slices have headers and may contain tiles, but tiles do not have headers. In other codecs, slices are replaced by tiles, and tiles have headers.
[0114] In HEVC, an example of such decoding may include at least one of the following decoded data (slice headers): -Postfilter flags such as (slice_sao_luma_flag, slice_sao_chroma_flag, slice_alf_luma_flag, slice_alf_chroma_flag), - Reference picture list, -weighted_pred / bipred_flag: WP (weighted prediction) is enabled or not included in the slice, -Partition into slices, tiles, or tile groups, bricks (e.g., num_bricks_in_slice_minus1), -Slice_type: I (intra only), P (unidirectional) or B (bi-predictive), -pic_output_flag: Whether the current picture is output, -colour_plane_flag: Whether the colour channels are coded separately, -POC: Picture Order Count, -long-term-ref info: Long-term reference picture index and POC -slice_temporal_mvp_enabled_flag: Whether the temporal motion vector prediction tool is enabled, -long-term-ref info(POC) -slice_qp_delta: QP (quantization parameter) starts diff by init_QP specified in PPS. -Deblocking filter parameters (beta, tc).
[0115] In other codecs, this data may be included in the tile header. In the following, we consider a picture to be partitioned into regions (or picture portions), where a region consists of multiple blocks (e.g., CTUs or macroblocks). A region may be, for example, a slice, a tile, a tile group, or a brick, depending on the partitioning topology of the codec. Some of them may be associated with a header that contains information related to the blocks that make up the region.
[0116] In step 1610 (an embodiment of step 810 in FIG. 8 ), the method may check whether the decoded data of the header of the group of picture parts (or regions) is explicitly coded in the video bitstream or whether it is inferred from previous data IPH of the video bitstream ("inter_picture-header"). A syntax element F (or Fi) denoted "infer_from_inter_picture_header_flag" may be added to the video bitstream. If the decoded data of the header of the group of picture parts is inferred from previous data IPH, in step 1630 (an embodiment of step 830 in FIG. 8 ), the syntax element F (or Fi) indicates that the decoded data of the header of the group of picture parts is inferred from the decoded data of another header of the group of picture parts (previous data IPH). If the decoded data of the header of the group of picture parts is explicitly coded in the video bitstream, in step 1520 (an embodiment of step 820 in FIG. 8 ), the syntax element F (or Fi) may indicate that the decoded data of the header of the group of picture parts is explicitly coded in the video bitstream.
[0117] The previous data IPH groups, for example, decoded data of multiple slice headers of the same picture and / or multiple common tile headers and / or multiple tile group headers.
[0118] Typically, the bandwidth for transmitting video is reduced by inferring common decoding data defined in the headers of the AU, CTU / CU, tile, or tile group.
[0119] For example, in each AU, and possibly in each slice of this AU, the syntax element "infer_from_inter_picture_header_flag" may indicate whether these decoded data are explicitly defined in the AU (each slice of this AU), for example in a slice header, tile or tile group header, or whether they are inferred from previous data IPH, which may thus possibly be shared by several groups of picture parts of several pictures.
[0120] In step 1640 (an embodiment of step 840 of FIG. 8), the method may access syntax element F (or Fi) from the video bitstream.
[0121] In step 1650 (an embodiment of step 850 of FIG. 8), the method may check whether syntax element F (or Fi) indicates that the decoded data of the group of picture portions' header is inferred from previous data IPH in the video bitstream. Then, in step 1670 (an embodiment of step 870 of FIG. 8), the decoded data of the group of picture portions' header is inferred from previous data IPH. If syntax element F (or Fi) indicates that the decoded data of the group of picture portions' header is coded in the video bitstream, then in step 1660 (an embodiment of step 860 of FIG. 8), the decoded data of the group of picture portions' header is explicitly decoded from the video bitstream.
[0122] Advantageously, the previous data IPH is located in the bitstream associated with a GOP (Group of Pictures) after the RAP syntax element and before the AU syntax element relative to the RAP. The decoded data of the AU syntax element can then be inferred from the previous data IPH, as shown in Figure 17.
[0123] In one embodiment of the method 1600, the list of reference pictures (decoded data of the header of a group of picture parts) can be inferred from the GOP structure and some reference frames (previous data IPH).
[0124] In one embodiment of the method 1600, slice parameters (decoded data of the header of the group of picture portions) (e.g., slice type) can be inferred from the GOP structure and the decoded picture order (previous data IPH).
[0125] In one embodiment, the decoded data of a tile group that controls the coding / decoding of the tile group can be inferred from the decoded data (previous data IPH) of another tile group of the video bitstream.
[0126] By inferring tile group information from previous data in the video bitstream, the bandwidth required to transmit a picture is reduced.
[0127] In one variant, a tile group comprises several tiles (decoded data denoted as "num_tiles") of a picture or slice, where the syntax element (F, Fi, ...) can indicate whether the number of tiles i is coded in the video bitstream or whether it is inferred from previous data IPH representing the number of tiles per column (denoted as "num_tile_columns_minus1") and the number of tiles per row (denoted as "num_tile_rows_minus1").
[0128] For example, "num-tiles" is inferred from "num_tile_columns_minus1" and "num_tile_rows_minus1" as follows: num_tiles=(num_tile_columns_minus1+1)x(num_tile_rows_minus1+1).
[0129] In one embodiment, the tile group further includes the "bottom-right-tile-idx" or "bottom-right-tile-idx-delta" value of the last tile group of the picture.
[0130] The bottom-right-tile-idx or bottom-right-tile-idx-delta values (decoded data) of the last tile group (decoded data) can be inferred from the number of tiles (previous data in the video bitstream) as follows: bottom_right_tile_idx[num_tile_groups_in_pic_minus1]=num_tile-1 bottom_right_tile_idx_delta[num_tile_groups_in_pic_minus1]=num_tile-1-top_left_tile_idx[num_tile_groups_in_pic_minus1].
[0131] One advantage of this embodiment, as shown in FIG. 18, is that it saves bits to code "bottom_right_tile_idx_delta[num_tile_groups_in_pic_minus1]" in the syntax element "pic_parameter_set_rbsp."
[0132] Similarly, the number of bricks in the picture (NumBricksInPic) can be inferred from the previous data IPH. In the case of rectangular slice mode, the slice may further include the "bottom-right-brick-idx" or "bottom-right-brick-idx-delta" values of the slice of the picture.
[0133] The bottom-right-brick-idx or bottom-right-brick-idx-delta values (decoded data) of the last slice (decoded data) can be inferred from the number of bricks (previous data in the video bitstream) as follows: bottom_right_brick_idx[num_slices_in_pic_minus1]=NumBricksInPic-1 bottom_right_brick_idx_delta[num_slices_in_pic_minus1]=NumBricksInPic-1-top_left_brick_idx[num_slices_in_pic_minus1].
[0134] One advantage of this embodiment is that it saves bits to code "bottom_right_brick_idx_delta[num_slices_in_pic_minus1]" in the syntax element "pic_parameter_set_rbsp".
[0135] FIG. 19 shows a flowchart 1900 of an embodiment of the method 800 or 900 when the set of decoded data includes a group of pictures (GOP) structure.
[0136] In step 1910 (an embodiment of step 810 in FIG. 8 ), the method may check whether the GOP structure is explicitly coded into the video bitstream or whether it is inferred from previous data PD of the video bitstream. A syntax element F (or Fi) denoted "GOP_structure_indicator" may be added to the video bitstream. If the GOP structure is inferred from previous data PD, in step 1930 (an embodiment of step 830 in FIG. 8 ), the syntax element F (or Fi) indicates that the GOP structure is inferred from previous data PD. If the GOP structure is explicitly coded into the video bitstream, in step 1920 (an embodiment of step 820 in FIG. 8 ), the syntax element F (or Fi) indicates that the GOP structure is explicitly coded into the video bitstream.
[0137] In one variant, if the GOP structure is inferred from previous data PD of the video bitstream, the syntax element F is not added to the video bitstream.
[0138] By inferring the GOP structure, the bandwidth required to transmit the video is reduced.
[0139] In step 1940 (an embodiment of step 830 of FIG. 8), the method may access syntax element F (or Fi) from the video bitstream.
[0140] In one variant, the method checks whether syntax element F (or Fi) is present in the video bitstream.
[0141] In step 1950 (an embodiment of step 850 in FIG. 8 ), the method can check whether syntax element F (or Fi) indicates that the GOP structure is inferred from previous data PD of the video bitstream, or, according to a variant, syntax element F (or Fi) is not present in the video bitstream. Then, in step 1970 (an embodiment of step 870 in FIG. 8 ), the GOP structure is inferred from the previous data PD. If syntax element F (or Fi) indicates that the GOP structure is explicitly coded in the video bitstream, or, according to a variant, syntax element F (or Fi) is present in the video bitstream, in step 1960 (an embodiment of step 860 in FIG. 8 ), the GOP structure is explicitly decoded from the video bitstream.
[0142] In one embodiment, syntax element F (or Fi) may signal a predefined GOP structure index of a set of predefined GOP structures.
[0143] Examples of predefined GOP structures may be Random Access (RA: Layered Coding), Low Delay B (LB), and Low Delay P (LP), as shown in FIG.
[0144] In one variation of the method 1900 shown in FIG. 20, additional syntax elements such as GOP length can be used to precisely signal which of the predefined GOP structures is signaled.
[0145] In one embodiment, the previous data includes a set of several first decoded pictures in a GOP and a predefined GOP structure.
[0146] For example, based on the predefined GOP structure of FIG. 20, if the first decoded picture POC is 0-16-8-4, the inferred GOP structure is associated with the predefined GOP structure with index "1".
[0147] FIG. 21 illustrates a block diagram of one example of a system in which various aspects and embodiments may be implemented.
[0148] System 2100 can be embodied as a device including various components described below and configured to perform one or more of the aspects described herein. Examples of such devices include, but are not limited to, various electronic devices such as personal computers, laptop computers, smartphones, tablet computers, digital multimedia set-top boxes, digital television sets, personal video recording systems, connected home appliances, and servers. The elements of system 2100, either singly or in combination, may be embodied in a single integrated circuit (IC), multiple ICs, and / or separate components. For example, in at least one embodiment, the processing and encoder / decoder elements of system 2100 are distributed across multiple ICs and / or separate components. In various embodiments, system 2100 is communicatively coupled to one or more other systems or other electronic devices, for example, via a communication bus or through dedicated input and / or output ports. In various embodiments, system 2100 is configured to implement one or more of the aspects described herein.
[0149] The system 2100 includes at least one processor 2110 configured to execute loaded instructions, for example, to implement various aspects described herein. The processor 2110 may include embedded memory, input / output interfaces, and various other circuits, as known in the art. The system 2100 includes at least one memory 2120 (e.g., a volatile memory device and / or a nonvolatile memory device). The system 2100 includes a storage device 2140, which may include nonvolatile and / or volatile memory, including, but not limited to, electrically erasable programmable read-only memory (EEPROM), read-only memory (ROM), programmable read-only memory (PROM), random access memory (RAM), dynamic random access memory (DRAM), static random access memory (SRAM), flash, magnetic disk drives, and / or optical disk drives. The storage device 2140 may include, by way of non-limiting example, an internal storage device, an attached storage device (including removable and non-removable storage devices), and / or a network-accessible storage device.
[0150] The system 2100 includes an encoder / decoder module 2130 configured to process data to provide, for example, encoded or decoded video, which may include its own processor and memory. The encoder / decoder module 2130 represents a module that may be included in a device that performs encoding and / or decoding functions. As is known, a device may include one or both of an encoding module and a decoding module. Furthermore, the encoder / decoder module 2130 may be implemented as a separate element of the system 2100 or may be incorporated within the processor 2110 as a combination of hardware and software, as is known to those skilled in the art. Program code that is loaded into the processor 2110 or the encoder / decoder 2130 to perform various aspects described herein may be stored in the storage device 2140 and subsequently loaded into the memory 2120 for execution by the processor 2110. According to various embodiments, one or more of the processor 2110, memory 2120, storage device 2140, and encoder / decoder module 2130 may store one or more of various items during the execution of the processes described herein. Such stored items may include, but are not limited to, input video, decoded video or portions of decoded video, bitstreams, matrices, variables, and intermediate or final results from the processing of equations, expressions, operations, and computational logic.
[0151] In some embodiments, memory internal to the processor 2110 and / or the encoder / decoder module 2130 is used to store instructions and provide working memory for processing required during encoding or decoding. However, in other embodiments, memory external to the processing device (e.g., the processing device may be either the processor 2110 or the encoder / decoder module 2130) is used for one or more of these functions. The external memory may be the memory 2120 and / or the storage device 2140, e.g., dynamic volatile memory and / or non-volatile flash memory. In some embodiments, for example, external non-volatile flash memory is used to store the television's operating system. In at least one embodiment, a high-speed external dynamic volatile memory such as RAM is used as working memory for video coding and decoding operations such as MPEG-2 (MPEG refers to the Moving Picture Experts Group, MPEG-2 is also referred to as ISO / IEC 13818, 13818-1 is also known as H.222, and 13818-2 is also known as H.262), HEVC (HEVC refers to High Efficiency Video Coding, also known as H.265 and MPEG-H Part 2), or VVC (Versatile Video Coding, an emerging standard developed by JVET, i.e., the Joint Video Experts Team).
[0152] Input to the elements of system 2100 may be provided through various input devices, as shown in block 2230. Such input devices include, but are not limited to, (i) a radio frequency (RF) section that receives, for example, RF signals transmitted over the air by a broadcast station, (ii) a component (COMP) input terminal (or set of COMP input terminals), (iii) a universal serial bus (USB) input terminal, and / or (iv) a high-definition multimedia interface (HDMI) input terminal. Other examples not shown in FIG. 21 include composite video.
[0153] In various embodiments, the input devices of block 2230 have associated respective input processing elements as known in the art. For example, the RF section may be associated with elements suitable for (i) selecting a desired frequency (also referred to as selecting a signal or band-limiting a signal to a frequency band), (ii) downconverting the selected signal, (iii) band-limiting again to a narrower frequency band to select a signal frequency band, which in certain embodiments may be referred to as a channel (for example), (iv) demodulating the downconverted, band-limited signal, (v) performing error correction, and (vi) demultiplexing to select a desired data packet stream. The RF section of various embodiments includes one or more elements that perform these functions, e.g., a frequency selector, a signal selector, a band limiter, a channel selector, a filter, a downconverter, a demodulator, an error corrector, and a demultiplexer. The RF section may include, for example, a wavelength adjuster that performs various of these functions, including downconverting a received signal to a lower frequency (e.g., an intermediate frequency or a frequency near baseband) or to baseband. In one set-top box embodiment, the RF section and its associated input processing elements perform frequency selection by receiving, filtering, downconverting, and re-filtering RF signals transmitted over a wired (e.g., cable) medium to a desired frequency band. In various embodiments, the order of the above (and other) elements is rearranged, some of these elements are removed, and / or other elements that perform similar or different functions are added. Adding elements can include inserting elements between existing elements, such as inserting amplifiers and analog-to-digital converters. In various embodiments, the RF section includes an antenna.
[0154] Additionally, the USB and / or HDMI terminals may include respective interface processors for connecting system 2100 to other electronic devices via USB and / or HDMI connections. It should be understood that various aspects of input processing, e.g., Reed-Solomon error correction, may be implemented, for example, within a separate input processing IC or within processor 2110, as desired. Similarly, aspects of USB or HDMI interface processing may be implemented, as desired, within a separate interface IC or within processor 2110. The demodulated, error corrected, and demultiplexed stream is provided to various processing elements, including processor 2110, operating in combination with memory and storage elements, and encoder / decoder 2130, to process the data stream as desired, for example, for display on an output device.
[0155] The various elements of system 2100 may be provided within an integrated housing in which the various elements are interconnected and capable of transmitting data therebetween using suitable connection configurations, e.g., internal buses as are known in the art, including the Inter-IC (I2C) bus, wiring, and printed circuit boards.
[0156] The system 2100 includes a communication interface 2150 that enables communication with other devices over a communication channel 2160. The communication interface 2150 may include, but is not limited to, a transceiver configured to transmit and receive data over the communication channel 2160. The communication interface 2150 may include, but is not limited to, a modem or a network card, and the communication channel 2160 may be implemented in a wired and / or wireless medium, for example.
[0157] In various embodiments, data is streamed or otherwise provided to system 2100 using a wireless network such as a Wi-Fi network, e.g., IEEE 802.11 (IEEE refers to the Institute of Electrical and Electronics Engineers). The Wi-Fi signal in these embodiments is received via communication channel 2160 and communication interface 2150 adapted for Wi-Fi communication. Communication channel 2160 in these embodiments is typically connected to an access point or router that provides access to external networks, including the Internet, enabling streaming applications and other over-the-top communications. Other embodiments provide streamed data to system 2100 using a set-top box that delivers data via an HDMI connection in input block 2130. Still other embodiments provide streamed data to system 2100 using an RF connection in input block 2130. As noted above, various embodiments provide data in a non-streaming manner. Additionally, various embodiments use wireless networks other than Wi-Fi, such as a cellular network or a Bluetooth network.
[0158] The system 2100 can provide output signals to various output devices, including a display 2200, speakers 2210, and other peripheral devices 2220. The display 2200 of various embodiments includes, for example, one or more of a touchscreen display, an organic light-emitting diode (OLED) display, a curved display, and / or a foldable display. The display 2200 may be for a television, a tablet, a laptop, a mobile phone, or other device. The display 2200 may also be integrated with other components (e.g., as in a smartphone) or may be separate (e.g., an external monitor for a laptop). The other peripheral devices 2220, in various example embodiments, include one or more of a standalone digital video disc (or digital versatile disc) (both terms DVR), a disc player, a stereo system, and / or a lighting system. Various embodiments use one or more peripheral devices 2220 that provide functionality based on the output of the system 2100. For example, a disc player performs the function of playing the output of the system 2100.
[0159] In various embodiments, control signals are communicated between system 2100 and display 2200, speakers 2210, or other peripheral devices 2220 using signaling such as AV.Link, Consumer Electronics Control (CEC), or other communication protocols that enable inter-device control with or without user intervention. Output devices may be communicatively coupled to system 2100 via dedicated connections through respective interfaces 2170, 2180, and 2190. Alternatively, output devices may be connected to system 2100 using communication channel 2160 via communication interface 2150. Display 2200 and speakers 2210 may be integrated into a single unit with other components of system 2100 in an electronic device such as a television. In various embodiments, display interface 2170 includes a display driver, such as a timing controller (T Con) chip.
[0160] Alternatively, display 2200 and speakers 2210 may be separate from one or more of the other components, for example, if the RF portion of input 2230 is part of a separate set-top box. In various embodiments in which display 2200 and speakers 2210 are external components, the output signal may be provided via a dedicated output connection including, for example, an HDMI port, a USB port, or a COMP output.
[0161] The embodiments described herein may be implemented in, for example, a method or process, an apparatus, a software program, a data stream, or a signal. Even when discussed in the context of only a single implementation (e.g., discussed only as a method), the implementation of the discussed features may also be implemented in other forms (e.g., an apparatus or a program). An apparatus may be implemented in, for example, appropriate hardware, software, and firmware. The methods may be implemented in, for example, an apparatus, such as a processor, which generally refers to a processing device, including, for example, a computer, a microprocessor, an integrated circuit, or a programmable logic device. Processors also include communication devices, such as computers, mobile phones, personal digital assistants ("PDAs"), and other devices that facilitate communication of information between end users.
[0162] According to one aspect of this embodiment, there is provided an apparatus 2100 for video encoding and / or decoding, the apparatus including a processor 2110 and at least one memory 2120, 2140 coupled to the processor, the processor 2110 configured to perform any of the embodiments of methods 800, 900, 1600 and / or 1700 above.
[0163] According to one aspect of the present disclosure, there is provided an apparatus for video encoding and / or decoding, the apparatus including means for using a syntax element to indicate whether decoding data is explicitly coded in the video bitstream or inferred from previous data in the video bitstream. The video encoder of FIG. 1 may include the structure or means of the apparatus. The apparatus for video encoding may perform any of the embodiments of any of methods 800, 900, 1600, and 1700.
[0164] As will be apparent to those skilled in the art, implementations can generate a wide variety of signals formatted to carry information, which can be stored or transmitted, for example. The information can include, for example, instructions for performing a method or data produced by one of the described implementations. For example, a signal can be formatted to carry a bitstream of the described embodiments. Such a signal can be formatted, for example, as an electromagnetic wave (e.g., using the radio frequency portion of the spectrum) or as a baseband signal. Formatting can include, for example, encoding a data stream and modulating a carrier wave with the encoded data stream. The information carried by the signal can be, for example, analog or digital information. The signal can be transmitted over a wide variety of different wired or wireless links, as is known. The signal can be stored on a processor-readable medium.
[0165] Furthermore, any of methods 800, 900, 1600, and / or 1700 may be implemented (independently or jointly) as a computer program product including computer-executable instructions that may be executed by a processor. The computer program product with computer-executable instructions may be stored in a transitory or non-transitory computer-readable storage medium of system 2100, encoder 100, and / or decoder 200, respectively.
[0166] It is important to note that one or more elements in processes 800, 900, 1600, and / or 1700 may be combined, performed in a different order, or eliminated in some embodiments while still implementing aspects of the present disclosure. Other steps may be performed in parallel, and the processor may not wait for a step to be fully completed before starting another step.
[0167] Furthermore, aspects of the present embodiments may take the form of a computer-readable storage medium. Any combination of one or more computer-readable storage media may be utilized. The computer-readable storage medium may take the form of a computer-readable program product having computer-readable program code embodied therein and executable by a computer. As used herein, a computer-readable storage medium is considered to be a non-transitory storage medium endowed with the inherent ability to store information therein and to provide retrieval of information therefrom. The computer-readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the above.
[0168] The following list provides more specific examples of computer-readable storage media to which the present disclosure may be applied, but it should be understood that this is merely illustrative and not an exhaustive list, as would be readily understood by one of ordinary skill in the art: The list of examples includes a portable computer diskette, a hard disk, a ROM, an EPROM, a flash memory, a portable compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the above.
[0169] According to one aspect of the present embodiments, a computer-readable storage medium is provided that carries a software program including program code instructions for performing any of the embodiments of any of the methods of the present embodiments, including methods 800, 900, 1600 and / or 1700. [Appendix 1] 1. A method comprising: using a syntax element to indicate whether decoded data corresponding to a picture region is explicitly coded in a first portion of a video bitstream representing said picture region or whether it is inferred from previous data in a second portion of said video bitstream, wherein said previous data is shared by several picture regions represented by a third portion of said bitstream. [Appendix 2] 1. An apparatus comprising: means for using a syntax element to indicate whether decoded data corresponding to a picture region is explicitly coded in a first part of a video bitstream representing said picture region or whether it is inferred from previous data in a second part of said video bitstream, wherein said previous data is shared by several picture regions represented by a third part of said bitstream. [Appendix 3] 10. The method of claim 1 or the apparatus of claim 2, wherein a set of decoded data is divided into subsets of decoded data, and a syntax element for each subset indicates whether the decoded data of the subset is explicitly coded in the video bitstream or whether it is inferred from previous data in the video bitstream. [Appendix 4] 4. The method of claim 1 or 3 or the apparatus of claim 2 or 3, wherein the decoding data is a constraint flag that controls the activation of a coding tool, and the syntax element indicates whether the constraint flag is explicitly coded in the first portion of the video bitstream or whether it is inferred from the previous data in the second portion of the video bitstream. [Appendix 5] 4. The method of claim 1 or 3 or the apparatus of claim 2 or 3, wherein the decoded data is a list of reference pictures and the previous data is a GOP structure and several reference frames. [Appendix 6] 4. The method of claim 1 or 3 or the apparatus of claim 2 or 3, wherein the decoded data is slice parameters and the previous data is a GOP structure and a decoded picture order. [Appendix 7] A method for encoding or decoding video, comprising the method of any one of appendices 1, 3-6. [Appendix 8] 10. An apparatus for encoding or decoding video, comprising the device according to any one of Supplementary Notes 2 to 6. [Appendix 9] A non-transitory computer-readable storage medium storing instructions for performing the method of any one of appendices 1, 3-7. [Appendix 10] 8. A computer program comprising instructions for carrying out the method of any one of appendices 1, 3 to 7. [Appendix 11] A bitstream comprising: decoding data used to decode the video data; a syntax element that indicates whether the decoded data corresponding to a picture region is explicitly coded in a first part of the bitstream that represents the picture region or whether it is inferred from previous data in a second part of the bitstream, the previous data being shared by several picture regions represented by a third part of the bitstream.
Claims
1. 1. A method for decoding video data, comprising: obtaining a syntax element, wherein the syntax element equal to a first value indicates that a first portion of a video bitstream has multiple constraint flags explicitly coded therein, each constraint flag controlling activation of a coding tool, and the syntax element equal to a second value different from the first value indicates that all of the multiple constraint flags are inferred from the same single binary value; obtaining the plurality of constraint flags based on the syntax elements; decoding the image block based on the plurality of constraint flags; A method comprising:
2. 2. The method of claim 1, wherein the plurality of constraint flags comprises a subset of constraint flags, and for at least one of the subset of constraint flags, a separate syntax element indicates whether the constraint flags of the subset are explicitly coded in the video bitstream or whether they are inferred from the same single binary value.
3. 1. An apparatus for decoding video data, comprising: obtaining a syntax element, wherein the syntax element equal to a first value indicates that a first portion of a video bitstream has multiple constraint flags explicitly coded therein, each constraint flag controlling activation of a coding tool, and the syntax element equal to a second value different from the first value indicates that all of the multiple constraint flags are inferred from the same single binary value; obtaining the plurality of constraint flags based on the syntax elements; decoding the image block based on the plurality of constraint flags; 1. An apparatus comprising electronic circuitry configured to:
4. 4. The apparatus of claim 3, wherein the plurality of constraint flags includes a subset of constraint flags, and for at least one of the subset of constraint flags, a separate syntax element indicates whether the constraint flags of the subset are explicitly coded in the video bitstream or whether they are inferred from the same single binary value.
5. 1. A method for encoding video data, comprising: encoding a syntax element, wherein the syntax element equal to a first value indicates that a first portion of a video bitstream has multiple constraint flags explicitly coded therein, each constraint flag controlling activation of a coding tool, and the syntax element equal to a second value different from the first value indicates that all of the multiple constraint flags are inferred from the same single binary value; encoding the plurality of constraint flags based on the syntax elements; encoding the image block based on the plurality of constraint flags; A method comprising:
6. 6. The method of claim 5, wherein the plurality of constraint flags are divided into subsets of constraint flags, and for at least one of the subsets of constraint flags, a separate syntax element indicates whether the constraint flags of the subset are explicitly coded in the video bitstream or whether they are inferred from the same single binary value.
7. 1. An apparatus for encoding video data, comprising: encoding a syntax element, wherein the syntax element equal to a first value indicates that a first portion of a video bitstream has multiple constraint flags explicitly coded therein, each constraint flag controlling activation of a coding tool, and the syntax element equal to a second value different from the first value indicates that all of the multiple constraint flags are inferred from the same single binary value; encoding the plurality of constraint flags based on the syntax elements; encoding the image block based on the plurality of constraint flags; 1. An apparatus comprising electronic circuitry configured to:
8. 8. The apparatus of claim 7, wherein the plurality of constraint flags are divided into subsets of constraint flags, and for at least one of the subsets of constraint flags, a separate syntax element indicates whether the constraint flags of the subset are explicitly coded in the video bitstream or whether they are inferred from the same single binary value.
9. 10. A non-transitory computer-readable storage medium storing instructions for performing the method of claim 1.
10. A computer program comprising instructions for carrying out the method of claim 1.
11. A non-transitory computer-readable storage medium storing instructions for carrying out the method of claim 5.
12. A computer program comprising instructions for carrying out the method of claim 5.