platform/upstream/libvpx.git
11 years agoRefactor setting up MVs and buffers in rdopt.c
Daniel Kang [Wed, 8 Aug 2012 01:55:28 +0000 (18:55 -0700)]
Refactor setting up MVs and buffers in rdopt.c

Change-Id: I94f08f2cfb37d11d71050dca3200f1d391269a6a

11 years agoSome refactoring of mcomp functions.
Daniel Kang [Tue, 7 Aug 2012 23:44:26 +0000 (16:44 -0700)]
Some refactoring of mcomp functions.

Change-Id: Ic7a7cb1199b085e98ede0e634619b3077c348d57

11 years agoChange the RD cost functions to take into account the seg_eob.
Daniel Kang [Tue, 7 Aug 2012 01:29:59 +0000 (18:29 -0700)]
Change the RD cost functions to take into account the seg_eob.

Change-Id: I2f96e5b205f70fdb559f01637c4b5730246c38a8

11 years agoclamp_mv_min_max -> vp8_clamp_mv_min_max
Daniel Kang [Tue, 7 Aug 2012 22:29:16 +0000 (15:29 -0700)]
clamp_mv_min_max -> vp8_clamp_mv_min_max

It's now used in more places

Change-Id: I63f8e1d827404e0b4f203bdb1df361e565d0779d

11 years agoMore refactoring and cosmetics to rdopt.c
Daniel Kang [Tue, 7 Aug 2012 21:39:25 +0000 (14:39 -0700)]
More refactoring and cosmetics to rdopt.c

Change-Id: I7803d719ead238189e75c52701c3bb6c1552f4b5

11 years agoReorganiziation of the RD loop to make more sense.
Daniel Kang [Tue, 7 Aug 2012 21:33:15 +0000 (14:33 -0700)]
Reorganiziation of the RD loop to make more sense.

Change-Id: Ia1e3b0ff9b70747b3725391de59f230edab767d7

11 years agoMinor cosmetic changes to rdopt.c.
Daniel Kang [Mon, 6 Aug 2012 23:21:23 +0000 (16:21 -0700)]
Minor cosmetic changes to rdopt.c.

Change-Id: Ib7b972486ccbbcb82fa4c05a5f6d7f8aaec32155

11 years agoCombine vp8_block_error_c and vp8_submb_error_c.
Daniel Kang [Mon, 6 Aug 2012 22:03:04 +0000 (15:03 -0700)]
Combine vp8_block_error_c and vp8_submb_error_c.

Change-Id: I58792bac6c7e5a524a6dcdb5241ef18bcc0c3a45

11 years agoA bit of temporary relief on encoder slowness
Yaowu Xu [Tue, 7 Aug 2012 20:55:49 +0000 (13:55 -0700)]
A bit of temporary relief on encoder slowness

The commit replaces run-time initialization of cosine constants with
static constant values, which provides ~30% relief on slow speed. The
real solution, however will be to implement integer versions of those
functions that current use float/double.

Change-Id: Ie3ff1793509653d78dd1aeaf88cc6737da1bc55f

11 years agoa new way of determining reference motion vector
Yaowu Xu [Mon, 6 Aug 2012 17:51:20 +0000 (10:51 -0700)]
a new way of determining reference motion vector

Using surrounding reconstructed pixels from left and above to select
best matching mv to use as reference motion vector for mv encoding.

Test results:
       AVGPSNR  GLBPSNR VPXSSIM
Derf:  1.107%   1.062%  0.992%
Std-hd:1.209%   1.176%  1.029%

Change-Id: I8f10e09ee6538c05df2fb9f069abcaf1edb3fca6

11 years agoRefactoring hybrid transform coding
Jingning Han [Mon, 6 Aug 2012 21:48:11 +0000 (14:48 -0700)]
Refactoring hybrid transform coding

The forward and inverse hybrid transforms are now performed using
single function modules, where the dimension is sent as argument.

Added an inline function clip8b to clip the reconstruction pixels
into range of 0-255.

Change-Id: Id7d870b3e1aefc092721c80c0af6f641eb5f3747

11 years agoRemove code to set transform size.
Daniel Kang [Mon, 6 Aug 2012 21:45:40 +0000 (14:45 -0700)]
Remove code to set transform size.

It's reset in calling functions.

Change-Id: Ia5df086de615aac6feb3c911fe298626a002b850

11 years agoCombine cost_coeffs functions.
Daniel Kang [Mon, 6 Aug 2012 19:15:24 +0000 (12:15 -0700)]
Combine cost_coeffs functions.

Change-Id: I3421d07fdcf2148d75c8dbfc8c44bc2d96a3a8f6

11 years agoMerge token_costs into a single table.
Daniel Kang [Mon, 6 Aug 2012 18:38:50 +0000 (11:38 -0700)]
Merge token_costs into a single table.

Change-Id: Id1ea2d543f12d4589df7038d5fb7bac1fee4da11

