Method and apparatus for selecting an encoding mode for encoding / decoding a residual block
By evaluating and selecting coding modes with the lowest rate distortion cost, the problem of poor coding performance in the prior art is solved, and more efficient coding performance and reduced complexity are achieved.
Patent Information
- Application Number
- CN202210149438.0
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2017-01-11
- Filing Date
- 2018-01-08
- Publication Date
- 2025-06-20
- Estimated Expiration
- 2038-01-08
AI Technical Summary
The prior art lacks efficient selection processing when selecting an encoding mode for encoding/decoding the residual block, resulting in poor encoding performance.
By evaluating the rate distortion cost of different candidate coding modes, the encoding mode with the lowest rate distortion cost is selected for encoding. Specifically, the EMT, NSST, or transform skip mode is enabled or disabled, and whether the second encoding mode is enabled is determined according to the first encoding mode.
Improves coding performance, reduces the complexity and performance loss on the coding side, and achieves more effective coding mode selection.
Smart Images

Figure CN114554216B_ABST
Abstract
Description
[0001] This application is a divisional application of the invention patent application with the application date of January 8, 2018, application number 201880011377.3, and invention title "Method and apparatus for selecting an encoding mode for encoding / decoding a residual block". Technical Field
[0002] This principle generally relates to picture / video encoding and decoding. Specifically but not exclusively, the technical field of this principle relates to selecting an encoding mode for encoding / decoding residual data. Background Art
[0003] This section aims to introduce various aspects of the technology to the reader, which may be related to various aspects of this principle described and / or claimed below. It is believed that this discussion will help provide background information to the reader to better understand various aspects of this principle. Therefore, it should be understood that these statements are to be read in this context and not as an admission of prior art.
[0004] Hereinafter, a picture includes an array of one or several samplings (pixel values) of a specific picture / video format, which specifies all information related to the pixel values of the picture (or video) and all information that can be used, for example, by a display and / or any other device to visualize and / or decode the picture (or video). A picture includes at least one component in the form of a first sampling array, usually a luminance (or luminace) component, and possibly includes at least one other component in the form of at least one other sampling array, usually a color component. Alternatively, equivalently, the same information can also be represented by a set of color sampling arrays, such as the traditional three-color RGB representation.
[0005] The pixel value is represented by a vector of C values, where C is the number of components. Each value of the vector is represented by a plurality of bits that define the maximum dynamic range of the pixel value.
[0006] To encode a picture of a video sequence, video compression methods generally divide the picture into a set of pixel blocks. Then, the reconstructed information is used to predict each block, corresponding to the previously encoded / decoded block in the current picture. Intra-frame or inter-frame prediction of the current block is used to perform the encoding of the current block, and the prediction residual or "residual block" corresponding to the difference between the current block and the predicted block is calculated. Then, the resulting residual block is transformed, for example, by using a transform such as a DCT (Discrete Cosine Transform) or DST (Discrete Sine Transform) type transform. Then, the coefficients of the transformed residual block are quantized and encoded by entropy coding, and transmitted to the decoder.
[0007] In the HEVC video compression standard (“ITU-T H.265 ITU Telecommunication Standardization Sector (10 / 2014), Series H: Audiovisual and Multimedia Systems, Audiovisual service infrastructure - Moving picture coding, High Efficiency Video Coding, Recommendation ITU-T H.265”), a picture is partitioned into Coding Tree Units (CTUs), which can be sized 64×64, 128×128, or 256×256 pixels. Each CTU can be further subdivided using quadtree partitioning, where each leaf of the quadtree is called a Coding Unit (CU). Then, each CU is given some intra or inter prediction parameters. To this end, the CU is spatially split into one or more Prediction Units (PUs), which can have a square or rectangular shape. Each PU is assigned some prediction information, such as for example motion information and / or spatial intra prediction.
[0008] According to the HEVC video compression standard, each CU can be further subdivided into square Transform Units (TUs) for performing the transform of the residual block.
[0009] The Quadtree plus Binary Tree (QTBT) coding tool (“Joint Exploration Model Description Test Model 3”, document JVET-C1001_v3, ISO / IEC JTC1 / SC29 / WG11 Joint Video Exploration Team, 3rd meeting, May 26 - June 1, 2015, Geneva, CH) provides a more flexible CTU representation than the CU / PU / TU arrangement of the HEVC standard. The Quadtree plus Binary Tree (QTBT) coding tool includes a coding tree, where the coding units can be split in both quadtree and binary tree fashions.
[0010] On the encoder side, the splitting of the CU is determined through a rate-distortion optimization process, which includes determining the QTBT representation of the CTU with the minimum rate-distortion cost. In the QTBT representation, the CU has a square or rectangular shape. The size of the coding unit is always a power of 2 and typically ranges from 4 to 128. With the QTBT representation, the CU is no longer split into PUs or TUs. With the QTBT representation, the transform of the residual block is performed on blocks sized as a power of 2, and the existing separable transforms typically used for square blocks and the fast implementation methods of such transforms can be reused.
[0011] Thus, when splitting the residual block according to the CU / PU / TU arrangement of HEVC or according to the CU itself when using QTBT, the above-mentioned residual block can indicate the TU. The above definition of the residual block is given for illustrative purposes only and does not limit the scope of the present principle, which applies to any residual data set obtained from a picture.
[0012] Transforming the residual block is effective when most of the energy of the residual block is concentrated on a few transformed coefficients.
[0013] 2D separable or non-separable transforms based on the well-known DCT (Discrete Cosine Transform) and / or DST (Discrete Sine Transform) transforms are commonly used in video coding because most of the picture energy is concentrated on a few frequencies represented by a finite number of significant transformed coefficients.
[0014] For example, the Joint Exploration Test Model (JEM) (ITU-T SG16 WP3 and ISO / IEC JTC1 / SC29 / WG11 Joint Collaborative Team on Video Coding, JCTVC-V1002, 22nd meeting, October 2015) built on top of the HEVC Test Model (C. Rosewarne, B. Bross, M. Naccari, K. Sharman, G. J. Sullivan, “High Efficiency Video Coding (HEVC) Test Model 16 (HM 16) Encoder Description Update 4”) defines multiple candidate coding modes for transforming the data of residual blocks.
[0015] Some of these candidate coding modes (referred to as Enhanced Multiple Transforms (EMT)) define 2D separable transforms by combining two 1D DCT and / or DST transforms (one for horizontal and one for vertical).
[0016] EMT is used to encode residual data for both inter-coded blocks and intra-coded blocks.
[0017] For intra-residual coding, due to the different residual statistics attributed to different intra-prediction modes, four 1D transforms represented as DST-VII, DCT-VIII, DST-I, and DCT-V are used to form three transform subsets, as shown in Table 1. First, one of these three transform subsets is selected based on the intra-prediction mode of the residual block to be transformed, as specified in Table 2.
[0018] Transformation set Transformation candidate 0 DST-VII, DCT-VIII 1 DST-VII, DST-I 2 DST-VII, DCT-V
[0019] Table 1
[0020]
[0021] Table 2
[0022] For example, when the intra prediction mode of the residual block to be transformed is equal to 8, a transform subset index equal to 0 for horizontal, i.e., DST-VII or DCT-VIII, can be used, and a transform subset index equal to 2 for vertical, i.e., DST-VII or DCT-VIII, can be used. Next, for each of the identified transform subsets for horizontal (H) and vertical (V), one of the two transform candidates is determined, and an encoding pattern is formed for the transform candidates determined in the identified transform subsets for both horizontal and vertical, hereinafter referred to as the EMT pattern. Hereinafter, the EMT pattern is specified by an index denoted as EMTidx.
[0023] Following the previous example, DST-VII is used for the horizontal transform, and DCT-VIII is used for the vertical transform.
[0024] Hereinafter, nbEMTmodes relates to the maximum number of 2D separable transforms. According to Table 1, nbEMTmodes = 4 and EMTidx can be equal to four values, e.g., 0, 1, 2, or 3, to indicate each of the above 2D separable transforms.
[0025] For inter-frame residual coding, only one 2D separable transform is used in JEM, which is defined from DST-VII and DCT-VIII. The above 2D separable transform is used for all inter-frame modes and for both horizontal and vertical transforms.
[0026] In order to apply the same 2D separable transform to the residual block at the decoder side, EMT requires some signaling. In JEM, when using the CU / PU / TU arrangement in HEVC, it is signaled whether EMT is applicable through a CU-level flag (hereinafter denoted as EMTflag), and when the residual block (here TU) belongs to a CU enabled for EMT (EMTflag = 1), the EMT mode selected for the above residual block (TU) at the coding side is signaled through the index EMTidx.
[0027] When EMTflag is equal to 0, i.e., for a CU disabled for EMT, the normal HEVC transform (denoted as DCT-II) is applied to encode the residual block (each TU of the CU), and when EMTflag is equal to 1, i.e., for a CU enabled for EMT, the normal HEVC transform DCT-II is replaced by the 2D separable transform identified by EMTidx.
[0028] For the luma coding block within a CU enabled for EMT, two additional flags are signaled to identify the 1D horizontal and vertical transforms to be used.
[0029] Some other candidate coding modes defined in the current JEM (commonly represented as the non-separable second-order transform NSST) involve 2D non-separable transform matrices, each of which defines a 2D non-separable transform.
[0030] When using the CU / PU / TU arrangement of HEVC, the NSST can be applied only to the intra-coded residual blocks, such as the TUs within an intra-coded CU. However, the NSST can also be applied after the EMT, i.e., to the transformed residual blocks.
[0031] Due to the different residual statistics attributed to different intra-prediction modes, several 2D non-separable transform matrices have been defined, and one of these 2D non-separable transform matrices is selected based on the intra-prediction mode of the residual block to be transformed. The selected 2D non-separable transform matrix defines the coding mode, hereinafter referred to as the NSST mode, and the NSST mode is identified by an index denoted as NSSTidx.
[0032] In JEM, several transform subsets are defined, each transform subset including three 2D non-separable transform matrices. Therefore, a transform subset is first selected based on the intra-prediction mode of the residual block to be transformed, as specified in Table 3.
[0033] Luma intra mode 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 15 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 Transformation set index 0 0 1 2 1 2 1 2 3 4 3 4 3 4 5 5 5 6 6 6 7 7 7 8 9 8 9 8 9 10 11 10 11 10 Luma intra mode 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67(UM) Transformation set index 11 10 11 10 11 10 9 8 9 8 9 8 7 7 7 6 6 6 5 5 5 4 3 4 3 4 3 2 1 2 1 2 1 0
[0034] Table 3
[0035] Next, one of the three 2D non-separable transform matrices is determined from the above-selected transform subset, and the determined 2D non-separable transform matrix forms the NSST mode identified by the index NSSTidx.
[0036] In order to apply the same 2D non-separable transform to the residual block at the decoder side, the NSST requires some signaling. In JEM, when using the CU / PU / TU arrangement in HEVC, for each residual block (for each TU of a CU), when there are more than one non-zero coefficients in the above residual block (CU), it is signaled at the CU level by the index NSSTidx whether the NSST is applicable. When the NSSTidx is not signaled, the default value is zero (NSST disabled).
[0037] The EMT and NSST define their own candidate coding modes (EMT mode and NSST mode), which can interact with the transform skip mode, which is set to deactivate the transform and directly code the residual block in the spatial domain. The transform skip mode is signaled by the flag Tskip in HEVC.
[0038] As described above, HEVC provides multiple opportunities for transforming residual blocks, including EMT, NSST, or a combination thereof.
[0039] However, for a given residual block to be transformed, a selection process is needed to determine which of those EMT or NSST candidate coding modes (or a combination thereof) should be used to transform the above-mentioned given residual block.
[0040] Figure 1 The figure illustrates a method for selecting a coding mode for encoding a residual block when EMT, NSST, and transform skip modes interact with each other according to JEM.
[0041] Basically, the method continuously evaluates the rate-distortion cost (RDO cost) of encoding the residual block (here, the TU within the CU to be encoded) for each candidate coding mode and selects the one with the lowest rate-distortion cost.
[0042] As previously explained, the EMT mode is defined by EMTflag, i.e., at the CU level, whether to enable or disable using the EMT mode to transform the residual block (the TU within the CU), and a specific EMT mode is defined by EMTidx for the residual block (the TU belonging to the CU with EMT enabled). In addition, the NSST mode is defined by NSSTidx at the CU level. NSSTidx defines whether NSST is enabled (NSSTidx ≠ 0) or disabled (NSSTidx = 0), and if enabled, a specific NSST mode is defined for the residual block (the TU within the CU).
[0043] All parameters of the method, namely EMTflag, EMTidx, nbEMTmodes (the maximum number of EMT modes), NSSTidx, nbNSSTmodes (the maximum number of NSST modes), are initialized. Here, NSSTidx = EMTflag = EMTidx = Tskip = 0, and nbNSSTmodes = nbEMTmodes = 4.
[0044] In step 110, the module calculates the rate-distortion cost for encoding the residual block (the TU within the CU) according to the coding mode determined from the current values of EMTidx, EMTflag, and NSSTidx. Note that the above-mentioned coding mode can be an EMT mode, an NSST mode, or an EMT mode followed by an NSST mode, as described above. If the rate-distortion cost is the lowest (or the first), the cost and parameters are stored as "selected parameters".
[0045] Next, steps 120 - 190 determine the update of the current values of the parameters in order to enable or disable a specific combination of the EMT mode, the NSST mode, and the transform skip mode.
[0046] More precisely, in step 120, the module checks whether the EMTidx value is strictly lower than the value T calculated from the EMTflag, Tskip, and nbEMTmodes values.
[0047] According to the embodiment, when EMTflag = 1 and Tskip = 0, that is, when EMT is enabled and the skip mode of TU is disabled, the value T is equal to nbEMTmodes - 1. Otherwise, T = 0.
[0048] The value T is calculated by:
[0049] ((EMTflag &&!Tskip)? nbEMTmodes - 1 : 0)
[0050] If the EMTidx value is strictly lower than the value T, then in step 130, the EMTidx value is incremented by 1 in order to consider another EMT mode. Step 110 follows step 130.
[0051] Otherwise, in step 140, the module checks whether the Tskip value is strictly lower than 1.
[0052] If the Tskip value is strictly lower than 1, then the Tskip value is incremented by 1 (step 150) in order to consider the Tskip mode for encoding the residual block. Step 110 follows step 150.
[0053] Otherwise, in step 160, the module checks whether the EMTflag value is strictly lower than 1.
[0054] If the EMTflag value is strictly lower than 1, then the EMTflag value is incremented by 1 (step 170). Step 110 follows step 170.
[0055] Otherwise, in step 180, the module checks whether the NSSTidx value is strictly lower than (nbNSSTmodes - 1).
[0056] If the NSSTidx value is strictly lower than (nbNSSTmodes - 1), then NSSTidx is incremented by 1 (step 190). Step 110 follows step 190.
[0057] Otherwise, the method ends and the current values of the parameters are used for encoding the residual block.
[0058] Once the coding mode selected for encoding the residual block (TU of the CU) is determined, the values of the parameters EMTflag, Tskip, EMTidx, and NSSTidx should be encoded in the bitstream (and correspondingly, decoded from the bitstream) in order to define the same coding mode of the residual block on the decoding side.
[0059] Figure 2 A block diagram showing the steps of a method for encoding (correspondingly, decoding) the parameters required for encoding (correspondingly, decoding) a residual block.
[0060] In step 200, the module checks whether the use of EMT is enabled (use - EMT = 1). Note that use - EMT is a parameter of the encoder / decoder stored in the SPS (Sequence Parameter Set) or PPS (Picture Parameter Set) in HEVC.
[0061] If EMT is enabled, then in step 210, the module encodes the EMTflag (for the current CU) into the bitstream (correspondingly, decodes the EMTflag from the bitstream).
[0062] Otherwise, in step 220, the module sets the EMTflag to be equal to 0.
[0063] In step 230, the module checks whether EMTflag = 0.
[0064] If EMTflag = 0 or after step 200, then in step 240, the module encodes the Tskip value ( Figure 1 output) into the bitstream (correspondingly, decodes the EMTflag from the bitstream F).
[0065] If EMTflag = 1 (step 230), then in step 250, the module checks whether the Tskip value is equal to 0 and EMTflag is equal to 1 (i.e., encoding the residual block using the EMT mode).
[0066] If the Tskip value is equal to 0 and EMTflag is equal to 1, then in step 260, the module encodes the EMTidx value ( Figure 1 output) into the bitstream (correspondingly, decodes from the bitstream).
[0067] Otherwise, step 270 comes after step 250.
[0068] In step 270, the module checks whether the Tskip value is equal to 0 and whether the use of NSST is enabled (use - NSST = 1). Note that use - NSST is a parameter of the encoder / decoder stored in the SPS (Sequence Parameter Set) or PPS (Picture Parameter Set).
[0069] If the Tskip value is equal to 0 and use - NSST = 1 (i.e., encoding the residual block using the NSST mode), then in step 280, the module encodes the NSSTidx value ( Figure 1 output) into the bitstream (correspondingly, decodes from the bitstream).
[0070] Otherwise, the process ends.
[0071] Based on this selection of the coding mode, the value of Tskip is systematically checked (Steps 250, Step 270) so that when the skip mode is selected to encode the residual block, the use of the EMT or NSST coding mode is disabled. Therefore, the Tskip flag should be signaled for each residual block (each TU of the CU) to be encoded. In addition, the EMT mode and the NSST mode are selected independently of each other, allowing an exhaustive search for the best coding mode from all possible candidate coding modes, but with high complexity on the encoding side. SUMMARY OF THE INVENTION
[0072] A brief overview of the present principle is presented below to provide a basic understanding of some aspects of the present principle. This overview is not an extensive survey of the present principle. It is not intended to identify the key or important elements of the present principle. The following overview only presents some aspects of the present principle in a simplified form as a prelude to the more detailed description provided below.
[0073] The present disclosure proposes a method, including: at least determining that a first coding mode is disabled; in response to the determination, enabling decoding of a residual block according to a second coding mode; and decoding the residual block according to the second coding mode; wherein, when the first coding mode is enabled, the first coding mode indicates a first 2D transform for encoding the residual block, wherein the first 2D transform is from a set of non-separable 2D transforms; wherein, when the second coding mode is enabled, the second coding mode indicates a second 2D transform for encoding the residual block, wherein the second 2D transform is from a set of separable 2D transforms.
[0074] The present disclosure proposes another method, including: at least determining that a first coding mode is disabled; in response to the determination, enabling encoding of a residual block according to a second coding mode; and encoding the residual block according to the second coding mode; wherein, when the first coding mode is enabled, the first coding mode indicates a first 2D transform for encoding the residual block, wherein the first 2D transform is from a set of non-separable 2D transforms; wherein, when the second coding mode is enabled, the second coding mode indicates a second 2D transform for encoding the residual block, wherein the second 2D transform is from a set of separable 2D transforms.
[0075] The present disclosure provides a device including at least one processor, the processor being configured to: at least determine that a first coding mode is disabled; in response to the determination, enable encoding of a residual block according to a second coding mode; and encode the residual block according to the second coding mode; wherein, when the first coding mode is enabled, the first coding mode indicates a first 2D transform for encoding the residual block, wherein the first 2D transform is from a set of non-separable 2D transforms; wherein, when the second coding mode is enabled, the second coding mode indicates a second 2D transform for encoding the residual block, wherein the second 2D transform is from a set of separable 2D transforms.
[0076] The present disclosure provides a non-transitory computer-readable storage medium including instructions that cause a processor to perform the following operations: at least determine that a first coding mode is disabled; in response to the determination, enable decoding of a residual block according to a second coding mode; and decode the residual block according to the second coding mode; wherein, when the first coding mode is enabled, the first coding mode indicates a first 2D transform for encoding the residual block, wherein the first 2D transform is from a set of non-separable 2D transforms; wherein, when the second coding mode is enabled, the second coding mode indicates a second 2D transform for encoding the residual block, wherein the second 2D transform is from a set of separable 2D transforms.
[0077] The present disclosure provides another method for selecting a coding mode for encoding a residual block, wherein selecting the coding mode includes: - for each candidate coding mode from a set of candidate coding modes, determining a rate-distortion cost of encoding the residual block, the set of candidate coding modes including at least a first coding mode indicating a non-separable 2D transform, a second coding mode indicating a separable 2D transform, and a transform skip coding mode, and - selecting the candidate coding mode having the lowest rate-distortion cost.
[0078] This principle proposes to utilize a method for encoding a residual block to remedy at least one drawback of the prior art, the method including:
[0079] - when encoding of a residual block according to a coding mode related to a first 2D transform is enabled, obtaining a first coding mode related to the first 2D transform;
[0080] - when encoding of a residual block according to a coding mode related to a second 2D transform is enabled, obtaining a second coding mode related to the second 2D transform; and
[0081] -Encode the residual block according to the first coding mode or the second coding mode or both. The method is characterized in that enabling or disabling the encoding of the residual block according to the second coding mode depends on the first coding mode.
[0082] The method allows restricting the overall coding mode, which results in reduced coding-side complexity and reduced and acceptable performance loss.
[0083] According to an embodiment, the first 2D transform is a 2D separable transform, and the second 2D transform is a 2D non-separable transform.
[0084] According to an embodiment, when the skip mode is disabled and when the first coding mode belongs to a predefined set of candidate coding modes, enable the encoding of the residual block according to the second coding mode.
[0085] According to an embodiment, when the skip mode is disabled and when the encoding of the residual block according to the first coding mode is disabled, enable the encoding of the residual block according to the second coding mode.
[0086] According to an embodiment, obtain (510) the second coding mode from a set of candidate coding modes, and / or define the cardinality and at least one candidate coding mode of the set of candidate coding modes according to the first coding mode and / or whether to enable or disable the encoding of the residual block according to the second coding mode.
[0087] According to other aspects of this principle, this principle relates to a method / device for encoding / decoding pictures, which includes steps for encoding residual blocks according to the previous method, and a non-transitory storage medium that carries instructions of program code for performing the steps of at least one of the above methods when the program is executed on a computing device.
[0088] According to the description of the examples taken in conjunction with the accompanying drawings below, the specific nature of this principle and other objects, advantages, features, and uses of this principle will become apparent. Description of the Drawings
[0089] In the drawings, examples of this principle are illustrated. It shows:
[0090] - Figure 1 Illustrated is a method for selecting a coding mode for encoding a residual block when EMT, NSST, and transform skip modes interact with each other according to JEM;
[0091] - Figure 2 Shows a block diagram of the steps of a method for encoding (correspondingly, decoding) the parameters required for encoding (correspondingly, decoding) a residual block;
[0092] - Figure 3 is a schematic block diagram showing an exemplary video encoder in which the present principle can be implemented;
[0093] - Figure 4 is a schematic block diagram showing an exemplary video decoder in which the present principle can be implemented;
[0094] - Figure 5 is a block diagram showing steps of a method for encoding a residual block according to an example of the present principle;
[0095] - Figure 6 shows an example of an architecture of a device according to an example of the present principle; and
[0096] - Figure 7 shows two remote devices communicating via a communication network according to an example of the present principle.
[0097] Similar or identical elements are denoted by the same reference numerals. DETAILED DESCRIPTION
[0098] The present principle will be described more fully hereinafter with reference to the accompanying drawings, in which examples of the present principle are shown. However, the present principle may be implemented in many alternative forms and should not be construed as limited to the examples set forth herein. Accordingly, while the present principle is susceptible to various modifications and alternative forms, specific examples thereof are shown by way of example in the drawings and will be described in detail herein. However, it should be understood that there is no intention to limit the present principle to the specific forms disclosed, but on the contrary, the disclosure is to cover all modifications, equivalents, and alternatives falling within the spirit and scope of the present principle as defined by the claims.
[0099] The terms used herein are for the purpose of describing particular examples only and are not intended to limit the principles. As used herein, the singular forms "a", "an" and "the" are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will also be understood that when used in this specification, the terms "comprises", "comprising", "include" and / or "including" specify the presence of the stated features, integers, steps, operations, elements and / or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components and / or groups thereof. Further, when an element is referred to as being "responsive" or "connected" to another element, it can be directly responsive or connected to the other element, or intervening elements may be present. In contrast, when an element is referred to as being "directly responsive" or "directly connected" to other elements, no intervening elements are present. As used herein, the term "and / or" includes any and all combinations of one or more of the associated listed items and may be abbreviated as " / ".
[0100] It will be understood that although the terms first, second, etc. may be used herein to describe various elements, these elements should not be limited by these terms. These terms are only used to distinguish one element from another. For example, a first element may be termed a second element and, similarly, a second element may be termed a first element without departing from the teachings of the principles.
[0101] Although some of the figures include arrows on communication paths to indicate the primary direction of communication, it is to be understood that communication may occur in a direction opposite to that shown by the arrows.
[0102] Some examples are described with reference to block diagrams and operational flowcharts, where each block represents a circuit element, a module, or a portion of code including one or more executable instructions for implementing a specified logical function. It should also be noted that in other implementations, the functions noted in the blocks may not occur in the order noted. For example, two blocks shown in succession may in fact be executed substantially simultaneously, or the blocks may sometimes be executed in the reverse order, depending upon the functions involved.
[0103] References herein to "according to an example" or "in an example" mean that a particular feature, structure, or characteristic described in connection with the example can be included in at least one implementation of the principles. The appearances of the phrase "according to an example" or "in an example" in the specification are not necessarily all referring to the same example, and individual or alternative examples are not necessarily mutually exclusive of other examples.
[0104] The reference numerals appearing in the claims are for illustration only and shall have no limiting effect on the scope of the claims.
[0105] Although not explicitly described, the embodiments and variations may be employed in any combination or sub - combination.
[0106] The principles are described for encoding / decoding a set of pictures of a video, but are extended to encoding / decoding still pictures, since each picture of a video is encoded / decoded sequentially, as described below.
[0107] Figure 3 FIG. is a schematic block diagram showing an exemplary video encoder 300 in which the principles may be implemented.
[0108] Traditionally, the video encoder 300 may include several modules for block - based video coding, as Figure 3 shown. The picture I to be encoded is input to the encoder 300. The encoder 300 includes a sub - picture unit for splitting the picture I into blocks BLK, and a mode selection unit for selecting an encoding mode for the block BLK (e.g., based on rate / distortion optimization). Such a mode selection unit includes:
[0109] - A motion estimation module for estimating the motion between a current block of the picture to be encoded and a reference picture,
[0110] - A motion compensation module for using the estimated motion to predict the current block BLK,
[0111] - An intra - prediction module for spatially predicting the current block BLK.
[0112] The mode selection unit delivers the predicted block PRED and the corresponding syntax elements to be encoded in the bitstream for performing the same block prediction at the decoder.
[0113] Then, the residual block RES is obtained from the block BLK and the predicted block PRED. The residual block RES is transformed by a transform processing module configured to implement the principles, and the transformed coefficients TCOEFF are quantized by a quantization module, which delivers the quantized residual transform coefficients QCOEF.
[0114] Then, the syntax elements and the quantized residual transform coefficients QCOEF are input to an entropy coding module to deliver the encoded video data. For example, the above - encoded video data is stored in a memory or added to a bitstream STR for, e.g., transmission to a decoder.
[0115] The quantized residual transform coefficients COEF are processed by an inverse quantization module and an inverse transform module configured to implement the principles for reconstructing the residual block RES’.
[0116] A prediction block PRED is added to the reconstructed residual block RES’ for reconstructing a block that forms a reconstructed current picture REC. Then, the reconstructed current picture REC is added to a reference frame memory for later use as a reference picture for encoding subsequent pictures of video content.
[0117] Figure 4 FIG. 4 is a schematic block diagram showing an exemplary video decoder 400 in which the present principle can be implemented. The video decoder may include a receiver for a bitstream STR that represents an encoded image or video, including encoded data representing at least one block of the above-mentioned image or video, where the above-mentioned block has been encoded according to an embodiment of the present disclosure. The video decoder parses the bitstream SRT to obtain the encoded data, and the encoded data is passed to an entropy decoding module. The entropy decoding module performs entropy decoding and delivers the quantized coefficients QCOEF’ to an inverse quantization module and the syntax elements to a prediction module. The quantized coefficients QCOEF’ are inverse quantized by the inverse quantization module, and the inverse quantized coefficients TCOEFF’ are inverse transformed by an inverse transform module. The inverse transform module delivers residual block data RES’. The above-mentioned inverse transform module is configured to implement the present principle. The prediction module constructs a prediction block PRED based on the syntax elements and, in the case where the current block has been predicted inter-frame, uses a motion compensation module or, in the case where the current block has been predicted intra-frame, uses an intra-prediction module. A reconstructed picture I’ is formed from the reconstructed block obtained by adding the prediction block PRED and the residual block RES’. The reconstructed picture I’ is added to a reference frame memory for later use as a reference frame. Then, the reconstructed picture I’ is output through the video decoder 400.
[0118] The video decoder 400 is configured to decode data that has been encoded by a video encoder 300.
[0119] The video encoder 300 (and the video decoder 400) is not limited to a specific encoder, and it may be, for example, a lossy image / video encoder such as JPEG, JPEG2000, MPEG2, the HEVC recommendation, or the H264 / AVC recommendation (“Advanced Video Coding for Generic Audiovisual Services”, Series H: Audiovisual and Multimedia Systems, Recommendation ITU-T H.264, ITU Telecommunication Standardization Sector, February 2014).
[0120] Figure 5 FIG. 5 shows a block diagram of steps of a method for encoding a residual block according to an example of the present principle.
[0121] In step 500, when encoding of the residual block is enabled according to an encoding mode related to a first 2D transform, the module obtains a first encoding mode related to the first 2D transform.
[0122] In step 510, when encoding the residual block according to the encoding mode related to the second 2D transform is enabled, the module obtains a second encoding mode related to the second 2D transform (different from the first 2D transform).
[0123] In step 520, the module enables or disables the encoding of the residual block according to the second encoding mode based on the first encoding mode described above.
[0124] In step 530, the module encodes the residual block according to the first encoding mode or the second encoding mode (when enabled) or both of them.
[0125] Preferably, the first 2D transform and the second 2D transform can be separable or non-separable 2D transforms.
[0126] According to a non-limiting embodiment of this principle, the first encoding mode is the index EMTidx, as defined in the introduction section, and the second encoding mode is the index NSSTidx, as defined in the introduction section. Thus, the first encoding mode described above indicates a 2D separable transform constructed by combining a 1D horizontal transform and a 1D vertical transform, and the second encoding mode indicates a 2D non-separable transform, as explained in the introduction section (Tables 1, 2, and 3).
[0127] According to this example, enabling or disabling NSST thus depends on the value of EMTidx.
[0128] According to another non-limiting embodiment of this principle, the first encoding mode is the index NSSTidx, and the second encoding mode is the index EMTidx, as defined in the introduction section. Thus, the first encoding mode described above indicates a 2D non-separable transform, the second encoding mode indicates a 2D separable transform, as explained in the introduction section (Tables 1, 2, and 3), and according to this example, enabling or disabling EMT thus depends on the value of NSSTidx.
[0129] Generally speaking, according to this principle, the first encoding mode can indicate a separable or non-separable 2D transform, and the second encoding mode can indicate a separable or non-separable 2D transform and the second encoding mode; enabling or disabling the encoding of the residual block according to the second encoding mode described above depends on the first encoding mode described above. The last feature applies regardless of whether the first and / or second encoding mode indicates a 2D separable or non-separable transform.
[0130] According to a variant of this principle, when the skip mode is disabled (Tskip = 0) and when the first encoding mode belongs to a predefined set of candidate encoding modes, the encoding of the residual block according to the second encoding mode is enabled.
[0131] Then, when Tskip = 1 and / or when the above first coding mode does not belong to the above-mentioned predetermined set of candidate coding modes, coding of the residual block according to the second coding mode is disabled.
[0132] Table 4 gives a non-limiting example of this variant of the present principle, where when Tskip = 0 and when the first coding mode EMTidx < 1 (the predetermined set of candidate coding modes is equal to the single value 0), coding of the residual block according to the second coding mode (NSSTidx) is enabled.
[0133] No EMT EMTidx = 0 EMTidx = 1 EMTidx = 2 EMTidx = 3 NSSTidx = 0 Allowed Allowed Allowed Allowed Allowed NSSTidx = 1 Allowed Allowed NSSTidx = 2 Allowed Allowed NSSTidx = 3 Allowed Allowed
[0134] Table 4
[0135] Thus, according to Table 4, when the first coding index EMTidx = 0, NSST is enabled, and coding of the residual block can depend on one of the first coding mode EMTidx and / or NSSTidx according to the rate-distortion optimization result (for more details, refer to the introduction section).
[0136] Table 5 gives another non-limiting example of the above variant of the present principle, where when Tskip = 0 and when the first coding mode EMTidx = 0 or 2 (the predetermined set of candidate coding modes includes the values 0 and 2 here), coding of the residual block according to the second coding mode (NSSTidx) is enabled.
[0137] Note that when the first coding mode belongs to the predetermined set of candidate coding modes, all possible NSST coding modes can be enabled or disabled, as shown in Table 5. Here, when EMTidx = 0, only the coding mode with index NSSTidx 1 is enabled, and when EMTidx = 2, the coding modes with indices NSSTidx = 1 or 2 are enabled. Note that NSSTidx = 0 means that NSST is disabled.
[0138] No EMT EMTidx = 0 EMTidx = 1 EMTidx = 2 EMTidx = 3 NSSTidx = 0 Allowed Allowed Allowed Allowed Allowed NSSTidx = 1 Allowed Allowed Allowed NSSTidx = 2 Allowed Allowed NSSTidx = 3 Allowed
[0139] Table 5
[0140] According to a variant of the present principle, when the skip mode is disabled and when coding of the residual block according to the first coding mode is disabled, i.e., when Tskip = 0 and EMTflag = 0, coding of the residual block according to the second coding mode is enabled. Note that EMTflag = 0 means that the CU is EMT-disabled, i.e., the residual block (each TU of the CU) is coded using the normal HEVC transform instead of the first 2D transform defined by the EMT mode.
[0141] When Tskip = 1 and / or EMTflag = 1, encoding of the residual block according to the second coding mode (NSSTidx) is not allowed.
[0142] According to a variant of the embodiment of step 510, a second coding mode is obtained from a set of candidate coding modes, and the cardinality of the set of candidate coding modes and / or at least one of the candidate coding modes in the set of candidate coding modes is defined according to the first coding mode and / or whether encoding of the residual block according to the second coding mode is enabled or disabled.
[0143] For example, when the first coding mode is indicated by EMTidx and the second coding mode is indicated by NSSTidx, the cardinality of the set of candidate coding modes and / or at least one of the candidate coding modes is defined according to the values of EMTidx and / or NSSTidx: NSSTidx = 0 means NSST is disabled, and NSSTidx ≠ 0 means NSST is enabled.
[0144] In Figure 1 - Figure 5 terms of, a module is a functional unit, which may or may not be associated with a distinguishable physical unit. For example, these modules or some of them may be grouped together in a specific component or circuit, or contribute to the function of software. Conversely, some modules may possibly consist of separate physical entities. A device compatible with this principle is implemented using pure hardware, such as using dedicated hardware, such as an ASIC or an FPGA or a VLSI (respectively "application specific integrated circuit", "field programmable gate array", "very large scale integration"), or from several integrated electronic components in an embedded device, or from a mixture of hardware and software components.
[0145] Figure 6 represents an exemplary architecture of device 60, which may be configured to implement the method regarding Figure 1 - Figure 5 described.
[0146] Device 60 includes the following elements linked together by data and address bus 61:
[0147] - A microprocessor 62 (or CPU), which is for example a DSP (or digital signal processor);
[0148] - A ROM (or read only memory) 63;
[0149] - A RAM (or random access memory) 64;
[0150] - An I / O interface 65 for receiving data to be transmitted from an application; and
[0151] - A battery 66.
[0152] According to the example, the battery 66 is external to the device. In each of the memories mentioned, the term "register" used in the specification can correspond to a small-capacity area (a few bits) or a very large area (e.g., an entire program or a large amount of received or decoded data). The ROM 63 includes at least programs and parameters. The ROM 63 can store algorithms and instructions for implementing the techniques according to this principle. When powered on, the CPU 62 uploads the program in the RAM and executes the corresponding instructions.
[0153] The RAM 64 includes, in registers, a program executed by the CPU 62 and uploaded after the device 60 is powered on, input data in registers, intermediate data in different states of the method in registers, and other variables for implementing the method in registers.
[0154] The implementations described herein can be implemented, for example, as a method or process, a device, a software program, a data stream, or a signal. Even if discussed only in the context of a single form of implementation (e.g., discussed only as a method or a device), the implementations of the features discussed can also be implemented in other forms (e.g., a program). The device can be implemented, for example, in appropriate hardware, software, and firmware. The method can be implemented, for example, in a device such as a processor (which generally refers to a processing device, including, for example, a computer, a microprocessor, an integrated circuit, or a programmable logic device). The processor also includes communication devices such as a computer, a cellular phone, a portable / personal digital assistant ("PDA"), and other devices facilitating information communication between end users.
[0155] According to an example of an encoder or coding, a picture I is obtained from a source. For example, the source belongs to a set including the following:
[0156] - A local memory (63 or 64), such as a video memory or a RAM (or random access memory), a flash memory, a ROM (or read-only memory), a hard disk;
[0157] - A storage interface (65), such as an interface with a mass storage, a RAM, a flash memory, a ROM, an optical disc, or a magnetic support;
[0158] - A communication interface (65), such as a wired interface (e.g., a bus interface, a wide area network interface, a local area network interface) or a wireless interface (such as an IEEE 802.11 interface or an interface); and
[0159] - A picture capture circuit (e.g., a sensor, such as a CCD (or charge-coupled device) or a CMOS (or complementary metal oxide semiconductor)).
[0160] According to an example of a decoder or decoding, the decoded picture I’ is sent to a destination; in particular, the destination belongs to the set including the following:
[0161] - A local memory (63 or 64), such as a video memory or RAM, flash memory, hard disk;
[0162] - A storage interface (65), such as an interface with a mass storage, RAM, flash memory, ROM, optical disc or magnetic support;
[0163] - A communication interface (65), such as a wired interface (such as a bus interface (such as USB (or Universal Serial Bus)), wide area network interface, local area network interface, HDMI (High-Definition Multimedia Interface) interface) or a wireless interface (such as an IEEE 802.11 interface, or interface); and
[0164] - A display.
[0165] According to an example of an encoder or encoding, the bitstream STR is sent to a destination. As an example, the bitstream STR is stored in a local or remote memory, such as a video memory (64) or RAM (64), hard disk (63). In a variant, the bitstream STR is sent to a storage interface (65) (such as an interface with a mass storage, flash memory, ROM, optical disc or magnetic support), and / or is transmitted via a communication interface (65) (such as an interface to a point-to-point link, communication bus, point-to-multipoint link or broadcast network).
[0166] According to an example of a decoder or decoding, the bitstream STR is obtained from a source. Exemplarily, the bitstream STR is read from a local memory, such as a video memory (64), RAM (64), ROM (63), flash memory (63) or hard disk (63). In a variant, the bitstream STR is received from a storage interface (65) (such as an interface with a mass storage, RAM, ROM, optical disc or magnetic support), and / or is received from a communication interface (65) (such as an interface to a point-to-point link, bus, point-to-multipoint link or broadcast network).
[0167] According to an example, a device 60 configured to implement the encoding method described with respect to Figure 3 and Figure 5 belongs to the set including the following:
[0168] - A mobile device;
[0169] - A communication device;
[0170] - A gaming device;
[0171] - Tablet (or tablet computer);
[0172] - Laptop computer;
[0173] - Still image camera;
[0174] - Video camera;
[0175] - Encoding chip;
[0176] - Still image server; and
[0177] - Video server (e.g., broadcast server, video-on-demand server, or network server).
[0178] According to an example, a device 60 configured to implement the decoding method regarding Figure 4 and Figure 5 described belongs to the set including the following:
[0179] - Mobile device;
[0180] - Communication device;
[0181] - Gaming device;
[0182] - Set-top box;
[0183] - Television;
[0184] - Tablet (or tablet computer);
[0185] - Laptop computer;
[0186] - Monitor, and
[0187] - Decoding chip.
[0188] According to an example of this principle, as shown in Figure 7 in the context of transmission between two remote devices A and B on a communication network NET, device A includes a processor associated with memories RAM and ROM, which are configured to implement the method for encoding residual blocks as described regarding Figure 5 or the method for encoding pictures as described regarding Figure 3 and device B includes a processor associated with memories RAM and ROM, which are configured to implement the method for encoding residual blocks as described regarding Figure 5 or the method for decoding as described regarding Figure 4 described.
[0189] According to an example, the network is a broadcast network adapted to broadcast still pictures or video pictures from device A to a decoding device (including bitstream STR) including device B.
[0190] The implementations of the various processes and features described herein can be implemented in a variety of different apparatuses or applications. Examples of such apparatuses include encoders, decoders, post-processors that process the output from a decoder, pre-processors that provide input to an encoder, video encoders, video decoders, video codecs, network servers, set-top boxes, laptop computers, personal computers, cellular telephones, PDAs, and any other device or other communication device for processing pictures or video. As should be clear, the apparatus can be mobile and even installed in a mobile vehicle.
[0191] Additionally, the methods can be implemented by instructions being executed by a processor, and such instructions (and / or data values produced by the implementation) can be stored on a computer-readable storage medium. The computer-readable storage medium can take the form of a computer-readable program product that is embodied in one or more computer-readable media and has computer-readable program code embodied thereon that is executable by a computer. As used herein, the computer-readable storage medium is considered a non-transitory storage medium, given the inherent ability to store information therein and the inherent ability to retrieve information therefrom. The computer-readable storage medium can be, for example but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. It is to be understood that while the following provides more specific examples of computer-readable storage media to which the principles can be applied, it is merely an illustrative and non-exhaustive list that is readily understandable to a person of ordinary skill in the art: portable computer disks; hard disks; read-only memory (ROM); erasable programmable read-only memory (EPROM or flash memory); portable compact disk read-only memory (CD-ROM); optical storage devices; magnetic storage devices; or any suitable combination of the foregoing.
[0192] The instructions can form an application program tangibly embodied on a processor-readable medium.
[0193] The instructions can be, for example, in hardware, firmware, software, or a combination. The instructions can be present in, for example, an operating system, a separate application, or a combination of both. Thus, a processor can be characterized as, for example, a device configured to perform a process and a device that includes a processor-readable medium (such as a storage device) having instructions for performing the process. Additionally, in addition to or in place of the instructions, the processor-readable medium can store data values produced by the implementation.
[0194] As will be apparent to those skilled in the art, implementations can generate various signals that are formatted to carry information such as can be stored or transmitted. The information can include, for example, instructions for performing a method or data generated by one of the described implementations. For example, a signal can be formatted to carry as data rules for the syntax of the described examples of this principle for writing or reading, or carry as data actual syntax values written by the described examples of this principle. For example, such a signal can be formatted as an electromagnetic wave (e.g., using the radio frequency portion of the spectrum) or a baseband signal. Formatting can include, for example, encoding a data stream and modulating a carrier with the encoded data stream. For example, the information carried by the signal can be analog or digital information. As is known, signals can be transmitted over a variety of different wired or wireless links. The signal can be stored on a processor-readable medium.
[0195] Multiple implementations have been described. However, it will be understood that various modifications can be made. For example, elements of different implementations can be combined, supplemented, modified, or removed to yield other implementations. Additionally, those of ordinary skill in the art will understand that other structures and processes can replace those disclosed, and the resulting implementations will perform at least substantially the same functions as the disclosed implementations in at least substantially the same manner, to achieve at least substantially the same results as the disclosed implementations. Accordingly, this application contemplates these and other implementations.
Claims
1. A method, comprising: At least determine that a first coding mode is disabled; In response to the determination, enable decoding of a residual block according to a second coding mode; And Decode the residual block according to the second coding mode; Wherein, when the first coding mode is enabled, the first coding mode indicates a first 2D transform for encoding the residual block, and the first 2D transform is from a set of non-separable 2D transforms; Wherein, when the second coding mode is enabled, the second coding mode indicates a second 2D transform for encoding the residual block, and the second 2D transform is from a set of separable 2D transforms.
2. The method according to claim 1, wherein, Enabling decoding of the residual block according to the second coding mode further in response to a determination that at least a skip mode is disabled.
3. A device comprising at least one processor, the processor being configured to: At least determine that a first coding mode is disabled; In response to the determination, enable decoding of a residual block according to a second coding mode; and Decode the residual block according to the second coding mode; Wherein, When the first coding mode is enabled, the first coding mode indicates a first 2D transform for encoding the residual block, and the first 2D transform is from a set of non-separable 2D transforms; Wherein, when the second coding mode is enabled, the second coding mode indicates a second 2D transform for encoding the residual block, and the second 2D transform is from a set of separable 2D transforms.
4. The device according to claim 3, wherein, Enabling decoding of the residual block according to the second coding mode further in response to a determination that at least a skip mode is disabled.
5. A method, comprising: At least determine that a first coding mode is disabled; In response to the determination, enable encoding of a residual block according to a second coding mode; And Encode the residual block according to the second coding mode; Wherein, when the first coding mode is enabled, the first coding mode indicates a first 2D transform for encoding the residual block, and the first 2D transform is from a set of non-separable 2D transforms; Wherein, when the second coding mode is enabled, the second coding mode indicates a second 2D transform for encoding the residual block, and the second 2D transform is from a set of separable 2D transforms.
6. The method according to claim 5, wherein enabling encoding of the residual block according to the second coding mode further responds to a determination that at least a skip mode is disabled.
7. The method according to claim 1 or 5, wherein the second coding mode is from a set of candidate coding modes, and at least one candidate coding mode in the candidate coding modes of the set of candidate coding modes is identified according to the first coding mode.
8. The method according to claim 2 or 6, wherein, Encoding of the residual block according to the second coding mode is enabled when the first coding mode belongs to a set of candidate coding modes.
9. A device comprising at least one processor, the processor being configured to: At least determine that a first coding mode is disabled; In response to the determination, enable encoding of a residual block according to a second coding mode; and Encode the residual block according to the second coding mode; Wherein, When the first coding mode is enabled, the first coding mode indicates a first 2D transform for encoding the residual block, and the first 2D transform is from a set of non-separable 2D transforms; Wherein, when the second coding mode is enabled, the second coding mode indicates a second 2D transform for encoding the residual block, and the second 2D transform is from a set of separable 2D transforms.
10. The device according to claim 9, wherein, Enabling encoding of the residual block according to the second coding mode further in response to a determination that at least a skip mode is disabled.
11. The device according to claim 3 or 9, wherein, The second coding mode is from a set of candidate coding modes, and at least one candidate coding mode in the set of candidate coding modes of the set of candidate coding modes is identified according to the first coding mode.
12. The device according to claim 4 or 10, wherein, Encoding of the residual block according to the second coding mode is enabled when the first coding mode belongs to a predefined set of candidate coding modes.
13. A non - transitory computer - readable storage medium, comprising instructions that cause a processor to perform the following operations: At least determine that a first coding mode is disabled; In response to the determination, enable decoding of a residual block according to a second coding mode; and Decode the residual block according to the second coding mode; Wherein, When the first coding mode is enabled, the first coding mode indicates a first 2D transform for coding the residual block, where the first 2D transform is from a set of non-separable 2D transforms; Wherein, when the second coding mode is enabled, the second coding mode indicates a second 2D transform for coding the residual block, where the second 2D transform is from a set of separable 2D transforms.
14. The non - transitory computer - readable storage medium according to claim 13, wherein, Enabling the decoding of the residual block according to the second coding mode is further responsive to a determination that at least the skip mode is disabled.
15. The non - transitory computer - readable storage medium according to claim 14, wherein, When the first coding mode belongs to a set of candidate coding modes, the decoding of the residual block according to the second coding mode is enabled.
16. A non - transitory computer - readable storage medium, comprising instructions that cause a processor to perform the following operations: At least determine that a first coding mode is disabled; In response to the determination, enable encoding of a residual block according to a second coding mode; and Encode the residual block according to the second coding mode; Wherein, When the first coding mode is enabled, the first coding mode indicates a first 2D transform for coding the residual block, where the first 2D transform is from a set of non-separable 2D transforms; Wherein, when the second coding mode is enabled, the second coding mode indicates a second 2D transform for coding the residual block, where the second 2D transform is from a set of separable 2D transforms.
17. The non - transitory computer - readable storage medium according to claim 16, wherein, Enabling the coding of the residual block according to the second coding mode is further responsive to a determination that at least the skip mode is disabled.
18. The non - transitory computer - readable storage medium according to claim 13 or 16, wherein, The second coding mode is from a set of candidate coding modes, and at least one candidate coding mode among the candidate coding modes of the set of candidate coding modes is identified according to the first coding mode.
Citation Information
Patent Citations
Method for encoding image, method for decoding image, image encoder, and image decoder
CN105120272A
Universal color-space inverse transform coding
US20150264364A1