Flexible ctu scanning

EP4744298A1Pending Publication Date: 2026-05-20INTERDIGITAL CE PATENT HOLDINGS SAS
View PDF 0 Cites 0 Cited by

Patent Information

Authority / Receiving Office
EP · EP
Patent Type
Applications
Current Assignee / Owner
INTERDIGITAL CE PATENT HOLDINGS SAS
Filing Date
2024-06-25
Publication Date
2026-05-20

AI Technical Summary

Technical Problem

Traditional video compression methods face inefficiencies due to rigid Coding Tree Unit (CTU) scanning orders, which disrupt entropy model continuity and spatial feature neighborhoods, leading to suboptimal rate distortion performance.

Method used

Implementing flexible scanning paths for CTUs and CUs between raster and z-scan orders, allowing for adaptive scanning paths to be signaled and applied during encoding and decoding, enabling continuous entropy context and smoother spatial feature changes.

Benefits of technology

This approach enhances rate distortion performance by allowing for more flexible and adaptive scanning strategies, improving compression efficiency and maintaining spatial feature continuity.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure EP2024067737_16012025_PF_FP_ABST
    Figure EP2024067737_16012025_PF_FP_ABST
Patent Text Reader

Abstract

A method and an apparatus for encoding or decoding a video are provided wherein flexible scanning of the blocks is used. A scanning path is determined for scanning blocks of at least one part of a picture among at least a raster scan order and a z-scan order, and the at least one part of the picture is encoded or decoded following the scanning path.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] FLEXIBLE CTU SCANNING

[0002] This application claims the priority to European Patent Application No. EP23306192.8 filed 12 July 2023, which is incorporated herein by reference in its entirety.

[0003] TECHNICAL FIELD

[0004] The present embodiments generally relate to video compression. The present embodiments relate to a method and an apparatus for encoding or decoding an image or a video. More particularly, the present embodiments relate to providing a flexible Coding Tree Unit scanning.

[0005] BACKGROUND

[0006] To achieve high compression efficiency, image and video coding schemes usually employ prediction and transform to leverage spatial and temporal redundancy in the video content. Generally, intra or inter prediction is used to exploit the intra or inter picture correlation, then the differences between the original block and the predicted block, often denoted as prediction errors or prediction residuals, are transformed, quantized, and entropy coded. In inter prediction, motion vectors used in motion compensation are often predicted from motion vector predictor. To reconstruct the video, the compressed data are decoded by inverse processes corresponding to the entropy coding, quantization, transform, and prediction.

[0007] SUMMARY

[0008] According to an aspect, a method for encoding or decoding a video is provided. The method comprises deriving a scanning path for scanning blocks or group of blocks of at least one part of a picture, among at least a raster scan order and a z-scan order, encoding or decoding the at least one part of the picture based on the scanning path.

[0009] According to another aspect, an apparatus for encoding or decoding a video is provided. The apparatus comprises one or more processors operable to determine or derive a scanning path for scanning blocks or group of blocks of at least one part of a picture, among at least a raster scan order and a z-scan order, encode or decode the at least one part of the picture based on the scanning path.

[0010] In some embodiments, one or more indicators are signaled that are representative of the scanning path. For example, an indicator representative of a type of scanning path is signaled, an indicator representative of an order of the scanning path, an indicator representative of a first direction of the scanning path, or an indicator representative of a scanning path for subblocks inside a block.

[0011] Further embodiments that can be used alone or in combination are described herein. One or more embodiments also provide a computer program comprising instructions which when executed by one or more processors cause the one or more processors to perform the method for encoding or decoding a video according to any of the embodiments described herein. One or more of the present embodiments also provide a non-transitory computer readable medium and / or a computer readable storage medium having stored thereon instructions for encoding or decoding a video according to the methods described herein.

[0012] One or more embodiments also provide a computer readable storage medium having stored thereon a bitstream generated according to the methods described herein. One or more embodiments also provide a method and apparatus for transmitting or receiving the bitstream generated according to the methods described above.

[0013] BRIEF DESCRIPTION OF THE DRAWINGS

[0014] FIG. 1 illustrates a block diagram of a system within which aspects of the present embodiments may be implemented.

[0015] FIG. 2 illustrates a block diagram of an embodiment of a video encoder within which aspects of the present embodiments may be implemented.

[0016] FIG. 3 illustrates a block diagram of an embodiment of a video decoder within which aspects of the present embodiments may be implemented.

[0017] FIG. 4 illustrates an example of a raster scan of CTUs in a picture.

[0018] FIG. 5 illustrates an example of pre-defined FMO types in H.264 / AVC.

[0019] FIG. 6 illustrates an example of wavefront parallel processing (WPP) for a frame in HEVC.

[0020] FIG. 7 illustrates an example of a flowchart for encoding at least one part of a picture according to an embodiment.

[0021] FIG. 8 illustrates an example of a flowchart for decoding at least one part of a picture according to an embodiment.

[0022] FIG. 9 illustrates an examples of z-scanning path of CTUs according to an embodiment.

[0023] FIG. 10 illustrates another examples of z-scanning path of CTUs according to an embodiment. FIG. 1 1 illustrates an example of a method for decoding syntax elements representative of a scanning path of CTUs according to an embodiment.

[0024] FIG. 12 illustrates a block diagram of a system within which aspects of the present embodiments may be implemented, according to another embodiment.

[0025] FIG. 13 shows two remote devices communicating over a communication network in accordance with an example of the present principles.

[0026] FIG. 14 shows the syntax of a signal in accordance with an example of the present principles.

[0027] FIG. 15 illustrates an example of a partitioning of a part of an image.

[0028] FIG. 16 illustrates an example of possible partitioning of a CTU into several Blocks or CUs. DETAILED DESCRIPTION

[0029] This application describes a variety of aspects, including tools, features, embodiments, models, approaches, etc. Many of these aspects are described with specificity and, at least to show the individual characteristics, are often described in a manner that may sound limiting. However, this is for purposes of clarity in description, and does not limit the application or scope of those aspects. Indeed, all of the different aspects can be combined and interchanged to provide further aspects. Moreover, the aspects can be combined and interchanged with aspects described in earlier filings as well.

[0030] The aspects described and contemplated in this application can be implemented in many different forms. FIGs. 1 , 2 and 3 below provide some embodiments, but other embodiments are contemplated and the discussion of FIGs. 1 , 2 and 3 does not limit the breadth of the implementations. At least one of the aspects generally relates to video encoding and decoding, and at least one other aspect generally relates to transmitting a bitstream generated or encoded. These and other aspects can be implemented as a method, an apparatus, a computer readable storage medium having stored thereon instructions for encoding or decoding video data according to any of the methods described, and / or a computer readable storage medium having stored thereon a bitstream generated according to any of the methods described.

[0031] In the present application, the terms “reconstructed” and “decoded” may be used interchangeably, the terms “pixel” and “sample” may be used interchangeably, the terms “image,” “picture” and “frame” may be used interchangeably.

