Method, system and computer program for decoding an encoded video stream

JP7632802B2Active Publication Date: 2025-02-19TENCENT AMERICA LLC
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
JP2021531271
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2020-01-17
Filing Date
2020-01-21
Publication Date
2025-02-19
Estimated Expiration
2040-01-21

Smart Images

  • Figure 0007632802000001
    Figure 0007632802000001
  • Figure 0007632802000002
    Figure 0007632802000002
  • Figure 0007632802000003
    Figure 0007632802000003
Patent Text Reader

Abstract

A method and system for decoding a video stream are provided, the method comprising the steps of receiving an encoded video stream having a picture divided into a plurality of tile groups, each of the plurality of tile groups including at least one tile, the encoded video stream further including a first indicator indicating whether a tile group of the plurality of tile groups has a rectangular shape; determining whether the tile group of the picture has a rectangular shape based on the first indicator; and reconstructing, forwarding, or discarding the tile group.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical field]

[0001] This application claims priority from U.S. Provisional Application No. 62 / 795,526, filed January 22, 2019, and U.S. Application No. 16 / 745,824, filed January 17, 2020, the disclosures of which are incorporated herein by reference in their entireties.

[0002] The disclosed subject matter relates to video encoding and decoding, and more particularly, to techniques for signaling and identifying tile and tile group structure for encoded video pictures. [Background technology]

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

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

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

[0006] The concept of splitting a coded video bitstream into multiple packets for transport over packet networks has been around for a long time. Early on, the majority of video coding standards and technologies were optimized for bit-oriented transport and well-defined bitstreams. Packetization was done at system layer interfaces, e.g., as specified by the Real-time Transport Protocol (RTP) payload format. With the advent of Internet connectivity suitable for the mass use of video over the Internet, video coding standards have reflected their preferred use cases through the conceptual distinction of the video coding layer (VCL) and the network abstraction layer (NAL). The NAL unit was introduced in H.264 in 2003 and has been maintained in certain video coding standards and technologies since then, with only minor modifications.

[0007] A NAL unit can often be viewed as the smallest entity that a decoder can act on without necessarily having decoded all previous NAL units in a coded video sequence. NAL units enable certain error resilience techniques and certain bitstream manipulation techniques, including bitstream pruning, for example by a Media Aware Network Element (MANE), such as a Selective Forwarding Unit (SFU) or a Multipoint Control Unit (MCU).

[0008] 5A-5B show syntax diagrams of parts of the syntax of the NAL unit header according to H.264 (501) and H.265 (502), in both cases without the respective extensions. In both cases, forbidden_zero_bit is a zero bit used for start code emulation prevention in a particular system layer environment. The nal_unit_type syntax element indicates the type of data the NAL unit carries, which is for example one of a particular slice type, a parameter set type, a Supplementary Enhancement Information (SEI) message, etc. The H.265 NAL unit header further includes nuh_layer_id and nuh_temporal_id_plus1, which indicate the spatial / SNR and temporal layer of the coded picture to which the NAL unit belongs.

[0009] It can be noticed that NAL unit headers contain only easily parsable, fixed-length codewords that have no parsing dependencies on other data in the bitstream, such as other NAL unit headers or parameter sets. Since NAL unit headers are the first octets of a NAL unit, the MANE can easily extract them, parse them, and act on them. Other high-level syntax elements, such as slice or tile headers, in contrast, are less easily accessible to the MANE, because they may require maintaining parameter set context and / or processing of variable-length or arithmetically coded codepoints.

[0010] It can further be noticed that the NAL unit header shown in Figures 5A-B does not contain information that allows associating the NAL unit with a segment of a coded picture, such as a slice, tile, or similar portion of a bitstream that represents a spatial region of the coded picture. In the related art, such information is present in slice headers in certain cases in the form of a macroblock or CU address, which in some cases is an integer n indicating that the segment, slice, tile starts at the nth macroblock / CU in scan order when counting from the top-left of the picture. Thus, n can depend on both the picture size and the macroblock / CU size, and can be small (fitted in 8 bits in binary code) or large (e.g., 32400, requiring 16 bits in binary code) for small picture sizes, again assuming a macroblock / CU size of 16x16 samples.

[0011] Previously, picture segments, such as tiles or slices, were often used to facilitate bitstream partitioning and parallelization to meet Maximum Transfer Unit size constraints. In either case, identification of tiles or slices in a Media Aware Network Element (MANE), Selective Forwarding Unit (SFU), or similar device is typically not required; the decoder can obtain the relevant information from relatively complex slice headers and / or similar information, along with state obtained from decoding the parameter sets.

[0012] More recently, however, picture segments and especially tiles (and tile groups, which are collections of tiles in scan order, grid order, or other suitable order) have been used, for example, to collect CUs that represent a particular view in a synthesized 360 projection, among other applications. In some of these applications, the MANE and SFUs can advantageously remove certain tiles or other segments from the coded picture if they are not needed by the application. For example, when a cubic projection is used, rendering a scene from an outside viewpoint requires a maximum of three of the six cubic surfaces. Transmitting CUs and segments that represent the remaining minimum three surfaces to an endpoint can be a waste of resources. However, in a scenario in which a sender sends a complete representation (including all six surfaces of the cubic projection) to the MANE, and the MANE can forward only the required subset to multiple potential recipients, where the required subset can differ between recipients, the MANE will tailor a different bitstream that includes different cubic surfaces for each recipient. Doing so currently requires the MANE to process complex, variable-length coded slice headers and to keep state in the form of parameter sets, etc., as needed to decode the slice headers.

[0013] In view of the above, conventional video coding syntaxes lack an easily identifiable and parsable syntax element that identifies tile groups or other picture segments in a high-level syntax structure. Summary of the Invention

[0014] Some embodiments of the present disclosure address the above-mentioned problems and others.

[0015] In some embodiments, a method is provided that is executed by at least one processor, the method comprising: receiving an encoded video stream having a picture divided into a plurality of tile groups, each of the plurality of tile groups including at least one tile, the encoded video stream further including a first indicator indicating whether a tile group of the plurality of tile groups has a rectangular shape, determining whether the tile groups of the picture have a rectangular shape based on the first indicator, and reconstructing, forwarding, or discarding the tile groups.

[0016] In one embodiment, the first indicator is a flag. In one embodiment, the flag is provided in a parameter set of the encoded video stream. In one embodiment, the parameter set is a Picture Parameter Set ("PPS").

[0017] In one embodiment, the first indicator of the received encoded video stream indicates whether the tile group of the plurality of tile groups has a rectangular shape without indicating whether any other tile groups of the plurality of tile groups in the picture have a rectangular shape.

[0018] In one embodiment, the first indicator of the received encoded video stream indicates that the tile group has a rectangular shape, the encoded video stream further including a plurality of syntax elements each pointing to a respective corner of the tile group, the method further comprising determining a size or a position of the tile group based on the plurality of syntax elements. In one embodiment, the plurality of syntax elements are provided in a parameter set for the encoded video stream. In one embodiment, the parameter set is a Picture Parameter Set ("PPS").

