CN104704838A - 2D block image encoding - Google Patents

2D block image encoding Download PDF

Info

Publication number
CN104704838A
CN104704838A CN201380052240.XA CN201380052240A CN104704838A CN 104704838 A CN104704838 A CN 104704838A CN 201380052240 A CN201380052240 A CN 201380052240A CN 104704838 A CN104704838 A CN 104704838A
Authority
CN
China
Prior art keywords
pixel
bit
block
coding
sample
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201380052240.XA
Other languages
Chinese (zh)
Other versions
CN104704838B (en
Inventor
亚历山大·加兰·麦金尼斯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Avago Technologies International Sales Pte Ltd
Original Assignee
Zyray Wireless Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US14/044,599 external-priority patent/US10812829B2/en
Application filed by Zyray Wireless Inc filed Critical Zyray Wireless Inc
Publication of CN104704838A publication Critical patent/CN104704838A/en
Application granted granted Critical
Publication of CN104704838B publication Critical patent/CN104704838B/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/124Quantisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • H04N19/152Data rate or code amount at the encoder output by measuring the fullness of the transmission buffer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/174Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a slice, e.g. a line of blocks or a group of blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

A coder (e.g., an encoder or decoder) implements coding of two dimensional blocks of image data using two dimensional differential pulse code modulation (2D DPCM). The coder may switch between DPCM and other types of coding, such as transform coding on a block by block basis. The 2D DPCM may obtain a reconstructed pixel within the two dimensional bloc and code a second, different, pixel within the two dimensional block using the reconstructed pixel. The coder may also create a bitstream of entropy encoded residuals that supports hybrid implicit / explicit specification of coding parameters.

Description

Two-dimensional block Image Coding
The cross reference of related application
This application claims the priority of the Provisional Application serial number 61/709,316 submitted on October 3rd, 2012, the full content of this application is incorporated herein by reference.
Technical field
The disclosure relates to image procossing.The disclosure also relates to the compression and decompression technology for image transmitting and display.
Background technology
Huge customer demand has impelled the high speed development of display technology, image analysis algorithm and the communication technology and the extensive use of complicated image display unit.Only lift a few example, the scope of this device is from driving the DVD of high resolution display of home theater and Blu-ray player to present ubiquitous smart phone and the panel computer also with very high resolution display.The raising of image processing techniques continues the function expanding these devices.
Accompanying drawing explanation
Fig. 1 shows the example architecture that coded data is sent to receiver (sink) by source (source).
Fig. 2 is an example of encoder.
Fig. 3 shows parallel processing architecture.
Fig. 4 shows an example of fallout predictor and quantizer.
Fig. 5 shows example sample position.
Fig. 6 shows the example of the coded format of compression samples.
Fig. 7 shows an example of virtual buffer model.
Fig. 8 shows an example decoder.
Fig. 9 shows the Example logic of coding.
Figure 10 shows the Example logic of decoding.
Figure 11 shows an example code and decode system.
Figure 12 shows an example of picture and image parameters collection.
Figure 13 shows another example of encoder.
Figure 14 shows another example of decoder.
Figure 15 shows the sample group of block search.
Figure 16 shows the example of indexed color history.
Figure 17 shows the example of a part for the section (slice) using subflow multiplexed.
Figure 18 shows the example of subflow de-multiplexes logical.
Figure 19 shows an example of subflow multiplexing logic.
The example that Figure 20 shows section timing and postpones.
Figure 21 shows the example of the 3x1 part SAD forming 9x1SAD.
Figure 22 shows the example of the original pixels checked for encoder flatness.
Figure 23 shows the example of the 2D block of pixel.
Figure 24 shows the example of the coding scene of the 2D block for pixel.
Figure 25 shows the example of encoder logic.
Embodiment
Fig. 1 shows the example architecture 100 that source 150 is communicated with receiver 152 by communication link 154.Source 150 or receiver 152 may reside in any device of operating and controlling image data, such as, and DVD or Blu-ray player, smart phone, panel computer or other devices arbitrarily.Source 150 can comprise the encoder 104 keeping virtual bumper 114.Receiver 152 can comprise decoder 106, memory 108 and display 110.Encoder 104 receives source data 112 (such as, source image data), and can keep the virtual bumper 114 of predetermined volumes, exports the physical buffers of data with molded or the compression of simulation temporary reservoir.Encoder 104 can also assess coded identification, to be transmitted by predetermined bit rate.Encoder 104 can assigned bit rate, only lifts two examples, in units of the bit of each pixel or in units of the bit of each chronomere.
Such as, deducted the stored count of the bit number of output by the bit number being kept for encoding, encoder 104 can deterministic bit rate.Although encoder 104 can before being transferred to memory 108 by coded data 116, use virtual bumper 114 to carry out the buffering of molded data, but the virtual bumper of predetermined volumes and output bit rate need not equal the actual capacity of any buffer in encoder or actual output bit rate.And encoder 104 in response to the exuberant degree (fullness) of virtual bumper or hollow degree, can adjust the quantization step for encoding.Below, the operation of example encoder 104 and encoder 104 is described.
Decoder 106 can obtain coded data 116 from memory 108.And decoder 106 can determine capacity and the bit rate of predetermined virtual bumper, and the quantization step of encoder 104 for this coded data 116 of encoding can be determined.When coded data 116 is decoded by decoder 106, decoder 106 can also determine the exuberant degree of virtual bumper 114 or hollow degree, and the quantization step of adjustment for decoding.That is, decoder 106 can follow the tracks of the operation of encoder 104, and determines the quantization step that encoder 104 uses.Decoder 106 pairs of coded datas 116 are decoded, and video data 118 is supplied to display 110.In some embodiments, in coded data 116, there is no quantization step, save massive band width.Example and the operation thereof of decoder 106 and encoder 104 are described below.
Memory 108 may be embodied as the memory of static RAM (SRAM), dynamic ram (DRAM), solid-state drive (SSD), hard disk or other types.Display link 154 can be wireless or wired connection or wired and combination that is wireless connections.Encoder 104, decoder 106, memory 108 and display 110 may reside in single assembly (such as, smart phone).Or the random subset of encoder 104, decoder 106, memory 108 and display 110 may reside in given device.Such as, Blu-ray player can comprise decoder 106 and memory 108, and display 110 can be point volumetric display carrying out with Blu-ray player communicating.
Fig. 2 shows the example of encoder 200.Encoder 200 pairs of video datas 202 are encoded.Such as, video data 202 can adopt series of successive frames 202 ..., the form of 202-x.Frame 202,202-x can adopt the form of the two-dimensional matrix of pixel component, this form can be represented in any color space, such as, red/green/blue (RGB), YUV, the red Cr (YCbCr) of the blue Cb/ colourity of brightness Y/ colourity, brightness Y/ colourity orange/colourity green (YCoCg), α, redness, green, blueness (ARGB) or other color spaces.Each pixel component can be corresponding with locus.Although matrix can be overlapping, to form picture, each pixel component in matrix need not be located jointly with the pixel component in other matrixes.
The value of the bit (such as, each pixel component has 8,10 or 12 bits) comprising predetermined quantity can be used, each pixel component of encoding.As an example, coding can use 10 bit YCbCr4:2:2,8 bit YCbCr 4:2:2,10 bit YCbCr 4:4:4,8 bit YCbCr 4:4:4,8 bit A RGB 32 or 8 bit RGB 24 encode.Encoder 200 can according to the pixel component of raster scan order received frame: from left to right, from top to bottom.In some implementation, video encoder 200 can receive pixel component with set rate.Set rate can be corresponding with the real-time frame of display speed per second.
Video encoder 200 can comprise input, fallout predictor & quantizer 204, map and variable length coder (VLC) 206, rate controller 208, rate buffer 210 and memory (such as, DRAM) 212.Video encoder 200 receives and encoded pixels component.Although represent that the bit number entering pixel component in video encoder 200 can constant (each pixel component), represent that the bit number of the pixel of each coding can significantly change.Encoder 200 can increase the bit number of presentation code pixel by lower quantization step-length, or reduces bit number by increasing quantization step.
Input, fallout predictor & quantizer 204 are predicted and quantizing pixel component, produce and quantize residual error.In some implementation, input, fallout predictor & quantizer 204 can by the previous coding in same number of frames (such as, 202-0) and reconstruct pixel component predict pixel component.Mapper and variable length coder 206 coded quantization residual error, produce coded-bit.
Input, fallout predictor & quantizer 204 can use predetermined initial quantization step to quantize the data of scheduled volume, such as, and video pixel data.Mapping and variable length coder 206 signal to rate controller 208, and this rate controller instructs input conversely, fallout predictor & quantizer 204 increases progressively, successively decreases or do not change quantization parameter, is described in greater detail below.
Mapping and variable length coder 206 can use the sample value of the binary value coded quantization of the complement code of its natural number 2.To map and variable length coder 206 dynamically can be determined by the combination of the nearest history of the encoded radio of same pixel component and the prefix value be associated with per unit sample for the amount of bits of each value of encoding.
Rate controller 208 is determined to increase progressively, successively decreasing still does not change quantization parameter.Rate controller 208 can perform quantization step analysis, such as, by simulating or be molded with the buffer of the predetermined volumes of predetermined bit rate assessment.Molded buffer can be called virtual bumper.If virtual bumper becomes full, so rate controller 208 can increase or increase progressively quantization step.If virtual bumper becomes empty, so rate controller 208 can reduce or decreasing quantization step size.Control relative to the speed of section below, describe its further aspect.
Rate controller 208 can determine the exuberant degree of virtual bumper, such as, by then the bit count of the input that the input amendment for being coded in determined number receives is deducted each sample the product of quantity of predetermined bit rate (bitwise) and input amendment.The quantity of input amendment can be a sample.
Decoder can be decoded to coded data from initial quantization step.When decoder is decoded to coded data, decoder can also determine the exuberant degree of virtual bumper.By observing the bit quantity for the decoded data of the amount corresponding with the quantity of input amendment of encoding, decoder can determine exuberant degree or hollow degree.Then, decoder can determine that the quantization step made at encoder 200 place determines.Therefore, encoder 200 does not need quantization step explicit transmission to any other logic in rate controller or decoder.
Fig. 3 shows parallel processing architecture 300.Demultiplexer 302 receives input pixel component 304, and each pixel component is divided into part, such as, and α 306, red 308, green 310 and blue 312.Prediction & quantize block 314,316,318 and 320 is associated with a specific composition part of pixel component.Can have any amount of this piece, these blocks can parallel work-flow.When having the form of four pixel component (such as, ARGB), the specific component of each prediction & quantize block process.When framework 300 process has the pixel component of the part more less than prediction & quantize block, then, some predictions & quantize block does not need operation, for the treatment of those pixel component.Quantification residual error can be supplied to a specific component mapper 322,324,326 and 328 by prediction & quantize block 314 – 320.Component mapper 322 – 328 can also parallel work-flow.
Mapper 322 – 328 by map quantification residual error ' E' is supplied to multiplexer 330.Multiplexer 330 by map quantification residual error ' E' is multiplexed to and is supplied in the residual error stream 332 of variable length coder 334.Or, the variable length coder be associated with each component mapper can be had, and multiplexer 330 can the quantification residual error of variable length code that exported by multiple variable length coder of multiplexing.
Fig. 4 shows the example of fallout predictor and quantizer 400.Fallout predictor and quantizer 400 comprise buffer 402, first delay logic 404 (realizing (such as) 6 sample delays), prediction engine 406 and the second delay logic 408 (realizing (such as) 3 sample delays).It is capable that buffer 402 can store previous reconstructed image.Prediction engine 406 receive current pixel component ' x', previous row reconstructed pixel component ' w', ' t', ' s', ' g' from the first delay block 404, ' c', ' b', ' d' and ' h' and reconstructed pixel ' k', ' r', ' f', ' a' from the current line left side of the second delay block 408.
In order to use the pixel component of reconstruct, and non-input pixel component, quantification residual error E' can be supplied to inverse quantizer 412 by quantizer 410.The residual error that inverse quantizer 412 inverse quantization quantizes.Reconstructed pixel ' Rx' is by quantizing residual error E' and generating from the predicted value of prediction engine.
Prediction engine 406 can comprise limit prediction engine 414, LS prediction engine 416, left prediction engine 418 and ABCD prediction engine 420.As mentioned above, prediction engine 406 predict reconstructed pixel component ' w', ' t', ' s', ' g' of previous row, ' c', ' b', ' d' and ' h' current pixel component ' x' and the reconstructed pixel on the left side of current line ' k', ' r', ' f', ' a', thus produce represent pixel component ' the residual error E of x' ".
Now, with reference to Fig. 5, describe the operation of prediction engine 406, Fig. 5 shows example pixel component 500.Prediction engine 406 can by the leftmost pixel of going together the mutually predict pixel component adaptively of the adjacent reconstructed pixel of lastrow and pixel to be predicted.Such as, prediction engine 406 can by any reconstructed pixel ' t', ' s', ' g', ' c', ' b', ' d', ' h', ' k', ' r', ' f' and the combined prediction pixel of the a' ' ' x'.
Spatial prediction selects the output of one in these four candidate prediction engines of limit prediction engine 414, LS prediction engine 416, left prediction engine 418 and ABCD prediction engine 420 as its prediction for current pixel component adaptively.Consider candidate predictor, the predicated error can determined according to the pixel component for one or more previous reconstruct, selects.This operation in the encoder and the decoder can be identical, and do not need to comprise any PREDICTIVE CONTROL information in coded data.Decoder can realize identical predictive mode algorithm, and infers the predictive mode used by encoder.Once have selected fallout predictor, predict the value of each sample with regard to the fallout predictor selected by use.Residual values E " calculates as the difference between predicted value and the sample value of reality.
LS prediction engine 416
LS prediction engine 416 can according to following content produce current sample ' the predicted value Rx of x':
ABCD prediction engine 420
ABCD prediction engine 420 can produce predicted value Px=(a+b+c+d+2)/4.This is the mean value of four adjacent samples.
Left prediction engine 418
The reconstruction value of the left pixel of current sample can be used as its predicted value by left prediction engine 418.In other words, Px='a'.
Limit prediction engine 414
Limit prediction engine 414 can use neighbor more more than LS prediction engine 416.Limit prediction engine 414 can detect current sample ' one-tenth around x' is several may the limit of angle, and in prediction, uses this side information.As an example, limit prediction engine 414 can search for level, vertical, 45 degree, 135 degree, the direction on the limit of about 22.5 degree and about 157.5 degree.Limit prediction engine 414 can be realized by two stages.First stage is that frontier inspection is surveyed.Second stage is that limit is selected.
Some can be specified to select for anticipation function.By making limit prediction engine 414 be configured with parameter (such as, NOLEFT=1), can prohibit the use reconstructed sample value by ' x' be positioned at ' x' left side ' a'.Avoid using sample ' a', can allow prediction, quantize and the inverse quantization path running more time, this can be an advantage of high throughput systems, within the system, circuit timing can cause being difficult to rapidly reconstructed sample ' a'.By making limit prediction engine 414 be configured with Parameter N OLEFT=2 (also referred to as NO2LEFT), can prohibit the use reconstructed sample value ' a' and ' f', ' a' and ' f' is two samples by ' x' be positioned at ' x' left side.This allows prediction, quantizes and the inverse quantization path running even more time.Need three clock cycle to predict in circuit timing, quantize and inverse quantization time, use NOLEFT=2, promote the throughput of each clock sample.
Can selective enabling and forbid four independent prediction engine caused listed above.For the content of some classification, by the subset of usage forecastings function, better performance can be obtained.When along limit, the upper left forecast sample of image, such as, left prediction engine 418 can be used, specify below.
NOLEFT=1 option
When NOLEFT=1, according to following content, use reconstructed sample value ' f', ' g' and ' c', by its prediction Pa replace reconstructed sample value in LS prediction engine 416, left prediction engine 418 and ABCD prediction engine 420 ' a':
NOLEFT=2 option
When NOLEFT=2, use reconstructed sample value ' r', ' s', ' g' and ' c', replace reconstructed sample value in LS prediction engine 416, left prediction engine 418 and ABCD prediction engine 420 ' f' and ' a' by its prediction Pf and Pa.' the prediction of a' can use the method identical with in NOLEFT, except according to following content by Pf replace ' except f':
Pf=(r+g+s+c+2)/4,-
The limit prediction engine of NOLEFT=0, NOLEFT=1, NOLEFT=2
When NOLEFT=0, in prediction, use left side sample, and following content can be applied in frontier inspection survey:
if((2*ABS(a-c)>6*ABS(c-b))&&2*ABS(a-c)>6*ABS(c-g)&&2*ABS(a-c)>6*ABS(a-f))
{
edgel=0;
strengthl=ABS(c-b);
}
else if(2*ABS(b-c)>6*ABS(c-a)&&2*ABS(c-d)>6*ABS(c-a)){
edgel=1;
strengthl=ABS(c-a);
}
Else
{
strengthl=max_strength;
edgel=7;
}if(2*ABS(a-g)>6*ABS(a-b)&&2*ABS(a-g)>6*ABS(f-c))
{edge2=2;
strength2=ABS(a-b);
}
else if(2*ABS(a-b)>6*ABS(a-g)&&2*ABS(a-b)>6*ABS(s-f))
{
edge2=3;
strengt 2=ABS(a-g);
}
Else
{
strength2=max_strength;
edge2=7;
}if(2*ABS(a-g)>6*ABS(a-d))
{
edge3=4;
strength3=ABS(a-d);
}
else if(2*ABS(a-b)>6*ABS(a-s))
{
edge3=5;
strength3-ABS(a-s);
}
Else
{
strength3=max_strength;
edge3=7;
}
When NOLEFT=1, in prediction, do not use left side sample, and following content can be applied in frontier inspection survey:
if((2*ABS(f-g)>6*ABS(c-g))2*ABS(f-g)>S*ABS(s-g)2*ABS(f-
6*ABS(r-f))
{
edgel=0;
strength1=ABS(c-g);
}
else if(2*ABS(g-c)>6*ABS(f-g)&&2*ABS(b-g)>6*ABS(g-f)){
edgel=1;
strength1=ABS(f-g);
}
Else
{
strengthl=max_strength;
edgel=7;
}if(2*ABS(f-s)>6*ABS(f-c)&&2*ABS(f-s)>6*ABS(r-g)){
edge2=2;
strength2=ABS(f-c);
}
else if(2*ABS(f-c)>6*ABS(s-f)&&2*ABS(f-c)>6*ABS(r-t)){
edge2=3;
strength2=ABS(s-f);
}
Else
{
strength2=max_strength;
edge2=7;
}
if(2*ABS(s-f)>6*ABS(f-b))
{
edge3=4;
strength3=ABS(f-b);
}
else if(2*ABS(f-c)>6*ABS(f-t))
{
edge3=5;
strength3=ABS(f-t);
}
Else
{
strength3=max_strength;
edge3=7;
}
When NOLEFT=2, in prediction, do not use this two left side samples, and following content can be applied in frontier inspection survey:
if((2*ABS(r-s)>6*ABS(g-s))&&2*ABS(r-s)>6*ABS(t-s)&&2*ABS(r-s)>6*ABS(k-r))
{
edgel=0;
strengthl=ABS(g-s);
}
else if(2*ABS(s-g)>6*ABS(r-s)&&2*ABS(c-s)>6*ABS(s-r)){
edgel=1;
strengthl=ABS(r-s);
}
else
{
strengthl=max_strength;
edgel=7;
}
if(2*ABS(r-t)>6*ABS(r-g)&&2*ABS(r-t)>6*ABS(k-s))
{
edge2=2;
strength2=ABS(r-g);
}
else if(2*ABS(r-g)>6*ABS(t-r)&&2*ABS(r-g)>6*ABS(k-w)){
edge2=3;
strength2=ABS(t-r);
}
Else
{
strengt 2=max_strength;
edge2=7;
}
if(2*ABS(t-r)>6*ABS(r-c))
{
edge3=4;
strengt 3=ABS(r-c);
}
else if(2*ABS(r-g)>6*ABS(r-w))
{
edge3=5;
strength3=ABS(r-w);
}
Else
{
strengt 3=max_strength;
edge3=7;
}
Parameter ' max_strength' can be defined as between two samples the maximum possible absolute value of difference.This parameter can be relevant to pixel data format, such as, for 8 Bit datas, and max_strength=255, and for 10 Bit datas, max_strength=1023.Can in the various situations of NOLEFT=0, NOLEFT=1 and NOLEFT=2, apply identical limit and select logic, except when NOLEFT=1 or NOLEFT=2, can by its predict Pa replace sample value ' a', and when NOLEFT=2, can by its predict Pf replace sample value ' beyond f':
Prediction is selected
Unit (unit) can be regarded as the logic groups of the adjacent sample of same components.Such as, cell size can be chosen as and equal 2.Cell size can be the quantity of the sample comprised by unit.In the execution mode replaced, cell size can be chosen as has value 1,3,4 or another value.In one embodiment, cell size be chosen as equal 2 time, for often pair of sample of one-component, the last to group (up to all) candidate predictor of selected by Samples Estimates of same components can be used, and for current last to performing best fallout predictor to being chosen as.Can with the out-of-alignment boundary of unit on carry out the selection of fallout predictor.Some exception can be had, under these exceptions, limit this group candidate predictor, such as, be positioned at the left side or above sample can not use time, or such as, when one or more fallout predictor can not be used.
For the pair of sample of image, such as, at two samples on the left side of the top line, left prediction engine 418 can be selected, as fallout predictor.Further, for the pair of sample of often going instead of first sample, LS prediction engine 418 can be selected.Predetermined value can be distributed for the sample value that can not be used for predicting, such as, the half of the maximum magnitude of sample value.
For other samples pair, fallout predictor can be selected according to this estimation predicated error to sample of the left side, can be calculated these by all four fallout predictors and estimate predicated error.Find current sample ' the reconstruction value of x' time, the estimation predicated error of current sample can be calculated as follows:
err_sample=ABS(x'-Px)
In above equation, Px is the predicted value of each current sample in these four fallout predictors.The predicated error of a fallout predictor is the summation of the err_sample of two samples in the pair of sample of fallout predictor.Then, selection has the fallout predictor of fallout predictor as the lower pair of sample of same components of minimum predicated error.
It should be noted that when NOLEFT=1, the predicated error of left side sample is unavailable.Suppose current sample be in Fig. 5 ' x', if so NOLEFT=0, so by the left side, this is used for current sample pair to the prediction engine that sample ' f' and ' a' selects.If NOLEFT=1, the fallout predictor selected by this right minimum predicated error of the available left side so can be used, such as, if ' x' is the second sample of this centering, so sample ' r' and ' f', if or ' x' be the first sample of this centering, so sample ' r' and ' k'.If NOLEFT=2, if ' x' is the first sample of this centering, so can use by sample ' r' and ' the fallout predictor selected of the minimum predicated error of k', if or ' x' is the second sample of this centering, so sample ' k' and the sample immediately preceding the left side thereof.Residual error or error value E " can be defined as E "=x – Px.
Can obtain as follows for the reconstructed sample value in future anticipation ' x':
x'=Px+E'*QuantDivisor;
if(x'<0)x'=0;
else if(x'>MAXVAL)x'=MAXVAL;
Limit value QuantDivisor below.MAXVAL is the maximum can encoded by unpressed video sample word length, such as, for 10 bit video, is 1023, and for 8 bit video, is 255.In one implementation, Cb and Cr is nonnegative integer.
With reference to Fig. 6, describe the operation of mapper and variable length coder 206, the figure shows the example of the sample unit 600 also referred to as unit.Mapper and variable length coder 206 can use entropy code to come to encode to the sample value of the complementary binary value using its natural number 2.Bit number for each value of encoding dynamically can be determined by the combination of the nearest history of the encoded radio of same components and the prefix value be associated with each unit 605 of sample.In some implementation, unit 605 comprises two samples 610 of certain components type, such as, and Y, Cb or Cr or α, R, G or B.In some implementations, Cb and Cr jointly encodes in a unit.An identical group component may be used for the quantity predicting bit.
Each unit 605 of sample has unit sample-size.Unit sample-size can be the size of the bit of each sample in master unit.Unit 605 sample-size can be enough large, so that encoded packets is contained in each sample in unit 505, and can be larger.The size of a sample can be for 2 the bit number of sample value of Coding complement.Such as, value 0 has size 0, and value-1 has size 1, and value-2 or 1 has size 2, and value-4 ,-3,2 or 3 has size 3, by that analogy.
Unit 605 can have maximum sample size, and this size is the maximum of the size of all samples in unit 605.Unit 605 can also have predicted size.In one implementation, if predicted size is more than or equal to maximum sample size, so unit 605 sample-size equals predicted size.In one implementation, if maximum sample size is greater than predicted size, so encoding in prefix value 612 is the difference of non-negative all the time, and maximum sample size can be used as unit 605 sample-size.In another implementation, if maximum sample size is different from predicted size, so in prefix value 612, coding can be the difference of plus or minus.Prefix value can use a primitive encoding, and such as, for the implementation of non-negative prefix value, value 0 has code 1 (binary system), and value 1 has code 01, value 2 has code 001, by that analogy.Unit sample-size is the summation of predicted size and prefix value 612.For 10 bit video, maximum possible sample-size is 10, and minimum possibility sample-size be 0, and therefore, maximum possible prefix value is 10, occupies 11 bits, that is, 00000000001.For the implementation of signed prefix value, signed prefix value can be a primitive encoding.
Predicted size can be the function of the size of the sample of previous coding.In one implementation, suppose that cell size is 2, predicted size is the mean value (by rounding up) of the size of the sample of the same components of the first two sample (such as, preceding cells).If cell size is 4, so predicted size can be the mean value of the size of four samples of the same components of preceding cells.If cell size is 3, so predicted size can be generated by the mean value of the size of latter two sample of the same components of preceding cells, thus avoids divided by 3.Or if cell size is 3, so predicted size can be generated as the weighted sum of 3 samples of the preceding cells of same components.Weighting can be (such as) (1/4,1/4,1/2).
Such as, if after quantization, the component of image impels the size of sample to be 2 for a lot of continuous print sample, and so predicted size is 2, and prefix value is 0.Therefore, prefix code is ' 1 ', and each sample uses 2 bits of encoded, and the unit of two samples has 5 bits altogether.When a transient state causes sample-size to increase suddenly, the increase of prefix value coding size.When another transient state causes sample-size to reduce suddenly, prefix value can be 0, and unit sample-size can equal predicted size, and this predicted size can exceed the size of sample in the cells, which.Therefore, even if the size of himself is less, the bit number equaling predicted size also can be used to encode each sample.After transient state, when sample-size does not have another to change, unit sample-size and predicted size are assembled again.Consider that the size of sample is different between cells, especially size not quickly frequent variations time, this technology can effectively coded samples.
Δ dimension cells variable length code (DSU-VLC) scheme promotes efficient coding at high speed and decoding in hardware, and this part is because this does not depend on that VLC shows.Determined the bit number in unit to be decoded by prefix value (counting 0) and predicted size, this can determine before coding or decoding active cell.A unit of coding or each clock of decoding is feasible, and more the method for fast decoding is also feasible.For larger throughput, coding can the multiple unit of parallel encoding.Due to a variety of causes, cell size can be chosen as and be greater than 2.Such as, when use propose cell size 2 in fact unappeasable throughput demands, larger cell size can be selected, can cell size 3 or 4 be used in this case.
Referring again to Fig. 4, quantizer 410 uses quantization parameter Quant to quantize residual error E ", this generally includes the situation of lossless coding.The scope of the value that Quant can adopt is from 0 (representative is harmless) to the value (see below) corresponding with the peak of QuantDivisor [].By the one group of example values of QuantDivisor and QuantOffset shown below, the scope of the value of Quant is from 0 to 17.
Quantizer 410 can as follows to residual values E " quantize:
Wherein, by blocking, division can be carried out, such as, the same with in ' C' language.
This group divisor can be:
int QuantDivisor[]={1,3,5,7,9,10,12,14,16,18,20,24,28,32,48,64,128,256};
The skew (round-off constant) that this group is associated can be:
int QuantOffset[]={0,1,2,3,4,4,5,6,7,8,9,11,13,15,23,31,63,127};
In this approach, have 4 odd number value divisors (3,5,7 and 9), 7 is the product of in these odd number value divisors and five other values, each be 2 power: 2**N.As a result, in one implementation, quantization function supports 4 odd number value divisors.
Use the specific value of this group of QuantDivisor [], for good compression provides low complex degree.Be multiplied by a small group optimization constant value it should be noted that can use, carry out divided by odd number in hardware.
In other embodiments, divisor can be selected, so that divisor does not have odd factor.Such as:
int QuantDivisor[]={1,2,4,8,16,32,64,128,256,512,1024,2048,4096};
int QuantOffset[]={0,0,1,3,7,15,31,63,127,255,511,1023,2047};
Speed controls
Through-rate control technology, determines the value of Quant, and rate control techniques similarly can carry out in encoder.Rate control techniques can make it determine the exuberant degree of estimating of the activity of the pixel component based on the quantification of encoding recently and buffer model.Predetermined quantity can be (such as) 3,2 or certain other number.The pixel component of the predetermined quantity of each coding can upgrade the value of Quant once.
Fig. 7 shows the example of virtual buffer model 700.Virtual buffer model 700 communicates with bitstream source 702, rate controller 208 and bit stream user 706.The behavior of virtual buffer model 700 molding rates buffer, wherein, output bit rate is nominal bit rate.Nominal bit rate in each pixel or often can be organized in the bit cell of pixel, or can in other unit, such as, and the bit of each unit interval, such as, bit per second.Bit stream user 706 can be molded the consumption of bit with nominal rated speed.Such as, bitstream source 702 can be the output of mapper and variable length coder 206.One group of pixel can comprise the pixel of predetermined quantity, such as, and 2,3,4 or certain other quantity.
When creating bit, bit enters in virtual buffer mould 700.Such as, when code set, the bit number being used for code set is added in model 700.Bit leaves virtual buffer model 700 according to predetermined scheme.Such as, the program can specify constant speed in the bit cell often organized.Virtual buffer model 700 can realize as accumulator 708, and wherein, each group adds a value, and deduct other values.Or the scheme removing bit from virtual buffer model 700 can in units of bit per second.Or being added by bit in buffer model 700 or deduct time of bit from buffer model 700 can be meticulousr or more coarse than group, and can use the structure except group, such as, sample, macroblock, section or picture.In order to the behavior of molded first in first out (FIFO) buffer, when deducting bit number (this may produce the negative value of exuberant degree in addition) from exuberant degree, the exuberant degree of virtual buffer model 700 can be fixed as 0.
When being less than or equal to the actual bit rate that removes bit in the encoder from rate buffer for the output bit rate in virtual buffer model 700 and the 700 not overflow of virtual buffer model guaranteed by rate controller 704, rate buffer also not overflow.More generally, encoder can use virtual buffer model 700 to manage the speed that encoder produces bit, can be applied to another virtual buffer model not overflow or the underflow in the bit stream of encoder after a while.The bit rate that bit leaves virtual buffer model can become any one supported value at any time.If the actual speed rate that bit leaves rate buffer equals or leaves the speed of virtual buffer model close to bit, so the bit rate of encoder can be set to the bit rate of any support by significant instant response.Because speed controls to use virtual buffer model management to produce the speed of bit, so speed control function does not need Monitor bit (n.) to leave the speed of rate buffer.
In one implementation, encoder is carried out identical speed and is controlled (RC) decision, and these determine the value or the Quant that control quantizers, and encoder does not transmit the special any bit representing quantified controlling.Speed control to depend on previous group by the estimating of intensity on the activity of the dimensional measurement of sample and the exuberant degree of virtual buffer model and (if any) limit in previous sample.Speed controls to use several configurable threshold value.Unit 605 is organized in group 710.Organize 710 for tissue samples, to promote that buffer mode and speed control.In another illustrative embodiments, decoder does not carry out the speed identical with encoder and controls to determine, and encoder transmission indicates the bit of quantified controlling at least partially.
In one implementation, encoder (comprising rate controller 208) guarantees that virtual buffer model 700 never exceeds the maximum exuberant degree of restriction, selects quantification gradation simultaneously, to make overall subjective picture quality best.Some image and bit rate can be realized with comparalive ease, and for other images and bit rate, the exuberant degree of buffer can change and once in a while close to or reach the size of virtual buffer model 700, and quantize can change and maximum permissible value can be reached once in a while.
Virtual buffer model 700 can represent the FIFO of preliminary dimension BufferSize.According to specific application, the value of BufferSize can be selected.Larger size promotes bit rate and the picture material of compressing regulation better usually, and vice versa.Larger size also represents more substantial space available in physical rate buffer and the incubation period of potential increase.In an illustrative embodiments, in the beginning of picture, buffer model 700 is initialized as sky.Or the exuberant degree of virtual buffer model 700 can remain in next picture from a picture, or can be initialized as certain other value.
When encoding to each group 710 of sample, the bit number being used for code set is added in the accumulator in virtual buffer model 700.After coding each group, from accumulator, deduct the quantity (such as, nominal bit rate) of the budget of the bit equaling each group, result is fixed as 0, to implement the exuberant degree of non-negative.Imitate in the execution mode of speed control of encoder at decoder, identical operation occurs in a decoder: when to each group of decoding, bit number group occupied adds in model, and deduct nominal bit rate, such as, the budgeted number of the bit of each group, result is fixed as 0.Like this, encoder buffer model is accurately followed the trail of for often organizing in each picture.By adjustment Quant value, rate controller 208 can ensure that the exuberant degree of buffer never exceeds the maximum of definition, such as, and buffer sizes.
In one embodiment, in the beginning of each picture, quantized value Quant is initialized as 0, corresponding with lossless coding.In another embodiment, Quant value is initialized as nonzero value.Can dynamically adjust Quant value, in order to avoid buffer model overflow, make compressed image the best in quality simultaneously.Rate control algorithm can promote, with the coding of low bit rate to difficult image, to have minimum visible quantization error, and with the coding of higher bit rate to difficult image, does not have visible quantization error.
In one embodiment, the Activity Level often organized is measured.Activity Level can be the maximum quantization residual error size of each unit in group, is multiplied by the sample number (such as, 2,3 or 4) in unit, adds 1 (corresponding with prefix value 0), and all unit in this group calculate summation.After quantization, the currency that residual error size uses Quant is quantized.As the example of 2 samples of each unit and 3 unit of each group, the bit number of sample 0 and 1 is SampleSize [0] and SampleSize [1] respectively.Suppose that the maximum of these two samples of unit 0 is MaxSizeUnit [0]=MAX (SampleSize [0], SampleSize [1]), so the Activity Level of this group is RcSizeGroup=MaxSizeUnit [0]+1+MaxSizeUnit [1]+1+MaxSizeUnit [2]+1.Another parameter (such as, BitsCodedCur) calculating the real number of the bit of encoding in last group in the example shown below also for determining that Quant value should increase, to reduce or constant.
The control that virtual buffer size is the quantization parameter Quant of the example of 16Kbits is described below.In this example, " MaxBitsPerGroup " represents often organizing the predetermined data rate in bit.Offset [] is the class value that exuberant degree according to buffer model (represented by " Buffer_fullness ", and compare with the various threshold values represented by BufTh1, BufTh2 etc.) adjusts " target_activity_level ":
//Set target number of bits per Group according to buffer fullness
if(Buffer_fullness<BufThl)
{
Target_activity_level=MaxBitsPerGroup+offset[0];
MIN_QP=minQP[0];
AX_QP=maxQP[0];
}
else if(Buffer_fullness<BufTh2)
{
Target_activity_level=MaxBitsPerGroup+offset[1];
MIN_QP=minQP[1];
MAX_QP=maxQP[l];
}
else if(Buffer_fullness<BufTh3)
{
Target_activity_level=max(0,(MaxBitsPerGroup+offset[2])),-MIN_QP=minQP[2];
MAX_QP=maxQP[2];
}
else if(Buffer_fullness<BufTh4)
{
Target_activity_level=max(0,(MaxBitsPerGroup+offset[3]
));
MIN_QP=minQP[3];
MAX_QP=maxQP[3];
}
else if(Buffer_fullness<BufTh5)
{
Target_activity_level=max(0,(MaxBitsPerGroup+offset[4]
));
MIN_QP=minQP[4];
MAX_QP=maxQP[4];
}
else if(Buffer_fullness<BufTh6)
{
Target_activity_level=max(0,(MaxBitsPerGroup+offset[5]));
MIN_QP=minQP[5];
MAX_QP=maxQP[5];
}
else if(Buffer_fullness<BufTh7)
{
Target_activity_level=max(0,(MaxBitsPerGroup+offset[6]));
MIN_QP=minQP[6];
MAX_QP=maxQP[6];
}
else if(Buffer_fullness<BufTh8)
{
Target_activity_level=raax(0,(MaxBitsPerGroup+offset[7]));
MIN_QP=minQP[7];
MAX_QP=maxQP[7];
}
else if(Buffer_fullness<BufTh9)
{
Target_activity_level=max(0,(MaxBitsPerGroup+offset[8]));
MIN_QP=minQP[8];
MAX_QP=maxQP[8];
}
else if(Buffer_fullness<BufTh 10)
{
Target_activity_level=max(0,(MaxBitsPerGroup+offset[9]));
MIN_QP=minQP[9];
MAX_QP=maxQP[9];
}
else if(Buffer_fullness<BufThll)
{
Target_activity_level=max(0,(MaxBitsPerGroup+offset[10]));
MIN_QP=minQP[10];
MAX_QP=maxQP[10];
}
else if(Buffer_fullness<BufTh l2)
{
Target_activity_level=raax(0,(MaxBitsPerGroup+offset[11]));
MIN_QP=minQP[11];
MAX_QP=maxQP[12];
}
else if(Buffer_fullness<BufThl3)
{
Target_activity_level=max(0,(MaxBitsPerGroup+offset[12]));
MIN_QP=minQP[12];
MAX_QP=maxQP[12];
}
else if(Buffer_fullness<BufThl4)
{
Target_activity_level=max(0,(MaxBitsPerGroup+offset[13]));
MIN_QP=minQP[13];
MAX_QP=maxQP[13];
}
Else
{
Target_activity_level=ma(0,(MaxBitsPerGroup+offset[14]));
MIN_QP=minQP[14];
MAX_QP=maxQP[14];
}
Can be 14 threshold values (BufTh1 is to 14) that the buffer model size of 16Kbits (16,384 bit) arranges the exuberant degree of buffer taking bit as unit, as { 1792,3584,5376,7168,8960,10752,12544,13440,14336,15232,15456,15680,15960,16240}.For Target_activity_level, 15 deviants (offset [0 to 14]) can be set, as { 20,10,0 ,-2 ,-4 ,-4 ,-8 ,-10 ,-10 ,-10 ,-10 ,-12 ,-12 ,-12 ,-12}.
By the exuberant degree of buffer of any scope by two continuous print threshold restrictions (such as, BufThl<=Buffer_fullness<BufTh2), there is the Quant scope specified by MIN_QP and MAX_QP, allow to use rate controller 208.This contributes to the change regulating Quant, and to avoid excessive quantification when buffer level is lower, and avoid when the exuberant degree of buffer is higher, surface used multipair visual quality not have helpful more low order.According to the exuberant degree grade of buffer, respectively from having example default value { 0,0,1,2,2,3,4,8,8,8,13,14,15,16, the array minQP [0to 14] of 15 values of 17} and there is example default value { 2,2,2,3,3,7,9,10,11,12, the middle selection of the array maxQP [0to 14] of 15 values of 13,14,15,16,17} be associated with each scope of buffer exuberant degree grade this to parameter MIN_QP and MAX_QP.
According to the Activity Level measured, goal activities grade, the Quant scope of permission of being specified by MIN_QP and MAX_QP and the intensity on strong limit, adjustment Quant value.When having strong limit, if Quant value is still fixed, so Activity Level significantly increases usually.By checking Activity Level and the previously Activity Level of group and the correlation of Quant of current group, rate control algorithm detects the existence on strong limit.When strong limit being detected, rate control algorithm do not increase immediately preceding the existence on strong limit after Quant value, to avoid being more prone to visible potential quantizing noise in the SPECTRAL REGION that can follow strong limit.This factor can be observed in (such as) certain cartoon content.Speed controls to increase Quant value in second group after strong limit.Below, the parameter being used as threshold value when detecting strong limit is defined as EdgeFactor in pseudo-code.
Some execution modes avoid Quant to enclose undue fluctuation high quantization is on weekly duty, and this can cause visible high-frequency quantizing noise in some images.These execution modes regulate the increase of Quant, so that when Quant value is higher, for two continuous group of pixel, Quant does not increase.There is some exception.But, once measured Activity Level is lower, just can allow to reduce Quant.Be defined as these adjustment of two state modulator of Quantlncrl_imit [0] and Quantlncrl_imit [1] in the following example; Its default value can be set to 11.In the following example, cSizeGroup represents Activity Level, and BitsCodedCur represents the actual quantity of the bit for nearest code set of encoding, and RcTgtBitsGroup represents Target_activity_level.RcTgtBitOffset [0] and RcTgtBitOffset [1] is the deviant of the scope of adjustment aim Activity Level.EdgeFactor is the parameter for detecting strong limit.The quantization step finally organized is Quant, and before joining this value for present component, it is preserved as QuantPrev.
The operation of Quant adjustment can be realized as follows:
if(RcSizeGroup<(RcTgtBitsGroup-RcTgtBitOffset[0])
&&BitsCodedCur<(RcTgtBitsGroup-RcTgtBitOffset[0]))
{QuantPrev=Quant;
Quant=MAX(MIN_QP,(Quant-U);
}
else if(BitsCodedCur>RcTgtBitsGroup+RcTgtBitOffset[1])
{if((QuantPrev==Quant&&RcSizeGroup*2<RcSizeGroupPrev*
EdgeFactor)||(QuantPrev<Quant&&RcSizeGroup<RcSizeGroupPrev*EdgeFactor&&Quant<QuantlncrLimit[0])||(Quant<QuantlncrLimit[1]))
{QuantPrev=Quant;
Quant=MI(MAX_QP,(Quant+1));}}
else QuantPrev=Quant;
The exuberant degree of buffer close to maximum allow grade time, the above Quant value determined by Activity Level can be replaced by max_QP:
if(Buffer_fullness>=BufTh_overflow_avoid)
*Quant=max_QP;
Wherein, BufTh_overflow_avoid is programmable parameter.
Fig. 8 shows example decoder 800.Decoder 800 comprises rate buffer 802, variable-length decoder (VLD) 804, fallout predictor, mapper and inverse quantizer (PMIQ) 806 and rate controller 808.Decoder 800 can be positioned at the device identical from encoder or different devices, and can receive bit stream input from any source, such as, and memory or communication interface.Such as, decoder 800 away from encoder, and can receive incoming bit stream by network interface.
Rate buffer 802 can be FIFO memory, and after encoder 800 receives data rate, this memory can temporary reservoir packed data speed.Rate buffer 802 can be integrated with the remainder of Video Decoder, or can be positioned at another module, and can with another memory pool.The size of rate buffer 802 can at least with equally large for the virtual bumper in video encoder.Such as, when video encoder uses 16kbits virtual bumper (such as, 2048 bytes), rate buffer can have identical size, that is, 2048 bytes or larger.The flow control preparing to accept can be used between rate buffer 802 and VLD 804, with when rate buffer 802 is empty, controls decode operation and hang, until have spendable data in rate buffer 802.
At any official hour, the exuberant degree of rate buffer 802 can be different from the exuberant degree of virtual buffer model.This part is because decoder virtual buffer model imitates the operation of encoder virtual buffer model, but not the operation of decoder, and the coded-bit/pixel of buffer model to specified quantity is multiplied by carries out computing to the quantity removing the pixel in group during group decoding from buffer model, but not bit arrives the actual progress of decoder at every turn.The transmission of compression bit can be molded as accurately synchronous with decompression function, and in practical operation, can with the input than this speed speed reading rate buffer 802 from memory faster or slower.Above-mentioned speed that Here it is controls the reason operated buffer model (but not to the exuberant degree of speed to buffer).
The input of VLD 804 is compression bit streams 812.Compression bit stream 812 can comprise a series of groups.These groups can comprise one group of unit.Each unit can have the sample of prefix and certain quantity, such as, and 2,3 or 4 samples.VLD 804 computing is the inverse function of variable length coder (VLC) 206 function.Input due to VLD 804 is bit stream (such as, the sample stream of VLC coding), so can perform a part or all VLD computings successively.But some VLD functions can be pipeline systems.
In one embodiment, VLD 804 uses cell size 2, that is, each unit has 2 samples.For the encoder of any Given Graph picture, the selection of cell size can be identical.The attribute of cell size normally coded bit stream.
VLD 804 decode operation needs the actual size (such as, the quantity of significance bit) determining sample in the preceding cells of the element identical with the element of current encoder, and from this information, produce the unit sample-size of prediction.This analysis can be pipeline system.VLD 804 can to the prefix decoder of each unit, the prefix of each unit can time one primitive encoding.The prefix value of just decoding adds in the sample-size value of prediction.The sample-size information table produced is shown in the quantity of the bit of each sample comprised in unit.VLD 804 extracts and equals prefix size and add that the sample-size determined is multiplied by the bit number of the sample size of each unit from incoming bit stream.Once VLD 804 extracts these bits, can by can be that the subsequent decoding step of pipeline system carries out DeMux and process to these bits.
The same with VLC, calculate the Activity Level of the current group of bit number consumed and current group and passed to rate controller 808, for carrying out speed control.VLD 804 generates the value of RcSizeGroup and BitsCodedCur, and by these value transmit to rate controller 808.
Once be extracted coded samples, these samples are just converted into suitable form, for subsequent treatment.Such as, these samples just can convert the complement code tape symbol form of 11 bits 2 to, have the sign extended of negative sample value.These constant width sample values are become the independent component stream of sample by DeMux, and are sent to fallout predictor, mapping and l-Quant (PMIQ) block 806.
Fig. 9 shows the Example logic 900 for encoding.Quantization step is initialized as 0 (902) by logic 900, then receives the unit (904) of pixel component.Logic 900 also uses quantization step to quantize, and coded quantization value (906).Logic 900 is measured the exuberant degree (908) of virtual bumper and is adjusted quantization step (910) based on the exuberant degree measured.If complete coding (912), so flowing can return (902) or terminate completely; Otherwise flowing can continue at (904) place.
Figure 10 shows the Example logic 1000 for decoding.Quantization step is initialized as 0 (1002) by logical one 000.Logical one 000 pair of coding unit decoding, and upgrade virtual bumper (1004).Logical one 000 also uses quantification step parameter to go to quantize (1006), and measures the exuberant degree (1008) of virtual bumper.And logical one 000 can based on the exuberant degree measured, adjustment quantization step (1010).Logical one 000 determines whether the decoding (1012) completing frame, if completed, so flowing can return (1002) or terminate completely; Otherwise flowing can return (1004).
Operation describes
Above description provided the example architecture supporting extra specific image processing operations.Next the introduction of some in these operations is provided.The extra framework implementation supporting image processing operations is also discussed below further.
Figure 11 shows example code and decode system 1100 based on the example of Fig. 1.System 1100 supports real-time operation.The source data 112 (such as) that can decompress in real time and enter encoder 104 according to raster scan order.Encoder 104 compress input pixel, with form bit stream and in its bit buffer unit 210 temporary reservoir partial bit stream.The output of bit buffer unit 210 is slicing layers of display stream compression (DSC) bit stream 1106.DSC bit stream 1106 can (such as) from encoder 104 real-time Transmission to decoder 106.In this respect, DSC bit stream 1106 can be transferred to decoder 106 by mass communication link 1104.A large amount of transport layer can be positioned at below communication link 1104, and communication link 1104 can comprise (such as) local high-speed bus, WiFi link, ethernet link, satellite link, honeycomb (such as, 3G or 4G/LTE) link.
DSC bit stream 1106 receives in its rate buffer 802 by decoder 106, rate buffer 802 temporary reservoir part DSC bit stream 1106.Bit decoding in decoder 106 pairs of rate buffers 802, to obtain unpressed pixel.Decoder 106 (such as) in real time and be that display 110 exports unpressed pixel according to raster scan order.The image exported from decode procedure can have identical form with the image in input coding process.
DSC bit stream can comprise the series of frames using picture layer grammatical tagging.Picture layer grammer can comprise PPS (image parameters collection) and section grammer.PPS comprises the parameter of decoder 106 for slicing layer of correctly decoding.Figure 12 shows the example of PPS 1200.
Picture layer can operate in units of whole picture.Such as, when progressive format video, picture can be frame, or when stagger scheme video, picture can be field.Each picture can comprise an integer continuous print, non-overlapped, same size, rectangle section.In encoder 104, specify section coding by this slicing layer.In decoder 106, each section can be decoded individually, and does not disturb other to cut into slices.Often row can have a section, or often row can have multiple section.When often row has multiple section, the bit covering the section of a line is multiplexed by the multiplexed process of section described below in DSC bit stream 1106.Each section can comprise a cohort group, and each group can be the group be made up of three contiguous pixels according to raster scan order.And encoder 104 can be encoded and be had each group of multiple (such as, three) entropy code, and each element has a code, and each code can be the variable-length codes (VLC) of particular type.And some groups can comprise one or more additional bit, this one or more additional bit signals specific decode operation.
Figure 13 shows another example of encoder 1300.DSC cataloged procedure generates the bit stream that accurately can meet bpp (bit of each pixel) speed of independently specifying.According to the bit of each picture point time, bpp can be specified to lead, can algorithmically specify, this is because the unit of picture point time is all identical in the input and output of encoder 1300.The bit number of each pixel or the one group of pixel of encoding can significantly change.In encoder 1300, rate buffer 1302 promotes the bits switch of variable number of each group of being used for encoding to become (such as) constant bpp to lead.For this reason, cataloged procedure comprises rate controller 1304.
Encoder 1300 can comprise color space conversion logical one 306, and such as, RGB is input to reversible YCoCg conversion logic.Input buffer 1308 stores the input of conversion.Prediction, quantification and reconstruct (PQR) logical one 310 realize the prediction of sample value and the generation of residual values.Prediction, quantification and reconstruct (PQR) logical one 310 can comprise multiple (such as, 3) fallout predictor: the median adaptive of improvement predicts (MMAP), middle point prediction (MPP) and block prediction (BP).PQR logical one 310 also realizes the quantification of residual values and the reconstruct of sample value.Also there is indexed color history (ICH) 1312, with that Δ dimension cells variable length code (DSU-VLC) can be used to implement the VLC codimg logic 1314 of entropy code is the same.Sample is supplied to flatness determination logical one 318 by input buffer 1308.It is also noted that have subflow multiplexing logic 1320, to prepare the multiplexed output stream of rate buffer 1302.
Figure 14 shows another example of decoder 1400, and this decoder is configured to decode to the view data that encoder 1300 is encoded and produce image export 1418.Decoder 1400 can realize the inverse operation performed by encoder 1300.Decoder 1400 can comprise the VLC entropy decode logic 1404 of rate buffer 1402, subflow demultiplexer 1420 and the variable length code (DSU-VLC) for Δ dimension cells.Decoder 1400 also comprises PQR logical one 406, and this logic can realize multiple (such as, 3) fallout predictor: the median adaptive of improvement predicts (MMAP), middle point prediction (MPP) and block prediction (BP).PQR logical one 406 also performs the inverse quantization of residual values and the reconstruct of sample value.Also there is ICH 1408, rate control logic 1410 and color space conversion logical one 412.Flatness instruction can use signal transmission in the bitstream from encoder, and is supplied to rate control logic 1410.
Cataloged procedure can produce the bit stream meeting the display stream encryption that HRD (hypothetical reference decoder) retrains.HRD can be the ideal model of the solution to model code device comprising rate buffer, and this model should not overflow, also not underflow.
DSC bit stream and decode procedure to promote in the hardware implementation mode of reality each clock cycle to decode 3 pixels.In other implementations, each clock of decode procedure can process the pixel of 1,3 or other quantity.By parallel encoding and the multiple section of decoding, can increase the additional throughput of the pixel of each clock, this promotes by utilizing multiple sections of often row in DSC bit stream.
Color space conversion logical one 306,1412
The rgb video be input in cataloged procedure can convert YCoCg to, for subsequent treatment.Can use can the YCoCg of inverse form, and equally, each bit number in these two chromatic components is larger in YCoCg than in RGB.When YCbCr inputs, do not need to carry out color space conversion.Reverse colors space transforming is carried out in decode procedure.
PQR logical one 319,1406
Usage forecastings coding (P pattern) or indexed color history coding (ICH pattern), to often organizing pixel coder.For P pattern, there are 3 fallout predictors: median adaptive prediction (MMAP) of improvement, block prediction (BP) and middle point prediction (MPP).Encoder can select MMAP, BP or MPP automatically at the algorithm that each middle use is identical, and not in DSC bit stream signaling select.
In encoder 1300, use each sample of selected predictor predicts.Relatively original sample value and predicted value, and quantitative differences.Then, if select P pattern, so each quantization error carries out entropy code.Encoder 1300 also performs reconstruction step, in this step, inverse quantization error is added in prediction, so that encoder can use identical reference sample.
In decoder 1400, use selected predictor predicts sample.The residual values obtained by decoding DSC bit stream is reversed quantification, and adds in prediction by result, forms reconstructed sample value.
Median adaptive prediction (MAP) can be the Forecasting Methodology used in JPEG-LS.But, carry out revising to allow decoder 1400 to process three pixels in a group simultaneously, and improve coding.Median adaptive prediction (MMAP) improved is conducive to the hardware implementation mode that decoder runs with 3 pixels/clock.MMAP is according to the reconstructed sample prediction current sample value being positioned at the left side of current sample and previous coding above.For this reason, encoder 1300 and decoder 1400 can use the reconstructed sample of identical group, and therefore, MMAP produces identical result in encoder 1300 with decoder 1400.MMAP can be default predictor, and in most cases, effective when forecast sample value.
MPP predicts current sample from the value of mid point of the effective range being approximately arranged in sample.MPP has the maximum sized advantage of restriction residual error.When the bit-depth that the bit number required for the encoding samples in the one-component of a group is more than or equal to this component deducts quantification displacement, can MPP be selected, replace MMAP.
BP predicts current sample according to the reconstructed sample being positioned at the previous coding on the current sample left side in identical scan line.Skew from current sample to fallout predictor position is BP vector.BP function is automatically determined BP vector and whether is used the decision of BP, and this BP function is identical in encoder.
Block is predicted
When being positioned at the sample on the left side of current sample in the row that predicted value is identical, block prediction can predict current sample.The relative position of reference sample can be positioned between (-3) and (-10), comprises (-3) and (-10).Use additional pixels position, can quality be improved.Relative position is the vector in the sample of going together mutually; This is called block predicted vector.
The search finding out optimal vector can be carried out on previous row sample, but not in the row of present encoding.In one implementation, block search uses each electromotive force vector with the value of the scope of from-3 to-10 to compare one group of 9 continuous print sample and reference sample.The current sample compared and reference sample are positioned at identical scan line, such as, be positioned at sample to be encoded capable on a line.For each vector considered, to current and reference group each in 9 sample calculation SAD (absolute error and).Select the vector with minimum sad value.When fettering, select the vector closest to 0.
Also use 9 pixel SAD of vector-1, to determine BP or MMAP should be used.The more details that fallout predictor is selected are provided below.
Once select, vector is just applied to often to be organized in 3 samples.Therefore, every 3 samples carry out block search.
The predicted value of vector representation pixel X is the pixel on the left side of the pixel X being located at same a line, and the distance to the left side in pixel cell equals vector value.
Figure 15 describes the example sample group 1500 of block search, shows several reference sample 1502 and vector 1504,1506.Also show current sample ' x'1506 and current SAD calculate an example of sample 1508.
Indexed color history (ICH) logical one 312,1408
Figure 16 illustrates an example of indexed color history 1600.
In the content of multiple type, such as, in the text of Practical computer teaching and figure, similar pixel value is usually quite close, simultaneously not necessarily adjacent one another are.Just because of this, keeping following the tracks of multiple most recently used pixel value in indexed color history (ICH) is can be helpful.When encoder 1300 is specific group selection ICH pattern, send index value corresponding with selected pixel value in ICH.These index values are directly used in output pixel stream.
ICH logic comprises storage element, and this storage element keeps the one group of most recently used color value using another kind of coding method (such as, predictive coding) to encode.Encoder 1300 and decoder 1400 can keep the equal state of ICH.ICH can have 32 entries, and index value points to each entry.For the group of ICH coding, each pixel can use 5 bit ICH index codings, this index point entry.Often organize pixel encode in encoder with P pattern or decode in decoder time, by the value of all pixels in group input ICH in.Can Management IC H, as shift register, wherein, (MRU) value used at most is recently at top, and least-recently-used (LRU) value is in bottom.New entry increases at top, and every other entry moves down, and bottom entries drops out from ICH.With ICH pattern to group coding time, the entry in ICH quoted in three indexes for encoding those pixel.When quoting ICH entry, this entry moves to the top of ICH, and other values on the previous position of entry move down 1.For all 3 entries of each ICH code set, walk abreast and carry out this operation, and nearest (such as, rightmost) pixel groups of this group becomes MRU.As a result, (MRU) value used at most is recently positioned at the top of history, and least-recently-used (LRU) value is positioned at the bottom of history.Whenever increase the P modal sets of three pixels at the top of history, just remove three LRU values.
For each section of the first row, all 32 ICH entries are regarded as a part for shift register.For the row after the first row section, last 7 index values are restricted to the reconstructed pixel in the row pointed on current line, but not the entry in ICH.This can be used for the pixel value of effectively encoding not in History shift register, and improves the coding of some content.
Encoder 1300 can select ICH pattern with organizing one by one.Encoder 1300 uses the escape code in brightness subflow DSU-VLC, the use of the ICH pattern of signaling group.For with each group of ICH pattern-coding, use regular length 5 bit code, be coded in each pixel in this group, wherein, index value points to history.By determining via bitstream syntax to use ICH pattern, and by reading by the value of the ICH index point of the encoded radio forming pixel, each pixel in group of decoding, thus the group decoding that decoder 1400 is encoded to each ICH.By to be inserted by P pattern pixel in ICH and by ICH entry being resequenced in response to ICH modal sets, encoder 1300 and decoder 1400 upgrade ICH state in the same manner for each group.
Entropy code logical one 314,1404
Display stream encryption qualifier method on multiple layer.Lowermost layer is called subflow layer.Can have three subflows in each section, each component has a subflow.These three subflows can multiplexed by subflow (SSM) process jointly multiplexed, to form coded slice.If often row has more than one section, the section of so encoding can be multiplexed by the multiplexed process of section; And if often row only has a section, so do not use the multiplexed process of section.The bit cascade produced of all sections, to form encoded picture.Before image parameters collection (PPS) is positioned at each encoded picture alternatively.
Subflow layer
The entropy coding of DSU-VLC is called, for the residual error be associated with predictive coding of encoding above display stream encryption can use.The ICH of pixel is encoded to the code that each pixel uses regular length.Specific value is used for the use of signaling ICH pattern, and the quantification that other code signalings are associated with the flat site of pixel adjusts.
Residual values The size of bit Represent
-3 3 101b
-2 2 10b
-1 1 1b
0 0 <empty>
1 2 01b
2 3 010b
3 3 011b
Table 1-is used for the example of the size of different residual values
Pixel in each section all can be organized into the group of three continuous print pixels.Group is the logical construction used by Code And Decode process, but does not need directly to represent in the bitstream.Sample tissue is become unit by DSU-VLC.Unit is the code set of the residual error of three continuous samples of one-component.Each unit has two parts: prefix and residual error.Based on size and any change of QP that can occur of first three residual error of same components type, predict the size of each residual error.Prefix can be the unary code of the non-negative difference represented between the size of maximum residul difference in unit and predicted size.If difference is negative, be so 0 by the value of prefix code.The residual error portion of each unit comprises 3 values, and each sample in unit has one.With the complement code of 2, residual values is encoded.The bit number distributing to residual error can change between cells; But whole 3 residual errors in a unit can distribute to the bit of equal number.
In addition, the prefix of luma unit also represents that whether ICH pattern is for each group.Can be represented by escape code from P pattern to the conversion of ICH pattern, such as, represent the prefix value being greater than the size of the maximum possible residual error size of brightness.The maximum possible residual error size of brightness depends on the QP value being applied to brightness in this group.The ICH modal sets followed closely after another ICH modal sets can be represented by the brightness prefix code comprising single " 1 " bit.The P modal sets followed closely after ICH modal sets can be represented by correction unary code.
For ICH modal sets, for each element, residual error portion can be 5 bits, and wherein, every 5 bit code are ICH indexes of coding complete pixel, and chromatic component does not use prefix.For the follow-up CH modal sets after beginning ICH modal sets, each group can be 16 bits of use each group, such as, and 1 bit prefix and (3) 5 bit ICH codes.
Brightness subflow can also comprise some fixed length codes with good conditionsi in grammer, for encoder transmission about from busy region to the information of the transition of smooth domain.Discuss in more detail below this " flatness instruction ".
Subflow is multiplexed
The subflow multiplexing scheme of the regular length not having header can be used, by together multiplexed for three element shape subflows.In U.S. Patent Publication No. 2011-0305282A1, describe a kind of technology done like this, this case is incorporated herein, with for referencial use.A mistake! Reference source not found.) Figure 17 shows the example of the result of subflow multiplexed 1700, comprises various multiplexed word and component 1702.Each multiplexed word can have identical size, such as, for 8 or 10 bits (bpc) of each component, has 48 bits, or for 12bpc, has 64 bits.From parallel substreams decoder usage data so that the order of real-time decoding, obtain the order of multiplexed word 1702.
Figure 18 shows the example of subflow de-multiplexes logical 1800.Logical one 800 comprises memory, such as, and rate buffer 1802, demultiplexer 1804 and there is the funnel shift unit 1806,1808 and 1810 of VLD.The combination of funnel shift unit and VLD is called subflow processor (SSP).Each group of time, the combination in any of SSP can ask multiplexed word or what do not ask.If receive request from SSP, so multiplexed word is sent to this SSP by demultiplexer 1804.If receive multiple request within identical group of time, so multiplexed word is sent to each SSP of the request of making by demultiplexer 1804.
At the end of section, SSP can ask multiplexed word after subflow layer data terminates.Therefore, encoder 1300 can insert the multiplexed word of filling as required at the end of section.
Figure 19 shows the example of subflow multiplexing logic 1900, comprise VLC and funnel shift unit 1902,1904,1906, balanced memory (such as, FIFO) 1908,1910,1912, multiplexer 1914, rate buffer 1916 and demultiplexer model 1918.Demultiplexer model 1918 contributes to encoder 1300 correctly orders multiplexed word.Balance FIFO 1908,1910,1912 can store the data being worth many groups, to provide multiplexed word in the suitable time.
Speed controls
Encoder 1300 and decoder 1400 can use identical speed to control (RC) algorithm, and it configures in the same manner.In the decision adjusting QP in encoder that decoder 1400 inner imitation is made by RC algorithm, so that at each pixel place, decoder 1400 has the QP value identical with encoder 1300, does not consume any bit to transmit QP value, except flatness instruction.Based on the information of precedent transmission and reception, in encoder 1300 and decoder 1400, make RC determine.RC can change the QP value often organized.
Rate control target
RC provides quantization parameter (QP), for often organizing use for encoder 1300 and decoder 1400.Because RC function is identical in coder side with decoder-side, so encoder 1300 and the known basic QP value of decoder 1400, and do not need to transmit in the bitstream.But, basic QP value or the adjustment to basic QP value can be sent in the bit stream indicated for flatness described below.
RC attempts to guarantee hypothetical reference decoder (HRD) consistency.Have the model of desirable rate buffer (FIFO), the bits switch of varying number of each group of being used for encoding is become specific constant bit rate by this model.RC is designed to guarantee this FIFO not overflow or underflow, supposes to remove bit by the constant bit rate of supposition.
RC optimizes picture quality in its QP determines.Due to perceptual masking, more smooth region uses lower QP, and use higher QP to be desirable in busy region.In addition, all pixels keep constant quality; Such as, it is desirable that the first row section has limited prediction, therefore, extra bit can be used to distribute.
HRD buffer model
The performance of the desirable rate buffer in hypothetical reference decoder (HRD) model description decode system.Encoder rate buffer model can reflect on decoder-side.Encoder model attempts to guarantee do not have overflow or underflow.Because DSC can be constant bit rate (CBR), so the exuberant degree of HRD model equals buffer size-encoder cushion exuberant degree; Therefore, decoder buffer model not overflow or underflow.DSC encoder rate buffer model can define the scheme that bit entered and left rate buffer.
During initial delay, such as, initial transmission delay, bit is generated its speed to buffer often organized by encoder, and does not remove any bit.During this, the exuberant degree of encoder model increases according to the quantity of generated bit.Such as, can according to group time or picture point time, the specified delay cycle.
As long as have pixel more how to be encoded in section, encoder just generates bit according to content.Bit is removed with the constant rate of speed of specifying.Be reduced to lower than 0 to prevent cushioning exuberant degree, usage forecastings model can have precedence over and use MPP, and this performs minimum data rate.Once encode last group section, just more bit is not added in rate buffer.Bit continues to leave rate buffer with constant rate of speed, until buffer becomes empty, then, encoder sends zero bit, and to guarantee in CBR operation, compression section size bitwise equals pixel quantity in bpp* section.
Decoder initial delay is appointed as supplementing of encoder initial delay; Such as, HRD postpones to deduct encoder initial delay.Then, codec rate cushions exuberant degree cushions exuberant degree complement code tracking as encoder.
CBR is to VBR
Under condition when the other underflow of encoder rate buffer, there is encoder and whether insert bit to prevent the design alternative of underflow, or use VBR.In order to prevent underflow, RC determines whether can have underflow after next code set, and when there is this condition, impels the MPP pattern implementing minimum bit rate.Due to decoders decode additional bit, as any other group, so decoder does not require any certain logic process filler.
Variable bit rate (VBR) can be supported.In other underflow and when not sending any bit (closedown) in some cases, by VBR, encoder 1300 stops sending bit.Then, encoder 1300 starts to send bit when having certain identification event (opening) again.In order to make switch VBR compatible with the general HRD of the real-time behavior not depending on transmission, can specify and close and open event.
In other underflow and when not sending any bit, by VBR, encoder stops sending bit.The RC process of encoder often organizes operation once.In each group, added in buffer model by the bit number of this group of coding, and usually, deduct the nominal number of the bit often organized from buffer model, this nominal number is 3*bpp, adjusts if desired, to form integer bit.By VBR, if deduct bit/group like this from the exuberant degree of buffer model, can cause the exuberant degree of negative value, so RC deducts the bit of nominal number, then, exuberant for buffering degree is fixed as 0, that is, never allow the exuberant degree of model to be negative.In the real system with real transmission and true decoder, when encoder does not send any bit, that is, when its real velocity buffer is empty, conveying does not send any bit, and decoder does not receive any bit.The real velocity buffer of decoder can be full, but not overflow.When encoder sends bit, expection is conducted through normal speed rates bit, and decoder receives bit by this speed.True buffer not overflow or the underflow of decoder, and decoder does not need to do any special thing to process VBR.Conveying should understand the time and not can be used for the valid data sending and receive.
Section
The pixel count that the bit number of encoded picture can equal this picture is multiplied by specifies bpp to lead.And, by rewriteeing each respective slice of previous version, compressing in the appropriate location in this buffer, the random subset of the section of picture can be upgraded.Result, complete picture can be transmitted, as a series of continuous print sections comprising whole picture, and the whole picture as a series of continuous print slice transmission meets and the identical requirement of section, such as, bit number equals pixel count and is multiplied by bpp and leads, and, the whole picture comprising section should meet suitable HRD model, with by this operator scheme, guarantees correct real-time buffer behavior.As a result, from be transferred to start decode delay and from terminate be transferred to terminate decoding delay mutually the same and identical for each section.
Algorithm uses the speed to buffer model that can be called rate buffer.In the ending of each section, the rate buffer of algorithm permission encoder has the exuberant degree up to specifying, such as, and maximum number bits.If in the ending of coded slice, the buffer of encoder has the bit fewer than this maximum quantity, and (such as) 0 so can be used at the end of to fill remaining bit, just in time to produce required bit number.This last bit number occupies the picture point time number of specifying, and leads transmission with the bpp by specifying.This picture point time number is the delay from end-of-encode to the end of transmission, and this can be called final transmission delay.In the combination of desirable encoder, be that the total speed to buffer of unit postpones to equal rate buffer size and leads divided by bpp with picture point time.From coded slice identical with final transmission delay to the initial transmission delay starting to transmit this section.From receive section and to be set as to the initial solution code delay (delay such as, in HRD timing model) of the section that starts to decode and to equal total end-to-end speed to buffer and postpone to deduct initial transmission delay.This allows each above description to have correct operation.
Figure 20 shows section timing and postpones the example of 2000.Figure 20 shows section input video timing 2002, slice transmission timing 2004 and slice decoder timing 2006.For can maximum number bits in encoder buffer in section ending, this algorithm can have fixing parameter value, normally ~ 4kbits.The end transmission delay produced is the function that bpp leads; This delay is set as ceil (4096/bpp_rate).By 8bpp, this delay is 170 groups of times, and by 12bpp, this delay is 114 groups of times.Initial delay can be set to this value.
End-to-end HRD postpones to equal HRD buffer size and leads divided by bpp.Such as, if HRD buffer size is 19,836 bits, and speed is 12bpp, it is floor (19,836/36)=551 groups of times that so end-to-end HRD postpones.This is actually the upper limit, and HRD postpones to be set to more low value, but if use more low value, so this algorithm can not make full use of available buffer size, for the object of RC.
Directly apply to HRD and the initial solution code delay being applied indirectly to real decoder should be set to HRD delay-initial transmission delay.In example herein, initial transmission delay is set to 114 groups of times as mentioned above, and initial decoder delay is the 551-114=437 group time.This is the delay being applied to HRD, that is, desirable hypothesis decoding device.Real decoder freely has extra delay certainly.
The rate buffer size of this algorithm is also HRD buffer size, and only otherwise exceed the ability of compliant decoder, this size just can be selected by encoder.Iptimum speed buffer size is the function of several factor, comprises bpp and leads and the width of section.
It should be noted that the initial transmission delay normally function that leads of bpp.Only otherwise exceed the ability of decoder, HRD rate buffer size just can be arranged by encoder.By adjustable bit rate and from the video in encoder to the constant end-to-end delay of the video outside decoder, and pass through from the packed data in decoder to the constant delay of the video outside decoder, design real system is practicable.Initial transmission delay and initial decoder delay can be set to selected value by encoder, to promote seamlessly to change bit rate by constant delay.
The option of section
Encoder 1300 and decoder 1400 support slice width and height widely.A configuration is slice width=1/4 picture width, slice height=32 row.Another possible configuration is slice width=picture width, slice height=8 row.Section size can be multiplied by picture height by picture width and specify.In order to reduce the excessive data needing to send as far as possible, the section of same size can be used in whole picture.
Higher section can cause better compression.Additional bit is distributed to the first row of each section, to improve quality as far as possible, and prevent the boundary place between section to have artifact.By the parameter in PPS, be arranged on the quantity of the additional bit that the first row is joined for every component.The bit number that can be used for all row after the first row of each section can reduce, and is multiplied by bpp leads so that total bit number of each section is pixel count.After the first row in each section, there is more row, just require that less reducing bit distributes.Therefore, the slice height of 32 row provides performance more better than the slice height of 8 row usually.The cost be not associated with slice height, does not additionally cushion, also without any other extra resources.Encoder 1300 and decoder 1400 support equal the section size of whole dimension of picture.
In order to respective actual object, it is desirable for having the section narrower than full screen width.Narrower section is provided and upgrades by part the ability upgrading narrower section or promote to be undertaken by low cost parallel processing.In fact, often multiple sections of row can use a line buffer, that is, the size of picture width.For multiple section of often going and the section higher than a line, the rate buffer for difference section can independently (independent).Such as, for often row 4 section, actual implementation uses 4 rate buffers.Although not exactly proportional, when iptimum speed buffer size is the function of slice width, and be generally compared with 1 situation given size of cutting into slices/going, can specify that the size of each rate buffer is less for the situation of 4 section/row.Therefore, when often row has multiple section, the total amount in rate buffer space slightly increases, and the row total amount of cushion space does not increase.
Cut into slices multiplexed
Use in the system of more than one section being configured to each scan line, can according to specific pattern multiplexed transmission of compressed data, to minimize to the greatest extent the cost of encoder.The pattern recommended is as follows.For often row integer S section, each section has often row P pixel, and picture has the width of W pixel.Preferably, P is equal for all sections, equals W/S, and it is preferably integer.The P*bpp of the first section of the bit number that multiplex bit stream comprises=the first row section leads, and the P*bpp of the second section of the first row leads, all sections of the first row by that analogy.
An iteration of this pattern has W*bpp and leads bit, and this can be the bit number that the bit number that will use with (if often row have cut into slices) is identical.If it is not integer that P*bpp leads, so can adjust, so that each section produces an integer bit.Such as, the bit number included by a line of a section can be that the integer cutoff value of P*bpp adds the accumulation residual volume previously blocked.Then, this pattern repeatedly repeatedly, to transmit all bits of all sections in the first row section.Application specification (such as, being designed to the transmission standard carrying DSC compressing image data) can carry the data of different section in the packet separated.In this case, compared with the bit of cutting into slices with other, the last bit of a section can in the packet separated with other packets of cutting into slices, and comprises the first bit immediately preceding the vertically adjacent section under first.Or, the first bit of the last bit that application specification can select encapsulation one to cut into slices and another section, such as, the neighboring slice that level is adjacent or vertically adjacent neighboring slice.For whole image, aggregated model can repeat.Do not need in the bitstream to comprise mark or instruction, represent which which bit cut into slices for.On the contrary, transfer layer can provide this designator.
The extraneous information multiplexed about section is as follows.
When forbidding VBR, section can be there is multiplexed, that is, enabling filling.When forbidding filling, the bit number of each section of encoding can change, and such as, DSC operation is VBR.Picture comprises the section of certain quantity.In the conceived case, such as, when the ratio of picture width and slice width is integer, section can have identical size.At this ratio and in non-integral situation, the col width of section can be set to the integer value that difference is no more than 1, and its summation is picture width.When also enabling VBR, also section can be carried out multiplexed.The memory used and multiplexing modes depend on the feature of link, comprise (such as) and enter or leave expense required for low power state.
By forbidding VBR (enabling filling), use the compression bit of equal number, the section of coding same widths.When slice width equals picture width, send successively slicing layer data (section 0, section 1 ... section N-1, wherein, N is the quantity of section).In slice width than picture width more in short-term, the slice of data of all sections on going together mutually can be multiplexed in the data block of regular length.The length of each data block can equal floor (bits_per_pixel*slice_width).Because bits_per_pixel can be mark, so use floor () (rounding) function downwards.Such as, when picture often row on be divided into the section of two same sizes, multiplex bit stream comprises:
To cut into slices 0 data block/1 data block of cutting into slices/0 data block of cutting into slices/1 data block of cutting into slices
Due to ceil () function, so if necessary, the final data block of so each section can be filled with 0 bit.
By enabling VBR, the bit number of each section of encoding can lead different from P*bpp.Such as, bit number can be less than this value.The bit number of each data block can be different from floor (bits_per_pixel*slice_width), and such as, bit number can be less than this value.Can use the data block of different bit number, multiplexing is cut into slices.The bit number of each data block can (such as) be indicated by the data packet length information in transport layer or marker code.
Display stream encryption can be specified according to the component being labeled as Y, Co and Cg.If convert_rgb mark equals 0 in current PPS, so encoder can accept YCbCr input.Cb component can be mapped in Co component label.Cr component can be mapped in Cg component label.In this case, the bit depth of Cb/Co and Cr/Cg component can equal Y-component, and the bits_per_component field be used in current PPS specifies the bit depth of Y-component.If convert_rgb mark equals 1 in current PPS, so encoder can carry out the Color-Space conversion from RGB to YCoCg.Color space conversion can be:
CSCCo=R–B
t=B+(cscCo>>1)
cscCg=G–t
y=t+(cscCg>>1)
Compared with Y, cscCo and cscCg value has an additional bit of dynamic range.The center of final Co and Cg value can around mid point:
Co=cscCo+(1<<bits_per_component)
Cg=cscCg+(1<<bits_per_cornponent)
It should be noted that herein, bits_per_component variable can represent each bit number in R, G and B component, and this bit number is less than the bit number of each component of Co and Cg component.If section extends beyond the right of picture, the rightmost pixel so in every row picture can repeat, section to be filled in correct horizontal size.If section extends beyond the base of picture, the pixel of the bottommost so in each pixel column of picture can repeat, section to be filled in correct vertical dimension.
Circuit holder
The compression of display stream can comprise buffer storage, for keeping the reconstructed pixel value of previous row, for MMAP prediction and ICH.In some cases, decoder line buffer can have sufficient storage, to comprise FR reconstructed sample.But some decoders the less bit depth of choice for use can reduce and realize cost.
If use less bit depth, so decoder can send this degree of depth to encoder.The curriculum offering linebuf_width that encoder can be supported according to decoder implementation.The following methods of the sample that bit can be used to reduce:
shiftAmount=MAX(0,maxBpc-linebuf_width);
round=(shif Amount>0)?(1<<(shiftAmount-1)):0;
storedSample=(sample+round)>>shiftAmount;
readSample=storedSample<<shiftAmount;
Wherein, maxBpc is the bit depth of present component, and storedSample is the sample value in write line buffer, and readSample is the value of retaking of a year or grade.
Type of prediction
Three kinds of type of prediction can be supported: MMAP, BP and MPP in P pattern.
Median adaptive prediction (MMAP) improved
Specify the median adaptive prediction improved below in the table.
c b d e
a P0 P1 P2
Table 2-surrounds the pixel of current group
Table 2 shows the mark convention of the pixel of in this set three pixels (P0, P1 and P2) of surrounding prediction.Pixel ' c', ' b', ' d' and ' e' are positioned at previous row, and pixel ' a' is the reconstructed pixel being located immediately at the left side.
Before in for following MMAP formula, QP sef-adapting filter can be applicable in the reference pixel of previous row.Horizontal low pass filter [0.250.50.25] can be applied in previous row, to obtain pixel filtC, filtB, filtD and filtE of filtration.Such as,
filtB=(c+2*b+d+2)>>2;
The pixel of filtering can mix with original pixels, to obtain for the value in MMAP (blendC, blendB, blendD, blendE).Following methods is used for mixing:
diffC=CLAMP(filtC-c,-QuantDivisor[qlevel]/2,
QuantDivisor[qlevel]/2);
blendC=c+diffC;
diffB=CLAMP(filtB-b,-QuantDivisor[qlevel]/2,
QuantDivisor[qlevel]/2);
blendB=b+diffB;
diffD=CLAMP(filtD-d,-QuantDivisor[qlevel]/2,
QuantDivisor[qlevel]/2);
blendD=d+diffD;
diffE=CLAMP(filtE-e,-QuantDivisor[qlevel]/2,
QuantDivisor[qlevel]/2);
blendE=e+diffE;
Each predicted value is provided below:
P0=CLAMP(a+blendB-blendC,MIN(a,blendB),MAX(a,blendB));
PI=CLAMP(a+blendD-blendC+R0,MIN(a,blendB,blendD),MAX(a,blendB,blendD));
P2=CLAMP(a+blendE-blendC+R0+Rl,MIN(a,blendB,blendD,blendE),MAX(a,blendB,blendD,blendE));
Wherein, R0 and R1 is the inverse quantization residual error of the first and second samples in group.
When the section of the first row, the pixel of previous row is unavailable.Therefore, the prediction of each pixel becomes:
P0=a;
PI=CLAMP(a+R0,0,(l<<maxBpc)-1);
P2=CLAMP(a+R0+Rl,0,(l<<maxBpc)-1);
Wherein, maxBpc is the bit depth of the component predicted.
Block prediction (BP)
BP predicted value is the pixel value extracted from the pixel of certain quantity on the left side being arranged in current pixel." block predicted vector " (bpVector) is the negative of the value of the quantity representing the pixel being positioned at the left side, for prediction.In one implementation, block predicted vector, all the time between-3 and-10, comprises-3 and-10, and this represents the sample using and be positioned at the outside of current group.
BP predicted value is for predicting whole three components of the pixel quoted by block predicted vector:
P[hPos]=recon[Pos+bpVector];
Therefore, the predicted value of 3x1 group is corresponding with the reconstructed pixel value of the 3x1 group pixel pointed by block predicted vector.
Middle point prediction
Mid point predicted value equals or the value of mid point close to this scope, and depend on the value of the reconstructed pixel on adjacent current pixel (in table 2, pixel " a ") left side.
midpointPred=(1<<(maxBpc-1))+(a&((1<<ql_evel)-1));
Wherein, maxBpc is the bit depth of the component predicted, and qLevel is the quantization level be applied in present component.
Prediction is selected
Block prediction is supported by encoder 1300.By the block_pred_enable in PPS signal is set to 0, encoder 1300 can select to forbid to carry out in stream block prediction (such as, because the decoder connected not backup block prediction or because picture is not benefited from block prediction).In this case, select MMAP by block prediction, and do not use algorithm in this section.
The information of previous row can be used, on the basis of group, make the decision using BP or MMAP.Contribute to realizing if this represents, so before current group of process, can make decision to wire time.The group mentioned in this section from section Far Left pixel column in the horizontal level of hPos pixel.
Figure 21 shows the example 2100 of the 3x1 part SAD forming 9x1SAD.First, can search for, to find out best block predicted vector.Reference pixel for SAD can be the group of 9 pixels in previous row, starts at the horizontal level of hPos – 6.Predict at reference pixel and 9 different masses of pixel of pointing to previous row and calculate SAD between candidateVector ' s (-1 ,-3 ,-4 ,-5 ,-6 ,-7 ,-8 ,-9 and-10).The SAD of 9 pixels is calculated as the summation (see Figure 21) of 33 pixel SAD.First, according to following formula, calculate summation in 3 pixel SAD before, each absolute difference can be blocked and be cut down:
modifedAbsDiff=MIN(absDiff>>(maxBpc-7),0x3F);
Wherein, maxBpc is the bit depth of present component.
On the often group of three adjacent samples and on 3 components, calculate the summation of the 6 bit imodifiedAbsDiff values produced, produce 10 bit values, the 3x1 part SAD of expression one-component; This 10 bit value is fixed as 9 bits (value such as, being greater than 511 is fixed as 511).Calculate the summation of 3 pixel portion SAD of three 9 bits, to obtain 9 final pixel SAD, this is 11 bit numbers.Before comparison, 3 LSB of each 9x1SAD are blocked:
bpSad[candidateVector]=MIN(511,sad3xl_0[candidateVector]+sad3xl_l[candidateVector]+sad3xl_2[candidateVector]),
99 pixel SAD compare each other, and can select minimum SAD, by selecting the block predicted vector of minimum radius, break a deadlock.If minimum SAD block predicted vector is-1, so bpCount counter reset is 0, and is this group selection MMAP.If minimum SAD block predicted vector non-1, so the BP vector of candidate becomes the vector with minimum SAD, and bpCount counter increases, unless hPos<9.
If following condition is all set up, so can BP be selected:
BpCount value is more than or equal to 3.
LastEdgeCount is less than 9.LastEdgeCount value represents the quantity of (owing to occurring " limit ") pixel of process.For any component, when ABS (current sample-remaining sample) >32<< (bits_per_component-8), " limit " occurs.
Select between BP/MMAP and MPP
If select BP/MMAP, encoder can determine whether use BP/MMAP based on the size of generated quantification residual error.Such as, encoder can be each maximum residul difference size determining BP/MMAP of these three components.If the maximum residul difference size of any component is more than or equal to the threshold value of this component, such as, maxBpc – qLevel, so can select MPP for this component.
In addition, encoder can select MPP, to implement minimum data rate, to prevent underflow.
Quantize
From corresponding input amendment, deduct the predicted value of each sample of pixel, to form residual sample value E, each component of pixel has a value.
E=x – Px, wherein, x is input, and Px is predicted value.
The division blocked by the divisor of power as 2 can be used, and use rounding up of being undertaken by the value that rounds up (that is, 1) of the half being less than divisor, quantize each residual values E.
If E<0 QE=(E-ROUND)/DIVISOR
Else QE=(E+ROUND)/DIVISOR
// "/" operator is by blocking the division carried out, the same with in C language.
Wherein:
DIVISOR=2**qLevel=1<<qLevel
ROUND=DIVISOR/2-1
For brightness and colourity, the value of qLevel can be different, and control the decision of (RC) function by speed.
Can check that MPP quantizes residual error, to guarantee that its size is no more than threshold value, such as, maxBpc – qLevel, wherein, qLevel is the quantification gradation of component type (brightness or colourity), and maxVal is the maximum possible sample value of component type.If MPP residual error exceedes this size, so this residual error can be become the nearest residual error of the size with maxBpc – qLevel by encoder.
Inverse quantization and reconstruct
Encryption equipment can follow the identical process used in a decoder, to obtain reconstructed pixel value.For the pixel using MMAP, BP or MPP prediction, reconstructed sample value can be:
reconSample=CLAMP(predSample+(quantized_residual<<qLevel),0,maxVal);
Wherein, predSample is forecast sample value, and quantized_residual quantizes residual error, and qLevel is the quantification gradation of component type (brightness or colourity), and maxVal is the maximum possible sample value of component type.
Flatness QP covers
Figure 22 shows the example 2200 of the original pixels checked for encoder flatness.If upcoming input pixel is more smooth, to allow QP to reduce fast, so encoder generates " flatness signal ".Encoder algo for determining flatness bit in grammer is described below, with encoder in order to the algorithm revised QP and follow is the same.
Encoder flatness determines
One group of 4 continuous print group is called preeminent.Before the coding, encoder checks each preeminent, to determine that (if any) those groups are " smooth ".First is preeminent with second group beginning in section shown in fig. 22.Can define preeminent continuously in section.Comprising the preeminent of last group of a line can be wrapped in around, to comprise group on follow-up row.
Can for each group be carried out flatness decision individually in preeminent, and this decision comprises the decision for " flatness type " (such as, slightly smooth or very smooth) of each group.Use the pixel of original uncompressed image, two flatness inspections can be carried out.
MAX and MIN value is determined for each component between sample shown in flatness inspection 1 in fig. 22.For each component determines flatQLevel value:
flatQLevel=MapQpToQlevel(MAX(0,masterQp-4));
The masterQp value used is the value that the speed of second group for being positioned at the preeminent left side tested controls.MasterQP value is mapped to in the qLevelY (brightness) of brightness and colourity and qLeveIC (colourity) value by MapQptoQIevel.Such as, masterQP value 0 can be mapped in qLeveIC and qLevelY value 0, value 1 and 2 can be mapped in qLeveIC value 1 and 2 respectively, and the sequential cells in masterQP increases in the unit increase that can be mapped to and replace between qLevelY and qLeveIC.
If be greater than (2<< (bits_per_component-8)) for the MAX – MIN of any component, so very smooth inspection does not check 1 by flatness; Otherwise, by this inspection.If be greater than QuantDivisor [flatQLevel] for the MAX – MIN of any component, so slightly smooth inspection does not check 1 by flatness; Otherwise, by this inspection.
If flatness checks that 1 this group of instruction is slightly smooth or very smooth, so this result is the final result for this group.If all do not passed through, carry out flatness on 6 pixels indicated so in fig. 22 and check 2.With check in 1 the same in flatness, carry out identical comparison, except calculating except MAX and MIN 6 samples (but not 4) are upper.Then, flatness checks that the final result of 2 is used as the final result of this group.
Preeminent for what specify, then, there are unevenness, slightly smooth or very smooth four flatnesses instructions.If preeminently have flatness instruction previous, so prevlsFlat value is initialized as 1; Otherwise, be initialized as 0.Following algorithm be used for by flatness information extraction in single flatness position and type:
Loop over four groups in supergroup{
If!revlsFlat&&group is either very flat or somewhat flat
Current group and flatness type is signaled
Else
prevlsFlat=0;
}
If non-selected group, so do not carry out QP amendment, and in entropy decoder, preeminent flatness_flag is set to 0.If selection group, so preeminent flatness_flag is set to 1, and with corresponding group of Signal transmissions, the same with first_flat group in the bitstream and relevant flatness_type thereof.If masterQp value is in the scope of flatness_min_qp and flatness_max_qp, so entropy coder only uses signals flatness_flag, therefore, if corresponding masterQp goes beyond the scope, so in RC, does not carry out any adjustment.
The search of encoder flatness does not cross next line.If a group in preeminent drops on next line, be not so regarded as smooth.But first group of a line can comprise next_flatness_flag syntactic element, suppose that grammer allows it at this point (see partial error! Reference source not found.)).
Flatness QP adjusts
Encoder has made identical QP adjustment to group, wherein, has made flatness instruction.It can be the flatness signal of " slightly smooth " or " very smooth " that RC receives corresponding with preeminent interior particular group.It should be noted, if current masterQp is less than 7<< (2* (bits_per_component-8)), so can suppose flatness instruction " slightly smooth ".
For the signal of " very smooth ", adjust QP as follows:
masterQp=1<<(2*(bits_per_component-8));
Signal for " slightly smooth ":
masterQp=MAX(stQp-4,0);
If particular group does not have flatness signal, so:
masterQp=stQp
If flatness QP covers the starting point that amendment masterQp, the masterQp so revised are used as the short-term rate control on the next RC cycle.
2D DPCM encodes
In example code device discussed above, encoder can carry out encode (from left to right, from top to bottom) according to raster scan order.But in another implementation, encoder operates on the sample of two dimension group.That is, encoder can be encoded according to the natural labor different from raster scan order.Such as, encoder can press in block raster scan order coding, multiple pieces according to raster order in image internal sort.Each block can have the height larger than a line and the width less than the whole width of image.Block can be square, has 4x 4, the size of 8x 8 or certain other size.This block can be called 2D block.It should be noted that encoder can use differential pulse code modulation (DPCM), for 2D block forecast.
Sample can be the component of pixel, or sample can be the entry of a matrix element of the sample of single component.If have multiple component, so the matrix of component can be consistent or inconsistent.The use of word pixel can be called sample, and the sample of different component can not be located jointly.The DPCM coding of the sample in 2D block can be encoded similar to above-mentioned DPCM, based on the sample value forecast sample of the previous coding of reconstruct, finds out the residual values of sample, quantizes residual values alternatively, and encode to generated residual values.But in 2D DPCM, the order of coded samples can follow the order defined in block, and according to selected order (such as, raster order) to block forecast.This group sample for forecast sample value in 2DDPCM can based on the sample of encoding in advance according to the sample order for 2D DPCM.Therefore, at least for some sample, can be different from the sample for raster order DPCM for this group sample predicted.Such as, block can be square, and can in each piece according to raster order to encoding samples.In this case, on the row in the block after the first row of block, when being coded in the sample on the right of block, be positioned at this sample above and the sample on the right do not encode in advance and be not useable for predicting this sample.In another example, block can be square, and can in each piece with zigzag pattern to encoding samples so that under current sample and the encoding samples on the left side before to current encoding samples, therefore, lower left corner sample can be used for prediction and can be used for predicting current sample.
Figure 23 shows the example that encoder may be used for the 2D block 2300 that 2D DPCM encodes.Such as, 2D block 2302 is blocks that 4 pixel columns are multiplied by 4 pixel columns.According to the pixel count that block comprises, the scope of 2D block can change widely.Only lift a few example, square 2D block can be 2x 2,3x 3,4x 4 or 8x 8 pixel.In other implementations, 2D block can be rectangular block 2304, triangle or circular cone 2306, L shape block 2308 and 2312, octangle block 2310 or have other non-square shapes.2D block can be rotation version each other, and can interlock the larger 2D shape of formation.Such as, L shape block 2312 and 2314 (the same with L shape block 2308 and 2316) relative to each other revolves turnback, and the orthogonal block of interlocking type.
In 2D block, encoder can according to selected order (such as, raster scan order, by vertical stripes, by staggered L shape part or any other order) to pixel coder.More specifically, by carrying out spatial color conversion, forecast sample value, generates residual values, for the some or all of pixels in 2D block carry out the quantification of residual values, and in residual values, carry out entropy code, such as, use technology discussed above, comprise the DSU-VLC for residual values, encoder can be encoded to each sample of pixel (such as, R, G and B sample).
Figure 24 shows coding scene 2400.The encoded and pixel be reconstructed in a 2D block 2402 of encoder, and the 2nd 2D block 2404 is being encoded.2nd 2D block 2404 can utilize the left neighbour reconstructed, such as, due to the formerly coding of a 2D block 2402.That is, a 2D block 2402 is encoded in encoder, and a 2D block 2402 is decoded in decoder.All pixels in one 2D block 2402 are all can be used for the neighbours to the 2nd 2D block 2404 Code And Decode, and encoder can use these pixels to predict.There are two examples in fig. 24, that is, pixel 2406 and 2408.These two pixels have reconstructed and can be used for predicting the pixel in block 2404.According to the pixel (such as, pixel 2410) in the 2nd 2D block of encoding, left neighbour comprises below the pixel that is positioned at and encoding and the pixel on the left side.Such as, pixel 2408 is positioned at below pixel 2412 and the left side.From a 2D block 2402, obtainable pixel can improve the prediction of the current pixel (such as, pixel 2412 or 2410) of encoding.
Therefore, the DPCM coding for 2D block can depend on the reconstructed pixel of the 2D block of identical 2D block (such as, pixel 2412) and previous coding or the decoding of encoding or decoding.And at 2D block 2404 inner mobile (such as) further, to pixel 2414, so cataloged procedure has the spendable reconstructed sample closely in this 2D block along with coding or decoding, such as, pixel 2416 and 2418.Therefore, 2D DPCM encodes and according to 2D bulk inner coding or decoding, but not can always depend on the reconstructed pixel outside from 2D block.And Code And Decode process can use multiple dissimilar fallout predictor, such as, MMAP and other fallout predictors discussed above.
It is also noted that about the current pixel of encoding or decoding, can predict according to multiple different directions of being specified by predicted vector.About the example that predicted vector 2420 and 2422 has been shown in pixel 2410, Figure 24.As other examples, predicted vector can be from following pixel to the current pixel processed: in current 2D block, be positioned at a pixel at top, be positioned at a pixel on the left side or be positioned at two pixels on the left side and a pixel below being positioned at the 2D block of previous coding at current 2D block.Predicted vector is not limited to these examples.
For each component of each pixel in block, the output of encoder can be each sample residual error.Such as, for each R, G and B component of each pixel, or for the component of any other color space for representing pixel, a residual error can be had.Any amount of residual error common set can be become a unit by encoder, such as, assembles the unit of the sample with 2,3,4 or certain other quantity.Encoder can carry out entropy code to residual error.
In some implementations, the sample of different component need not be located jointly.And the sample of not all must be all the part of the pixel being positioned at a physical location that is.Such as, sample can be corresponding with Bayer pattern (such as, RGBG, GRGB or RGGB pattern), wherein, and the color that each physical location is corresponding different.Therefore, 2D DPCM coding can operate the sample that all need not contribute to single physical pixel.In other words, 2D DPCM can operate the sample corresponding with single physical position, but this position does not need a part for the more large sample group (such as, R, G, B) forming the color limiting specific pixel.
An aspect of 2D block DPCM is, compared with these parameters recovered by the implicit expression of decode procedure own based on decode history in decoder, encoder can in coded bit stream explicit instruction QP, prediction or other encoding variable (such as, by sending value or the designator of these variablees).Parameter indicator can use considerably less bit for each piece, and such as, each 2D block uses 1 bit.The each piece of pixel count of bit in 2D block consumed shares cost that may be larger, therefore, makes explicit instruction quite efficient, especially when 2D block size increases.As an instantiation, for this explicit indicator, 1 bit of 8x 82D block only spends 1/64 bit per pixel.By contrast, 1 bit indicator of 8 contiguous pixels in raster scan order spends 1/8 bit per pixel.
But often when needed, encoder can use implicit expression QP and prediction.Then, when encoder determines to determine not have helpful mode to change QP, predicted vector or other parameters by history completely for decoder, encoder can in the cost-efficient mode of bit by explicit for bit insertion bit stream, to notify the QP that decoder is new or other parameter values.This provide a kind of implicit/explicit signaling of mixing of QP, prediction and other parameters.
As an instantiation, encoder can use (such as) each 2D block operator scheme position, whether should continue implicit expression obtain parameter to indicate decoder.Such as, when setting operation pattern position, decoder can continue implicit expression determination parameter.But when removing bit, encoder can provide parameter indicator in the bitstream, and the implicit expression of the decoder covering (override) or revise this 2D block operates.Parameter indicator can (as an example) be explicit QP value, raising or reduce the instruction of QP, the designator opening or closing block prediction or the explicit value of predicted vector.
Another aspect of 2D block DPCM to benefit from the prediction of better block.In picture, by specifying or point to the formerly block of the 2D block that be used for predicting present encoding, picture intra-prediction vector contributes to the prediction of 2D block.Utilize 2D DPCM, can allocation bit to specify predicted vector.By all bits in 2D block are shared, the cost of the predicted vector in Explicit designation bit stream can have enough low bit cost, to make bit consumption accept, for using explicit predicted vector.
Encoder can use DPCM to predict each pixel in 2D block, and at least partly according to the value of other pixels in identical 2D block, can predict the some or all of pixels in the multiple pixels in 2D block.This can produce than better quality compression of encoding based on the coding converted or conversion bypass.In various execution mode of the present disclosure, at least some that quantification can be applied in block or much pixel.
The two dimension of the pixel in 2D block arranges the little spatial dimension producing two-dimensional block.This spatial dimension is easy to produce effective Image Coding, simultaneously with from having compared with the pixel that obtains in the one dimension block of same range, each piece of pixel with larger quantity.As mentioned above, the pixel of the larger quantity of each piece shares the bit cost of the bit being used to indicate the information relevant to the coding of block, such as, and the bit of instruction QP and PREDICTIVE CONTROL.
As mentioned above, in one implementation, for 2D block of pixels, (or multiple) position of each piece uses the prediction of instruction implicit expression or explicit prediction to this block.If use explicit prediction, so another or multiple instructions use which kind of type of prediction and pattern to this block.The type that can indicate and model comprise (as an example) spatial prediction and block prediction.Spatial prediction can to AVC and/or H.264 in the spatial prediction that specifies similar.Can also block be only used to predict.Or explicit prediction can only use block to predict.It should be noted that implicit expression prediction can use the form of the spatial prediction of each sample, such as, the prediction described above with reference to Fig. 4 and Fig. 5.
Encoded by DPCM, encoder can combination block prediction and two-dimentional DPCM and explicit prediction and/or mixing Implicit-Explicit be predicted.And, encoder can will use DPCM to some 2D blocks and use transition coding to other 2D blocks, and according to the content of particular type or send signal by peripheral control unit, (such as, one by one block ground) switches between both as required.Transition coding can usage space and/or block prediction, each piece select a type, then, transform and quantization is carried out to residual error, and carries out entropy code.And in some implementations, encoder can switch between 2D block and 1D group pixel (such as, above-mentioned 1x 3 " block "), such as, the end of one group of row in the picture.And as mentioned above, encoder can use indexed color history (ICH) to the some or all of pixel in 2D block or encoding samples.
In other implementations, encoder can switch between the 2D block of different size.Such as, encoder can switch from the 4x 4 pieces of each group for having 4 image lines, is switched to the 16x 16 pieces of the difference group for having 16 image lines, and is switched to the 8x 8 pieces of the still different groups for having 8 image lines.And in given 2D block, encoder can based on subblock coding.Such as, 4 4x 4 sub-blocks can be defined in 8x 8 pieces.Encoder can select the coding techniques of any expectation for each 4x 4 sub-block body, such as, and 2D DPCM, transition coding or other coding techniquess.
Encoder can also strengthen DSU-VLC for transition coding.Adopt given 2D block size, such as, 4x 4.After transform and quantization, encoder has the quantized value of 4x 4 array.These quantized values can be sorted by selected scanning sequency by this array, and convert one dimension Serial No. to, such as, and 16 numerals of 4x 4 array.
Then, these numerals can be arranged in the group of all 16 samples covered in Serial No. according to selected order by encoder.Packet size can be consistent between 2D block.Such as, packet size can be a DC component of each 2D block, and another packet size can be 6 high fdrequency components of each 2D block.There are a variety of modes comprising all residual errors, the example using 5 to organize for 16 residual errors is { 1}, { 2:4}, { 5:8}, { 9:12}, { 13:16}, and the example using 4 to organize is { 1}, { 2:5}, { 6:10}, { 11:16}, wherein, the numeral in braces is according to the quantization conversion coefficient of scanning sequency.
Then, encoder can use DSU-VLC to each group coding.Therefore, such as, these groups can comprise the group as the DC component value with obvious nonzero value.The group of last several can be the high frequency item with null value.Middle groups can have the intermediate frequency item comprising median.Enhancement mode DSU-VLC can use same components in first code set to a group coding.Such as, according to the size of previous DC component group prediction DC component group, then can determine that prediction (Δ size) is poor, and use variable-length codes to residual coding.Such as, can according to the size of the previous high frequency group prediction high frequency group of same components.
Figure 25 shows an example of encoder logic 2500.Encoder logic 2500 obtains image (2502) to be encoded.Such as, this image can be stored in the buffer for encoder, or this image can flow in encoder.Encoder logic determines that 2D block configures, for coded image (2502).Such as, the configuration of 2D block can be 2x 2,4x 4,8x 8, rectangle or other 2D blocks.Encoder logic 2500 also determine to 2D block (2506) use in potential several different coding techniques which.
When selecting DPCM, the 2D DPCM of the block of the picture content in encoder logic 2500 carries out image encodes (2508).As an example, component can be color space component, such as, and R, G, B component of single pixel or independent component (such as, Bayer mode component).Coding can comprise: use reconstructed image in block usually to encode to other pixels (2510) in identical 2D block, and uses the reconstruct neighbor of the 2D block of previous coding to come pixel (2512) coding in 2D block.But as mentioned above, encoder can switch between the different coding technology for 2D block.As another example, transition coding (such as, discrete cosine transform (DCT) coding) can be applied to specific 2D block (2514) by encoder logic 2500.
Encoder logic 2500 generates the bit stream (2516) of coded image.In this respect, such as, bit stream can comprise the residual error of entropy code.As mentioned above, DSU-VLC encodes, and comprises the DSU-VLC coding carried out according to the predetermined packet size of the sample covered in 2D block, can produce the residual error of entropy code.It is also noted that encoder logic 2500 also produces bit stream as mixing implicit/explicit coded bit stream.
In this respect, operator scheme position can be inserted and is used for encoding in the bit stream of 2D block by encoder logic 2500, and this operator scheme position carries out distinguishing (2518) between implicit expression coding parameter determines and explicit code parameter determines.Such as, coding parameter designator by the operator scheme bit clear in bit stream, to select explicit code parameter to determine, and can insert in bit stream by encoder logic 2500.By adjusting the coding parameter be defined as in bit stream, explicit code parameter determines the adjustment that can comprise implicit expression determination parameter value.Coding parameter can comprise quantization parameter designator, predicted vector designator or other parameters.And, encoder logic 2500 can in bit stream setting operation pattern position, determine to select implicit expression coding parameter.
Said method, device and logic can be realized in the multiple different mode of multiple various combinations of hardware, software or hardware and software.Such as, the all or part of circuit that can comprise in controller, microprocessor or application-specific integrated circuit (ASIC) (ASIC) of system, or the combination can passing through the analog or digital circuit of discrete logic or element or other types realizes, and combines on a single integrated circuit or distributes among multiple integrated circuit.Above-mentioned all or part logic can realize as instruction, for being performed by processor, controller or other processing unit, and can be stored in tangible or permanent machine readable or computer-readable medium, such as, flash memory, random access memory (RAM) or read-only memory (ROM), EPROM (Erasable Programmable Read Only Memory) (EPROM) or other machines computer-readable recording medium (such as, compact disc read-only memory (CDROM) or disk or CD)).Therefore, the computer-readable instruction that the products such as computer program can comprise storage medium and store on the medium, when performing in end points, computer system or other devices, these instructions impel device to describe executable operations more than any.
The disposal ability of system can be distributed between multiple system element, such as, between multiple processor and memory, comprises the treatment system of multiple distribution alternatively.Parameter, database and other data structures can store individually and manage, can be included in single memory or database, logically and physically can be organized by multiple different mode, and can be accomplished in several ways, comprise data structure, such as, chained list, Hash table or implicit storage mechanisms.Program can be single program, single program a part (such as, subprogram), be distributed on several memory and processor, or realized by multiple different mode, such as, in the mode of program library, such as, shared library (such as, dynamic link library (DLL)).Such as, DLL can store the code performing above-mentioned any system process.
The various implementation of special description.But, other implementations a lot of can also be had.
Such as, in method and system, coding can comprise:
Determine entropy code residual values in an encoding process; And
Produce the bit stream comprising this entropy code residual values.
And producing bit stream can comprise:
Produce mixing implicit expression/code displaying bit stream.
Another implementation of system comprises:
Buffer, is configured to the view data of memory image; And
Codimg logic, communicates with described buffer, and is configured to:
A) between view data, the first two-dimensional block is determined;
Use two dimensional difference pulse-code modulation to the first two-dimensional pixel block forecast, comprising:
Obtain the reconstructed pixel in the first two-dimensional block; And
Use reconstructed pixel, to the second different pixels coding in the first two-dimensional block;
B) between view data, the second two-dimensional block is determined;
C) use transition coding technology to described second two-dimensional pixel block forecast;
D) residual values of two dimensional difference pulse-code modulation coding and the entropy code for transition coding is determined; And
E) bit stream comprising the residual values of entropy code is produced.
Bit stream can comprise:
For the first operator scheme position of the first two-dimensional block, described first operator scheme is configured to select the implicit mode of coding parameter to determine;
For the second operator scheme position of the second two-dimensional block, described second operator scheme position is configured to select the explicit mode of coding parameter to determine; And
Coding parameter designator, is associated with the second two-dimensional block.
Bit stream can also comprise:
First coded indicator, specifies the two dimensional difference pulse-code modulation being used for the first two-dimensional block; And
Second coded indicator, specifies the transition coding being used for the second two-dimensional block.