[0032] Various methods are described herein, and each of the methods comprises one or more steps or actions for achieving the described method. Unless a specific order of steps or actions is required for proper operation of the method, the order and / or use of specific steps and / or actions may be modified or combined. Additionally, terms such as “first”, “second”, etc. may be used in various embodiments to modify an element, component, step, operation, etc., such as, for example, a “first decoding” and a “second decoding”. Use of such terms does not imply an ordering to the modified operations unless specifically required. So, in this example, the first decoding need not be performed before the second decoding, and may occur, for example, before, during, or in an overlapping time period with the second decoding.

[0033] The present aspects are not limited to VVC or HEVC, and can be applied, for example, to other standards and recommendations, whether pre-existing or future-developed, and extensions of any such standards and recommendations (including VVC and HEVC). Unless indicated otherwise, or technically precluded, the aspects described in this application can be used individually or in combination. FIG. 1 illustrates a block diagram of an example of a system in which various aspects and embodiments can be implemented. System 100 may be embodied as a device including the various components described below and is configured to perform one or more of the aspects described in this application. 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 receivers, personal video recording systems, connected home appliances, and servers. Elements of system 100, singly or in combination, may be embodied in a single integrated circuit, multiple ICs, and / or discrete components. For example, in at least one embodiment, the processing and encoder / decoder elements of system 100 are distributed across multiple ICs and / or discrete components. In various embodiments, the system 100 is communicatively coupled to other systems, or to other electronic devices, via, for example, a communications bus or through dedicated input and / or output ports. In various embodiments, the system 100 is configured to implement one or more of the aspects described in this application.

[0034] The system 100 includes at least one processor 110 configured to execute instructions loaded therein for implementing, for example, the various aspects described in this application. Processor 110 may include embedded memory, input output interface, and various other circuitries as known in the art. The system 100 includes at least one memory 120 (e.g., a volatile memory device, and / or a non-volatile memory device). System 100 includes a storage device 140, which may include non-volatile memory and / or volatile memory, including, but not limited to, EEPROM, ROM, PROM, RAM, DRAM, SRAM, flash, magnetic disk drive, and / or optical disk drive. The storage device 140 may include an internal storage device, an attached storage device, and / or a network accessible storage device, as non-limiting examples.

[0035] System 100 includes an encoder / decoder module 130 configured, for example, to process data to provide an encoded video or decoded video, and the encoder / decoder module 130 may include its own processor and memory. The encoder / decoder module 130 represents module(s) that may be included in a device to perform the encoding and / or decoding functions. As is known, a device may include one or both of the encoding and decoding modules. Additionally, encoder / decoder module 130 may be implemented as a separate element of system 100 or may be incorporated within processor 1 10 as a combination of hardware and software as known to those skilled in the art.

[0036] Program code to be loaded onto processor 1 10 or encoder / decoder 130 to perform the various aspects described in this application may be stored in storage device 140 and subsequently loaded onto memory 120 for execution by processor 1 10. In accordance with various embodiments, one or more of processor 1 10, memory 120, storage device 140, and encoder / decoder module 130 may store one or more of various items during the performance of the processes described in this application. Such stored items may include, but are not limited to, the input video, the decoded video or portions of the decoded video, the bitstream, matrices, variables, and intermediate or final results from the processing of equations, formulas, operations, and operational logic.

[0037] In some embodiments, memory inside of the processor 110 and / or the encoder / decoder module 130 is used to store instructions and to provide working memory for processing that is needed during encoding or decoding. In other embodiments, however, a memory external to the processing device (for example, the processing device may be either the processor 1 10 or the encoder / decoder module 130) is used for one or more of these functions. The external memory may be the memory 120 and / or the storage device 140, for example, a dynamic volatile memory and / or a non-volatile flash memory. In several embodiments, an external non-volatile flash memory is used to store the operating system of a television. In at least one embodiment, a fast external dynamic volatile memory such as a RAM is used as working memory for video coding and decoding operations, such as for MPEG-2, HEVC (HEVC refers to High Efficiency Video Coding, also known as H.265 and MPEG-H Part 2), or VVC (Versatile Video Coding also known as H.266, standard developed by JVET, the Joint Video Experts Team).

[0038] The input to the elements of system 100 may be provided through various input devices as indicated in block 105. Such input devices include, but are not limited to, (i) a radio frequency (RF) portion that receives an RF signal transmitted, for example, over the air by a broadcaster, (ii) a Component (COMP) input terminal (or a 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. 1 , include composite video.

[0039] In various embodiments, the input devices of block 105 have associated respective input processing elements as known in the art. For example, the RF portion 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 band of frequencies), (ii) down converting the selected signal, (iii) band-limiting again to a narrower band of frequencies to select (for example) a signal frequency band which can be referred to as a channel in certain embodiments, (iv) demodulating the down converted and band-limited signal, (v) performing error correction, and (vi) demultiplexing to select the desired stream of data packets. The RF portion of various embodiments includes one or more elements to perform these functions, for example, frequency selectors, signal selectors, band-limiters, channel selectors, filters, downconverters, demodulators, error correctors, and demultiplexers. The RF portion may include a tuner that performs various of these functions, including, for example, down converting the received signal to a lower frequency (for example, an intermediate frequency or a near-baseband frequency) or to baseband. In one set-top box embodiment, the RF portion and its associated input processing element receives an RF signal transmitted over a wired (for example, cable) medium, and performs frequency selection by filtering, down converting, and filtering again to a desired frequency band. Various embodiments rearrange the order of the above-described (and other) elements, remove some of these elements, and / or add other elements performing similar or different functions. Adding elements may include inserting elements in between existing elements, for example, inserting amplifiers and an analog-to-digital converter. In various embodiments, the RF portion includes an antenna.

[0040] Additionally, the USB and / or HDMI terminals may include respective interface processors for connecting system 100 to other electronic devices across USB and / or HDMI connections. It is to be understood that various aspects of input processing, for example, Reed-Solomon error correction, may be implemented, for example, within a separate input processing IC or within processor 110 as necessary. Similarly, aspects of USB or HDMI interface processing may be implemented within separate interface ICs or within processor 1 10 as necessary. The demodulated, error corrected, and demultiplexed stream is provided to various processing elements, including, for example, processor 110, and encoder / decoder 130 operating in combination with the memory and storage elements to process the data stream as necessary for presentation on an output device.

[0041] Various elements of system 100 may be provided within an integrated housing, Within the integrated housing, the various elements may be interconnected and transmit data therebetween using suitable connection arrangement 115, for example, an internal bus as known in the art, including the I2C bus, wiring, and printed circuit boards.

[0042] The system 100 includes communication interface 150 that enables communication with other devices via communication channel 190. The communication interface 150 may include, but is not limited to, a transceiver configured to transmit and to receive data over communication channel 190. The communication interface 150 may include, but is not limited to, a modem or network card and the communication channel 190 may be implemented, for example, within a wired and / or a wireless medium.