[0019] In one embodiment, the received encoded video stream further includes a plurality of syntax elements, each of which indicates a tile group identifier (ID) of a respective tile group among the plurality of tile groups.

[0020] In one embodiment, the received encoded video stream further includes a second indicator in a parameter set or tile group header indicating the number of tiles contained in the tile group, and the method further includes a step of determining the location of a corner of the tile group within the picture based on counting the number of tiles in raster scan order.

[0021] In one embodiment, the received encoded video stream further includes a second indicator indicating whether the tile group is a motion constraint tile set or includes multiple motion constraint tiles, and the method further includes a step of determining whether the tile group of the encoded video stream is a motion constraint tile set or includes multiple motion constraint tiles based on the second indicator.

[0022] In some embodiments, a system is provided for decoding an encoded video stream comprising a picture divided into a plurality of tile groups, each of the plurality of tile groups comprising at least one tile, the system having a memory configured to store computer program code and at least one processor configured to receive the encoded video stream, access the computer program code, and operate as instructed by the computer program code, the computer program code including first identification code configured to cause the at least one processor to identify whether a tile group of the plurality of tile groups has a rectangular shape based on a first indicator included in the encoded video stream indicating whether the tile group of the plurality of tile groups has a rectangular shape, and executable code configured to cause the at least one processor to reconstruct, forward, or discard the tile group.

[0023] In one embodiment, the first indicator is a flag. In one embodiment, the flag is provided in a parameter set for the encoded video stream.

[0024] In one embodiment, the first indicator of the encoded video stream indicates whether the tile group of the plurality of tile groups has a rectangular shape without indicating whether any other tile groups of the plurality of tile groups in the picture have a rectangular shape.

[0025] In one embodiment, the computer program code further includes second identification code to cause the at least one processor to identify a size or position of the tile group based on a plurality of syntax elements received in the encoded video stream, each of the plurality of syntax elements pointing to a respective corner of the tile group.

[0026] In one embodiment, the computer program code further includes second identification code configured to cause the at least one processor to identify the tile group of the plurality of tile groups based on a syntax element included in the encoded video stream indicating a tile group identifier (ID) of the tile group.

[0027] In one embodiment, the computer program code further includes second identification code configured to cause the at least one processor to identify a location of a corner of the tile group within the picture based on a second indicator included in the encoded video stream indicating the number of tiles included in the tile group, and further based on counting the number of tiles included in the tile group in raster scan order.

[0028] In one embodiment, the computer program code further includes second identification code configured to cause the at least one processor to identify whether the tile group of the encoded video stream is a motion constraint tile set or includes multiple motion constraint tiles based on a second indicator included in the encoded video stream indicating whether the encoded video stream is a motion constraint tile set or includes multiple motion constraint tiles.

[0029] In some embodiments, a non-transitory computer-readable medium is provided having computer instructions stored thereon that, when executed by at least one processor, cause the at least one processor to, after receiving an encoded video stream including a picture divided into a plurality of tile groups, each tile group including at least one tile, determine whether a tile group of the plurality of tile groups has a rectangular shape based on a first indicator included in the encoded video stream that indicates whether the tile group of the plurality of tile groups has a rectangular shape, and to reconstruct, forward, or discard the tile group. [Brief description of the drawings]

[0030] Further features, nature and various advantages of the disclosed subject matter will become more apparent from the following detailed description and the accompanying drawings. [Figure 1] 1 illustrates generally a simplified block diagram of a communication system according to one embodiment. [Diagram 2] 1 illustrates generally a simplified block diagram of a streaming system according to one embodiment. [Diagram 3] 1 illustrates generally a simplified block diagram of a video decoder and display according to one embodiment; [Figure 4] 1 illustrates generally a simplified block diagram of a video encoder and a video source according to one embodiment; [Figure 5A] 2 illustrates a schematic diagram of a NAL unit header according to H.264. [Figure 5B] 2 illustrates a schematic diagram of a NAL unit header according to H.265. [Figure 6A] 2 illustrates a schematic diagram of a NAL unit according to one embodiment; [Figure 6B] 2 illustrates a schematic diagram of a NAL unit header according to one embodiment; [Figure 6C] 2 illustrates a schematic diagram of a NAL unit header according to one embodiment; [Figure 6D] 2 illustrates a schematic diagram of a NAL unit header according to one embodiment; [Figure 7] 1 illustrates an example of a picture including tile groups and tiles according to one embodiment. [Figure 8] 4 illustrates a process of decoding according to one embodiment. [Figure 9] 1 illustrates a system according to one embodiment. [Figure 10] 1 shows an example of a picture for processing. [Figure 11] 4 illustrates a process of decoding according to one embodiment. [Figure 12] FIG. 1 illustrates a computer system suitable for implementing embodiments. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0031] 1 illustrates a simplified block diagram of a communication system 100 according to one embodiment of the present disclosure. The system 100 may include at least two terminals 110, 120 interconnected via a network 150. In a one-way transmission of data, a first terminal 110 may encode video data at a local location for transmission to the other terminal 120 via the network 150. The second terminal 120 may receive the other terminal's encoded video data from the network 150, decode the encoded data, and display the reconstructed video data. One-way data transmission may be common in media service provisioning applications and the like.

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

[0033] In FIG. 1, the terminals 110-140 may be, for example, servers, personal computers, and smartphones, and / or any other type of terminal. For example, the terminals 110-140 may be laptop computers, tablet computers, media players, and / or dedicated videoconferencing equipment. The network 150 represents any number of networks that convey encoded video data between the terminals 110-140, including, for example, wired and / or wireless communication networks. The communication network 150 may exchange data over circuit-switched and / or packet-switched channels. Exemplary networks include telecommunications networks, local area networks, wide area networks, and / or the Internet. For purposes of this description, the architecture and topology of the network 150 may not be important to the operation of the present disclosure, unless otherwise described below.

[0034] Figure 2 illustrates the placement of video encoders and decoders in a streaming environment as an example of an application of the disclosed subject matter. The disclosed subject matter can also be used in other applications where video can be used, including, for example, video conferencing, digital TV, and storage of compressed video on digital media including CDs, DVDs, memory sticks, and the like.

[0035] 2, the streaming system 200 may include a capture subsystem 213 that includes a video source 201 and an encoder 203. The streaming system 200 may further include at least one streaming server 205 and / or at least one streaming client 206.

[0036] The video source 201 may produce, for example, an uncompressed video sample stream 202. The video source 201 may be, for example, a digital camera. The sample stream 202, depicted as a thick line to emphasize its high data volume compared to an encoded video bit stream, may be processed by an encoder 203 coupled to the camera 201. The encoder 203 may include hardware, software, or a combination thereof for enabling or implementing aspects of the disclosed subject matter, which are described in more detail below. The encoder 203 may also generate an encoded video bit stream 204. The encoded video bit stream 204, depicted as a thin line to emphasize its low data volume compared to the uncompressed video sample stream 202, may be stored on a streaming server 205 for later use. One or more streaming clients 206 may access the streaming server 205 to retrieve a video bit stream 209, which may be a copy of the encoded video bit stream 204.

