Enhanced Mode Processing in Video Encoding and Decoding
By refining reconstructed video signals using encoded refinement tables, the process addresses distortion issues in video compression, improving coding efficiency and reducing inefficiencies in video encoding and decoding.
Patent Information
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Filing Date
- 2025-12-12
- Publication Date
- 2026-03-17
AI Technical Summary
Video compression and reconstruction processes introduce distortion, particularly when video signals are mapped before encoding, leading to inefficiencies in compression and coding gain.
Implementing a refinement step, such as in-loop or out-of-loop filters, to refine the reconstructed video signal based on refinement tables encoded during encoding, and applying signal corrections during decoding to improve compression efficiency and reduce distortion.
The refinement process enhances coding efficiency and reduces distortion by allowing flexibility in video encoding and decoding, particularly through chroma component-based improvements.
Smart Images

Figure 2026048827000001_ABST
Abstract
Description
[Technical Field]
[0001] Technical field This disclosure includes video encoding and decoding. [Background technology]
[0002] background To achieve high compression efficiency, image and video encoding schemes typically use prediction and transformation to leverage spatial and temporal redundancy within video content. Generally, intra-prediction or inter-prediction is used to utilize correlations within or between frames, and then the difference between the original picture block and the predicted picture block, often expressed as prediction error or prediction residual, is transformed, quantized, and entropicoded. To reconstruct (rebuild) the video, the compressed data is decoded by the reverse process corresponding to prediction, transformation, quantization, and entropicoding. [Overview of the project]
[0003] overview In general, an example of at least one embodiment of the method involves (i) encoding the picture portion based on applying a refinement mode to the reconstructed signal block by block. (ii) the cost of encoding, wherein the improved mode is based on improved parameters, and (ii) the cost of encoding the picture portion using a mode other than the improved mode, and encoding the picture portion based on that cost.
[0004] Generally, an example of at least one embodiment of the device is a cost for encoding a picture portion based on applying an improved mode to a reconfigured signal block by block, the improved mode comprising one or more processors configured to obtain a cost for encoding, and a cost for encoding a picture portion without using the improved mode, based on improved parameters, and to encode a picture portion based on that cost.
[0005] In general, an example of at least one embodiment of the decoding method is to obtain an instruction for an improved mode applied to the reconstructed signal block by block during the encoding of the picture portion, the improved mode being based on improved parameters, and decoding the encoded picture portion based on that instruction.
[0006] Generally, one example of at least one embodiment of the device is to obtain instructions for an improved mode applied to a block-by-block reconstructed signal during encoding of an encoded picture portion, the improved mode comprising one or more processors configured to obtain instructions based on improved parameters and to decode the encoded picture portion based on those instructions.
[0007] Generally, one example of at least one embodiment includes providing a signal formatted to include data representing an encoded picture portion and data indicating an improved mode applied to the reconstructed signal block by block based on improvement parameters during encoding of the encoded picture portion.
[0008] Generally, one example of at least one embodiment involves data representing an encoded picture portion, and block-by-block restructuring based on improvement parameters during encoding of the encoded picture portion. This includes providing a bitstream formatted to include data that gives instructions for an improved mode applied to a completed signal.
[0009] Generally, an example of at least one embodiment includes a computer program product or non-temporary computer-readable storage medium storing computer-readable instructions for causing one or more processors to perform any of the methods described herein.
[0010] Generally, one or more embodiments provide a computer-readable storage medium, such as a non-volatile computer-readable storage medium, that stores instructions for encoding or decoding video data according to the method or apparatus described herein, and / or a bitstream generated according to the method or apparatus described herein. One or more embodiments of this specification may also provide a method and apparatus for transmitting or receiving a bitstream generated according to the method or apparatus described herein.
[0011] Generally, another example of at least one embodiment includes one or more processors configured to encode or decode a picture portion according to the method or apparatus described herein, and includes at least one of the following: (i) an antenna configured to receive a signal, the signal including data representing an image; (ii) a band limiter configured to limit the received signal to a frequency band including data representing an image; or (iii) a display configured to display an image.
[0012] Brief explanation of the drawing This disclosure can be better understood by considering the following detailed description in conjunction with the attached drawings. [Brief explanation of the drawing]
[0013] [Figure 1] This is a block diagram showing an example of a video encoder embodiment. [Figure 2] Block diagram showing an example of a video decoder embodiment. [Figure 3] This is a block diagram showing another example of a video encoder embodiment. [Figure 4] Block diagram showing an example of another embodiment of a video decoder. [Figure 5] This table shows an example of an embodiment of the signal syntax. [Figure 6] This graph illustrates the characteristics of the improved table embodiment. [Figure 7]A table showing another example of an embodiment of a signal syntax. [Figure 8] A table showing an example of a feature of another embodiment of a signal syntax. [Figure 9] A flowchart showing an example of an embodiment of a process for deriving improvement information. [Figure 10] A table showing another example of an embodiment of a signal syntax. [Figure 11] A flowchart showing another example of an embodiment of a process for deriving improvement information. [Figure 12] Two flowcharts showing an example of an embodiment of a process for encoding and decoding improvement parameters. [Figure 13] A table showing another example of an embodiment of a signal syntax. [Figure 14] A flowchart showing an example of an embodiment of a process for deriving information for use in one or more embodiments. [Figure 15] A block diagram showing an example of an embodiment of a system including video encoding and / or decoding. [Figure 16] A block diagram showing an example of an embodiment of a system such as a transmitter including video encoding. [Figure 17] A block diagram showing another example of an embodiment of a video encoder. [Figure 18] A block diagram showing another example of an embodiment of a video encoder. [Figure 19] A block diagram showing another example of an embodiment of a video encoder. [Figure 20] A flowchart showing an example of an embodiment of a process for encoding video. [Figure 21] A flowchart showing an example of an embodiment of a feature of at least one other embodiment such as the process shown in FIG. 20. [Figure 22] A graph showing the features of an embodiment of an improvement table. [Figure 23] A graph showing the features of another embodiment of an improvement table. [Figure 24]Figure 21 is a flowchart illustrating an example of an embodiment of a modified version of the process shown. [Figure 25] This graph illustrates the features of another embodiment of the improved table. [Figure 26] This graph illustrates the features of another embodiment of the improved table. [Figure 27] This block diagram shows an example of an embodiment of a system, such as a receiver, that includes video decoding. [Figure 28] This is a block diagram showing another example of a video decoder embodiment. [Figure 29] This is a block diagram showing another example of a video decoder embodiment. [Figure 30] This is a block diagram showing another example of a video decoder embodiment. [Figure 31] This flowchart shows an example of an embodiment of a process for decoding a video signal. [Figure 32] This is a block diagram showing another example of a video encoder embodiment. [Figure 33] This is a block diagram showing another example of a video decoder embodiment. [Modes for carrying out the invention]
[0014] The drawings are intended to illustrate various aspects and embodiments and should be understood as not necessarily the only possible configuration. Throughout the various drawings, similar reference symbols refer to the same or similar features.
[0015] Detailed explanation Video compression and reconstruction processes can introduce distortion. For example, distortion may be present in the reconstructed video signal, particularly when the video signal is mapped before encoding to better utilize the distribution of codewords in the video picture samples. Generally, at least one embodiment may allow for flexibility and coding gain, reducing distortion and / or improving compression efficiency, by using, for example, chroma component-based video signal refinement. At least one embodiment may include a refinement step, such as an in-loop or out-of-loop filter, to refine the reconstructed video signal after decoding. The refinement may be based, for example, on a refinement table encoded within the bitstream or signal during encoding. The decoder then applies signal correction (e.g., filtering) based on the refinement table. Among the various examples of possible modes, one example of a mode in at least one embodiment is inter-component refinement of the chroma component. Another example of a mode in at least one embodiment is intra-component refinement applied, for example, to the chroma component.
[0016] Applying a specific process, method, or technique intended to bring about improvement to the entire slice or the entire region may lead to degradation of local portions of the slice or region to which the improvement is applied, even if the improvement is beneficial overall to the entire slice or region. Generally, at least one embodiment aims to address this problem and also to improve the coding of the data involved, such as improvement tables. Improvements that address the entire slice or region may include coding one table per component and applying that one table to all samples of the entire slice or region.
[0017] In general, in at least one embodiment, the encoder calculates a table based on the improvement shown by the metric, which is achieved by reducing, for example, the rate distortion cost (typically a weighted sum of distortion and coding costs) across the entire picture or region under consideration. The distortion is, for example, the mean squared error between the improved reconstructed signal and the original signal. It is possible. The resulting table is then encoded into a bitstream or signal. If the rate distortion cost across the slice or region under consideration decreases overall, it also means that there may be portions within the slice or region under consideration where the rate distortion cost increases. Generally, at least one example of the embodiment may include an enhancement mode that includes inter-component chroma enhancement. Another example of the embodiment may include intra-component enhancement applied to, for example, luma components.
[0018] As used herein, data improvement can mean any modification, adjustment, alteration, revision, or adaptation of a process that can result in improvements, such as increasing the efficiency of encoding and / or decoding information such as video data, and / or reducing costs such as rate distortion costs as described herein. For simplicity of explanation, one or more embodiments described herein may refer to "cost" as "rate distortion cost" which can be used to evaluate, determine, or obtain the effects, impacts, or improvements associated with using the improved mode. For example, the cost associated with the improved mode and the cost without using the improved mode can be evaluated (e.g., compared) to determine whether to use the improved mode described herein based on improvements such as improved compression efficiency and / or reduced distortion, as indicated by the change in cost. While one type of cost may include rate distortion cost, the reference to rate distortion cost herein is not limiting, and other types of costs and / or other methods for evaluating the effects of the improved mode are assumed.
[0019] Furthermore, in this specification, the terms “reconstruct” and “decode” may be used interchangeably. While not always, “reconstruct” is typically used on the encoder side, while “decode” is typically used on the decoder side. The terms “decode” or “reconstruct” can mean partially “decode” or “reconstruct” a bitstream or signal, for example, a signal obtained after deblocking filtering but before SAO filtering, and it should be noted that the reconstructed sample may differ from the final decoded output used for display. Additionally, the terms “image,” “picture,” and “frame” may be used interchangeably.
[0020] In general, at least one embodiment may include enabling block-by-block improvements and, possibly, enabling the selection of improvement parameters for application to the block from a set of possible improvement parameters previously coded in the stream. The term “block” may be replaced in the modified form with “coded unit” (CU) or “coded tree unit” (CTU).
[0021] Generally, one or more embodiments may relate to encoders and decoders, and one or more embodiments may relate to the specifications and semantics of decoders.
[0022] Figure 1 shows an example of an embodiment of the encoder 100. While modifications of this encoder 100 are possible, the encoder 100 will be described below for clarity, without describing all anticipated modifications.
[0023] The video sequence can be subjected to pre-encoding processing (101) before encoding, such as applying a color conversion to the input color picture (e.g., from RGB4:4:4 to YCbCr4:2:0) or remapping the input picture components to obtain a signal distribution that is more resilient to compression (e.g., using histogram equalization of one of the color components). Metadata may be associated with pre-processing and may be appended to the bitstream or signal.
[0024] Within the encoder 100, the picture is encoded using the encoder elements as described below. The picture to be encoded is divided into units, for example, CUs (102), and processed. Each unit is encoded using, for example, intra-mode or inter-mode. When a unit is encoded in intra-mode, intra-mode performs intra-prediction (160). Inter-mode performs motion estimation (175) and motion compensation (170). The encoder decides whether to use intra-mode or inter-mode to encode the unit (105), and indicates the intra / inter decision by, for example, a prediction mode flag. The prediction residual is calculated by, for example, subtracting the predicted blocks from the original image blocks (110).
[0025] Next, the predicted residual is transformed (125) and quantized (130). The quantized transformation coefficients, as well as the motion vector and other syntactic elements, are entropicated (145) to output a bitstream or signal. The encoder can skip the transformation and apply quantization directly to the untransformed residual signal. The encoder can bypass both the transformation and quantization, i.e., the residual is directly encoded without applying either the transformation or quantization process.
[0026] The encoder decodes the encoded blocks to provide a reference for further prediction. The quantized transformation coefficients are inversely quantized (140) and inversely transformed (150) to decode the prediction residuals. The image blocks are reconstructed by combining the decoded prediction residuals and the predicted blocks (155). An in-loop filter (165) is applied to the reconstructed picture to reduce encoding artifacts, for example by performing deblocking / SAO (sample adaptive offset) filtering. The filtered image is stored in a reference picture buffer (180).
[0027] Figure 2 shows a block diagram of an example embodiment of the video decoder 200. In the decoder 200, the bitstream or signal is decoded by the decoder's elements as described below. The video decoder 200 generally performs a decoding path that is the reverse of the encoding path described in Figure 1. The encoder 100 also generally performs video decoding as part of encoding the video data.
[0028] Specifically, the input to the decoder includes a video bitstream or signal that can be generated by the video encoder 100. The bitstream or signal is first entropy-decoded to obtain conversion coefficients, motion vectors, and other coded information (230). Picture division information indicates how the picture will be divided. Thus, the decoder can divide the picture according to the decoded picture division information (235). The conversion coefficients are inversely quantized (240) and inversely transformed (250) to decode the predicted residuals. The decoded predicted residuals and predicted blocks are combined (255) to reconstruct the image blocks. Predicted blocks can be obtained from intra-prediction (260) or motion-compensated prediction (i.e., inter-prediction) (275) (270). An in-loop filter (265) is applied to the reconstructed image. The filtered image is stored in a reference picture buffer (280).
[0029] The decoded picture may undergo further post-decoded processing (285), such as inverse color conversion (e.g., conversion from YCbCr4:2:0 to RGB4:4:4) or reverse remapping, which is the reverse of the remapping process performed in the pre-encoded processing (101). The post-decoded processing may use metadata derived in the pre-encoded processing and signaled within the bitstream or signal.
[0030] In general, in at least one embodiment, one or more features described herein may affect parts, areas, or modules of an encoder / decoder (code-decoder), such as in-loop filters (165 and 265) and entropi encoding (145) and entropi decoding (230), according to various examples of the features described herein.
[0031] Figure 3 shows a modified version 3000 of the video encoder 100 in Figure 1. The modules in Figure 3 are labeled with the same reference number and will not be further described. Figure 3 includes an improvement process in which the illustrated embodiment is in-loop. The step of calculating improvement parameters (step 3001) is performed after the in-loop filtering step (165). The improvement parameter calculation step takes the input video and the reconstructed video resulting from the in-loop filtering step as input. The improvement parameter calculation step (step 3001) calculates improvement parameters which are encoded in the bitstream or signal by the modified entropicorder (3003). The improvement parameters are also used to apply the improvement step (3002) to the reconstructed video resulting from the in-loop filter.
[0032] Figure 4 shows a modified version 102 of the video encoder 100 in Figure 2. Modules in Figure 4 that are identical to those in Figure 2 are labeled with the same reference numbers and will not be further explained. In Figure 4, the bitstream or signal is decoded by the entropy decoder in step 4001. The entropy decoder produces a reconstructed video and additionally decoded refinement parameters. The refinement parameters are used in step 4002 to apply refinements to the reconstructed video to produce the output video.
[0033] When used in this specification, the following notations represent or correspond to the following: - B is the bit depth of the signal (e.g., 10 bits). - MaxVal is (2 B The maximum value of the signal calculated as -1) - Sin#Y(p), Sin#cb(p), and Sin#cr(p) correspond to the original (input) signals Y, cb, and cr at relative position p in the picture. - Sout#cb(p) and Sout#cr(p) are produced by improvements at the relative position p within the picture. The corresponding (input) signals of cb and cr - Srec#Y(p) corresponds to the reconstructed Luma signal at relative position p within the picture. This corresponds to the signal generated from the in-loop filter. - Srec#cb(p) and Srec#cr(p) are improved reconstructions at relative position p within the picture. This corresponds to the completed chroma signal. This corresponds to the signal generated from the in-loop filter. - neutralVal corresponds to the default value; if the improvement value is equal to neutralVal, the improvement does not modify the signal, and a typical value for neutralVal is 64. - Rcb and Rcr correspond to chromatic improvement parameters. Rcb and Rcr can typically be defined as pivot points in a piecewise linear (PWL) model. For example, Rcb = [(Rcb#idx[pt], Rcb#val[pt]), pt = 0 to Ncb-1], where Ncb is the number of pivot points.
[0034] The lookup tables LutRcb and LutRcr are derived from the chroma improvement parameters Rcb and Rcr. For example, LutRcb is constructed by linear interpolation between each pair of points in Rcb as follows: It is possible. pt=0 to Ncb-2 From idx=Rcb#idx[pt], (Rcb#idx[pt+1]-1) is, LutRcb[idx]=Rcb#val[pt]+(Rcb#val[pt+1]-Rcb#val[pt])*(idx-Rcb#idx[pt]) / (Rcb#idx[pt+1]-Rcb#idx[pt])
[0035] One embodiment of inter-component chromatic improvement functions as follows (shown here for component cb): · Sout#cb(p)=offset+LutRcb[Srec#Y(p)] / neutralVal*(Srec#cb(p)-offset) However, the offset is generally set to (MaxVal / 2), and p corresponds to the same relative position within the picture. . Alternatively, it works as follows: · Sout#cb(p)=(LutRcb[Srec#Y(p)]-neutralVal)+Srec#cb(p)
[0036] In another embodiment, the improvement can be applied as an intra-component improvement of the luma component, and this improvement functions as follows: · Sout#Y(p)=(LutRy[Srec#Y(p)] / neutralVal)*Srec#Y(p) Alternatively, it works as follows: · Sout#Y(p)=LutRy[Srec#Y(p)]+Srec#Y(p)
[0037] One embodiment may include providing a bitstream or signal having one or more syntactic features as shown in the example in Figure 5. One embodiment may include improving only the chroma component. For example, if refinement#table#flag#cb is true, then for all pt from 0 to (refinement#table#cb#size-1), the values (Rcb#idx[pt]), Rcb#val[pt]) of the cb improvement table are used. Calculate as follows: Set Rcb#idx[pt] to equal to (Rcb#idx[pt-1]+refinement#cb#idx[pt]). Set Rcb#val[pt] to equal to (neutralVal+refinement#cb#value[pt]) The same process is applied to the cr component.
[0038] An example of an improved table is shown in Figure 6, where refinement#table#cb#size=6(pt=0 to 5 ). To simplify the notation, "Rcb" has been replaced with "R" in Figure 6.
[0039] In one embodiment, when block-based inter-component chromatic improvement is activated, K pairs (Rcb) of cb and cr improvement tables are selected. k , Rcr k ), K is made available from k=1. If K is equal to 0, the improvement is not applied within the slice. Code one or more block-based indicators per block to indicate which of these table pairs to use, or whether to activate the improvement, or whether to activate it in this block.
[0040] In a non-limiting example of the embodiment, only one pair of tables is used (K=1).
[0041] In another embodiment, a pair of improved tables are first coded within the slice header. An example of the syntax for decoding the cb,cr improved table pair is shown in Figure 7. Figure 7 shows an example of slice header syntax using table pair identifiers: `refinment#number#of#tables` is a chroma refinement table coded within the stream. Indicates the number of pairs. This number must be 0 or greater. If it is equal to 0, it means that chroma refinement will not be applied to the current slice. If it rotates, for any value of idx between 0 and (refinement#number#of#tables-1), at least refinement#table#flag#cb[idx] or refinement#table#flag#cr[idx] must be equal to 1. Note: refinement#number#of#tables corresponds to the parameter K discussed above. `refinement#table#flag#cb[idx]` indicates whether the refined table is coded for the `cb` component of the refined table pair for the identifier value `idx`. If `refinement#table#flag#cb[idx]` is equal to 0, then `refinement#table#flag#cr[idx]` is equal to 1.
[0042] refinement#table#cb#size[idx] indicates the size of the cb refinement table for the refinement table pair with identifier value idx. refinement#cb#idx[idx][i] indicates the index (first coordinate) of the i-th element in the cb refinement table of the refinement table pair for the identifier value idx. refinement#cb#value[idx][i] represents the value (second coordinate) of the i-th element in the cb refinement table of the refinement table pair for the identifier value idx. `refinement#table#flag#cr[idx]` indicates whether the refined table is coded for the `cr` component of the refined table pair for the identifier value `idx`. If `refinement#table#flag#cr[idx]` is equal to 0, then `refinement#table#flag#cb[idx]` is equal to 1. refinement#table#cr#size[idx] indicates the size of the cr refined table for the refined table pair with identifier value idx. refinement#cr#idx[idx][i] indicates the index (first coordinate) of the i-th element in the cr refinement table of the refinement table pair for the identifier value idx. refinement#cr#value[idx][i] represents the value (second coordinate) of the i-th element in the cr refinement table of the refinement table pair for the identifier value idx.
[0043] At the block (or CU or CTU) level, a block-based identifier, tables#id, is signaled, corresponding to the identifier of the cb,cr improvement table pair that should be applied to the current block. Figure 8 shows an example of the syntax for decoding block improvement information, and Figure 8 shows an example of block-level syntax using table pair identifiers. In Figure 8: The syntax element refinement#activation#flag indicates whether the current block uses the refinement. If the current block is using a refinement (refinement#activation#flag is equal to 1), decode the syntax element tables#id. Refine the current block using the refinement table corresponding to the identifier tables#id: From i=0 to (refinement#table#cb#size[tables#id]-1) 〇 refinement#cb#idx[tables#id][i] 〇 refinement#cb#value[tables#id][i] From i=0 to (refinement#table#cr#size[tables#id]-1) 〇 refinement#cr#idx[tables#id][i] 〇 refinement#cr#value[tables#id][i]
[0044] Figure 9 shows a corresponding block diagram illustrating an embodiment for deriving the refinement information for the current block. In Figure 9, the syntactic element refinement#activation#flag is decoded at 601. At 602, it is checked whether refinement#activation#flag is equal to 0. If refinement#activation#flag is equal to 0, no refinement is applied (603). If refinement#activation#flag is not equal to 0, tables#id is decoded at 604. At 605, the refinement is applied using the table pair indicated by the identifier tables#id.
[0045] In one embodiment, the syntactic element refinement#activation#flag is not coded, but a specific value of tables#id indicates that the block will not be refined. For example, tables#id equal to 0 indicates that the current block will not use refinement. The check "refinement#activation#flag==0?" is replaced with "tables#id==0?".
[0046] In another embodiment, one aspect includes coding relative to adjacent improvement information. For example, a block-based indicator is made up of syntactic elements that indicate whether the improvement information of the current block is duplicated from adjacent blocks. The improvement information is at least - A parameter indicating whether the block used improvements (here, it is named refinedBlock, which corresponds to the syntactic element named refinement#activation#flag) - If refinedBlock indicates that a block can be improved, use the improvement table to improve the sample block. It is made from. Figure 10 shows an example of the syntax for decoding block improvement information: tables#from#left#flag means that improvement information is duplicated from the block to the left of the current block. To indicate whether or not. tables#from#up#flag indicates whether improvement information is duplicated from the block above the current block. To indicate whether or not. The refinement#activation#flag indicates whether refinement is activated for the current block.
[0047] Figure 11 shows the corresponding block diagram for deriving improvement information for the current block. In Figure 11, (501) decodes the syntactic element tables#from#left#flag. In 502, it is checked whether tables#from#left#flag is equal to 0. If tables#from#left#flag is not equal to 0 , duplicate the improvement information of the current block from the block to the left of the current block (504). Otherwise, decode the syntactic element tables#from#up#flag in 503. In 505, check if tables#from#up#flag is equal to 0. If tables#from#up#flag is not equal to 0, The refinement information for the current block is copied from the block above the current block (507). Otherwise, the syntactic element refinement#activation#flag is decoded in 506. The refinedBlock of the current block is set to refinement#activation#flag. In 508, it is checked if refinement#activation#flag is equal to 0. If refinement#activation#flag is equal to 1, the refinement table is decoded (510). Otherwise, the particular process is not applied (510). The refinement is applied in 511. In this step, if refinedBlock is equal to 0, the block is not processed by the refinement process. If refinedBlock is equal to 1, the block is refined using the refinement table derived for the current block.
[0048] In one embodiment, refinement#activation#flag is not explicitly coded or decoded, but is implicitly inferred from the context. For example, the context relates to the SAO loop filtering process. In this embodiment, refinement#activation#flag is deduced from the SAO parameters. In one embodiment, if SAO is disabled for a block, refinement#activation#flag is set to equal to 0. If SAO is enabled for a block, refinement#activation#flag is set to equal to 1. In another embodiment, if SAO band offset is disabled for a block, refinement#activation#flag is set to equal to 0. If SAO band offset is enabled for a block, refinement#activation#flag is set to equal to 1. Similar rules can be applied to other types of SAO, such as edge offsets.
[0049] In one embodiment, the improved process is applied in conjunction with another loop filter process such as SAO.
[0050] Generally, one embodiment may involve reducing the coding cost of a table by avoiding redundant neutral values. In one embodiment, consider that the chroma-improved tables have the same size (Ncb=Ncr=N) and share the same index: Rcb#idx[pt]=Rcr#idx[pt], pt=0 to (N-1) In most cases, when the improvement parameter of a certain component (e.g., cb) is equal to the neutral value (neutralVal), it is often observed that the corresponding improvement parameters of other chromatic components are close to the neutral value.
[0051] This is illustrated by the following example, which shows the first picture of the SDR content BasketballDrive#1920x1080 encoded by 37 QP using the VTM codec. This is obtained from the processing. The neutralValue is equal to 64, and examples where the improved value is close to 64 are shown in bold.
number
[0052] In the encoder, the input values are the improvement parameter Rp#c1 of the first chroma component (e.g., the cb component), and the second (specified with respect to the same relative index in the improvement parameter table). The corresponding improvement parameter Rp#c2 for the chromatic component is... The second step is to encode the component improvement parameter Rp#c1 (step 701). The second step is to check the condition related to the value of Rp#c1 (step 702). If the condition is false, encode the value of the corresponding improvement parameter Rp#c2 for the second chroma component (step 704). If the condition is true Infer the value of Rp#c2 (step 703).
[0053] In the decoder, the first step is to decode the improvement parameter Rp#c1 of the first chroma component. Perform (Step 711). The second step is to check the conditions related to the value of Rp#c1. (Step 712). If the condition is false, decode the value of the corresponding improvement parameter Rp#c2 of the second chroma component (Step 714). If the condition is true, infer the value of Rp#c2 (Step 713).
[0054] In one embodiment, the conditions being tested may include verifying whether the value of the improvement parameter for the first chromatic component is equal to the neutralValue: Rp#c1==neutralValue?
[0055] In another embodiment, the condition being tested may include checking whether the value of the improvement parameter for the first chromatic component is greater than or equal to (neutralValue-thresh1) or less than or equal to (neutralValue-thresh2), where thresh1 and thresh2 are default values (typically equal to 1): Rp#c1>=(neutralValue-thresh1) AND Rp#c1<=(neutralValue+thresh2)?
[0056] In one embodiment, the inferred value of Rp#c2 is neutralValue.
[0057] In one embodiment, the inferred value of Rp#c2 is Rp#c1.
[0058] In one embodiment, the inferred value of Rp#c2 is (neutralValue-Rp#c1).
[0059] Figure 13 shows an example of the modified syntax with the condition Rp#c1(refinement#cb#value[i] in the table) == neutralValue?. If this condition is true, Rp#c2(refinement#cr#value[i] in the table) is inferred to neutralValue. Otherwise, this element is clearly signaled It will be done.
[0060] In general, one embodiment may include controlling the size of the improvement table. For example, one embodiment may include at least one of the following to reduce the coding cost of the improvement table: • The table sizes for cb and cr are the same, fixed and defined by default, and will be named N here. The indexes in tables Rcb#idx[pt] and Rcr#idx[pt] correspond to equidistant points. • A limited number of Nref elements are coded for each improved table. In this example, a directive pt#init is given for the first table point where the table elements are coded. Therefore, the coded improvement values are: 〇 From Rcb#idx[pt#init] to Rcb#idx[pt#init+Nref-1] 〇 From Rcr#idx[pt#init] to Rcr#idx[pt#init+Nref-1]
[0061] Other (uncoded) values are set to the neutral value (NeutralVal). 〇 Rcr#idx[pt]=neutralVal and Rcb#idx[pt]=neutralVal, pt=0 to (pt#init-1) and (pt#init+Nref) to (N-1) In one embodiment, the number of values Nref for each improvement table is equal to 4.
[0062] In one embodiment, the encoder may determine the activation of block-based improvements and derive one or more improvement tables, according to one or more embodiments described herein based on actions listed below and shown in the corresponding block diagrams shown in Figure 14. In one implementation, the listed actions can be repeated. 1. Initialize the map blkTablesId[blkId] to -1, where blkId=0 to (Nblk-1) and Nblk is the number of blocks in the slice (step 802). 2. Initialize the table identifier parameter tablesId to 0 (step 803). 3. Derive an improved table for identifier tablesId from the sample in block blkId where blkTablesId[blkId]=-1 (step 804). a. The results are in the cb table and the cr table: i.(refinement#cb#idx[tablesId][i], refinement#cb#value[tablesId][i]), i is from 0 to (refinement#table#cb#size[tablesId] - 1), and (refinement#cr#idx[tablesId][i], refinement#cr#value[tablesId][i]), where i is from 0 to (refinement#table#cr#size[tablesId] - 1) b. See the following for embodiments for performing the described calculations. For each block blkId where 4.blkTablesId[blkId] = -1, calculate the chroma rate distortion cost without improvement (RD#without[blkId]) and the chroma rate distortion cost with improvement (RD#with[blkId]) using the table calculated in step 3 (step 805). a. Calculate the chroma rate distortion cost as follows: distortion(cb) + distortion(cr) + L * cost(refinement#table#cb) + L * cost(refinement#table#cr) + L * cost(activation map) where L is the well-known "lambda" parameter in the derivation of the rate distortion cost. 5. For all block blkIds where blkTablesId[blkId] = -1, update the activation of block-based improvement as follows (step 806): a. If (RD#with[blkId] < RD#without[blkId]) holds, then blkTablesId[blkId] = tablesId 6. If there are still block blkIds such as blkTablesId[blkId] = -1 and tablesId < MaxNbTables (step 807), a. Increment tablesId by 1 and proceed to step 3. b. Otherwise, stop (step 809).
[0063] MaxNbTables is a default parameter that specifies the maximum number of enabled pairs of improved tables. It is (step 808).
[0064] With respect to the above embodiment 3b, in one embodiment, improved metadata can be derived as described below. The improved metadata represents a correction function indicated by R() that is applied to individual samples of the color components (e.g., luma component Y, or chroma component Cb / Cr). One aspect is minimizing the rate distortion cost between the reconstructed picture and the original picture. This minimization is performed over a given region A, e.g., the entire picture, slice, tile, or C This can be done on TU. The improved metadata is shown in R. In the preferred implementation, N A piecewise linear model defined by pairs (R#idx[k], R#val[k]) and k=0 to N-1 is used in R. .
[0065] This process begins by initializing the improved metadata R with neutral values. (Step 300). The neutral value is the value at which the improvement does not alter the signal. This will be explained further below. Calculate the initial rate-distortion cost initRD using R. The derivation of the rate-distortion cost using the function R is explained below. Initialize the parameter bestRD to initRD. The step of optimizing the improvement metadata R consists of the following steps: PWL The program executes a loop on the index pt of the consecutive pivot points R of the model. Initialize the meters bestVal and initVal in R#val[pt]. Execute a loop through various values of R#val[pt]. The loop runs from the value (initVal-Val0) to the value (initVal+Val1), where Val0 and Val1 are default parameters. Typical values are shown below. (Modified R#val[pt] and The rate distortion cost curRD is calculated using the modified R (both). The ratio of curRD to bestRD. The comparison is performed. If curRD is lower than bestRD, bestRD is set to curRD and bestValue is set to R#val[pt]. Next, the end of the loop for the value of R#val[pt] is checked. The loop is complete. If complete, set R#val[pt] to bestValue. Next, check the loop regarding the value of pt. If the loop has finished, the metadata of the resulting optimization process is in R. The step of optimizing the improved metadata can be repeated several times.
[0066] Next, we will describe the embodiments of the improvement process using the following notation: - B is the bit depth of the signal (e.g., 10 bits). - MaxVal is (2 B The maximum value of the signal calculated as -1) - Sin(p) is the original (input) signal at position p in the picture. - Sout(p) is the signal resulting from the improvement at position p in the picture. - Srec(p) is the signal to be improved. This is derived from the inverse mapping of the first modified form. The signal, or the signal generated from the second modified form of the in-loop filter. - NeutralVal corresponds to the default value; if the improvement value is equal to NeutralVal, the improvement does not modify the signal, and a typical value for NeutralVal is 128.
[0067] The lookup table LutR can be constructed from the improved metadata R as follows: . pt=0 to N-2 From idx=R#idx[pt] to (R#idx[pt+1]-1), LutR[idx]=R#val[pt]+(R#val[pt+1]-R#val[pt])*(idx-R#idx[pt])*(R#idx[pt+1]-R#idx[pt])
[0068] Generally, at least two examples of improvement modes are defined. These examples are referred to herein as “Mode 1” or “Intra-component Improvement Mode” and “Mode 2” or “Inter-component Improvement Mode”: • In Mode 1 or the component improvement mode, the improvement is carried out independently of other components. Preferably, this mode is applied to the luma component and is based on the following formula: 〇 Sout(p)=LutR[Srec(p)] / NeutralVal*Srec(p) In Mode 2 or the inter-component improvement mode, improvement is performed on a certain component in dependence on another component. Preferably, this mode involves a dependence on the Luma component (hereinafter referred to as Srec#Y(p)). This is applied to the chroma component. Srec#Y(p) is the in-loop filter in the first modified form. Note that this can be a signal resulting from the TEPS or inverse mapping. Srec#Y(p) can also be a filtered version of the other (Y) components. Seth based his formula on the following: 〇 Sout(p)=offset+LutR[Srec#Y(p)] / NeutralVal*(Srec(p)-offset) However, the offset is generally set to (MaxVal / 2), and p corresponds to the same relative position within the picture. . Finally, rounding and clipping between the minimum and maximum signal values (typically 0 and 1023 for a 10-bit signal) are applied to the improved value Sout(p). Here, the improvement is multiplicative. It is applied as a child mode. Additive improvement operators can also be used for improvement. In this case, mode 1 is applied as follows: 〇 Sout(p)=LutR[Srec(p)] / NeutralVal+Srec(p) Mode 2 is applied as follows: 〇 Sout(p)=LutR[Srec#Y(p)] / NeutralVal+Srec(p) An improved mode 2 having a multiplicative operator mode in the chromatic component is preferred.
[0069] Next, in one embodiment, the rate distortion cost of the improved metadata R is calculated as follows: This is possible, however, using the following notation: - A is the picture area to be improved, and the improvements can be, for example, the entire picture, slices, or tiles. This can be done on the CTU. - Dist(x,y) is the distortion between sampled values x and y. Typically, the distortion is Squared error (xy) 2 That is - Cost(R) is the coding cost for coding the improved metadata R. - L is the lambda coefficient related to the region. L is typically 2 (QP / 6) It is linearly dependent on QP, and QP is This indicates that quantization parameters are applied to the domain. The rate distortion cost RDcost using improved metadata R is defined as follows:
number
[0070] Generally, one embodiment results in a coded gain, i.e., an increase in quality for the same bitrate or a decrease in bitrate for the same quality. The gains of improvements through block-based activation are shown in the table below. In the non-limiting examples shown below, only one table is allowed per component (K or equivalent refinement#number#of#tables is equal to 1).
[0071] Performance is demonstrated for 5 HDR HD 10-bit content, 5 SDR HD 8-bit content, and 2 SDR HD 10-bit content. The codec used is VTM (Versatile Video Coding (VVC) test model) with QTBT (Quadratic and Binary Tree Block Partitioning Structure) activated. All sequences are coded with an internal bit depth of 10 bits. The table below shows the coding results for a 17-frame sequence in a random access configuration. neutraVal is set to 64. The table size is then set to 17. The improved metadata coding is applied only to temporal level 0.
[0072] The following five tables show the BD rate gains as follows: Table 1 ("Full Slice Improvement") when improvements are applied to all blocks, block-by-block improvements for size 128x128 ("blk128 Improvement"), block-by-block improvements for size 64x64 ("blk64 Improvement"), Also enabled the activation of the 32x32 block-by-block improvement ("blk32 improvement"). Tables 2 through 4 show the cases, and Table 5 shows the case where the best configuration is selected for each content. The results show the benefits or improvements of using block-based improvement activation.
[0073] [Table 1]
[0074] [Table 2]
[0075] [Table 3]
[0076] [Table 4]
[0077] [Table 5]
[0078] This specification describes various examples of embodiments, features, models, methods, etc. Many of these examples are described with specificity and often in a manner that may seem limiting, at least in order to illustrate individual characteristics. However, this is for clarity and does not limit this application or scope. In fact, various examples of embodiments, features, etc. described herein can be combined and substituted in various ways to provide further examples of embodiments.
[0079] In general, the examples of embodiments described herein and anticipated herein can be implemented in many different forms. Figures 1 and 2 above and Figure 15 below illustrate some embodiments, but other embodiments are anticipated, and the description of Figures 1, 2 and 15 does not limit the scope of implementation forms. At least one embodiment generally provides an example relating to video encoding and / or decoding, and at least one other embodiment generally relates to transmitting a generated or encoded bitstream or signal. These and other embodiments can be implemented as a computer-readable storage medium storing instructions for encoding or decoding video data according to any of the methods, apparatus, or described methods, and / or a computer-readable storage medium storing a bitstream or signal generated according to any of the described methods.
[0080] In this application, the terms "reconstruct" and "decode" may be used interchangeably, the terms "pixel" and "sample" may be used interchangeably, and the terms "image," "picture," and "frame" may be used interchangeably. While not always the case, the term "reconstruct" is usually used on the encoder side, while "decode" is usually used on the decoder side.
[0081] This disclosure uses the terms HDR (High Dynamic Range) and SDR (Standard Dynamic Range). These terms often convey specific values of dynamic range to those skilled in the art. However, additional embodiments are also intended in which reference to HDR is understood to mean "higher dynamic range" and reference to SDR is understood to mean "lower dynamic range." Such additional embodiments are not limited by any specific values of dynamic range that may often be associated with the terms "high dynamic range" and "standard dynamic range."
[0082] This specification describes various methods, each of which is a step towards implementing the described method. The method includes one or more steps or actions. Unless a specific order of steps or actions is required for the method to function properly, the order and / or use of any particular steps and / or actions may be modified or combined.
[0083] The intra-prediction, entropic encoding, and / or decoding modules (160, 360, 145, 330) of the video encoder 100 and decoder 200 shown in Figures 1 and 2 can be modified using the various methods and other embodiments described herein. Furthermore, the embodiments described herein are not limited to VVC or HEVC and can be applied to other existing or future standards and recommendations, as well as extensions to any such standards and recommendations (including VVC and HEVC). Unless otherwise specified or technically excluded, the embodiments described herein can be used individually or in combination.
[0084] For example, this specification uses various numerical values. The specific values are illustrative, and the embodiments described are not limited to those specific values.
[0085] Figure 15 shows a block diagram of an example of a system that can implement various aspects and embodiments. System 1000 can be implemented as a device including various components described below and configured to perform one or more aspects described herein. Examples of such devices include, but are not limited to, various electronic devices such as personal computers, laptop computers, smartphones, tablet computers, digital multimedia set-top boxes, digital television receivers, personal video recording systems, connected home appliances, and servers. The elements of System 1000 can be implemented individually or in combination within a single integrated circuit, multiple ICs, and / or individual components. For example, in at least one embodiment, the processing and encoder / decoder elements of System 1000 are distributed across multiple ICs and / or individual components. In various embodiments, System 1000 is communicably coupled to other similar systems or other electronic devices, for example, via a communication bus or by dedicated input and / or output ports. In various embodiments, System 1000 is configured to implement one or more aspects described herein.
[0086] System 1000 includes at least one processor 1010 configured to execute instructions loaded within itself to implement, for example, various embodiments described herein. Processor 1010 may include embedded memory, input / output interfaces, and various other circuits known in the art. System 1000 includes at least one memory 1020 (e.g., a volatile memory device and / or a non-volatile memory device). System 1000 includes a storage device 1040 which may include non-volatile memory and / or volatile memory, including, but not limited to, EEPROM, ROM, PROM, RAM, DRAM, SRAM, flash, magnetic disk drives, and / or optical disk drives. Storage device 1040 may, in non-limiting examples, include an internal storage device, an additional storage device, and / or a network-accessible storage device.
[0087] System 1000 includes an encoder / decoder module 1030 configured to process data to provide, for example, encoded or decoded video, and the encoder / decoder module 1030 may include its own processor and memory. The encoder / decoder module 1030 represents a module that may be included in the device to perform encoding and / or decoding functions. As is known, the device may include one or both of the encoding module and the decoding module. In addition, the encoder / decoder module 1030 may be implemented as a separate element of System 1000, or may be incorporated into the processor 1010 as a combination of hardware and software, as is known to those skilled in the art.
[0088] Program code loaded onto the processor 1010 or the encoder / decoder 1030 to perform various embodiments described herein may be stored in the storage device 1040 and then loaded onto the memory 1020 for execution by the processor 1010. According to various embodiments, one or more of the processor 1010, memory 1020, storage device 1040, and encoder / decoder module 1030 may store one or more of various items during the execution of the processes described herein. Such items to be stored may include, but are not limited to, input video, decoded video or a portion of decoded video, bitstreams or signals, matrices, variables, and intermediate or final results of the processing of equations, formulas, operations, and arithmetic logic.
[0089] In some embodiments, the internal memory of the processor 1010 and / or the encoder / decoder module 1030 is used to store instructions and provide working memory for processing required during encoding or decoding. However, in other embodiments, external memory is used for one or more of these functions (for example, the processing unit may be the processor 1010 or the encoder / decoder module 1030). The external memory may be memory 1020 and / or storage device 1040, such as dynamic volatile memory and / or non-volatile flash memory. In some embodiments, external non-volatile flash memory is used to store the television's operating system. In at least one embodiment, high-speed external dynamic volatile memory such as RAM is used as working memory for video encoding and decoding operations such as MPEG-2, HEVC, or VVC (Versatile Video Coding).
[0090] Inputs to the elements of system 1000 may be provided by various input devices shown in block 1130. Such input devices include, but are not limited to, (i) an RF section for receiving RF signals transmitted wirelessly, for example by a broadcaster, (ii) a composite input terminal, (iii) a USB input terminal, and / or (iv) an HDMI input terminal.
[0091] In various embodiments, the input device of block 1130 has relevant individual input processing elements known in the art. For example, the RF portion may relate to elements for (i) selecting a desired frequency (also said to select a signal or band-limit a signal to a certain frequency band), (ii) down-converting the selected signal, (iii) again band-limiting to a narrower frequency band in order to select a signal frequency band that may (for example) be called a channel in a particular embodiment, (iv) demodulating the down-converted and band-limited signal, (v) performing error correction, and (vi) demultiplexing in order to select a desired stream of data packets. The RF portion of various embodiments includes one or more elements for performing these functions, such as frequency selectors, signal selectors, band-limiters, channel selectors, filters, downconverters, demodulators, error correctors, and demultiplexers. The RF portion may include a tuner that performs various functions of these, including, for example, down-converting a received signal to a lower frequency (e.g., an intermediate frequency or a frequency close to the baseband) or to the baseband. In one embodiment of a set-top box, the RF section and its associated input processing elements receive an RF signal transmitted over a wired (e.g., cable) medium, filter it to a desired frequency band, downconvert it, and filter it again to select a frequency. Various embodiments may rearrange the order of the elements described above (and others), remove some of those elements, and / or add other elements that perform similar or different functions. Adding elements may include inserting elements between existing elements, such as amplifiers and analog-to-digital converters. In various embodiments, the RF section includes an antenna.
[0092] In addition, the USB and / or HDMI terminals may include individual interface processors for connecting the system 1000 to other electronic devices between the ends of the USB and / or HDMI connections. It should be understood that various forms of input processing, such as Reed-Solomon error correction, can be implemented, for example, within a separate input processing IC or within the processor 1010. Similarly, forms of USB or HDMI interface processing can be implemented within a separate interface IC or within the processor 1010. Modulated, error-corrected, and demultiplexed streams are provided to various processing elements, including the processor 1010 and encoder / decoder 1030, which operate in combination with memory and storage elements, for example, in order to process the data stream for presentation on an output device.
[0093] Various elements of system 1000 can be housed within an integrated housing. Within the integrated housing, the various elements are interconnected, and data can be transmitted between them using an appropriate connection configuration 1140, such as an I2C bus, wiring, and an internal bus known in the art, including a printed circuit board.
[0094] The system 1000 includes a communication interface 1050 that enables communication with other devices via a communication channel 1060. The communication interface 1050 may include, but is not limited to, a transceiver configured to send and receive data on the communication channel 1060. The communication interface 1050 may also include, but is not limited to, a modem or a network card, and the communication channel 1060 may be implemented, for example, in a wired medium and / or a wireless medium.
[0095] In various embodiments, data is streamed to system 1000 using a Wi-Fi network such as IEEE 802.11. In these embodiments, the Wi-Fi signal is received on a communication channel 1060 and a communication interface 1050 adapted for Wi-Fi communication. In these embodiments, communication channel 1060 is typically connected to an access point or router that provides access to an external network, including the Internet, to enable streaming applications and other over-the-top communications. In other embodiments, streamed data is provided to system 1000 using a set-top box that delivers data over the HDMI connection of input block 1130. Still other embodiments provide streamed data to system 1000 using the RF connection of input block 1130.
[0096] System 1000 can provide output signals to various output devices, including a display 1100, a speaker 1110, and other peripheral devices 1120. In various embodiments, the other peripheral devices 1120 include one or more of a standalone DVR, a disc player, a stereo system, a lighting system, and other devices that provide functionality based on the output of System 1000. In various embodiments, control signals are communicated between System 1000 and the display 1100, the speaker 1110, or other peripheral devices 1120 using signaling such as AV.Link, CEC, or other communication protocols that enable inter-device control with or without user intervention. Output devices may be communicably coupled to System 1000 via dedicated connections through individual interfaces 1070, 1080, and 1090. Alternatively, output devices may be connected to System 1000 using a communication channel 1060 via a communication interface 1050. The display 1100 and speaker 1110 can be integrated into a single unit together with other components of the system 1000 in an electronic device, such as a television. In various embodiments, the display interface 1070 is controlled by a display driver, such as a timing controller (TCon). Includes the top.
[0097] For example, if the RF portion of input 1130 is part of a separate set-top box, the display 1100 and speaker 1110 can be separated from one or more other components instead. In various embodiments where the display 1100 and speaker 1110 are external components, the output signal can be, for example, an HDMI port, a USB port, or This can be provided via a dedicated output connection, including a COMP output.
[0098] The embodiments can be implemented by computer software implemented by the processor 1010, by hardware, or by a combination of hardware and software. In non-limiting examples, embodiments may be implemented by one or more integrated circuits. The memory 1020 can be of any type suitable for the technical environment and can be implemented using any suitable data storage technology, such as optical memory devices, magnetic memory devices, semiconductor-based memory devices, fixed memory, and removable memory, in non-limiting examples. The processor 1010 can be of any type suitable for the technical environment and can include one or more microprocessors, general-purpose computers, dedicated computers, and processors based on multicore architectures, in non-limiting examples.
[0099] Figures 16 to 30 below illustrate various other examples of embodiments suitable for implementing one or more of the embodiments described herein.
[0100] Figure 16 shows an example architecture of transmitter 1000 configured to encode a picture in a bitstream, according to certain and non-limiting embodiments.
[0101] The transmitter 1000 includes one or more processors 1005, which may include, for example, a CPU, GPU, and / or a DSP (an acronym for Digital Signal Processor), along with built-in memory 1030 (e.g., RAM, ROM, and / or EPROM). The transmitter 1000 includes one or more communication interfaces 1010 (e.g., a keyboard, mouse, touchpad, webcam), each adapted to display output information and / or allow a user to input commands and / or data, and a power supply 1020, which may be located outside the transmitter 1000. The transmitter 1000 may also include one or more network interfaces (not shown). The encoder module 1040 represents a module that may be included in the device to perform coding functions. In addition, the encoder module 1040 may be implemented as a separate element of the transmitter 1000, or it may be incorporated into the processor 1005 as a combination of hardware and software, as is known to those skilled in the art.
[0102] The picture can be obtained from the source. According to different embodiments, the source is not limited to this, - Local memory, such as video memory, RAM, flash memory, hard disk, - Interfaces with storage devices, such as mass storage, ROM, optical disks, or magnetic supports. - Communication interfaces, such as wired interfaces (e.g., bus interfaces, wide area network interfaces, local area network interfaces), or wireless interfaces (IEEE 802.11 interfaces or Bluetooth interfaces, etc.), and - Picture acquisition circuit (e.g., sensor such as CCD (i.e., charge-coupled device) or CMOS (i.e., complementary metal-oxide-semiconductor)) It is possible.
[0103] According to different embodiments, the bitstream can be transmitted to a destination. For example, the bitstream is stored in remote or local memory, such as video memory, RAM, or a hard disk. In modified forms, the bitstream is transmitted to a storage interface, such as mass storage, ROM, flash memory, optical disk, or magnetic support, and / or to a communication interface, such as a point-to-point link, communication bus, point-to-multipoint link, or broadcast network. It is transmitted over the face.
[0104] According to a non-limiting example of the embodiment, the transmitter 1000 further includes a computer program stored in memory 1030. The computer program includes instructions that enable the transmitter 1000 to execute the encoding method described with respect to Figure 20 when executed by the transmitter 1000, specifically by the processor 1005. According to a modified form, the computer program is stored outside the transmitter 1000 on an external storage medium such as a non-temporary digital data support, for example, an HDD, CD-ROM, DVD, read-only and / or DVD drive, and / or DVD read / write drive, all known in the art. Thus, the transmitter 1000 includes a mechanism for reading the computer program. Furthermore, the transmitter 1000 may access one or more USB-type storage devices (e.g., "Memory Stick") via a corresponding Universal Serial Bus (USB) port (not shown).
[0105] According to one or more non-limiting examples of the embodiments, the transmitter 1000 is not limited to these, - Mobile devices, - Communication equipment, - Game console, - Tablet (or tablet computer), - Laptop, - Still image camera, - Video camera, - Encoding chip or encoding device / equipment, - Still image server, and - Video server (e.g., broadcast server, video-on-demand server, or web server) It is possible.
[0106] Figure 17 shows an example of a video encoder 100, such as an HEVC encoder, adapted to perform the encoding method of Figure 20. Encoder 100 is an example of a transmitter 1000 or a part of such transmitter 1000.
[0107] For encoding, a picture is typically divided into basic coding units, such as a coding tree unit (CTU) in HEVC or a macroblock unit in H.264. A set of, if any, consecutive basic coding units are grouped into slices. A basic coding unit contains the basic coding blocks for all color components. In HEVC, the smallest coding tree block (CTB) size of 16x16 corresponds to the size of a macroblock used in previous video coding standards. While the terms CTU and CTB are used herein to describe encoding / decoding methods and encoding / decoding devices, it should be understood that these methods and devices may be named differently in other standards such as H.264 (e.g., macroblocks) and should not be limited by those specific terms.
[0108] In HEVC coding, a picture is divided into square CTUs with configurable sizes, typically 64x64, 128x128, or 256x256. A CTU is the root of a quadtree split into four square coding units (CUs) of equal size, i.e., half the width and height of the parent block. A quadtree is a tree in which a parent node can be divided into four child nodes, each of which can become the parent node of another split into four child nodes. In HEVC, a coded block (CB) is divided into one or more predicted blocks (PBs), which form the root of a quadtree split into transformed blocks (TBs). Corresponding to locks and transformation blocks, a coding unit (CU) includes a prediction unit (PU) and a set of tree-structured transformation units (TU), where the PU contains prediction information for all color components, and the TU contains the residual coding syntactic structure for each color component. The sizes of the CB, PB, and TB of the luma components correspond to the corresponding CU, PU, and TU.
[0109] In more recent encoding systems, the CTU is the root of a coding tree partition into coding units (CUs). A coding tree is a tree in which a parent node (usually corresponding to a CU) can be partitioned into child nodes (e.g., two, three, or four child nodes), each of which can be the parent node of another partition into its child nodes. In addition to the quadtree partitioning mode, new partitioning modes (binary symmetric partitioning mode, binary asymmetric partitioning mode, and ternary partitioning mode) are also defined, increasing the total number of possible partitioning modes. A coding tree has its own root node, e.g., the CTU. The leaves of a coding tree are the terminal nodes of the tree. Each node in a coding tree represents a CU that can be further partitioned into a subCU or, more generally, a smaller CU, also called a subblock. Once the partitioning of the CTU into CUs is decided, the CU corresponding to the leaf of the coding tree is encoded. The coding parameters used to partition the CTU into CUs and to encode each CU (corresponding to the leaf of the coding tree) can be determined on the encoder side by a rate-distortion optimization procedure. There is no division of the CB into PB and TB; that is, the CU is made up of a single PU and a single TU.
[0110] Hereinafter, the terms “block” or “picture block” may be used to refer to any one of CTU, CU, PU, TU, CB, PB, and TB. In addition, the terms “block” or “picture block” may be used more broadly to refer to arrays of samples of various sizes, to refer to macroblocks, partitions, and subblocks as defined within H.264 / AVC or other video coding standards.
[0111] Returning to Figure 17, in an example of an embodiment of encoder 100, the picture is encoded by the encoder elements as described below. The picture to be encoded is processed in units of CUs. Each CU is encoded using either intra-mode or inter-mode. When a CU is encoded in intra-mode, intra-mode performs intra-prediction (160). Inter-mode performs motion estimation (175) and motion compensation (170). The encoder decides whether to use intra-mode or inter-mode to encode the CU (105), and indicates the intra / inter decision with a prediction mode flag. The residual is calculated by subtracting the predicted sample block (also known as the predictor) from the original picture block (110).
[0112] Intra-mode CUs are predicted, for example, from reconstructed neighboring samples within the same slice. HEVC has 35 prediction modes, including DC, planar, and 33 angular prediction modes. A set of inter-prediction modes can be used. Inter-mode CUs are predicted from reconstructed samples of the reference picture stored in the reference picture buffer (180).
[0113] The residual is transformed (125) and quantized (130). The quantized transformation coefficients, as well as the motion vector and other syntactic elements, are entropicated (145) to output a bitstream. The encoder may skip the transformation, or bypass both the transformation and quantization, i.e., the residual is directly encoded without applying the transformation or quantization process.
[0114] Entropicoding can take various forms, such as context-adaptive binary arithmetic coding (CABAC), context-adaptive variable-length coding (CAVLC), Huffman, arithmetic, or exponential Golome coding. CABAC is an entropicoding method first introduced in H.264 and also used in HEVC. CABAC includes binarization, context modeling, and binary arithmetic coding. Binarization maps syntactic elements to binary symbols (bins). Text modeling determines the probability of each regularly coded bin (i.e., non-bypassed) based on a specific context. Finally, binary arithmetic coding compresses the bins into bits according to the determined probabilities.
[0115] The encoder includes a decoding loop, which decodes the encoded block to provide a reference for further prediction. The quantized transformation coefficients are inversely quantized (140) and inversely transformed (150) to decode the residuals. The picture block is reconstructed by combining the decoded residuals with the predicted sample block (155). Optionally, an in-loop filter (165) is applied to the reconstructed picture to reduce encoding artifacts, for example, by performing DBF (deblocking filter) / SAO (sample adaptive offset) / ALF (adaptive loop filtering). The filtered picture is stored in a reference picture buffer (180) and can be used as a reference for other pictures. In this embodiment, improved data is determined from the filtered reconstructed picture, i.e., the output of the in-loop filter and its original version (190). In the first modification, improved data is determined from the reconstructed picture before in-loop filtering and its original version (190). In this first modification, the improvement is applied before in-loop filtering. In the second modification, the improved data is determined from the reconstructed picture and its original version after partial filtering, for example, after deblocking filtering but before SAO (190). In this second modification, the improvement is applied after partial filtering, for example immediately after, for example after deblocking filtering but before SAO. The improved data represents a correction function denoted by R() that is applied to individual samples of the color components (e.g., luma component Y or chroma component Cb / Cr, or color components R, G, or B). The improved data is entropicated into the bitstream. In this embodiment, the improvement process is outside the decoding loop. Therefore, the improvement process is applied only as a post-processing step within the decoder.
[0116] Figure 18 shows a modified version 101 of the video encoder 100 in Figure 17. Modules in Figure 18 that are identical to those in Figure 17 are labeled with the same reference numbers and no further explanation is given. Pictures can be mapped before encoding by the video encoder 101 (105). Such mapping can be used to better utilize the distribution of codeword values in the picture samples. As shown in Figure 18, mapping is generally applied to the original (input) samples before core encoding. Typically, a static mapping function, i.e., the same function for all content, is used to limit complexity. For example, a mapping function fmap() modeled by a 1D lookup table LUTmap[x] (where x is a value) is applied directly to the input signal x as follows: y=fmap(x) or y = LUTmap[x] However, x is the input signal (for example, 0 to 1023 for a 10-bit signal), and y is the mapped signal.
[0117] In the modified form, the mapping function for one component depends on another component (inter-component mapping function). For example, chroma component c is mapped according to luma component y at the same relative position in the picture. Chroma component c is mapped as follows: c = offset + fmap(y) * (c - offset) or c = offset + LUTmap[y] * (c - offset) However, the offset is typically the center value of the chroma signal (e.g., 512 for a 10-bit chroma signal). This parameter can also be a dynamic parameter encoded within the stream, which can result in improved compression gain.
[0118] The mapping function can be defined by default, or, for example, a piecewise linear model, scaling Signaling can be performed within a bitstream using a table or a delta QP (dQP) table.
[0119] The reconstructed picture after filtering, i.e., the output of the in-loop filter, is reverse-mapped (185). Reverse mapping (185) is an implementation of the reverse process of mapping (105). The improved data is determined from the reconstructed picture after filtering and its original version after reverse mapping (190). The improved data is then entropicated into the bitstream. In this embodiment, the improvement process is outside the decoding loop. Therefore, the improvement process is applied only within the decoder as a post-processing step.
[0120] Figure 19 shows a modified version 102 of the video encoder 100 in Figure 17. Modules in Figure 19 that are identical to those in Figure 17 are labeled with the same reference numbers and will not be further explained. The mapping module 105 is optional. The improved data is determined from the filtered reconstructed picture, i.e., the output of the in-loop filter and its original version if mapping is not applied, or from the mapped original version if mapping is applied (190). The improved data is then entropicated into the bitstream (145). The filtered reconstructed picture is also improved using the improved data (182). The improved picture, rather than the filtered reconstructed picture, is stored in the reference picture buffer (180). In this embodiment, the improvement process is an in-loop process, i.e., part of the decoding loop. Therefore, the improvement process is applied in both the encoder and the decoder's decoding loop. Modules 182 and 190 can be inserted at various positions. The improved module 182 can be inserted before the in-loop filter, or between the in-loop filters if there are at least two in-loop filters, for example, after the DBF and before the SAO. Module 190 is positioned to take the same picture as the improved module 182 as input, i.e., a reconstructed picture if module 182 is before the in-loop filter, or a partially filtered reconstructed picture if module 182 is between the in-loop filters.
[0121] Figure 20 shows a flowchart of a method for encoding a picture portion in a bitstream according to certain and non-limiting embodiments. This method begins in step S100. In step S110, a transmitter 1000, such as encoder 100, 101, or 102, accesses the picture portion. As shown in Figures 18 and 19, the accessed picture portion may be optionally mapped before encoding. In step S120, the transmitter encodes and reconstructs the accessed picture portion to obtain a reconstructed picture portion. For this purpose, the picture portion can be divided into blocks. Encoding a picture portion includes encoding blocks of the picture portion. Encoding blocks usually, but not necessarily, includes subtracting predictors from the blocks to obtain blocks of residuals, converting the blocks of residuals into blocks of transformation coefficients, quantizing the blocks of coefficients using a quantization step size to obtain blocks of quantized transformation coefficients, and entropicoding the blocks of quantized transformation coefficients into a bitstream. Reconstructing a block on the encoder side typically involves, though not always, inversely quantizing the block of quantized transformation coefficients, inversely transforming it to obtain a block of residuals, and then adding a predictor to the residual block to obtain a decoded block. The reconstructed picture portion can be filtered by in-loop filters, such as deblocking / SAO / ALF filters, as shown in Figures 17-19, and can also be inverse-mapped as shown in Figure 18.
[0122] In step S130, the coding cost of the data (i.e., the coding cost of the improved data and the improved picture portion), and the original version of the picture portion, i.e., the accessed image portion which may be mapped as shown in Figure 19, and which may be filtered as shown in Figures 17 and 19 or reverse-mapped and improved as shown in Figure 18. The refinement data is determined, for example, by module 190, so that the rate distortion cost, calculated as a weighted sum of distortions between the reconstructed picture portion and the original, is reduced or minimized. More precisely, the refinement data is: - If mapping is not applied before coding, as shown in Figures 17 and 19 without mapping, the coding cost of the data (i.e., the coding cost of the improved data and the improved picture portion) and the rate distortion cost, calculated as a weighted sum of the distortions between the original version of the aforementioned picture portion and the aforementioned reconstructed picture portion after improvement with the aforementioned improved data, are determined to be lower than the coding cost of the data (i.e., the coding cost of the unimproved picture portion) and the rate distortion cost, calculated as a weighted sum of the distortions between the original version of the aforementioned picture portion and the aforementioned reconstructed picture portion without improvement. - As shown in Figure 18 (with mapping, improvement outside the loop), if mapping is applied before coding and the aforementioned improvement is outside the decoding loop, the data coding cost (coding cost of the improved data and the improved picture portion) and the rate distortion cost, calculated as a weighted sum of the distortions between the original version of the aforementioned picture portion and the aforementioned reconstructed picture portion after the reverse mapping and the improved data, are determined to be reduced compared to the data coding cost and the rate distortion cost calculated as a weighted sum of the distortions between the original version of the aforementioned picture portion and the aforementioned reconstructed picture portion after reverse mapping without improvement. - As shown in Figure 19 with mapping, if mapping is applied before coding and the aforementioned improvements are inside the decoding loop, the data coding cost and the rate distortion cost, calculated as a weighted sum of the distortions between the mapped original version of the aforementioned picture portion and the reconstructed picture portion after the improvements using the aforementioned improved data, are determined to be lower than the data coding cost and the rate distortion cost, calculated as a weighted sum of the distortions between the mapped original version of the aforementioned picture portion and the reconstructed picture portion without improvements. The reconstructed picture portion used to determine the improved data can be an in-loop filtered version or an in-loop part filtered version of the reconstructed picture portion.
[0123] In certain and non-limiting embodiments, the improved data shown in R is favorably modeled by a piecewise linear model (PWL) defined by N pairs (R#idx[k], R#val[k]) from k=0 to N-1. Each pair is then defined as the pivot point of the PWL model. Step S130 is detailed in Figures 21 to 26. R#idx[k] is typically a value within the range of the signal under consideration, for example, 0 to 1023 for a 10-bit signal. Favorably, R#idx[k] is greater than R#idx[k-1].
[0124] In step S140, the improved data is encoded in a bitstream or signal. The following is a non-limiting example of an embodiment of the syntax. This example considers improving three components. In the modified form, the syntax can be coded and applied to only a portion of the components (for example, only two chroma components). The improved data is encoded in the form of an improved table.
[0125] [Table 6]
[0126] If refinement#table#new#flag is equal to 0, or if refinement#table#flag#luma is 0 If it is equal to , do not apply the improvement to Luma.
[0127] Otherwise, for all points from 0 to (refinement#table#luma#size-1), the luma improvement value (R#idx[pt], R#val[pt]) is calculated as follows: • Set R#idx[pt] to equal to (default#idx[pt] + refinement#luma#idx[pt]). • Set R#val[pt] to equal to (NeutralVal+refinement#luma#value[pt])
[0128] Apply a similar process to the cb or cr component.
[0129] For example, NeutralVal=128. This can be used to initialize the value of R#val in step S130, as detailed in Figures 21 and 24. NeutralVal and default#idx[pt] can be default values known on both the encoder and decoder sides, in which case these values do not need to be transmitted. In a modified form, NeutralVal and default#idx[pt] are bits It may be a value encoded within a stream or signal.
[0130] Preferably, default#idx[pt] for points from 0 to (refinement#table#luma#size-1) is default#idx[pt]=(MaxVal / (refinement#table#luma#size-1))*pt or default#idx[pt]=((MaxVal+1) / (refinement#table#luma#size-1))*pt This is defined as an equidistant index from 0 to MaxVal or (Max+1). MaxVal is the maximum value of the signal (for example, 1023 if the signal is represented by 10 bits).
[0131] In the modified form, when mapping is applied and based on the PWL mapping table defined by pairs of (map#idx[k], map#val[k]), R#idx[k] from k=0 to N-1 are initialized by map#idx[k]. In other words, default#idx[k] is equal to map#idx[k]. Similarly, in another modified form, R#val[k] from k=0 to N-1 can be initialized by map#val[k] from k=0 to N-1.
[0132] The syntax elements refinement#table#luma#size, refinement#table#cb#size, and refinement#table#cr#size can be defined by default, in which case they do not need to be coded within the stream.
[0133] For equidistant points in the Luma PWL model, code refinement#luma#idx[pt]. It's not necessary. Set refinement#luma#idx[pt] to 0 so that R#idx[pt]=default#idx[pt] for points from 0 to (refinement#table#luma#size-1). The same applies to the cb table or cr table.
[0134] In modified forms, syntactic elements can be added to each table to indicate which improved mode is used (within a component (mode 1) and / or between components (mode 2)). Syntactic elements can be signaled at the SPS, PPS, slice, tile, or CTU levels.
[0135] In modified forms, syntactic elements can be added to each table to indicate whether the table is applied as a multiplicative or additive operator. Syntactic elements can be signaled at the SPS, PPS, slice, tile, or CTU levels.
[0136] In one embodiment, the improved table is not encoded within the bitstream or signal. Instead, a default inverse mapping table (corresponding to the inverse of the mapping table used by mapping 105 in Figures 18 and 19) is modified by the improved table, and the modified inverse mapping table is encoded within the bitstream or signal.
[0137] In one embodiment, the improved table is coded only for pictures at low temporal levels. For example, the table is coded only for pictures with a temporal level of 0 (the lowest level in the temporal coding hierarchy).
[0138] In one embodiment, the improved table is coded only for random access pictures such as intrapictures.
[0139] In one embodiment, the improvement table is coded only for high-quality pictures corresponding to the average QP on pictures that is below a given value.
[0140] In one embodiment, the improved table is coded only if the coding cost of the improved table is less than a given value compared to the coding cost of the full picture.
[0141] In one embodiment, given the rate distortion gain compared to not coding the improved table, The improved table is coded only if the value exceeds a certain threshold. For example, the following rules may apply: If the gain of the rate distortion cost exceeds (0.01 * width * height), and width and height are the dimensions of the component under consideration, then code the table. • The gain of the rate distortion cost exceeds (0.0025*initRD), and initRD applies the component improvement. If it is the rate distortion cost when not, code the table. When the rate distortion cost is based on squared error distortion, this roughly corresponds to a minimum PSNR gain of 0.01 dB. When a given value is set to (0.01 * initRD), the rate distortion cost is based on squared error distortion. In this case, this roughly corresponds to a minimum PSNR gain of 0.05 dB. The values listed are merely examples and can be modified.
[0142] Returning to Figure 20, in an optional step S150, improved data is applied to the reconstructed picture portion, which may be filtered as shown in Figure 19. To do this, a lookup table LutR is determined from pairs of PWL points (R#idx[pt], R#val[pt]) from pt=0 to N-1. For example, LutR is determined by linear interpolation between each pair of PWL points (R#idx[pt], R#val[pt]) and (R#idx[pt+1], R#val[pt+1]) as follows: pt=0 to N-2 From idx=R#idx[pt] to (R#idx[pt+1]-1), LutR[idx]=R#val[pt]+(R#val[pt+1]-R#val[pt])*(idx-R#idx[pt]) / (R#idx[pt+1]-R#idx[pt])
[0143] In the modified form, LutR is determined as follows: pt=0 to N-2 From idx=R#idx[pt] to (R#idx[pt+1]-1), LutR[idx]=(R#val[pt]+R#val[pt+1]) / 2 Two examples of the improved mode are as follows: • Mode 1 - Component-specific improvement. In Mode 1, improvement is performed independently of other components. Signal Srec(p) The following improvements will be made: Sout(p)=LutR[Srec(p)] / NeutralVal*Srec(p) However, Srec(p) is the improved and reconstructed signal located at position p within the picture portion, corresponding to the signal resulting from the in-loop filter or possibly from the inverse mapping, while Sout(p) is the improved signal. Here, we assume that signals Srec and Sout use the same bit depth. If different bit depths are used for both signals (i.e., Bout for Sout and Brec for Srec), a scaling factor related to the difference in bit depths can be applied. For example, if the bit depth Bout of Sout is higher than the bit depth Brec of Srec, the formula can be adapted as follows: Sout(p)=2 (Bout-Brec) *LutR[Srec(p)] / NeutralVal*Srec(p) The scaling factor can be directly integrated into the value of LutR. For example, if the bit depth Bout of Sout is lower than the bit depth Brec of Srec, the formula can be adapted as follows: Sout(p)=LutR[Srec(p)] / NeutralVal*Srec(p) / 2 (Brec-Bout) The scaling factor can be directly integrated into the value of LutR. Advantageously, mode 1 is used for the luma component. · Mode 2 - improvement between components. In mode 2, an improvement is made for a certain component C0 and depends on another component C1. The signal Srec#C0(p) is improved as follows: Sout(p)=offset+LutR[Srec#C1(p)] / NeutralVal*(Srec#C0(p)-offset) where offset is set, for example, to (MaxVal / 2), Srec#C0(p) is the reconstructed signal of the component C0 to be improved, p is the sample position within the picture part, MaxVal is the maximum value of the signal Srec#C0, calculated as (2 B -1), and B is the bit depth of the signal. Srec#C1(p) is the reconstructed signal of the component C1 . Srec#C1(p) can be a signal resulting from an in-loop filter or an inverse mapping. After being filtered by the in-loop filter, Srec#C1(p) can be further filtered, for example, using a low-pass filter. Here, it is considered that the signals Srec#C0 , Srec#C1, and Sout use the same bit depth. Advantageously, mode 2 is the chroma It can be applied to the M component and depends on the R component. The bit depth of Sout is Bout and Srec#C0. If the bit depth of Srec#C1 is greater than Brec, apply the following formula: Sout(p) = 2 (Bout-Brec) *(offset+LutR[Srec#C1(p)] / NeutralVal*(Srec#C0(p)-offset)) If the bit depth Bout of Sout is lower than the bit depth Brec of Srec#C0 and Srec#C1, apply the following formula: Sout(p)=(offset+LutR[Srec#C1(p)] / NeutralVal*(Srec#C0(p)-offset)) / 2 (Bout-Brec) Finally, rounding and clipping between the minimum and maximum signal values (typically 0 and 1023 for a 10-bit signal) are applied to the improved value Sout(p).
[0144] In the above embodiment, the improvement is applied as a multiplicative operator. In the modified form, the improvement is applied as an additive operator. In this case, in mode 1, the signal Srec(p) is improved as follows: 〇 Sout(p)=LutR[Srec(p)] / NeutralVal+Srec(p) In this case, in mode 2, the signal Srec#C0(p) is modified as follows: 〇 Sout(p)=LutR[Srec#C1(p)] / NeutralVal+Srec#C0(p)
[0145] Regarding the chromatic components Cb and Cr, one of the values in the intercomponent improvement table for NeutralVal=64 and N=17 Here is an example:
[0146] [Table 7]
[0147] [Table 8]
[0148] Returning to Figure 20, this method ends in step S160.
[0149] Figure 21 shows a flowchart illustrating an example of further details regarding step S130. A given picture area A, for example, on a slice, tile, or CTU, or on the entire picture, is modified. Good data can be determined. The improved data R is modeled favorably by a piecewise linear model (PWL) defined by N pairs (R#idx[k], R#val[k]) from k=0 to N-1. Figure 22 shows an example of a PWL model where N=6 (k∈[0,1,2,3,5]). Each pair is a PWL model. Determine Dell's pivot point.
[0150] Initialize the values of R#idx and R#val (step S1300). Typically, R#idx[k] is initialized for k=0 to N-1, so that there are equidistant intervals between consecutive indices, i.e., (R#idx[k+1]-R#idx[k])=D, where D=Range / (N-1), and Range is the range of the signal to be improved. For example, for a signal represented by 10 bits, it would be 1024. In one example, N=17 or 33. The value of R#val is initially set to a NeutralVal value, for example 128, so that the improvement does not change the signal. The modified form applies a mapping, and if it is based on a PWL mapping table defined by pairs of (map#idx[k], map#val[k]), then (R#idx[k], R#val[k]) from k=0 to N-1 are initialized by (map#idx[k], map#val[k]).
[0151] In the embodiment shown in Figure 21, only the value of R#val[k] is determined. The value of R#idx[k] is fixed to its initial value. Using R initialized in S1300, the initial rate distortion cost initRD is calculated. (Step 1301). The initial rate distortion cost initRD is calculated as follows: initRD = L * Cost(R) + Σ p in A dist(Sin(p), Sout(p)) (Equation 1) however - R is improved data initialized with S1300, - A is the picture area to be improved, - Sin(p) is as follows, that is If no mapping is applied, Sin(p) is a sample of pixel p within the original picture region. It is a value, When mapping is applied and the improvement is outside the loop (Figure 18), Sin(p) is the sample value of pixel p within the original picture region. When mapping is applied and the improvement is within a loop (Figure 19), Sin(p) is the sample value of pixel p within the mapped original picture region. It was decided that, - Sout(p) is a sample value of pixel p within the improved picture area. - dist(x,y) is the distortion between the sample value x and the sample value y, for example, the distortion is squared. Error(xy) 2 Other possible distortion functions are absolute difference |xy|, or subjective methods such as SSIM. This is metric-based distortion (Z. Wang, AC Bovik, HR Sheikh and EP Simoncelli, “Image quality assessment: From error visibility to structural similarity,” IEEE Transactions on Image Processing, vol. 13, no. 4, pp. 600-612, April 2004). Alternatively, a modified form of SSIM can also be used. - Cost(R) is the coding cost for coding the improved data R and the improved picture area. - L is a value related to picture region A. L is favorably 2 (QP / 6) It is linearly dependent, and QP is the quantization parameter when a single quantization parameter value is used within picture region A. , or if various quantization parameter values are used within picture region A, QP is in picture region This represents the quantization parameters applied to domain A. For example, QP is the average of the QP used within a block of domain A. If the value of R#val is initialized with the value of NeutralVal, the initial rate distortion cost initRD is: The calculation can be performed using the coding cost of the picture area without the coding cost of the improved data.
[0152] In step S1302, the parameter bestRD is initialized to initRD. Next, in step S1303, the improved data R is determined. In step S1304, the PWL model is sequential Then, execute a loop on the index pt of pivot point R. Step S1305 Next, the parameters bestVal and initVal are initialized to R#val[pt]. In step S1306, a loop is executed through various values of R#val[pt], i.e., values from (initVal-Val0) to (initVal+Val1), where Val0 and Val1 are default parameters. Typical values are Val0=Val1=NeutralVal / 4. In step S1307, the rate distortion cost curRD is calculated using Equation 1 with the current R (and with the current R#val[pt]). In step S1308, curRD is compared with bestRD. If curRD is lower than bestRD, set bestRD to curRD and bestValue to R#val[pt]. Otherwise, this method continues to step S1310. In step S1310, check if the loop on the value of R#val[pt] has finished. If the loop has finished, In step S1311, set R#val[pt] to bestValue. In step S1312, check if the loop on the value of pt has finished. If the loop has finished, the improved data to be output is the current R.
[0153] Step S1303 can be repeated n times, where n is a fixed integer, for example, n=3. Figure 23 shows the determination of R#val. The dashed line represents the PWL after updating R#val.
[0154] Figure 24 shows a modified version of the process in Figure 21. In the embodiment of Figure 24, only the value of R#idx[k] is determined. The value of R#val[k] is fixed to its initial value. This process uses the initial R#idx and R#val data (e.g., resulting from the method in Figure 21) as input. In step S1401, the initial rate strain cost initRD is calculated using (Equation 1). Then, in step S1402, the parameter bestRD is initialized to initRD. In step S1403, the improved data R is determined. In step S1404, the PWL model undergoes a series of pivots. A loop is executed on the index pt of point R. In step S1405, the parameter The bestIdx and initIdx are initialized to R#idx[pt]. In step S1406, a loop is executed through various values of R#idx[pt] (from initIdx-idxVal0 to initIdx+idxVal1), where idxVal0 and idxVal1 are default values, for example idxVal0=idxVal1=D / 4, where D=Range / (N-1), and Range is the range of the signal to be improved (for example, 1024 for a signal represented by 10 bits). In step S1407, the rate-distortion cost curRD is calculated using Equation 1 with the current R (and the current R#idx[pt]). In step S1408, curRD is compared with bestRD. If curRD is lower than bestRD, bestRD is set to curRD and bestIdx is set to R#idx[pt]. Otherwise, this method continues to step S1310. In step S1410, R#idx[pt] Check if the loop on the value of has finished. If the loop has finished, set R#idx[pt] to bestIdx in step S1411. In step S1412, check if the loop on the value of pt has finished. If the loop has finished, the improved data to output is the current R. Step S1403 can be repeated n times, where n is a fixed value. Let n be an integer, for example, n=3.
[0155] Figure 25 shows the determination of R#idx. The dashed line represents the PWL after updating R#idx.
[0156] Figure 26 shows the determination of both R#idx and R#val. The dashed line represents the PWL after updating R#val and R#idx.
[0157] Figure 27 shows an example architecture of a receiver 2000 configured to decode a picture from a bitstream or signal to obtain a decoded picture, according to certain and non-limiting embodiments. The receiver 2000 includes one or more processors 2005, which may include, for example, a CPU, GPU, and / or a DSP (an English acronym for Digital Signal Processor), along with internal memory 2030 (e.g., RAM, ROM, and / or EPROM). The receiver 2000 includes one or more communication interfaces 2010 (e.g., keyboard, mouse, touchpad, webcam), each adapted to display output information and / or allow a user to input commands and / or data (e.g., a decoded picture), and a power supply 2020, which may be located outside the receiver 2000. The receiver 2000 may also include one or more network interfaces (not shown). Decoder module 2040 represents a module that may be included in the device to perform the decoding function. In addition, the decoder module 2040 may be implemented as a separate element of the receiver 2000, or it may be incorporated into the processor 2005 as a combination of hardware and software, as is known to those skilled in the art.
[0158] A bitstream or signal can be obtained from a source. According to different embodiments, the source is not limited to this, - Local memory, such as video memory, RAM, flash memory, hard disk, - Interfaces with storage devices, such as mass storage, ROM, optical disks, or magnetic supports. - Communication interfaces, such as wired interfaces (e.g., bus interfaces, wide area network interfaces, local area network interfaces), or wireless interfaces (IEEE 802.11 interfaces or Bluetooth interfaces, etc.), and - Image acquisition circuit (for example, a sensor such as a CCD (i.e., charge-coupled device) or CMOS (i.e., complementary metal-oxide-semiconductor)) It is possible.
[0159] According to different embodiments, the decoded picture can be sent to a destination, such as a display device. As an example, the decoded picture is stored in a remote memory or a local memory, such as a video memory, or a RAM, a hard disk. In a modified form, the decoded picture is sent to an interface of a storage area, such as a mass storage area, a ROM, a flash memory, an optical disk, or a magnetic support, and / or transmitted on an interface of a communication interface, such as a two-point link, a communication bus, a one-point to multi-point link, or a broadcast network.
[0160] According to certain and non-limiting embodiments, the receiver 2000 further includes a computer program stored in the memory 2030. The computer program includes instructions that enable the receiver to execute the decoding method described with respect to FIG. 31 when executed by the receiver 2000, specifically by the processor 2005. According to a modified form, the computer program is stored outside the receiver 2000 on a non-temporary digital data support, such as an external storage medium known in the art, such as an HDD, a CD-ROM, a DVD, a read-only and / or a DVD drive, and / or a DVD read / write drive. Therefore, the receiver 2000 includes a mechanism for reading the computer program. Further, the receiver 2000 can access one or more USB-type storage devices (such as a "memory stick") via a corresponding universal serial bus (USB) port (not shown).
[0161] According to one or more non-limiting examples of the embodiments, the receiver 2000 is not limited to only - a mobile device, - a communication device, - a game console, - a set-top box, - a TV set, - a tablet (or a tablet computer), - a laptop, - A video player, such as a Blu-ray player, a DVD player, - A display, and - A decoding chip or a decoding device / apparatus may be.
[0162] FIG. 28 shows a block diagram of an example of an embodiment of a video decoder 200, such as a HEVC-type video decoder, adapted to execute the decoding method of FIG. 31. The video decoder 200 is an example of a receiver 20 00 or a part of such a receiver 2000. In the illustrated example of the embodiment of the decoder 200, a bitstream or signal is decoded by elements of the decoder as described below. The video decoder 200 generally executes a decoding path that is reverse to the encoding path described in FIG. 17 for decoding video as part of encoding video data.
[0163] Specifically, the input to the decoder includes a video bitstream or signal that may be generated by a video encoder 100. First, entropy decode (230) the bitstream or signal to obtain transform coefficients, motion vectors, and other coding information, such as refinement data. Inverse quantize (240) and inverse transform (250) the transform coefficients to decode the residuals. Combine the decoded residuals with a predicted block (also known as a predictor) (255) to obtain a decoded / reconstructed picture block. The predicted block can be obtained from intra prediction (260) or motion compensation prediction (i.e., inter prediction) (275) (270). As described above, AMVP and merge mode techniques can be used during motion compensation where an interpolation filter can be used to calculate interpolation values for sub-integer samples of the reference block. Apply an in-loop filter (265) to the reconstructed picture. The in-loop filter may include a deblocking filter and a SAO filter. Store the filtered picture in a reference picture buffer (280). This improves (290) the reconstructed picture that is filtered. The improvement is outside the decoding loop and is applied as a post-processing process.
[0164] Figure 29 shows a modified version 201 of the video decoder 200 in Figure 28. Modules in Figure 29 that are identical to those in Figure 28 are labeled with the same reference numbers and no further explanation is given. The reconstructed picture after filtering, i.e., the output of the in-loop filter, is reverse-mapped (285). Reverse mapping (285) is the reverse process of the mapping (105) applied on the encoder side. Reverse mapping can use a reverse mapping table decoded from the bitstream or signal, or a default reverse mapping table. The improved data decoded from the bitstream or signal (230) is used to improve the reverse-mapped picture (290).
[0165] In the modified form, the inverse mapping and refinement are merged into a single module that applies the inverse mapping using an inverse mapping table decoded from the bitstream or signal, and the inverse mapping table is modified within the encoder to take the refinement data into account. In the modified form, a lookup table LutComb is applied to perform the inverse mapping and refinement process for a given component being processed, and this lookup table is the mapping table The lookup table LutInvMap and the improved table LutR are derived from the table. It is constructed as a concatenation of lookup tables: LutComb[x]=LutR[LutInvMap[x]], MaxVal from x=0 In this embodiment, the improvement process is located outside the decoding loop. Therefore, the improvement process is applied only within the decoder as a post-processing step.
[0166] Figure 30 shows a modified version 202 of the video decoder 200 in Figure 28. Modules in Figure 30 that are identical to those in Figure 28 are labeled with the same reference numbers and will not be further explained. Modified data is decoded from the bitstream or signal (230). The decoded modified data is used to modify the filtered reconstructed picture (290). The modified picture, rather than the filtered reconstructed picture, is stored in the reference picture buffer (280). Module 290 can be inserted at various positions. The modification module 290 can be inserted before the in-loop filter, or between the in-loop filters if there are at least two in-loop filters, for example, after the DBF and before the SAO. The modified picture can be optionally reverse-mapped (285). In this embodiment, the modification process is within the decoding loop.
[0167] Figure 31 shows a flowchart of a method for decoding a picture from a bitstream or signal according to certain and non-limiting embodiments. This method begins in step S200. In step S210, a receiver 2000, such as a decoder 200, accesses the bitstream or signal. In step S220, the receiver decodes the picture portion from the bitstream or signal to obtain the decoded picture portion. To do this, a block of the picture portion is decoded. Decoding a block usually, but not necessarily, involves entropy decoding the portion of the bitstream or signal representing the block to obtain a block of transformation coefficients, inverse quantizing and inverse transforming the block of transformation coefficients to obtain a block of residuals, and adding a predictor to the block of residuals to obtain the decoded block. The decoded picture portion can then be filtered by an in-loop filter as shown in Figures 28-30 and inversely mapped as shown in Figure 29. In step S230, improved data is decoded from the bitstream or signal. This step is the reverse of the encoding step S140. All modifications and embodiments described in relation to step S140 apply to step S230. In step S240, the decoded picture is improved. This step is identical to the encoder-side improvement step S150.
[0168] Another example of an embodiment is shown in Figure 32, which is a method for encoding video data, including providing the functionality of an improved mode. In Figure 32, video data, such as data contained in a digital video signal or bitstream, is processed in 3210 to identify the costs associated with encoding video data, such as picture portions, using the block-by-block improved modes described herein and using modes other than the improved modes, such as unimproved modes. The video data is then encoded in 3220 based on these costs. For example, costs such as rate distortion costs can be obtained for both encoding using the improved mode and encoding using the unimproved mode. If using the improved mode results in a rate distortion cost that indicates an improvement in encoding, encoding can be performed using the improved mode. If the rate distortion cost indicates no improvement in limited improvements that do not justify the added complexity of the improved mode, it may result in not using the improved mode or using a different mode. Processing the video data to obtain costs and to encode the video data can be done as described above, for example, with respect to one or more embodiments described herein. The encoded video data is output from 3220.
[0169] Figure 33 shows an example of an embodiment of a method for decoding video data. Encoded video data, such as a digital data signal or bitstream, is processed in 3310 to obtain instructions for using an enhancement mode during encoding of video data, such as a block-by-block enhancement mode, according to one or more embodiments described herein. Encoded video data, such as an encoded picture portion, is then decoded in 3320 based on these instructions (e.g., decoding according to this specification based on the use of an enhancement mode during encoding). Processing the video data to obtain costs and to encode the video data can be done, for example, as described above with respect to one or more embodiments described herein. The decoded video data is output from 3320.
[0170] Throughout this disclosure, various implementations include decoding. As used in this application, “decode” may encompass all or part of the processes performed on the received encoded sequence to produce, for example, a final output suitable for display. In various embodiments, such processes include one or more processes typically performed by a decoder, such as entropy decoding, inverse quantization, inverse transform, and differential decoding. In various embodiments, such processes may include processes performed by the decoders of the various implementations described in this application, such as extracting a picture from a tiled (packed) picture, and using an upsampling filter. This further includes, or alternatively, determining and upsampling the picture, and flipping the picture back to its intended orientation.
[0171] As further examples, in one embodiment, "decoding" refers only to entropy decoding; in another embodiment, "decoding" refers only to differential decoding; and in yet another embodiment, "decoding" refers to a combination of entropy decoding and differential decoding. Whether the term "decoding process" is intended to refer specifically to a subset of operations or to a broader decoding process in general will become clear from the context of the specific explanation and will be well understood by those skilled in the art.
[0172] Furthermore, various implementations include encoding. As with the above description of "decoding," "encode" as used in this application may encompass all or part of the processes performed on an input video sequence to produce, for example, an encoded bitstream or signal. In various embodiments, such processes include one or more processes typically performed by an encoder, such as partitioning, differential encoding, transformation, quantization, and entropy encoding. In various embodiments, such processes may further or alternatively include processes performed by the encoders of the various implementations described in this application.
[0173] As further examples, in one embodiment, “encoding” refers only to entropy coding; in another embodiment, “encoding” refers only to differential coding; and in yet another embodiment, “encoding” refers to a combination of differential coding and entropy coding. Whether the term “encoding process” is intended to refer specifically to a subset of operations or to a broader encoding process in general will become clear from the context of the specific explanation and will be well understood by those skilled in the art.
[0174] Please note that the syntactic elements used in this specification are descriptive terms; therefore, they do not preclude the use of other syntactic element names.
[0175] When a drawing is presented as a flowchart, it should be understood that the drawing also provides a block diagram of the corresponding equipment. Similarly, when a drawing is presented as a block diagram, it should be understood that the drawing also provides a flowchart of the corresponding method / process.
[0176] Various embodiments refer to rate-distortion optimization. Specifically, during the coding process, a balance or trade-off between rate and distortion is usually considered, often given the constraints of computational complexity. Rate-distortion optimization is usually formulated as minimizing a rate-distortion function, which is a weighted sum of rate and distortion. There are various methods for solving the rate-distortion optimization problem. For example, these methods may be based on broadly testing all coding options, including all modes or coding parameter values under consideration, with full evaluation of the coding cost and the associated distortions in the reconstructed signals after coding and decoding. Faster methods can also be used to reduce coding complexity by calculating approximate distortions based on predicted or predicted residual signals, rather than being reconstructed. A mixture of these two methods can also be used, for example, by using approximate distortions for only some of the possible coding options and full distortions for the others. Other methods evaluate only a subset of the possible coding options. More generally, many methods use one of various techniques for optimization, but optimization does not necessarily involve a full evaluation of both the coding cost and the associated distortions.
[0177] The implementation forms and embodiments described herein can be implemented, for example, by methods or processes, devices, software programs, data streams, or signals. Even if they are discussed only in the context of a single form of implementation (for example, only as a method), Even if not, the implementation forms of the discussed features can be implemented in other forms (e.g., devices or programs). Devices can be implemented, for example, by appropriate hardware, software, and firmware. Methods can be implemented, for example, by processors, and processors refer to all processing units, including, for example, computers, microprocessors, integrated circuits, or programmable logic devices. Processors also include communication devices such as, for example, computers, mobile phones, portable / personal digital assistants ("PDAs"), and other devices that facilitate the communication of information between end users.
[0178] Reference to "an embodiment", or "some embodiments", or "an implementation", or "some implementations" and other variants thereof means that the specific features, structures, characteristics, etc. described in relation to the embodiments are included in at least one embodiment. Thus, the phrases "in one embodiment", or "in some embodiments", or "in an implementation", or "in some implementations" and the appearance of any other variants that appear in various places throughout this specification do not necessarily all refer to the same embodiment.
[0179] In addition, this specification may refer to obtaining various pieces of information. Obtaining information may include, for example, one or more of determining information, estimating information, calculating information, predicting information, or retrieving information from memory.
[0180] Furthermore, this specification may refer to accessing various pieces of information. Accessing information may include, for example, one or more of receiving information, retrieving information (e.g., from memory), storing information, moving information, copying information, calculating information, determining information, predicting information, or estimating information.
[0181] In addition, this specification may refer to receiving various pieces of information. Receiving is intended to be a broad term similar to "accessing". Receiving information may include, for example, one or more of accessing information or retrieving information (e.g., from memory). Furthermore, "receiving" typically involves in some form during operations such as, for example, operations of storing information, processing information, transmitting information, moving information, copying information, deleting information, calculating information, determining information, predicting information, or estimating information.
[0182] For example, using " / ", "and / or", or "at least one of ~" in the cases of "A / B", "A and / or B", and "at least one of A and B" is intended to encompass selecting only the first option (A), or only the second option (B), or both options (A and B). As further examples, in the cases of "A, B, and / or C" and "at least one of A, B, and C", such expressions are intended to encompass selecting only the first option (A), or only the second option (B), or only the third option (C), or only the first and second options (A and B), or only the first and third options (A and C), or only the second and third options (B and C), or all three options (A, B, and C). As will be apparent to those skilled in the art, this expression can be extended to the number of items listed.
[0183] Furthermore, as used herein, the term "signaling" refers, in particular, to indicating something to the corresponding decoder. For example, in certain embodiments, the encoder signals to improve a particular parameter among several parameters. Thus, in one embodiment... The same parameters are used on both the encoder and decoder sides. Therefore, for example, the encoder can transmit a specific parameter to the decoder (explicit signaling), thereby allowing the decoder to use the same specific parameter. Conversely, if the decoder already possesses that specific parameter along with other parameters, signaling can be used without transmission simply to allow the decoder to know and select that specific parameter (implicit signaling). Bit savings are achieved in various embodiments by avoiding the transmission of arbitrary actual functions. It should be understood that signaling can be implemented in various ways. For example, in various embodiments, one or more syntactic elements, flags, etc., are used to signal information to the corresponding decoder. The above concerns the verb form of the word "signal," but the word "signal" can also be used as a noun in this specification.
[0184] As will be apparent to those skilled in the art, the implementations can produce a variety of signals that are formatted to carry, for example, information that can be stored or transmitted. This information may 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 a bitstream or signal of the described embodiment. Such a signal can be formatted, for example, as an electromagnetic wave (e.g., using the radio frequency portion of the spectrum) or as a baseband signal. Formatting may include, for example, encoding a data stream and modulating a carrier wave with the encoded data stream. The information carried by the signal can be, for example, analog or digital information. The signal can be transmitted over a variety of different wired or wireless links, as is known. The signal can be stored on a processor-readable medium.
[0185] Various embodiments have been described. These embodiments may include, individually or in any combination, any of the following features or entities across various different categories and types of claims: • Apply improvements that are independent of adjacent reconstituted samples. Applying improvements based on a global function having one or more improvement parameters transmitted within a bitstream. • Provide a mode within the encoder and / or decoder that includes inter-component improvement of chroma components. • Provide modes within the encoder and / or decoder that include component-specific improvements to the luma component. • To enable block-by-block improvements within the decoder and / or encoder. • Applying improvements by using several functions on specific components and selecting improvement functions for each block. • Allowing the decoder and / or encoder to select, on a per-block basis, improved parameters for application to a block from a set of possible parameters encoded within the bitstream or signal. • Applying improvements to the reconstructed signal block by block. • Include a refinement step, such as an in-loop or out-of-loop filter, to improve the reconstructed signal after decoding. • The decoder and / or encoder incorporate improvements based on an improved table encoded within the bitstream or signal. • By avoiding redundant neutral values, this reduces the coding cost of tables. • Inserting syntactic elements into the signaling that enable the decoder to perform the improvements described herein. • Include identifiers related to the improved table, such as table pair identifiers, within the syntax elements. • To reduce coding costs, impose size limits on the improved tables. • Include one or more syntactic elements within the syntactic element that indicate whether improvement information for the current block is duplicated from adjacent blocks. • Select the improvements to apply in the decoder based on those syntactic elements. A bitstream or signal containing one or more of the listed syntactic elements or a modified version thereof. Inserting syntactic elements into the signaling that allow the decoder to make improvements in a manner corresponding to the way the encoder used. • Creating and / or transmitting, and / or receiving and / or decoding, a bitstream or signal containing one or more of the described syntactic elements or modified forms thereof. A TV, set-top box, mobile phone, tablet, or other electronic device that is improved according to any of the embodiments described. A TV, set-top box, mobile phone, tablet, or other electronic device that modifies any of the embodiments described and displays the resulting image (for example, using a monitor, screen, or other type of display). A TV, set-top box, mobile phone, tablet, or other electronic device that tunes a channel (e.g., using a tuner) to receive a signal containing an encoded image and makes improvements according to any of the embodiments described. A TV, set-top box, mobile phone, tablet, or other electronic device that wirelessly receives a signal containing an encoded image (for example, using an antenna) and modifies it according to any of the embodiments described. A computer program product that stores program code that, when executed by a computer, implements improvements according to any of the embodiments described. A non-temporary computer-readable medium containing executable program instructions that cause a computer executing the instructions to implement improvements according to any of the embodiments described herein.
[0186] Various other generalized and specific embodiments are supported and anticipated throughout this disclosure. For example, at least one example of an embodiment includes an encoding method comprising (i) a cost for encoding a picture portion based on applying an improved mode to a reconstructed signal block by block, wherein the improved mode is based on improved parameters, and (ii) obtaining a cost for encoding a picture portion using a mode other than the improved mode, and encoding the picture portion based on that cost.
[0187] Another example of at least one embodiment includes a device comprising one or more processors configured to obtain a cost for encoding a picture portion based on an improved mode applied to a reconfigured signal block by block, the improved mode being a cost for encoding based on improved parameters, and a cost for encoding a picture portion without using the improved mode, and encoding a picture portion based on that cost.
[0188] Another example of at least one embodiment is obtaining an instruction for an improved mode applied to a block-by-block reconstructed signal during the encoding of a picture portion, the improved mode comprising a decoding method which includes obtaining an instruction based on an improved parameter and decoding the encoded picture portion based on that instruction.
[0189] Another example of at least one embodiment involves obtaining instructions for an improved mode applied to a block-by-block reconstructed signal during encoding of an encoded picture portion, the improved mode comprising a device including one or more processors configured to obtain instructions based on improved parameters and to decode the encoded picture portion based on those instructions.
[0190] Another example of at least one embodiment includes a signal formatted to include data representing an encoded picture portion and data indicating an improved mode applied to the reconstructed signal block by block based on improvement parameters during encoding of the encoded picture portion.
[0191] Another example of at least one embodiment includes a bitstream formatted to include data representing an encoded picture portion and data indicating an improved mode applied to the reconstructed signal block by block based on improvement parameters during encoding of the encoded picture portion.
[0192] In at least one embodiment described herein that includes an improvement mode, the improvement mode may include improvement of the components.
[0193] In at least one embodiment described herein that includes an improvement mode, the improvement mode may include at least one of inter-component improvement or intra-component improvement.
[0194] In at least one embodiment described herein, which includes inter-component improvement or intra-component improvement, the inter-component improvement may include inter-component chromat improvement, and the intra-component improvement may include intra-component chromat improvement.
[0195] In at least one embodiment described herein that includes an improvement mode, the improvement mode may include enabling block-by-block selection of improvement parameters.
[0196] In at least one embodiment described herein that includes improvement parameters, the improvement parameters may include one or more improvement parameters that are included in the improvement table.
[0197] In at least one embodiment described herein, which includes encoding a picture portion based on the application of an improved mode and improved parameters, improved parameters can be selected block by block from a plurality of improved parameters based on the cost improvement when encoding the picture portion using the improved mode.
[0198] According to another embodiment, a method for encoding video data is presented, which includes obtaining (i) a cost for encoding a picture portion using an improved mode for each block, wherein the improved mode is based on improved parameters, and (ii) a cost for encoding a picture portion using a mode other than the improved mode, and encoding the picture portion based on that cost.
[0199] According to another embodiment, a method for decoding video data is presented, which includes obtaining instructions for using a block-by-block improvement mode based on improvement parameters during encoding of an encoded picture portion, and decoding the encoded picture portion based on those instructions.
[0200] According to another embodiment, a device for decoding video data is presented, which includes one or more processors configured to obtain instructions for using a block-by-block improvement mode based on improvement parameters during encoding of an encoded picture portion, and to decode the encoded picture portion based on those instructions.
[0201] According to another embodiment, a signal format is presented which includes data representing an encoded picture portion and data that instructs the use of a block-by-block improvement mode based on improvement parameters during the encoding of the encoded picture portion.
[0202] According to another embodiment, a bitstream formatted to include encoded video data is presented, the encoded video data is encoded by (i) obtaining the cost of encoding a picture portion using a block-by-block improved mode, the improved mode being a cost of encoding based on improved parameters, and (ii) obtaining the cost of encoding a picture portion using a mode other than the improved mode, and encoding the picture portion based on that cost.
[0203] According to another embodiment, the improvement mode described herein may include improvement of the components.
[0204] According to another embodiment, the improvement modes described herein may include improvement of components, which include at least one of cross-component improvement, intra-component improvement, and intra-component improvement.
[0205] According to another embodiment, the improvement mode described herein may include inter-component chromatic improvement.
[0206] According to another embodiment, the improvement mode described herein may include intracomponent luma improvement.
[0207] According to another embodiment, the improvement mode described herein may include enabling block-by-block selection of improvement parameters.
[0208] According to another embodiment, the improvement modes described herein may be based on improvement parameters, which include one or more chromatic improvement parameters included in a chromatic improvement table.
[0209] In another embodiment, the method, apparatus, or signal according to the Disclosure may include encoding and / or decoding video data using an improved mode based on improved parameters, wherein encoding and / or decoding includes encoding and / or decoding the picture portion and the improved parameters based on cost improvements when encoding and / or decoding the picture portion using the improved mode.
[0210] According to another embodiment, a method, apparatus, or signal according to the Disclosure may include encoding and / or decoding video data based on the use of an improved mode during encoding and / or decoding, and determining the costs associated with using the improved mode, the costs may include rate distortion costs, and determining the costs may include determining the rate distortion costs when encoding a picture portion using the improved mode.
[0211] In general, at least one embodiment of an apparatus for encoding and / or decoding video data may include the apparatus described herein, which may include at least one of the following: (i) an antenna configured to receive a signal, the signal comprising data representing an image; (ii) a band limiter configured to restrict the received signal to a frequency band comprising data representing an image; or (iii) a display configured to display an image.
[0212] In general, at least one embodiment of an apparatus for encoding and / or decoding video data may include at least one television, mobile phone, tablet, set-top box, and gateway device.
[0213] One or more embodiments of this specification also provide a computer-readable storage medium or computer program product that stores instructions for encoding or decoding video data according to the methods or apparatus described herein. Embodiments of this specification also provide a computer-readable storage medium that stores bitstreams generated according to the methods or apparatus described herein. The media or computer program products are also provided. Embodiments of this specification also provide methods and apparatus for transmitting or receiving bitstreams generated according to the methods or apparatus described herein.
Claims
1. (i) the cost of encoding the picture portion based on applying an improved mode to the reconstructed signal block by block, wherein the improved mode is based on improved parameters, and (ii) the cost of encoding the picture portion using a mode other than the improved mode, and Encoding the picture portion based on the aforementioned cost A coding method that includes [this].
2. The cost of encoding a picture portion based on applying an improved mode to a reconstructed signal block by block, wherein the improved mode is based on improved parameters, and the cost of encoding the picture portion without using the improved mode, and Encoding the picture portion based on the aforementioned cost One or more processors configured to perform this task Equipment including.
3. Obtaining instructions for an improved mode applied to the reconstructed signal block by block during the encoding of the picture portion, wherein the improved mode is based on improved parameters, and Decode the encoded picture portion based on the above instructions. A decryption method that includes [the specified format].
4. To obtain an instruction for an improved mode applied to the reconstructed signal block by block during encoding of the encoded picture portion, wherein the improved mode is based on improved parameters, and Decode the encoded picture portion based on the above instructions. One or more processors configured to perform this task Equipment including.
5. Data representing the encoded picture portion, and Data that indicates the improved mode applied to the reconstructed signal block by block based on the improved parameters during the encoding of the encoded picture portion. A signal formatted to include the following:
6. Data representing the encoded picture portion, and Data that indicates the improved mode applied to the reconstructed signal block by block based on the improved parameters during the encoding of the encoded picture portion. A bitstream formatted to include [the specified element].
7. The method according to claim 1 or 3, or the apparatus according to claim 2 or 4, or the signal according to claim 5, or the bitstream according to claim 6, wherein the improved mode includes improvement of the components.
8. The method according to any one of claims 1, 3, or 7, wherein the improvement mode includes at least one of inter-component improvement or intra-component improvement, or the device according to any one of claims 2, 4, or 7, or the signal according to claim 5 or 7, or the bitstream according to claim 6 or 7.
9. The aforementioned inter-component improvement includes inter-component chromatic improvement, and the aforementioned intra-component improvement includes intra-component chromatic improvement. The method, apparatus, signal, or bitstream according to claim 8.
10. The method according to any one of claims 1, 3, or 7 to 9, wherein the improved mode includes enabling block-by-block selection of the improved parameters, or the device according to any one of claims 2, 4, or 7 to 9, or the signal according to any one of claims 5, 7 to 9, or the bitstream according to any one of claims 6 to 9.
11. A method according to any one of claims 1, 3, or 7 to 10, wherein the aforementioned improvement parameter includes one or more improvement parameters included in the improvement table, or an apparatus according to any one of claims 2, 4, or 7 to 10, or a signal according to any one of claims 5, 7 to 10, or a bitstream according to any one of claims 6 to 10.
12. The method according to any one of claims 1 or 7 to 11, wherein the encoding includes encoding the picture portion, and the improvement parameter is selected block by block from a plurality of improvement parameters based on the cost improvement when encoding the picture portion using the improvement mode, or the apparatus according to any one of claims 2 or 7 to 11.
13. The method or apparatus according to claim 12, wherein the cost includes rate distortion cost, and the improvement includes a reduction in the rate distortion cost when the picture portion is encoded using the improved mode.
14. A computer program product comprising instructions for causing one or more processors to perform the method according to any one of claims 1, 3, or 7 to 13.
15. A non-temporary computer-readable medium for storing executable program instructions that cause a computer executing an instruction to perform the method according to any one of claims 1, 3, or 7 to 13.
16. The apparatus described in any one of claims 2, 4, or 7 to 13, and (i) an antenna configured to receive a signal, the signal including data representing an image; (ii) a band limiter configured to limit the received signal to a frequency band including the data representing the image; or (iii) a display configured to display the image. A device including a device.
17. The apparatus according to claim 16, wherein the apparatus includes at least one of a television, a mobile phone, a tablet, a set-top box, and a gateway device.