You are on page 1of 30

Video Scaler CookBook

Victor Ramamoorthy
Software Engineering Group
Information Appliance
National Semiconductor Corp
Santa Clara, CA
30 October 2002

________________________________________________________________________
Video Scaler CookBook
Victor Ramamoorthy
Page: 1 (30)
10/13/2004

Contents
Video Scaler CookBook ..................................................................................................... 1
Video Scaler Cook Book .................................................................................................... 3
Introduction..................................................................................................................... 3
Performance of a Video Scaler ....................................................................................... 4
Scaling Fundamentals ..................................................................................................... 6
Example ...................................................................................................................... 7
Linear Interpolation .................................................................................................... 8
Choosing a better predictor............................................................................................. 9
Mirroring Pixels ............................................................................................................ 11
Implementing the Interpolating Filter........................................................................... 11
Putting It All Together .................................................................................................. 14
Finally ........................................................................................................................... 15
Tables............................................................................................................................ 17

________________________________________________________________________
Video Scaler CookBook
Victor Ramamoorthy
Page: 2 (30)
10/13/2004

Video Scaler Cook Book

Introduction
Video Scaler is a device that stretches or shrinks images or video frames. For the
purposes of illustration, we have a source image as shown below:

Source Image
When expand the size of the image, the total number of pixels contained in the
destination image is more than what is available in the source image. Hence a whole lot
of new pixels have to be created by the scaler. When we shrink the image, we may keep a
part of the pixels and throw the rest. In addition, we may still have to generate new pixels
even if we are shrinking the image. The scalers job is simple: (1) It decides what pixels
to keep in the source image and (2) what pixels have to be recreated. In this cookbook we
will explore the scalers anatomy.

Destination Image: Shrinking


Note that a scaler can stretch an image only in X direction or only in Y direction or both.
We want to design a scaler that can achieve arbitrary1 image sizes without noticeable
quality loss. There is no restriction to keep the aspect ratio2 as constant while scaling.

1
2

Arbitrary sizes, memory size permitting, filter lengths conducive.


The ratio of width and height of an image is called the aspect ratio.

________________________________________________________________________
Video Scaler CookBook
Victor Ramamoorthy
Page: 3 (30)
10/13/2004

Destination Image: Expansion


No distinction is made between shrinking and expansion of an image as far as the scaler
algorithm is concerned. They are the opposite sides of the same problem. The scaler will
operate exactly the same way if we are expanding or squeezing the source image.
This cookbook describes the process with which smooth expansion/contraction scaling is
obtained. It also details the construction of a hardware system, which can operate at video
frame rates. In particular, the focus of the treatment is to spell out the different
parameters that control the performance of the scaler. This cookbook is aimed at
engineers who are not familiar with video scaling problem. Experts on the subject are
warned that they may be wasting their time reading this cookbook. Many of the
theoretical issues are merely glossed over and the attention is centered on the
implementation. Useful tables at the end contain filter coefficients that can be used in a
practical situation.

Performance of a Video Scaler


As with any engineering design, we have to ask critical questions like what are we
designing and how do we know it is good. When it comes to video scaler, that kind of
questions are tough to answer because the quality of the end result simply cannot be
measured. Video quality is a subjective thing. It varies with the content and viewing
conditions. More importantly, when we scale video frames, there is no reference to
compare. We are creating a new frame that was not there before, and we have to compare
it with the original frame with a different size. It is like comparing apples and oranges.
The best way to get around this problem is to ask if the scaled frame looks like the
original and hunt for artifacts that might have crept in the scaling process. Still we are
looking for something that has no reference and has some how appeared on the end result
which is not a good way to measure performance. So we come back and settle down to
the measurement of how it looks after scaling.

________________________________________________________________________
Video Scaler CookBook
Victor Ramamoorthy
Page: 4 (30)
10/13/2004

The primary performance measure is undoubtedly the visual quality of the scaler. In
general, visual quality is not easily measured by metrics such as Picture Signal-to-Noise
Ratio and Mean Square Error, though they are often quoted in the literature. The
secondary performance measures are Computational Load or Complexity of Design. We
will attempt to quantify these measures wherever meaningful. Another thing to remember
is that performance is a function of color conversion stages employed. For instance, if the
source image is RGB, see fig. 1 below, the scaling can be done in the RGB domain.
Notice that scaling is done on the component images. If the image is only available as
YUV domain then scaling can be done in YUV domain as in fig.2:
R
Source
Image

Scaler

Scaler

Scaler

Scaler

Destination
Image

Fig.1

Source
Image

Scaler

Scaler

Scaler

Destination
Image

Fig.2

Source
Image
(RGB)

Scaler

Scaler

Color
Conversion

Destination
Image
(YUV)

Fig. 3
As suggested by fig.3 above, the color conversion can be included in the last stage before
destination image is displayed. Or it also can be done before scaling as shown below:

Source
Image
(RGB)

Color
Conversion

Scaler

Scaler

Scaler

Destination
Image
(YUV)

Fig.4

________________________________________________________________________
Video Scaler CookBook
Victor Ramamoorthy
Page: 5 (30)
10/13/2004

The performance of the system in fig.3 and fig.4 will in general be different. Because of
additional operations involved with color conversion, there is ample opportunity to inject
additional noise in the system. However, by careful choice, we can make the visual
qualities of these two systems to approach each other.
Another important thing to note is that the scaler operates on Planar images. A planar
image could be an image containing just red color, or Y values. It is a component image.
Repeating the scaling on all other component images does complete scaling.

Scaling Fundamentals
Let

x ,y
s

be the size in the X direction and Y direction respectively of a planar source

image. Let the corresponding sizes of the destination image be


the source image has

x ,y
d

. This means that

pixels in a row, which must be converted to

pixels in the

destination image. The ratio of these two numbers is called scaling factor

x
x

(1)

Similarly the scaling factor in the Y direction is

y
y

. Note that the scaling factor

is the ratio of two integers and is hence a real (floating-point) number. We will just
illustrate the method for scaling in the X direction in this cookbook as the same kind of
operations can be duplicated for Y direction.
The key idea here is to expand the source size range to include floating point numbers.
S
What is the size range? Well, it is the set of integers I x ={0, 1, 2, 3, xs -1} which

denote the pixel positions3 in the X direction of the source image. The first pixel position
starts at 0. The last one ends at xs -1. We can expand this range to contain all real
numbers not just integers. Note that this is our mental construct and not a real thing.
When everything is finished we will map this back into integers, as a pixel position
S
cannot be a fractional number. Let us denote this new range as R x containing all
numbers from 0 to

-1.

