Commit Graph

10194 Commits

Author SHA1 Message Date
Peter de Rivaz
65d2615208 Fixed overflow in highbitdepth deblocking
Change-Id: Ia9f592e9ca3a1b8414c6bb39541a7fbdada4702a
2014-06-12 13:35:10 +01:00
Deb Mukherjee
9b33e1088f Adding error checking for 422/444 inputs.
For 422 and 444 inputs, adds checks for profile.

Change-Id: I1d8e1120d4214101ba9c27b81d4381dc61b22de5
2014-06-11 11:43:58 -07:00
Deb Mukherjee
8b72b71c1c Merge "Reworks high-bit-depth profiles" into highbitdepth 2014-06-11 06:04:14 -07:00
Deb Mukherjee
093a32ffd7 Reworks high-bit-depth profiles
Splits profile 2 into Profile 2 and 3, where profile 2
ony supports 420 sampling, while profile 3 adds 422/444 and
alpha. Keeps room for further expansion.

Also makes some minor changes in the decoder parameters,
replacing --convert-to-8bit with output-bit-depth.

Change-Id: I713525880512de6c36698d212795db1543c1d0dd
2014-06-10 17:30:45 -07:00
Peter de Rivaz
321bd42060 Improved highbitdepth RDO
Change-Id: I5bc6e94d9f3f64b2467f357da0d097347ad5f0c6
2014-06-10 16:52:31 -07:00
Deb Mukherjee
f08489e609 Better block error computation
Shift is applied after high-precision arithmetic rather than
before.

Change-Id: Ibd178fe8d10600935f6d5e790e89f3b2f8b4afcf
2014-06-09 17:41:42 -07:00
Peter de Rivaz
4320ac26ee Fixed overflow in high transforms
Added extremal forward and inverse tests
for the 8x8 DCT.

Change-Id: I5445c6449b0a9bda1359072617b915446510db69
2014-06-09 09:53:45 +01:00
Deb Mukherjee
e91d29dea3 Alternate rounding
Improves performance on derf by 0.89% for 10-bit internal
and by 0.55% for 12-bit internal, both for 8-bit sources.

Change-Id: I181fd9fb10e2259233d67cdd7933fb3cae334afc
2014-06-06 05:10:31 -07:00
Peter de Rivaz
091829d376 Scaled deblocking limits for highbitdepth
Slightly improves PSNR for some sequences.
Also fixes a bug.

Change-Id: Ibc4c2f5f5c280470c99dad642d153bd91cd90798
2014-06-05 03:22:28 -07:00
Peter de Rivaz
666fd1300c Added high precision transforms
The high precision are only used if
configured with --enable-high-transforms

It gives greater precision in the transform.
This gives PSNR improvements when encoding
true 10 and 12 bit streams.

At the moment, the quantizer used is shifted
up by 2/4 for 10/12 bits so that the quantized
coefficients fit in the current token range.

Change-Id: Ia9c19a417cf030b8a7a889fcb3f5788bfca8215f
2014-06-05 01:09:32 -07:00
Debargha Mukherjee
47354ee2f4 Merge "Fixed C postproc implementation" into highbitdepth 2014-06-04 11:23:40 -07:00
Debargha Mukherjee
0c95fcc25c Merge "Corrected highbitdepth temporal filter" into highbitdepth 2014-06-04 11:22:45 -07:00
Peter de Rivaz
3224fd3c66 Fixed C postproc implementation
Destination stride was not used correctly.

Change-Id: I503d037608fdcde3f433a87e103426ad4a6b9ef4
2014-06-04 17:28:24 +01:00
Peter de Rivaz
822c27cd42 Corrected highbitdepth temporal filter
Change-Id: Ic9aa3672ce0fe257133938b8e3a93f28d3cbb877
2014-06-04 16:07:24 +01:00
Peter de Rivaz
42a1a3e3ba Fix temporal filter for 422
Change-Id: I8f2fb8b8860010f0460a200c31edec4a17c773d8
2014-06-04 13:17:46 +01:00
Deb Mukherjee
51790ab228 Some code cleanups
Removes duplicate enums and other cosmetic changes.

Change-Id: Ic8b47534ac3b2b554a79ff1437fbe5f0503a5732
2014-06-03 16:20:23 -07:00
Peter de Rivaz
1ff621ec99 Added support for 10/12bit y4m
vpxenc now accepts high bitdepth y4m files
vpxdec now produces high bitdepth y4m files
(Only if the bitstream is high bitdepth)
Can force 8bit output via --covert-to-8bit