[0043] Data is streamed to the system 100, in various embodiments, using a Wi-Fi network such as IEEE 802.11 (IEEE refers to the Institute of Electrical and Electronics Engineers). The Wi-Fi signal of these embodiments is received over the communications channel 190 and the communications interface 150 which are adapted for Wi-Fi communications. The communications channel 190 of these embodiments is typically connected to an access point or router that provides access to outside networks including the Internet for allowing streaming applications and other over-the-top communications. Other embodiments provide streamed data to the system 100 using a set-top box that delivers the data over the HDMI connection of the input block 105. Still other embodiments provide streamed data to the system 100 using the RF connection of the input block 105. As indicated above, various embodiments provide data in a non-streaming manner. Additionally, various embodiments use wireless networks other than Wi-Fi, for example a cellular network or a Bluetooth network.

[0044] The system 100 may provide an output signal to various output devices, including a display 165, speakers 175, and other peripheral devices 185. The display 165 of various embodiments includes one or more of, for example, a touchscreen display, an organic lightemitting diode (OLED) display, a curved display, and / or a foldable display. The display 165 can be for a television, a tablet, a laptop, a cell phone (mobile phone), or other device. The display 165 can also be integrated with other components (for example, as in a smart phone), or separate (for example, an external monitor for a laptop). The other peripheral devices 185 include, in various examples of embodiments, one or more of a stand-alone digital video disc (or digital versatile disc) (DVR, for both terms), a disk player, a stereo system, and / or a lighting system. Various embodiments use one or more peripheral devices 185 that provide a function based on the output of the system 100. For example, a disk player performs the function of playing the output of the system 100.

[0045] In various embodiments, control signals are communicated between the system 100 and the display 165, speakers 175, or other peripheral devices 185 using signaling such as AV.Link, CEC, or other communications protocols that enable device-to-device control with or without user intervention. The output devices may be communicatively coupled to system 100 via dedicated connections through respective interfaces 160, 170, and 180. Alternatively, the output devices may be connected to system 100 using the communications channel 190 via the communications interface 150. The display 165 and speakers 175 may be integrated in a single unit with the other components of system 100 in an electronic device, for example, a television. In various embodiments, the display interface 160 includes a display driver, for example, a timing controller (T Con) chip.

[0046] The display 165 and speaker 175 may alternatively be separate from one or more of the other components, for example, if the RF portion of input 105 is part of a separate set-top box. In various embodiments in which the display 165 and speakers 175 are external components, the output signal may be provided via dedicated output connections, including, for example, HDMI ports, USB ports, or COMP outputs.

[0047] The embodiments can be carried out by computer software implemented by the processor 1 10 or by hardware, or by a combination of hardware and software. As a non-limiting example, the embodiments can be implemented by one or more integrated circuits. The memory 120 can be of any type appropriate to the technical environment and can be implemented using any appropriate data storage technology, such as optical memory devices, magnetic memory devices, semiconductor-based memory devices, fixed memory, and removable memory, as non-limiting examples. The processor 1 10 can be of any type appropriate to the technical environment, and can encompass one or more of microprocessors, general purpose computers, special purpose computers, and processors based on a multi-core architecture, as non-limiting examples.

[0048] FIG. 2 illustrates an example of a block-based hybrid video encoder 200. Variations of this encoder 200 are contemplated, but the encoder 200 is described below for purposes of clarity without describing all expected variations.

[0049] In some embodiments, FIG. 2 also illustrate an encoder in which improvements are made to the HEVC standard or a VVC standard Versatile Video Coding, Standard ITU-T H.266, ISO / IEC 23090-3, 2020) or an encoder employing technologies similar to HEVC or VVC, such as an encoder ECM under development by JVET (Joint Video Exploration Team).

[0050] Before being encoded, the video sequence may go through pre-encoding processing (201 ), for example, applying a color transform to the input color picture (e.g., conversion from RGB 4:4:4 to YCbCr 4:2:0), or performing a remapping of the input picture components in order to get a signal distribution more resilient to compression (for instance using a histogram equalization of color components), or re-sizing the picture (ex: down-scaling). Metadata can be associated with the pre-processing, and attached to the bitstream.

[0051] In the encoder 200, a picture is encoded by the encoder elements as described below. The picture to be encoded is partitioned (202) and processed in units of, for example, CUs (Coding units) or blocks. In the disclosure, different expressions may be used to refer to such a unit or block resulting from a partitioning of the picture. Such wording may be coding unit or CU, coding block or CB, luminance CB, or block. A CTU (Coding Tree Unit) refers to a group of blocks or group of units or group of coding units (CUs). In some embodiments, a CTU may be considered as a block, or a unit as itself. An example of a partitioning using CTUs and CUs is illustrates on FIG. 15.

[0052] For example in VVC, as in HEVC, a picture is partitioned into multiple non-overlapping CTUs. A CTU size in VVC can be set up to 128 x 128 or 256 x 256 in units of luma samples, while in HEVC, it can be set up to 64 x 64. In HEVC, a recursive Quad-tree (QT) split can be applied to each CTU, resulting in one or multiple CUs, all having square shapes. In VVC, rectangular CUs are supported together with square CUs. A binary tree (BT) split and a ternary tree (TT) split are also adopted in VVC. FIG. 16 illustrates some examples of partitioning of a CTU. Further splitting of the obtained CUs are also possible.

[0053] Each unit is encoded using, for example, either an intra or inter mode. When a unit is encoded in an intra mode, it performs intra prediction (260). In an inter mode, motion estimation (275) and compensation (270) are performed. The encoder decides (205) which one of the intra mode or inter mode to use for encoding the unit, and indicates the intra / inter decision by, for example, a prediction mode flag. The encoder may also blend (263) intra prediction result and inter prediction result, or blend results from different intra / inter prediction methods. Prediction residuals are calculated, for example, by subtracting (210) the predicted block from the original image block.

[0054] The motion refinement module (272) uses already available reference picture in order to refine the motion field of a block without reference to the original block. A motion field for a region can be considered as a collection of motion vectors for all pixels with the region. If the motion vectors are sub-block-based, the motion field can also be represented as the collection of all sub-block motion vectors in the region (all pixels within a sub-block has the same motion vector, and the motion vectors may vary from sub-block to sub-block). If a single motion vector is used for the region, the motion field for the region can also be represented by the single motion vector (same motion vectors for all pixels in the region).

[0055] The prediction residuals are then transformed (225) and quantized (230). The quantized transform coefficients, as well as motion vectors and other syntax elements, are entropy coded (245) to output a bitstream. The encoder can skip the transform and apply quantization directly to the non-transformed residual signal. The encoder can bypass both transform and quantization, i.e., the residual is coded directly without the application of the transform or quantization processes.

[0056] The encoder decodes an encoded block to provide a reference for further predictions. The quantized transform coefficients are de-quantized (240) and inverse transformed (250) to decode prediction residuals. Combining (255) the decoded prediction residuals and the predicted block, an image block is reconstructed. In-loop filters (265) are applied to the reconstructed picture to perform, for example, deblocking / SAO (Sample Adaptive Offset) filtering to reduce encoding artifacts. The filtered image is stored at a reference picture buffer (280).