Now we are ready to map the destination pixel positions back onto the source pixel
S
positions, i.e., mapping onto the range R x . Why is this needed? We have the job of
generating new pixels in the destination image and they must have the resemblance of the
source image. We need to know where to place these new pixels. We also need to know
3

We are talking about pixel positions which are sequential numbers starting at 0 from left. Do not confuse
this with the value of a pixel. We will use the notation V(.) to denote the value of a pixel.

________________________________________________________________________
Video Scaler CookBook
Victor Ramamoorthy
Page: 6 (30)
10/13/2004

their values. Because we only know about the source image and know nothing about the
destination image, we must make the connection between these two. We need to derive
the destination pixel values from the source image. We can do that only if we know
where these pixels are located.
From (1), we see that
become: {0,

,
x

,
x

x
S

S
x

,
x

. Then the mapping of destination range back to

x 1 }. Out of this set, we will force that pixel position


S
d

at 0 will map onto pixel position 0. The other end condition is also forced: the pixel
position at xd -1 will go to the pixel position at xs -1. This means that for i-th pixel,

1 > i > 0 , position of the destination image falls on the position

range

of the source image. The position

in the expanded
x

is a real number and not an integer.


x

That is why we expanded the range to include real numbers in the first place! The next
i
is located.
thing to do is to find where exactly the position

To do this, we need to find the integer part of

(i ) = [[

. This is also known as the F-center4,


x

]] . The fractional part is denoted by

(i ) = ((

)) . This means that the


x

i-th pixel position of the destination image falls in between source pixels in
positions F c (i ) and F c (i ) + 1 and is fractional value f (i ) off from the F-center
c

F c (i) .
Are you with me? Let us do an example and clarify the notation.

Example
Let the source X size be 4 pixels and the destination X size is 7 pixels. That is
and

=4

= 7. The source pixel positions are denoted by {0, 1, 2, 3} and the destination

pixel positions are denoted by {0, 1, 2, 3, 4, 5, 6}.


7
The scaling factor is S x = xd = = 1.75 . Let us now map onto the expanded range of
xs 4
source image.

The F-center is actually the pixel on which the filter is centered. You will get it later. Keep cool.

________________________________________________________________________
Video Scaler CookBook
Victor Ramamoorthy
Page: 7 (30)
10/13/2004

Destination
Pixel Position

Map onto
Source Range

F-Center
F c (i)

1
2
3
4
5
6

0.5714
1.1426
1.7143
2.2857
2.8571
3

0
1
1
2
2
3

Fractional Part
f (i)

Notes

By design this
will map onto
pixel at 0
0.5714
0.1426
0.7143
0.2857
0.8571

By design, this
will map onto
pixel at 6
Hence the simplest way to scale from 4 pixels to 7 pixels is to do the following:
Value of pixel 0 at destination = Value of pixel 0 at the source (end condition)
Value of pixel 1 at destination = Value of pixel 0 at the source
Value of pixel 2 at destination = Value of pixel 1 at the source
Value of pixel 3 at destination = Value of pixel 1 at the source
Value of pixel 4 at destination = Value of pixel 2 at the source
Value of pixel 5 at destination = Value of pixel 2 at the source
Value of pixel 6 at destination = Value of pixel 3 at the source (end condition)
We wanted 7 pixels and we got them all.
Unfortunately such a simple minded scaling does not offer good visual quality!

Linear Interpolation
What can we do better? Since we know the fractional values of the pixel positions, we
can put them to work. This is called as Linear Interpolation. This can be illustrated as
follows:
Value of pixel 0 at destination = Value of pixel 0 at the source (end condition)
Value of pixel 1 at destination = Value of pixel 0 at the source x (1.0 0.5714) + Value
of pixel 1 at the source x 0.5714
Value of pixel 2 at destination = Value of pixel 1 at the source x (1.0 0.1426) + Value
of pixel 2 at the source x 0.1426
Value of pixel 3 at destination = Value of pixel 1 at the source x (1.0 0.7143) + Value
of pixel 2 at the source x 0.7143
Value of pixel 4 at destination = Value of pixel 2 at the source x (1.0 0.2857) + Value
of pixel 3 at the source x 0.2857
________________________________________________________________________
Video Scaler CookBook
Victor Ramamoorthy
Page: 8 (30)
10/13/2004

