WO2021045765A1 - Efficient adaptive loop filter parameter signaling in video coding - Google Patents

Efficient adaptive loop filter parameter signaling in video coding Download PDF

Info

Publication number
WO2021045765A1
WO2021045765A1 PCT/US2019/049779 US2019049779W WO2021045765A1 WO 2021045765 A1 WO2021045765 A1 WO 2021045765A1 US 2019049779 W US2019049779 W US 2019049779W WO 2021045765 A1 WO2021045765 A1 WO 2021045765A1
Authority
WO
WIPO (PCT)
Prior art keywords
slice
loop filter
picture
adaptive loop
enabled
Prior art date
Application number
PCT/US2019/049779
Other languages
French (fr)
Inventor
Fnu HENDRY
Ye-Kui Wang
Jianle Chen
Original Assignee
Huawei Technologies Co., Ltd.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co., Ltd. filed Critical Huawei Technologies Co., Ltd.
Priority to PCT/US2019/049779 priority Critical patent/WO2021045765A1/en
Publication of WO2021045765A1 publication Critical patent/WO2021045765A1/en

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/80Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
    • H04N19/82Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation involving filtering within a prediction loop
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards

Definitions

  • a picture from media can be divided into one or more slices and each slice has header.
  • Each header may contains parameters of tools used to decode the slice.
  • signaling of some tool’s parameters may be duplicated among those slices. This inefficiency may cost degradation to the compression performance, as the amount of bits for such signaling may be significant and increase the overall bandwidth during signaling.
  • the specification describes techniques for signaling of Adaptive Loop Filter (ALF) parameters in a coded video bit-stream.
  • ALF Adaptive Loop Filter
  • the description of the techniques are based on the under-development video coding standard Versatile Video Coding (VVC) by the joint video experts team (JVET) of ITU-T and ISO/IEC. However, the techniques also apply to other video codec specifications.
  • VVC Versatile Video Coding
  • JVET joint video experts team
  • the techniques also apply to other video codec specifications.
  • a method includes: receiving, by one or more processors, media that comprises multiple pictures, wherein each picture of the multiple pictures comprise one or more slices; identifying, by the one or more processors, data representing header information for a first slice from the one or more slices from the picture; determining, by the one or more processors, first adaptive loop filter information and first enabled adaptive loop filter information are included within the data representing header information in the first slice from the picture; determining, by the one or more processors, the first adaptive loop filter information and the first enabled adaptive loop filter information are enabled; identifying, by the one or more processors, data representing header information for a second slice from the one or more slices from the picture; determining, by the one or more processors, second adaptive loop filter information is not included and second enabled adaptive loop filter information is included within the data representing header information in the second slice from the picture; and in response to determining the second adaptive loop filter information is not included and the second enabled adaptive loop filter information is enabled, decoding, by the one or more processors, each of the slices of the picture
  • FIG. 1 A system of one or more computers can be so configured by virtue of software, firmware, hardware, or a combination of them installed on the system that in operation cause the system to perform the actions.
  • One or more computer programs can be so configured by virtue having instructions that, when executed by data processing apparatus, cause the apparatus to perform the actions.
  • the method includes, wherein the first slice occurs before the second slice in the picture.
  • the method includes determining, by the one or more processors, the second adaptive loop filter information and the second enabled adaptive loop filter information are included within the data representing header information in the second slice from the picture; and in response to determining the second adaptive loop filter information is enabled and the second enabled adaptive loop filter information is enabled, decoding, by the one or more processors, the first slice using the first adaptive loop filter information and the second slice using the second adaptive loop filter information.
  • the header information comprises sequence parameter set information and picture parameter set information.
  • the method includes determining, by the one or more processors, data representing header information from the picture that indicates whether adaptive loop filter information is included within the one or more slices of the picture.
  • the method includes in response to determining the data representing the header information from the picture includes the adaptive loop filter information, determining, by the one or more processors, the adaptive loop filter information is enabled; and in response to determining the adaptive loop filter information is enabled, determining, by the one or more processors, the adaptive loop filter information is included only in the header information of the first slice of each picture of the media.
  • the method includes in response to determining the data representing the header information from the picture includes the adaptive loop filter information, determining, by the one or more processors, the adaptive loop filter information is not enabled for the picture; in response to determining the adaptive loop filter information is not enabled, analyzing, by the one or more processors, headers for each of the one or more slices of the picture to determine whether the adaptive loop filter information is included within the header for each of the one or more slices; and in response to determining the adaptive loop filter information is included within the header for each of the one or more slices of the picture, decoding, by the one or more processors, each of the slices of the picture using the adaptive loop filter information from the header of the first slice of the picture.
  • the method includes determining, by the one or more processors, other header information in each of the one or more slices, wherein the other header information comprises signaling of reference picture set (RPS) and indexing data for a number of slices in the picture.
  • RPS reference picture set
  • FIG. 1 is a block diagram that illustrates an example of a system for signaling adaptive loop filter parameters in a video coding transmission system.
  • FIG. 2 is a flow diagram that illustrates an example of a process for signaling adaptive loop filter parameters in a video coding transmission system.
  • FIG. 3 is a schematic diagram of a network device, e.g., coding device, encoder, decoder, etc., according to an embodiment of the disclosure.
  • the video coding basics include video compression techniques.
  • Video compression techniques perform spatial, e.g., intra-picture, prediction and/or temporal, e.g., inter-picture, prediction to reduce or remove redundancy inherent in video sequences.
  • a video slice i.e., a video picture or a portion of a video picture, may be partitioned into video blocks, which may also be referred to as tree blocks, coding tree blocks (CTBs), coding tree units (CTUs), coding units (CUs) and/or coding nodes.
  • Video blocks in an intra- coded (I) slice of a picture are encoded using spatial prediction with respect to reference samples in neighboring blocks in the same picture.
  • Video blocks in an inter-coded (P or B) slice of a picture may use spatial prediction with respect to reference samples in neighboring blocks in the same picture or temporal prediction with respect to reference samples in other reference pictures.
  • P slice stands for a predictive slice, which corresponds to a coding block in a slice that may be coded user inter prediction method referring to one reference.
  • B slice stands for a bi-predictive slice, which corresponds to a coding block in the slice that may be coded using inter-prediction method referring to two references.
  • VVC Versatile Video Coding
  • B slice is defined as follows: a slice that is decoded using intra prediction or using inter prediction with at most two motion vectors and reference indices to predict the sample values of each block.
  • Pictures may be referred to as frames, and reference pictures may be referred to as reference frames.
  • Spatial or temporal prediction results in a predictive block for a block to be coded.
  • Residual data represents pixel differences between the original block to be coded and the predictive block.
  • An inter-coded block is encoded according to a motion vector that points to a block of reference samples forming the predictive block, and the residual data indicating the difference between the coded block and the predictive block.
  • An intra-coded block is encoded according to an intra-coding mode and the residual data.
  • the residual data may be transformed from the pixel domain to a transform domain, resulting in residual transform coefficients, which then may be quantized.
  • the quantized transform coefficients initially arranged in a two-dimensional array, may be scanned in order to produce a one dimensional vector of transform coefficients, and entropy coding may be applied to achieve even more compression.
  • Video coding standards include, but are not limited to, ITU-T H.261, ISO/IEC MPEG-1 Part 2, ITU-T H.262 or ISO/IEC MPEG-2 Part 2, , ITU-T H.263, ISO/IEC MPEG-4 Part 2, Advanced Video Coding (AVC), also known as ITU-T H.264 or ISO/IEC MPEG-4 Part 10, and High Efficiency Video Coding (HEVC), also known as ITU-T H.265 or MPEG-H Part 2.
  • AVC includes extensions such as Scalable Video Coding (SVC), Multiview Video Coding (MVC) and Multiview Video Coding plus Depth (MVC+D), and 3D AVC (3D-AVC).
  • HEVC includes extensions such as Scalable HEVC (SHVC), Multiview HEVC (MV-HEVC), and 3D HEVC (3D-HEVC).
  • VVC video coding standard
  • JVET joint video experts team
  • WD The latest Working Draft (WD) of VVC included in JVET-L1001-vl, which is publicly available here: http://phenix.it- sudparis.eu/jvet/doc_end_user/documents/12_Macao/wgl 1/JVET-LlOOl-vl.zip, and JVET- K1002-v3, publicly available herein: http://phenix.it- sudparis.eu/jvet/doc_end_user/documents/l l_Ljubljana/wgl 1/JVET-Kl 002-v3.zip, which are both incorporated herein by reference.
  • This link provides an algorithm description as well as an encoder-side description of the VVC WD as well as the reference software.
  • HEVC includes four different picture partitioning schemes.
  • the four different picture partitioning schemes include regular slices, dependent slices, tiles, and Wavefront Parallel Processing (WPP), which may be applied for Maximum Transfer Unit (MTU) size matching, parallel processing, and reduced end-to-end delay.
  • WPP Wavefront Parallel Processing
  • Regular slices are similar as in H.264/AVC. Each regular slice is encapsulated in its own network abstraction layer (NAL) unit, and in-picture prediction, e.g., intra sample prediction, motion information prediction, coding mode prediction, and entropy coding dependency across slice boundaries are disabled.
  • NAL unit is defined as a syntax structure containing an indication of the type of data to follow and bytes containing that data in the form of an RBSP interspersed as necessary with emulation prevention bytes.
  • a regular slice can be reconstructed independently from other regular slices within the same picture, e.g., though there may still be interdependencies due to loop filtering operations.
  • the regular slice, tiles and WPP can be used for supporting parallelization in H.264/AVC.
  • Regular slices based parallelization does not require much inter-processor or inter-core communication, e.g., except for inter-processor or inter-core data sharing for motion compensation when decoding a predictively coded picture, which is typically much heavier than inter-processor or inter-core data sharing due to in-picture prediction.
  • the use of regular slices can incur substantial coding overhead due to the bit cost of the slice header and due to the lack of prediction across the slice boundaries.
  • regular slices in contrast to the other tools mentioned below also serve as the key mechanism for bitstream partitioning to match MTU size requirements, due to the in-picture independence of regular slices and that each regular slice is encapsulated in its own NAL unit.
  • Dependent slices have short slice headers and allow partitioning of the bit stream at tree block boundaries without breaking any in-picture prediction.
  • Dependent slices provide fragmentation of regular slices into multiple NAL units, to provide reduced end-to-end delay by allowing a part of a regular slice to be sent before the encoding of the entire regular slice is finished.
  • the picture is partitioned into single rows of coding tree blocks (CTBs). Entropy decoding and prediction are allowed to use data from CTBs in other partitions.
  • Parallel processing is possible through parallel decoding of CTB rows, where the start of the decoding of a CTB row is delayed by two CTBs, so to ensure that data related to a CTB above and to the right of the subject CTB is available before the subject CTB is being decoded. With this staggered start, which appears like a wavefront when represented graphically, parallelization is possible with up to as many processors/cores as the picture contains CTB rows.
  • WPP partitioning does not result in the production of additional NAL units compared to when it is not applied, thus WPP is not a tool for MTU size matching.
  • regular slices can be used with WPP, with certain coding overhead.
  • Tiles define horizontal and vertical boundaries that partition a picture into tile columns and rows.
  • the scan order of CTBs is changed to be local within a tile, in the order of a CTB raster scan of a tile, before decoding the top-left CTB of the next tile in the order of tile raster scan of a picture.
  • tiles break in-picture prediction dependencies as well as entropy decoding dependencies. However, they do not need to be included into individual NAL units, same as WPP in this regard, hence, tiles cannot be used for MTU size matching.
  • Each tile can be processed by one processor/core, and the inter-processor/inter-core communication required for in-picture prediction between processing units decoding neighboring tiles is limited to conveying the shared slice header in cases a slice is spanning more than one tile, and loop filtering related sharing of reconstructed samples and metadata.
  • the entry point byte offset for each tile or WPP segment other than the first one in the slice is signaled in the slice header.
  • VVC is being developed and at the last JVET meeting, it was agreed that VVC includes the following picture partitioning schemes: tiles and tile group.
  • Tile in VVC is the same as tile in HEVC.
  • VVC does not include slice, instead, it replaces tiles with tile group.
  • the major different between slice and tile group is that a slice contains a group of CTUs, by slice, while a tile group contains a group of tiles.
  • slice and tile group may be used interchangeably.
  • slice and tile group may be used interchangeably.
  • Video codecs e.g., AVC, HEVC, VVC, etc.
  • coding tools such as coefficient quantization, coefficient transform, intra prediction, inter prediction, Adaptive Loop Filter (ALF), Sample Adaptive Offset (SAO), and deblocking, etc.
  • ALF Adaptive Loop Filter
  • SAO Sample Adaptive Offset
  • deblocking etc.
  • some parameters need to be signaled in the bit stream for the decoder to understand how to configure and use them during decoding process. These parameters may be signaled in parameter sets, e.g., SPS, PPS, etc., and/or in slice headers, for AVC / HEVC, and/or in tile group headers, for VVC, and / or in other part of the bit stream.
  • a flag in SPS indicates whether ALF may be used or not for CVSs referring to the SPS, and furthermore, a flag in the slice header indicates whether ALF is used for the slice.
  • ALF enabling flag in the slice header is true, ALF parameters are present in the slice header.
  • the ALF parameters i.e., alf_data()
  • the ALF parameters are always signaled in the slice header when ALF is enabled for the slice.
  • ALF is applied at picture level so that ALF parameters for all slices in the same picture are the same. This duplication is sometimes not necessary while it costs a large number of bits to signal.
  • the amount of bits for signaling the ALF parameter may vary from picture to picture.
  • a flag e.g., called slice_alf_data_present_flag, is signaled to indicate whether ALF parameter, i.e., alf_data(), is present or not.
  • slice_alf_data_present_flag and slice alf enabled flag i.e., current flag in the latest VVC WD - JVET-K1001-v7, which is incorporated herein by reference, to indicate whether ALF is enabled for the current slice, is defined as follows: [0057] a. If ALF is enabled, e.g., indicated through the value of sps alf enabled flag being equal to 1 or through other means, both slice alf enabled flag and slice_alf_data_present_flag, or at least one of the two flags may be present in the bit stream. [0058] b.
  • slice alf enabled flag is equal to 1
  • slice_alf_data_present_flag is present in the slice header and its value may be equal to 0 or 1. Additionally, the following constraint might be applied:
  • slice_alf_data_present_flag shall be equal to 1.
  • slice alf enabled flag is equal to 0
  • slice_alf_data_present_flag is not present in the slice header and its value is inferred to be equal to 0.
  • slice_alf_data_present_flag 1 indicates that the ALF parameters, i.e., alf_data(), are present in the slice header.
  • slice_alf_data_present_flag 0 indicates that the ALF parameters are not present in the slice header.
  • slice_alf_enabled_flag is equal to 1
  • the ALF parameters for the slice are inferred to be the same as the ALF parameters of the first slice of the picture.
  • slice_alf_data_present_flag When sps alf enabled flag is equal to 1 and slice_alf_data_present_flag of the first slice of a current picture is equal to 0, for any of the other slices that belong to the same picture and have slice alf enabled flag equal to 1, the slice_alf_data_present_flag, explicitly signaled or inferred, shall be equal to 1.
  • slice alf enabled flag is equal to 1 and the current slice is the first slice of the current picture, slice_alf_data_present_flag is not present in the slice header and its value is inferred to be equal to 1.
  • slice_alf_data_present_flag is present in the slice header and its value may be equal to 0 or 1.
  • slice alf enabled flag is equal to 0
  • slice_alf_data_present_flag is not present in the slice header and its value is inferred to be equal to 0.
  • slice alf enabled flag is equal to 1 and the current slice is the first of the slices of the current picture with slice alf enabled flag equal to 1, slice_alf_data_present_flag is not present in the slice header and its value is inferred to be equal to 1.
  • slice alf enabled flag is equal to 1 and the current slice is not the first of the slices of the current picture with slice alf enabled flag equal to 1, slice_alf_data_present_flag is present in the slice header and its value may be equal to 0 or 1.
  • slice alf enabled flag is equal to 0, slice_alf_data_present_flag is not present in the slice header and its value is inferred to be equal to 0.
  • slice alf enabled flag and slice_alf_data_present_flag are both always present in the slice header when sps alf enabled flag is equal to 1. Additionally, the following constraints, individually or collectively or in some combination, might be applied:
  • slice_alf_data_present_flag shall be equal to 1.
  • slice alf enabled flag is equal to 1 and the current slice is the first of the slices of the current picture with slice alf enabled flag equal to 1, the value of slice_alf_data_present_flag shall be equal to 1.
  • slice alf enabled flag When slice alf enabled flag is equal to 1, the current slice is not the first slice of the current picture and the value of slice_alf_data_present_flag of the first slice of the current picture is equal to 0, the value of slice_alf_data_present_flag shall be equal to 1.
  • slice alf enabled flag is equal to 0, the value of slice_alf_data_present_flag shall be equal to 0.
  • slice alf enabled flag may be controlled by the value of slice_alf_data_present_flag.
  • the relationship between slice alf enabled flag and sbce_alf_data_present_flag is as follows:
  • slice_alf_data_present_flag is equal to 0, slice alf enabled flag is present.
  • slice_data_present_flag and sbce_alf_enabled_flag are both always present in the slice header when sps_alf_enabled_flag is equal to 1.
  • slice alf enabled flag shall be equal to 1.
  • slice_alf_enabled_flag shall be equal to 0.
  • slice_alf_data_present_flag is defined as follows:
  • slice_alf_data_present_flag 1 indicates that the ALF parameters are present in the slice header.
  • slice_alf_data_present_flag 0 indicates that the ALF parameters are not present in the slice header.
  • slice_alf_enabled_flag is equal to 1
  • the ALF parameters for the slice are inferred to be the same as the ALF parameters of the first slice of the picture whose slice_alf_data_present_flag is equal to 1.
  • slice_alf_data_present_flag is defined as follows:
  • slice_alf_data_present_flag 1 indicates that the ALF parameters are present in the slice header.
  • slice_alf_data_present_flag 0 indicates that the ALF parameters are not present in the slice header.
  • slice_alf_enabled_flag is equal to 1
  • the ALF parameters for the slice are inferred to be the same as the ALF parameters of the last slice preceding the current slice of the same picture with slice_alf_data_present_flag equal to 1.
  • alf_picture_level_param_flag is signaled to indicate whether ALF is applied on picture level, when alf_picture_level_param_flag, is equal to 1 or slice level, when alf_picture_level_param_flag is equal to 0.
  • alf_picture_level_param_flag is equal to 1
  • ALF parameters e.g., alf_data()
  • a flag at parameter set e.g., SPS, is signaled to indicate whether the tool is enabled for the bit stream.
  • RPS if RPS information is signaled.
  • a slice / tile group is the first slice / tile group in the picture if it contains the first CTU, in CTU raster scan order, of the picture.
  • a slice / tile group is the first slice / tile group in the picture if it is the first slice / tile group of the picture in decoding order.
  • slice alf enabled flag 1 specifies that adaptive loop filter is enabled and may be applied to Y, Cb, or Cr color component in the slice slice alf enabled flag equal to 0 specifies that adaptive loop filter is disabled for all color components in the slice.
  • slice_alf_data_present_flag 1 specifies that alf_data( ) is present in the current slice header.
  • slice_alf_data_present_flag 0 specifies that alf_data( ) is not present in the current slice header.
  • the value of slice_alf_data_present_flag is inferred to be equal to 0.
  • alf_data( ) is inferred to be the same as alf_data( ) signaled in the slice header of the first slice of the current picture.
  • the first slice of the current picture is the slice that contains the first CTU, in CTU raster scan order, of the picture.
  • slice alf enabled flag When slice alf enabled flag is equal to 1 for one or more slices in the current picture, the value of both slice alf enabled flag and slice_alf_data_present_flag shall be equal to 1 for the first slice of the current picture.
  • slice header signaling and semantics can be defined as follows: slice_header( ) ⁇ Descriptor if( sps_alf_enabled_flag ) ⁇ slice_alf_enabled_flag u(l) if( slice_alf_enabled_flag && !FirstSliceFlag ) slice_alf_data_present_flag u(l) if( slice_alf_data_present_flag ) alf_data( )
  • slice alf enabled flag 1 specifies that adaptive loop filter is enabled and may be applied to Y, Cb, or Cr color component in the slice slice alf enabled flag equal to 0 specifies that adaptive loop filter is disabled for all color components in the slice.
  • the variable FirstSliceFlag indicating whether the current slice is the first slice of the current picture, is set equal to 1 if the slice_address is equal to 0 and set equal to 0 otherwise.
  • slice_alf_data_present_flag 1 specifies that alf_data( ) is present in the current slice header.
  • slice_alf_data_present_flag 0 specifies that alf_data( ) is not present in the current slice header.
  • slice_alf_data_present_flag When not present, the value of slice_alf_data_present_flag is inferred as follows: [0123] When slice alf enabled flag is equal to 1 and FirstSliceFlag is equal to 1, slice_alf_data_present_flag is inferred to be equal to 1. [0124] When slice_alf_enabled_flag is equal to 0, slice_alf_data_present_flag is inferred to be equal to 0.
  • the first slice of the current picture is the slice that contains the first CTU, in CTU raster scan order, of the picture.
  • alf_data( ) is inferred to be the same as alf_data( ) signaled in the slice header of the first slice of the current picture.
  • slice header signaling and semantics can be defined as follows: slice_header( ) ⁇ Descriptor if( sps_alf_enabled_flag && !FirstSliceFlag ) ⁇ slice_alf_enabled_flag u(l) if( slice_alf_enabled_flag ) slice_alf_data_present_flag u(l) if( slice_alf_data_present_flag ) alf_data( )
  • the variable FirstSliceFlag indicating whether the current slice is the first slice of the current picture, is set equal to 1 if the slice_address is equal to 0 and set equal to 0 otherwise.
  • slice alf enabled flag 1 specifies that adaptive loop filter is enabled and may be applied to Y, Cb, or Cr color component in the slice slice alf enabled flag equal to 0 specifies that adaptive loop filter is disabled for all color components in the slice.
  • FirstSliceFlag is equal to 1
  • FirstSliceFlag is equal to 1
  • the value of slice_alf_enabled_flag is inferred to be equal to 1.
  • slice_alf_data_present_flag 1 specifies that alf_data( ) is present in the current slice header.
  • slice_alf_data_present_flag 0 specifies that alf_data( ) is not present in the current slice header.
  • slice_alf_data_present_flag When not present, the value of slice_alf_data_present_flag is inferred as follows: [0131] When slice alf enabled flag is equal to 1 and FirstSliceFlag is equal to 1, slice_alf_data_present_flag is inferred to be equal to 1.
  • slice_alf_data_present_flag is inferred to be equal to 0.
  • the first slice of the current picture is the slice that contains the first CTU, in CTU raster scan order, of the picture.
  • slice alf enabled flag is equal to 1 and slice_alf_data_present_flag is equal to 0
  • alf_data( ) is inferred to be the same as alf_data( ) signaled in the slice header of the first slice of the current picture.
  • slice_alf_data_present_flag [0134]
  • slice_alf_data_present_flag 1 specifies that alf_data( ) is present in the current slice header.
  • slice_alf_data_present_flag 0 specifies that alf_data( ) is not present in the current slice header.
  • the value of slice_alf_data_present_flag is inferred to be equal to 0.
  • alf_data( ) is inferred to be the same as alf_data( ) signaled in the slice header of the first slice of the current picture in which slice_alf_data_present_flag is equal to 1
  • slice alf enabled flag is equal to 1 for the current slice and the current slice is the first slice in the current picture in which slice alf enabled flag is equal to 1, the value of slice_alf_data_present_flag shall be equal to 1.
  • sps alf enabled flag 0 specifies that the adaptive loop filter is disabled sps alf enabled flag equal to 1 specifies that the adaptive loop filter is enabled.
  • alf_picture_level_param_flag 1 specifies that, when more than one slice of a picture contains alf_data(), the instances of alf_data() in the different slice headers of the picture are identical.
  • alf_picture_level_param_flag 0 specifies that, when more than one slice of a picture contains alf_data(), the instances of alf_data() in the different slice headers of the picture may or may not be identical.
  • the semantics of alf_picture_level_param_flag is as follows:
  • alf_picture_level_param flag 1 indicates that alf_data(), if present, is only signaled in the header of the first slice of each picture.
  • alf_picture_level_param_flag 0 indicates that alf_data(), if present, may be signaled in the header of every slice of each picture.
  • slice_header( ) Descriptor slice_address u(v) if( sps_alf_enabled_flag && ( FirstSliceFlag
  • slice address specifies the address of the first CTB in the slice, in CTB raster scan of a picture.
  • the length of the slice address syntax element is Ceil( Log2( PicSizelnCtbsY ) ) bits.
  • the value of slice address shall be in the range of 0 to PicSizelnCtbsY - 1, inclusive, and the value of slice address shall not be equal to the value of slice address of any other coded slice NAL unit of the same coded picture.
  • variable CtbAddrlnRs specifying a CTB address in CTB raster scan of a picture, is set equal to slice_address.
  • FIG. 1 is a block diagram that illustrates an example of a system 100 for signaling adaptive loop filter parameters in a video coding transmission system.
  • the system 100 includes a client device 102, a network 104, and a client device 106.
  • the client devices e.g., 102 and 106, can transmit media over the network 104.
  • the client devices can include, for example, a personal computer (PC), a handheld device, a mobile device, a tablet, or one or more servers, to name a few examples.
  • the network 104 can include a wireless or a wired network.
  • the client devices can communicate over network 104 with Bluetooth, WiFi, Cellular, ethemet, or a ZigBee connection, to name a few examples.
  • client device 102 generates media 108 to transmit to client device 106 over network 104.
  • the client device 102 compresses media 108 using one or more video compressions techniques, such as spatial prediction and/or temporal prediction, to reduce or remove redundancy in video sequences.
  • the media 108 can include one or more segments of video.
  • the video can be partitioned into video blocks, also referred to as tree blocks, CTBs, CTUs, CUs, or coding nodes.
  • Each video block is partitioned into one or more pictures, such as picture 110-1, picture 110-2, and picture 110-N.
  • Each picture is partitioned into one or more slices, such as slice 112, slice 114, and slice 116.
  • a picture can be comprised of multiple slices.
  • a slice is a video picture or a portion of a video picture.
  • the video blocks can be encoded using intra-picture prediction or inter-picture prediction.
  • the slices e.g., slices 112, 114, and 116
  • the headers can include parameters for video codecs for coding tools.
  • the parameters can describe coding tools such as coefficient quantization, coefficient transformation, intra prediction, inter prediction, adaptive loop filter (ALF) parameters, sample adaptive offset (SAO) parameters, and deblocking parameters.
  • ALF adaptive loop filter
  • SAO sample adaptive offset
  • deblocking parameters are signaled or included in the bit stream headers in order for the decoder to determine how to decode the slices.
  • These parameters may be signaled in parameter sets, e.g., SPS, PPS, or in slice headers, e.g., AVC or HEVC.
  • the parameters can include data representing tile group headers or data found in other parts of the headers.
  • a flag is set in SPS in the header that indicates whether ALF may be used for CVSs referring to the SPS.
  • a flag in the slice header indicates whether ALF is used for the slice.
  • the ALF parameters are present in the header for the particular slice.
  • the parameters for tool signaling are included in the header of every slice for a particular picture, e.g., slices 112, 114, and 116, and thus, creates unnecessary bandwidth when transmitting the media 108.
  • the signaled parameters are the same in the header of every slice in the same picture. Thus, it is desirable to avoid the redundancy of the same parameters in every slice for a particular picture.
  • each header in a particular slice includes various parameters.
  • a “slice_alf_data_present_flag” and a “slice alf enabled flag” is included in the header.
  • Each header of the slice also includes an “sps_alf_enabled_flag” that provides various information to the decoder. Using these flags, the decoder can determine how to process each slice in a particular picture. Additionally, the encoder can signal to the decoder how to decode each slice, and reduce the amount of information transmitted over the network 104 by removing redundant information in the headers of corresponding slices.
  • each slice header can include an “alf_picture_level_param_flag” that indicates whether the ALF coding is applied on a picture level. For example, when the “alf_picture_level_param_flag” is set in a particular header, the ALF coding is applied to each of the headers, and the ALF parameters are present only in the first slice header of each picture. Additionally, each header includes a variable labeled “FirstSliceFlag.” The “FirstSliceFlag” indicates whether a current slice of the current picture is the first picture or not.
  • FIG. 2 is a flow diagram that illustrates an example of a process 200 for signaling adaptive loop filter parameters in a video coding transmission system.
  • the process 200 generally includes: media is received that comprises multiple pictures, wherein each picture of the multiple pictures comprise one or more slices. Data representing header information is identified for a first slice from the one or more slices from the picture. First adaptive loop filter information is determined to be included within the data representing header information in the first slice from the picture. The data representing header information for a second slice is identified from the one or more slices from the picture. Second adaptive loop filter information is determined not to be included within the data representing header information in the second slice.
  • each of the slices of the picture are decoded using the first adaptive loop filter information.
  • the process 200 can be performed by one or more processors of client device 102 or 106.
  • a processor of a client device receives media that includes multiple pictures, wherein each picture of the multiple pictures include one or more slices (202).
  • the processor can receive the media over the network.
  • the media can include encoded video data.
  • the media can include multiple slices, such as a first slice and a second slice. The first slice occurs before the second slice.
  • the processor identifies data representing header information for a first slice from the one or more slices from the picture (204).
  • the header information can include a bit stream of data that describes or signals the encoding of the slices for a corresponding picture.
  • the header information can include sequence parameter set information and picture parameter set information.
  • the header information can include a signaling of reference picture set (RPS) information as well as indexing data that describes a number of slices in a particular picture and an indexing number for each slice.
  • RPS reference picture set
  • the processor determines first adaptive loop filter information and first enabled adaptive loop filter information are included within the data representing header information in the first slice from the picture (206).
  • the first adaptive loop filter information can correspond to the first slice from the picture or correspond to each slice for a particular picture.
  • the first adaptive loop filter information can correspond to the slice_alf_data_present flag.
  • the first enabled adaptive loop filter information can correspond to the slice alf enabled flag.
  • the data representing header information can indicate that the first adaptive loop filter information or other adaptive loop filter information corresponds to each picture in the media. In the case that the adaptive loop filter information corresponds to each picture in the media, then the subsequent slices would also correspond to the adaptive loop filter information. In some cases, if the header information indicates that the adaptive loop filter information corresponds to each picture in the media, then the adaptive loop filter information is only included the header information of the first slice of each picture from the media.
  • the processor determines whether adaptive loop filter information is include within each of the one or more slices. This information for a particular slice will dictate how a particular slice is decoded. [0156] The processor determines the first adaptive loop filter information and the first enabled adaptive loop filter information are enabled (208).
  • the processor identifies data representing header information for a second slice from the one or more slices from the picture (210). The first slice occurs before the second slice in the picture. The processor performs similar features for 208 as performed in 206. [0158] The processor determines second adaptive loop filter information is not included and second enabled adaptive loop filter information is included within the data representing header information in the second slice from the picture (212). For example, the second adaptive loop filter information corresponds to the slice_alf_data_present flag. Additionally, the second enabled adaptive loop filter information can correspond to the slice alf enabled flag. In this example, the processor determines the slice_alf_data_present_flag is not present and the slice alf enabled flag is enabled with a value of one.
  • the processor decodes each of the slices of the picture using the first adaptive loop filter information (214).
  • the data representing header information in the first slice indicates that each picture should be decoded using the first adaptive loop filter information.
  • the processor can determine that the second adaptive loop filter information is included within the data representing header information in the second slice from the picture. In response to determining the second adaptive loop filter information is included within the data representing header information in the second slice, the processor decode the first slice using the first adaptive loop filter information and decodes the second slice using the second adaptive loop filter information.
  • FIG. 3 is a schematic diagram of anetwork device 300, e.g., coding device, encoder, decoder, etc., according to an embodiment of the disclosure.
  • the network device 300 is suitable for implementing the disclosed embodiments as described herein.
  • the network device 300 comprises ingress ports 310 and receiver units (Rx) 320 for receiving data; a processor, logic unit, or central processing unit (CPU) 330 to process the data; transmitter units (Tx) 340 and egress ports 350 for transmitting the data; and a memory 360 for storing the data.
  • Rx receiver units
  • CPU central processing unit
  • the network device 300 may also comprise optical-to-electrical (OE) components and electrical- to-optical (EO) components coupled to the ingress ports 310, the receiver units 320, the transmitter units 340, and the egress ports 350 for egress or ingress of optical or electrical signals.
  • OE optical-to-electrical
  • EO electrical- to-optical
  • the processor 330 is implemented by hardware and software.
  • the processor 330 may be implemented as one or more CPU chips, cores (e.g., as a multi-core processor), field- programmable gate arrays (FPGAs), application specific integrated circuits (ASICs), and digital signal processors (DSPs).
  • the processor 330 is in communication with the ingress ports 310, receiver units 320, transmitter units 340, egress ports 350, and memory 360.
  • the processor 330 comprises a coding module 370.
  • the coding module 370 implements the disclosed embodiments described above. For instance, the coding module 370 implements, processes, prepares, or provides the various coding functions.
  • the inclusion of the coding module 370 therefore provides a substantial improvement to the functionality of the network device 300 and effects a transformation of the network device 300 to a different state.
  • the coding module 370 is implemented as instructions stored in the memory 360 and executed by the processor 330.
  • the memory 360 comprises one or more disks, tape drives, and solid-state drives and may be used as an over-flow data storage device, to store programs when such programs are selected for execution, and to store instructions and data that are read during program execution.
  • the memory 360 may be volatile and/or non-volatile and may be read-only memory (ROM), random access memory (RAM), ternary content-addressable memory (TCAM), and/or static random-access memory (SRAM).

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

Methods, systems, and apparatus, including computer programs encoded on computer storage media for signaling adaptive loop filter parameters. One method includes header information is identified for a first slice from a picture of received media. First adaptive loop filter information and first enabled adaptive loop filter information are determined to be included within the header information in the first slice. The first adaptive loop filter information and the first enabled adaptive loop filter information are enabled. Header information for a second slice from the picture is identified. Second adaptive loop filter information is determined to be not included and second enabled adaptive loop filter information is included within the header information in the second slices. In response to determining the second adaptive loop filter information is not included and the second enabled adaptive loop filter information is enabled, the slices are decoded using the first adaptive loop filter information.

Description

EFFICIENT ADAPTIVE LOOP FILTER PARAMETER SIGNALING
IN VIDEO CODING
BACKGROUND
[0001] In the current video coding technologies, a picture from media can be divided into one or more slices and each slice has header. Each header may contains parameters of tools used to decode the slice. As a picture may have multiple slices, signaling of some tool’s parameters may be duplicated among those slices. This inefficiency may cost degradation to the compression performance, as the amount of bits for such signaling may be significant and increase the overall bandwidth during signaling.
SUMMARY
[0002] In some implementations, the specification describes techniques for signaling of Adaptive Loop Filter (ALF) parameters in a coded video bit-stream. The description of the techniques are based on the under-development video coding standard Versatile Video Coding (VVC) by the joint video experts team (JVET) of ITU-T and ISO/IEC. However, the techniques also apply to other video codec specifications.
[0003] In one general aspect, a method includes: receiving, by one or more processors, media that comprises multiple pictures, wherein each picture of the multiple pictures comprise one or more slices; identifying, by the one or more processors, data representing header information for a first slice from the one or more slices from the picture; determining, by the one or more processors, first adaptive loop filter information and first enabled adaptive loop filter information are included within the data representing header information in the first slice from the picture; determining, by the one or more processors, the first adaptive loop filter information and the first enabled adaptive loop filter information are enabled; identifying, by the one or more processors, data representing header information for a second slice from the one or more slices from the picture; determining, by the one or more processors, second adaptive loop filter information is not included and second enabled adaptive loop filter information is included within the data representing header information in the second slice from the picture; and in response to determining the second adaptive loop filter information is not included and the second enabled adaptive loop filter information is enabled, decoding, by the one or more processors, each of the slices of the picture using the first adaptive loop filter information. [0004] Other embodiments of this and other aspects of the disclosure include corresponding systems, apparatus, and computer programs, configured to perform the actions of the methods, encoded on computer storage devices. A system of one or more computers can be so configured by virtue of software, firmware, hardware, or a combination of them installed on the system that in operation cause the system to perform the actions. One or more computer programs can be so configured by virtue having instructions that, when executed by data processing apparatus, cause the apparatus to perform the actions.
[0005] The foregoing and other embodiments can each optionally include one or more of the following features, alone or in combination. For example, one embodiment includes all the following features in combination.
[0006] In some implementations, the method includes, wherein the first slice occurs before the second slice in the picture.
[0007] In some implementations, the method includes determining, by the one or more processors, the second adaptive loop filter information and the second enabled adaptive loop filter information are included within the data representing header information in the second slice from the picture; and in response to determining the second adaptive loop filter information is enabled and the second enabled adaptive loop filter information is enabled, decoding, by the one or more processors, the first slice using the first adaptive loop filter information and the second slice using the second adaptive loop filter information.
[0008] In some implementations, the header information comprises sequence parameter set information and picture parameter set information.
[0009] In some implementations, the method includes determining, by the one or more processors, data representing header information from the picture that indicates whether adaptive loop filter information is included within the one or more slices of the picture.
[0010] In some implementations, the method includes in response to determining the data representing the header information from the picture includes the adaptive loop filter information, determining, by the one or more processors, the adaptive loop filter information is enabled; and in response to determining the adaptive loop filter information is enabled, determining, by the one or more processors, the adaptive loop filter information is included only in the header information of the first slice of each picture of the media.
[0011] In some implementations, the method includes in response to determining the data representing the header information from the picture includes the adaptive loop filter information, determining, by the one or more processors, the adaptive loop filter information is not enabled for the picture; in response to determining the adaptive loop filter information is not enabled, analyzing, by the one or more processors, headers for each of the one or more slices of the picture to determine whether the adaptive loop filter information is included within the header for each of the one or more slices; and in response to determining the adaptive loop filter information is included within the header for each of the one or more slices of the picture, decoding, by the one or more processors, each of the slices of the picture using the adaptive loop filter information from the header of the first slice of the picture.
[0012] In some implementations, the method includes determining, by the one or more processors, other header information in each of the one or more slices, wherein the other header information comprises signaling of reference picture set (RPS) and indexing data for a number of slices in the picture.
[0013] The details of one or more embodiments of the subject matter of this specification are set forth in the accompanying drawings and the description below. Other features, aspects, and advantages of the subject matter will become apparent from the description, the drawings, and the claims.
BRIEF DESCRIPTION OF THE DRAWINGS [0014] FIG. 1 is a block diagram that illustrates an example of a system for signaling adaptive loop filter parameters in a video coding transmission system.
[0015] FIG. 2 is a flow diagram that illustrates an example of a process for signaling adaptive loop filter parameters in a video coding transmission system.
[0016] FIG. 3 is a schematic diagram of a network device, e.g., coding device, encoder, decoder, etc., according to an embodiment of the disclosure.
[0017] Like reference numbers and designations in the various drawings indicate like elements.
DETAILED DESCRIPTION
[0018] The following are definitions of acronyms used herein:
[0019] CTB Coding Tree Block
[0020] CTU Coding Tree Unit
[0021] CU Coding Unit
[0022] CVS Coded Video Sequence
[0023] JVET Joint Video Experts Team
[0024] MCTS Motion-Constrained Tile Set
[0025] MTU Maximum Transfer Unit
[0026] NAL Network Abstraction Layer
[0027] POC Picture Order Count
[0028] RBSP Raw Byte Sequence Payload
[0029] SPS Sequence Parameter Set
[0030] VVC Versatile Video Coding
[0031] WD Working Draft
[0032] The video coding basics include video compression techniques. Video compression techniques perform spatial, e.g., intra-picture, prediction and/or temporal, e.g., inter-picture, prediction to reduce or remove redundancy inherent in video sequences. For block-based video coding, a video slice, i.e., a video picture or a portion of a video picture, may be partitioned into video blocks, which may also be referred to as tree blocks, coding tree blocks (CTBs), coding tree units (CTUs), coding units (CUs) and/or coding nodes. Video blocks in an intra- coded (I) slice of a picture are encoded using spatial prediction with respect to reference samples in neighboring blocks in the same picture. Video blocks in an inter-coded (P or B) slice of a picture may use spatial prediction with respect to reference samples in neighboring blocks in the same picture or temporal prediction with respect to reference samples in other reference pictures. P slice stands for a predictive slice, which corresponds to a coding block in a slice that may be coded user inter prediction method referring to one reference. B slice stands for a bi-predictive slice, which corresponds to a coding block in the slice that may be coded using inter-prediction method referring to two references. In the Versatile Video Coding (VVC) specification, P slice is defined as follows: a slice that is decoded using intra prediction or using inter prediction with at most one motion vector and reference index to predict the sample values of each block. Additionally, in the VVC specification, B slice is defined as follows: a slice that is decoded using intra prediction or using inter prediction with at most two motion vectors and reference indices to predict the sample values of each block. Pictures may be referred to as frames, and reference pictures may be referred to as reference frames.
[0033] Spatial or temporal prediction results in a predictive block for a block to be coded. Residual data represents pixel differences between the original block to be coded and the predictive block. An inter-coded block is encoded according to a motion vector that points to a block of reference samples forming the predictive block, and the residual data indicating the difference between the coded block and the predictive block. An intra-coded block is encoded according to an intra-coding mode and the residual data. For further compression, the residual data may be transformed from the pixel domain to a transform domain, resulting in residual transform coefficients, which then may be quantized. The quantized transform coefficients, initially arranged in a two-dimensional array, may be scanned in order to produce a one dimensional vector of transform coefficients, and entropy coding may be applied to achieve even more compression.
[0034] The video coding standards are discussed as follows. Video coding standards include, but are not limited to, ITU-T H.261, ISO/IEC MPEG-1 Part 2, ITU-T H.262 or ISO/IEC MPEG-2 Part 2, , ITU-T H.263, ISO/IEC MPEG-4 Part 2, Advanced Video Coding (AVC), also known as ITU-T H.264 or ISO/IEC MPEG-4 Part 10, and High Efficiency Video Coding (HEVC), also known as ITU-T H.265 or MPEG-H Part 2. AVC includes extensions such as Scalable Video Coding (SVC), Multiview Video Coding (MVC) and Multiview Video Coding plus Depth (MVC+D), and 3D AVC (3D-AVC). HEVC includes extensions such as Scalable HEVC (SHVC), Multiview HEVC (MV-HEVC), and 3D HEVC (3D-HEVC).
[0035] There is also a new video coding standard, named VVC, being developed by the joint video experts team (JVET) of ITU-T and ISO/IEC. The latest Working Draft (WD) of VVC included in JVET-L1001-vl, which is publicly available here: http://phenix.it- sudparis.eu/jvet/doc_end_user/documents/12_Macao/wgl 1/JVET-LlOOl-vl.zip, and JVET- K1002-v3, publicly available herein: http://phenix.it- sudparis.eu/jvet/doc_end_user/documents/l l_Ljubljana/wgl 1/JVET-Kl 002-v3.zip, which are both incorporated herein by reference. This link provides an algorithm description as well as an encoder-side description of the VVC WD as well as the reference software.
[0036] The picture partitioning schemes in HEVC are discussed.
[0037] HEVC includes four different picture partitioning schemes. The four different picture partitioning schemes include regular slices, dependent slices, tiles, and Wavefront Parallel Processing (WPP), which may be applied for Maximum Transfer Unit (MTU) size matching, parallel processing, and reduced end-to-end delay.
[0038] Regular slices are similar as in H.264/AVC. Each regular slice is encapsulated in its own network abstraction layer (NAL) unit, and in-picture prediction, e.g., intra sample prediction, motion information prediction, coding mode prediction, and entropy coding dependency across slice boundaries are disabled. In the VVC specification, the NAL unit is defined as a syntax structure containing an indication of the type of data to follow and bytes containing that data in the form of an RBSP interspersed as necessary with emulation prevention bytes. Thus, a regular slice can be reconstructed independently from other regular slices within the same picture, e.g., though there may still be interdependencies due to loop filtering operations.
[0039] The regular slice, tiles and WPP can be used for supporting parallelization in H.264/AVC. Regular slices based parallelization does not require much inter-processor or inter-core communication, e.g., except for inter-processor or inter-core data sharing for motion compensation when decoding a predictively coded picture, which is typically much heavier than inter-processor or inter-core data sharing due to in-picture prediction. However, for the same reason, the use of regular slices can incur substantial coding overhead due to the bit cost of the slice header and due to the lack of prediction across the slice boundaries. Further, regular slices (in contrast to the other tools mentioned below) also serve as the key mechanism for bitstream partitioning to match MTU size requirements, due to the in-picture independence of regular slices and that each regular slice is encapsulated in its own NAL unit. In many cases, the goal of parallelization and the goal of MTU size matching place contradicting demands to the slice layout in a picture. The realization of this situation led to the development of the parallelization tools mentioned below.
[0040] Dependent slices have short slice headers and allow partitioning of the bit stream at tree block boundaries without breaking any in-picture prediction. Dependent slices provide fragmentation of regular slices into multiple NAL units, to provide reduced end-to-end delay by allowing a part of a regular slice to be sent before the encoding of the entire regular slice is finished.
[0041] In WPP, the picture is partitioned into single rows of coding tree blocks (CTBs). Entropy decoding and prediction are allowed to use data from CTBs in other partitions. Parallel processing is possible through parallel decoding of CTB rows, where the start of the decoding of a CTB row is delayed by two CTBs, so to ensure that data related to a CTB above and to the right of the subject CTB is available before the subject CTB is being decoded. With this staggered start, which appears like a wavefront when represented graphically, parallelization is possible with up to as many processors/cores as the picture contains CTB rows. Because in picture prediction between neighboring tree block rows within a picture is permitted, the required inter-processor/inter-core communication to enable in-picture prediction can be substantial. The WPP partitioning does not result in the production of additional NAL units compared to when it is not applied, thus WPP is not a tool for MTU size matching. However, if MTU size matching is required, regular slices can be used with WPP, with certain coding overhead.
[0042] Tiles define horizontal and vertical boundaries that partition a picture into tile columns and rows. The scan order of CTBs is changed to be local within a tile, in the order of a CTB raster scan of a tile, before decoding the top-left CTB of the next tile in the order of tile raster scan of a picture. Similar to regular slices, tiles break in-picture prediction dependencies as well as entropy decoding dependencies. However, they do not need to be included into individual NAL units, same as WPP in this regard, hence, tiles cannot be used for MTU size matching. Each tile can be processed by one processor/core, and the inter-processor/inter-core communication required for in-picture prediction between processing units decoding neighboring tiles is limited to conveying the shared slice header in cases a slice is spanning more than one tile, and loop filtering related sharing of reconstructed samples and metadata. When more than one tile or WPP segment is included in a slice, the entry point byte offset for each tile or WPP segment other than the first one in the slice is signaled in the slice header. [0043] For simplicity, restrictions on the application of the four different picture partitioning schemes have been specified in HEVC. A given CVS cannot include both tiles and wavefronts for most of the profiles specified in HEVC. For each slice and tile, either or both of the following conditions must be fulfilled: 1) all coded tree blocks in a slice belong to the same tile, and 2) all coded tree blocks in a tile belong to the same slice. Finally, a wavefront segment contains exactly one CTB row, and when WPP is in use, when a slice starts within a CTB row, it must end in the same CTB row. [0044] The picture partitioning schemes in VVC are discussed.
[0045] Presently, VVC is being developed and at the last JVET meeting, it was agreed that VVC includes the following picture partitioning schemes: tiles and tile group. Tile in VVC is the same as tile in HEVC. VVC does not include slice, instead, it replaces tiles with tile group. The major different between slice and tile group is that a slice contains a group of CTUs, by slice, while a tile group contains a group of tiles.
[0046] The agreed picture partitioning of VVC has not been integrated yet into the latest VVC WD draft, JVET-L1001-vl. However, the text of that picture partitioning including tiles and tile group were available in the attachment of contribution JVET-L686, which is discussed in Appendix B, which is incorporated herein by reference.
[0047] In the present disclosure, the term slice and tile group may be used interchangeably. [0048] The tool parameter signaling in HEVC is discussed.
[0049] Video codecs, e.g., AVC, HEVC, VVC, etc., include coding tools such as coefficient quantization, coefficient transform, intra prediction, inter prediction, Adaptive Loop Filter (ALF), Sample Adaptive Offset (SAO), and deblocking, etc. For each coding tool, some parameters need to be signaled in the bit stream for the decoder to understand how to configure and use them during decoding process. These parameters may be signaled in parameter sets, e.g., SPS, PPS, etc., and/or in slice headers, for AVC / HEVC, and/or in tile group headers, for VVC, and / or in other part of the bit stream.
[0050] For signaling of ALF parameter, currently a flag in SPS indicates whether ALF may be used or not for CVSs referring to the SPS, and furthermore, a flag in the slice header indicates whether ALF is used for the slice. When the ALF enabling flag in the slice header is true, ALF parameters are present in the slice header.
[0051] The problems with the existing approaches for tool parameters signaling are discussed. Existing approaches for tool parameters signaling have at least the following problems. First, parameters for some tools are signaled in every slice header. This may be unnecessary. In some cases, the tool is a picture level tool so that its parameter applies for all slices in the same picture. In other words, for such cases, the signaled parameters are the same in the slice headers of all slices in the same picture. In this case, it is desirable to avoid signaling the same parameters in all the slices when not necessary. In particular, it can be desirable to enable avoiding repeating the same parameters in any slice that is not the first slice of the picture.
[0052] For example, in the latest available VVC WD, the ALF parameters, i.e., alf_data(), are always signaled in the slice header when ALF is enabled for the slice. In practice, it is often the case that ALF is applied at picture level so that ALF parameters for all slices in the same picture are the same. This duplication is sometimes not necessary while it costs a large number of bits to signal. In some implementations, the amount of bits for signaling the ALF parameter may vary from picture to picture.
[0053] Second, in other cases, when the sender/encoder anticipates that a slice/tile group may be extracted out of the original bit stream, it needs to ensure that necessary parameters are present/can be derived for decoding process of the slice/tile header. Therefore, it is desirable to be able to independently control the signaling of tool parameter in each slice/tile group header.
[0054] A technical description for the present disclosure is provided. In order to solve the problems mentioned above with existing tool parameters signaling, the present disclosure provides the following aspects, e.g., each of them can be applied individually and some of them can be applied in combination:
[0055] 1) In each slice / tile group header, a flag, e.g., called slice_alf_data_present_flag, is signaled to indicate whether ALF parameter, i.e., alf_data(), is present or not.
[0056] 2) The presence of slice_alf_data_present_flag and slice alf enabled flag, i.e., current flag in the latest VVC WD - JVET-K1001-v7, which is incorporated herein by reference, to indicate whether ALF is enabled for the current slice, is defined as follows: [0057] a. If ALF is enabled, e.g., indicated through the value of sps alf enabled flag being equal to 1 or through other means, both slice alf enabled flag and slice_alf_data_present_flag, or at least one of the two flags may be present in the bit stream. [0058] b. Otherwise, i.e., if ALF is NOT enabled, which may be indicated through the value of sps_alf_enabled_flag being equal to 0 or through other means, none of slice_alf_enabled_flag and slice_alf_data_present_flag is present in the bit stream.
[0059] 3) The relationship between slice alf enabled flag and slice_alf_data_present_flag includes the following:
[0060] a. If slice alf enabled flag is equal to 1, slice_alf_data_present_flag is present in the slice header and its value may be equal to 0 or 1. Additionally, the following constraint might be applied:
[0061] i. When slice alf enabled flag is equal to 1 and the current slice is the first slice of the current picture, the value of slice_alf_data_present_flag shall be equal to 1.
[0062] b. Otherwise, i.e., slice alf enabled flag is equal to 0, slice_alf_data_present_flag is not present in the slice header and its value is inferred to be equal to 0.
[0063] 4) The semantic of slice_alf_data_present_flag is defined as follows: [0064] a. slice_alf_data_present_flag equal to 1 indicates that the ALF parameters, i.e., alf_data(), are present in the slice header.
[0065] b. slice_alf_data_present_flag equal to 0 indicates that the ALF parameters are not present in the slice header. When ALF is enabled for the slice, i.e., slice_alf_enabled_flag is equal to 1, the ALF parameters for the slice are inferred to be the same as the ALF parameters of the first slice of the picture.
[0066] 5) The following constraints can further be defined, and one or more than one of them might apply:
[0067] a. When sps alf enabled flag is equal to 1 and ALF is enabled for one or more slices in the current picture, ALF shall be enabled for the first slice of the current picture. Additionally, a constraint such that the value of slice_alf_data_present_flag, explicitly signaled or inferred, of the first slice of a picture shall be equal to 1.
[0068] b. When sps alf enabled flag is equal to 1 and the current slice is not the first slice of the current picture and ALF is enabled for the current slice and the value of slice_alf_data_present_flag is equal to 0, at least one slice that precedes the current slice in decoding order and belong to the same picture shall have slice_alf_data_present_flag, explicitly signaled or inferred, to be equal to 1.
[0069] c. When sps alf enabled flag is equal to 1 and slice_alf_data_present_flag of the first slice of a current picture is equal to 0, for any of the other slices that belong to the same picture and have slice alf enabled flag equal to 1, the slice_alf_data_present_flag, explicitly signaled or inferred, shall be equal to 1.
[0070] d. When sps alf enabled flag is equal to 1 and the current slice is the first slice in the current picture with slice alf enabled flag equal to 1, the value of slice_alf_data_present_flag, explicitly signaled or inferred, of the current slice shall be equal to 1.
[0071] e. When sps alf enabled flag is equal to 1 and the current slice is first slice of a sub-picture of the current picture, e.g., a motion-constrained tile set as defined in HEVC or other similarly independently coded picture partition, wherein such a sub-picture can be indicated through various signaling means, the value of slice_data_present_flag, explicitly signaled or inferred, of the current slice shall be equal to 1.
[0072] 6) In one alternative to item 3), the relationship between slice alf enabled flag and slice_alf_data_present_flag is as follows: [0073] a. If slice alf enabled flag is equal to 1 and the current slice is the first slice of the current picture, slice_alf_data_present_flag is not present in the slice header and its value is inferred to be equal to 1.
[0074] b. Otherwise if slice alf enabled flag is equal to 1 and the current slice is not the first slice of the current picture, slice_alf_data_present_flag is present in the slice header and its value may be equal to 0 or 1.
[0075] c. Otherwise, e.g., slice alf enabled flag is equal to 0, slice_alf_data_present_flag is not present in the slice header and its value is inferred to be equal to 0.
[0076] 7) In another alternative to item 3) above, the relationship between slice_alf_enabled_flag and slice_alf_data_present_flag is as follows:
[0077] a. If slice alf enabled flag is equal to 1 and the current slice is the first of the slices of the current picture with slice alf enabled flag equal to 1, slice_alf_data_present_flag is not present in the slice header and its value is inferred to be equal to 1.
[0078] b. Otherwise if slice alf enabled flag is equal to 1 and the current slice is not the first of the slices of the current picture with slice alf enabled flag equal to 1, slice_alf_data_present_flag is present in the slice header and its value may be equal to 0 or 1. [0079] c. Otherwise, e.g., slice alf enabled flag is equal to 0, slice_alf_data_present_flag is not present in the slice header and its value is inferred to be equal to 0.
[0080] 8) In yet another alternative to item 3), slice alf enabled flag and slice_alf_data_present_flag are both always present in the slice header when sps alf enabled flag is equal to 1. Additionally, the following constraints, individually or collectively or in some combination, might be applied:
[0081] a. When slice alf enabled flag is equal to 1 and the current slice is the first slice of the current picture, the value of slice_alf_data_present_flag shall be equal to 1.
[0082] b. When slice alf enabled flag is equal to 1 and the current slice is the first of the slices of the current picture with slice alf enabled flag equal to 1, the value of slice_alf_data_present_flag shall be equal to 1.
[0083] c. When slice alf enabled flag is equal to 1, the current slice is not the first slice of the current picture and the value of slice_alf_data_present_flag of the first slice of the current picture is equal to 0, the value of slice_alf_data_present_flag shall be equal to 1.
[0084] d. If slice alf enabled flag is equal to 0, the value of slice_alf_data_present_flag shall be equal to 0. [0085] 9) The presence of slice alf enabled flag may be controlled by the value of slice_alf_data_present_flag. The relationship between slice alf enabled flag and sbce_alf_data_present_flag is as follows:
[0086] a. If sbce_alf_data_present_flag is equal to 1, slice alf enabled flag is not present and its value is inferred to be equal to 1.
[0087] b. Otherwise, i.e., slice_alf_data_present_flag is equal to 0, slice alf enabled flag is present.
[0088] 10) In one alternative to item 3), the relationship between slice alf enabled flag and slice_alf_data_present_flag is as follows:
[0089] a. If sbce_alf_data_present_flag is equal to 1, slice alf enabled flag is not present and its value is inferred to be equal to 1.
[0090] b. Otherwise if sbce_alf_data_present_flag is equal to 0 and the current slice is the first slice of the current picture, sbce_alf_enabled_flag is not present and its value is inferred to be equal to 0.
[0091] c. Otherwise when sbce_alf_data_present_flag is equal to 0, slice alf enabled flag is present.
[0092] 11) In one alternative to item 9), slice_data_present_flag and sbce_alf_enabled_flag are both always present in the slice header when sps_alf_enabled_flag is equal to 1. Additionally, the following constraints, individually or collectively or in some combination, might be applied:
[0093] a. When slice_alf_data_present_flag is equal to 1, slice alf enabled flag shall be equal to 1.
[0094] b. When sbce_alf_data_present_flag is equal to 0 and there is no slice that belong to the same picture that precedes the current slice in decoding order with slice_alf_data_present_flag equals to 1, slice_alf_enabled_flag shall be equal to 0.
[0095] 12) In one alternative to item 4), the semantic of slice_alf_data_present_flag is defined as follows:
[0096] a. slice_alf_data_present_flag equal to 1 indicates that the ALF parameters are present in the slice header.
[0097] b. slice_alf_data_present_flag equal to 0 indicates that the ALF parameters are not present in the slice header. When ALF is enabled for the slice, i.e., slice_alf_enabled_flag is equal to 1, the ALF parameters for the slice are inferred to be the same as the ALF parameters of the first slice of the picture whose slice_alf_data_present_flag is equal to 1. [0098] 13) In another alternative to item 4), the semantic of slice_alf_data_present_flag is defined as follows:
[0099] a. slice_alf_data_present_flag equal to 1 indicates that the ALF parameters are present in the slice header.
[0100] b. slice_alf_data_present_flag equal to 0 indicates that the ALF parameters are not present in the slice header. When ALF is enabled for the slice, i.e., slice_alf_enabled_flag is equal to 1, the ALF parameters for the slice are inferred to be the same as the ALF parameters of the last slice preceding the current slice of the same picture with slice_alf_data_present_flag equal to 1.
[0101] 14) In one alternative to the above ALF parameter signaling approaches, in additional to sps alf enabled flag, when sps alf enabled flag is equal to 1, a flag called alf_picture_level_param_flag is signaled to indicate whether ALF is applied on picture level, when alf_picture_level_param_flag, is equal to 1 or slice level, when alf_picture_level_param_flag is equal to 0. When alf_picture_level_param_flag is equal to 1, ALF parameters, e.g., alf_data(), are present only in the first slice header of each picture. When ALF is indicated as enabled for a slice, by slice alf enabled flag equal to 1 or alf_picture_level_param_flag is equal to 0, other than the first slice in the picture, the ALF parameters for the slice are inferred to be the same as the ALF parameters of the first slice of the picture.
[0102] 15) For signaling of parameters of other coding tools, the same approaches as described in items 1) to 13) can be applied, which can be summarized as follows:
[0103] a. A flag at parameter set, e.g., SPS, is signaled to indicate whether the tool is enabled for the bit stream.
[0104] b. If the parameter set level flag is true, then two other flags may be present in slice header. The first flag indicates whether the tool is enabled for the slice whereas the second flag indicates whether parameter for the tool is present in the slice header.
[0105] c. The relationship between the two flags in the slice header, their semantics and constraints that may govern the presence and values of the two flags may follow the points described in items 1) to 13).
[0106] 16) Alternatively, for signaling of parameters of other coding tools, in additional to tool enable flags in parameter set, e.g., SPS, PPS, etc., a flag to indicate if parameters associated with the tool, if present, apply to picture level or to slice / tile group level.
[0107] 17) When the flag mentioned in item 16) indicates that the parameters associated with the tool, if present, apply to picture level, then the parameters are signaled only in the header of the first slice / tile group of each picture. The signaled parameters in the header of the first slice / tile group are then applied to / are copied for other slices / tile groups of the same picture.
[0108] 18) The flag mentioned in item 16) is defined for signaling of reference picture set
(RPS), if RPS information is signaled.
[0109] 19) The flag mentioned in item 16) is defined for all tools that may have parameters signaled in slice header / tile group header.
[0110] 20) When the first slice in each picture is not indicated by any syntax element present in the bit stream, the following inference is used to determine whether the slice / tile group is the first in the picture: A slice / tile group is the first slice / tile group in the picture if it contains the first CTU, in CTU raster scan order, of the picture.
[0111] a. Alternatively, a slice / tile group is the first slice / tile group in the picture if it is the first slice / tile group of the picture in decoding order.
[0112] A detailed description of the first embodiment is provided.
[0113] This clause documents the embodiment of the aspects 1, 2, 3, 4, 5 and 9 of the present disclosure as summarized above. The description is in relative to the basis text, which is the latest available VVC WD (i.e., JVET-K1001-v7). slice_header( ) { Descriptor if( sps_alf_enabled_flag ) { slice_alf_enabled_flag u(l) if( slice_alf_enabled_flag ) slice_alf_data_present_flag u(l) if( slice_alf_data_present_flag ) alf_data( )
}
}
[0114] slice alf enabled flag equal to 1 specifies that adaptive loop filter is enabled and may be applied to Y, Cb, or Cr color component in the slice slice alf enabled flag equal to 0 specifies that adaptive loop filter is disabled for all color components in the slice.
[0115] slice_alf_data_present_flag equal to 1 specifies that alf_data( ) is present in the current slice header. slice_alf_data_present_flag equal to 0 specifies that alf_data( ) is not present in the current slice header. When not present, the value of slice_alf_data_present_flag is inferred to be equal to 0.
[0116] When slice alf enabled flag is equal to 1 and slice_alf_data_present_flag is equal to 0, alf_data( ) is inferred to be the same as alf_data( ) signaled in the slice header of the first slice of the current picture. The first slice of the current picture is the slice that contains the first CTU, in CTU raster scan order, of the picture.
[0117] When slice alf enabled flag is equal to 1 for one or more slices in the current picture, the value of both slice alf enabled flag and slice_alf_data_present_flag shall be equal to 1 for the first slice of the current picture.
[0118] Alternatively, the slice header signaling and semantics can be defined as follows: slice_header( ) { Descriptor if( sps_alf_enabled_flag ) { slice_alf_enabled_flag u(l) if( slice_alf_enabled_flag && !FirstSliceFlag ) slice_alf_data_present_flag u(l) if( slice_alf_data_present_flag ) alf_data( )
}
}
[0119] slice alf enabled flag equal to 1 specifies that adaptive loop filter is enabled and may be applied to Y, Cb, or Cr color component in the slice slice alf enabled flag equal to 0 specifies that adaptive loop filter is disabled for all color components in the slice.
[0120] The variable FirstSliceFlag, indicating whether the current slice is the first slice of the current picture, is set equal to 1 if the slice_address is equal to 0 and set equal to 0 otherwise. [0121] slice_alf_data_present_flag equal to 1 specifies that alf_data( ) is present in the current slice header. slice_alf_data_present_flag equal to 0 specifies that alf_data( ) is not present in the current slice header.
[0122] When not present, the value of slice_alf_data_present_flag is inferred as follows: [0123] When slice alf enabled flag is equal to 1 and FirstSliceFlag is equal to 1, slice_alf_data_present_flag is inferred to be equal to 1. [0124] When slice_alf_enabled_flag is equal to 0, slice_alf_data_present_flag is inferred to be equal to 0. The first slice of the current picture is the slice that contains the first CTU, in CTU raster scan order, of the picture.
[0125] When slice alf enabled flag is equal to 1 and slice_alf_data_present_flag is equal to 0, alf_data( ) is inferred to be the same as alf_data( ) signaled in the slice header of the first slice of the current picture.
[0126] Alternatively, the slice header signaling and semantics can be defined as follows: slice_header( ) { Descriptor if( sps_alf_enabled_flag && !FirstSliceFlag ) { slice_alf_enabled_flag u(l) if( slice_alf_enabled_flag ) slice_alf_data_present_flag u(l) if( slice_alf_data_present_flag ) alf_data( )
}
}
[0127] The variable FirstSliceFlag, indicating whether the current slice is the first slice of the current picture, is set equal to 1 if the slice_address is equal to 0 and set equal to 0 otherwise. [0128] slice alf enabled flag equal to 1 specifies that adaptive loop filter is enabled and may be applied to Y, Cb, or Cr color component in the slice slice alf enabled flag equal to 0 specifies that adaptive loop filter is disabled for all color components in the slice. When sps alf enabled flag is equal to 1 and FirstSliceFlag is equal to 1, the value of slice_alf_enabled_flag is inferred to be equal to 1.
[0129] slice_alf_data_present_flag equal to 1 specifies that alf_data( ) is present in the current slice header. slice_alf_data_present_flag equal to 0 specifies that alf_data( ) is not present in the current slice header.
[0130] When not present, the value of slice_alf_data_present_flag is inferred as follows: [0131] When slice alf enabled flag is equal to 1 and FirstSliceFlag is equal to 1, slice_alf_data_present_flag is inferred to be equal to 1.
[0132] When slice alf enabled flag is equal to 0, slice_alf_data_present_flag is inferred to be equal to 0. The first slice of the current picture is the slice that contains the first CTU, in CTU raster scan order, of the picture. [0133] When slice alf enabled flag is equal to 1 and slice_alf_data_present_flag is equal to 0, alf_data( ) is inferred to be the same as alf_data( ) signaled in the slice header of the first slice of the current picture.
[0134] Alternatively, the semantic of slice_alf_data_present_flag can be defined as follows:
[0135] slice_alf_data_present_flag equal to 1 specifies that alf_data( ) is present in the current slice header. slice_alf_data_present_flag equal to 0 specifies that alf_data( ) is not present in the current slice header. When not present, the value of slice_alf_data_present_flag is inferred to be equal to 0.
[0136] When slice alf enabled flag is equal to 1 and alf_data( ) is not present in the current slice header, alf_data( ) is inferred to be the same as alf_data( ) signaled in the slice header of the first slice of the current picture in which slice_alf_data_present_flag is equal to 1
[0137] When slice alf enabled flag is equal to 1 for the current slice and the current slice is the first slice in the current picture in which slice alf enabled flag is equal to 1, the value of slice_alf_data_present_flag shall be equal to 1.
[0138] A detailed description of the second embodiment is provided.
[0139] This clause documents the embodiment of the aspects 12, 13 and 16 of the present disclosure as summarized above. The description is in relative to the basis text, which is the latest available VVC WD (i.e., JVET-K1001-v7). seq_parameter_set_rbsp( ) { Descriptor sps alf enabled flag u(l) if( sps_alf_enabled_flag ) alf_picture_level_param_flag u(l)
}
[0140] sps alf enabled flag equal to 0 specifies that the adaptive loop filter is disabled sps alf enabled flag equal to 1 specifies that the adaptive loop filter is enabled.
[0141] alf_picture_level_param_flag equal to 1 specifies that, when more than one slice of a picture contains alf_data(), the instances of alf_data() in the different slice headers of the picture are identical. alf_picture_level_param_flag equal to 0 specifies that, when more than one slice of a picture contains alf_data(), the instances of alf_data() in the different slice headers of the picture may or may not be identical. [0142] Alternatively, the semantics of alf_picture_level_param_flag is as follows:
[0143] alf_picture_level_param flag equal to 1 indicates that alf_data(), if present, is only signaled in the header of the first slice of each picture. alf_picture_level_param_flag equal to 0 indicates that alf_data(), if present, may be signaled in the header of every slice of each picture. slice_header( ) { Descriptor slice_address u(v) if( sps_alf_enabled_flag && ( FirstSliceFlag | | !alf_picture_level_param_flag )
) { slice_alf_enabled_flag u(l) if( slice_alf_enabled_flag ) alf_data( )
}
}
[0144] slice address specifies the address of the first CTB in the slice, in CTB raster scan of a picture. The length of the slice address syntax element is Ceil( Log2( PicSizelnCtbsY ) ) bits. The value of slice address shall be in the range of 0 to PicSizelnCtbsY - 1, inclusive, and the value of slice address shall not be equal to the value of slice address of any other coded slice NAL unit of the same coded picture.
[0145] The variable CtbAddrlnRs, specifying a CTB address in CTB raster scan of a picture, is set equal to slice_address.
[0146] The variable FirstSliceFlag, indicating whether current slice is the first slice of the current picture is set equal to 1 if the slice address is equal to 0 and set equal to 0 otherwise. [0147] FIG. 1 is a block diagram that illustrates an example of a system 100 for signaling adaptive loop filter parameters in a video coding transmission system. The system 100 includes a client device 102, a network 104, and a client device 106. The client devices, e.g., 102 and 106, can transmit media over the network 104. The client devices can include, for example, a personal computer (PC), a handheld device, a mobile device, a tablet, or one or more servers, to name a few examples. The network 104 can include a wireless or a wired network. The client devices can communicate over network 104 with Bluetooth, WiFi, Cellular, ethemet, or a ZigBee connection, to name a few examples. [0148] In some implementations, client device 102 generates media 108 to transmit to client device 106 over network 104. The client device 102 compresses media 108 using one or more video compressions techniques, such as spatial prediction and/or temporal prediction, to reduce or remove redundancy in video sequences. The media 108 can include one or more segments of video. The video can be partitioned into video blocks, also referred to as tree blocks, CTBs, CTUs, CUs, or coding nodes. Each video block is partitioned into one or more pictures, such as picture 110-1, picture 110-2, and picture 110-N. Each picture is partitioned into one or more slices, such as slice 112, slice 114, and slice 116. A picture can be comprised of multiple slices. A slice is a video picture or a portion of a video picture. The video blocks can be encoded using intra-picture prediction or inter-picture prediction.
[0149] During the encoding process of the video blocks, the slices, e.g., slices 112, 114, and 116, include headers 118, 120, and 122 respectively. The headers can include parameters for video codecs for coding tools. For example, the parameters can describe coding tools such as coefficient quantization, coefficient transformation, intra prediction, inter prediction, adaptive loop filter (ALF) parameters, sample adaptive offset (SAO) parameters, and deblocking parameters. These parameters are signaled or included in the bit stream headers in order for the decoder to determine how to decode the slices. These parameters may be signaled in parameter sets, e.g., SPS, PPS, or in slice headers, e.g., AVC or HEVC. Additionally, the parameters can include data representing tile group headers or data found in other parts of the headers. In particular, when signaling the ALF parameter, a flag is set in SPS in the header that indicates whether ALF may be used for CVSs referring to the SPS. Additionally, a flag in the slice header indicates whether ALF is used for the slice. When the ALF enabling flag in the slice header is true, the ALF parameters are present in the header for the particular slice. However, the parameters for tool signaling are included in the header of every slice for a particular picture, e.g., slices 112, 114, and 116, and thus, creates unnecessary bandwidth when transmitting the media 108. For example, the signaled parameters are the same in the header of every slice in the same picture. Thus, it is desirable to avoid the redundancy of the same parameters in every slice for a particular picture.
[0150] As shown in system 100, each header in a particular slice includes various parameters. In particular, in each slice, a “slice_alf_data_present_flag” and a “slice alf enabled flag” is included in the header. Each header of the slice also includes an “sps_alf_enabled_flag” that provides various information to the decoder. Using these flags, the decoder can determine how to process each slice in a particular picture. Additionally, the encoder can signal to the decoder how to decode each slice, and reduce the amount of information transmitted over the network 104 by removing redundant information in the headers of corresponding slices.
[0151] Additionally, each slice header can include an “alf_picture_level_param_flag” that indicates whether the ALF coding is applied on a picture level. For example, when the “alf_picture_level_param_flag” is set in a particular header, the ALF coding is applied to each of the headers, and the ALF parameters are present only in the first slice header of each picture. Additionally, each header includes a variable labeled “FirstSliceFlag.” The “FirstSliceFlag” indicates whether a current slice of the current picture is the first picture or not.
[0152] FIG. 2 is a flow diagram that illustrates an example of a process 200 for signaling adaptive loop filter parameters in a video coding transmission system. The process 200 generally includes: media is received that comprises multiple pictures, wherein each picture of the multiple pictures comprise one or more slices. Data representing header information is identified for a first slice from the one or more slices from the picture. First adaptive loop filter information is determined to be included within the data representing header information in the first slice from the picture. The data representing header information for a second slice is identified from the one or more slices from the picture. Second adaptive loop filter information is determined not to be included within the data representing header information in the second slice. In response to determining the second adaptive loop filter information is not included within the data representing header information in the second slice, each of the slices of the picture are decoded using the first adaptive loop filter information. The process 200 can be performed by one or more processors of client device 102 or 106.
[0153] A processor of a client device receives media that includes multiple pictures, wherein each picture of the multiple pictures include one or more slices (202). The processor can receive the media over the network. The media can include encoded video data. The media can include multiple slices, such as a first slice and a second slice. The first slice occurs before the second slice.
[0154] The processor identifies data representing header information for a first slice from the one or more slices from the picture (204). The header information can include a bit stream of data that describes or signals the encoding of the slices for a corresponding picture. For example, the header information can include sequence parameter set information and picture parameter set information. Also, the header information can include a signaling of reference picture set (RPS) information as well as indexing data that describes a number of slices in a particular picture and an indexing number for each slice. [0155] The processor determines first adaptive loop filter information and first enabled adaptive loop filter information are included within the data representing header information in the first slice from the picture (206). The first adaptive loop filter information can correspond to the first slice from the picture or correspond to each slice for a particular picture. For example, the first adaptive loop filter information can correspond to the slice_alf_data_present flag. Additionally, the first enabled adaptive loop filter information can correspond to the slice alf enabled flag. In some examples, the data representing header information can indicate that the first adaptive loop filter information or other adaptive loop filter information corresponds to each picture in the media. In the case that the adaptive loop filter information corresponds to each picture in the media, then the subsequent slices would also correspond to the adaptive loop filter information. In some cases, if the header information indicates that the adaptive loop filter information corresponds to each picture in the media, then the adaptive loop filter information is only included the header information of the first slice of each picture from the media. In some cases, if the data representing the header information indicates that the adaptive loop filter information does not correspond to each picture in the media, then the processor is required to analyze the header for each slice of the picture to determine whether adaptive loop filter information is include within each of the one or more slices. This information for a particular slice will dictate how a particular slice is decoded. [0156] The processor determines the first adaptive loop filter information and the first enabled adaptive loop filter information are enabled (208).
[0157] The processor identifies data representing header information for a second slice from the one or more slices from the picture (210). The first slice occurs before the second slice in the picture. The processor performs similar features for 208 as performed in 206. [0158] The processor determines second adaptive loop filter information is not included and second enabled adaptive loop filter information is included within the data representing header information in the second slice from the picture (212). For example, the second adaptive loop filter information corresponds to the slice_alf_data_present flag. Additionally, the second enabled adaptive loop filter information can correspond to the slice alf enabled flag. In this example, the processor determines the slice_alf_data_present_flag is not present and the slice alf enabled flag is enabled with a value of one.
[0159] In response to determining the second adaptive loop filter information is not included and the second enabled adaptive loop filter information is enabled, the processor decodes each of the slices of the picture using the first adaptive loop filter information (214). In some cases, the data representing header information in the first slice indicates that each picture should be decoded using the first adaptive loop filter information.
[0160] In some implementations, the processor can determine that the second adaptive loop filter information is included within the data representing header information in the second slice from the picture. In response to determining the second adaptive loop filter information is included within the data representing header information in the second slice, the processor decode the first slice using the first adaptive loop filter information and decodes the second slice using the second adaptive loop filter information.
[0161] FIG. 3 is a schematic diagram of anetwork device 300, e.g., coding device, encoder, decoder, etc., according to an embodiment of the disclosure. The network device 300 is suitable for implementing the disclosed embodiments as described herein. The network device 300 comprises ingress ports 310 and receiver units (Rx) 320 for receiving data; a processor, logic unit, or central processing unit (CPU) 330 to process the data; transmitter units (Tx) 340 and egress ports 350 for transmitting the data; and a memory 360 for storing the data. The network device 300 may also comprise optical-to-electrical (OE) components and electrical- to-optical (EO) components coupled to the ingress ports 310, the receiver units 320, the transmitter units 340, and the egress ports 350 for egress or ingress of optical or electrical signals.
[0162] The processor 330 is implemented by hardware and software. The processor 330 may be implemented as one or more CPU chips, cores (e.g., as a multi-core processor), field- programmable gate arrays (FPGAs), application specific integrated circuits (ASICs), and digital signal processors (DSPs). The processor 330 is in communication with the ingress ports 310, receiver units 320, transmitter units 340, egress ports 350, and memory 360. The processor 330 comprises a coding module 370. The coding module 370 implements the disclosed embodiments described above. For instance, the coding module 370 implements, processes, prepares, or provides the various coding functions. The inclusion of the coding module 370 therefore provides a substantial improvement to the functionality of the network device 300 and effects a transformation of the network device 300 to a different state. Alternatively, the coding module 370 is implemented as instructions stored in the memory 360 and executed by the processor 330.
[0163] The memory 360 comprises one or more disks, tape drives, and solid-state drives and may be used as an over-flow data storage device, to store programs when such programs are selected for execution, and to store instructions and data that are read during program execution. The memory 360 may be volatile and/or non-volatile and may be read-only memory (ROM), random access memory (RAM), ternary content-addressable memory (TCAM), and/or static random-access memory (SRAM).
[0164] Additional details of this disclosure are presented in Appendix A, which is incorporated by reference herein.
[0165] While several embodiments have been provided in the present disclosure, it should be understood that the disclosed systems and methods might be embodied in many other specific forms without departing from the spirit or scope of the present disclosure. The present examples are to be considered as illustrative and not restrictive, and the intention is not to be limited to the details given herein. For example, the various elements or components may be combined or integrated in another system or certain features may be omitted, or not implemented.
[0166] In addition, techniques, systems, subsystems, and methods described and illustrated in the various embodiments as discrete or separate may be combined or integrated with other systems, modules, techniques, or methods without departing from the scope of the present disclosure. Other items shown or discussed as coupled or directly coupled or communicating with each other may be indirectly coupled or communicating through some interface, device, or intermediate component whether electrically, mechanically, or otherwise. Other examples of changes, substitutions, and alterations are ascertainable by one skilled in the art and could be made without departing from the spirit and scope disclosed herein.