[0037] In an embodiment, the streaming server 205 may also function as a media aware network element (MANE). For example, the streaming server 205 may be configured to prune the encoded video bitstream 204 to tailor potentially different bitstreams to one or more of the multiple streaming clients 206. In an embodiment, a MANE may be provided separately from the streaming server 205 in the streaming system 200.

[0038] The streaming client 206 may include a video decoder 210 and a display 212. The video decoder 210 may, for example, decode a video stream 209, which is a copy of the incoming encoded video bitstream 204, and produce an outgoing video sample stream 211, which may be rendered on a display 212 or other rendering device (not shown). In some streaming systems, the video bitstreams 204, 209 may be encoded according to a particular video encoding / compression standard. Examples of such standards include, but are not limited to, ITU-T Recommendation H.265. A video encoding standard informally known as Versatile Video Coding (VVC) is under development. Embodiments of the present disclosure may be used in the context of VVC.

[0039] FIG. 3 illustrates an example functional block diagram of a video decoder 210 attached to a display 212 according to one embodiment of the present disclosure.

[0040] The video decoder 210 may include a channel 312, a receiver 310, a buffer memory 315, an entropy decoder / parser 320, a scaler / inverse transform unit 351, an intra prediction unit 352, a motion compensated prediction unit 353, an aggregator 355, a loop filter unit 356, a reference picture memory 357, and a current picture memory 358. In at least one embodiment, the video decoder 210 may include an integrated circuit, a series of integrated circuits, and / or other electronic circuitry. The video decoder 210 may also be embodied, partially or wholly, in software running on one or more CPUs with associated memory.

[0041] In this and other embodiments, the receiver 310 may receive one or more coded video sequences that are decoded by the decoder 210, one coded video sequence at a time, with the decoding of each coded video sequence being independent of the other coded video sequences. The coded video sequences may be received from a channel 312, which may be a hardware / software link to a storage device that stores the coded video data. The receiver 310 may receive the coded video data along with other data, such as coded audio data and / or auxiliary data streams, which may be forwarded to their respective usage entities (not shown). The receiver 310 may separate the coded video sequences from the other data. To combat network jitter, a buffer memory 315 may be coupled between the receiver 310 and the entropy decoder / parser 320 (hereinafter the "parser"). When the receiver 310 is receiving data from a storage / forwarding device with sufficient bandwidth and controllability or from an equally synchronous network, the buffer 315 may not be used or may be made small. For use over a best effort packet network such as the Internet, buffer 315 may be required and may be made relatively large and adaptively sized.

[0042] The video decoder 210 may include a parser 320 for reconstructing symbols 321 from the entropy coded video sequence. The categories of symbols may include, for example, information used to manage the operation of the decoder 210 and possibly information to control a rendering device, such as the display 212, which may be coupled to the decoder as shown in FIG. 2. The control information for the rendering device(s) may be in the form of, for example, a Supplementary Enhancement Information (SEI) message or a Video Usability Information (VUI) parameter set fragment (not shown). The parser 320 may parse / entropy decode the received coded video sequence. The coding of the coded video sequence may be according to a video coding technique or standard and may follow principles well known to those skilled in the art, including variable length coding, Huffman coding, arithmetic coding with or without contextual dependency, etc. The parser 320 may extract from the coded video sequence a set of subgroup parameters for at least one of the subgroups of pixels in the video decoder based on at least one parameter corresponding to the group. The subgroups may include a group of pictures (GOP), a picture, a tile, a slice, a macroblock, a coding unit (CU), a block, a transform unit (TU), a prediction unit (PU), etc. Parser 320 may also extract information from the coded video sequence information, such as transform coefficients, quantization parameter values, motion vectors, etc.

[0043] Parser 320 may perform an entropy decoding / parsing process on the video sequence received from buffer 315 to produce symbols 321 .

[0044] The reconstruction of symbols 321 may involve a number of different units depending on the type of coded video picture or portion thereof and other factors (e.g., inter-picture and intra-picture, inter-block and intra-block, etc.). Which units are involved and how they are involved may be controlled by subgroup control information parsed from the coded video sequence by parser 320. The flow of such subgroup control information between parser 320 and a number of units described below is not shown for the sake of clarity.

[0045] Beyond the functional blocks already described, the decoder 210 can be conceptually subdivided into a number of functional units, as described below. In a practical implementation operating under commercial constraints, many of these units will interact closely with each other and may be at least partially integrated with each other. However, for purposes of illustrating the subject matter disclosed herein, the following conceptual subdivision into functional units is adequate:

[0046] One unit may be a scalar / inverse transform unit 351. The scalar / inverse transform unit 351 may receive quantized transform coefficients as symbol(s) 321 from the parser 320, along with control information including which transform to use, block size, quantization factor, quantization scaling matrix, etc. The scalar / inverse transform unit 351 may output a block having sample values, which may be input to an aggregator 355.

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

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

[0049] The output samples of aggregator 355 may be subjected to various loop filtering techniques in loop filter unit 356. Video compression techniques may include in-loop filter techniques, which are controlled by parameters included in the coded video bitstream and made available to loop filter unit 356 as symbols 321 from parser 320, but may also be responsive to meta-information obtained during decoding of previous portions of the coded pictures or coded video sequences (in decoding order), as well as to previously reconstructed loop filtered sample values.

[0050] The output of the loop filter unit 356 may be a sample stream that can be output to a rendering device, such as the display 212, which may also be stored in the reference picture memory 357 for use in future inter-picture prediction.

[0051] Once a particular coded picture is fully reconstructed, it can be used as a reference picture for future predictions. Once a coded picture is fully reconstructed and identified as a reference picture (e.g., by parser 320), the current reference picture stored in current picture memory 358 can become part of reference picture memory 357, and a new current picture memory can be reallocated before starting reconstruction of the next coded picture.

[0052] The video decoder 210 may perform the decoding process according to a given video compression technique, which may be documented in a standard, such as ITU-T Recommendation H.265. The encoded video sequence may comply with the syntax defined by the video compression technique or standard used, in the sense of adhering to the syntax of the video compression technique or standard as defined in the video compression technique document or standard, in particular in the profile documents therein. Also, for compliance with some video compression techniques or standards, the complexity of the encoded video sequence may be within the limits defined by the level of the video compression technique or standard. In some cases, the level constrains the maximum picture size, the maximum frame rate, the maximum reconstruction sample rate (e.g., measured in megasamples per second), the maximum reference picture size, etc. The limits set by the level may be further constrained in some cases through a Hypothetical Reference Decoder (HRD) specification and metadata for HRD buffer management signaled in the encoded video sequence.

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

[0054] FIG. 4 illustrates an example functional block diagram of a video encoder 203 coupled to a video source 201 according to one embodiment of the present disclosure.

[0055] The video encoder 203 may include, for example, an encoder, which is a source coder 430, a coding engine 432, a (local) decoder 433, a reference picture memory 434, a predictor 435, a transmitter 440, an entropy encoder 445, a controller 450, and a channel 460.

[0056] The encoder 203 may receive video samples from a video source 201 (not part of the encoder), which may capture the video image(s) that are encoded by the encoder 203 .