Change-Id: Ife9fc40772aceed32ba47d7ca81024ed09563721
2014-06-03 17:46:06 +01:00
Peter de Rivaz
b7649e15c2 Improved highbitdepth temporal filter
Increasing the strength when filtering
frames for highbitdepth gives a PSNR gain.

Change-Id: Iee2f776c1ae7b8da2ca4d5e58bb11fd0be2483f4
2014-06-03 14:22:43 +01:00
Peter de Rivaz
a79f06696d Changed rounding in high bitdepth
Doing the round before the subtraction
gives PSNR improvements.

Change-Id: Ic6fd16a9df9b9fdc2a4fa4140e8fa0994bd261a0
2014-06-03 14:07:10 +01:00
Peter de Rivaz
2baec56312 Tidied high bitdepth variance
Refactored code to match current style on master.
Also fixed a bug where some sse results were
not being shifted for high bitdepth.
Also increased internal bitdepth for variance to
avoid saturation.
Also added rounding for variance when computing
shifted results.

Change-Id: I322bbc1b9abe82c8ef72ab97991720240ddf755c
2014-06-03 12:47:17 +01:00
Deb Mukherjee
eb863b46f3 Reworks PSNR/SSIM to work on source bit-depth
Change-Id: Ifcd31186b67a57d57abd112d64d163c7b76728e9
2014-05-29 17:52:28 -07:00
Deb Mukherjee
5a2a78117f Adds input bit depth parameter and refactoring
Adds a place holder input bit depth parameter. Also
implements the bit-depth parameter and the new paramter
directly using config paramters rather than controls.
That makes it more convenient to handle.

Change-Id: Ie5bdc2d8eb5627d7a5f520b3d241aac5395dcf3d
2014-05-27 22:34:30 -07:00
Peter de Rivaz
cab30216a5 Merge branch 'master' into highbitdepth
Merges from master (May 26) to highbitdepth.

Change-Id: I553888a7b169b48e7bea07325d1127627a8f944e
2014-05-27 09:53:35 -07:00
Paul Wilkins
debd048531 Merge "Further first pass allocation changes." 2014-05-25 14:48:36 -07:00
Paul Wilkins
620ce56154 Merge "Re-factor bit allocation in first pass." 2014-05-25 14:47:35 -07:00
Jingning Han
26a76dc3f8 Merge changes I4f0f4378,I02250d13
* changes:
  Re-enable unit test on neon implementation of 16x16 idct
  Turn on unit test for inverse 16x16 2D-DCT ssse3
2014-05-23 16:02:09 -07:00
Jingning Han
59c3f446fe Merge "Inverse 16x16 2D-DCT SSSE3 implementation" 2014-05-23 16:01:22 -07:00
Jingning Han
74a854fcab Re-enable unit test on neon implementation of 16x16 idct
The previous change only tunes forward transform. It doesn't affect
the neon implementation of the inverse transform. Hence turn the
unit test on.

Change-Id: I4f0f43783b98814d1eee53182209f9669d538140
2014-05-23 15:11:16 -07:00
Jingning Han
e4a758bbd4 Turn on unit test for inverse 16x16 2D-DCT ssse3
Change-Id: I02250d1364ca2e637585a8db020cba9fd4a95664
2014-05-23 15:11:05 -07:00
Jingning Han
48b0891370 Inverse 16x16 2D-DCT SSSE3 implementation
This commit enables the SSSE3 implementation of full inverse 16x16
2D-DCT. The unit runtime goes down from 1642 cycles to 1519 cycles,
about 7% speed-up.

Change-Id: I14d2fdf9da1fb4ed1e5db7ce24f77a1bfc8ea90d
2014-05-23 15:09:35 -07:00
Yaowu Xu
7e673cb641 Merge "Use extreme values for input in convovle tests" 2014-05-23 14:45:30 -07:00
Yunqing Wang
67ca5b586a Merge "Fix decoder mismatch in sub-pixel SSSE3 intrinsic filters" 2014-05-23 14:24:48 -07:00
Peter de Rivaz
efd115c415 Merge commit '9e7b09bc' into highbitdepth
Change-Id: I0376c867e7abfa7713ac6e7a4e604c8384fff58b
2014-05-23 14:06:31 -07:00
Yaowu Xu
077144d206 Use extreme values for input in convovle tests
The intepolation filter functions can be better tested withe extreme
values, especially given the optimization functions are prone to
overflow signed 16 bit intermediate value when operation order is
wrong.

