Commit Graph

4664 Commits

Author SHA1 Message Date
Paul Wilkins
21ff7bdc72 Adjustments to key frame sizing.
Adjustments take heavier account of the frame near a kf
in deciding boost and limit the total number that can contribute.
Also adjusted the minq calculations such that in most cases we
generate a smaller key frame.
Modified the code that accounts for how static the sequence is and
added some adjustment based on image size. This is still very
crude but smaller images tend to behave better with a larger
delta between KF Q and other frames than larger image formats.
Changes give sizable gains in overall PSNR  on all the test sets but the
biggest gains (~3%) were on the std-hd set.
The gains were smaller for SSIM but still significant.
Average PSNR results are mixed because this metric can very easily
be altered by having a very good / lossless coding of one or two frames.
Some of the YT and YT-HD clips in particular have blank lead ins and
allowing lossless coding of these appears to make a big difference to
average PSNR but it reality does not help much at all.

Change-Id: I6bfe485a1d330b47c783832f1717c95c535464ec
2013-04-19 10:12:13 +01:00
John Koleszar
e714b366d2 Merge changes I320e160e,Iddd99733 into experimental
* changes:
  Removing rounding from UV MV calculation
  make buid_inter_predictors block size agnostic (luma)
2013-04-18 18:51:17 -07:00
John Koleszar
fc49a377d7 make buid_inter_predictors block size agnostic (chroma)
Updates to make non-SPLITMV inter predictors work for all
plane types.

Change-Id: I25dbef40b7ffcac30254b43eed1e22fc732378ae
2013-04-18 17:50:22 -07:00
John Koleszar
2987fa1dc1 Removing rounding from UV MV calculation
Consider the previous behavior for the MV 1 3/8 (11/8 pel). In the
existing code, the fractional part of the MV is considered separately,
and rounded is applied, giving a result of 6/8. Rounding is not required
in this case, as we're increasing the precision from a q3 to a q4, and
the correct value 11/16 can be represented exactly.

Slight gain observed (+.033 average on derf)

Change-Id: I320e160e8b12f1dd66aa0ce7966b5088870fe9f8
2013-04-18 17:47:17 -07:00
John Koleszar
4924934d2b make buid_inter_predictors block size agnostic (luma)
This commit converts the luma versions of vp9_build_inter_predictors_sb
to use a common function. Update the convolution functions to support
block sizes larger than 16x16, and add a foreach_predicted_block walker.

Next step will be to calculate the UV motion vector and implement SBUV,
then fold in vp9_build_inter16x16_predictors_mb and SPLITMV.

At the 16x16, 32x32, and 64x64 levels implemented in this commit, each
plane is predicted with only a single call to vp9_build_inter_predictor.
This is not yet called for SPLITMV. If the notion of SPLITMV/I8X8/I4X4
goes away, then the prediction block walker can go away, since we'll
always predict the whole bsize in a single step. Implemented using a
block walker at this stage for SPLITMV, as a 4x4 "prediction block size"
within the BLOCK_SIZE_MB16X16 macroblock. It would also support other
rectangular sizes too, if the blocks smaller than 16x16 remain
implemented as a SPLITMV-like thing. Just using 4x4 for now.

There's also a potential to combine with the foreach_transformed_block
walker if the logic for calculating the size of the subsampled
transform is made more straightforward, perhaps as a consequence of
supporing smaller macroblocks than 16x16. Will watch what happens there.

Change-Id: Iddd9973398542216601b630c628b9b7fdee33fe2
2013-04-18 17:42:55 -07:00
Dmitry Kovalev
77f4697a13 Fixing member names inside TOKENVALUE and TOKENEXTRA structs.
Change-Id: I183ec5819d4d80966c92db36db75b8c3be0d381d
2013-04-18 16:18:08 -07:00
Dmitry Kovalev
54f843c891 Merge "Fixing rounding inside vp9_mv_bit_cost function." into experimental 2013-04-18 16:09:28 -07:00
Dmitry Kovalev
9e170c1d4d Replacing BOOL_DECODER with vp9_reader inside vp9_decodframe.
Change-Id: Ia6722bc26f34ae7fc5cb15e491aba39d2f20a85b
2013-04-18 16:08:10 -07:00
Dmitry Kovalev
3e01ca6a19 Fixing rounding inside vp9_mv_bit_cost function.
Change-Id: I7209a05919162a8155520bc543658ddb69ba12ce
2013-04-18 15:37:11 -07:00
Dmitry Kovalev
b27edc67d2 Merge "Code cleanup inside findnearmv code." into experimental 2013-04-18 15:29:44 -07:00
Jingning Han
f0b065e946 Merge "Make the use of pred buffers consistent in MB/SB" into experimental 2013-04-18 15:24:55 -07:00
Dmitry Kovalev
19e9714572 Code cleanup inside findnearmv code.
Using predefined clamp function, removing redundant variables, declare and
init on the same line.