[0057] The video source 201 may provide a source video sequence to be encoded by the encoder 203 in the form of a digital video sample stream that may be of any suitable bit depth (e.g. x-bit, 10-bit, 12-bit, ...), any color space (e.g. BT.601 Y CrCB, RGB, ...), and any suitable sampling structure (e.g. Y CrCb 4:2:0, Y CrCb 4:4:4). In a media service provision system, the video source 201 may be a storage device that stores pre-prepared videos. In a video conferencing system, the video source 201 may be a camera that captures local image information as a video sequence. The video data may be provided as a number of individual pictures that convey motion when viewed in sequence. The pictures themselves may be organized as a spatial array of pixels, each of which may have one or more samples, depending on the sampling structure, color space, etc. used. Those skilled in the art will readily appreciate the relationship between pixels and samples. The following description focuses on samples.

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

[0059] Some video encoders operate in what those skilled in the art will immediately recognize as a "coding loop". As a simplified explanation, the coding loop may consist of a source coder 430 (responsible for creating symbols based on the input picture to be coded and the reference picture(s)) and a (local) decoder 433 embedded in the encoder 203, which reconstructs the symbols to generate sample data that a (remote) decoder may also create, when the compression between the symbols and the coded video bitstream is lossless in a particular video compression technique. That reconstructed sample stream may be input to a reference picture memory 434. Since the decoding of the symbol stream results in bit-accurate results that are independent of the decoder location (local or remote), the contents of the reference picture memory are also bit-accurate between the local and remote encoders. In other words, the predictive part of the encoder "sees" exactly the same sample values ​​as the decoder "sees" when using the prediction during decoding. This basic principle of reference picture synchrony (and the resulting drift when synchrony cannot be maintained, e.g., due to channel errors) is known to those skilled in the art.

[0060] The operation of the "local" decoder 433 may be substantially the same as that of the "remote" decoder 210, which has already been described in detail above in connection with Figure 3. However, because symbols are available and the encoding / decoding of the symbols into a coded video sequence by the entropy coder 445 and the parser 320 may be lossless, the entropy decoding portion of the decoder 210, including the channel 312, the receiver 310, the buffer 315, and the parser 320, may not be fully implemented in the local decoder 433.

[0061] It can be noted at this point that any decoder technology, except for parsing / entropy decoding, present in the decoder may need to be present in substantially the same functional form in the corresponding encoder. The description of the encoder technology may be omitted, since it may be the inverse of the decoder technology described in detail. Only in certain areas is a more detailed description required and is provided below.

[0062] As part of its operation, the source coder 430 may perform motion-compensated predictive coding, which predictively codes an input frame relative to one or more previously coded frames from the video sequence, designated as “reference frames.” Thus, the coding engine 432 codes differences between pixel blocks of the input frame and pixel blocks of the reference frame(s) that may be selected as prediction reference(s) for the input frame.

[0063] The local video decoder 433 may decode the encoded video data of frames that may be designated as reference frames based on symbols produced by the source coder 430. The operation of the encoding engine 432 may advantageously be a lossy process. When the encoded video data is decoded in a video decoder (not shown in FIG. 4), the reconstructed video sequence may typically be a replica of the source video sequence with some errors. The local video decoder 433 may replicate the decoding process that may be performed by a video decoder on the reference frames, causing the reconstructed reference frames to be stored in the reference picture memory 434. In this manner, the encoder 203 may locally store copies of reconstructed reference frames that have common content with the reconstructed reference frames that will be obtained by the far-end video decoder.

[0064] The predictor 435 may perform a prediction search for the coding engine 432. That is, for a new frame to be encoded, the predictor 435 may search the reference picture memory 434 for sample data (as candidate reference pixel blocks) or specific metadata, such as reference picture video vectors or block shapes, that may serve as suitable prediction references for the new picture. The predictor 435 may operate pixel block by pixel block to find a suitable prediction reference. In some cases, as determined by the search results obtained by the predictor 435, the input picture may have prediction references drawn from multiple reference pictures stored in the reference picture memory 434.

[0065] Controller 450 may manage the encoding process of video coder 430, including, for example, setting the parameters and subgroup parameters used to encode the video data.

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

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

[0068] A controller 450 may manage the operation of the encoder 203. During encoding, the controller 450 may assign each coded picture a particular coding picture type, which may affect the coding technique that may be applied to the respective picture. For example, pictures may often be assigned as an intra picture (I picture), a predicted picture (P picture), or a bidirectionally predicted picture (B picture).

[0069] An Intra picture (I-picture) may be something that can be encoded and decoded without using other frames in a sequence as a source of prediction. Some video codecs allow different types of Intra pictures, including, for example, Independent Decoder Refresh (IDR) pictures. Those skilled in the art are aware of these variants of I-pictures, as well as their respective uses and characteristics.

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

[0071] Bidirectionally predicted pictures (B-pictures) may be encoded and decoded using intra- or inter-prediction, using at most two motion vectors and reference indices to predict the sample values ​​of each block. Similarly, multi-predictive images may use more than two reference pictures and associated metadata for the reconstruction of a single block.

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

[0073] The video encoder 203 may perform an encoding process according to a given video encoding technique or standard, such as ITU-T Recommendation H.265. In operation, the video encoder 203 may perform various compression processes, including predictive encoding processes that exploit temporal and spatial redundancy in the input video sequence. The encoded video data may therefore conform to a syntax defined by the video encoding technique or standard being used.

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

[0075] According to embodiments of the present disclosure, information identifying picture segments, such as tiles, tile groups, slices, group of blocks (GOBs), etc. (hereinafter, "tiles"), may be placed within an easily accessible high-level syntax structure (hereinafter, "NUH"), such as a NAL unit header or a similar structure having fixed-length codewords designed for easy processing by a MANE.

[0076] In embodiments, the information identifying the tiles can take a number of different forms. In designing this information, several design considerations can be kept in mind. Some of these design considerations are listed below:

[0077] Regarding the first design consideration, the number of tiles possible in a given picture can be small, for example, compared to the number of slices possible in legacy video coding techniques or standards. For example, in H.264, it is possible to have a slice that covers a single macroblock (for a particular picture size), allowing as many slices as there are macroblocks. In contrast, when representing a tiled cube map, six tiles may be sufficient, regardless of the picture resolution. In many practical cases, a maximum number of tiles of 64, 128, or 256 can be safely assumed.

[0078] Regarding the second design consideration, the tile layout may be fixed, while the video coding technology itself may allow flexibility in the tile layout per picture, and the system standard or technology may limit that flexibility to the point that the tile layout remains the same throughout a session. Thus, in some embodiments of the present disclosure, the tile layout may be allowed to be made available to the MANE via non-video bitstream specific means, such as during session setup. Undesirable context dependencies between parameter sets in the video coding and the MANE processing may be prohibited.

[0079] Embodiments of the present disclosure may implement the first and second design considerations described above. With respect to embodiments of the present disclosure that implement the first and second design considerations, a mechanism for identifying tiles carried by a NAL unit, and thus enabling the NAL unit to be removed by a MANE, may be significantly simplified compared to related techniques, such as H.264 and H.265.