11 years agoMore refactoring of RD cost to make later changes easier.
Daniel Kang [Mon, 6 Aug 2012 18:22:28 +0000 (11:22 -0700)]
More refactoring of RD cost to make later changes easier.

Change-Id: Ia6a290a6a53fdb88c971bea2de47ac73dcb7a364

11 years agoMinor refactoring of RD cost functions.
Daniel Kang [Mon, 6 Aug 2012 18:11:56 +0000 (11:11 -0700)]
Minor refactoring of RD cost functions.

Change-Id: I876955b1d577321b5cd3f71e3fb2c4083ad5111b

11 years agoAdd x86_64-darwin11-gcc target.
Christian Duvivier [Mon, 6 Aug 2012 22:05:24 +0000 (15:05 -0700)]
Add x86_64-darwin11-gcc target.

This allows building on MountainLion as the 10.6 SDK has been
removed from the latest Xcode version (4.4 4F250). Also fix
all warnings for that build.

Change-Id: Ib70bca4a25295f13595f0d10ea9f0229631de5a4

11 years agoMerge "enable interleaved decoding of mode and mv" into experimental
Yaowu Xu [Mon, 6 Aug 2012 14:06:15 +0000 (07:06 -0700)]
Merge "enable interleaved decoding of mode and mv" into experimental

11 years agoMerge "fix msvc build" into experimental
Yaowu Xu [Mon, 6 Aug 2012 14:05:56 +0000 (07:05 -0700)]
Merge "fix msvc build" into experimental

11 years agoMerging in high_precision_mv experiment
Deb Mukherjee [Fri, 3 Aug 2012 19:17:18 +0000 (12:17 -0700)]
Merging in high_precision_mv experiment

Merged in the high_precision_mv experiment to make it easier
to work on new mv encoding strategies. Also removed
coef_update_probs3().

Change-Id: I82d3b0bb642419fe05dba82528bc9ba010e90924

11 years agoenable interleaved decoding of mode and mv
Yaowu Xu [Fri, 3 Aug 2012 19:31:38 +0000 (12:31 -0700)]
enable interleaved decoding of mode and mv

Previouly, the decoding of mode and motion vector are done a per frame
basis followed by residue decoding and reconstuction. The commit added
the option to allow decoder to interleave the decoding of mode and mvs
with the residue decoding on a per MB basis.

Change-Id: Ia5316f4a7af9ba7f155c92b5a6fc97201b653571

11 years agoReplacing the 8x8 DCT with 8x8 ADST/DCT for I8x8
Jingning Han [Thu, 2 Aug 2012 16:07:33 +0000 (09:07 -0700)]
Replacing the 8x8 DCT with 8x8 ADST/DCT for I8x8

Fixed the code review comments.

Under the htrans8x8 experiment the 8X8 DCT in the
I8X8 mode is replaced with a combination of 8X8 ADST and
DCT.

Overall coding gains with the htrans8x8 experiment are:
derf:   0.486
std-hd: 1.040
hd:     1.063
yt:     0.506

Note that part of the gain comes from bigger transforms
(8x8 instead of 4x4) and part comes from replacing the DCT
wth the ADST.

Change-Id: I92ca6bbfce11b4165d612b81d9adfad4d010c775

11 years agofix msvc build
Yaowu Xu [Fri, 3 Aug 2012 18:25:35 +0000 (11:25 -0700)]
fix msvc build

Change-Id: I377d50cb347f50341ab6f5f456a6a64438bcb667

11 years agoMerge "16x16 DCT blocks." into experimental
Daniel Kang [Fri, 3 Aug 2012 17:22:04 +0000 (10:22 -0700)]
Merge "16x16 DCT blocks." into experimental

11 years agoMerge "Merging and bug-fix in enhanced_interp experiment" into experimental
Deb Mukherjee [Fri, 3 Aug 2012 17:18:25 +0000 (10:18 -0700)]
Merge "Merging and bug-fix in enhanced_interp experiment" into experimental

11 years ago16x16 DCT blocks.
Daniel Kang [Fri, 3 Aug 2012 00:03:14 +0000 (17:03 -0700)]
16x16 DCT blocks.

Set on all 16x16 intra/inter modes

Features:
- Butterfly fDCT/iDCT
- Loop filter does not filter internal edges with 16x16
- Optimize coefficient function
- Update coefficient probability function
- RD
- Entropy stats
- 16x16 is a config option

Have not tested with experiments.

hd:     2.60%
std-hd: 2.43%
yt:     1.32%
derf:   0.60%

Change-Id: I96fb090517c30c5da84bad4fae602c3ec0c58b1c

11 years agoMerge "A few more conversions from 32-bit to 64-bit RD calculations." into experimental
Ronald S. Bultje [Thu, 2 Aug 2012 22:43:41 +0000 (15:43 -0700)]
Merge "A few more conversions from 32-bit to 64-bit RD calculations." into experimental