[0057] FIG. 3 illustrates a block diagram of a video decoder 300. In the decoder 300, a bitstream is decoded by the decoder elements as described below. Video decoder 300 generally performs a decoding pass reciprocal to the encoding pass as described in FIG. 2. The encoder 200 also generally performs video decoding as part of encoding video data.

[0058] In particular, the input of the decoder includes a video bitstream, which can be generated by video encoder 200. The bitstream is first entropy decoded (330) to obtain transform coefficients, motion vectors, and other coded information. The picture partition information indicates how the picture is partitioned. The decoder may therefore divide (335) the picture according to the decoded picture partitioning information. The transform coefficients are dequantized (340) and inverse transformed (350) to decode the prediction residuals. Combining (355) the decoded prediction residuals and the predicted block, an image block is reconstructed.

[0059] The predicted block can be obtained (370) from intra prediction (360) or motion-compensated prediction (i.e., inter prediction) (375). The decoder may blend (373) the intra prediction result and inter prediction result, or blend results from multiple intra / inter prediction methods. Before motion compensation, the motion field may be refined (372) by using already available reference pictures. In-loop filters (365) are applied to the reconstructed image. The filtered image is stored at a reference picture buffer (380).

[0060] The decoded picture can further go through post-decoding processing (385), for example, an inverse color transform (e.g. conversion from YCbCr 4:2:0 to RGB 4:4:4) or an inverse remapping performing the inverse of the remapping process performed in the pre-encoding processing (201 ), or re-sizing the reconstructed pictures (ex: up-scaling). The post-decoding processing can use metadata derived in the pre-encoding processing and signaled in the bitstream.

[0061] Some of the embodiments described herein relates to scanning path of blocks, groups of blocks or CTUs in at least one part of an image. In the following, the scanning path may also be referred as scanning path.

[0062] Any one of the embodiments described herein can be implemented for instance in an image partitioning module of a video encoder or video decoder. For instance, the embodiments described herein can be implemented in the image partitioning module 202 of the video encoder 200 or the image partitioning module 335 of the video decoder 300.

[0063] In traditional video codecs, such as VVC or HEVC, the Coding Tree Units (CTUs) are processed in a raster scan order in the frame / picture (or slice), normally left to right, beginning at the top as depicted in FIG. 4. Similarly, the Coding Units (CUs) within the CTU are processed in a raster scan order too.

[0064] Flexible Macroblock Ordering (FMO)

[0065] Flexible Macroblock Ordering (FMO) is one of several error resilience tools defined in the Baseline profile of the H.264 / AVC standard. Flexible Macroblock Ordering enhances this by allowing macroblocks to be grouped and sent in different direction and order, and can be used to create shaped and non-contiguous slice groups. Six built-in patterns defined in the specification, can be signaled in the bitstream (J. Panyavaraporn and S. Aramvith, “One-pass Explicit FMO Map Generation for H.264 / AVC Wireless Video Transmission,” APSIPA ASC 2010 Conference, Dec. 14-17, 2010) as depicted in FIG. 5:

[0066] Type 0 (interleave): uses run lengths which are repeated to fill the frame. Therefore, only those run lengths have to be known to rebuild the image on the decoder side.

[0067] Type 1 (dispersed): also known as scattered slices; it uses a mathematical function, which is known in both the encoder and the decoder, to spread the macroblocks. The distribution in the figure, in which the macroblocks are spread forming a chess board, is very common.

[0068] Type 2 (foreground and Background): is used to mark rectangular areas, so called regions of interest. In this case the coordinates top-left and bottom-right of the rectangles is saved in the MBAmap.

[0069] Type 3-5 (Box-out, Raster and Wipe): are dynamic types that let the slice groups grow and shrink over the different pictures in a cyclic way. Only the growth rate, the direction and the position in the cycle have to be known.

[0070] Type 6 (Explicit): is the most random one and allows full flexibility to the user. All the other ones contain a certain pattern. In type 6, the ordered list of macroblocks is signaled in the bitstream so that the decoder knowns the decoding order of the macroblocks in the picture.

[0071] Wavefront parallel processing in HEVC