[0080] For example, in H.264 and H.265, the MANE must identify the correct sequence parameter set to know about the length of the slice / tile address codeword in the slice header. Such length information is encoded as a variable length codeword in the sequence parameter set, so at a minimum, the MANE needs to follow the starting sequence of parameter sets to identify the currently active sequence parameter set, and then decode the variable length codeword (possibly out of this order, since parameter sets are not dependent on parsing) to identify the length of the binary encoded slice / tile address carried in the slice header. The MANE then needs to decode the variable length codeword(s) in the slice header to obtain the starting macroblock / CU address. That information can then be matched with the tile layout decoded from the parameter set to identify the tile.

[0081] In some embodiments of the present disclosure, the specific information for a tile can be the address of the first macroblock / CU of the tile. In effect, such a mechanism would move the starting address from the slice header to the NUH. Doing so may be a minimal-change approach to the codec design, but may make the NUH quite large. However, the increase in the size of the NUH may even be acceptable from a coding efficiency perspective, since the same amount of bits can be removed from the slice / tile header.

[0082] As mentioned above, macroblock / CU addresses can be reasonably small for small picture sizes and large macroblock / CU sizes, and can be quite large for small CU sizes and large picture sizes. For this reason, the H.265 SPS includes an indication of the length of the macroblock / CU address carried in the slice header.

[0083] In an embodiment of the present disclosure, the mechanism of indicating the length of the macroblock / CU address can be retained for the NAL unit header. However, doing so may have two drawbacks. First, the context dependency established by determining the size of syntax elements in the NAL unit header through parameter set values ​​may require the MANE to track parameter set activation, which may be cumbersome. Second, the NAL unit header, at least so far, is octet aligned to simplify processing in the MANE. Maintaining that octet alignment may require padding, thereby wasting bits, if the size of the macroblock / CU address signaled by the parameter set, when added with the remaining NAL unit header syntax elements, does not result in a number of bits divisible by 8.

[0084] In embodiments of the present disclosure (including those described above), the size of a macroblock / CU address or other syntax element in the NAL unit header can be determined by other fields in the NAL unit header. This mechanism advantageously avoids context dependency between parameter sets and the NAL unit header. One potential drawback is the use of bits or codepoints in other fields of the NAL unit header.

[0085] However, when not considering slices in the traditional sense, but only tiles or tile groups, or similar allocation mechanisms of CUs to bitstream entities, more advanced options can be implemented in embodiments of the present disclosure, as described further below.

[0086] To explain some of these embodiments, a brief review of the terms "slice" and "tile" is provided.

[0087] A slice is a collection of CUs or macroblocks, usually in scan order, and may be identified by two factors: a starting macroblock / CU address, which may be coded in a slice header, and the end of the slice, which may be specified by the start of a new slice (which may in turn be indicated through the presence of the next slice header). While certain video compression technologies and standards impose certain relatively small constraints on the number and layout of slices, in most cases the slice layout can vary from one coded picture to the next, and is often determined by mechanisms such as rate control and MTU size matching.

[0088] On the other hand, a tile typically refers to a rectangular arrangement of CUs, with the size and shape of the rectangle (and other rectangles that together make up the picture) being coded in the parameter set. In other words, the tile layout may be somewhat static in that a change from one tile layout to another may require the activation of a different parameter set. Also, the number of tiles may be advantageously constrained to allow efficient hardware implementation. As a result, in many video compression techniques and standards, a relatively short fixed-length binary codeword, e.g., 8 bits, allows addressing the maximum number of tiles for all practically used picture sizes. Thus, a fixed-length codeword for the tile ID may be used to identify the tile in the NAL unit header, thereby avoiding parsing and context dependencies between the NAL unit header codeword for tile identification and the parameter set. Alternatively, if so desired, the mechanism supporting variable-length codewords for macroblock / CU addresses in the NAL unit header may be equally applied to the tile ID codeword, at the expense of similar architectural drawbacks.

[0089] 6A-6D, examples of NAL unit header designs according to embodiments of the present disclosure are shown.

[0090] As shown in FIG. 6A, a NAL unit 601 may be provided that is part of a coded video bitstream. The coded video bitstream may include multiple NAL units 601. In some cases, the NAL units 601 may be octet-aligned to be less than or equal to a common maximum transmission unit (MTU) size of a data network. One such common MTU size is 1500 octets, which stems from certain limitations of early Ethernet technology. The NAL unit 601 may include a NAL unit header 602 at the beginning of the NAL unit 601. The framing of the NAL unit, including the (one or more) NAL units, within the coded video bitstream may be through start codes, through alignment with the packet structure of an underlying packet-oriented transport network, etc.

[0091] 6B, a syntax diagram of an example NAL unit header 603 for a NAL unit 601 of the present disclosure is shown, which shares some similarities to the NAL unit header used in H.265 shown in FIG 5B. Embodiments of the present disclosure may alternatively or additionally implement a NAL unit header having a structure that shares some similarities to, for example, an H.264 or VVC NAL unit header.

[0092] The NAL unit header 603 may include a syntax element 604 for a CU address or tile ID. In an embodiment, the length of the syntax element 604 may be fixed and may be selected to keep the NAL unit header 603 octet aligned. In an embodiment, the syntax element 604 may be in a format that is easily processable by a MANE as well as by video encoders and decoders. In an embodiment, as a non-limiting example, the syntax element 604 including the CU address or tile ID may be represented by a 6-bit unsigned integer, as represented by the descriptor u(6). In this non-limiting example, the syntax element 604 for the CU address or tile ID occupies the same bits as used in H.265 for the layer_id.

[0093] Figure 6C illustrates a NAL unit header 605 of the present disclosure that may be implemented in NAL unit 601. NAL unit header 605 shares similarities with NAL unit header 603, but is shown in a different presentation format in Figure 6C. As shown in Figure 6C, NAL unit header 605 may include a syntax element 606 for a CU address or a tile ID.

[0094] 6D illustrates an example NAL unit header 607 that preserves the fields of the H.265 NAL unit header. In a non-limiting example embodiment, syntax element 608 may be added, for example, to the end of NAL unit header 607. In a non-limiting example embodiment, syntax element 608 may instead be inserted somewhere in the middle of other syntax elements of NAL unit header 607. Syntax element 608 may be of fixed or variable size, and if of variable size, its size may be determined by any of the mechanisms described above (e.g., through a parameter set syntax element or through a NAL unit type), or any other suitable mechanism.

[0095] Hereinafter, a non-limiting structural example of a tile and tile group division design of an embodiment of the present disclosure will be described with reference to FIG. 7. In an embodiment, an encoded video stream including a plurality of pictures 700 may be sent from an encoder to a decoder and a MANE of the present disclosure. Each picture 700 may include one or more tiles 730. As shown in FIG. 7, as a non-limiting example, the picture 700 is shown to have 63 tiles. The number, size, and shape of the tiles 730 are not limited by FIG. 7 and may be any number, size, and shape. For example, the tiles 730 may be rectangular or non-rectangular. These tiles 730 may be divided into one or more tile groups 710. As shown in FIG. 7, as a non-limiting example, the picture 700 is shown to have five tile groups, each tile group 710 including a plurality of tiles 730. The number, size, and shape of the tile groups 710 are not limited by FIG. 7 and may be any number, size, and shape. For example, the tiles 730 may be rectangular or non-rectangular.