Claims (15)

1. a method, comprising:
Determine the two-dimensional block in image, for described Image Coding; And
Use two dimensional difference pulse-code modulation to the pixel coder in described two-dimensional block.
2. method according to claim 1, wherein, coding comprises:
Obtain the reconstructed pixel in two-dimensional block; And
Use described reconstructed pixel to the second different pixels coding in described two-dimensional block.
3. method according to claim 2, wherein, coding comprises:
Reconstructed pixel is obtained from the different two-dimensional block in described image; And
Use described reconstructed pixel to the second different pixels coding in described two-dimensional block.
4. method according to claim 1, wherein, coding comprises:
Reconstructed pixel is obtained from the different two-dimensional block in described image; And
Use described reconstructed pixel to the second different pixels coding in two-dimensional block.
5. method according to claim 1, comprises further:
Produce mixing implicit/explicit bit stream by being inserted in bit stream operator scheme position, described operator scheme position determines implicit expression coding parameter and explicit code parameter determines to distinguish.
6. method according to claim 5, wherein, insertion comprises:
The operator scheme position be worth selected by having is inserted in described bit stream, determines to select explicit code parameter; And
Coding parameter designator is inserted in described bit stream.
7. method according to claim 6, wherein, insert described coding parameter and comprise:
Insert quantize parameter indicator, predicted vector parameter or both.
8. method according to claim 1, comprises further:
Use the two-dimensional encoded technology except two dimensional difference pulse-code modulation, to the different two-dimensional pixel block forecast in described image.
9. method according to claim 1, wherein, coding comprises described two-dimensional pixel block forecast, decodes or both to described two-dimensional block.
10. a system, comprising:
Buffer, is configured to the view data of memory image; And
Codimg logic, communicates with described buffer, and is configured to:
The first two-dimensional block is determined in described view data; And
Use two dimensional difference pulse-code modulation to described first two-dimensional pixel block forecast.
11. systems according to claim 10, wherein:
Described first two-dimensional block comprises multirow and multiple row.
12. systems according to claim 10, wherein, described codimg logic is configured to further:
Obtain the reconstructed pixel in the first two-dimensional block; And
Use described reconstructed pixel to the second different pixels coding in described first two-dimensional block.
13. systems according to claim 10, wherein, described codimg logic is configured to further:
Reconstructed pixel is obtained from the different two-dimensional block of second in described image; And
Use described reconstructed pixel to the second different pixels coding in the first two-dimensional block.
14. systems according to claim 10, wherein, described codimg logic is configured to further:
Produce bit stream, described bit stream comprises:
By the coding result that described two dimensional difference pulse-code modulation obtains; And
The decision of implicit expression coding parameter and explicit code parameter are determined to the operator scheme position distinguished.
15. systems according to claim 14, wherein, described bit stream comprises further:
Specify the explicit code parameter indicator of quantization parameter, predicted vector or the change of both.
CN201380052240.XA 2012-10-03 2013-10-03 two-dimensional block image coding Active CN104704838B (en)

