The present application relates generally to a video encoder/decoder (codec) and, more specifically, to a method and apparatus for palette prediction and intra block copy padding.
Various techniques for high bit-depths (more than 8 bits) for video sequences, lossless coding, visually lossless coding, screen content coding, coding of video in different color planes, other than YUV, such as RGB etc. are being investigated. Palette coding or Major Color coding is a technique that uses a few (N) pixels as a palette set (collection) of colors to predict other pixels within a Coding Unit (CU). Each pixel in a CU is labeled by one of the N colors in the palette which is closest to that pixel. As a result, the color in the palette, labels for each pixel and the prediction residue is the information to be coded. There are some variations of the technique in how to use and encode the palettes as well as the quantization steps.
This disclosure provides a method and an apparatus for palette prediction and intra block copy padding.
A first embodiment provides a method. A method is provided that includes receiving a bitstream. The method also includes parsing the bitstream for a flag indicating whether a palette was used from a first or second coding unit. The method also includes decoding the first coding unit using the palette from the first or second coding unit indicated by the flag. The palette is determined based on which palette of the first or second coding unit improves compression performance.
A second embodiment provides a decoder. The decoder includes receiving a bitstream. The decoder also includes parsing the bitstream for a flag indicating whether a palette was used from a first or second coding unit. The decoder also includes decoding the first coding unit using the palette from the first or second coding unit indicated by the flag. The palette is determined based on which palette of the first or second coding unit improves compression performance.
A third embodiment provides a method. The method includes receiving a bitstream with a predicted pixel. A coding unit and a reference unit for intra block copy coding of the coding unit are identified. A number of pixels of the coding unit and the reference unit overlap. A set of available pixels and a set of unavailable pixels of the reference unit are identified. The predicted pixel of the set of unavailable pixels is estimated as a pixel of the set of available pixels.
A fourth embodiment provides a decoder. The decoder includes receiving a bitstream with a predicted pixel. A coding unit and a reference unit for intra block copy coding of the coding unit are identified. A number of pixels of the coding unit and the reference unit overlap. A set of available pixels and a set of unavailable pixels of the reference unit are identified. The predicted pixel of the set of unavailable pixels is estimated as a pixel of the set of available pixels.
Before undertaking the DETAILED DESCRIPTION below, it may be advantageous to set forth definitions of certain words and phrases used throughout this patent document. The term “couple” and its derivatives refer to any direct or indirect communication between two or more elements, whether or not those elements are in physical contact with one another. The terms “transmit,” “receive,” and “communicate,” as well as derivatives thereof, encompass both direct and indirect communication. The terms “include” and “comprise,” as well as derivatives thereof, mean inclusion without limitation. The term “or” is inclusive, meaning and/or. The phrase “associated with,” as well as derivatives thereof, means to include, be included within, interconnect with, contain, be contained within, connect to or with, couple to or with, be communicable with, cooperate with, interleave, juxtapose, be proximate to, be bound to or with, have, have a property of, have a relationship to or with, or the like. The term “controller” means any device, system or part thereof that controls at least one operation. Such a controller may be implemented in hardware or a combination of hardware and software and/or firmware. The functionality associated with any particular controller may be centralized or distributed, whether locally or remotely. The phrase “at least one of,” when used with a list of items, means that different combinations of one or more of the listed items may be used, and only one item in the list may be needed. For example, “at least one of: A, B, and C” includes any of the following combinations: “A,” “B,” “C,” “A and B,” “A and C,” “B and C,” and “A, B and C”.
Moreover, various functions described below can be implemented or supported by one or more computer programs, each of which is formed from computer readable program code and embodied in a computer readable medium. The terms “application” and “program” refer to one or more computer programs, software components, sets of instructions, procedures, functions, objects, classes, instances, related data, or a portion thereof adapted for implementation in a suitable computer readable program code. The phrase “computer readable program code” includes any type of computer code, including source code, object code, and executable code. The phrase “computer readable medium” includes any type of medium capable of being accessed by a computer, such as read only memory (ROM), random access memory (RAM), a hard disk drive, a compact disc (CD), a digital video disc (DVD), or any other type of memory. A “non-transitory” computer readable medium excludes wired, wireless, optical, or other communication links that transport transitory electrical or other signals. A non-transitory computer readable medium includes media where data can be permanently stored and media where data can be stored and later overwritten, such as a rewritable optical disc or an erasable memory device.
Definitions for other certain words and phrases are provided throughout this patent document. Those of ordinary skill in the art should understand that in many if not most instances, such definitions apply to prior as well as future uses of such defined words and phrases.
For a more complete understanding of the present disclosure and its advantages, reference is now made to the following description taken in conjunction with the accompanying drawings, in which like reference numerals represent like parts:
As shown in
The quantized transform coefficients can be restored to residual values by passing through an inverse quantizer 130 and an inverse transform unit 132. The restored residual values can be post-processed by passing through a de-blocking unit 135 and a sample adaptive offset unit 140 and output as the reference frame 145. The quantized transform coefficients can be output as a bitstream 127 by passing through an entropy encoder 125.
As shown in
Each functional aspect of the encoder 100 and decoder 150 will now be described.
Intra-Prediction (units 111 and 172): Intra-prediction utilizes spatial correlation in each frame to reduce the amount of transmission data necessary to represent a picture. Intra-frame is essentially the first frame to encode but with reduced amount of compression. Additionally, there can be some intra blocks in an inter frame. Intra-prediction is associated with making predictions within a frame, whereas inter-prediction relates to making predictions between frames.
Motion Estimation (unit 112): A fundamental concept in video compression is to store only incremental changes between frames when inter-prediction is performed. The differences between blocks in two frames can be extracted by a motion estimation tool. Here, a predicted block is reduced to a set of motion vectors and inter-prediction residues.
Motion Compensation (units 115 and 175): Motion compensation can be used to decode an image that is encoded by motion estimation. This reconstruction of an image is performed from received motion vectors and a block in a reference frame.
Transform/Inverse Transform (units 120, 132, and 170): A transform unit can be used to compress an image in inter-frames or intra-frames. One commonly used transform is the Discrete Cosine Transform (DCT).
Quantization/Inverse Quantization (units 122, 130, and 165): A quantization stage can reduce the amount of information by dividing each transform coefficient by a particular number to reduce the quantity of possible values that each transform coefficient value could have. Because this makes the values fall into a narrower range, this allows entropy coding to express the values more compactly.
De-blocking and Sample adaptive offset units (units 135, 140, and 182): De-blocking can remove encoding artifacts due to block-by-block coding of an image. A de-blocking filter acts on boundaries of image blocks and removes blocking artifacts. A sample adaptive offset unit can minimize ringing artifacts.
In
In screen content sequences, palettes in neighboring areas can be highly correlated, as large portion of neighboring regions are similar. For example in a text document image, many of regions consist of text with similar color composition. The state-of-art Palette Coding techniques do not fully utilize the correlation.
In an embodiment of this disclosure, a palette could be predicted from left CUs. In screen content video, the colors in the neighboring regions are close with high probability. Moreover, for the document type of sequence, such as text document, the number of colors in the palettes is small. This implies that the previously encoded palette can be a good candidate for predicting a current palette. The bits used in the encoding of the palette are quite large. Let the current CU be represented by x[n] where n is the zig-zag order of encoding. x[n−1] represents the previous encoded CU. xL[n] is the left neighboring CU and KU[n] is the above neighboring CU of x[n] respectively. In different example embodiments, the sizes of neighboring CUs may be different to x[n] and depend on the optimal code modes selected by Rate-Distortion Optimizer (RDO).
At block 204, an encoder computes a histogram. At block 206, the encoder builds a palette using the histogram in block 204. At block 208, the encoder encodes the palette. At block 210, the encoder quantizes the pixel using the palette in block 206. At block 212, the encoder encodes an index of the pixel. At block 214, the encoder computes a residue. At block 216, the encoder encodes the residue. Afterwards, the encoded palette, index, and residue are output in a bit stream. The blocks of
At block 254, a decoder parses a bit stream. The decoder may parse the bit stream for a flag indicating whether a palette is reused. At block 256, the decoder decodes a palette. At block 260, the decoder decodes the quantization indices. At block 262, the decoder de-quantizes the pixels. At block 264, the decoder decodes a residue. The blocks of
In an example, if the size of CU is different to the CUs to the left, a specific process can be done. Another alternative is, instead of searching the palette that is encoded previously, a current palette can be predicted by re-calculating the palette in the reconstructed pixels that are adjacent to current CU.
In a current LCU 306, during encoding of CU 310 (CU x[n]), the encoder keeps on searching to the left until it finds the first palette coded CU 304. Then the palette of CU 304 can be used directly as the palette of CU 310. If there are no CUs that are palette coded in the LCU 306, CU 310 will compute its own palette. Table 1 shows the scheme of diagram 302 in an algorithmic form for both the encoder, and decoder.
In an example embodiment of diagram 302 of
In an example embodiment, the current frame CU x[n] can keep searching to the left until it finds the first palette coded CU, y. Then the palette of CU, y can be used directly as the palette of CU x[n]. If there is not any palette coded CU that exists, CU x[n] can compute its own palette. Table 3 shows the scheme in an algorithmic form for both the encoder, and decoder.
In the searching process, if current CU 406 has a different size to the left CUs, such as left CU 404 and other left CUs, CU 406 may miss the palette coded left CU 404. When current CU 406 size is smaller than or equal to the left CUs' such as left CU 404, CU 406 won't miss left CU 404. When left CU 404 is a palette coded CU to the left of current CU 406. The left search order will be 1, 2, then y.
In an example embodiment, the controller may use an anti-raster scan order as showed by the arrows. And the left CU 424 is visited in order are labeled by 1, 2, . . . 8, until the encoder search reaches y.
When CU 426 has a size greater than the minimum CU size (denoted by Nmin=8, for example), an anti-raster scan search can be applied in diagrams 302 and 320 of
One or more embodiments provide a process for recalculating a left CU palette. When y[n] is a neighboring CU to the left of current CU x[n], the palette of y[n] can be calculated based on reconstruction of both encoder and decoder, even if y[n] is not palette coded.
In an example embodiment, when a current CU index is n and the previous CU index as m, the zig-zag index is then differentially coded as k=(n−m−1). Since n is can always be greater than m, this value is always greater than zero. For example, when n=22, if the best palette is the palette in CU x[15], then k=(22−15−1)=6.
For each CU x[n], a controller searches the entire palette coded CUs y[m] in the same LCU. Then the best y[m] (in the sense of Rate-Distortion cost) can be selected and k=(n−m−1) can be signaled.
One or more embodiments of this disclosure provide for, but not limited to, fixed-length code and Exponential-Golomb code encoding. In one example embodiment, the algorithm of palette prediction in LCU is shown in Table 6.
In one example embodiment, a controller encodes Motion Vector (MV) by fixed-length code. The max index N can be computed by (LCU Height*LCU Width)/(minimum CU area). So only B=ceil(log 2(N)) bits could be used to encode k. The controller uses B bit to encode each k.
In another example embodiment, a controller encodes MV by Exp-Golomb code. Variable length coding provides efficient coding due to neighboring regions being highly correlated, such that the probability of reusing close by palette could be higher than reusing further palettes. An Exponential Golomb code is a type of unary coding technique which has a longer codeword when the data value is large. The order of an Exp-Golomb code contributes to the performance of coding. Orders of 1, 2 and 3 or higher can be tested.
In an embodiment of this disclosure, a controller performs rate distortion mode selection of palette coding with palette prediction. In this disclosure, palette reusing could replace the current palette coding modes in HEVC. One or more embodiments of this disclosure provide for mixing Palette Coding and Palette Reusing. In an example embodiment, for each CU, both Palette Coding and Palette Reusing can be checked by a Rate-Distortion Optimizer and the most efficient is used in the coding process. Rate-distortion optimization is a method of improving video quality in video compression. Rate-distortion optimization refers to the optimization of the amount of distortion (loss of video quality) against the amount of data required to encode the video, the rate. Rate-distortion optimization acts as a video quality metric, measuring both the deviation from the source material and the bit cost for each possible decision outcome. The bits are mathematically measured by multiplying the bit cost by the Lagrangian multiplier, a value representing the relationship between bit cost and quality for a particular quality level. A lower rate-distortion cost can be considered to improve compression performance.
For example, an algorithm of this process is shown in Table 7,
In different embodiments, if there are other modes except of palette coding mode (such as in HEVC12.1+RExt5.1, there are Angular prediction mode, Intra Block Copy and so on), proposed schemes can be one additional mode. Each node can be tested by RDO and the best mode of them is selected. In one example embodiment, the bits used to indicate the proposed mode are displayed in Table 8.
One or more embodiments of this disclosure provides for early termination of Palette Reusing. In order to reduce the encoding time, early termination by an encoder trick can be introduced. For example, if current CU palette differs a lot to the previous palette under examination, no further test needs to be done for the current palette.
An embodiment of this disclosure recognizes and takes into account that the color in palette of a left CU and an above CU can be reused if the color in the aligned palette location is the same. Effectiveness of predicting from an above CU is less than predicting from a left CU. If there is no aligned color in the left and above CU equal to current color, then the color may be encoded. Otherwise, a flag bit is used to indicate the direction of prediction (whether left or above).
One or more embodiments of this disclosure predict aligned colors from a left CU using the signaling as shown in Table 9.
An embodiment of this disclosure also tested the mode of no prediction at all; the signaling is shown in Table 10.
A prediction palette only from a left CU can achieve most of the gain as JCTVC-o0182 with simpler implementation.
In
Let x1, x2, . . . , xK, be the available pixels in the reference block 624, and xK+1, xN (K<=N) be the pixels unavailable since they are in the over-lapped region 626. Also, let the actual pixels for which we need to predict in the current CU be denoted as y1, y2, . . . , yN−K, yN−K+1, yN. Note that y1=xK+1; yN−K=xN, and the like.
In an example embodiment, xK+1=x1, since the predictor for y1=xK+1 is being used as x1. So, for xK+1, the controller could use x1. Similarly for xK+2=x2, . . . , xN=xN−K.
In the above equation, the controller starts by obtaining the missing values for xK+1, xK+2, and the like. So, by the time the controller reaches xN, the controller would already have the value xN−K, either available in the reference pixels, or through recursion.
At both the encoder/decoder, the respective controllers follow the same technique. In another example embodiment, the controller uses this technique in vertical direction instead of horizontal, or a combination.
In another embodiment of this disclosure, search may not be constrained to a current LCU or a left LCU. Any LCU in the left could be selectively used.
In another embodiment of this disclosure, quantization error can be estimated at encoder and decoder, so the reconstruction inconsistency can be solved by using the same error estimation in encoder and decoder for any embodiments of this disclosure.
In another embodiment of this disclosure, arithmetic coding is also an option for encoding indexes any embodiments of this disclosure.
The different embodiments of this disclosure can improve the coding efficiency and reduce computational complexity of scalable extensions for HEVC.
At block 702, the encoder identifies a first coding unit. The first coding unit may be the current coding unit that is being predicted.
At block 704, the encoder identifies a second coding unit with a palette, the palette previously encoded. The second coding unit may be the first coding unit with a palette already encoded found by the encoder. In an embodiment, the second coding unit may be the coding unit with the most efficient or best match of a palette for the first coding unit. The efficiency can be determined by criteria. Criteria are represented by minimum bit uses and distortion. For example, the most efficient or best match coding unit may be the coding unit with the minimum bit use or least distortion.
At block 706, the encoder retrieves the palette from the second coding unit. The palette is copied and used for the first coding unit. At block 708, the encoder encodes the first coding unit with the palette.
At block 802, the encoder identifies the coding unit and a reference unit for intra block copy coding of the coding unit. The coding unit may be the unit to be coded and the reference unit is an already coded unit. A number of pixels of the coding unit and the reference unit overlap.
At block 804, the encoder identifies a set of available pixels and a set of unavailable pixels of the reference unit. The set of unavailable pixels may be the overlapping pixels. The set of available pixels may be the non-overlapping pixels.
At block 806, the encoder estimates a first pixel of the set of unavailable pixels as a first pixel of the set of available pixels.
One or more embodiments of this disclosure recognize and take into account that Intra prediction is a technique for predicting pixels by the other pixels which have been decoded and reconstructed. There are different modes for intra prediction in HEVC. For example, planar mode assumes the region is smooth and could be represented by linear interpolation of the pixels at the boundary. However, in the screen content sequences, the regions are not always smooth and a traditional planar intra prediction mode cannot predict the pixel accurately. Assuming there is an edge across a 1D signal; the pixels close to the edge can be incorrectly predicted if planar mode has been used. A piece-wise smooth regions exists more likely in the screen content sequences than in camera-captured content, and thus makes the traditional planar prediction to not perform efficiently on screen content. In piece-wise smooth screen content such as computer-generated graphics, traditional planar intra prediction mode may not work efficiently. It is desirable to find a better way to do planar intra prediction in screen content.
In order to encode the motion vectors obtained in Intra Block Copy mode, Exponential-Golomb code as a universal coding has previously been used. However, this is not optimal and needs to be improved, as the statistics for the motion vector do not necessarily follow an exponential distribution on which Exponential-Golomb code can work efficiently.
One or more embodiments of the present disclosure modify the planar intra prediction modes in HEVC using nearest neighboring pixels at the boundary and keeps using HEVC planar intra prediction modes otherwise.
One or more embodiments of the present disclosure show a simplified coding scheme works better than existing Exponential-Golomb code. Different embodiments using Huffman Coding are also disclosed herein for further improve coding efficiency.
One or more embodiments of the present disclosure show how intra planar prediction scheme and simplified intra block copy motion vector encoding are used for both the encoder and decoder. One or more embodiments of the present disclosure show example algorithms for both lossless and lossy scenarios.
Diagram 902 illustrates pixels 914 being prepared. This process is the similar to HM12.0+RExt4.1. For each of pixels 910, diagram 904 illustrates predicting using the linear interpolation of top, left, right and bottom pixels 912-914 (boundary pixels). Diagram 904 illustrates predicting by selecting one of pixels 912-914 (boundary pixels) of which is closest to the predicted pixel in pixels 910. The pixels 916-924 on the diagonals of prediction unit can choose any boundary pixels 912-914 which are equally close, or their average.
In different example embodiments, preferences can be set to always choose left or top boundary pixels since they are actual reconstructed values and not bottom or right ones, since they are estimated, and not reconstructed pixels.
An embodiment of this disclosure provides a nearest neighbor planar intra prediction mode that is adaptive to the content. The “diversity” of the pixels on the boundaries is tested. If the diversity is greater than a threshold, the pixels can be predicted by its nearest boundary pixel value; otherwise, linear interpolation as in HM12.0+RExt4.1 can be used. This adaptation provides that for only the screen content pixels, which have large variation, nearest neighbor planar intra prediction mode can be used. The measurement of the diversity could be absolute differences, median value or standard deviation, variance, and the like.
For example, for a block of size M (rows)×N (cols), suppose the original pixel value is p(i,j) 0≦i<M−1; 0≦j≦N−1 the algorithm to predict pred (i,j) can summarized in Table 11. In an example of pixels on the anti-diagonal positions (i=N−j, or j=M−i), the prediction technique can select the nearest neighbor from left and top pixels instead of bottom row, or right column, since left and top pixels are reconstructed values. When the pixels are on diagonal positions, the prediction technique can choose between any of the two options (left and top), or can be just average of the top and left pixels. At the decoder, the same nearest neighborhood prediction can be applied.
One or more embodiments of this disclosure provide intra block copy motion vector encoding. Intra Block Copy is useful in screen content, since screen content is likely to have similar regions locally. The embodiments of this disclosure recognize and take into account that Exponential-Golomb code does not work well to encode the motion vectors in Intra Block Copy modes. The embodiments of this disclosure provide that a modified fixed length code can be more efficient and have greater compression gains when using Huffman coding.
In an embodiment, by using HM12.0+RExt4.1, a controller generates histograms of horizontal and vertical motion vector values for Intra Block Copy in all the sequences. Based on the statistics of the histograms, the average length for the Exponential-Golomb code can be computed as 9.9 bits for horizontal motion vector, and 6.0 bits for vertical motion vector. In an example, the entropy for the distribution is 6.23 bits/symbol and 4.5 bits/symbols for horizontal and vertical motion vectors respectively. There can be a gap between the Exponential-Golomb code performances to the one which can achieved by a code which can approach entropy.
The motion vector coding for intra block copy in HM12.0+RExt4.1 can be summarized in Table 12. In an example, a bit indicates whether the motion vector is zero (in a particular direction), or not used. Then, an extra bit can be used to identify if the magnitude is greater than or equal to one. All the other values can then be coded by Exponential-Golomb code. Next, a one bit can be used to code the sign.
Some typical codewords are shown in Table 13.
From Table 13, Exponential-Golomb code is more efficient if the value of motion vector is symmetric to zero and the probability density decreasing exponentially. Motion vectors may not be symmetric, and for a period of eight, there is a strong peak compared to the neighbor values, which violates the decreasing assumption. As a result, Exponential-Golomb code may work well for coding the Intra Block Copy motion vectors, especially for the Horizontal motion vectors.
One or more embodiments of this disclosure provide a simple fixed length coding scheme. When using HM12.0+RExt4.1, a range of horizontal motion vectors values for Intra Block Copy is between −120 to 56 (integers). An eight bit integer can cover all the values. The average length of Exponential-Golomb code used in HM12.0+RExt4.1 for horizontal motion vector is 9.9 bits. Embodiments of the present disclosure provide a fixed length coding scheme A in Table 14.1 which codes each motion vector value x by L bits.
In an embodiment, scheme B simplifies upon the existing coding technique in HM12.0+RExt4.1. In HM12+RExt4.1, the motion vector coder assumes value 0 happens more frequently than any other cases; so only one bit is used to represent value 0 as shown in Table 12. Scheme B in this disclosure simplifies the coding algorithm for encoding other values by using L bit fix length code. Table 14.2 shows the algorithm for Scheme B. The typical code words are shown in Table 5 for the two different schemes
The average codeword length can be computed by using the distribution of motion vector values (as the probability density function). Given the probability density p(v) with v as the value of motion vector and the code length of that motion vector l(v), the average codelength is:
Average codeword length for different schemes is summarized in Table 16. From Table 16, fixed length coding Scheme A can be used for horizontal intraBC motion vectors and Scheme B can be used for vertical intraBC motion vectors. An encoder can prefer to use Scheme B for both horizontal and vertical orientations with a tiny degradation in performance (8.04 is just 0.5% more than 8), as Scheme B may be used over Scheme A for the vertical motion vectors.
In an example, to further decrease the average code word length, Huffman coding is used. As in Scheme B, an encoder still separates zero and other situations. One bit is used to indicate zero or not. Then the magnitude is coded using Huffman code. A Huffman codebook can be built by using the distribution. Finally, the sign is coded by 1 bit. The coding algorithm is shown in Table 18. The code words are listed in Table 19 and the average code length is summarized in Table 18.
Compared to the average code length in Table 18, the Huffman code has the shortest length as expected. The addition cost incurred is in storing the code book in both encoder and decode side.
In one or more embodiments, full range Huffman coding can further improve the Horizontal motion vector case. Since horizontal motion vector is more distributed, and 0 value is not as dominant as that is in the vertical case, coding scheme without separate 0 values and other values are preferred.
Embodiments of the disclosure are not restricted to apply on HM12.0+RExt4.1 IntraBC tools. Any future proposed tools can also use this disclosure as a guide to encode motion vectors. Embodiments of the disclosure can be applied to inter-prediction and combined intra and inter prediction in video coding. It is applicable to any coding/compression scheme that uses predictive and transform coding. Embodiments of the disclosure can be applied to rectangular block sizes of different width and height as well as to non-rectangular region of interest coding in video compression such as for short distance intra prediction, Embodiments of the disclosure can improve the coding efficiency and reduce computational complexity of scalable extensions for HEVC.
Although the present disclosure has been described with an exemplary embodiment, various changes and modifications may be suggested to one skilled in the art. It is intended that the present disclosure encompass such changes and modifications as fall within the scope of the appended claims.
The present application is related to U.S. Provisional Patent Application No. 61/923,527, filed Jan. 3, 2014, entitled “METHODS FOR PALETTE PREDICTION AND INTRA BLOCK COPY PADDING” and U.S. Provisional Patent Application No. 61/893,044, filed Oct. 18, 2013, entitled “METHOD FOR NEAREST NEIGHBOR BASED PLANAR PREDICTION AND MOTION VECTOR CODING IN INTRA BLOCK COPY MODES.” Provisional Patent Applications Nos. 61/923,527 and 61/893,044 are assigned to the assignee of the present application and are hereby incorporated by reference into the present application as if fully set forth herein. The present application hereby claims priority under 35 U.S.C. §119(e) to U.S. Provisional Patent Applications Nos. 61/923,527 and 61/893,044.
Number | Date | Country | |
---|---|---|---|
61923527 | Jan 2014 | US | |
61893044 | Oct 2013 | US |