11 years agoDefine INT64_MAX for msvc to build
Yaowu Xu [Thu, 2 Aug 2012 18:36:55 +0000 (11:36 -0700)]
Define INT64_MAX for msvc to build

Change-Id: I6cb88d87b7549ded1de6ff9ef65ff958ad448999

11 years agoA few more conversions from 32-bit to 64-bit RD calculations.
Ronald S. Bultje [Thu, 2 Aug 2012 18:01:48 +0000 (11:01 -0700)]
A few more conversions from 32-bit to 64-bit RD calculations.

Change-Id: Ida01bb8f4b35fde24b0f096329d326833f1fdc7e

11 years agoMake RDCOST() results 64-bit.
Ronald S. Bultje [Thu, 2 Aug 2012 17:07:33 +0000 (10:07 -0700)]
Make RDCOST() results 64-bit.

This prevents various integer overflows that several of us have been
seeing in the past few days.

Change-Id: If0020613a608e13d311b7838796c7ad53cb97255

11 years agoUse 8x8 DCT transform for I8X8 prediction mode
Jingning Han [Wed, 1 Aug 2012 17:18:25 +0000 (10:18 -0700)]
Use 8x8 DCT transform for I8X8 prediction mode

Apply 2D-DCT transform of dimension 8x8 to encode prediction
residuals of I8X8 mode.
Brought back block type 3 probability context model for 8x8 tokens,
which is used for the coefficients of Y blocks in I8x8 modes. The
coefficient costs estimate of I8X8 mode in rate-distortion is also
changed appropriately.
Performance results:
derf:   0.246
yt:     0.114
std-hd: 0.730
hd:     0.670

Change-Id: If1d970eeb4e1827c9f0d2c5b27d33089b347ea27

11 years agoRemoved macros for merged experiments
Adrian Grange [Tue, 31 Jul 2012 19:07:26 +0000 (12:07 -0700)]
Removed macros for merged experiments

Removed two macros corresponding to experiments that were
merged into the main code.

Change-Id: I894e8b509a2bb88557f9aba6f226ed7807745065

11 years agoMerging and bug-fix in enhanced_interp experiment
Deb Mukherjee [Sat, 28 Jul 2012 00:46:33 +0000 (17:46 -0700)]
Merging and bug-fix in enhanced_interp experiment

Merged the enhanced_interp experiment.
Found and fixed a bug in the include files framework, whereby
certain encoder files were still using the old INTERP_EXTEND
value of 3 instead of 4. The thresholds for mv range mcomp.c
need a small adjustment to prevent crashes.

The results are more or less unchanged.

Change-Id: Iac5008390f1efc97ce1102fbb5f8989c847fb579

11 years agoAdds support for switchable interpolation filters.
Deb Mukherjee [Wed, 18 Jul 2012 20:43:01 +0000 (13:43 -0700)]
Adds support for switchable interpolation filters.

Allows for swtiching/setting interpolation filters at the MB
level. A frame level flag indicates whether to use a specifc
filter for the entire frame or to signal the interpolation
filter for each MB. When switchable filters are used, the
encoder chooses between 8-tap and 8-tap sharp filters. The
code currently has options to explore other variations as well,
which will be cleaned up subsequently.

One issue with the framework is that encoding is slow. I
tried to do some tricks to speed things up but it is still slow.
Decoding speed should not be affected since the number of
filter taps remain unchanged.

With the current version, we are up 0.5% on derf on average but
some videos city/mobile improve by close to 4 and 2% respectively.
If we did a full-search by turning the SEARCH_BEST_FILTER flag
on, the results are somewhat better.

The framework can be combined with filtered prediction, and I
seek feedback regarding that.

Rebased.

Change-Id: I8f632cb2c111e76284140a2bd480945d6d42b77a

11 years agoMerge "Merges several experiments" into experimental
Deb Mukherjee [Fri, 27 Jul 2012 19:22:55 +0000 (12:22 -0700)]
Merge "Merges several experiments" into experimental

11 years agoMerges several experiments
Deb Mukherjee [Fri, 27 Jul 2012 18:29:46 +0000 (11:29 -0700)]
Merges several experiments

The following five experiments are merged:

newentropy
newupdate
adaptive_entropy (also includes a couple of parameter changes
                  that improves results a little
                  in common/entropymode.c and encoder/modecosts.c
                  that were not merged from the internal branch)
newintramodes
expanded_coef_context

Change-Id: I8a142a831786ee9dc936f22be1d42a8bced7d270

12 years agoMerge "shared object on mac osx" into experimental
John Koleszar [Fri, 27 Jul 2012 00:09:48 +0000 (17:09 -0700)]
Merge "shared object on mac osx" into experimental

12 years agoshared object on mac osx
jimbankoski [Thu, 26 Jul 2012 02:39:33 +0000 (19:39 -0700)]
shared object on mac osx