Applications Claiming Priority (17)

Application Number Priority Date Filing Date Title
US201261709316P 2012-10-03 2012-10-03
US61/709,316 2012-10-03
US201361764807P 2013-02-14 2013-02-14
US201361764891P 2013-02-14 2013-02-14
US61/764,891 2013-02-14
US61/764,807 2013-02-14
US201361770979P 2013-02-28 2013-02-28
US61/770,979 2013-02-28
US201361810126P 2013-04-09 2013-04-09
US61/810,126 2013-04-09
US201361820967P 2013-05-08 2013-05-08
US61/820,967 2013-05-08
US201361856302P 2013-07-19 2013-07-19
US61/856,302 2013-07-19
US14/044,599 2013-10-02
US14/044,599 US10812829B2 (en) 2012-10-03 2013-10-02 2D block image encoding
PCT/US2013/063237 WO2014055745A1 (en) 2012-10-03 2013-10-03 2d block image encoding

Publications (2)

Publication Number Publication Date
CN104704838A true CN104704838A (en) 2015-06-10
CN104704838B CN104704838B (en) 2018-03-27

Family

ID=50435429

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201380052240.XA Active CN104704838B (en) 2012-10-03 2013-10-03 two-dimensional block image coding
CN201380052238.2A Active CN104718753B (en) 2012-10-03 2013-10-03 Compressed using the bounded rate of chipping rate control

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201380052238.2A Active CN104718753B (en) 2012-10-03 2013-10-03 Compressed using the bounded rate of chipping rate control