[0072] Wavefront parallel processing (WPP) enables parallel encoding and decoding as illustrated in FIG. 6. WPP consists of resetting the CABAC probabilities of the first CTLI in each line with the probabilities obtained after processing the second CTU of the line above (P. Bordes, G. Clare, F. Henry, M.Raulet, J. Vieron, “An overview of the emerging HEVC standard," Conference: International Symposium on signal, Image, Video and Communications (ISIVC 2012)). Otherwise, all inter-block dependencies are maintained. Thus, parallel encoding and decoding is possible with moderate BD-rate degradation (around 1 .0% compared to a non-parallel friendly bitstream in random access configuration). CABAC encoding is flushed after the last CTU of each row, making the bitstream representing each row of CTU accessible using entry point defined in the slice header. Thus, it is possible to use any number of cores between one and the number of CTU rows in the frame in the decoder or in the encoder.

[0073] The regular raster scan of CTUs / CUs results in a severe penalty on rate distortion performance when using slices, due to the breaking of all dependencies at their boundaries. On one hand, the WPP partially reduces entropy model discontinuity, but some discontinuities in other spatially dependent coding features (texture, coding parameters, history-based mode coding, etc...) are still remaining because of the drastically change of neighborhood at the end of slice.

[0074] On the other hand, the FMO types 3-5 may ensure neighborhood continuity inside current slice, but the regular directional intra modes using reconstructed left or top samples to predict current samples, should be re-designed to support prediction from right or bottom.

[0075] In some embodiments, a method for encoding or decoding at least one part of a picture is provided wherein the methods support z-scan of CTUs (and eventually CUs) to leverage the benefit of continuous entropy model context and graceful / smooth spatial features neighborhood change.

[0076] FIG. 7 illustrates an example of a flowchart for encoding (700) at least one part of a picture according to an embodiment. The at least one part of the picture can be a slice, a tile or the whole picture itself. The part of the picture is partitioned into blocks which can be themselves split into subblocks. For example, a block is a CTU or a CU as described above. At 710, for the at least one part of the picture, a scanning path is determined for scanning blocks or groups of blocks of the at least one part of the picture. In a preferred embodiment, the scanning path is determined among at least a raster scan order and a z-scan order. Other scanning path can also be defined. At 720, the at least one part of the picture is encoded using the scanning path determined at 710. In other words, once the at least one part of the picture has been partitioned into blocks or groups of blocks, the blocks or groups of blocks of the at least one part of the picture are scanned following the determined scanning path. For example, if the scanning path determined at 710 is a z-scan order with a starting point at a top left block and an horizontal first direction, the blocks or groups of blocks are scanned using the scanning path as illustrated on FIG. 9 (a). The at least one part of the picture is parsed following the determined scanning path and blocks or groups of blocks are encoded following the order provided by the determined the scanning path.

[0077] Depending on the encoder implementation, parallel encoding can also be used for encoding the blocks or groups of blocks in a same manner as when a raster scan is used for parsing a picture but following the z-scan order.

[0078] Example of variants for determining the scanning path at the encoder are described further below.

[0079] In some embodiments, an information indicating the determined scanning path is signaled in a bitstream along with coded data representative of the at least one part of the picture so that the decoder applies the same scanning path.

[0080] In a variant, the scanning path is determined only for a pre-determined picture or slice type “typeX”. For example, the scanning path is determined only for intra slices. The other type of pictures or slices of the group of pictures thus uses the same determined scanning path or a default scanning path, for example the raster scan.

[0081] FIG. 8 illustrates an example of a flowchart for decoding (800) at least one part of a picture according to an embodiment. For example, the at least one part of the picture has been encoded using any one of the embodiments described with the method 700 in FIG. 7. At 810, a scanning path is derived for scanning the blocks or groups of blocks of the at least one part of the picture, for example among at least a raster scan order and a z-scan order. In an embodiment, the scanning path is derived by decoding an information indicating the scanning path for the at least one part of the picture. For example, the information indicates a type of scan path among a raster scan or a z-scan. For example, a flag is signaled to the decoder to indicate whether the at least one part of the picture is encoded using a raster scan order or a z-scan order. In a variant, when other possible scan paths are possible, more than one flag can be used for signaling the scanning path.

[0082] In other variants, more flexibility on the scanning path can be provided by signaling other information defining the scanning path. For example, an order for the scan path is signaled. In this variant, the type of scan path can be fixed and known to the decoder or it can also be signaled to the decoder. The order defines how the scanning of the blocks progress among the blocks. That is four orders are possible: left to right and top to bottom, right to left and top to bottom, left to right and bottom to top and right to left and bottom to top. The order is implicitly representative of the starting point of the scanning path. For example, for a square or a rectangular part of a picture, 4 starting points can be used: a block at the top left corner, a block at the top right corner, a block at the bottom left corner, or a block at the bottom right corner. In some variants, only a subset of the starting points or a subset of orders can be used. In another variant, a first direction for the scan path is signaled. The first direction indicates whether after a scan of the first block, the next block that is scanned is the block following the first block in the horizontal direction or in the vertical direction. In this variant, the type of the scan path can be fixed and known to the decoder or it can also be signaled to the decoder. Also, the order or starting point can be fixed and known to the decoder (for instance the top left block) or it can be signaled to the decoder.

[0083] In other variants, any of the variants above can be combined. A same signaling can be used to indicate the above information, for example using an index and a mapping table or separate syntax elements can be used.

[0084] In another embodiment, for picture or slice’s type other than ’’typeX”, the scanning path is derived from the scanning path used for a picture of “typeX” of the same group of pictures for which it has been signaled for example. For example, typeX indicates an I picture..

[0085] At 820, the at least one part of the picture is decoded and reconstructed using the scanning path determined at 810. That is the blocks or groups of blocks of the at least one part of the picture are decoded and reconstructed following the scanning path derived at 810. Here again, depending on the decoder implementation, parallel decoding is still possible for decoding the blocks or groups of blocks.

[0086] Example of different scanning paths of blocks are presented below in the case of CTUs scanning, but these embodiments can also apply for scanning blocks of a part of an image (ex: a slice or a tile). In one embodiment, one may use z-scanning path for scanning the CTUs of the picture or slice as depicted in examples of FIG. 9, wherein (a) shows a z scan order with an horizontal direction first and (b) shows a z scan order with a vertical direction first.

[0087] The choice of the scanning path (ex: raster scan or z-scan) may be coded in the bitstream. It may vary per sequence, per picture, per slice / tile or group of CTUs for instance.

[0088] One advantage is that the regular directional (or planar) intra prediction modes using reconstructed above or left samples for predicting the CUs coded intra can remain unchanged. The reconstructed samples used for the CU intra prediction depends on the availability of the reconstructed samples as for regular coding.

[0089] In a variant, the scanning path of the CUs inside the CTU may be raster scan, whatever the CTU scanning path is.

[0090] In another variant, the scanning path of the CUs inside the CTU may be z-scan or raster scan, it may be same or different from the scanning path used for scanning the CTUs. Then in a variant, the CU scanning path inside the CTU may be coded per CTU or per group of CTU (ex: per slice). In another variant, the flexible scanning path may apply for some slice types only (ex: slice-1 only).

[0091] In a variant embodiment, further z-scanning paths can also be used. These z-scanning paths can be defined by scan orders different from the one used in FIG. 9. One may use z- scanning order from right-to-left and top-to-bottom (FIG. 10 c and d) for scanning the CTUs of the picture or slice. In this case, the two possible z-scanning orders from right-to-left and top- to-bottom may be obtained by flipping with respect to the vertical axis the two z-scanning orders depicted in FIG. 9. Other variants are also described in FIG. 10.

[0092] In a variant embodiment, one may use z-scanning order from left-to-right and bottom-to-top (ex: FIG. 10 e and f) for scanning the CTUs of the picture or slice. In this case, the two possible z-scanning orders from left-to-right and bottom-to-top may be obtained by flipping with respect to the horizontal axis the two z-scanning orders detailed in FIG. 9.

[0093] In a variant embodiment, one may use z-scanning order from right-to-left and bottom-to-top (ex: FIG. 10 a and b) for scanning the CTUs of the picture or slice. In this case, the two possible z-scanning orders from right-to-left and bottom-to-top may be obtained by flipping with respect to the horizontal axis then flipping with respect to the vertical axis the two z-scanning orders described in FIG. 9.

[0094] For each of the variant embodiments described in FIG. 10, the intra / inter prediction tools in the used codec may be adapted accordingly. For example, reconstructed samples that are used by the intra or inter prediction tools can be obtained by flipping or mirroring the available reconstructed samples. For example, for intra prediction, either the intra prediction directions can be flipped or mirrored with respect to an horizontal and / or vertical axis or the bottom and right reconstructed samples can be mirrored or flipped with respect to horizontal and vertical axis to provide reconstructed samples above and to the left of a current block. Similar adaptations can be used for inter prediction.

[0095] Any of the embodiments described above may be combined with one another. For instance, in an exemplar combination, 12 scanning paths of the CTUs may be possible:

[0096] Two z-scanning orders of the CTUs from left-to-right and top-to-bottom, e.g. as shown in FIG. 9,

[0097] Two z-scanning orders of the CTUs from right-to-left and top-to-bottom, e.g. by flipping with respect to the vertical axis the two z-scanning orders in FIG. 10 c, d,

[0098] Two z-scanning orders of the CTUs from left-to-right and bottom-to-top, e.g. by flipping with respect to the horizontal axis the two z-scanning orders in FIG. 10 e, f,

[0099] Two z-scanning orders of the CTUs from right-to-left and bottom-to-top, e.g. by flipping with respect to the horizontal axis then flipping with respect to the vertical axis the two z- scanning orders in FIG. 10 a, b,

[0100] Four raster-scan orders of the CTUs, from left-to-right and top-to-bottom, right-to-left and top-to-bottom, left-to-right and bottom-to-top, and right-to-left and bottom-to-top respectively.

[0101] In a given frame, for a given tile, the choice of the scanning path of the CTUs may be coded in the bitstream, using a truncated binary code of length 12 for example.

[0102] Alternatively, in this exemplar combination of embodiments, any other tool for coding the chosen scanning path of the CTUs may be used.

[0103] As an example, the choice between the three types of CTUs scanning, i.e. the two z-scans in FIG. 9 and the raster-scan, may be entropy coded whereas the selected order of the scan, i.e. either {left-to-right and top-to-bottom} or {right-to-left and top-to-bottom} or {left-to-right and bottom-to-top} or {right-to-left and bottom-to-top}, may be fixed length coded.

[0104] For instance, a first CABAC context coded flag may be signaled to choose between the pair of z-scans and the raster-scan. Then, if the first CABAC context coded flag indicates that the raster-scan is not selected, a second CABAC context coded flag may be signaled to choose between the two z-scans in FIG. 10. Finally, a fixed-length code of length 4 may encode the retained order of the scan. For instance, the signaling 1 100 of the scanning order path of the CTUs according to this examples of combination of embodiments may be illustrated as in FIG. 1 1.

[0105] At 1 110, the decoding of the scanning path of the CTUs in the current tile of the current slice begins. At 1 120, the two CABAC context coded flags isRasterScan and isZScanHorizontallyFirsl may be, if needed, read from the bitstream, e.g. following the shown decision tree. For example, isRasterScan=O means that the type of CTU scanning is raster scan. In this case, isRasterScan=1 indicates that the type of CTU scanning belong to the pair of two z-scans. isZScanHorizontallyFirst indicates which direction (horizontal or vertical) is used first by the scanning path. For example isZScanHorizontallyFirst=0 means that the selected scanning path of CTUs follows the pattern of the leftmost z-scan shown in FIG. 9, which means that the CTU of index 1 is either on the left side or on the right side of the CTU of index 0. isZScanHorizontallyFirst=1 means that the selected scanning path of the CTUs follows the pattern of the rightmost z-scan presented in FIG. 9, which means that the CTU of index 1 is either above or below the CTU of index 0.

[0106] At 1130, the order orderD is read from the bitstream via for example a truncated binary code of length 4. For example, orderD=0 means an order from left-to-right and top-to-bottom, orderD=1 means an order from right-to-left and top-to-bottom, orderD=2 means an order from left-to-right and bottom-to-top and orderD=3 means an order from right-to-left and bottom-to- top. The orderD is also indicative of a starting point of the scanning path.

[0107] At 1140, the scanning path of the CTUs in the current tile of the current slice is then deduced from isRasterScan, isZScanHorizontallyFirst, and orderD. Then, the process may end.

[0108] Embodiments for deriving scanning path of the CTUs at the encoder side are described below. The scanning path may be derived at the encoder using N-pass encoder (one pass per scanning path), the encoding pass providing the best rate-distortion trade-off may be selected.

[0109] In a variant embodiment, in the original video sequence, each frame may be either spatially subsampled or down-sampled via a given down-sampling filter. Then, the scanning path may be derived at the encoder using N-pass encoder (one pass per scanning path) applied to the subsampled / down-sampled original video sequence, the pass with the best ratedistortion trade-off may be retained. Finally, the scanning path with the best rate-distortion trade-off may be used for encoding the original video sequence. For instance, the subsampling / down-sampling factor may equal to 2. For instance, any subsampling / down- sampling factor may be used instead.

[0110] In a variant, one may define a set of F features { fi }i=0,..F that can be measured on the original CTU samples, and a set of corresponding F distances functions { disti }i=0,..F ■ The value of disti( fi(m), fi(n) ) may be the distance between the ithfeature of CTU(m) and the ithfeature of CTU(n), where m,n are the indexes of the two CTUs. The overall distance between the two CTUs may be:

[0111] For each CTU with index ‘x’, one may compute the sum of the distance with the last ‘n’ CTUs in the scanning path S:

[0112] The overall discontinuity with respect of the F features for the scanning path S may be given as the sum of all the cumulated distances for all the CTUs in the slice:

[0113] For example, the features may be at least one of:

[0114] • Average luminance (and chrominance) in the CTLI

[0115] • Value of some coefficients transform (ex: DCT) of the original samples in the CTLI

[0116] • Activity and / or oriented gradients in the CTU

[0117] • Continuity in-between CTU frontiers

[0118] In a variant embodiment, any of the embodiments presented above may apply to the first I- slice of each GOP exclusively. For instance, in a given original video sequence, for the first I- slice of each GOP exclusively, first the path for scanning the CTUs may be derived at the encoder using N-pass encoder (one pass per scanning path), then the pass with the best ratedistortion trade-off may be selected, finally, this l-slice may be encoded using the scanning path associated to the best rate-distortion trade-off.

[0119] In some variants, the scanning path for the other pictures of the GOP can be the scanning path determined for the first l-slice or it can be a default scanning path, for instance a raster scan as used in VVC.

[0120] FIG. 12 illustrates a block diagram of a system within which aspects of the present embodiments may be implemented, according to another embodiment. FIG. 12 shows one embodiment of an apparatus 1200 for encoding or decoding a video according to any one of the embodiments described herein. The apparatus comprises Processor 1210 and can be interconnected to a memory 1220 through at least one port. Both Processor 1210 and memory 1220 can also have one or more additional interconnections to external connections.

[0121] Processor 1210 is also configured to, using any one of the embodiments described herein. For instance, the processor 11 10 is configured to determine a scanning path for scanning blocks of at least one part of a picture, among at least a raster scan order and a z-scan order, encode the at least one part of the picture based on the scanning path, using any one of the embodiments described herein. For instance, the processor 1210 using a computer program product comprising code instructions that implements any one of embodiments described herein. In other embodiments, Processor 1210 is configured to determine a scanning path for scanning blocks of at least one part of a picture, among at least a raster scan order and a z- scan order, decode the at least one part of the picture based on the scanning path, using any one of the embodiments described herein. For instance, the processor 1210 is configured using a computer program product comprising code instructions that implements any one of embodiments described herein.

[0122] In an embodiment, illustrated in FIG. 13, in a transmission context between two remote devices A and B over a communication network NET, the device A comprises a processor in relation with memory RAM and ROM which are configured to implement a method for encoding a video, as described with FIG. 1 -12 and the device B comprises a processor in relation with memory RAM and ROM which are configured to implement a method for decoding a video as described in relation with FIG 1 -12. In accordance with an example, the network is a broadcast network, adapted to broadcast / transmit a coded video from device A to decoding devices including the device B.

[0123] FIG. 14 shows an example of the syntax of a signal transmitted over a packet-based transmission protocol. Each transmitted packet P comprises a header H and a payload PAYLOAD. In some embodiments, the payload PAYLOAD may comprise video data encoded according to any one of the embodiments described above. The payload can also comprise any signaling as described above. For example, the payload can comprise one or more indicators representative of at least one of a scanning path. In some variants, the scanning path can be defined by one or more of: an indicator representative of a type of the scanning path, an indicator representative of an order of the scanning path, an indicator representative of a first direction of the scanning path, or an indicator representative of a scanning path for subblocks inside a block. These indicators can be signaled at different level in video data payload. For example, they can be signaled per slice, per tile, or at a picture level, at group of picture level (PPS) or at a sequence level (SPS). The scanning path for the subblocks inside a block or for the blocks inside a group of blocks (CTU) can be signaled per block or group of blocks (CTU), per slice, per tile, or at a picture level, at group of picture level (PPS) or at a sequence level (SPS).

[0124] Various implementations involve decoding. “Decoding”, as used in this application, can encompass all or part of the processes performed, for example, on a received encoded sequence in order to produce a final output suitable for display. In various embodiments, such processes include one or more of the processes typically performed by a decoder, for example, entropy decoding, inverse quantization, inverse transformation, and differential decoding. In various embodiments, such processes also, or alternatively, include processes performed by a decoder of various implementations described in this application, for example, entropy decoding a sequence of binary symbols to reconstruct image or video data.

[0125] As further examples, in one embodiment “decoding” refers only to entropy decoding, in another embodiment “decoding” refers only to differential decoding, and in another embodiment “decoding” refers to a combination of entropy decoding and differential decoding, and in another embodiment “decoding” refers to the whole reconstructing picture process including entropy decoding. Whether the phrase “decoding process” is intended to refer specifically to a subset of operations or generally to the broader decoding process will be clear based on the context of the specific descriptions and is believed to be well understood by those skilled in the art.

[0126] Various implementations involve encoding. In an analogous way to the above discussion about “decoding”, “encoding” as used in this application can encompass all or part of the processes performed, for example, on an input video sequence in order to produce an encoded bitstream. In various embodiments, such processes include one or more of the processes typically performed by an encoder, for example, partitioning, differential encoding, transformation, quantization, and entropy encoding. In various embodiments, such processes also, or alternatively, include processes performed by an encoder of various implementations described in this application, for example, determining re-sampling filter coefficients, resampling a decoded picture.

[0127] As further examples, in one embodiment “encoding” refers only to entropy encoding, in another embodiment “encoding” refers only to differential encoding, and in another embodiment “encoding” refers to a combination of differential encoding and entropy encoding. Whether the phrase “encoding process” is intended to refer specifically to a subset of operations or generally to the broader encoding process will be clear based on the context of the specific descriptions and is believed to be well understood by those skilled in the art.

[0128] Note that the syntax elements as used herein, are descriptive terms. As such, they do not preclude the use of other syntax element names.

[0129] This disclosure has described various pieces of information, such as for example syntax, that can be transmitted or stored, for example. This information can be packaged or arranged in a variety of manners, including for example manners common in video standards such as putting the information into an SPS, a PPS, a NAL unit, a header (for example, a NAL unit header, picture header or a slice header), or an SEI message. Other manners are also available, including for example manners common for system level or application level standards such as putting the information into one or more of the following: a. SDP (session description protocol), a format for describing multimedia communication sessions for the purposes of session announcement and session invitation, for example as described in RFCs and used in conjunction with RTP (Real-time Transport Protocol) transmission. b. DASH MPD (Media Presentation Description) Descriptors, for example as used in DASH and transmitted over HTTP, a Descriptor is associated to a Representation or collection of Representations to provide additional characteristic to the content Representation. c. RTP header extensions, for example as used during RTP streaming. d. ISO Base Media File Format, for example as used in OMAF and using boxes which are object-oriented building blocks defined by a unique type identifier and length also known as 'atoms' in some specifications. e. HLS (HTTP live Streaming) manifest transmitted over HTTP. A manifest can be associated, for example, to a version or collection of versions of a content to provide characteristics of the version or collection of versions.

[0130] When a figure is presented as a flow diagram, it should be understood that it also provides a block diagram of a corresponding apparatus. Similarly, when a figure is presented as a block diagram, it should be understood that it also provides a flow diagram of a corresponding method / process.

[0131] Some embodiments refer to rate distortion optimization. In particular, during the encoding process, the balance or trade-off between the rate and distortion is usually considered, often given the constraints of computational complexity. The rate distortion optimization is usually formulated as minimizing a rate distortion function, which is a weighted sum of the rate and of the distortion. There are different approaches to solve the rate distortion optimization problem. For example, the approaches may be based on an extensive testing of all encoding options, including all considered modes or coding parameters values, with a complete evaluation of their coding cost and related distortion of the reconstructed signal after coding and decoding. Faster approaches may also be used, to save encoding complexity, in particular with computation of an approximated distortion based on the prediction or the prediction residual signal, not the reconstructed one. Mix of these two approaches can also be used, such as by using an approximated distortion for only some of the possible encoding options, and a complete distortion for other encoding options. Other approaches only evaluate a subset of the possible encoding options. More generally, many approaches employ any of a variety of techniques to perform the optimization, but the optimization is not necessarily a complete evaluation of both the coding cost and related distortion.

[0132] The implementations and aspects described herein can be implemented in, for example, a method or a process, an apparatus, a software program, a data stream, or a signal. Even if only discussed in the context of a single form of implementation (for example, discussed only as a method), the implementation of features discussed can also be implemented in other forms (for example, an apparatus or program). An apparatus can be implemented in, for example, appropriate hardware, software, and firmware. The methods can be implemented in, for example, a processor, which refers to processing devices in general, including, for example, a computer, a microprocessor, an integrated circuit, or a programmable logic device. Processors also include communication devices, such as, for example, computers, cell phones, portable / personal digital assistants ("PDAs"), and other devices that facilitate communication of information between end-users.

[0133] Reference to “one embodiment” or “an embodiment” or “one implementation” or “an implementation”, as well as other variations thereof, means that a particular feature, structure, characteristic, and so forth described in connection with the embodiment is included in at least one embodiment. Thus, the appearances of the phrase “in one embodiment” or “in an embodiment” or “in one implementation” or “in an implementation”, as well any other variations, appearing in various places throughout this application are not necessarily all referring to the same embodiment.

[0134] Additionally, this application may refer to “determining” various pieces of information. Determining the information can include one or more of, for example, estimating the information, calculating the information, predicting the information, or retrieving the information from memory.

[0135] Further, this application may refer to “accessing” various pieces of information. Accessing the information can include one or more of, for example, receiving the information, retrieving the information (for example, from memory), storing the information, moving the information, copying the information, calculating the information, determining the information, predicting the information, or estimating the information.

[0136] Additionally, this application may refer to “receiving” various pieces of information. Receiving is, as with “accessing”, intended to be a broad term. Receiving the information can include one or more of, for example, accessing the information, or retrieving the information (for example, from memory). Further, “receiving” is typically involved, in one way or another, during operations such as, for example, storing the information, processing the information, transmitting the information, moving the information, copying the information, erasing the information, calculating the information, determining the information, predicting the information, or estimating the information.

[0137] It is to be appreciated that the use of any of the following “and / or”, and “at least one of”, for example, in the cases of “A / B”, “A and / or B” and “at least one of A and B”, is intended to encompass the selection of the first listed option (A) only, or the selection of the second listed option (B) only, or the selection of both options (A and B). As a further example, in the cases of “A, B, and / or C” and “at least one of A, B, and C”, such phrasing is intended to encompass the selection of the first listed option (A) only, or the selection of the second listed option (B) only, or the selection of the third listed option (C) only, or the selection of the first and the second listed options (A and B) only, or the selection of the first and third listed options (A and C) only, or the selection of the second and third listed options (B and C) only, or the selection of all three options (A and B and C). This may be extended, as is clear to one of ordinary skill in this and related arts, for as many items as are listed.

[0138] Also, as used herein, the word “signal” refers to, among other things, indicating something to a corresponding decoder. In this way, in an embodiment the same parameter is used at both the encoder side and the decoder side. Thus, for example, an encoder can transmit (explicit signaling) a particular parameter to the decoder so that the decoder can use the same particular parameter. Conversely, if the decoder already has the particular parameter as well as others, then signaling can be used without transmitting (implicit signaling) to simply allow the decoder to know and select the particular parameter. By avoiding transmission of any actual functions, a bit savings is realized in various embodiments. It is to be appreciated that signaling can be accomplished in a variety of ways. For example, one or more syntax elements, flags, and so forth are used to signal information to a corresponding decoder in various embodiments. While the preceding relates to the verb form of the word “signal”, the word “signal” can also be used herein as a noun.

[0139] As will be evident to one of ordinary skill in the art, implementations can produce a variety of signals formatted to carry information that can be, for example, stored or transmitted. 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 the bitstream of a described embodiment. Such a signal can be formatted, for example, as an electromagnetic wave (for example, using a radio frequency portion of spectrum) or as a baseband signal. The formatting can include, for example, encoding a data stream and modulating a carrier with the encoded data stream. The information that the signal carries can be, for example, analog or digital information. The signal can be transmitted over a variety of different wired or wireless links, as is known. The signal can be stored on a processor- readable medium.

[0140] A number of embodiments has been described above. Features of these embodiments can be provided alone or in any combination, across various claim categories and types.

Claims

CLAIMS1 . A method, comprising: deriving a scanning path for scanning blocks of at least one part of a picture, among at least a raster scan order and a z-scan order, decoding the at least one part of the picture based on the scanning path.

2. An apparatus, comprising one or more processors, wherein said one or more processors is operable to derive a scanning path for scanning blocks of at least one part of a picture, among at least a raster scan order and a z-scan order, and decode the at least one part of the picture based on the scanning path.

3. The method of claim 1 or the apparatus of claim 2, wherein deriving the scanning path comprises decoding an indicator representative of the scanning path.

4. The method of claim 1 or 3 further comprising or the apparatus of claim 2 or 3 wherein said one or more processors is further operable for decoding an indicator representative of an order of the scanning path.

5. The method of any of claims 1 , 3 or 4 further comprising or the apparatus of any of claims 2-4, wherein said one or more processors is further operable for decoding an indicator representative of a first direction of the scanning path.

6. The method of any of claims 1 , 3 or 4-5, or the apparatus of any of claims 2-5, wherein a block is split into subblocks and subblocks blocks inside the block are scanned using a raster scan order.

7. The method of any of claims 1 , 3 or 4-6, or the apparatus of any of claims 2-6, wherein for scanning subblocks inside a block, a scanning path is used which is a same scanning path as or a different scanning path than the scanning path for scanning the blocks.

8. The method of any of claims 1 , 3 or 4-7 further comprising or the apparatus of any of claims 2-7, wherein said one or more processors is further operable for decoding an indicator representative of a scanning path for the subblocks inside a block.

9. The method or the apparatus of claim 8, wherein the indicator representative of ascanning path for the subblocks is signaled per block, per slice, per tile, or at a picture level, at group of picture level or at a sequence level.

10. The method of any of claims 1 , 3 or 4-9, or the apparatus of any of claims 2-9, wherein the part of the picture is a picture or a slice of a given type.1 1. The method or the apparatus of claim 10, wherein the picture / slice is an intra picture / slice.

12. The method or the apparatus of claim 3, wherein the indicator representative of a scanning path for the block is signaled per slice, per tile, or at a picture level, or at a group of picture or at a sequence level.

13. The method or the apparatus of claim 4, wherein the indicator representative of an order of the scanning path is signaled per slice, per tile, or at a picture level, or at a group of picture or at a sequence level.

14. The method or the apparatus of claim 5, wherein the indicator representative of a first direction of the scanning path is signaled per slice, per tile, or at a picture level, or at a group of picture or at a sequence level.

15. A method, comprising: determining a scanning path for scanning blocks of at least one part of a picture, among at least a raster scan order and a z-scan order, encoding the at least one part of the picture based on the scanning path.

16. An apparatus, comprising one or more processors, wherein said one or more processors is operable to determine a scanning path for scanning blocks of at least one part of a picture, among at least a raster scan order and a z-scan order, and encode the at least one part of the picture based on the scanning path.

17. The method of claim 15 further comprising or the apparatus of claim 16 wherein said one or more processors is further operable for encoding at least one of an indicator representative of the scanning path, an indicator representative of an order of the scanning path, an indicator representative of a first direction of the scanning path, oran indicator representative of a scanning path for subblocks inside a block.

18. The method or the apparatus of claim 17, wherein the indicator is signaled per group of blocks, per slice, per tile, or at a picture level, or at a group of picture or at a sequence level.

19. The method of any of claims 15, or 17-18, or the apparatus of any of claims 16- 18, wherein the scanning path for scanning blocks is determined using an N-pass encoding of the at least one part of the picture.

20. The method or the apparatus of claim 19, wherein the N-pass encoding is applied on a sub-sampled version of the at least one part of the picture.21 . The method of any of claims 15, or 17-18, or the apparatus of any of claims 16-18, wherein the scanning path for scanning blocks is determined based on a cumulative distance determined for at least one feature measured on samples of the blocks, the cumulative distance being determined by a sum of distance determined for the at least one feature between a given blocks and all preceding blocks along a given scanning path.

22. A computer program product including instructions for causing one or more processors to carry out the method of any of claims 1 , 3-15, or 17-21 .

23. A non-transitory computer readable medium storing executable program instructions to cause a computer executing the program instructions to perform a method according to any of claims 1 , 3-15, or 17-21 .

24. A bitstream comprising data representative of blocks of at least one part of a picture, wherein the blocks have been scanned according to a scanning path during encoding, the bitstream further comprising at least one an indicator representative of the scanning path, an indicator representative of an order of the scanning path, an indicator representative of a first direction of the scanning path, or an indicator representative of a scanning path for subblocks inside a block.

25. A non-transitory computer readable medium storing a bitstream of claim 24.

26. A device comprising: an apparatus according to claim 2; and at least one of (i) an antenna configured to receive or transmit a signal, the signal including data representative of the at least one part of the picture, (ii) a band limiter configured to limit the signal to a band of frequencies that includes the data representative of the at least one part of the picture, or (iii) a display configured to display the at least one part of the picture.

27. A device according to claim 26, wherein the device comprises at least one of a television, a cell phone, a tablet, a set-top box.