Change-Id: Ibf357eb492e7d5883fbdf1ddf455e28767c1d65d

12 years agoMerge "Added const specifier to remove warning" into experimental
Adrian Grange [Wed, 25 Jul 2012 14:53:39 +0000 (07:53 -0700)]
Merge "Added const specifier to remove warning" into experimental

12 years agoMerge "Use macro for filter extension length" into experimental
Adrian Grange [Wed, 25 Jul 2012 14:53:08 +0000 (07:53 -0700)]
Merge "Use macro for filter extension length" into experimental

12 years agomakefile: fix .so build rule
John Koleszar [Tue, 24 Jul 2012 23:18:38 +0000 (16:18 -0700)]
makefile: fix .so build rule

Use $^ vs $? to capture all prerequisites, rather than only newer ones.

Change-Id: I464ffb2913cf60f5ca5e07518ad4bf7da10baf87

12 years agoAdded const specifier to remove warning
Adrian Grange [Tue, 24 Jul 2012 19:50:03 +0000 (12:50 -0700)]
Added const specifier to remove warning

The "codecs" array is defined as const so too
should the local variable that points too it.

Change-Id: I536a9ced52257dc44a04fc1a3cad94c1e86f69aa

12 years agoUse macro for filter extension length
Adrian Grange [Tue, 24 Jul 2012 19:20:15 +0000 (12:20 -0700)]
Use macro for filter extension length

Replaced local definitions of the extension required
by the filters with the globally defined value.

Change-Id: If9e590a1f2e5b0bdc2d3e3c3f04aacbd3b09bfee

12 years agoMerge "Update 8x8 tokenizer to not encode an EOB if seg_eob is active." into experimental
Daniel Kang [Tue, 24 Jul 2012 19:33:26 +0000 (12:33 -0700)]
Merge "Update 8x8 tokenizer to not encode an EOB if seg_eob is active." into experimental

12 years agoremove extra end of line
Jim Bankoski [Tue, 24 Jul 2012 16:33:47 +0000 (09:33 -0700)]
remove extra end of line

This commit fixes up shared lib builds on linux.

Change-Id: Ib109dc5a226dc5d7874d2e5b333466cbfd4f4661

12 years agoUpdate 8x8 tokenizer to not encode an EOB if seg_eob is active.
Daniel Kang [Mon, 23 Jul 2012 21:58:07 +0000 (14:58 -0700)]
Update 8x8 tokenizer to not encode an EOB if seg_eob is active.

Change-Id: Id2bac0597b6dd1ce41bd78cbd9e9d876b71cd8a2

12 years agoDll build of libvpx
Jim Bankoski [Mon, 23 Jul 2012 19:32:59 +0000 (12:32 -0700)]
Dll build of libvpx

Change-Id: I74e50b4dfbe73eb98e1dce1695a9973f637220c0

12 years agofixed a compiling issue
Yaowu Xu [Thu, 19 Jul 2012 21:52:04 +0000 (14:52 -0700)]
fixed a compiling issue

Change-Id: I9ccbea76eaeb81ce7b833dd92216734725796e84

12 years agoAdds hybrid transform
Jingning Han [Mon, 25 Jun 2012 19:26:09 +0000 (12:26 -0700)]
Adds hybrid transform

Adds ADST/DCT hybrid transform coding for Intra4x4 mode.
The ADST is applied to directions in which the boundary
pixels are used for prediction, while DCT applied to
directions without corresponding boundary prediction.

Adds enum TX_TYPE in b_mode_infor to indicate the transform
type used.

Make coding style consistent with google style.
Fixed the commented issues.

Experimental results in terms of bit-rate reduction:
derf:   0.731%
yt:     0.982%
std-hd: 0.459%
hd:     0.725%

Will be looking at 8x8 transforms next.

Change-Id: I46dbd7b80dbb3e8856e9c34fbc58cb3764a12fcf

12 years agoMerge "removed floating point version 8x8 fdct" into experimental
Yaowu Xu [Wed, 18 Jul 2012 17:53:57 +0000 (10:53 -0700)]
Merge "removed floating point version 8x8 fdct" into experimental

12 years agoMerge "cleanup experiments in configure" into experimental
Yaowu Xu [Wed, 18 Jul 2012 17:53:46 +0000 (10:53 -0700)]
Merge "cleanup experiments in configure" into experimental

12 years agoDon't auto-default to comp-pred unless content is static.
Ronald S. Bultje [Mon, 16 Jul 2012 23:46:46 +0000 (16:46 -0700)]
Don't auto-default to comp-pred unless content is static.

Although it can be useful, in some cases it causes artifacts in motion-
based content.

Change-Id: I27bb80901020c40636e2018a8217759175a23f5b

12 years agoremoved floating point version 8x8 fdct
Yaowu Xu [Wed, 18 Jul 2012 05:50:47 +0000 (22:50 -0700)]
removed floating point version 8x8 fdct