Country Status (4)

Country Link
EP (2) EP2904796B1 (en)
CN (2) CN104704838B (en)
HK (2) HK1207771A1 (en)
WO (2) WO2014055745A1 (en)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108322753A (en) * 2017-01-15 2018-07-24 上海天荷电子信息有限公司 Dynamic adjusts the data compression method and device of the element of nearest coding parameter array
CN113826383A (en) * 2019-05-13 2021-12-21 北京字节跳动网络技术有限公司 Block dimension setting for transform skip mode
US11546595B2 (en) 2019-05-22 2023-01-03 Beijing Bytedance Network Technology Co., Ltd. Sub-block based use of transform skip mode

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10855989B2 (en) * 2016-06-09 2020-12-01 Qualcomm Incorporated Substream multiplexing for display stream compression
CN108156466B (en) * 2017-12-28 2021-08-13 上海通途半导体科技有限公司 Image compression method and system and MEMC framework applied by same
FR3088511B1 (en) 2018-11-09 2021-05-28 Fond B Com AT LEAST ONE IMAGE DECODING PROCESS, CODING PROCEDURE, DEVICES, SIGNAL AND CORRESPONDING COMPUTER PROGRAMS.
CN112235568B (en) * 2019-07-15 2024-03-26 华为技术有限公司 Image encoding method, decoding method, device and storage medium
TWI741919B (en) * 2020-01-15 2021-10-01 瑞鼎科技股份有限公司 Stream decompression circuit
GB2601504B (en) * 2020-12-01 2023-03-29 Imagination Tech Ltd Data compression and packing
GB2601503B (en) * 2020-12-01 2023-03-29 Imagination Tech Ltd Data compression and packing

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0720379A2 (en) * 1994-12-28 1996-07-03 Canon Kabushiki Kaisha Encoding method and device therefor
WO2002007447A1 (en) * 2000-07-14 2002-01-24 Sony United Kingdom Limited Data encoding apparatus with multiple encoders
CN101416512A (en) * 2006-04-07 2009-04-22 微软公司 Quantization adjustment based on texture level
US20090135921A1 (en) * 2007-11-28 2009-05-28 Shawmin Lei Two-Dimensional DPCM with PCM Escape Mode
WO2011115659A1 (en) * 2010-03-16 2011-09-22 Thomson Licensing Methods and apparatus for implicit adaptive motion vector predictor selection for video encoding and decoding

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4821119A (en) 1988-05-04 1989-04-11 Bell Communications Research, Inc. Method and apparatus for low bit-rate interframe video coding
JPH0714209B2 (en) * 1989-12-20 1995-02-15 松下電器産業株式会社 Video coding device
EP0495490B1 (en) 1991-01-17 1998-05-27 Mitsubishi Denki Kabushiki Kaisha Video signal encoding apparatus
JP3749752B2 (en) * 1995-03-24 2006-03-01 アイティーティー・マニュファクチャリング・エンタープライジズ・インコーポレーテッド Block adaptive differential pulse code modulation system
US5650860A (en) * 1995-12-26 1997-07-22 C-Cube Microsystems, Inc. Adaptive quantization
US6366614B1 (en) * 1996-10-11 2002-04-02 Qualcomm Inc. Adaptive rate control for digital video compression
US6853385B1 (en) * 1999-11-09 2005-02-08 Broadcom Corporation Video, audio and graphics decode, composite and display system
GB2346282B (en) * 1999-01-28 2003-02-19 Snell & Wilcox Ltd Bit rate control in compression encoding
GB2387056A (en) * 2002-03-28 2003-10-01 Sony Uk Ltd Differential encoding and decoding
US7383180B2 (en) 2003-07-18 2008-06-03 Microsoft Corporation Constant bitrate media encoding techniques
US8582659B2 (en) * 2003-09-07 2013-11-12 Microsoft Corporation Determining a decoding time stamp from buffer fullness
US7697608B2 (en) 2004-02-03 2010-04-13 Sony Corporation Scalable MPEG video/macro block rate control
US20060227870A1 (en) * 2005-03-10 2006-10-12 Tao Tian Context-adaptive bandwidth adjustment in video rate control
KR101312260B1 (en) * 2007-01-19 2013-09-25 삼성전자주식회사 The method and apparatus for compressing and restoring edge position image effectively
JP5879555B2 (en) * 2010-05-10 2016-03-08 パナソニックIpマネジメント株式会社 Video encoding device

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0720379A2 (en) * 1994-12-28 1996-07-03 Canon Kabushiki Kaisha Encoding method and device therefor
WO2002007447A1 (en) * 2000-07-14 2002-01-24 Sony United Kingdom Limited Data encoding apparatus with multiple encoders
CN101416512A (en) * 2006-04-07 2009-04-22 微软公司 Quantization adjustment based on texture level
US20090135921A1 (en) * 2007-11-28 2009-05-28 Shawmin Lei Two-Dimensional DPCM with PCM Escape Mode
WO2011115659A1 (en) * 2010-03-16 2011-09-22 Thomson Licensing Methods and apparatus for implicit adaptive motion vector predictor selection for video encoding and decoding

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108322753A (en) * 2017-01-15 2018-07-24 上海天荷电子信息有限公司 Dynamic adjusts the data compression method and device of the element of nearest coding parameter array
CN108322753B (en) * 2017-01-15 2024-04-12 上海天荷电子信息有限公司 Data compression method and device for dynamically adjusting elements of latest coding parameter array
CN113826383A (en) * 2019-05-13 2021-12-21 北京字节跳动网络技术有限公司 Block dimension setting for transform skip mode
CN113826383B (en) * 2019-05-13 2022-10-11 北京字节跳动网络技术有限公司 Block dimension setting for transform skip mode
US11490086B2 (en) 2019-05-13 2022-11-01 Beijing Bytedance Network Technology Co., Ltd. Block dimension settings of transform skip mode
US11546595B2 (en) 2019-05-22 2023-01-03 Beijing Bytedance Network Technology Co., Ltd. Sub-block based use of transform skip mode