Value of pixel 5 at destination = Value of pixel 2 at the source x (1.0 0.8571) + Value
of pixel 3 at the source x 0.8571
Value of pixel 6 at destination = Value of pixel 3 at the source (end condition)
The above can be succinctly written for the middle pixels as:
V ( xd (i )) = V ( xs ( F c (i )){1

(i )} + V ( xs ( F c (i ) + 1))

(i )

(3)

Where V(. ) denotes the value of a pixel. This may be considered as an improvement over
the case where we just copied pixels. Using the fractional part indeed helps in improving
the quality. However the quality improvement with adjacent pixel linear prediction is not
very great.
The next big improvement can occur if we can extend the linear prediction idea and
concoct a workable system.

Choosing a better predictor


The previous section explained the notion of using two adjacent pixels in defining the
value of a new pixel that falls in between. This is equivalent to using just a 2-tap linear
filter with varying filter coefficients. Getting to know additional pixels is only good5. But
there is a big problem. Since the fractional part can assume any value between 0 and 1,
extending to multi-tap filter has inherent computational problems: Depending on the
value of the fractional part, we need to design a filter for every pixel! A better idea is to
quantize the fractional part to M regions and choose an appropriate filter from the stored
set of filter coefficients. It is a common practice to use M as a power of 2, but is not
necessary.
The quantized fractional part Q

(i ) =

(i ) now takes values from 0 to M-1. For


c

each value, a different set of filter coefficients will be used to predict the pixel value.
What would be an ideal filter to use? That is a separate topic by itself. We would not go
into details as ample texts cover the subject of digital signal processing. It is suffice to
say that optimal interpolation filter has an impulse response described by the Sinc
function:

Recall the statistical motto: The more you know, the better you compute the estimate.

________________________________________________________________________
Video Scaler CookBook
Victor Ramamoorthy
Page: 9 (30)
10/13/2004

sin(

)
M for k = -2, -1, 0, 1, 2, and M is the number of
k
( )
M
quantization levels used. Corresponding time response of the PolyPhase Interpolation
Filters is given by:

sin[ (n + )]
~
M ,
h ( n) = h ( n ) =

(n + )
M

= 0, 1, 2, 3,...M 1, and all n

(4)

The direct way designing a scaler is to use the above equation and truncate the ideal
prototype given in (4). Unfortunately this leads to ringing and Gibbs phenomenon, which
can be visually disturbing in the end result. A better way is to taper the filter coefficient
gradually to zero with a windowing function w(k ) as shown below:
~
N 1
N 1
h(k ) = h (k ) w(k ), k
2
2

(5)

There are a number of windows shown to have good properties in handling Gibbs
phenomenon. Here we use a generalized Hamming window given by

2k
+ (1 ) cos

k
=
(
)

wH
N ,
0
Otherwise

N 1
N 1
k
2
2

(6)

where is in the range 0 1 . If =0.54, the window is called a Hamming


Window, and if = 0.5, it is called a Hanning Window. The filter coefficients given by
equations (4), (5), and (6) are still real numbers. They need to be quantized to digital
numbers to operate in a digital filter.
As far as you, the reader, is concerned you do not need to worry about the above
equations and theoretical stuff. We give you all these in the form of tables which you can
readily use without losing sleep.
Though most scalers use odd-number of filter taps, here we use even number filter taps.
The reason is that odd-numbered filter taps generate phase switching noise unless they
are big enough and we suggest looking into a nicer solution of even-numbered filter tap
designs.

________________________________________________________________________
Video Scaler CookBook
Victor Ramamoorthy
Page: 10 (30)
10/13/2004

Mirroring Pixels

Mirrored border

Source Image

FEDCBAABCDEFGHIJKL

Fig. 5
Since images have finite support that is, finite width and height employing filtering is
a little tricky. To alleviate the border problems, an artificial border is created around
the source image by mirroring the pixels both column-wise and row-wise. With mirroring
filtering can start right at the image edge and stop at the corresponding edge on the other
side. Each row of pixels is extended as shown in fig.5 as if there is a mirror right on the
border to reflect the pixels. The width of the border is related to the half-length of the
filter used. Fig.5 illustrates the case when 6-pixel border is created with mirroring.
What happens if you do not do mirroring? Nothing. Except that you end up with a black
border on your destination image!

Implementing the Interpolating Filter


First let us see how to design a Finite Impulse Response filter for scaling. The theory of
the filtering was covered in a previous section. The section Tables give a set of filters
that can be used in practice. Here let us construct a simple 6-tap filter system, see table 8.
The next figure illustrates how a filter works on the source image to produce the content
of the destination image.

________________________________________________________________________
Video Scaler CookBook
Victor Ramamoorthy
Page: 11 (30)
10/13/2004

The table chosen has 6 filter coefficients depending on the quantized value of the
fractional part Q

(i ) =

(i ) . The integer part,


c

(i ) selects the center pixel in the

source image, which will support the filtering in the immediate neighborhood. In the case
of 6-tap filter, 2 pixels before and 3 pixels after the center pixel form the six pixels that
will be used in the creation of the corresponding destination pixel as shown in the fig 6.

________________________________________________________________________
Video Scaler CookBook
Victor Ramamoorthy
Page: 12 (30)
10/13/2004

Fig.6
Since the filter uses 12 bits of coefficient precision, dividing the sum (formed by the filter
coefficients and the pixel values) by 4095 normalizes the product sum. This leads to the
destination pixel value of 6.
This type of Finite Impulse Response filtering is routinely done in DSP applications.
Over the years, the hardware required for filtering has been almost standardized. A DSP
engine is constructed by having a multiplier, adder, shifter and coefficient RAM.
Coefficients are first loaded into the RAM before operations begin. The multiplier
typically has two registers for loading the multiplicands. After values are multiplied, they
are added with the previous sum. Appropriate shifting is needed for normalization to
avoid overflow.

________________________________________________________________________
Video Scaler CookBook
Victor Ramamoorthy
Page: 13 (30)
10/13/2004

Putting It All Together

DSP

8
16

Mirrored
Source Image
Frame Buffer

32

A Register

X
B Register

16

Adder 3

Coef. RAM

Shifter 2

32
16

Address
Log M

Shifter 1

8
16

16

Destination Image
Frame Buffer

16
Overflow

Adder 1

Frac. Reg FR

16

Adder 2
Int. Reg

16

16

Load

Load

IR

Video Scaler Micro Architecture

Fig. 7
Now is the time to assemble all the previous knowledge and put them to work. Fig. 7
shows the micro architecture of the scaler. It uses all the familiar digital building blocks
like multipliers, adders, and shifters. Details of clocking are not shown in fig.6 for the
sake of clarity and brevity.
First going back to our notation, we need to compute the scaling factor

x
x

. It must

be computed by another entity controlling the scaler. In fact, what we need is just the
reciprocal of the scaling factor: we separate the integer and fractional part of the
i
1
1
1
. This can be by a
= [[ ]] + (( )) . Why do we do this? Our goal is to compute

pair of adders if we separate fractional and integer parts and add them up as we increase i.
i
1
1
Note that
= i[[ ]] + i (( )) . The integer part is already a whole number. We can

________________________________________________________________________
Video Scaler CookBook
Victor Ramamoorthy
Page: 14 (30)
10/13/2004

load this integer part into the 16-bit Integer Register IR. The fractional part is a real
number is multiplied by 65536 to make that into a 16-bit number and then is loaded into
the Fractional Register FR. These loadings are done as a part of initialization. The
coefficient RAM also needs to be filled with correct numbers before the scaling
operations begin.
Note that the content of the Fractional Register is also loaded into 16-bit Adder 1.
Similarly the content of the Integer register is loaded into 16-bit Adder 2. This behavior
of loading Adder 1 and Adder 2 will be repeated for every pixel in the destination image.
In addition, note that Adder 1 feeds back into itself while supplying its output as an
address to the Coefficient RAM. To get the correct address, we need the Shifter 1 to drop
all bits except what is needed to generate the right filter coefficients. Hence if we use a M
level quantization of the fractional part, then we just need log M bits for the address in
2

selecting the correct filter coefficients in the coefficient RAM.


Since Adder 1 feeds back its output into its input, it will generate overflow, which will be
added as input to Adder 2. Adder 2 has its output pointing to an address of the source
pixel being operated on. If the scaling is being performed for X direction, then the Adder
2 output will be a number representing the column of the pixel. If the scaling is done in Y
direction, this will be the row number of the pixel.
How does the interpolation work? First we need to load the pixel value from the
mirrored source image buffer into A Register of the DSP engine shown in fig.6. The
corresponding filter coefficient is taken from the coefficient RAM and loaded into B
Register of the DSP.
The DSP engine consists of 2 16-bit registers (called A Register and B Register), a 16 bit
full multiplier with 32-bit output, and a 32-bit adder called Adder 3. The output of Adder
3 is fed back to its input. When computations are completed, the Shifter 2 scales the
output to 8 bit and sends it to the destination location.
The clocks governing the DSP engine run p times faster than the clock governing Adder
1, Adder 2, and Shifter 1, where p is the number of filter taps used.
The rest is, as the saying goes, elementary.

Finally
We have the theory. We have the architecture. We have the tables. Next thing is to put
them to good use. To help in the design process, we have a Video Scaler Design Tool as
shown in the fig.8. This tool allows one to change all the pertinent parameters and arrive
at a useful design that satisfies the design goal.

________________________________________________________________________
Video Scaler CookBook
Victor Ramamoorthy
Page: 15 (30)
10/13/2004

Fig.8
Figure 8 shows the GUI of the tool. It accepts BMP files and scales the input on the fly.
The first combo box allows the selection of M (Inter Pixel Quantization) in bits. The
second combo box offers selection of number of bits used in representing each filter
coefficient. The third combo box selects the number of filter taps. The fourth one selects
the window. When the Input File button is clicked, a pop up window helps in choosing
an input BMP file. A thumbnail of the chosen file appears in the small picture box below.
By operating the sliders around the picture box, one can scale the input both in X and Y
direction.

________________________________________________________________________
Video Scaler CookBook
Victor Ramamoorthy
Page: 16 (30)
10/13/2004

Tables
Here we provide an illustrative set of filters useful in scaling:

Table 1: 4 tap Filter; M = 16; Coefficient length = 8 bits; Hamming Window


Filter 0
Filter 1
Filter 2
Filter 3
Filter 4
Filter 5
Filter 6
Filter 7
Filter 8
Filter 9
Filter 10
Filter 11
Filter 12
Filter 13
Filter 14
Filter 15

0
-7
-12
-15
-17
-16
-15
-13
-11
-8
-6
-4
-4
-2
-1
0

255
252
246
235
221
202
181
160
138
115
94
72
55
37
22
10

0
10
22
37
55
73
95
116
139
161
182
203
221
235
246
252

0
0
-1
-2
-4
-4
-6
-8
-11
-13
-15
-16
-17
-15
-12
-7

Table 2: 4 tap Filter M = 16; Coefficient length = 9 bits; Hamming Window


Filter 0
Filter 1
Filter 2
Filter 3
Filter 4
Filter 5
Filter 6
Filter 7
Filter 8
Filter 9
Filter 10
Filter 11
Filter 12
Filter 13
Filter 14
Filter 15

0
-15
-25
-31
-33
-33
-31
-27
-23
-18
-14
-10
-7
-5
-3
-1

511
507
494
472
442
405
366
322
278
233
189
148
108
75
46
21

0
20
45
75
109
149
190
234
279
323
367
406
443
472
493
506

0
-1
-3
-5
-7
-10
-14
-18
-23
-27
-31
-33
-33
-31
-25
-15

Table 3: 4 tap Filter M = 16; Coefficient length = 10 bits; Hamming Window


Filter 0
Filter 1

0
-30

1023
1015

0
40

0
-2

________________________________________________________________________
Video Scaler CookBook
Victor Ramamoorthy
Page: 17 (30)
10/13/2004

Filter 2
Filter 3
Filter 4
Filter 5
Filter 6
Filter 7
Filter 8
Filter 9
Filter 10
Filter 11
Filter 12
Filter 13
Filter 14
Filter 15

-51
-62
-68
-68
-64
-56
-48
-38
-30
-22
-15
-9
-6
-2

989
944
885
815
735
648
560
469
382
297
220
149
92
41

91
150
221
298
382
469
559
648
735
816
886
945
988
1014

-6
-9
-15
-22
-30
-38
-48
-56
-64
-68
-68
-62
-51
-30

Table 4: 4 tap Filter M = 16; Coefficient length = 11 bits; Hamming Window


Filter 0
Filter 1
Filter 2
Filter 3
Filter 4
Filter 5
Filter 6
Filter 7
Filter 8
Filter 9
Filter 10
Filter 11
Filter 12
Filter 13
Filter 14
Filter 15

0
-60
-102
-126
-137
-137
-128
-113
-97
-79
-61
-45
-31
-20
-12
-5

2047
2032
1979
1891
1773
1632
1471
1299
1121
940
764
597
442
301
183
81

0
80
182
302
442
597
765
940
1120
1299
1472
1632
1773
1892
1978
2031

0
-5
-12
-20
-31
-45
-61
-79
-97
-113
-128
-137
-137
-126
-102
-60

Table 4: 4 tap Filter M = 16; Coefficient length = 12 bits; Hamming Window


Filter 0
Filter 1
Filter 2
Filter 3
Filter 4
Filter 5
Filter 6
Filter 7
Filter 8
Filter 9
Filter 10
Filter 11

0
-121
-205
-254
-276
-275
-257
-228
-195
-158
-123
-91

4095
4066
3960
3784
3549
3266
2945
2599
2243
1882
1530
1196

0
161
364
606
885
1195
1530
1882
2242
2599
2945
3265

0
-11
-24
-41
-63
-91
-123
-158
-195
-228
-257
-275

________________________________________________________________________
Video Scaler CookBook
Victor Ramamoorthy
Page: 18 (30)
10/13/2004

Filter 12
Filter 13
Filter 14
Filter 15

-63
-41
-24
-11

886
605
365
162

3548
3785
3959
4065

-276
-254
-205
-121

Table 5: 4 tap Filter; M = 32; Coefficient length = 8 bits; Hamming Window


Filter 0
Filter 1
Filter 2
Filter 3
Filter 4
Filter 5
Filter 6
Filter 7
Filter 8
Filter 9
Filter 10
Filter 11
Filter 12
Filter 13
Filter 14
Filter 15
Filter 16
Filter 17
Filter 18
Filter 19
Filter 20
Filter 21
Filter 22
Filter 23
Filter 24
Filter 25
Filter 26
Filter 27
Filter 28
Filter 29
Filter 30
Filter 31

0
-4
-7
-10
-12
-14
-15
-15
-16
-16
-15
-15
-14
-14
-13
-12
-10
-9
-8
-7
-6
-5
-4
-3
-2
-2
-2
-2
-1
-1
0
0

255
255
253
251
246
242
235
227
219
211
201
191
181
171
160
149
137
126
115
104
93
83
72
62
53
44
37
30
22
16
10
4

0
4
9
15
22
29
37
45
54
63
73
84
94
105
116
127
138
150
161
172
182
192
202
212
220
228
235
241
246
250
252
255

0
0
0
-1
-1
-2
-2
-2
-2
-3
-4
-5
-6
-7
-8
-9
-10
-12
-13
-14
-14
-15
-15
-16
-16
-15
-15
-14
-12
-10
-7
-4

Table 6: 4 tap Filter; M = 32; Coefficient length = 9 bits; Hamming Window


Filter 0
Filter 1
Filter 2
Filter 3
Filter 4
Filter 5
Filter 6

0
-8
-14
-20
-25
-28
-31

511
510
507
502
494
484
472

0
9
19
31
45
59
75

0
0
-1
-2
-3
-4
-5

________________________________________________________________________
Video Scaler CookBook
Victor Ramamoorthy
Page: 19 (30)
10/13/2004

Filter 7
Filter 8
Filter 9
Filter 10
Filter 11
Filter 12
Filter 13
Filter 14
Filter 15
Filter 16
Filter 17
Filter 18
Filter 19
Filter 20
Filter 21
Filter 22
Filter 23
Filter 24
Filter 25
Filter 26
Filter 27
Filter 28
Filter 29
Filter 30
Filter 31

-32
-33
-33
-32
-32
-30
-29
-27
-25
-22
-20
-18
-16
-14
-12
-10
-8
-6
-5
-5
-4
-3
-2
-1
0

457
441
424
405
386
366
344
323
300
277
255
233
211
188
168
147
127
108
90
75
59
46
32
20
10

91
109
128
148
169
189
212
233
256
278
301
323
345
367
387
406
425
442
458
472
484
493
501
506
509

-5
-6
-8
-10
-12
-14
-16
-18
-20
-22
-25
-27
-29
-30
-32
-32
-33
-33
-32
-31
-28
-25
-20
-14
-8

Table 7: 4 tap Filter; M = 32; Coefficient length = 10 bits; Hamming Window


Filter 0
Filter 1
Filter 2
Filter 3
Filter 4
Filter 5
Filter 6
Filter 7
Filter 8
Filter 9
Filter 10
Filter 11
Filter 12
Filter 13
Filter 14
Filter 15
Filter 16
Filter 17
Filter 18
Filter 19

0
-16
-29
-41
-50
-57
-61
-65
-67
-67
-67
-65
-62
-59
-55
-51
-46
-42
-37
-33

1023
1022
1014
1005
989
969
944
916
884
850
814
775
733
691
647
603
557
513
468
424

0
18
40
63
90
119
149
183
220
257
297
338
381
424
468
513
558
603
647
691

0
-1
-2
-4
-6
-8
-9
-11
-14
-17
-21
-25
-29
-33
-37
-42
-46
-51
-55
-59

________________________________________________________________________
Video Scaler CookBook
Victor Ramamoorthy
Page: 20 (30)
10/13/2004

Filter 20
Filter 21
Filter 22
Filter 23
Filter 24
Filter 25
Filter 26
Filter 27
Filter 28
Filter 29
Filter 30
Filter 31

-29
-25
-21
-17
-14
-11
-9
-8
-6
-4
-2
-1

380
338
296
256
219
182
148
119
91
64
40
19

734
775
815
851
885
917
945
969
988
1004
1014
1021

-62
-65
-67
-67
-67
-65
-61
-57
-50
-41
-29
-16

Table 7: 4 tap Filter; M = 32; Coefficient length = 11 bits; Hamming Window


Filter 0
Filter 1
Filter 2
Filter 3
Filter 4
Filter 5
Filter 6
Filter 7
Filter 8
Filter 9
Filter 10
Filter 11
Filter 12
Filter 13
Filter 14
Filter 15
Filter 16
Filter 17
Filter 18
Filter 19
Filter 20
Filter 21
Filter 22
Filter 23
Filter 24
Filter 25
Filter 26
Filter 27
Filter 28
Filter 29
Filter 30
Filter 31

0
-32
-59
-82
-101
-115
-124
-131
-135
-136
-135
-131
-125
-118
-111
-102
-93
-85
-76
-67
-59
-51
-43
-36
-30
-24
-19
-16
-12
-8
-5
-2

2047
2044
2031
2010
1980
1940
1889
1834
1772
1704
1630
1552
1469
1383
1297
1207
1116
1027
937
848
762
677
595
515
440
367
300
239
181
128
81
38

0
37
80
127
180
238
301
368
440
515
595
677
762
849
937
1027
1117
1207
1297
1384
1469
1552
1630
1704
1772
1835
1890
1939
1979
2009
2030
2043

0
-2
-5
-8
-12
-16
-19
-24
-30
-36
-43
-51
-59
-67
-76
-85
-93
-102
-111
-118
-125
-131
-135
-136
-135
-131
-124
-115
-101
-82
-59
-32

________________________________________________________________________
Video Scaler CookBook
Victor Ramamoorthy
Page: 21 (30)
10/13/2004

Table 8: 4 tap Filter; M = 32; Coefficient length = 12 bits; Hamming Window


Filter 0
Filter 1
Filter 2
Filter 3
Filter 4
Filter 5
Filter 6
Filter 7
Filter 8
Filter 9
Filter 10
Filter 11
Filter 12
Filter 13
Filter 14
Filter 15
Filter 16
Filter 17
Filter 18
Filter 19
Filter 20
Filter 21
Filter 22
Filter 23
Filter 24
Filter 25
Filter 26
Filter 27
Filter 28
Filter 29
Filter 30
Filter 31

0
-64
-119
-165
-202
-230
-250
-264
-272
-273
-270
-263
-251
-238
-223
-206
-189
-171
-153
-135
-118
-103
-88
-74
-61
-50
-40
-32
-24
-17
-10
-5

4095
4090
4064
4022
3960
3880
3782
3672
3547
3410
3262
3106
2940
2769
2594
2416
2237
2056
1876
1698
1524
1355
1191
1031
881
737
602
478
362
256
161
75

0
74
160
255
361
477
603
737
881
1032
1191
1355
1524
1699
1877
2056
2236
2416
2595
2770
2940
3106
3262
3411
3547
3672
3783
3879
3959
4021
4063
4089

0
-5
-10
-17
-24
-32
-40
-50
-61
-74
-88
-103
-118
-135
-153
-171
-189
-206
-223
-238
-251
-263
-270
-273
-272
-264
-250
-230
-202
-165
-119
-64

Table 9: 6 tap Filter; M = 32; Coefficient length = 8 bits; Hamming Window


Filter 0
Filter 1
Filter 2
Filter 3
Filter 4
Filter 5
Filter 6
Filter 7
Filter 8
Filter 9
Filter 10

0
1
2
3
3
4
4
5
4
5
5

0
-5
-11
-15
-19
-23
-26
-28
-29
-31
-32

255
254
253
250
248
243
239
232
226
219
211

0
6
13
21
29
37
46
56
65
76
87

0
-1
-2
-4
-6
-7
-9
-11
-12
-16
-18

0
0
0
0
0
1
1
1
1
2
2

________________________________________________________________________
Video Scaler CookBook
Victor Ramamoorthy
Page: 22 (30)
10/13/2004

Filter 11
Filter 12
Filter 13
Filter 14
Filter 15
Filter 16
Filter 17
Filter 18
Filter 19
Filter 20
Filter 21
Filter 22
Filter 23
Filter 24
Filter 25
Filter 26
Filter 27
Filter 28
Filter 29
Filter 30
Filter 31

5
5
5
5
4
4
4
4
3
3
3
2
2
1
1
1
1
0
0
0
0

-32
-32
-32
-31
-30
-29
-27
-26
-24
-22
-20
-18
-16
-12
-11
-9
-7
-6
-4
-2
-1

202
193
184
173
163
153
141
130
120
108
97
88
77
66
56
47
37
30
21
13
6

97
108
119
130
141
152
163
173
183
193
202
210
218
225
232
238
243
247
250
253
254

-20
-22
-24
-26
-27
-29
-30
-31
-32
-32
-32
-32
-31
-29
-28
-26
-23
-19
-15
-11
-5

3
3
3
4
4
4
4
5
5
5
5
5
5
4
5
4
4
3
3
2
1

Table 10: 6 tap Filter; M = 32; Coefficient length = 9 bits; Hamming Window
Filter 0
Filter 1
Filter 2
Filter 3
Filter 4
Filter 5
Filter 6
Filter 7
Filter 8
Filter 9
Filter 10
Filter 11
Filter 12
Filter 13
Filter 14
Filter 15
Filter 16
Filter 17
Filter 18
Filter 19
Filter 20
Filter 21
Filter 22
Filter 23

0
2
4
5
7
8
9
9
10
11
11
10
11
10
10
10
8
8
8
7
6
5
5
4

0
-11
-22
-30
-39
-46
-52
-56
-59
-63
-65
-64
-65
-65
-63
-61
-57
-55
-52
-48
-44
-39
-36
-32

511
510
508
502
496
487
478
466
452
438
422
405
386
368
347
326
305
283
261
240
217
195
174
153

0
12
26
41
58
75
93
112
131
153
174
194
217
239
261
283
304
326
347
367
386
404
422
438

0
-2
-5
-7
-12
-15
-19
-22
-26
-32
-36
-39
-44
-48
-52
-55
-57
-61
-63
-65
-65
-64
-65
-63

0
0
0
0
1
2
2
2
3
4
5
5
6
7
8
8
8
10
10
10
11
10
11
11

________________________________________________________________________
Video Scaler CookBook
Victor Ramamoorthy
Page: 23 (30)
10/13/2004

Filter 24
Filter 25
Filter 26
Filter 27
Filter 28
Filter 29
Filter 30
Filter 31

3
2
2
2
1
0
0
0

-26
-22
-19
-15
-12
-7
-5
-2

132
113
94
75
58
42
27
12

451
465
477
487
496
501
507
510

-59
-56
-52
-46
-39
-30
-22
-11

10
9
9
8
7
5
4
2

Table 11: 6 tap Filter; M = 32; Coefficient length = 10 bits; Hamming Window
Filter 0
Filter 1
Filter 2
Filter 3
Filter 4
Filter 5
Filter 6
Filter 7
Filter 8
Filter 9
Filter 10
Filter 11
Filter 12
Filter 13
Filter 14
Filter 15
Filter 16
Filter 17
Filter 18
Filter 19
Filter 20
Filter 21
Filter 22
Filter 23
Filter 24
Filter 25
Filter 26
Filter 27
Filter 28
Filter 29
Filter 30
Filter 31

0
4
8
11
14
16
18
20
21
21
22
22
21
21
20
19
18
16
15
14
12
11
9
8
7
5
4
3
2
1
1
0

0
-23
-44
-62
-78
-92
-104
-113
-120
-126
-129
-131
-131
-130
-126
-122
-118
-110
-104
-97
-88
-80
-71
-63
-54
-46
-38
-30
-23
-16
-11
-5

1023
1022
1015
1006
992
976
956
932
904
877
844
810
774
735
695
652
612
566
524
480
436
392
349
307
266
226
188
151
117
84
54
26

0
25
54
83
116
150
187
225
265
306
348
391
435
480
523
566
611
652
694
735
773
809
843
876
903
931
955
975
991
1005
1015
1021

0
-5
-11
-16
-23
-30
-38
-46
-54
-63
-71
-80
-88
-97
-104
-110
-118
-122
-126
-130
-131
-131
-129
-126
-120
-113
-104
-92
-78
-62
-44
-23

0
0
1
1
2
3
4
5
7
8
9
11
12
14
15
16
18
19
20
21
21
22
22
21
21
20
18
16
14
11
8
4

Table 12: 6 tap Filter; M = 32; Coefficient length = 11 bits; Hamming Window
Filter 0
Filter 1
Filter 2

0
9
16

0
-47
-88

2047
2043
2031

0
51
107

0
-10
-21

0
1
2

________________________________________________________________________
Video Scaler CookBook
Victor Ramamoorthy
Page: 24 (30)
10/13/2004

Filter 3
Filter 4
Filter 5
Filter 6
Filter 7
Filter 8
Filter 9
Filter 10
Filter 11
Filter 12
Filter 13
Filter 14
Filter 15
Filter 16
Filter 17
Filter 18
Filter 19
Filter 20
Filter 21
Filter 22
Filter 23
Filter 24
Filter 25
Filter 26
Filter 27
Filter 28
Filter 29
Filter 30
Filter 31

23
30
34
38
41
43
44
45
45
44
42
41
39
36
34
31
28
25
23
20
17
15
12
10
8
6
4
2
1

-125
-158
-186
-209
-228
-243
-253
-260
-263
-263
-259
-254
-245
-235
-222
-209
-194
-178
-161
-144
-127
-110
-94
-78
-62
-47
-34
-21
-10

2011
1983
1951
1911
1865
1810
1753
1688
1618
1548
1471
1390
1307
1223
1135
1046
960
872
783
696
614
530
452
376
303
234
169
108
51

168
233
302
375
451
530
613
696
783
871
959
1046
1134
1222
1306
1390
1470
1547
1618
1688
1752
1810
1864
1910
1950
1982
2010
2030
2043

-34
-47
-62
-78
-94
-110
-127
-144
-161
-178
-194
-209
-222
-235
-245
-254
-259
-263
-263
-260
-253
-243
-228
-209
-186
-158
-125
-88
-47

4
6
8
10
12
15
17
20
23
25
28
31
34
36
39
41
42
44
45
45
44
43
41
38
34
30
23
16
9

Table 13: 6 tap Filter; M = 32; Coefficient length = 12 bits; Hamming Window
Filter 0
Filter 1
Filter 2
Filter 3
Filter 4
Filter 5
Filter 6
Filter 7
Filter 8
Filter 9
Filter 10
Filter 11
Filter 12
Filter 13
Filter 14
Filter 15

0
17
34
48
61
70
78
84
88
90
91
91
89
86
83
79

0
-93
-177
-252
-317
-373
-420
-456
-487
-508
-520
-526
-527
-521
-509
-492

4095
4087
4060
4022
3966
3901
3820
3727
3621
3505
3378
3239
3094
2941
2779
2613

0
102
215
337
466
604
750
903
1061
1226
1395
1566
1742
1918
2094
2270

0
-20
-43
-69
-96
-126
-157
-189
-222
-256
-290
-324
-357
-389
-419
-446

0
2
6
9
13
17
22
26
31
36
41
47
52
58
64
69

________________________________________________________________________
Video Scaler CookBook
Victor Ramamoorthy
Page: 25 (30)
10/13/2004

Filter 16
Filter 17
Filter 18
Filter 19
Filter 20
Filter 21
Filter 22
Filter 23
Filter 24
Filter 25
Filter 26
Filter 27
Filter 28
Filter 29
Filter 30
Filter 31

74
69
64
58
52
47
41
36
31
26
22
17
13
9
6
2

-471
-446
-419
-389
-357
-324
-290
-256
-222
-189
-157
-126
-96
-69
-43
-20

2445
2270
2094
1918
1742
1566
1396
1226
1061
904
750
604
466
338
216
103

2444
2613
2779
2941
3094
3239
3377
3505
3621
3726
3820
3901
3966
4021
4059
4086

-471
-492
-509
-521
-527
-526
-520
-508
-487
-456
-420
-373
-317
-252
-177
-93

74
79
83
86
89
91
91
90
88
84
78
70
61
48
34
17

Table 14: 8 tap Filter; M = 32; Coefficient length = 8 bits; Hamming Window
Filter 0
Filter 1
Filter 2
Filter 3
Filter 4
Filter 5
Filter 6
Filter 7
Filter 8
Filter 9
Filter 10
Filter 11
Filter 12
Filter 13
Filter 14
Filter 15
Filter 16
Filter 17
Filter 18
Filter 19
Filter 20
Filter 21
Filter 22
Filter 23
Filter 24
Filter 25
Filter 26
Filter 27
Filter 28

0
0
-1
-1
-1
-2
-2
-2
-2
-2
-3
-3
-3
-2
-2
-2
-2
-2
-2
-2
-2
-1
-1
-1
-1
-1
-1
0
0

0
2
3
5
7
8
9
10
11
12
12
12
12
12
12
12
11
11
10
10
9
8
7
6
6
5
4
3
2

0
-6
-12
-18
-23
-27
-30
-34
-36
-38
-40
-40
-41
-41
-40
-40
-38
-37
-35
-33
-31
-28
-26
-23
-20
-17
-15
-12
-9

255
254
254
252
248
245
240
234
227
220
215
205
198
187
177
167
157
146
135
125
114
103
92
81
70
61
51
41
32

0
7
14
23
31
40
50
60
70
81
91
102
113
124
135
146
156
167
177
186
197
204
214
220
227
233
239
244
247

0
-2
-4
-7
-9
-12
-15
-17
-20
-23
-26
-28
-31
-33
-35
-37
-38
-40
-40
-41
-41
-40
-40
-38
-36
-34
-30
-27
-23

0
0
1
1
2
3
4
5
6
6
7
8
9
10
10
11
11
12
12
12
12
12
12
12
11
10
9
8
7

0
0
0
0
0
0
-1
-1
-1
-1
-1
-1
-2
-2
-2
-2
-2
-2
-2
-2
-3
-3
-3
-2
-2
-2
-2
-2
-1

________________________________________________________________________
Video Scaler CookBook
Victor Ramamoorthy
Page: 26 (30)
10/13/2004

Filter 29
Filter 30
Filter 31

0
0
0

1
1
0

-7
-4
-2

24
15
7

251
253
254

-18
-12
-6

5
3
2

-1
-1
0

0
1
2
3
5
6
8
10
12
13
15
17
18
20
21
22
23
24
25
25
25
25
25
24
23
21
19
16
14
11
8
4

0
0
0
0
-1
0
-2
-2
-2
-3
-3
-3
-4
-4
-4
-5
-5
-5
-5
-5
-6
-6
-6
-5
-5
-5
-4
-3
-3
-2
-2
-1

Table 15: 8 tap Filter; M = 32; Coefficient length = 9 bits; Hamming Window
Filter 0
Filter 1
Filter 2
Filter 3
Filter 4
Filter 5
Filter 6
Filter 7
Filter 8
Filter 9
Filter 10
Filter 11
Filter 12
Filter 13
Filter 14
Filter 15
Filter 16
Filter 17
Filter 18
Filter 19
Filter 20
Filter 21
Filter 22
Filter 23
Filter 24
Filter 25
Filter 26
Filter 27
Filter 28
Filter 29
Filter 30
Filter 31

0
-1
-2
-2
-3
-3
-4
-5
-5
-5
-6
-6
-6
-5
-5
-5
-5
-5
-4
-4
-4
-3
-3
-3
-2
-2
-2
0
-1
0
0
0

0
4
8
11
14
16
19
21
23
24
25
25
25
25
25
24
23
22
21
20
18
17
15
13
12
10
8
6
5
3
2
1

0
-13
-25
-36
-46
-53
-62
-68
-73
-77
-80
-82
-82
-82
-81
-80
-77
-74
-71
-67
-62
-57
-52
-47
-41
-35
-30
-23
-19
-14
-9
-4

511
510
508
503
498
487
481
469
456
444
428
412
394
375
355
336
315
294
272
250
228
206
184
163
141
122
102
80
64
46
30
14

0
14
29
46
63
81
101
121
141
162
184
205
228
249
271
293
314
335
354
374
394
411
428
443
456
468
480
488
497
503
507
510

0
-4
-9
-14
-19
-23
-30
-35
-41
-47
-52
-57
-62
-67
-71
-74
-77
-80
-81
-82
-82
-82
-80
-77
-73
-68
-62
-53
-46
-36
-25
-13

Table 16: 8 tap Filter; M = 32; Coefficient length = 10 bits; Hamming Window
Filter 0
Filter 1
Filter 2
Filter 3
Filter 4
Filter 5
Filter 6
Filter 7

0
-2
-4
-5
-7
-8
-9
-10

0
8
16
22
29
34
39
43

0
-26
-50
-72
-92
-109
-124
-136

1023
1021
1016
1008
997
980
962
940

0
28
59
92
127
164
202
242

0
-8
-18
-28
-39
-49
-60
-72

0
2
5
7
10
14
17
20

0
0
-1
-1
-2
-3
-4
-4

________________________________________________________________________
Video Scaler CookBook
Victor Ramamoorthy
Page: 27 (30)
10/13/2004

Filter 8
Filter 9
Filter 10
Filter 11
Filter 12
Filter 13
Filter 14
Filter 15
Filter 16
Filter 17
Filter 18
Filter 19
Filter 20
Filter 21
Filter 22
Filter 23
Filter 24
Filter 25
Filter 26
Filter 27
Filter 28
Filter 29
Filter 30
Filter 31

-11
-11
-12
-12
-12
-12
-11
-11
-10
-10
-9
-9
-8
-7
-6
-6
-5
-4
-4
-3
-2
-1
-1
0

46
48
50
51
51
51
50
49
47
45
43
40
37
34
30
27
24
20
17
14
10
7
5
2

-146
-154
-160
-164
-165
-165
-164
-160
-155
-149
-142
-134
-125
-115
-104
-94
-83
-72
-60
-49
-39
-28
-18
-8

915
888
856
824
789
752
712
672
630
588
544
501
456
412
369
326
284
243
203
165
128
93
60
28

283
325
369
412
456
500
544
587
629
671
712
751
789
824
856
887
914
939
961
979
996
1007
1015
1021

-83
-94
-104
-115
-125
-134
-142
-149
-155
-160
-164
-165
-165
-164
-160
-154
-146
-136
-124
-109
-92
-72
-50
-26

24
27
30
34
37
40
43
45
47
49
50
51
51
51
50
48
46
43
39
34
29
22
16
8

-5
-6
-6
-7
-8
-9
-9
-10
-10
-11
-11
-12
-12
-12
-12
-11
-11
-10
-9
-8
-7
-5
-4
-2

Table 17: 8 tap Filter; M = 32; Coefficient length = 11 bits; Hamming Window
Filter 0
Filter 1
Filter 2
Filter 3
Filter 4
Filter 5
Filter 6
Filter 7
Filter 8
Filter 9
Filter 10
Filter 11
Filter 12
Filter 13
Filter 14
Filter 15
Filter 16
Filter 17
Filter 18
Filter 19

0
-4
-8
-11
-14
-17
-19
-21
-22
-23
-24
-24
-24
-24
-23
-22
-21
-20
-19
-18

0
16
32
45
58
69
78
86
92
97
101
103
103
103
101
99
95
91
86
80

0
-53
-101
-145
-184
-218
-248
-273
-293
-309
-322
-328
-333
-332
-329
-321
-312
-299
-286
-269

2047
2045
2034
2018
1994
1962
1926
1881
1831
1775
1715
1648
1579
1504
1427
1344
1262
1175
1091
1001

0
57
119
185
255
328
405
486
568
652
738
825
914
1001
1090
1175
1261
1344
1426
1504

0
-17
-37
-57
-78
-99
-121
-144
-166
-188
-209
-230
-250
-269
-286
-299
-312
-321
-329
-332

0
4
10
15
21
28
34
41
48
55
61
68
74
80
86
91
95
99
101
103

0
-1
-2
-3
-5
-6
-8
-9
-11
-12
-13
-15
-16
-18
-19
-20
-21
-22
-23
-24

________________________________________________________________________
Video Scaler CookBook
Victor Ramamoorthy
Page: 28 (30)
10/13/2004

Filter 20
Filter 21
Filter 22
Filter 23
Filter 24
Filter 25
Filter 26
Filter 27
Filter 28
Filter 29
Filter 30
Filter 31

-16
-15
-13
-12
-11
-9
-8
-6
-5
-3
-2
-1

74
68
61
55
48
41
34
28
21
15
10
4

-250
-230
-209
-188
-166
-144
-121
-99
-78
-57
-37
-17

914
825
739
652
568
486
406
329
256
186
120
58

1579
1648
1714
1775
1831
1881
1925
1961
1993
2017
2033
2044

-333
-328
-322
-309
-293
-273
-248
-218
-184
-145
-101
-53

103
103
101
97
92
86
78
69
58
45
32
16

-24
-24
-24
-23
-22
-21
-19
-17
-14
-11
-8
-4

Table 18: 8 tap Filter; M = 32; Coefficient length = 12 bits; Hamming Window
Filter 0
Filter 1
Filter 2
Filter 3
Filter 4
Filter 5
Filter 6
Filter 7
Filter 8
Filter 9
Filter 10
Filter 11
Filter 12
Filter 13
Filter 14
Filter 15
Filter 16
Filter 17
Filter 18
Filter 19
Filter 20
Filter 21
Filter 22
Filter 23
Filter 24
Filter 25
Filter 26
Filter 27
Filter 28
Filter 29
Filter 30
Filter 31

0
-8
-16
-23
-29
-35
-39
-42
-45
-47
-48
-48
-48
-48
-46
-45
-43
-41
-38
-36
-33
-30
-27
-25
-22
-19
-16
-13
-10
-7
-5
-2

0
33
64
92
116
138
157
173
185
195
202
206
207
206
203
198
191
182
172
161
149
136
123
110
96
82
69
56
43
31
20
9

0
-106
-203
-291
-369
-439
-498
-548
-588
-621
-644
-659
-666
-665
-658
-645
-624
-601
-571
-538
-501
-462
-421
-378
-332
-288
-243
-199
-156
-114
-74
-35

4095
4089
4070
4036
3989
3929
3853
3765
3664
3555
3430
3300
3159
3010
2854
2691
2523
2354
2180
2005
1829
1653
1478
1307
1137
972
813
659
511
372
240
116

0
115
239
371
511
658
812
972
1137
1306
1478
1652
1828
2005
2179
2354
2524
2691
2853
3010
3158
3299
3430
3554
3664
3765
3852
3928
3989
4035
4069
4088

0
-35
-74
-114
-156
-199
-243
-288
-332
-378
-421
-462
-501
-538
-571
-601
-624
-645
-658
-665
-666
-659
-644
-621
-588
-548
-498
-439
-369
-291
-203
-106

0
9
20
31
43
56
69
82
96
110
123
136
149
161
172
182
191
198
203
206
207
206
202
195
185
173
157
138
116
92
64
33

0
-2
-5
-7
-10
-13
-16
-19
-22
-25
-27
-30
-33
-36
-38
-41
-43
-45
-46
-48
-48
-48
-48
-47
-45
-42
-39
-35
-29
-23
-16
-8

________________________________________________________________________
Video Scaler CookBook
Victor Ramamoorthy
Page: 29 (30)
10/13/2004

________________________________________________________________________
Video Scaler CookBook
Victor Ramamoorthy
Page: 30 (30)
10/13/2004

You might also like