the integer version has very good precision, the float version is no
longer useful. this commit also removes the experiment option from
configure script.

Change-Id: Ibb92e63c9f5083357cdf89c559d584a7deb3353f

12 years agocleanup experiments in configure
Yaowu Xu [Wed, 18 Jul 2012 05:34:07 +0000 (22:34 -0700)]
cleanup experiments in configure

this commit removes a number of experiment options from configure
script. the associated experiments are already fully merged, the
options in configure script have no effect at all.

Change-Id: I8054ccaee0a04610162ed76ac9e59c4538217113

12 years agoRestyle code
John Koleszar [Fri, 13 Jul 2012 22:21:29 +0000 (15:21 -0700)]
Restyle code

Approximate the Google style guide[1] so that that there's a written
document to follow and tools to check compliance[2].

[1]: http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml
[2]: http://google-styleguide.googlecode.com/svn/trunk/cpplint/cpplint.py

Change-Id: Idf40e3d8dddcc72150f6af127b13e5dab838685f

12 years agoMerge "Fix bug in reference frame counting." into experimental
Ronald S. Bultje [Tue, 17 Jul 2012 17:37:06 +0000 (10:37 -0700)]
Merge "Fix bug in reference frame counting." into experimental

12 years agoMerge "Add missing mv_{col,row}_{min,max}_sb variables to MACROBLOCK struct." into...
Tim Terriberry [Tue, 17 Jul 2012 01:47:05 +0000 (18:47 -0700)]
Merge "Add missing mv_{col,row}_{min,max}_sb variables to MACROBLOCK struct." into experimental

12 years agoFix bug in reference frame counting.
Ronald S. Bultje [Tue, 17 Jul 2012 00:49:37 +0000 (17:49 -0700)]
Fix bug in reference frame counting.

vp8_encode_inter_macroblock() is called in both pick_mb_modes() as
well as encode_sb(), thus the number of macroblocks in the counter
were twice as big as actual numbers. This doesn't affect output.

Change-Id: I6de8a996ee44d2f7f2080d8d2177dd7bc6207c93

12 years agoSimplify vp8_decode_mb_tokens_8x8.
Daniel Kang [Wed, 11 Jul 2012 00:23:38 +0000 (17:23 -0700)]
Simplify vp8_decode_mb_tokens_8x8.

Change-Id: Icac5b18e5c832681cea866679796a1dd4278cfb8

12 years agoSimplify vp8_decode_mb_tokens.
Daniel Kang [Tue, 10 Jul 2012 16:36:56 +0000 (09:36 -0700)]
Simplify vp8_decode_mb_tokens.

Change-Id: Ib6866e491994f6c7eeb6c2e5ecd1ff54cc187610

12 years agoAdd missing mv_{col,row}_{min,max}_sb variables to MACROBLOCK struct.
Ronald S. Bultje [Mon, 16 Jul 2012 22:25:59 +0000 (15:25 -0700)]
Add missing mv_{col,row}_{min,max}_sb variables to MACROBLOCK struct.

This allows CONFIG_SUPERBLOCKS experiment to almost compile succesfully,
except for the missing pick_sb_modes() function.

Change-Id: Ib2322f2aacdc371e8066f2eb4a8d761c40490b4d

12 years agoUse 8x8 transform for all 16x16 intra prediction modes in keyframes.
Ronald S. Bultje [Mon, 2 Jul 2012 18:13:18 +0000 (11:13 -0700)]
Use 8x8 transform for all 16x16 intra prediction modes in keyframes.

Also use the 8x8 transform in the RD loop.

Change-Id: If1a25aa15d3f64e05c9a31875e309d8cd5bc812d

12 years agoKeep statistics for chosen intra modes in keyframes also.
Ronald S. Bultje [Tue, 3 Jul 2012 20:57:27 +0000 (13:57 -0700)]
Keep statistics for chosen intra modes in keyframes also.

Change-Id: Ibfecf1fb0fcf51fb349746fec015b1a3e44a4530

12 years agoMerge snapshot 2 development history
John Koleszar [Thu, 12 Jul 2012 16:24:43 +0000 (09:24 -0700)]
Merge snapshot 2 development history

Create a merge between the experimental development history and the
previously published snapshot.

Change-Id: If320df72a6bbefec53833626d08dbc9678be2d2d

12 years agoMerge snapshot 1 development history
John Koleszar [Thu, 12 Jul 2012 16:22:01 +0000 (09:22 -0700)]
Merge snapshot 1 development history

Merge in the git history leading up to the first experimental
snapshot.

Change-Id: Ifbdbd5bdb585864b3f996c562ef38b6306731251

12 years agochange to enable encoder to clamp UV motion vector
Yaowu Xu [Fri, 29 Jun 2012 00:03:29 +0000 (17:03 -0700)]
change to enable encoder to clamp UV motion vector

