Removing NMS_STATS defines.

Change-Id: Iabab0e59042a33456df1d449c0d0f01debc00c7c
Using only one scale function in scale_factors struct.

Functions scale_mv_q4 and scale_mv_q3_to_q4 were almost identical except
q3->q4 conversion in scale_mv_q3_to_q4. Now q3->q4 conversion happens
directly in vp9_build_inter_predictor.

Also adding useful constants: SUBPEL_BITS and SUBPEL_MASK.

Change-Id: Ia0a6ad2ac07c45fdf95a5139ece6286c035e9639
Neon version of vp9_short_idct4x4_add.

Change-Id: Idec4cae0cb9b3a29835fd2750d354c1393d47aa4
Merge "Removing NMS_STATS defines."
Adding ss_size_lookup table.

Removing the old one bsize_from_dim_lookup. Now we have a way to determine
block size for plane using its subsampling values (ss_size_lookup). And
then we can find the number of pixels in the block (num_pels_log2_lookup).

Change-Id: I6fc981da2ae093de81741d3d78eaefed11015db9
Use low precision 32x32fdct for encodemb in speed1

The low precision 32x32 fdct has all the intermediate steps within
16-bit depth, hence allowing faster SSE2 implementation, at the
expense of larger round-trip error. It was used in the rate-distortion
optimization search loop only.

Using the low precision version, in replace of the high precision one,
affects the compression performance by about 0.7% (derf, stdhd) at
speed 0. For speed 1, it makes derf set down by only 0.017%.

Change-Id: I4e7d18fac5bea5317b91c8e7dabae143bc6b5c8b
Merge "Adding ss_size_lookup table."
Merge "Using only one scale function in scale_factors struct."
Cleanup inside vp9_reconinter.c.

Using block width and block height instead of their logarithms. Using
SUBPEL_BITS and SUBPEL_SHIFTS constants instead of magic numbers.

Change-Id: I4e10e93c907c8a5e1cb27dfe74d1fcdcc4995448
Removing plane_block_{width, height}_log2by4 functions.

Change-Id: I040b82b8e32aee272d10cbb021c7ba1c76343d7a
Merge "Use low precision 32x32fdct for encodemb in speed1"
Simplify & fix potential bug in rd_pick_partition

Different partitionings were not being evaluated against
best_rd and there were unnecessary calls to RDCOST. This
could have resulted in a non-optimal partioning being
selected.

I simplified the variables used to track the rate,
distortion and RD values throughout the function.

Change-Id: Ifa7085ee80d824e86791432a5bc6d8fea5a3e313
Moved fast motion search level decision to function

Moving this block of code into a function makes the
code easier to read and change.

Change-Id: If4ede570cce1eab1982b188c4d3e4fd3d4db236e
Adds a new subpel motion function

Adds a new subpel motion estimation function that uses a 2-level
tree-structured decision tree to eliminate redundant computations.
It searches fewer points than iterative search (which can search
the same point multiple times) but has the same quality roughly.

This is made the default setting at speeds 0 and 1, while at
speed 2 and above only a 1-level search is used.

Also includes various cleanups for consistency and redundancy removal.

Results:
derf: +0.012% psnr
stdhd: +0.09% psnr
Speedup of about 2-3%

Change-Id: Iedde4866f5475586dea0f0ba4cb7428fba24eee9
Removing unneeded intermediate entropy_nodes_adapt var.

Change-Id: I541a178d997b4541e0e2d4d5b854e2ed6b113c3a
Using MV struct instead of int[2] array.

Change-Id: Iab951c555037e36b154f319f351c5e67f9abb931
Merge "Removing unneeded intermediate entropy_nodes_adapt var."
Merge "Adds a new subpel motion function"
Merge "Cleanup inside vp9_reconinter.c."
fix unit test failure on win32 vs2008 build

The mix use of double type and simd code caused invalid values stored
in double variables, further caused unit tests to fail. The failures
were only observed on x86-win32-vs9 build with vs2008.

Change-Id: If0131754a3bf217a5ace303b7963e8f5162c34b5