[0096] An embodiment of the present disclosure may decode and encode a video stream in which tile groups 710 and tiles 730 are defined and divided.

[0097] For example, referring to FIG. 8, decoders and MANEs of this disclosure may perform a process 800 for decoding a video stream.

[0098] As shown in Figure 8, a decoder or MANE may receive one or more identifiers (801). The one or more identifiers may be provided within a video stream sent by an encoder to the decoder or MANE, or may be provided by alternative means outside the video stream by an encoder or other device. The one or more identifiers may explicitly signal characteristics of the tile groups 710 and tiles 730 to the decoder or MANE, or alternatively or additionally may implicitly signal characteristics of the tile groups 710 and tiles 730. The one or more identifiers may be, for example, flags or other elements.

[0099] Following receiving the identifier(s), the decoder or MANE may identify one or more characteristics of one or more of the tile groups 710 and tiles 730 based on the identifier (802). After identifying the characteristics of the tile group 710, the decoder or MANE may use the identified characteristics to reconstruct the tile group 710, forward the tile group 710, or remove the tile group 710 from the video stream, as appropriate. For example, if process 800 is performed by a decoder, the decoder may reconstruct such tile group 710 and its tiles 730 (e.g., reconstruct NAL units carrying the tiles 730), or discard the tile group 710 and its tiles 730, as appropriate. If process 800 is performed by a MANE, the MANE may forward the tile group 710 and its tiles 730, or discard the tile group 710 and its tiles 730, as appropriate.

[0100] As shown in Figure 9, a system 810 of the present disclosure may include a memory 811 storing computer program code, and at least one processor 812 configured to receive the encoded video stream, access the computer program code, and operate as instructed by the computer program code. The computer program code may include specific code 822 configured to cause the at least one processor 812 to perform step 802 shown in Figure 8, and may further include execution code 824 configured to cause the at least one processor 812 to perform step 803 shown in Figure 8.

[0101] Below are described examples of some of the identifiers that may be received by the decoders and MANEs of this disclosure, as well as aspects of tile groups 710 and tiles 730 that may be identified based on the identifiers.

[0102] In some embodiments, a flag may indicate whether the tile group 710 is a rectangular subpicture. In an embodiment, an encoder may send the flag in the encoded video stream to a decoder or MANE of this disclosure, which may determine whether the tile group 710 is a rectangular subpicture based on the flag. Alternatively, the flag may be sent by other means outside the encoded video stream.

[0103] Alternatively or additionally, in some embodiments, decoders, MANEs, and encoders of this disclosure may perform a method of signaling tile group structure, including signaling a flag indicating whether the picture 700 includes only a single tile group 710 or multiple tile groups 710. As an example, the flag may be signaled by an encoder to a decoder or MANE. Alternatively, the flag may be sent by other means outside of the encoded video stream. The flag may be present in a parameter set (e.g., a picture parameter set). If the picture 700 includes only a single tile group 710, the tile group 710 may have a rectangular shape. If the picture 700 includes multiple tile groups 710, each tile group 710 may have a rectangular shape or a non-rectangular shape.

[0104] Alternatively or additionally, in some embodiments, the decoders, MANEs, and encoders of this disclosure may perform a method of signaling tile group structure that includes signaling a flag indicating whether each tile group 710 belonging to the current picture 700 may have a rectangular shape. If the value of the flag is equal to 1, all tile groups 710 belonging to the current picture 700 may have a rectangular shape. As an example, the flag may be signaled by an encoder to a decoder or MANE. Alternatively, the flag may be sent by other means outside of the encoded video stream. The flag may be present in a parameter set (e.g., a picture parameter set).

[0105] Alternatively, or in addition, in some embodiments, when a picture includes one or more rectangular tile groups 710, an encoder of this disclosure may provide to a decoder or MANE a syntax element indicating the number of tile group columns into which the picture 700 is divided, and a syntax element indicating the number of tile group rows into which the picture 700 is divided. In this case, each rectangular tile group 710 may have a uniform spacing, and the syntax elements may be present in a parameter set (e.g., a picture parameter set) sent by the encoder to the decoder or MANE. Alternatively, the syntax elements may be sent to the decoder or MANE by other means outside of the encoded video stream.

[0106] Alternatively, or in addition, in an embodiment, when a picture 700 includes one or more rectangular tile groups 710, an encoder of this disclosure may provide to a decoder or MANE a syntax element that indicates the number of tile groups 710 in the picture 700. The encoder may also provide to the decoder or MANE a syntax element that indicates an index that points to the top-left corner of the corresponding tile group 710 and a syntax element that indicates an index that points to the bottom-right corner of the corresponding tile group 710. These syntax elements may be present in a parameter set (e.g., a picture parameter set) that is sent by the encoder to the decoder or MANE. Alternatively, these syntax elements may be sent to the decoder or MANE by other means outside of the encoded video stream.

[0107] Alternatively or additionally, in an embodiment, a tile group ID may be signaled for each tile group 710. The tile group ID may be used to identify each tile group 710. A flag may indicate in a parameter set (e.g., a picture parameter set) whether there is explicit signaling of the tile group ID. The parameter set may be sent by the encoder to a decoder or MANE. If the flag indicates that the tile group ID is explicitly signaled, the length of the tile group ID may also be signaled. A specific tile group ID may be assigned to each tile group 710. Each tile group ID may not have the same value within the same picture 700. In an embodiment, the flag, the tile group ID, and the length of the tile group ID may be signaled by the encoder to a decoder or MANE of this disclosure.

[0108] Alternatively or additionally, in an embodiment, two different tile groups 710 may share one or more of the tiles 730. A flag may be provided in the parameter set to indicate whether two different tile groups 710 may overlap and contain the same tiles 730. If the flag indicates that overlap is allowed, the same tiles 730 may be present in one or more of the tile groups 710. In an embodiment, a parameter set including the flag may be transmitted by an encoder to a decoder or MANE of this disclosure.

[0109] Alternatively or additionally, in an embodiment, if the picture 700 includes multiple rectangular or non-rectangular tile groups 710, the number of tiles 730 for each tile group 710 may be signaled in the parameter set or tile group header. Then, by counting the number of tiles in raster scan order, the top left and bottom right locations of each tile group 710 may be estimated. In an embodiment, the parameter set and tile group header and signals therein may be transmitted by an encoder to a decoder or MANE of this disclosure, which may perform this estimation.

[0110] Alternatively or additionally, in an embodiment, each tile group 710 can be a motion constraint tile set or each tile group 710 can include multiple motion constraint tiles. A flag may indicate whether the tile group 710 has a motion constraint tile set or multiple motion constraint tiles. In an embodiment, the flag may be sent by an encoder to a decoder or MANE of this disclosure, and the decoder or MANE may determine whether the tile group 710 has a motion constraint tile set or multiple motion constraint tiles based on the flag. Alternatively, the flag may be sent to the decoder or MANE by other means outside of the encoded video stream.