This is to avoid a rare encoder/decoder mismatch for MB using SPLITMV
mode. In decoder, the UV mv can be determined to need clamp, but the
flag is never set in encoder motion vector selection process, and the
clamp is not done in encoding in encoder.

Change-Id: I60520d3f790354c7855dadf03f0978ea9b77e2c0

12 years agoMerge "Add 8x8 fDCT unit test." into experimental
Daniel Kang [Sat, 30 Jun 2012 00:33:36 +0000 (00:33 +0000)]
Merge "Add 8x8 fDCT unit test." into experimental

12 years agoGet rid of some cast.
Christian Duvivier [Fri, 29 Jun 2012 22:05:11 +0000 (15:05 -0700)]
Get rid of some cast.

Change-Id: Iff5ccf2400bcb7b78c7b70f289ea65c982efddd5

12 years agoFix warnings.
Christian Duvivier [Fri, 29 Jun 2012 21:46:11 +0000 (14:46 -0700)]
Fix warnings.

Change-Id: I6dd27a0ea661e6f10a55d7841021b66ae4fc72ae

12 years agoAdd 8x8 fDCT unit test.
Daniel Kang [Thu, 28 Jun 2012 23:26:31 +0000 (16:26 -0700)]
Add 8x8 fDCT unit test.

Also factorize ACMRandom to acm_random.h.

Change-Id: I3b6eeb36fcbf7ae6dd3d2892bc40348f5c17982b

12 years agoAdd lossless compression mode.
Hui Su [Thu, 14 Jun 2012 02:03:31 +0000 (19:03 -0700)]
Add lossless compression mode.

This commit adds lossless compression capability to the experimental
branch. The lossless experiment can be enabled using --enable-lossless
in configure. When the experiment is enabled, the encoder will use
lossless compression mode by command line option --lossless, and the
decoder automatically recognizes a losslessly encoded clip and decodes
accordingly.

To achieve the lossless coding, this commit has changed the following:
    1. To encode at lossless mode, encoder forces the use of unit
quantizer, i.e, Q 0, where effective quantization is 1. Encoder also
disables the usage of 8x8 transform and allows only 4x4 transform;
    2. At Q 0, the first order 4x4  DCT/IDCT have been switched over