Claims

1. A method of video coding processing, comprising: receiving, by one or more processors, media that comprises multiple pictures, wherein each picture of the multiple pictures comprise one or more slices; identifying, by the one or more processors, data representing header information for a first slice from the one or more slices from the picture; determining, by the one or more processors, first adaptive loop filter information and first enabled adaptive loop filter information are included within the data representing header information in the first slice from the picture; determining, by the one or more processors, the first adaptive loop filter information and the first enabled adaptive loop filter information are enabled; identifying, by the one or more processors, data representing header information for a second slice from the one or more slices from the picture; determining, by the one or more processors, second adaptive loop filter information is not included and second enabled adaptive loop filter information is included within the data representing header information in the second slice from the picture; and in response to determining the second adaptive loop filter information is not included and the second enabled adaptive loop filter information is enabled, decoding, by the one or more processors, each of the slices of the picture using the first adaptive loop filter information.
2. The method of claim 1, wherein the first slice occurs before the second slice in the picture.
3. The method of claim 1, further comprising: determining, by the one or more processors, the second adaptive loop filter information and the second enabled adaptive loop filter information are included within the data representing header information in the second slice from the picture; and in response to determining the second adaptive loop filter information is enabled and the second enabled adaptive loop filter information is enabled, decoding, by the one or more processors, the first slice using the first adaptive loop filter information and the second slice using the second adaptive loop filter information.
4. The method of claim 1, wherein the header information comprises sequence parameter set information and picture parameter set information.
5. The method of claim 1, further comprising: determining, by the one or more processors, data representing header information from the picture that indicates whether adaptive loop filter information is included within the one or more slices of the picture.
6. The method of claim 5, further comprising: in response to determining the data representing the header information from the picture includes the adaptive loop filter information, determining, by the one or more processors, the adaptive loop filter information is enabled; and in response to determining the adaptive loop filter information is enabled, determining, by the one or more processors, the adaptive loop filter information is included only in the header information of the first slice of each picture of the media.
7. The method of claim 5, further comprising: in response to determining the data representing the header information from the picture includes the adaptive loop filter information, determining, by the one or more processors, the adaptive loop filter information is not enabled for the picture; in response to determining the adaptive loop filter information is not enabled, analyzing, by the one or more processors, headers for each of the one or more slices of the picture to determine whether the adaptive loop filter information is included within the header for each of the one or more slices; and in response to determining the adaptive loop filter information is included within the header for each of the one or more slices of the picture, decoding, by the one or more processors, each of the slices of the picture using the adaptive loop filter information from the header of the first slice of the picture.
8 The method of claim 1, further comprising: determining, by the one or more processors, other header information in each of the one or more slices, wherein the other header information comprises signaling of reference picture set (RPS) and indexing data for a number of slices in the picture.
9. A system, comprising: one or more computers; and one or more storage devices storing instructions that are operable, when executed by the one or more computers, to cause the one or more computers to perform operations comprising: receiving, by one or more processors, media that comprises multiple pictures, wherein each picture of the multiple pictures comprise one or more slices; identifying, by the one or more processors, data representing header information for a first slice from the one or more slices from the picture; determining, by the one or more processors, first adaptive loop filter information and first enabled adaptive loop filter information are included within the data representing header information in the first slice from the picture; determining, by the one or more processors, the first adaptive loop filter information and the first enabled adaptive loop filter information are enabled; identifying, by the one or more processors, data representing header information for a second slice from the one or more slices from the picture; determining, by the one or more processors, second adaptive loop filter information is not included and second enabled adaptive loop filter information is included within the data representing header information in the second slice from the picture; and in response to determining the second adaptive loop filter information is not included and the second enabled adaptive loop filter information is enabled, decoding, by the one or more processors, each of the slices of the picture using the first adaptive loop filter information.
10. The system of claim 9, wherein the first slice occurs before the second slice in the picture.
11. The system of claim 9, wherein the operations further comprise: determining, by the one or more processors, the second adaptive loop filter information and the second enabled adaptive loop filter information are included within the data representing header information in the second slice from the picture; and in response to determining the second adaptive loop filter information is enabled and the second enabled adaptive loop filter information is enabled, decoding, by the one or more processors, the first slice using the first adaptive loop filter information and the second slice using the second adaptive loop filter information.
12. The system of claim 9, wherein the header information comprises sequence parameter set information and picture parameter set information.
13. The system of claim 9, wherein the operations further comprise: determining, by the one or more processors, data representing header information from the picture that indicates whether adaptive loop filter information is included within the one or more slices of the picture.
14. The system of claim 13, wherein the operations further comprise: in response to determining the data representing the header information from the picture includes the adaptive loop filter information, determining, by the one or more processors, the adaptive loop filter information is enabled; and in response to determining the adaptive loop filter information is enabled, determining, by the one or more processors, the adaptive loop filter information is included only in the header information of the first slice of each picture of the media.
15. The system of claim 13, wherein the operations further comprise: in response to determining the data representing the header information from the picture includes the adaptive loop filter information, determining, by the one or more processors, the adaptive loop filter information is not enabled for the picture; in response to determining the adaptive loop filter information is not enabled, analyzing, by the one or more processors, headers for each of the one or more slices of the picture to determine whether the adaptive loop filter information is included within the header for each of the one or more slices; and in response to determining the adaptive loop filter information is included within the header for each of the one or more slices of the picture, decoding, by the one or more processors, each of the slices of the picture using the adaptive loop filter information from the header of the first slice of the picture.
16. The system of claim 9, wherein the operations further comprise: determining, by the one or more processors, other header information in each of the one or more slices, wherein the other header information comprises signaling of reference picture set (RPS) and indexing data for a number of slices in the picture.
17. One or more non-transitory computer-readable media storing instructions that, when executed by the one or more computers, cause the one or more computers to perform operations that include: receiving, by one or more processors, media that comprises multiple pictures, wherein each picture of the multiple pictures comprise one or more slices; identifying, by the one or more processors, data representing header information for a first slice from the one or more slices from the picture; determining, by the one or more processors, first adaptive loop filter information and first enabled adaptive loop filter information are included within the data representing header information in the first slice from the picture; determining, by the one or more processors, the first adaptive loop filter information and the first enabled adaptive loop filter information are enabled; identifying, by the one or more processors, data representing header information for a second slice from the one or more slices from the picture; determining, by the one or more processors, second adaptive loop filter information is not included and second enabled adaptive loop filter information is included within the data representing header information in the second slice from the picture; and in response to determining the second adaptive loop filter information is not included and the second enabled adaptive loop filter information is enabled, decoding, by the one or more processors, each of the slices of the picture using the first adaptive loop filter information.
18. The one or more non-transitory computer-readable media of claim 17, wherein the first slice occurs before the second slice in the picture.
19. The one or more non-transitory computer-readable media of claim 17, wherein the operations further comprise: determining, by the one or more processors, the second adaptive loop filter information and the second enabled adaptive loop filter information are included within the data representing header information in the second slice from the picture; and in response to determining the second adaptive loop filter information is enabled and the second enabled adaptive loop filter information is enabled, decoding, by the one or more processors, the first slice using the first adaptive loop filter information and the second slice using the second adaptive loop filter information.
20. The one or more non-transitory computer-readable media of claim 17, wherein the header information comprises sequence parameter set information and picture parameter set information.
PCT/US2019/049779 2019-09-05 2019-09-05 Efficient adaptive loop filter parameter signaling in video coding WO2021045765A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/US2019/049779 WO2021045765A1 (en) 2019-09-05 2019-09-05 Efficient adaptive loop filter parameter signaling in video coding

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2019/049779 WO2021045765A1 (en) 2019-09-05 2019-09-05 Efficient adaptive loop filter parameter signaling in video coding