[0111] Alternatively or additionally, in an embodiment, the tiles 730 in a tile group 710 may be in raster scan order. The addresses of the tile groups 710 may be in increasing order. Thus, the top-left index of the (n+1)th tile group 710 may be greater than the top-left index of the nth tile group 710. In an embodiment, the addresses of the tile groups 710 may be sent by an encoder to a decoder or MANE of this disclosure. Alternatively, the addresses may be sent to the decoder or MANE by other means outside of the encoded video stream.

[0112] Alternatively or additionally, in an embodiment, the shape of the tile group 710 within the picture 700 may be set by the encoder and determined by the decoder so that when the tile group 710 is decoded by the decoder, the entire left and top boundaries of each tile 730 consist entirely of the picture boundary or a previously decoded tile 730.

[0113] In an embodiment, the encoder can write a NAL unit header (or a tile group header) to include a syntax element covering the tile group ID in a manner similar to how the encoder writes existing NAL unit header (or tile group header) syntax, as would be understood by one of ordinary skill in the art.

[0114] In an embodiment, a decoder or MANE may parse the NAL unit headers (or more precisely, the syntax elements that make up the NAL unit headers (or tile group headers)) from the coded video bitstream, with or without syntax elements carrying tile group IDs or other forms of tile specific information, as would be understood by one skilled in the art. It should be noted, however, that the syntax elements are, in some of the cases mentioned above, coded in an accessible entropy coding format, e.g., a fixed-length binary code, without requiring state information.

[0115] According to some embodiments of the present disclosure, a decoder or MANE may nevertheless be able to identify tile groups 710 in an encoded picture 700 with less processing effort than would be required in the absence of the disclosed subject matter.

[0116] An example of such a benefit is now described with reference to Figure 10. Figure 10 shows a picture 840 of a street in a village, including first to eighth tile groups 841 to 848 with respective tile group IDs 1 to 8. In such an example, picture 840 is assumed to be captured by a surveillance camera.

[0117] In some cases, the decoder or MANE may be informed by external non-video encoding means that a particular tile group of picture 840 does not need to be reconstructed for a particular application. For example, as shown in FIG. 10, tile group 842 spans almost a wall. Thus, a surveillance system configurer may consider that area to be of no interest for surveillance. Thus, the surveillance camera may encode all of tile groups 841-848, but tile group 842 with ID 2 may not be needed for the application. In this regard, if the bitstream created by the surveillance camera is sent to its final destination via one or more MANEs, tile group 842 can be removed by one or more of the MANEs.

[0118] Without the teachings of the embodiments of the present disclosure, removal of a tile group 842 would require, at a minimum, that the payload of the NAL unit (slice or tile) be parsed to the extent necessary to extract the macroblock / CU address of the first macroblock in the tile. Depending on the video coding technique or standard used, and as discussed above, this may require both processing of variable length codewords and maintaining parameter set context in the MANE, both of which are undesirable from an implementation and computational complexity standpoint.

[0119] In contrast, in embodiments of the present disclosure, the MANE can obtain all the information necessary to identify which tiles are carried by a NAL unit through NAL unit header processing of binary encoded codewords. Thus, embodiments of the present disclosure can also provide easily identifiable and parsable syntax elements that identify tile groups or other picture segments in a high-level syntax structure while avoiding the problems of the related art.

[0120] Referring to FIG. 11, a decoder or MANE can implement an embodiment of the present disclosure by performing process 850, which will be described below.

[0121] The decoder or MANE may parse the NAL unit header from the video bitstream, including syntax elements covering macroblock / CU addresses or tile group IDs (851). Using that information, the decoder or MANE can identify the tile group IDs (852). The tile group IDs may be directly encoded, or the decoder / MANE may match a priori information about the tile layout, established, for example, by decoding a parameter set and following a startup sequence, with the macroblock / CU addresses encoded in the NAL unit header. The decoder or MANE may compare the tile IDs to a list of tiles that require reconstruction or forwarding by the decoder or MANE, respectively (853). If there is a match, the decoder may reconstruct or the MANE may forward the NAL unit carrying the tile (854). On the other hand, if there is no match, the decoder or MANE may discard the NAL unit (855). In one embodiment, the decoder or MANE silently discards the NAL unit.

[0122] In an embodiment of the present disclosure, at least one processor may encode a picture according to the tile group and tile partitioning design of the present disclosure and transmit an encoded video bitstream including one or more encoded tile groups and tiles to one or more decoders and MANEs for decoding according to the tile group and tile partitioning design of the present disclosure.

[0123] The techniques for encoding and decoding, including tile and tile group identification described above, can be implemented as computer software with computer readable instructions physically stored on one or more computer readable media. For example, Figure 12 illustrates a computer system 900 suitable for implementing embodiments of the disclosed subject matter.

[0124] The techniques described above can be implemented as computer software with computer readable instructions physically stored on one or more computer readable media. For example, Figure 12 illustrates a computer system 900 suitable for implementing certain embodiments of the disclosure.

[0125] The computer software may be coded using any suitable machine code or computer language that may be assembled, compiled, linked, or similarly subjected to mechanisms to produce code having instructions that can be executed by a computer central processing unit (CPU), graphics processing unit (GPU), and the like, either directly or via interpretation, microcode execution, and the like.

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

[0127] 12 with respect to computer system 900 are exemplary in nature and are not intended to suggest any limitation as to the scope of use or functionality of the computer software implementing embodiments of the present disclosure, nor should the arrangement of components be interpreted as having any dependency or requirement related to any one or combination of components illustrated in this non-limiting embodiment of computer system 900.

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

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

[0130] The computer system 900 may also include certain human interface output devices. Such human interface output devices may stimulate one or more of the senses of a human user, for example, through haptic output, sound, light, and smell / taste. Such human interface output devices may include haptic output devices (e.g., haptic feedback via a touch screen 910, data gloves, or joystick 905, although there may also be haptic feedback devices that do not function as input devices). For example, such devices may be audio output devices (e.g., speakers 909, headphones (not shown), etc.), visual output devices (e.g., screens 910 including CRT screens, LCD screens, plasma screens, OLED screens (each with or without touch screen input capability, each with or without haptic feedback capability, some of which may be capable of outputting two-dimensional visual output, or output in four or more dimensions through means such as stereoscopic output), virtual reality glasses (not shown), holographic displays, and smoke tanks (not shown), etc.), and printers (not shown).

[0131] The computer system 900 may also include human-accessible storage devices and their associated media, such as optical media including, for example, a CD / DVD ROM / RW 920 having a CD / DVD or similar media 921, a thumb drive 922, a removable hard drive or solid state drive 923, legacy magnetic media such as tape and floppy disks (not shown), specialized ROM / ASIC / PLD based devices (not shown) such as security dongles, and the like.

[0132] Those skilled in the art will also appreciate that the term "computer-readable medium" as used in connection with the subject matter disclosed herein does not include transmission media, carrier waves, or other transitory signals.