to a pair of forward and inverse Walsh-Hadamard Transform
(http://goo.gl/EIsfy),  with proper scaling applied to match the range
of the original 4x4 DCT/IDCT pair;
    3. At Q 0, the second order remains to use the previous
walsh-hadamard transform pair. However, to maintain the reversibility
in second order transform at Q 0, scaling down is applied to first
order DC coefficients prior to forward transform, and scaling up is
applied to the second order output prior to quantization. Symmetric
upscaling and downscaling are added around inverse second order
transform;
    4. At lossless mode, encoder also disables a number of minor
features to ensure no loss is introduced, these features includes:
        a. Trellis quantization optimization
        b. Loop filtering
        c. Aggressive zero-binning, rounding and zero-bin boosting
        d. Mode based zero-bin boosting

Lossless coding test was performed on all clips within the derf set,
to verify that the commit has achieved lossless compression for all
clips. The average compression ratio is around 2.57 to 1.
(http://goo.gl/dEShs)

Change-Id: Ia3aba7dd09df40dd590f93b9aba134defbc64e34

12 years agoMerge "Port Yaowu's 4x4 fDCT test." into experimental
Daniel Kang [Thu, 28 Jun 2012 23:16:00 +0000 (23:16 +0000)]
Merge "Port Yaowu's 4x4 fDCT test." into experimental

12 years agoPort Yaowu's 4x4 fDCT test.
Daniel Kang [Wed, 27 Jun 2012 01:11:33 +0000 (18:11 -0700)]
Port Yaowu's 4x4 fDCT test.

Also fix unit testing.

Change-Id: Iacdc6f1ec53388e093cda1c13e4379e83d4a6535

12 years agoMerge "Added Prediction Filter to Mode Selection" into experimental
Yaowu Xu [Wed, 27 Jun 2012 23:37:49 +0000 (23:37 +0000)]
Merge "Added Prediction Filter to Mode Selection" into experimental

12 years agoAdded Prediction Filter to Mode Selection
Adrian Grange [Mon, 25 Jun 2012 23:23:58 +0000 (16:23 -0700)]
Added Prediction Filter to Mode Selection

Added the ability to optionally filter the prediction data
when inter modes are selected (excludes SPLITMV, for now).

The mode selection loop considers both the filtered and
non-filtered prediction data when choosing mode. The filter
can be turned on/off at the frame-level, or signaled for
each MB.

Change-Id: I1b783c71d95a361ab36c761b07e8a6b06bc36822

12 years agoMerge "Enable unit test framework in experimental branch." into experimental
Yaowu Xu [Tue, 26 Jun 2012 21:15:53 +0000 (21:15 +0000)]
Merge "Enable unit test framework in experimental branch." into experimental

12 years agoEnable unit test framework in experimental branch.
Ronald S. Bultje [Mon, 25 Jun 2012 16:58:09 +0000 (09:58 -0700)]
Enable unit test framework in experimental branch.

Change-Id: I27c98025b2857e2911005a52dd57c46e2524e815

12 years agoContinued adaptive entropy coding
Deb Mukherjee [Wed, 20 Jun 2012 12:07:24 +0000 (05:07 -0700)]
Continued adaptive entropy coding

Incorporates mv_ref, mbsplit and second_mv into the adaptive
entropy framework. The mv_ref framework has been modified from
before.

Adds some clean-ups and fixes.

Results with the adaptive entropy experiment are currently up by
+1.93% on derf; +2.33% std-hd and +1.87% yt-hd.

Fixed a nasty intermittent bug.

Change-Id: I4b1ac9f9483b48432597595195bfec05f31d1e39

12 years agoSign-extend input argument so it can be used in pointer arithmetic.
Ronald S. Bultje [Mon, 25 Jun 2012 18:23:09 +0000 (11:23 -0700)]
Sign-extend input argument so it can be used in pointer arithmetic.

Change-Id: I6cbd4de96f9dcc783cef170bfd7652f6cbee36a2

12 years agoMerge "x86inc: add some more format identifiers for elf file format recognition....
Ronald S. Bultje [Wed, 20 Jun 2012 18:26:33 +0000 (18:26 +0000)]
Merge "x86inc: add some more format identifiers for elf file format recognition." into experimental

12 years agoMerge "Reset executable flags for configure." into experimental
Ronald S. Bultje [Wed, 20 Jun 2012 18:00:27 +0000 (18:00 +0000)]
Merge "Reset executable flags for configure." into experimental

12 years agox86inc: add some more format identifiers for elf file format recognition.
Ronald S. Bultje [Wed, 20 Jun 2012 16:48:54 +0000 (09:48 -0700)]
x86inc: add some more format identifiers for elf file format recognition.

Change-Id: I3582c64200eed3606a4b57a9f78624ec46041461

12 years agolibs.mk: add x86inc.asm to the CODEC_SRCS.
Ronald S. Bultje [Tue, 19 Jun 2012 22:34:49 +0000 (15:34 -0700)]
libs.mk: add x86inc.asm to the CODEC_SRCS.

Change-Id: I45ea0369ad489080c2505269855a46ca1d3624f7

12 years agoMerge "Add comments to intra prediction probability tables." into experimental
Ronald S. Bultje [Tue, 19 Jun 2012 15:43:41 +0000 (15:43 +0000)]
Merge "Add comments to intra prediction probability tables." into experimental

12 years agoFix a bunch of warnings.
Christian Duvivier [Fri, 15 Jun 2012 01:14:43 +0000 (18:14 -0700)]
Fix a bunch of warnings.

Change-Id: I883b4f63559c1cf66a25016e946b1b1ae98a20da

12 years agoReset executable flags for configure.
Ronald S. Bultje [Mon, 18 Jun 2012 21:21:30 +0000 (14:21 -0700)]
Reset executable flags for configure.

This was accidently disabled in 1fe85a35e0451434d183da71e4e85796d11ca868.

Change-Id: I09dbfecfe45b28dec75b27a627e3065f9c7dc8b2

12 years agox86inc: Move x86inc to the correct location.
Daniel Kang [Mon, 18 Jun 2012 19:45:34 +0000 (12:45 -0700)]
x86inc: Move x86inc to the correct location.

Change-Id: I6802731a4d15feef5ce62993dc505ded55c40f7e

12 years agoAdd comments to intra prediction probability tables.
Ronald S. Bultje [Mon, 18 Jun 2012 16:22:53 +0000 (09:22 -0700)]
Add comments to intra prediction probability tables.

Change-Id: Iec81423e8e6c50acd9e10f69bc99ad0e9058517d

12 years agox86inc.asm: fix symbol mangling and PIC handling on Win64/Mac64.
Ronald S. Bultje [Mon, 18 Jun 2012 19:34:51 +0000 (12:34 -0700)]
x86inc.asm: fix symbol mangling and PIC handling on Win64/Mac64.

Change-Id: I97aa175346683184f9430d880593b291a563e04f

12 years agoAdaptive entropy coding of coefficients, modes, mv.
Deb Mukherjee [Tue, 5 Jun 2012 22:25:07 +0000 (15:25 -0700)]
Adaptive entropy coding of coefficients, modes, mv.

This patch incorporates adaptive entropy coding of coefficient tokens,
and mode/mv information based on distributions encountered in a frame.
Specifically, there is an initial forward update to the probabilities
in the bitstream as before for coding the symbols in the frame, however
at the end of decoding each frame, the forward update to the
probabilities is reverted and instead the probabilities are updated
towards the actual distributions encountered within the frame.
The amount of update is weighted by the number of hits within each
context.

Results on derf/hd/std-hd are all up by 1.6%.

On derf, the most of the gains come from coefficients, however for the
hd and std-hd sets, the most of the gains come from the mode/mv
information updates.

Change-Id: I708c0e11fdacafee04940fe7ae159ba6844005fd

12 years agoMerge "Adds x86inc.asm and update idct/dequant mmx" into experimental
Daniel Kang [Fri, 15 Jun 2012 17:13:08 +0000 (17:13 +0000)]
Merge "Adds x86inc.asm and update idct/dequant mmx" into experimental

12 years agoAdds x86inc.asm and update idct/dequant mmx
Daniel Kang [Fri, 8 Jun 2012 00:25:54 +0000 (17:25 -0700)]
Adds x86inc.asm and update idct/dequant mmx

Updates idct/dequant mmx assembly to work with vpnext instead of vp8.

Also adds x86inc.asm

Change-Id: I6e147d5e89177ae449271e97e50d082eb11b078e

12 years agochanged to use a fixed number for update probabity
Yaowu Xu [Thu, 24 May 2012 19:02:12 +0000 (12:02 -0700)]
changed to use a fixed number for update probabity

This commit is to remove two arrays, which contain the probabilities
of how likely each probability in coef_probs table is updated. The
commit changed to use a fixed number "252".

Surprisedly, the overall impact on quality is close to zero, which
basically says the two big static arrays are not helpful at all.
derf: -0.016%, -0.020%
std-hd: 0.000%, -0.013%
yt: -0.022%, +0.007%
yt-hd: -0.038%, +0.034%

Change-Id: Ifee94d28a37dcab4f1d2b994bd5b07575be42b72

12 years agoAdded the ability to accumulate coef stats across encodings
Yaowu Xu [Tue, 8 May 2012 19:38:39 +0000 (12:38 -0700)]
Added the ability to accumulate coef stats across encodings

This commit added the ability to accumulate the coef stats across
different encodings using an intermediate binary stats files. The
accumulation happens only the binary stats file exists in current
directory. The encoder needs to be built with "ENTROPY_STATS" to
allow the output. The commit also fixed a few formating issues in
output stats file.

Change-Id: Ib1a41180aa554845cf51e4421a230b128a3a82b4

12 years agoMerge "Merge of further two pass rc clean up and adjustments." into experimental
Paul Wilkins [Tue, 12 Jun 2012 16:29:46 +0000 (16:29 +0000)]
Merge "Merge of further two pass rc clean up and adjustments." into experimental

12 years agoMerge "Key frame and GF sizing changes." into experimental
Paul Wilkins [Tue, 12 Jun 2012 16:19:13 +0000 (16:19 +0000)]
Merge "Key frame and GF sizing changes." into experimental

12 years agoMerge of further two pass rc clean up and adjustments.
Paul Wilkins [Wed, 30 May 2012 11:54:34 +0000 (12:54 +0100)]
Merge ... further two pass rc clean up and adjustments.

Changes to calculation of  sr_coded_error to include 0,0 case.

Experimental use of sr_coded_error in calculating correction factor
for estimating the allowable Q range.

Reinstated some code needed for calculating section_intra_rating.

Add flash detection in calculation of KF boost

Increased tolerance in testing candidate key frames (needed with
longer motion search as this tends to slightly increase inter %.

Zbin changes for 8x8.

Other minor adjustments, refactoring and bug fixes.

Reinstated some motion break out clauses in boost loop
as their removal hurt a few 50fps  clips badly in the std set.
It may be possible to remove them again later if a better way
can be found of preventing overly long gf intervals.

Change-Id: Iee686d0c31072828bb1ccd2bc63f5f1c7c548ea2

12 years agoKey frame and GF sizing changes.
Paul Wilkins [Thu, 7 Jun 2012 12:39:20 +0000 (13:39 +0100)]
Key frame and GF sizing changes.

Changes to the equations for kf and gf minQ and to
the boost calculations for kg and gf

Change-Id: I312031c910e6a575334f49075c32f49a8dfff239

12 years agoFixed bug where invalid pointer is dereferenced
Adrian Grange [Thu, 31 May 2012 16:51:54 +0000 (09:51 -0700)]
Fixed bug where invalid pointer is dereferenced

Variables m & mi were being dereferenced when they might
hold invalid values.

The fix is simply to move these dereferences to after the
point at which mb_row and mb_col are tested for validity.

Change-Id: Ib16561efa9792dc469759936189ea379d374ad20

12 years agoRate control fix.
Paul Wilkins [Wed, 30 May 2012 10:29:49 +0000 (11:29 +0100)]
Rate control fix.

This fix addresses some problems with very complex clips like
handling of flashes on clips like crew (which was made worse
by an earlier patch (derf and std-hd)).

Most clips a small effect but some between 1 & 2%

Derf +0.039, +0.211%
YT +0.042, +0.083%

Change-Id: I65fc7c13afc31482040068544dd65b8808f5cb4a