Change-Id: I14636eb242194bac33f8a9d4a273a416d32856fc
2013-04-18 15:07:36 -07:00
Jingning Han
6f43ff5824 Make the use of pred buffers consistent in MB/SB
Use in-place buffers (dst of MACROBLOCKD) for  macroblock prediction.
This makes the macroblock buffer handling consistent with those of
superblock. Remove predictor buffer MACROBLOCKD.

Change-Id: Id1bcd898961097b1e6230c10f0130753a59fc6df
2013-04-18 14:59:36 -07:00
John Koleszar
2a1dbcaaaa Merge "vpxdec: correct VP[89] fourccs" 2013-04-18 14:54:55 -07:00
Dmitry Kovalev
2d15043900 Replacing BOOLEAN_DECODER with vp9_reader inside vp9_detokenize.
Change-Id: I71369a30a86111ae737168c795a29b4d8cff6ebf
2013-04-18 14:50:08 -07:00
Dmitry Kovalev
8726752cb6 Merge "Adding DEFAULT_PRED_PROB_{0, 1, 2} constants." into experimental 2013-04-18 14:39:14 -07:00
Dmitry Kovalev
3fe7b64722 Merge "Motion vector decoding code cleanup." into experimental 2013-04-18 14:38:38 -07:00
Dmitry Kovalev
bef4e474e7 Merge "Changing argument type of vp9_get_mv_joint from MV to MV*." into experimental 2013-04-18 14:27:44 -07:00
John Koleszar
66c0d1100b Merge "convolve: support larger blocks, fix asm saturation bug" into experimental 2013-04-18 14:27:16 -07:00
Dmitry Kovalev
a8d903e539 Merge "Replacing VP9_COMBINEENTROPYCONTEXTS macro with function." into experimental 2013-04-18 14:26:34 -07:00
Dmitry Kovalev
ef67a49407 Merge "Moving functions from vp9_dboolhuff.c to vp9_decodframe.c." into experimental 2013-04-18 14:26:18 -07:00
Dmitry Kovalev
8b20aa2337 Merge "Renaming y1dc_delta_q, uvdc_delta_q, uvac_delta_q fields from VP9Common." into experimental 2013-04-18 14:26:06 -07:00
Dmitry Kovalev
d731079781 Merge "Transforming decode_sb_row to decode_tile function." into experimental 2013-04-18 14:25:52 -07:00
John Koleszar
a9ebbcc338 convolve: support larger blocks, fix asm saturation bug
Updates the common convoloution code to support blocks larger than
16x16, and rectangular blocks. This uncovered a bug in the SSSE3
filtering routines due to the order of application of saturation.
This commit fixes that bug, adjusts the unit test to bias its
random values towards the extremes, and adds a test to ensure that
all filters conform to the expected pairwise addition structure.

Change-Id: I81f69668b1de0de5a8ed43f0643845641525c8f0
2013-04-18 13:57:59 -07:00
James Zern
dbd050c59f vpxdec: correct VP[89] fourccs
should have no effect as they are used in nestegg mappings, but aligns
the defines with vpxenc.c

Change-Id: Ic2295cd63701894c2963274239602b54cbb58631
2013-04-18 13:01:57 -07:00
Yunqing Wang
e304160885 Remove unused parameters in handle_inter_mode
Removed 2 unused parameters.

Change-Id: Ic2862569313c404047072b268c3d2be3f635492c
2013-04-18 11:55:46 -07:00
Dmitry Kovalev
eae38910ce Motion vector decoding code cleanup.
Change-Id: I9790baedbd4acb7113575efc6f228b2656c42ff7
2013-04-18 11:05:34 -07:00
Sami Pietilä
04ebca53ff Reordering frame header probs.
Moving all the probability updates after frame context selection.
This makes it clean and simple to store all the probs in single
struct that can be sent to hardware codec.