[0133] The computer system 900 may also include interfaces to one or more communication networks. The networks may be, for example, wireless, wired, optical. The networks may further be local, wide area, metropolitan, vehicular and industrial, real-time, delay tolerant, etc. Examples of networks include local area networks, such as Ethernet, wireless LAN, cellular networks including GSM, 3G, 4G, 5G, LTE, and the like, TV wired or wireless wide area digital networks including cable TV, satellite TV, and terrestrial broadcast TV, vehicular and industrial including CANBus, etc. Certain networks typically require an external network interface adapter that is attached to a particular general-purpose data port or peripheral bus 949 (e.g., a USB port of the computer system 900, etc.), while others are typically integrated into the core of the computer system 900 by attachment to a system bus, as described below (e.g., an Ethernet interface to a PC computer system, or a cellular network interface to a smartphone computer system). Using any of these networks, the computer system 900 can communicate with other entities. Such communications may be one-way receive only (e.g., broadcast TV), one-way transmit only (e.g., CANbus to a particular CANbus device), or two-way, for example, to other computer systems using local or wide area digital networks. Such communications may include communications to cloud computing environment 955. Specific protocols and protocol stacks may be used on each of the networks and network interfaces, as described above.

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

[0135] The core 940 may include one or more central processing units (CPUs) 941, graphics processing units (GPUs) 942, specialized programmable processing units in the form of field programmable gate arrays (FPGAs) 943, hardware accelerators for specific tasks 944, etc. These devices may be connected via a system bus 948 along with read only memory (ROM) 945, random access memory 946, internal mass storage 947, such as an internal non-user accessible hard drive, SSD, and the like. In some computer systems, the system bus 948 may be made accessible in the form of one or more physical plugs to allow expansion with additional CPUs, GPUs, and the like. Peripheral devices may be attached either directly to the core's system bus 948 or via a peripheral bus 949. Peripheral bus architectures include PCI, USB, and the like. A graphics adapter 950 may be included in the core 940.

[0136] The CPU 941, GPU 942, FPGA 943, and accelerator 944 may execute certain instructions that may combine to constitute the aforementioned computer code. The computer code may be stored in ROM 945 or RAM 946. Transient data may also be stored in RAM 946, while permanent data may be stored, for example, in internal mass storage 947. Rapid storage and retrieval in any of the memory devices may be enabled by the use of cache memories that may be associated proximate to one or more of the CPU 941, GPU 942, mass storage 947, ROM 945, RAM 946, and the like.

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

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

[0139] While this disclosure describes several non-limiting embodiments, there are alterations, permutations, and various equivalent alternatives that fall within the scope of the disclosure. It will thus be understood that those skilled in the art will be able to devise numerous systems and methods that, although not explicitly shown or described herein, embody the principles of the disclosure and are therefore within its spirit and scope.

Claims

1. A method executed by at least one processor, comprising: receiving an encoded video stream having a picture divided into a plurality of tile groups, each of the plurality of tile groups including at least one tile, wherein two different tile groups are allowed to overlap and include the same tile, the encoded video stream further comprising: a Network Abstraction Layer (NAL) unit header that includes a syntax element for identifying a tile group; a first indicator indicating whether each tile group of the plurality of tile groups has a rectangular shape; and identifying a tile group of the picture based on the syntax element in the NAL unit header; determining whether the tile group of the picture has a rectangular shape based on the first indicator; reconstructing, transferring or discarding the tile groups; The method according to claim 1,

2. The method of claim 1 , wherein the first indicator is a flag.

3. The method of claim 2 , wherein the flag is provided in a parameter set of the encoded video stream.

4. The method of claim 3 , wherein the parameter set is a Picture Parameter Set ("PPS").

5. the first indicator in the received encoded video stream indicates that the tile group has a rectangular shape; the encoded video stream further includes a plurality of syntax elements, each of which points to a respective corner of the tile group; The method further comprises determining a size or a position of the tile group based on the plurality of syntax elements. The method of claim 1.

6. The method of claim 5 , wherein the plurality of syntax elements are provided within a parameter set for the encoded video stream.

7. The method of claim 6 , wherein the parameter set is a Picture Parameter Set ("PPS").

8. The method of claim 1 , wherein the received encoded video stream further comprises a plurality of syntax elements, each of the plurality of syntax elements indicating a tile group identifier (ID) of a respective tile group of the plurality of tile groups.

9. the received encoded video stream further includes a second indicator in a parameter set or a tile group header indicating a number of tiles included in the tile group; The method further comprises locating corners of the group of tiles within the picture based on counting tiles in raster scan order. The method of claim 1.

10. the received encoded video stream further includes a second indicator indicating whether the tile group is a motion constrained tile set or whether the tile group includes multiple motion constrained tiles; The method further comprises determining, based on the second indicator, whether the tile group of the encoded video stream is a motion constrained tile set or includes multiple motion constrained tiles. The method of claim 1.

11. 1. A system for decoding an encoded video stream comprising a picture divided into a plurality of tile groups, each of the plurality of tile groups comprising at least one tile, wherein two different tile groups are allowed to overlap and contain the same tile, the encoded video stream further comprising: a network abstraction layer (NAL) unit header comprising syntax elements for identifying a tile group; and a first indicator indicating whether each tile group of the plurality of tile groups has a rectangular shape, the system comprising: a memory configured to store computer program code; at least one processor configured to receive the encoded video stream, to access the computer program code, and to operate as instructed by the computer program code; having The computer program code comprises: code configured to cause the at least one processor to identify a tile group of the picture based on the syntax element in the NAL unit header; code configured to cause the at least one processor to determine whether the tile group of the picture has a rectangular shape based on the first indicator; and code configured to cause the at least one processor to reconstruct, transfer, or discard the tile groups; Including, system.

12. The system of claim 11 , wherein the first indicator is a flag.

13. The system of claim 12 , wherein the flag is provided within a parameter set for the encoded video stream.

14. 12. The system of claim 11, wherein the computer program code further comprises code configured to cause the at least one processor to determine a size or position of the tile group based on a plurality of syntax elements received in the encoded video stream, each of the plurality of syntax elements indicating a respective corner of the tile group.

15. 12. The system of claim 11, wherein the computer program code further comprises code configured to cause the at least one processor to determine a location of a corner of the tile group within the picture based on a second indicator included in the encoded video stream indicating the number of tiles included in the tile group, and further based on counting the number of tiles included in the tile group in raster scan order.

16. 12. The system of claim 11, wherein the computer program code further comprises code configured to cause the at least one processor to determine whether the tile group of the encoded video stream is a motion constraint tile set or includes multiple motion constraint tiles based on a second indicator included in the encoded video stream indicating whether the encoded video stream is a motion constraint tile set or includes multiple motion constraint tiles.

17. A computer program comprising computer instructions which, when executed by at least one processor, cause the at least one processor to perform the method of any one of claims 1 to 10.

Citation Information

Patent Citations

  • motion-constrained tilesets for region-of-interest coding

    JP2016519516A

  • Image processing device and method

    WO2015012226A1