Publications (1)

Publication Number Publication Date
WO2021045765A1 true WO2021045765A1 (en) 2021-03-11

Family

ID=74853234

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2019/049779 WO2021045765A1 (en) 2019-09-05 2019-09-05 Efficient adaptive loop filter parameter signaling in video coding

Country Status (1)

Country Link
WO (1) WO2021045765A1 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230043717A1 (en) * 2020-03-11 2023-02-09 Beijing Bytedance Network Technology Co., Ltd. Adaptation parameter set signaling based on color format
US11991397B2 (en) 2020-05-31 2024-05-21 Beijing Bytedance Network Technology Co., Ltd. Palette mode with local dual tree modetype definition

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120230397A1 (en) * 2011-03-10 2012-09-13 Canon Kabushiki Kaisha Method and device for encoding image data, and method and device for decoding image data
US20130022104A1 (en) * 2011-07-18 2013-01-24 Qualcomm Incorporated Adaptation parameter sets for video coding
US20140093180A1 (en) * 2012-09-26 2014-04-03 Panasonic Corporation Image coding method, image decoding method, image coding apparatus, image decoding apparatus, and image coding and decoding apparatus
US20150382025A1 (en) * 2014-06-26 2015-12-31 Futurewei Technologies, Inc. Method and device for providing depth based block partitioning in high efficiency video coding
US20190238845A1 (en) * 2018-01-26 2019-08-01 Qualcomm Incorporated Adaptive loop filtering on deblocking filter results in video coding

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120230397A1 (en) * 2011-03-10 2012-09-13 Canon Kabushiki Kaisha Method and device for encoding image data, and method and device for decoding image data
US20130022104A1 (en) * 2011-07-18 2013-01-24 Qualcomm Incorporated Adaptation parameter sets for video coding
US20140093180A1 (en) * 2012-09-26 2014-04-03 Panasonic Corporation Image coding method, image decoding method, image coding apparatus, image decoding apparatus, and image coding and decoding apparatus
US20150382025A1 (en) * 2014-06-26 2015-12-31 Futurewei Technologies, Inc. Method and device for providing depth based block partitioning in high efficiency video coding
US20190238845A1 (en) * 2018-01-26 2019-08-01 Qualcomm Incorporated Adaptive loop filtering on deblocking filter results in video coding

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230043717A1 (en) * 2020-03-11 2023-02-09 Beijing Bytedance Network Technology Co., Ltd. Adaptation parameter set signaling based on color format
US11856235B2 (en) 2020-03-11 2023-12-26 Beijing Bytedance Network Technology Co., Ltd. Adaptive loop filtering
US11930219B2 (en) * 2020-03-11 2024-03-12 Beijing Bytedance Network Technology Co., Ltd. Adaptation parameter set signaling based on color format
US11968403B2 (en) 2020-03-11 2024-04-23 Beijing Bytedance Netwrok Technology Co., Ltd. Transform skip based residual coding
US11991397B2 (en) 2020-05-31 2024-05-21 Beijing Bytedance Network Technology Co., Ltd. Palette mode with local dual tree modetype definition

Similar Documents

Publication Publication Date Title
US11968407B2 (en) Tile based addressing in video coding
CN110024401B (en) Modified adaptive loop filter temporal prediction for temporal scalability support
US11729401B2 (en) Tile group signaling in video coding
US20220217383A1 (en) Indication Of One Slice Per SubPicture In Subpicture-Based Video Coding
US11425377B2 (en) Arbitrary and wrap-around tile grouping
US11889087B2 (en) Tile group assignment for raster scan and rectangular tile groups in video coding
JP2023095946A (en) Video encoder, video decoder and corresponding method
JP2022540397A (en) Video Coding Bitstream Extraction Using Identifier Signaling
WO2021045765A1 (en) Efficient adaptive loop filter parameter signaling in video coding
KR102667823B1 (en) Slicing and Tiling in Video Coding
KR20240073171A (en) Slicing and tiling in video coding

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 19944252

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 19944252

Country of ref document: EP

Kind code of ref document: A1