Disclosure of Invention
The invention aims to solve the technical problems of lower image matching precision and inaccurate code rate control in the prior art, and provides an H264 macro-block level code rate control method, an H264 macro-block level code rate control device and a readable storage medium.
The technical scheme adopted for solving the technical problems is as follows: constructing an H264 macro block level code rate control method, if a code rate control switch is in an on state and a target coding code rate is larger than 0, performing the following steps when performing code rate control on a current BU unit of a current frame:
judging whether the unassigned coding rate of the current frame is less than 0;
if not less than 0, calculating the quantization value of the current BU unit of the current frame according to the coding information of the previous BU unit of the current frame and the coding information of the previous frame, wherein the quantization value of the first BU unit of the current frame is the set quantization initial value of the current frame, and the quantization initial value of the current frame is related to the average value of the quantization values of the BU units of the previous frame;
and encoding the current BU unit according to the quantized value.
Preferably, calculating the quantized value of the current BU unit of the current frame based on the coding information of the previous BU unit of the current frame and the coding information of the previous frame comprises:
calculating the SATD value of the current BU unit according to the SATD value of the previous BU unit of the current frame and the SATD value of the previous frame;
predicting the coding rate of the header information of the current BU unit according to the coding rate of the header information of the corresponding BU unit of the previous frame;
determining the coding rate of texture information of the current BU unit according to the SATD value of the current BU unit, the SATD value of the previous frame, the unassigned coding rate of the current frame and the coding rate of header information of the current BU unit;
calculating the quantization step length of the current BU unit according to the code rate quantization model coefficient, the SATD value of the current BU unit and the coding code rate of texture information of the current BU unit;
calculating the quantization value of the current BU unit according to the quantization step length;
and clamping the quantized value.
Preferably, calculating the SATD value of the current BU unit according to the SATD value of the previous BU unit of the current frame and the SATD value of the previous frame comprises:
calculating the SATD predicted value of the current BU unit according to formula 1:
k=1,SATD'p [k]=(1-b)*BUPFSATD[k]+b*BUPFSATD[k+1]
k=Nunit ,SATD'p [k]=(1-a)*BUPFSATD[k]+a*BUCFSATD[k-1]
others,SATD'p [k]=(1-a-b)*BUPFSATD[k]+a*BUCFSATD[k-1]+b*BUPFSATD[k+1]equation 1;
wherein a and b are weight coefficients respectively, Nunit BUCFSATD is the SATD value of the previous BU unit of the current frame, BUPFSATD is the SATD value of the previous frame, SATD 'for the number of BU units of the current frame'p [k]The SATD predictive value of the current BU unit, k refers to the kth BU unit;
the calculated SATD predicted value is modified according to equation 2 to obtain the SATD value of the current BU unit:
SATDp [k]=η[k]*SATD'p [k]
wherein eta k is the adjustment coefficient.
Preferably, determining the coding rate of the texture information of the current BU unit according to the SATD value of the current BU unit, the SATD value of the previous frame, the unassigned coding rate of the current frame, and the coding rate of the header information of the current BU unit, comprises:
according to equation 3, the coding rate of the current BU unit is calculated:
wherein, BUTargetButs [ k ] is the coding rate of the current BU unit, and FRAMELeftButs is the unassigned coding rate of the current frame;
according to equation 4, the coding rate of texture information of the current BU unit is calculated:
Rt [k]=max(BUTargetBits[k]-BUHeaderBits[k],BUMINTargetBits)
equation 4
Wherein R ist [k]BUHeadbits [ k ] is the coding rate of texture information of the current BU unit]BUMINTargetBIts is the minimum coding rate allocated to the preset BU unit codes for the coding rate of the header information of the current BU unit.
Preferably, calculating the quantization step size of the current BU unit according to the coding rate quantization model coefficient of the current BU unit, the SATD value of the current BU unit, and the texture information coding rate of the current BU unit, includes:
according to equation 5, the quantization step size of the current BU unit is calculated:
wherein Qstep k is the quantization step length of the current BU unit, and C k is the code rate quantization model coefficient of the current BU unit.
Preferably, the method further comprises:
after the encoding of the current BU unit is completed, the rate quantization model coefficient of the next BU unit is updated according to formula 6:
wherein C [ k+1 ]]Quantizing the model coefficients for the code rate of the next BU unit, RR,i Coding rate for the ith ROI area of the current BU unit, RN For the coding rate of non-ROI areas of the current BU unit, QPSTepR,i [k]Is the quantization step size of the i-th ROI area of the current BU unit.
Preferably, clamping the quantized value includes:
according to the quantized value of the previous BU unit and the set maximum value of the allowable quantized variation amplitude between adjacent BU units, performing first clamping processing on the quantized value;
according to the quantization initial value of the current frame and the set maximum value of the quantization variation amplitude relative to the quantization initial value, performing second clamping processing on the quantization value subjected to the first clamping processing;
and performing third clamping processing on the quantized value after the second clamping processing according to the set quantized minimum value and quantized maximum value.
Preferably, encoding the current BU unit according to the quantization value comprises:
judging whether each macro block of the current BU unit is in the ROI area or not;
for macro blocks in the ROI area, determining a quantization value corresponding to the macro blocks in the ROI area according to the quantization value of the current BU unit and the set quantization variation amplitude value of the ROI area, and encoding the macro blocks in the ROI area by using the determined quantization value, wherein the quantization variation amplitude value of the ROI area is related to the encoding code rate of the ROI area of the previous frame;
for the macro blocks outside the ROI area, determining the quantization value of the current BU unit as the quantization value corresponding to the macro blocks outside the ROI area, and encoding the macro blocks outside the ROI area using the determined quantization value.
Preferably, if the unassigned coding rate of the current frame is less than 0, calculating the quantization value of the current BU unit of the current frame according to the quantization value of the previous BU unit of the current frame and the set maximum value of the allowable quantization variation amplitude between adjacent BU units, wherein the quantization value of the first BU unit of the current frame is the set quantization initial value of the current frame, and the quantization initial value of the current frame is related to the average value of the quantization values of the BU units of the previous frame;
and encoding the current BU unit according to the quantized value.
Preferably, the method further comprises:
if the code rate control switch is in an on state and the target code rate is not more than 0, determining the quantization value of each BU unit of the current frame according to the quantization initial value of the current frame and the set amplitude value of the allowed quantization variation of the BU unit, wherein the amplitude value of the allowed quantization variation of the BU unit is determined by comparing the actual code rate of the previous frame with the target code rate;
and coding each BU unit of the current frame one by one according to the quantized value.
Preferably, the method further comprises:
if the code rate control switch is in an off state, taking the quantization initial value of the current frame as the quantization value of each BU unit of the current frame;
and coding each BU unit of the current frame one by one according to the quantized value.
The invention also constructs an H264 macro block level code rate control device, which comprises a processor, wherein the processor realizes the steps of the H264 macro block level code rate control method when running the stored computer program.
The present invention also constructs a readable storage medium storing a computer program, characterized in that the computer program when run by a processor implements the steps of the H264 macroblock level rate control method described above.
By implementing the technical scheme of the invention, if a user turns on the code rate control switch, the target code rate is set, and the unassigned code rate of the current frame is not less than 0, when the quantized value of the current BU unit of the current frame is calculated, not only the coded information of the previous frame is referenced, but also the coded information of the previous BU unit of the current frame is referenced, so that when the calculated quantized value is used for coding the current BU unit, the image matching precision is high, and the code rate control is more accurate.
Detailed Description
The following describes in detail the embodiments of the present invention with reference to the drawings.
The detailed description/examples set forth herein are specific embodiments of the invention and are intended to be illustrative and exemplary of the concepts of the invention and are not to be construed as limiting the scope of the invention. In addition to the embodiments described herein, those skilled in the art will be able to adopt other obvious solutions based on the disclosure of the claims and specification of the present application, including those adopting any obvious substitutions and modifications to the embodiments described herein, all within the scope of the present invention. It should be noted that, in the case of no conflict, the embodiments and features in the embodiments may be combined with each other, and the sequence of steps in the following embodiments is merely an example and may be adjusted in the case of no conflict.
Firstly, it is explained that the H264 macroblock-level rate control method of the present application is a VBR improvement method, which is modified based on the RC algorithm (JVT-G012) of JM19.0, and implements rate control with one macroblock line as a basic unit. Wherein, the size of one macro block line is 16 pixels wide, one macro block line is BU (Basic Unit) units, and one frame of image comprises Nunit A plurality of BU units, and Nunit Image height/16, and image height is the height of one frame of image. In addition, in one BU unit, a 16×16 pixel block is defined as one MB (macroblock), and then the number of macroblocks in one BU unit is MBPerRow.
Fig. 1 is a flowchart of an embodiment of a H264 macroblock level rate control method according to the present invention, in which, if a rate control switch is in an on state and a target coding rate is greater than 0, when rate control is performed on a current BU unit of a current frame, the following steps are performed:
s10, judging whether the unassigned coding rate of the current frame is smaller than 0, and if not, executing the step S11;
s11, calculating the quantization value of a current BU unit of the current frame according to the coding information of a previous BU unit of the current frame and the coding information of the previous frame, wherein the quantization value of the first BU unit of the current frame is a set quantization initial value of the current frame, and the quantization initial value of the current frame is related to the average value of the quantization values of all the BU units of the previous frame;
and S12, encoding the current BU unit according to the quantized value.
With respect to this embodiment, it should be noted that:
1. for a code rate control switch (rc_enable), the switch has two states of on and off, is set by a user according to the condition of network bandwidth, and is stored in a register;
2. for a target coding rate (frameTargetButs), the target coding rate is set by a user according to actual requirements and network bandwidth conditions and is stored in a register;
3. an unassigned coding rate (framerefbits) for the current frame that subtracts the number of bits that have been allocated for coding, i.e., the number of available bits for unassigned coding, for the target coding rate;
4. regarding quantization values (QPs), which reflect the spatial detail compression case, for example, if the QP is small, then a large portion of the detail is preserved; if QP increases, some detail is lost, the code rate decreases, but the image distortion increases and the quality decreases. That is, QP and bitrate are inversely proportional and this inversely proportional relationship becomes more pronounced as video source complexity increases.
5. Regarding the quantization initial value (framInitQP) of a frame, after the encoding of the previous frame is completed, the average value of the quantization values of each BU unit of the previous frame can be calculated, and then the quantization initial value of the next frame is determined according to the average value;
in this embodiment, if the user turns on the rate control switch, the target rate is set, and the unassigned coding rate of the current frame is not less than 0, when calculating the quantized value of the current BU unit of the current frame, not only the encoded information of the previous frame but also the encoded information of the previous BU unit of the current frame are referred to, so that when the calculated quantized value is used to encode the current BU unit, the image matching precision is high, and the rate control is more precise.
Further, with reference to fig. 2, step S11 includes:
s111, calculating the SATD value of the current BU unit according to the SATD value of the previous BU unit of the current frame and the SATD value of the previous frame;
in this step, there are two points to be described: 1. SATD (Sum of Absolute Transformed Difference, hadamard transformation and absolute summation) is used for replacing MAD (Sum of Absolute Difference, absolute error sum) to make BU unit complexity measure, and although the operand is increased, the image matching accuracy is high by a method; 2. and when the SATD measurement is carried out, adopting the SATD measurement BUCFSATD of the previous BU unit of the current frame and the SATD measurement BUPFSATD of the previous frame to carry out bilinear algorithm prediction.
S112, predicting the coding rate of the header information of the current BU unit according to the coding rate of the header information of the corresponding BU unit of the previous frame;
s113, determining the coding rate of texture information of the current BU unit according to the SATD value of the current BU unit, the SATD value of the previous frame, the unassigned coding rate of the current frame and the coding rate of header information of the current BU unit;
s114, calculating the quantization step length of the current BU unit according to the code rate quantization model coefficient, the SATD value of the current BU unit and the coding code rate of the texture information of the current BU unit;
s115, calculating a quantization value of the current BU unit according to the quantization step length;
in this step, the relation between the quantization step size and the quantization value may be converted according to the h.264 standard.
And S116, clamping the quantized value.
The following will describe specific embodiments of the above steps, respectively:
regarding step S111, in an alternative embodiment, the SATD value of the current BU unit is predicted by using a bilinear algorithm for the SATD value of the previous BU unit and the SATD value of the previous frame, and specifically, step S111 includes:
s1111, calculating an SATD predicted value of the current BU unit according to a formula 1:
k=1,SATD'p [k]=(1-b)*BUPFSATD[k]+b*BUPFSATD[k+1]
k=Nunit ,SATD'p [k]=(1-a)*BUPFSATD[k]+a*BUCFSATD[k-1]
others,SATD'p [k]=(1-a-b)*BUPFSATD[k]+a*BUCFSATD[k-1]+b*BUPFSATD[k+1]equation 1;
wherein a and b are weight coefficients, e.g., a=2/16, b=1/16, nunit For the number of BU units of the current frame, other indicates that k is other than 1 and Nunit, BUCFSATD is the SATD value of the previous BU unit of the current frame, BUPFSATD is the SATD value of the previous frame, SATD'p [k]The SATD predictive value of the current BU unit, k refers to the kth BU unit;
step S1112, correcting the calculated SATD predicted value according to the formula 2 to obtain the SATD value of the current BU unit:
SATDp [k]=η[k]*SATD'p [k]
wherein eta k is the adjustment coefficient.
In this step, after the SATD value of the current BU unit is obtained in step S1111SATD is scaled with eta coefficients taking into account prediction error effectsp [k]Deviation adjustment is performed, so that prediction errors can be reduced.
In addition, the coded data of one BU unit is composed of two parts: part is header information (BU header) of the BU unit; the other part is the texture information (BU texture) of the BU unit, and the prediction process of the coding rate of the header information and the texture information of the current BU unit will be described below, respectively:
with respect to step S112, in an alternative embodiment, since the information amount of the header information of the BU unit is small in duty ratio, when predicting the coding rate of the header information of the current BU unit, the real coding rate of the header information of the BU unit at the corresponding position of the previous frame may be used for prediction, i.e., the coding rate buhead bits k of the header information of the current BU unit=bupfhead bits k.
Regarding step S113, in an alternative embodiment, the prediction of the coding rate of the texture information of the current BU unit employs a simple linear model, specifically, step S113 includes:
step S1131, calculating the coding rate of the current BU unit according to a formula 3:
wherein, BUTargetButs [ k ] is the coding rate of the current BU unit, and FRAMELeftButs is the unassigned coding rate of the current frame. Regarding the framelets, it should be further noted that when implementing the rate control method of the present invention in hardware, since the last Macroblock (MB) of the previous BU unit may not have completed the encoding operation due to the hardware pipeline, the framelets do not include the last macroblock of the previous BU unit, that is, there is a delay of one macroblock in rate statistics. Thus, the true predicted value of FRAMELeftButs when it is hardware is shown in equation 3-1:
FRAMELeftBits=FRAMELeftBits-BitsMB [MBPerRow-1]equation 3-1
Wherein MBPerRow is the number of macroblocks contained in one BU unit; bitsMB [k]Representing the number of bits allocated for the encoding of k macroblocks.
Step S1132, calculating the coding rate of texture information of the current BU unit according to a formula 4:
Rt [k]=max(BUTargetBits[k]-BUHeaderBits[k],BUMINTargetBits)
equation 4
Wherein R ist [k]For the coding rate of the texture information of the current BU unit, BUMINTargetBits is the preset minimum coding rate that can be allocated to BU unit coding, and max (val 1, val 2) represents taking the larger value of both val1 and val 2.
Regarding step s114, in an alternative embodiment, a simplified linear rate quantization (rate-quantization model, R-Q) model is employed to calculate the quantization step size of the current BU unit, which is specifically:
according to equation 5, the quantization step size of the current BU unit is calculated:
wherein Qstep k is the quantization step length of the current BU unit, and C k is the code rate quantization model coefficient of the current BU unit.
Further, regarding C [ k ]]After each BU unit has been encoded, it needs to be updated. C [ k ]]The update originates from the effect of the ROI area (the image within the ROI area does not control the code rate for high fidelity requirements) on the code rate. Note that the ROI (region of intereset) area is important information in the image, and details need to be preserved, and a rectangular area with high fidelity is required in encoding. In the pair C [ k+1 ]]When calculating, the coding rate R of the ROI area can be obtainedR Coding rate R of non-ROI areaN Calculated from a simple linear model, wherein RR And R is RN Are read from a hardware internal counter.
In an alternative embodiment, after the encoding of the current BU unit is completed, the rate quantization model coefficients of the next BU unit are updated according to formula 6:
wherein C [ k+1 ]]Quantizing the model coefficients for the code rate of the next BU unit, RR,i Coding rate for the ith ROI area of the current BU unit, RN For the coding rate of non-ROI areas of the current BU unit, QPSTepR,i [k]Is the quantization step size of the i-th ROI area of the current BU unit. It should be noted that, since only up to 2 ROI areas are supported by one BU unit in hardware design, i E [1,2 ]],RR,i The coding rate of the i-th ROI area of the current BU unit is indicated. Furthermore, the ROI area coding may be enabled on or off by software roi_enable signal control. When the ROI_enable signal is off, RR The code rate is 0.
With respect to step S116, in an alternative embodiment, after the quantization value is determined according to the quantization step, it is also required to clamp it for use in coding the BU unit. The clamping process can be performed by the following three steps, resulting in a final true quantized value:
s1161, performing first clamping processing on a quantized value of a previous BU unit according to the quantized value and a set maximum value of allowable quantization variation amplitude between adjacent BU units;
in this step, the calculated quantization value is subjected to the definition of the quantization variation of the adjacent BU unit, specifically, the steps are as follows:
BUQP [ k ] = clip3 (BUQP [ k-1] -RCDDquat, BUQP [ k-1] + RCDDquat, BUQP [ k ]) formula 7-1
Wherein clip3 (min, max, val) indicates that the value val is set between min and max, RCDDquat is the maximum value of the allowable quantization variation amplitude between adjacent BU units, and is determined by software by comparing the actual encoding rate of the previous frame with the target encoding rate, and is set in a register.
S1162, performing second clamping processing on the quantized value after the first clamping processing according to the quantized initial value of the current frame and the set maximum value of the quantized variation amplitude relative to the quantized initial value;
in this step, the quantized value after the first clamp processing is limited to a quantization change corresponding to the quantized initial value, and the specific steps are:
BUQP [ k ] = clip3 (FRAMEInitQP-RCMaxQPChange, FRAMEInitQP + RCMaxQPChange, BUQP [ k ]) equation 7-2
Wherein RCMaxQPChange is the maximum value of quantization variation amplitude with respect to the quantization initial value, and is set by the user through a register.
And S1163, performing third clamping processing on the quantized value after the second clamping processing according to the set quantized minimum value and quantized maximum value.
In this step, the quantization limit value is defined for the quantized value after the second clamp processing, and the specific steps are:
BUQP [ k ] = clip3 (RCMinQP, RCMaxQP, BUQP [ k ]) equation 7-3
Wherein RCMinQP is the quantization minimum and is set by the user through a register; RCMaxQP is the maximum quantization value and is set by the user through a register.
Further, in an alternative embodiment, when the current BU unit is encoded after the quantized value of the current BU unit is determined, ROI region encoding can also be supported, specifically, step S12 includes:
s121, judging whether each macro block of the current BU unit is in an ROI area or not;
s122, for the macro block in the ROI area, determining a quantization value corresponding to the macro block in the ROI area according to the quantization value of the current BU unit and the set quantization variation amplitude value of the ROI area, and encoding the macro block in the ROI area by using the determined quantization value, wherein the quantization variation amplitude value of the ROI area is related to the encoding code rate of the ROI area of the previous frame;
in this step, the amplitude value of change (roi_qpdelta) is quantized with respect to the ROI area, which can be generated by software according to the coding rate calculation of the ROI area of the previous frame, and then configured to the hardware coding engine through a register. In one embodiment, the quantization value in the ROI area is BUQP-roi_qpdelta, so that roi_qpdelta is an adaptively variable value, which is advantageous for reducing the code rate compared to using a fixed value.
S123, for the macro blocks outside the ROI area, determining the quantized value of the current BU unit as the quantized value corresponding to the macro blocks outside the ROI area, and encoding the macro blocks outside the ROI area by using the determined quantized value.
Fig. 3 is a flowchart of a second embodiment of an H264 macroblock level rate control method according to the present invention, where the rate control method according to the embodiment includes:
s30, judging whether the code rate control switch is in an on state, if so, executing the step S20; if not, executing step S41;
s20, judging whether the target coding rate is greater than 0, if so, executing the step S10; if not, executing step S31;
s10, judging whether the unassigned coding rate of the current frame is smaller than 0, if so, executing the step S11 and the step S12; if not, step S21 is performed. It should be noted that, the steps S11 and S12 may refer to the embodiment shown in fig. 1, and are not described herein;
s21, calculating the quantization value of the current BU unit of the current frame according to the quantization value of the previous BU unit of the current frame and the set maximum value (RCDDquat) of the allowable quantization variation amplitude between the adjacent BU units, wherein the quantization value of the first BU unit of the current frame is the set quantization initial value of the current frame, and the quantization initial value of the current frame is related to the average value of the quantization values of the BU units of the previous frame;
in this step, in particular, the quantized value of the current BU unit of the current frame can be calculated according to formula 8:
BUQP [ k ] = BUQP [ k-1] + RCDDquat equation 8
And S22, encoding the current BU unit according to the quantized value.
S31, determining the quantization value of each BU unit of the current frame according to the quantization initial value of the current frame and the set amplitude value of the allowed quantization variation of the BU unit, wherein the amplitude value of the allowed quantization variation of the BU unit is determined by comparing the actual coding rate of the previous frame with the target coding rate;
in this step, in particular, the quantized values of the respective BU units of the current frame can be calculated according to formula 9:
BuQP [ k ] = min (frameIntQP+BU_delta_QP, RCMaxQP) equation 9
Where bu_delta_qp is the magnitude value that the BU unit allows for quantization of the change.
And S32, coding each BU unit of the current frame one by one according to the quantized value.
S41, taking a quantization initial value of the current frame as a quantization value of each BU unit of the current frame;
and S42, coding each BU unit of the current frame one by one according to the quantized value.
In this embodiment, there are specifically the following cases:
first case: the code rate control switch (rc_enable) is in an off state, at this time, each BU unit in the same frame encodes by using the quantization initial value of the current frame, the code rate of the macro block level is uncontrollable, but because the quantization initial value of the current frame is updated by each frame, the fixed quantization value is used by each frame in the H264 standard, and is different;
second case: the code rate control switch (rc_enable) is in an on state, but the target code rate is smaller than 0, at this time, the BU unit of each frame finely adjusts the quantized value on the basis of the quantized initial value of the current frame, namely, the quantized value obtained by using the framInitQP+BU_delta_qp is used for coding, although each frame of framInitQP and BU_delta_qp is updated, the code rate control is still limited, the code rate controller can only perform blind control, and the premise of the blind control is to ensure that moderate code rate control is performed under the condition of image definition;
third case: the code rate control switch (rc_enable) is in an on state, and a target coding code rate is correctly set, at this time, the code rate controller sequentially calculates a quantized value of each BU unit according to the sequence from 0 to N of the BU unit, and uses the quantized value corresponding to each BU unit when coding the BU unit, thereby realizing the code rate control of the macro block level. In this case, the following two cases are subdivided according to the unassigned coding rate of the current frame:
1. if the unassigned coding rate of the current frame is not less than 0, the process of rate control can be described with reference to the foregoing;
2. if the unassigned coding rate of the current frame is less than 0, it indicates that the actual coding rate of the current frame is very large and has been out of control, and at this time, the quantization value obtained by BUQP [ k-1] +RCD Dquat is used for coding.
In addition, in either of the above three cases, after the encoding of the current frame image is completed, the frame state needs to be updated, so as to be used as a reference basis for code rate control in the encoding of the next frame image, which specifically includes: update of quantization initial value of current frame, update of SATD value of previous frame.
Regarding the quantization initial value of the current frame, the update method thereof is as follows: according to equation 10, the average quantization value FrameAvrQP of each BU unit of the current frame is calculated, then rounded down, and set as the quantization initial value of the next frame
Wherein FrameAvrQP is N of the current frameunit The average quantized value of the BU units, floor () represents the value rounded down.
Regarding the SATD value of the previous frame, the updating method is as follows: the sum FRAMESATD of the SATD values of the BU units of the current frame is calculated according to equation 11 and set as the bupfsatid of the next frame.
The invention also constructs an H264 macro block level code rate control device, which comprises a processor, and the processor realizes the steps of the H264 macro block level code rate control method when running the stored computer program.
The present invention also constructs a readable storage medium storing a computer program which, when executed by a processor, implements the steps of the H264 macroblock level rate control method described above.
The above description is only of the preferred embodiments of the present invention and is not intended to limit the present invention, but various modifications and variations can be made to the present invention by those skilled in the art. Any such modifications, equivalents, and improvements that fall within the spirit and principles of the present invention are intended to be covered by the following claims.