Change-Id: I712142b0bc1e5969c692c0486a57ffa37c9742b5
2014-05-23 13:32:54 -07:00
Dmitry Kovalev
d7d7cedaaa Merge "Removing vp9_pragmas.h." 2014-05-23 12:58:00 -07:00
Paul Wilkins
1edbaeb09d Further first pass allocation changes.
Further changes to first pass allocation for gf/arf groups.
Three variables removed from TWO_PASS structure as only
now used locally. Dont adjust gf_group_bits in the post
encode update as this will no longer have any effect.

Change-Id: Iff89b225db923fc856f5d2aedbc899f1d7d68b55
2014-05-23 20:21:25 +01:00
Yunqing Wang
c5443fc881 Fix decoder mismatch in sub-pixel SSSE3 intrinsic filters
In 8-tap filtering, to guarantee the intermediate results fit in
16 bits, the order of accumulating the products needs to be done
correctly, and the largest product should be added last. This
patch fixed the problem using the method in commit "Correct ssse3
8/16-pixel wide sub-pixel filter calculation".

Change-Id: I79d0ad60c057b15011ece84cda9648eee0809423
2014-05-23 11:52:20 -07:00
Deb Mukherjee
6bfbb691e2 Merge "Fixes a bug for uninitialized frame buffers" 2014-05-23 11:01:09 -07:00
Alex Converse
52b32ad025 Merge "Use offset mode info when filling pc tree." 2014-05-23 10:19:13 -07:00
Alex Converse
7c8479acea Merge "Always partition check after keyframe (rt speed 5)" 2014-05-23 10:19:03 -07:00
Paul Wilkins
03eb06212a Re-factor bit allocation in first pass.
Restructuring to allocate the bits for each frame in
a GF group at the time the group is defined.

At the moment the allocation closely mirrors what
we had before.

Also changes the default rate adjustment method to
LONG_TERM_VBR_CORRECTION.

Change-Id: Ie5793c46c6b9c888cead5d8790792efd7d60b7c1
2014-05-23 18:01:54 +01:00
Yaowu Xu
9410330893 Merge "change to use assembly version of ssse3 filter code" 2014-05-23 08:02:28 -07:00
Deb Mukherjee
caba78ef49 Fixes a bug for uninitialized frame buffers
Fixes a bug introduced in
https://gerrit.chromium.org/gerrit/#/c/69779/13, where
uninitialized frame buffers due to corrupt and short
buffer sizes, may cause a crash.

This patch fixes the currently failing
video/processing/static_image/vp8_convert_test

Change-Id: I1b09e21482f292c11a2bfb4e570aef1d643410a7
2014-05-23 01:26:01 -07:00
Dmitry Kovalev
d1ad3b678b Merge "Adding several consts to assign_std_frame_bits()." 2014-05-22 19:26:39 -07:00
Dmitry Kovalev
8a571170a2 Merge "Removing unused third-party libraries." 2014-05-22 19:26:02 -07:00
Yaowu Xu
7a0c9b82f2 change to use assembly version of ssse3 filter code
As mismatchs were found  between the intrinsic version and c only. The
commit temporarily revert to use the matching assembly version to
allow further investigation.

Change-Id: I08436c47d4888b562c0eac8e8856d90a831442df
2014-05-22 17:11:57 -07:00
Yunqing Wang
aaf204e550 Merge "Fix a decoding mismatch in sub-pixel filters" 2014-05-22 17:09:14 -07:00
Alex Converse
b9c24dfa23 Always partition check after keyframe (rt speed 5)
Prevents too small partitions from being copied to the next frame.

Change-Id: I4b97c30b27d06051574d54aaaca5434407a0c9ff
2014-05-22 16:51:06 -07:00
Deb Mukherjee
48b21ac01f Merge "Fix for missing initialization of ratectrl vars" 2014-05-22 16:29:29 -07:00
Alex Converse
80e5326cf2 Use offset mode info when filling pc tree.
Use the appropriate subblock offset mode info rather than the parent
block base, when filling mbmi in the pc tree in nonrd_use_partition.
This mimics what is done in the vertical case and what is done for
both cases in nonrd_pick_partition.

This change has little practical effect at the moment since in speed 5
rt horizontal and vertical partitions are currently only used unpaired
at edges of the picture.

Change-Id: I4632f66ca84086dac56c7d36b45ddbe38a06f42a
2014-05-22 16:24:40 -07:00