Change-Id: I2ec3de81adbd468d8ef34a914caae80a18c3ef56
2013-04-18 14:30:56 +03:00
John Koleszar
38f6232118 Merge "Use BLOCK_SIZE_TYPE in foreach_ walker" into experimental 2013-04-17 21:02:58 -07:00
Ronald S. Bultje
d49df319ab Merge "Fix edge bug in recent merge of 64x64 and 32x32 inter predictors." into experimental 2013-04-17 16:30:42 -07:00
Ronald S. Bultje
d63826ac12 Fix edge bug in recent merge of 64x64 and 32x32 inter predictors.
Change-Id: I83aa188d414922db19cccb210c4001c02d5a404c
2013-04-17 16:12:02 -07:00
Yunqing Wang
1461abb89f Merge "Remove skip_recon_sb" into experimental 2013-04-17 15:56:58 -07:00
Frank Galligan
2bb8ecad02 libvpx: Fix vp9 clang build.
- UNINITIALIZED_IS_SAFE Macro triggers a warning in Clang for
  structs.

Change-Id: Ib02c82f1fede7826564e17ccb7171c6fb18b8e44
2013-04-17 15:46:12 -07:00
Yunqing Wang
373389610d Remove skip_recon_sb
Removed skip_recon_sb(). Cleanup code so that we could combine
decode_sb and decode_mb later.

Change-Id: I24d1dd5283e2565072838a03c344938b88bfd35c
2013-04-17 15:34:50 -07:00
John Koleszar
ff3f93639c Use BLOCK_SIZE_TYPE in foreach_ walker
Change-Id: I655305c9e22bdd9abc893d3c40d4bc6616aa1d35
2013-04-17 15:08:37 -07:00
Yaowu Xu
acfc5981c3 Merge "clean out experiments" into experimental 2013-04-17 14:53:00 -07:00
Yaowu Xu
c8606a241f Merge "make lf_deltas dependent on filter_lvl" into experimental 2013-04-17 14:51:55 -07:00
Adrian Grange
3f2b254c38 Merge "Make alt_extra_bits a local variable" into experimental 2013-04-17 14:50:39 -07:00
Ronald S. Bultje
1cf31428ff Merge "Remove unused file vp9_context.c." into experimental 2013-04-17 13:49:48 -07:00
Dmitry Kovalev
27533fa245 Transforming decode_sb_row to decode_tile function.
Also moving frame size check into read_frame_size function.

Change-Id: Ib098d83bd50081bfc2941c87aea0dc58cb39583e
2013-04-17 13:42:51 -07:00
Ronald S. Bultje
0a20625bd8 Remove unused file vp9_context.c.
Change-Id: Id268ccaf1aefee6a3ed3e31486d4370f1c25e8cb
2013-04-17 13:40:31 -07:00
Dmitry Kovalev
db015c8390 Moving functions from vp9_dboolhuff.c to vp9_decodframe.c.
List of moved functions: vp9_decode_uniform, vp9_decode_term_subexp,
vo9_inv_recenter_nonneg, vp9_decode_unsigned_max.

Change-Id: Ib518beb90b791690c5c93de17b8bdbf560033b41
2013-04-17 12:14:27 -07:00
Dmitry Kovalev
ecff8d71ab Adding DEFAULT_PRED_PROB_{0, 1, 2} constants.
Also using ALLOWED_REFS_PER_FRAME instead of 3.

Change-Id: I810dd8521d8138edb9dbd78edede49b62f706554
2013-04-17 11:45:35 -07:00
Ronald S. Bultje
88192546cf Merge "Remove BLOCK_SIZE_LG2." into experimental 2013-04-17 11:22:44 -07:00
Ronald S. Bultje
0bb49c4e30 Merge "Add SSE2 versions for rectangular sad and sad4d functions." into experimental 2013-04-17 11:22:32 -07:00
Dmitry Kovalev
0db175ffed Changing argument type of vp9_get_mv_joint from MV to MV*.
Change-Id: I28c3026946fc1bde7074e6e0198da93bb0d75dfe
2013-04-17 11:21:28 -07:00
Yaowu Xu
642ac924ab Merge "replace hev_thr_lut[][] with simpler logic" into experimental 2013-04-17 11:08:36 -07:00
Adrian Grange
a4c0b3531e Make alt_extra_bits a local variable
alt_extra_bits is now only used in a local context so
remove it from the twopass_rc structure.

Change-Id: I5bbf0a3dba9712a3da45760f7bb865243705b53e
2013-04-17 11:07:12 -07:00
Yaowu Xu
421ad3f1b1 clean out experiments
that are related to using reconstructed pixel for selecting reference
motion vectors.

Change-Id: I048dfae39ca7385e344b57d46347ecc6e753e1bb
2013-04-17 11:00:46 -07:00
Ronald S. Bultje
213fe85da3 Remove BLOCK_SIZE_LG2.
It is unused.

Change-Id: Ied3269ffacf9b6303bc9d85f996384c3575ef812
2013-04-17 11:00:30 -07:00