A moving picture coding apparatus 1 includes: a quantization matrix holding unit (112) that holds a quantization matrix (WM) which has already been transmitted in a parameter set and a matrix id for identifying the quantization matrix (WM), which are associated with each other; and a variable length coding unit (111) that obtains the matrix id corresponding to the quantization matrix (WM) used for quantization from the quantization matrix holding unit (112) and places the matrix id in a coded stream Str.
|
1. A coding method for coding a picture included in a moving picture by using a quantization matrix, said coding method comprising:
generating a matrix id identifying a quantization matrix different from a default quantization matrix;
coding the quantization matrix identified by the matrix id, in association with the matrix id;
coding a current picture using the quantization matrix to generate data of the coded current picture; and
adding the matrix id identifying the quantization matrix used in said coding of the current picture, to the data of the coded current picture,
wherein the picture is made up of a luma component, a first chroma component and a second chroma component, and
wherein said coding of the current picture,
when neither of the quantization matrix for the first chroma component and the quantization matrix for the second chroma component is coded in said coding of the quantization matrix identified by the matrix id, the first chroma component and the second chroma component of the current picture are coded using the quantization matrix for the luma component, instead of the default quantization matrix, as the quantization matrix for the first chroma component and the second chroma component of the current picture,
wherein a processor is configured to execute the generating step, coding steps and adding step.
0. 2. A coding method for coding a picture included in a moving picture by using a quantization matrix, said coding method comprising:
generating a matrix identifier identifying a quantization matrix different from a default quantization matrix, the default quantization matrix differing for intra-picture coding and inter-picture coding;
coding the quantization matrix identified by the matrix identifier, in association with the matrix identifier;
coding a current picture using the quantization matrix to generate data of the coded current picture; and
adding the matrix identifier identifying the quantization matrix used in said coding of the current picture, to the data of the coded current picture,
wherein the picture is made up of a luma component, a first chroma component and a second chroma component, and
wherein in said coding of the current picture,
when neither of a first quantization matrix for the first chroma component and a second quantization matrix for the second chroma component is coded in said coding of the quantization matrix identified by the matrix identifier, but a third quantization matrix for the luma component is available, the first chroma component and the second chroma component of the current picture are coded using the third quantization matrix for the luma component, instead of the default quantization matrix that differs for intra-picture coding and inter-picture coding, as the quantization matrix for the first chroma component and the second chroma component of the current picture,
wherein a processor is configured to execute the generating step, coding steps and adding step.
|
This is a reissue application of U.S. Ser. No. 13/488,242, filed Jun. 4, 2012, now U.S. Pat. No. 8,396,116, which is a divisional application of U.S. Ser. No. 13/039,079, filed on Mar. 2, 2011, now U.S. Pat. No. 8,218,623, which is a divisional application of U.S. Ser. No. 10/569,872 filed on Feb. 28, 2006, now U.S. Pat. No. 7,933,327, from International Application No. PCT/2005/002458 which claims priority from U.S. Provisional Application 60/540,499 filed Jan. 30, 2004, U.S. Provisional Application 60/552,907 filed Mar. 12, 2004, and U.S. Provisional Application 60/561,351 filed Apr. 12, 2004.
The present invention relates to a moving picture coding method for coding moving pictures and generating streams and a moving picture decoding method for decoding such coded streams, as well as the streams.
In the age of multimedia which integrally handles audio, video and other pixel values, existing information media, i.e., newspaper, magazine, television, radio, telephone and other means through which information is conveyed to people, have recently come to be included in the scope of multimedia. Generally, multimedia refers to something that is represented by associating not only characters, but also graphics, audio, and especially pictures and the like together. However, in order to include the aforementioned existing information media into the scope of multimedia, it appears as a prerequisite to represent such information in digital form.
However, when calculating the amount of information contained in each of the aforementioned information media as the amount of digital information, while the amount of information per character is 1 to 2 bytes in the case of characters, the amount of information to be required is 64 Kbits per second in the case of audio (telephone quality), and 100 Mbits per second in the case of moving pictures (current television reception quality). Therefore, it is not realistic for the aforementioned information media to handle such an enormous amount of information as it is in digital form. For example, although video phones are already in the actual use by using Integrated Services Digital Network (ISDN) which offers a transmission speed of 64 Kbits/s to 1.5 Mbits/s, it is not practical to transmit video of televisions and cameras directly through ISDN.
Against this backdrop, information compression techniques have become required, and moving picture compression techniques compliant with H.261 and H.263 standards recommended by ITU-T (International Telecommunication Union-Telecommunication Standardization Sector) are employed for video phones, for example. Moreover, according to information compression techniques compliant with the MPEG-1 standard, it is possible to store picture information into an ordinary music CD (compact disc) together with sound information.
Here, MPEG (Moving Picture Experts Group) is an international standard on compression of moving picture signals standardized by ISO/IEC (International Organization for Standardization, International Electrotechnical Commission), and MPEG-1 is a standard for compressing television signal information approximately into one hundredth so that moving picture signals can be transmitted at a rate of 1.5 Mbit/s. Furthermore, since a transmission speed achieved by the MPEG-1 standard is a middle-quality speed of about 1.5 Mbit/s, MPEG-2, which was standardized with a view to satisfying requirements for further improved picture quality, allows data transmission equivalent in quality to television broadcasting through which moving picture signals are transmitted at a rate of 2 to 15 Mbit/s. Moreover, MPEG-4 was standardized by the working group (ISO/IEC JTC1/SC29/WG11) which promoted the standardization of MPEG-1 and MPEG-2. MPEG-4, which provides a higher compression ratio than that of MPEG-1 and MPEG-2 and which enables an object-based coding/decoding/operation, is capable of providing a new functionality required in this age of multimedia. At the beginning stage of standardization, MPEG-4 aimed at providing a low bit rate coding method, but it has been extended as a standard supporting more general coding that handles interlaced images as well as high bit rate coding. Currently, an effort has been made jointly by ISO/IEC and ITU-T for standardizing MPEG-4 AVC and ITU-T H.264 as picture coding methods of the next generation that offer a higher compression ratio. As of August 2002, a committee draft (CD) is issued for a picture coding method of the next generation.
In general, in coding of a moving picture, the amount of information is compressed by reducing redundancies in temporal and spatial directions. Therefore, in inter picture prediction coding aiming at reducing temporal redundancies, motion estimation and generation of a predicative image are carried out on a block-by-block basis with reference to forward or backward picture(s), and coding is then performed on the difference value between the obtained predictive image and an image in the current picture to be coded. Here, “picture” is a term denoting one image. In the case of a progressive image, “picture” means a frame, whereas it means a frame or fields in the case of an interlaced image. Here, “interlaced image” is an image of a frame composed of two fields which are separated in capture time. In coding and decoding of an interlaced image, it is possible to handle one frame as a frame as it is, as two fields, or as a frame structure or a field structure on a per-block basis within the frame.
A picture to be coded using intra picture prediction without reference to any pictures shall be referred to as an I picture. A picture to be coded using inter picture prediction with reference to only one picture shall be referred to as a P picture. And, a picture to be coded using inter picture prediction with reference to two pictures at the same time shall be referred to as a B picture. It is possible for a B picture to refer to two pictures which can be arbitrarily combined from forward/backward pictures in display order. Reference images (reference pictures) can be determined for each block serving as a basic coding/decoding unit. Distinction shall be made between such reference pictures by calling a reference picture to be described earlier in a coded bitstream as a first reference picture, and by calling a reference picture to be described later in the bitstream as a second reference picture. Note that as a condition for coding and decoding these types of pictures, pictures used for reference are required to be already coded and decoded.
P pictures and B pictures are coded using motion compensated inter picture prediction. Coding by use of motion compensated inter picture prediction is a coding method that employs motion compensation in inter picture prediction coding. Unlike a method for performing prediction simply based on pixel values in a reference picture, motion estimation is a technique capable of improving prediction accuracy as well as reducing the amount of data by estimating the amount of motion (hereinafter referred to as “motion vector”) of each part within a picture and further by performing prediction in consideration of such amount of motion. For example, it is possible to reduce the amount of data through motion compensation by estimating motion vectors of the current picture to be coded and then by coding prediction residuals between prediction values obtained by shifting only the amount of the respective motion vectors and the current picture to be coded. In this technique, motion vectors are also recorded or transmitted in coded form, since motion vector information is required at the time of decoding.
Motion vectors are estimated on a per-macroblock basis. More specifically, a macroblock shall be previously fixed in the current picture to be coded, so as to estimate motion vectors by finding the position of the most similar reference block of such fixed macroblock within the search area in a reference picture.
Note that when data is carried not in a bitstream being a sequence of streams, but in a packet and the like being a piecemeal unit, the header and the data portion, which is the other part than the header, may be carried separately. In such a case, the header and the data portion shall not be incorporated into the same bitstream, as shown in
Generally speaking, the human sense of vision is more sensitive to the low frequency components than to the high frequency components. Furthermore, since the energy of the low frequency components in a picture signal is larger than that of the high frequency components, picture coding is performed in order from the low frequency components to the high frequency components. As a result, the number of bits required for coding the low frequency components is larger than that required for the high frequency components.
In view of the above points, the existing coding methods use larger quantization steps for the high frequency components than for the low frequency components when quantizing transformation coefficients, which are obtained by orthogonal transformation, of the respective frequencies. This technique has made it possible for the conventional coding methods to achieve a large increase in compression ratio with a small loss of picture quality from the standpoint of viewers.
Meanwhile, since quantization step sizes of the high frequency components with regard to the low frequency components depend on picture signal, a technique for changing the sizes of quantization steps for the respective frequency components on a picture-by-picture basis has been conventionally employed. A quantization matrix is used to derive quantization steps of the respective frequency components.
Meanwhile, current MPEG-4 AVC does not include quantization matrix as in MPEG-2 and MPEG-4. This results in difficulty in achieving optimal subjective quality in the current MPEG-4 AVC coding scheme and other schemes using uniform quantization in all DCT or DCT-like coefficients. When such quantization matrix scheme is introduced, we have to allow the current provision of MPEG-4 AVC or other standards to carry the quantization matrices, in consideration of compatibility with the existing standards.
Additionally, because of the coding efficiency improvement, MPEG-4 AVC has been able to provide the potential to be used in various application domains. The versatility warrants the use of different sets of quantization matrices for different applications; different sets of quantization matrices for different color channels, etc. Encoders can select different quantization matrices depending on application or image to be coded. Because of that, we must develop an efficient quantization matrix definition and loading protocol to facilitate the flexible yet effective transmission of quantization matrix information.
The present invention has been conceived in view of the above circumstances, and it is an object of the present invention to provide a moving picture coding method and a moving picture decoding method that are capable of reducing the amount of data to be coded and improving coding efficiency.
In order to achieve the above objective, the moving picture coding method according to the present invention is a moving picture coding method for coding, on a block-by-block basis, each picture that makes up a moving picture, and generating a coded stream, the method comprising: transforming, on a block-by-block basis, each picture into coefficients representing spatial frequency components; quantizing the coefficients using a quantization matrix; generating identification information that identifies the quantization matrix used for quantization; and placing the identification information in the coded stream in predetermined units.
According to the above method, since there is no need to describe a quantization matrix used for quantization in the predetermined units, for example, picture, slice, macroblock or the like, it becomes possible to reduce the amount of data to be coded and thus perform coding of the data efficiently.
In the above method, the quantization matrix may be stored into the coded stream at a location that can be accessed before the data obtained by quantizing the coefficients using said quantization matrix can be retrieved.
Here, in the storage, the quantization matrix may be stored into a first parameter set or a second parameter set for holding information necessary for decoding, the first parameter set or the second parameter set being placed in the coded stream at the location that can be accessed before the data obtained by quantizing the coefficients using the quantization matrix can be retrieved.
According to the above method, it becomes possible to use, for decoding, the quantization matrix identified by the identification information.
In the above-mentioned moving picture coding method, a flag may be placed in the coded stream in predetermined units, the flag indicating switching between the quantization matrix identifiable by the identification information and a default quantization matrix.
According to the above method, it becomes possible to indicate switching between the quantization matrix identifiable by the identification information and the default quantization matrix, using the identification information.
The moving picture decoding method according to the present invention is a moving picture decoding method for decoding a coded stream obtained by coding each picture that makes up a moving picture through orthogonal transformation and quantization on a block-by-block basis, the method comprising: holding at least one quantization matrix; extracting, in predetermined units, identification information that identifies a quantization matrix used for quantization, from the coded stream; identifying the quantization matrix based on the identification information from the at least one held quantization matrix; performing inverse quantization of each coded picture on a block-by-block basis using the identified quantization matrix; and decoding the coded picture by performing inverse orthogonal transformation on inverse quantized coefficients indicating spatial frequency components.
According to the above method, it becomes possible to decode a coded stream in which only the matrix ID for identifying the quantization matrix used for quantization is placed in predetermined units, such as picture, slice, macroblock or the like, while the quantization matrix has previously been carried separately.
In the above-mentioned moving picture decoding method, at least one quantization matrix may be extracted from the coded stream, and in the holding, the quantization matrix extracted from the coded stream may be held.
Here, in the extracting, the quantization matrix may be extracted from a first parameter set or a second parameter set in which information necessary for decoding is stored.
According to the above method, it becomes possible to use the quantization matrix identified by the identification information.
In the above-mentioned moving picture decoding method, a flag may be extracted from the coded stream in predetermined units, the flag indicating switching between the quantization matrix identified by the identification information and a default quantization matrix, and in the identifying, the quantization matrix identified by the identification information and the default quantization matrix may be switched.
According to the above method, it becomes possible to switch between the quantization matrix identified by the identification information and the default quantization matrix, based on the flag.
In the above method, each picture is made up of luma components and two types of chroma components, and in the identifying, in the case where there is no quantization matrix for chroma components in the quantization matrices identified based on the identification information, a quantization matrix for luma components may be identified as the quantization matrix to be used.
Also, each picture is made up of a luma component and two types of chroma components, and in the identifying, in the case where there is no quantization matrix for chroma components of a type corresponding to current decoding in the quantization matrices identified based on the identification information, a quantization matrix for another type of chroma components may be identified as the quantization matrix to be used.
According to the above method, it becomes possible to decode a coded stream even if there is no quantization matrix for chroma.
Furthermore, not only is it possible to embody the present invention as a moving picture coding method and a moving picture decoding method, but also as a moving picture coding apparatus and a moving picture decoding apparatus that include, as steps, the characteristic units included in such moving picture coding method and moving picture decoding method. It is also possible to embody them as programs that cause a computer to execute these steps, or as streams coded by the moving picture coding method. It should be noted that such programs and coded streams can be distributed on a recording medium such as a CD-ROM and via a transmission medium such as the Internet.
As is obvious from the above explanation, according to the moving picture coding method and the moving picture decoding method of the present invention, it becomes possible to reduce an amount of data to be coded and achieve efficient coding and decoding.
These and other objects, advantages and features of the invention will become apparent from the following description thereof taken in conjunction with the accompanying drawings that illustrate a specific embodiment of the invention. In the Drawings:
The embodiments of the present invention are described by referring to diagrams.
A picture coding apparatus 1 is an apparatus for performing compression coding on an input picture signal Vin and outputting a coded stream Str which has been coded into a bitstream by performing variable length coding and the like. As shown in
The picture signal Vin is inputted to the subtraction unit 103 and the motion estimation unit 101. The subtraction unit 103 calculates residual pixel values between each image in the input picture signal Vin and each predictive image, and outputs the calculated residual pixel values to the orthogonal transformation unit 104. The orthogonal transformation unit 104 transforms the residual pixel values into frequency coefficients, and outputs them to the quantization unit 105. The quantization unit 105 quantizes the inputted frequency coefficients using inputted quantization matrix WM, and outputs the resulting quantized values Qcoef to the variable length coding unit 111.
The inverse quantization unit 106 performs inverse quantization on the quantized values Qcoef using the inputted quantization matrix WM, so as to turn them into the frequency coefficients, and outputs them to the inverse orthogonal transformation unit 107. The inverse orthogonal transformation unit 107 performs inverse frequency transformation on the frequency coefficients so as to transform them into residual pixel values, and outputs them to the addition unit 108. The addition unit 108 adds the residual pixel values and each predictive image outputted from the motion estimation unit 102, so as to form a decoded image. The switch 110 turns ON when it is indicated that such decoded image should be stored, and such decoded image is to be stored into the picture memory 109.
Meanwhile, the motion estimation unit 101, which receives the picture signal Vin on a macroblock basis, detects an image area closest to an image signal in such inputted picture signal Vin within a decoded picture stored in the picture memory 109, and determines motion vector(s) MV indicating the position of such area. Motion vectors are estimated for each block, which is obtained by further dividing a macroblock. When this is done, it is possible to use more than one picture as reference pictures. Here, since a plurality of pictures can be used as reference pictures, identification numbers (reference indices Index) to identify the respective reference pictures are required on a block-by-block basis. With the use of the reference indices Index, it is possible to identify each reference picture by associating each picture stored in the picture memory 109 with the picture number designated to such each picture.
The motion compensation unit 102 selects, as a predictive image, the most suitable image area from among decoded pictures stored in the picture memory 109, using the motion vectors detected in the above processing and the reference indices Index.
The quantization matrix holding unit 112 holds the quantization matrix WM which has already been carried as a part of a parameter set and the matrix ID that identifies this quantization matrix WM in the manner in which they are associated with each other.
The variable length coding unit 111 obtains, from the quantization matrix holding unit 112, the matrix ID corresponding to the quantization matrix WM used for quantization. The variable length coding unit 111 also performs variable length coding on the quantization values Qcoef, the matrix IDs, the reference indices Index, the picture types Ptype and the motion vectors MV so as to obtain a coded stream Str.
In MPEG-4 AVC, there is no concept of a header, and common data is placed at the top of a sequence under the designation of a parameter set. There are two types of parameter sets, a picture parameter set PPS that is data corresponding to the header of each picture, and a sequence parameter set SPS corresponding to the header of a GOP or a sequence in MPEG-2. A sequence parameter set SPS includes the number of pictures that are available as reference pictures, image size and the like, while a picture parameter set PPS includes a type of variable length coding (switching between Huffman coding and arithmetic coding), default values of quantization matrices, the number of reference pictures, and the like.
An identifier is assigned to a sequence parameter set SPS, and to which sequence a picture belongs is identified by specifying this identifier in a picture parameter set PPS. An identifier is also assigned to a picture parameter set PPS, and which picture parameter set PPS is to be used is identified by specifying this identifier in a slice.
For example, in the example shown in
Furthermore, the sequence parameter set SPS and the picture parameter set PPS respectively include flags 501 and 601 indicating whether or not quantization matrices are carried as shown in
The quantization matrix can be changed adaptively to the unit of quantization (for example, horizontal 4×vertical 4 pixels and horizontal 8×vertical 8 pixels).
Since a picture signal Vin consists of luma components and two types of chroma components, it is possible to use different quantization matrices for luma components and two types of chroma components separately when performing quantization. It is also possible to use different quantization matrices for intra-picture coding and inter-picture coding separately.
Therefore, for example, as shown in
The operations for placing matrix IDs in the above-structured moving picture coding apparatus are explained.
The variable length coding unit 111 obtains a quantization matrix WM used for quantization (Step S101). Next, the variable length coding unit 111 judges whether or not the obtained quantization matrix WM is held in the quantization matrix holding unit 112 (Step S102). Here, in the case whether the obtained quantization matrix WM is held in the quantization matrix holding unit 112 (YES in Step S102), the variable length coding unit 111 obtains the matrix ID corresponding to the obtained quantization matrix WM from the quantization matrix holding unit 112 (Step S103). Then, the variable length coding unit 111 places the obtained matrix ID in predetermined units (for example, per picture, slice or macroblock) (Step S104).
On the other hand, in the case where the obtained quantization matrix WM is not held in the quantization matrix holding unit 112 (NO in Step S102), the quantization matrix holding unit 112 generates the matrix ID for this quantization matrix WM (Step S105). Then, the quantization matrix holding unit 112 holds this quantization matrix WM and the matrix ID in the manner in which they are associated with each other (Step S106). The variable length coding unit 111 places the generated matrix ID in predetermined units (for example, per picture, slice or macroblock) (Step S107). The variable length coding unit 111 describes the generated matrix ID and the quantization matrix WM in the parameter set (Step S108). Note that the parameter set in which these matrix ID and quantization matrix WM are described is carried earlier, in a coded stream Str, than the predetermined units (that is, coded data quantized using this quantization matrix WM) to which this matrix ID is placed.
As described above, since quantization matrices WM are described in a parameter set and carried while only the matrix ID that identifies the quantization matrix WM used in predetermined units (for example, per picture, slice or macroblock) is placed therein, there is no need to describe the quantization matrix WM used in every predetermined unit. Therefore, it becomes possible to reduce the amount of data to be coded and achieve efficient coding.
Note that it is possible to update a quantization matrix WM carried in a sequence parameter set SPS and carry the updated one (with the same matrix ID) in a picture parameter set PPS. In this case, the updated quantization matrix WM is used only when the picture parameter set PPS is referenced.
It is also possible to include in a coded stream a flag indicating switching between the default quantization matrix WM and the quantization matrix WM identified by a matrix ID. In this case, the default quantization matrix WM is replaced with the quantization matrix WM identified by the matrix ID according to the flag.
The moving picture decoding apparatus 2 is an apparatus that decodes a coded stream obtained by the coding by the moving picture coding apparatus 1 as described above, and includes a variable length decoding unit 201, a quantization matrix holding unit 202, a picture memory 203, a motion compensation unit 204, an inverse quantization unit 205, an inverse orthogonal transformation unit 206 and an addition unit 207.
The variable length decoding unit 201 decodes the coded stream Str, and outputs quantized values Qcoef, reference indices Index, picture types Ptype and motion vectors MV. The variable length decoding unit 201 also decodes the coded stream, identifies a quantization matrix WM based on an extracted matrix ID, and outputs the identified quantization matrix WM.
The quantization matrix holding unit 202 associates the quantization matrix WM which has already been carried in a parameter set with the matrix ID that identifies this quantization matrix WM, and holds them.
The quantized values Qcoef, reference indices Index and motion vectors MV are inputted to the picture memory 203, the motion compensation unit 204 and the inverse quantization unit 205, and decoding processing is performed on them. The operations for the decoding are same as those in the moving picture coding apparatus 1 shown in
Next, the operations for identifying a quantization matrix in the above-structured moving picture decoding apparatus are explained.
The variable length decoding unit 201 decodes a coded stream Str and extracts a matrix ID placed in predetermined units (Step S201). Next, the variable length decoding unit 201 identifies a quantization matrix WM from among quantization matrices held in the quantization matrix holding unit 202, based on the extracted matrix ID (Step S202). Then, the variable length decoding unit 201 outputs the identified quantization matrix WM to the inverse quantization unit 205 (Step S203).
As described above, while a quantization matrices WM are described in a parameter set and carried, it is possible, in predetermined units (for example, per picture, per slice or per macroblock), to decode a coded stream in which only the matrix ID that identifies the used quantization matrix WM is placed.
Note that quantization matrices WM are described in a parameter set and carried in the present embodiment but the present invention is not limited to such case. For example, quantization matrices may be previously transmitted separately from a coded stream.
By the way, since a picture signal Vin is made up of luma components and two types of chroma components as described above, it is possible to use different quantization matrices separately for luma components and two types of chroma components for quantization. It is also possible to use an uniform quantization matrix for all the components.
Next, the operations for identifying quantization matrices to be used for chroma components are explained.
The variable length decoding unit 201 judges whether or not there is a quantization matrix for chroma components of the type corresponding to the current decoding among the quantization matrices WM identified as mentioned above (Step S301). For example, in the case where a quantized value Qcoef to be decoded is a first chroma component, it judges whether or not there is a quantization matrix for the first chroma components. In the case where a quantized value Qcoef to be decoded is a second chroma component, it judges whether or not there is a quantization matrix for the second chroma components. Here, if there is a quantization matrix for the corresponding type of chroma components (YES in Step S301), it outputs the corresponding chroma quantization matrix to the inverse quantization unit 205 as a matrix to be used (Step S302).
On the other hand, if there is no such corresponding chroma quantization matrix (NO in Step S301), the variable length decoding unit 201 judges whether or not there is a quantization matrix for another type of chroma components (Step S303). For example, in the case where a quantized value Qcoef to be decoded is a first chroma component, it judges whether or not there is a quantization matrix for the second chroma components. In the case where a quantized value Qcoef to be decoded is a second chroma component, it judges whether or not there is a quantization matrix for the first chroma components. Here, if there is a corresponding quantization matrix for another type of chroma components (YES in Step S303), it outputs the quantization matrix for another type of chroma components to the inverse quantization unit 205 as a matrix to be used (Step S304). On the other hand, if there is no quantization matrix for another type of chroma components (NO in Step S303), it outputs the quantization matrix for the luma components to the inverse quantization unit 205 as a matrix to be used (Step S305).
As a result, it becomes possible to decode a coded stream even if there is no chroma quantization matrix.
The key points in the present embodiment are as follows.
1. If there are multiple sequence-level stream description data structures selectable by a different part of a video bitstream, the quantization matrix shall be carried in a data structure separate from any of the sequence header data structure.
2. Multiple quantization matrices customized by users are defined at the beginning of a sequence video stream. The quantization matrices shall be selectable at different pictures at different locations in a bitstream. MPEG-2 uses quantization matrix scheme but it did not use a set of matrices from which one of them can be selected. It has to reload a new matrix when a quantization matrix is updated.
3. How frequent the update would be performed is specified as syntax elements to apply the quantization updates, so that the quantization matrix update scheme is compatible with the above description. In the scheme of the present embodiment, MPEG-2 single effective quantization matrix and later update is only a special case of this update scheme.
Next, the overview of the present embodiment is described.
In some video coding standards, there may be several segments in a sequence that are encoded using different encoding configurations, and as such, they require different sequence or segment header descriptors for each segment in the sequence. As transmitting quantization matrix takes considerable number of bits, we place all quantization matrices used in a sequence somewhere separate from any of the sequence or segment headers. For segments of the sequence that use different sets of quantization matrices, it only needs to reference the quantization matrices, such as an identification number, rather than transmitting the matrix from an encoder to decoders every time the matrix is used, which is the mechanism that MPEG-2 has used.
All the quantization matrices that are not specified in the video coderc's specification should be defined and grouped together. The segment or block of the bitstream that carries these quantization matrices should be placed at the beginning of the bitstream of a sequence before any encoded video data are transmitted. As choices that can be made by different video codec standards, those quantization matrices can be included as part of the video elementary stream, or can be carried out-of-band, such as in transport stream or in packets or in files separate from the main body of the video stream.
In many codec specifications, such as MPEG-2, MPEG-4, there are lower-level data structures contained in a sequence segment, which organizes video data into “group of pictures”, pictures, slices, layers, macroblocks, so on. If a sequence segment header or descriptor references more than one set of quantization matrices, the choices of which one set to use will be left to lower level data structure to specify. This will be discussed later in this disclosure.
For those sequence segments that references more than one set of quantization matrix, all the quantization matrices are carried in the beginning of a sequence. The decoder that has received all the quantization matrices shall keep these quantization in its memory in a way that, when the decoder references a particular quantization matrix, all the look up tables, if there are any, associated with the quantization matrices will be ready to use. In implementing the specification of the syntax, the capacity of the decoders has to be taken into consideration to fit the capacity limit into the application requirement the decoders fit to. Therefore, the number of quantization matrices available in any given time shall not exceed a certain range.
In case that the decoder capacity does not allow storage of more than one set of quantization matrices, whenever a new set of quantization matrices become needed, the previously stored quantization matrix set has to be removed from decoder memory before the new one can be stored and become effective. This scenario becomes the same as that MPEG-2 has used in its specification.
In the example shown in
Next, features in the syntax to support the use of quantization matrix are explained.
Quantization matrix can be fixed for an entire sequence or programs.
But the more flexible way to achieve better quality is to allow quantization scheme and quantization matrices to be changed dynamically. In such case, the issue is at what data level that kind of changes should be allowed. It is understood that depending on complexity allowed by an application domain, there will be restriction on the number of quantization matrix sets to be allowed at what data levels.
For all the stream data structure levels, that is, from sequence, segments, pictures, slices, to macroblocks, (macroblock has been used in almost all codec standards to mean 16×16 block of pixels, however, this dimension may change in proprietary or future codecs) we have in the bitstream a 6-bit flag containing the following bits (as shown in Table 1) to indicate what types of quantization are allowed to change at from one immediate lower level data to another. For example, in MPEG-4 AVC, the immediate lower level of “Sequence” is “Picture” and the immediate lower level of “Picture” is “Slice”.
TABLE 1
Bits representing quantization schemes and update rules
Bit A
1 bit for using only 4 × 4 uniform quantization
Bit B
1 bit for using only 4 × 4 non-uniform quantization scheme
Bit C
1 bit for allowing 4 × 4 quantization scheme changes—change
from one quantization matrix set to another or changes from
uniform quantization scheme to non-uniform quantization
scheme.
Bit D
1 bit for using only 8 × 8 uniform quantization
Bit E
1 bit for using only 8 × 8 non-uniform quantization scheme
Bit F
1 bit for allowing 8 × 8 quantization scheme changes—change
from one quantization matrix set to another or changes from
uniform quantization scheme to non-uniform quantization
scheme.
Note that when only Bit A is set and Bit B is not set, Bit C cannot be set. Similarly, when only Bit D is set and Bit E is not set, Bit F cannot be set.
When Bit B and Bit C are both set, it means quantization matrix set can change from one to another. One quantization matrix set contains one matrix per block coding mode. The block coding mode can be intra-prediction of certain direction, inter-predicted block, a bi-predicted block etc.
Bit C and Bit F indicate changes of quantization scheme or quantization matrix set or both. If the bit for 8×8 non-uniform quantization with quantization matrix is set in the Sequence level in MPEG-4 AVC, the quantization matrix used in one “Picture” data can be different from other “Picture” data.
At the highest level of data syntax, such as sequence header, if quantization matrix scheme is used, a default quantization set will be specified.
When Bit C or Bit F is set for a data level, there will a flag for each of the lower level data headers to indicate whether the default quantization matrix set will be used in these levels.
If the flag is positive in a lower data header, a new default quantization set for this data level will be defined and a 6-bit flag will be used at this data level to indicate whether the default will be changed in the further lower data level. This is followed in all data levels until the lowest level or the lowest level permitted by application requirement.
When Bit C or Bit F is not set, there will not be this flag in lower data headers, and the default will be automatically assumed.
There can be restrictions applicable in this recursive signaling method for transmitting information on quantization schemes, for example, restriction by the frequency of quantization matrix changes that has to be capped under a certain rate.
Next, default and customizable quantization matrices are explained.
In a video coding specification using non-uniform quantization matrix scheme, there may be several predefined matrices in a video codec specification. These default or prescribed matrices are known by compliant decoders and therefore there is no need to transfer the matrices to decoders. In similar way, these quantization matrices can be referenced in the same way as described above. When prescribed matrices are available, decoder shall add received customized matrices into its pool of quantization matrices. As described above, distinctive quantization matrices are indexed by identification numbers, which are assigned by encoder and transmitted to decoders.
In organizing the quantization matrices in bitstream syntax, the quantization of the same size can be grouped together. Information regarding whether a matrix should be used for inter-coded blocks or intra-coded blocks, or whether a matrix should be used for luma or chroma can also be noted in their attributes.
Next, update of a quantization matrix is explained.
Video codec bitstream syntax can allow quantization matrices already known to decoders to be added or updated.
When a quantization matrix is associated with a new identification number, this matrix is taken as a new quantization matrix and can be referenced by the new identification number. When the identification number has already been associated with a quantization matrix, the existing quantization matrix will be modified at decoders with the new matrix. Only quantization matrix of the same size as the old one can replace an old matrix. Encoder is responsible in keeping track of the active quantization matrices. During transmission of the updated quantization matrices, only the quantization matrix that needs to be updated is defined in the network packets.
Next, carriage of quantization matrices in MPEG-4 AVC is explained.
In MPEG-4 AVC, all video data and headers are packed into a bitstream layer called Network Abstract Layer (NAL). NAL is a sequence of many NAL units. Each NAL unit carries certain type of video data or data headers.
MPEG-4 AVC also defines several picture data groups under one data hierarchy. The hierarchy starts at Sequence, which is described by Sequence Parameter Set. A “Sequence” can have pictures using different Picture Parameter Sets. Under “Picture”, there are slices, where slices have slice headers. A slice typically has many 16×16 blocks of pixels, called macroblocks.
When we introduce quantization matrix scheme into MPEG-4 AVC, we can have user defined quantization matrices or encoder-provided matrices be carried over NAL units. The use of NAL units can be implemented in three different ways.
(1) One NAL unit carries all the matrix information (including quantization tables) associated with each of the matrices.
(2) Several NAL units each carries certain type of quantization matrices and their information.
(3) Each NAL unit carries the definition of one quantization matrix.
In the case (1) and (2), the NAL units will also provide the total number of quantization matrices. In case 3, the total number of user-defined quantization matrices is not explicitly given by the video elementary stream. Both encoder and decoder must count the total as they go. An example of case 2 is when 4×4 quantization matrices and 8×8 quantization matrices are grouped and each is carried in a NAL.
In the sequence parameter set, MPEG-4 shall specify which quantization matrices it will use. It will define the 6-bit flag to indicate what quantization scheme will be used and whether it is allowed to change in the next level that is picture level, whose header is Picture Parameter Set.
The sequence parameter set that references a subset of the defined quantization matrices shall list all the quantization matrix IDs, which includes those default to the video codec specification, and those defined specifically for the content by codec operators. Sequence parameter sets can carry some common quantization parameters. A sequence parameter set can declare a set of default quantization matrices each for inter and intra prediction for each 8×8 and 4×4 block for luma and inter and intra for chroma. Picture parameter set, slice header, and macroblock level, however, can declare their own set of quantization matrices to override higher level specification. However these quantization matrices must be available in the Sequence Parameter Set currently available.
When quantization matrices are carried over NAL units, they can be transmitted at the beginning of the bitstream of the sequence. The position can be that it can either be located after or before the NAL unit carrying Sequence Parameter Sets. After the initial definition, additional customized quantization matrices can be inserted into bitstream to update or add new ones. The operation whether to add or to update is determined by the quantization matrix ID. If the ID exists, it is update. If the ID does not exist, the matrix will be added into the matrix pool.
Furthermore, if a program for realizing the moving picture coding method and the moving picture decoding method as shown in each of the aforementioned embodiments are recorded on a recording medium such as a flexible disk, it becomes possible to easily perform the processing presented in each of the above embodiments in an independent computer system.
Meanwhile,
The above description is given on the assumption that a recording medium is a flexible disk, but an optical disc may also be used. In addition, the recording medium is not limited to this, and any other medium such as an IC card and a ROM cassette capable of recording a program can also be used.
The following describes application examples of the moving picture coding method and the moving picture decoding method as shown in the above embodiments as well as a system using them.
In this content supply system ex100, devices such as a computer ex111, a PDA (Personal Digital Assistant) ex112, a camera ex113, a cellular phone ex114, and a camera-equipped cellular phone ex115 are respectively connected to the Internet ex101 via an Internet service provider ex102, a telephone network ex104, and the base stations ex107˜ex110.
However, the content supply system ex100 is not limited to the combination as shown in
The camera ex113 is a device such as a digital video camera capable of shooting moving pictures. The cellular phone may be a cellular phone of a PDC (Personal Digital Communications) system, a CDMA (Code Division Multiple Access) system, a W-CDMA (Wideband-Code Division Multiple Access) system or a GSM (Global System for Mobile Communications) system, a PHS (Personal Handyphone system) or the like, and may be any one of these.
Furthermore, a streaming server ex103 is connected to the camera ex113 via the base station ex109 and the telephone network ex104, which enables live distribution or the like based on coded data transmitted by the user using the camera ex113. Either the camera ex113 or a server and the like capable of performing data transmission processing may code the shot data. Also, moving picture data shot by a camera ex116 may be transmitted to the streaming server ex103 via the computer ex111. The camera ex116 is a device such as a digital camera capable of shooting still pictures and moving pictures. In this case, either the camera ex116 or the computer ex111 may code the moving picture data. In this case, an LSI ex117 included in the computer ex111 or the camera ex116 performs coding processing. Note that software for picture coding and decoding may be integrated into a certain type of storage medium (such as a CD-ROM, a flexible disk and a hard disk) that is a recording medium readable by the computer ex111 and the like. Furthermore, the camera-equipped cellular phone ex115 may transmit the moving picture data. This moving picture data is data coded by an LSI included in the cellular phone ex115.
In this content supply system ex100, content (e.g. a music live video) which has been shot by the user using the camera ex113, the camera ex116 or the like is coded in the same manner as the above-described embodiments and transmitted to the streaming server ex103, and the streaming server ex103 makes stream distribution of the content data to clients at their requests. The clients here include the computer ex111, the PDA ex112, the camera ex113, the cellular phone ex114 and so forth capable of decoding the above coded data. The content supply system ex100 with the above configuration is a system that enables the clients to receive and reproduce the coded data and realizes personal broadcasting by allowing them to receive, decode and reproduce the data in real time.
The moving picture coding apparatus and moving picture decoding apparatus presented in the above embodiments can be used for coding and decoding to be performed in each of the devices making up the above system.
An explanation is given of a cellular phone as an example.
Next, referring to
When a call-end key or a power key is turned on by a user operation, the power supply circuit unit ex310 supplies each unit with power from a battery pack, and activates the camera-equipped digital cellular phone ex115 to make it into a ready state.
In the cellular phone ex115, the voice processing unit ex305 converts a voice signal received by the voice input unit ex205 in conversation mode into digital voice data under the control of the main control unit ex311 comprised of a CPU, a ROM, a RAM and others, the modem circuit unit ex306 performs spread spectrum processing on it, and a transmit/receive circuit unit ex301 performs digital-to-analog conversion processing and frequency transformation processing on the data, so as to transmit the resultant via the antenna ex201. Also, in the cellular phone ex115, data received by the antenna ex201 in conversation mode is amplified and performed of frequency transformation processing and analog-to-digital conversion processing, the modem circuit unit ex306 performs inverse spread spectrum processing on the resultant, and the voice processing unit ex305 converts it into analog voice data, so as to output it via the voice output unit ex208.
Furthermore, when sending an e-mail in data communication mode, text data of the e-mail inputted by operating the operation keys ex204 on the main body is sent out to the main control unit ex311 via the operation input control unit ex304. In the main control unit ex311, after the modem circuit unit ex306 performs spread spectrum processing on the text data and the transmit/receive circuit unit ex301 performs digital-to-analog conversion processing and frequency transformation processing on it, the resultant is transmitted to the base station ex110 via the antenna ex201.
When picture data is transmitted in data communication mode, the picture data shot by the camera unit ex203 is supplied to the picture coding unit ex312 via the camera interface unit ex303. When picture data is not to be transmitted, it is also possible to display such picture data shot by the camera unit ex203 directly on the display unit ex202 via the camera interface unit ex303 and the LCD control unit ex302.
The picture coding unit ex312, which includes the moving picture coding apparatus according to the present invention, performs compression coding on the picture data supplied from the camera unit ex203 using the coding method employed by the moving picture coding apparatus presented in the above embodiment, so as to convert it into coded picture data, and sends it out to the multiplexing/demultiplexing unit ex308. At this time, the cellular phone ex115 sends voices received by the voice input unit ex205 while the shooting by the camera unit ex203 is taking place, to the multiplexing/demultiplexing unit ex308 as digital voice data via the voice processing unit ex305.
The multiplexing/demultiplexing unit ex308 multiplexes the coded picture data supplied from the picture coding unit ex312 and the voice data supplied from the voice processing unit ex305 using a predetermined method, the modem circuit unit ex306 performs spread spectrum processing on the resulting multiplexed data, and the transmit/receive circuit unit ex301 performs digital-to-analog conversion processing and frequency transformation processing on the resultant, so as to transmit the processed data via the antenna ex201.
When receiving, in data communication mode, moving picture file data which is linked to a Web page or the like, the modem circuit unit ex306 performs inverse spread spectrum processing on the received signal received from the base station ex110 via the antenna ex201, and sends out the resulting multiplexed data to the multiplexing/demultiplexing unit ex308.
In order to decode the multiplexed data received via the antenna ex201, the multiplexing/demultiplexing unit ex308 separates the multiplexed data into a bitstream of picture data and a bitstream of voice data, and supplies such coded picture data to the picture decoding unit ex309 and such voice data to the voice processing unit ex305 via the synchronous bus ex313.
Next, the picture decoding unit ex309, which includes the moving picture decoding apparatus according to the present invention, decodes the bitstream of the picture data using the decoding method paired with the coding method shown in the above-mentioned embodiment so as to generate moving picture data for reproduction, and supplies such data to the display unit ex202 via the LCD control unit ex302. Accordingly, moving picture data included in the moving picture file linked to a Web page, for instance, is displayed. At the same time, the voice processing unit ex305 converts the voice data into an analog voice signal, and then supplies this to the voice output unit ex208. Accordingly, voice data included in the moving picture file linked to a Web page, for instance, is reproduced.
Note that the aforementioned system is not an exclusive example and therefore that at least either the moving picture coding apparatus or the moving picture decoding apparatus of the above embodiment can be incorporated into a digital broadcasting system as shown in
Furthermore, it is also possible to code a picture signal by the moving picture coding apparatus presented in the above embodiment and to record the resultant in a recording medium. Examples include a DVD recorder for recording a picture signal on a DVD disc ex421 and a recorder ex420 such as a disc recorder for recording a picture signal on a hard disk. Moreover, a picture signal can also be recorded in an SD card ex422. If the recorder ex420 is equipped with the moving picture decoding apparatus presented in the above embodiment, it is possible to reproduce a picture signal recorded on the DVD disc ex421 or in the SD card ex422, and display it on the monitor ex408.
As the configuration of the car navigation system ex413, the configuration without the camera unit ex203, the camera interface unit ex303 and the picture coding unit ex312, out of the configuration shown in
Concerning the terminals such as the cellular phone ex114, a transmitting/receiving terminal having both an encoder and a decoder, as well as a transmitting terminal only with an encoder, and a receiving terminal only with a decoder are possible as forms of implementation.
As stated above, it is possible to employ the moving picture coding method and the moving picture decoding method presented in the above embodiments into any one of the above-described devices and systems. Accordingly, it becomes possible to achieve the effect described in the aforementioned embodiments.
It should also be noted that the present invention is not limited to the above embodiments, and many variations or modifications thereof are possible without departing from the scope of the invention.
Note that each function block in the block diagrams shown in
The method for incorporation into an integrated circuit is not limited to the LSI, and it may be realized with a private line or a general processor. After manufacturing of LSI, a Field Programmable Gate Array (FPGA) that is programmable or a reconfigurable processor that can reconfigure the connection and settings for the circuit cell in the LSI may be utilized.
Furthermore, along with the arrival of technique for incorporation into an integrated circuit that replaces the LSI owing to a progress in semiconductor technology or another technique that has derived from it, integration of the function blocks may be carried out using the newly-arrived technology. Bio-technology may be cited as one of the examples.
Among the function blocks, only a unit for storing data to be coded or decoded may be constructed separately without being incorporated in a chip form.
As described above, the moving picture coding method and the moving picture decoding method according to the present invention are useful as methods for coding pictures that make up a moving picture so as to generate a coded stream and for decoding the generated coded stream, in devices such as a cellular phone, a DVD device and a personal computer.
Chen, Tao, Kashiwagi, Yoshiichiro, Lim, Chong Soon, Lu, Jiuhuai, Kadono, Shinya Kadono
Patent | Priority | Assignee | Title |
Patent | Priority | Assignee | Title |
5034965, | Nov 11 1988 | Matsushita Electric Industrial Co., Ltd. | Efficient coding method and its decoding method |
5392037, | May 21 1991 | Matsushita Electric Industrial Co., Ltd. | Method and apparatus for encoding and decoding |
5613015, | Nov 12 1992 | Fuji Xerox Co., Ltd. | Image signal analyzing system and coding system |
5879948, | May 12 1997 | Tennessee Valley Authority | Determination of total mercury in exhaust gases |
5881177, | May 14 1996 | QUARTERHILL INC ; WI-LAN INC | Quantizer for video signal encoding system |
5937098, | Feb 06 1995 | Hoya Corporation | Adaptive quantization of orthogonal transform coefficients for setting a target amount of compression |
6005982, | Aug 29 1996 | Hoya Corporation | Image compression and expansion device |
6067118, | Dec 16 1997 | Philips Electronics North America Corp. | Method of frame-by-frame calculation of quantization matrices |
6126910, | Oct 14 1997 | Codan Development LLC | Method for removing acid gases from flue gas |
6403526, | Dec 21 1999 | W R GRACE & CO -CONN | Alumina trihydrate derived high pore volume, high surface area aluminum oxide composites and methods of their preparation and use |
6445739, | Feb 08 1997 | Panasonic Intellectual Property Corporation of America | Quantization matrix for still and moving picture coding |
6804302, | Sep 28 1998 | Panasonic Intellectual Property Corporation of America | Multimedia information coding apparatus, coding method of multimedia information, and recording media storing data coded by the same method |
6818043, | Jan 23 2003 | Electric Power Research Institute, Inc. | Vapor-phase contaminant removal by injection of fine sorbent slurries |
6928113, | Sep 18 1998 | Sony Corporation | Encoding apparatus and method |
6999511, | Feb 23 1999 | International Business Machines Corporation | Dynamically switching quant matrix tables within an MPEG-2 encoder |
7149811, | Jun 30 1992 | CHARTOLEAUX KG LIMITED LIABILITY COMPANY | Multistandard video decoder and decompression system for processing encoded bit streams including a reconfigurable processing stage and methods relating thereto |
7295609, | Nov 30 2001 | Sony Corporation | Method and apparatus for coding image information, method and apparatus for decoding image information, method and apparatus for coding and decoding image information, and system of coding and transmitting image information |
7620103, | Dec 10 2004 | AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE LIMITED | Programmable quantization dead zone and threshold for standard-based H.264 and/or VC1 video encoding |
7929624, | Oct 26 2006 | TELEFONAKTIEBOLAGET LM ERICSSON PUBL | Cell ID detection in cellular communication systems |
20020114388, | |||
20030147463, | |||
20070286501, | |||
20090010334, | |||
20100061450, | |||
20100061644, | |||
20150334396, | |||
EP2216917, | |||
EP593159, | |||
JP10276097, | |||
JP11088880, | |||
JP2001258029, | |||
JP2001359107, | |||
JP2003289542, | |||
JP2216917, | |||
JP4343576, | |||
JP5235778, | |||
JP6284412, | |||
JP7075102, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Feb 02 2006 | LU, JIUHUAI | MATSUSHITA ELECTRIC INDUSTRIAL CO , LTD | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 042761 | /0854 | |
Feb 02 2006 | CHEN, TAO | MATSUSHITA ELECTRIC INDUSTRIAL CO , LTD | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 042761 | /0854 | |
Feb 03 2006 | KASHIWAGI, YOSHIICHIRO | MATSUSHITA ELECTRIC INDUSTRIAL CO , LTD | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 042761 | /0854 | |
Feb 14 2006 | LIM, CHONG SOON | MATSUSHITA ELECTRIC INDUSTRIAL CO , LTD | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 042761 | /0854 | |
Feb 17 2006 | KADONO, SHINYA | MATSUSHITA ELECTRIC INDUSTRIAL CO , LTD | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 042761 | /0854 | |
Oct 01 2008 | MATSUSHITA ELECTRIC INDUSTRIAL CO , LTD | Panasonic Corporation | CHANGE OF NAME SEE DOCUMENT FOR DETAILS | 042921 | /0544 | |
Jan 24 2014 | Panasonic Corporation | DOLBY INTERNATIONAL AB | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 042761 | /0915 | |
May 27 2014 | Panasonic Corporation | Panasonic Intellectual Property Corporation of America | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 042761 | /0884 | |
Feb 19 2016 | DOLBY INTERNATIONAL AB | (assignment on the face of the patent) | / |
Date | Maintenance Fee Events |
Aug 20 2020 | M1552: Payment of Maintenance Fee, 8th Year, Large Entity. |
Aug 20 2024 | M1553: Payment of Maintenance Fee, 12th Year, Large Entity. |
Date | Maintenance Schedule |
Aug 01 2020 | 4 years fee payment window open |
Feb 01 2021 | 6 months grace period start (w surcharge) |
Aug 01 2021 | patent expiry (for year 4) |
Aug 01 2023 | 2 years to revive unintentionally abandoned end. (for year 4) |
Aug 01 2024 | 8 years fee payment window open |
Feb 01 2025 | 6 months grace period start (w surcharge) |
Aug 01 2025 | patent expiry (for year 8) |
Aug 01 2027 | 2 years to revive unintentionally abandoned end. (for year 8) |
Aug 01 2028 | 12 years fee payment window open |
Feb 01 2029 | 6 months grace period start (w surcharge) |
Aug 01 2029 | patent expiry (for year 12) |
Aug 01 2031 | 2 years to revive unintentionally abandoned end. (for year 12) |