Also Published As

Publication number Publication date
CN104704838B (en) 2018-03-27
EP2904796B1 (en) 2020-09-02
EP2904806A1 (en) 2015-08-12
EP2904796A4 (en) 2016-06-08
WO2014055745A1 (en) 2014-04-10
EP2904806A4 (en) 2016-06-01
HK1207771A1 (en) 2016-02-05
EP2904806B1 (en) 2020-09-02
HK1207772A1 (en) 2016-02-05
WO2014055744A1 (en) 2014-04-10
CN104718753B (en) 2018-05-11
CN104718753A (en) 2015-06-17
EP2904796A1 (en) 2015-08-12

Similar Documents

Publication Publication Date Title
CN104704828B (en) Nearly lossless and Lossless Image Compression the method and system of bounded rate
CN104704838A (en) 2D block image encoding
US9978156B2 (en) High-throughput image and video compression
US10812829B2 (en) 2D block image encoding
US9813711B2 (en) Hybrid transform-based compression
CN105379283B (en) Data encoding and decoding
CN105103548B (en) A kind of method and apparatus for encoding, decoding image data
US9805442B2 (en) Fine-grained bit-rate control
CN103650496B (en) Intra prediction pixel-based for being encoded in HEVC
CN103596009B (en) Decoder and coding/decoding method
CN110402580A (en) Image processing method and its device
CN107251557A (en) The coding/decoding of chrominance resolution details
CN105230023A (en) The self adaptation of color space, color samples rate and/or bit-depth switches
CN104185989A (en) Parameter determination for exp-golomb residuals binarization for lossless intra hevc coding
CN105264888A (en) Encoding strategies for adaptive switching of color spaces, color sampling rates and/or bit depths
EP2765770B1 (en) Matrix encoding method and device thereof, and matrix decoding method and device thereof
US20100232497A1 (en) Lossless and near-lossless image compression
CN102835107A (en) Super-block for high performance video coding
US8508543B2 (en) Layered texture compression architecture
GB2523993A (en) Data encoding and decoding

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1207771

Country of ref document: HK

TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20170306

Address after: Singapore Singapore

Applicant after: Avago Technologies Fiber IP Singapore Pte. Ltd.

Address before: American California

Applicant before: Zyray Wireless Inc.

GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20181022

Address after: Singapore Singapore

Patentee after: Annwa high tech Limited by Share Ltd

Address before: Singapore Singapore

Patentee before: Avago Technologies Fiber IP Singapore Pte. Ltd.

REG Reference to a national code

Ref country code: HK

Ref legal event code: WD

Ref document number: 1207771

Country of ref document: HK