Commit Graph

5406 Commits

Author SHA1 Message Date
Dmitry Kovalev
66307bf2c8 Moving costs from MACROBLOCK to VP9_COMP.
Change-Id: I61471dd0f77d1547abec13cbf9670e1c4eb9131a
2014-05-01 16:12:23 -07:00
Dmitry Kovalev
9f44467878 Cleaning up vp9_encode_frame() function.
Change-Id: I2b618dfe753f8c6139cecadc5caf14826abb67d9
2014-05-01 15:00:25 -07:00
Dmitry Kovalev
e05b92c0aa Merge "Removing half-variance asm functions which are not used." 2014-05-01 14:50:45 -07:00
Adrian Grange
0423a96469 Fix mode selection bug when ARNR filtering disabled
When ARNR filtering is disabled, by setting
arnr_max_frames=0, mode_skip_mask was being set to
-1 for the ARF frame resulting in no mode being
selected for the block.

The intent is to restrict the reference frame to the
previous ARF frame and the mode to one of ZEROMV,
NEARMV or NEARESTMV.

Change-Id: Ifc3920b153142cd01d422910c94d2f20ffb6f129
2014-05-01 14:38:58 -07:00
Paul Wilkins
307b6c22a3 Switch the default 2 pass vbr variant.
On balance Deb's  modified rate control for VBR seems
to be outperforming especially on some low motion YT
clips so I have switched this to be the default mode for
now.

Change-Id: I0713d430cad6425ac5c48fccdf332e12814ee44a
2014-05-01 11:53:40 -07:00
Dmitry Kovalev
eae4a467a8 Simplifying vp9_is_upper_layer_key_frame().
Change-Id: Ib56df7cd282dadbfd202de23f0c746a93b5ce63e
2014-05-01 11:41:01 -07:00
Dmitry Kovalev
92c536b465 Adding vp9_temporal_filter_init() function.
Change-Id: I0d50354111df79b74aafcd3bb7dc14df3c14733a
2014-05-01 11:35:50 -07:00
Minghai Shang
528a5c28b3 Merge "[svc rc] RC improvement for key frames in upper layers for spatial svc." 2014-05-01 10:53:47 -07:00
Dmitry Kovalev
6653769a02 Merge "Removing unused alt_activity_measure() function." 2014-04-30 15:50:34 -07:00
Dmitry Kovalev
9d3831db33 Merge "Removing unused typedefs." 2014-04-30 15:50:26 -07:00
Dmitry Kovalev
dd1a393624 Replacing int_mv with MV.
Change-Id: Idccb530c814cb8a2fb9f7d0c11eaef25044efe5e
2014-04-30 15:50:13 -07:00
Dmitry Kovalev
c9dfa3f72e Cleaning up vp9_full_range_search_c() function.
Change-Id: Ifc9114aeacd493cfa04d4cb3d071bf1de80e0568
2014-04-30 15:40:24 -07:00
Minghai Shang
f916a3e256 [svc rc] RC improvement for key frames in upper layers for spatial svc.
Change-Id: Id6ab59e505be28cd4eb9f1fe114feb47debe0539
2014-04-30 15:12:55 -07:00
Dmitry Kovalev
25110038f7 Merge "Using crop_{width, height} instead of {width, height}." 2014-04-30 15:01:26 -07:00
Jim Bankoski
12753b6160 Merge "corrupted frames shouldn't affect stats" 2014-04-30 14:43:56 -07:00
Dmitry Kovalev
4788d4534c Removing MODE_TEST_HIT_STATS.
It seems nobody uses it now.

Change-Id: Ided479cb7f5023559efc8f102ecead43884f4441
2014-04-30 14:17:05 -07:00
Jingning Han
39761eb5d6 Merge "Enable SSSE3 implementation of 8x8 forward 2D-DCT" 2014-04-30 13:41:36 -07:00
Dmitry Kovalev
042274739c Moving #defines to *.c from *.h.
Change-Id: I7cc6f441f414ca1b4d95dad3f789fff6faf8c3c4
2014-04-30 12:40:03 -07:00
Dmitry Kovalev
e826b61305 Removing unused typedefs.
Change-Id: I34ebc59980cf661ed658555e245bf0a93e5c3373
2014-04-30 12:34:09 -07:00
Dmitry Kovalev
94f5491c46 Removing half-variance asm functions which are not used.
Corresponding C functions were removed in
I99695564a3aa9bc8c79ac0a551d257e2ff3ad3c3

Change-Id: I50a5575065a7a9e41904eb2161afd739def927db
2014-04-30 12:21:54 -07:00
Dmitry Kovalev
ccaafeea44 Simplifying decoder_decode() function.
Change-Id: I97293605b430ad9dda0b58c0694fea569e7024a5
2014-04-30 12:10:39 -07:00
Minghai Shang
d9e8c1eafc Merge "[svc rc] Increase worst quality for enhancement layers" 2014-04-30 11:02:54 -07:00
Jim Bankoski
29af017fc0 corrupted frames shouldn't affect stats
Don't update the stats if we have a corrupted frame.

Change-Id: I65a13adc50e0389b4201d3b671f0225195dfaff4
TODO: Test case that shows this problem.
2014-04-30 10:13:29 -07:00
Dmitry Kovalev
d2bc8816a1 Merge "Adding search_site_config struct." 2014-04-29 16:59:47 -07:00
Dmitry Kovalev
14967cd4f5 Removing unused alt_activity_measure() function.
Change-Id: I6b520553cb5334b44356dc4651a2dbc1cb93cca5
2014-04-29 16:58:22 -07:00
Dmitry Kovalev
dde35bbbcc Merge "Cleaning up vp9_full_search_sadx8() function." 2014-04-29 16:37:17 -07:00
Dmitry Kovalev
49d8bdc29b Using crop_{width, height} instead of {width, height}.
Change-Id: I6dc9741cdcd700f5c4a387f58da7feb58dd4bbda
2014-04-29 16:12:44 -07:00
Jingning Han
1eaa3a76dc Enable SSSE3 implementation of 8x8 forward 2D-DCT
Assembly implementation of ssse3 8x8 forward 2D-DCT. The current
version is turned on only for x86_64. The average unit runtime
goes from 157 cycles down to 136 cycles, i.e., about 12.8% faster.
This translates into about 1.5% speed-up for pedestrian_area 1080p
at speed 2.

Change-Id: I0f12435857e9425ed7ce12541344dfa16837f4f4
2014-04-29 15:49:18 -07:00
Dmitry Kovalev
3e9943885a Merge "scale_and_extend_frame{,_nonnormative}() cleanup." 2014-04-29 15:09:38 -07:00
Dmitry Kovalev
9b042dc04c Merge "Removing unused vp9_variance_halfpixvar*() functions." 2014-04-29 14:52:58 -07:00
Dmitry Kovalev
d5a026d61e Merge "Removing old unused vp9_tapify.py." 2014-04-29 14:52:51 -07:00
Adrian Grange
0a386b9234 Revert "Force ARNR filtering to be centered on the ARF frame"
This reverts commit 59e733ca81.

Hold off removing arnr_type to give users the opportunity
to change their script files to handle its deprecation. A
follow-up patch will mark the control for setting arnr_type
as deprecated and it will be removed completely in a later
revision of the code.

Change-Id: I8b817c744e144d3714234a4cd4309816d0c7e3e8
2014-04-29 11:04:01 -07:00
Dmitry Kovalev
aa464eca5e Adding search_site_config struct.
Change-Id: I2ad333553e673dbabcdc0f0366aea311e90849bf
2014-04-29 10:34:53 -07:00
Dmitry Kovalev
947748ed19 Fixing constant value used to calculate frame pts and duration.
Change-Id: Idbd017d1b42f7fdc7b1ce4e00370f5229800abd7
2014-04-25 17:39:48 -07:00
Dmitry Kovalev
571c70e554 Removing WRITE_RECON_BUFFER related code.
That code is not used, we could easily return it back using vpx_img_write()
function.

Change-Id: Id107875c6feab6ad245a518f6b437b6ed4b1246d
2014-04-25 16:43:58 -07:00
Dmitry Kovalev
7b59014b74 Removing old unused vp9_tapify.py.
Change-Id: I7d66987fd04a3f98c140fc5f99ed0e9bc01f61d0
2014-04-25 15:19:31 -07:00
Dmitry Kovalev
b87130093e Cleaning up vp9_full_search_sadx8() function.
Change-Id: I61f977a7d0b177881bd5c1a7179fa5f8f089e9a6
2014-04-25 14:55:02 -07:00
Dmitry Kovalev
fae988dc3b Merge "Cleaning up vp9_full_search_sadx3()." 2014-04-25 13:52:20 -07:00
Dmitry Kovalev
3875df8fdb scale_and_extend_frame{,_nonnormative}() cleanup.
Change-Id: Ie99fd7af436ab2f6b3ef0c3f1a652fb26116d861
2014-04-25 12:44:26 -07:00
Dmitry Kovalev
6e01079cc0 Removing unused vp9_variance_halfpixvar*() functions.
Change-Id: I99695564a3aa9bc8c79ac0a551d257e2ff3ad3c3
2014-04-25 11:50:07 -07:00
Jingning Han
7e6d851675 Merge "Apply max intra block size condition to non-RD mode decision" 2014-04-24 17:27:14 -07:00
Dmitry Kovalev
03e7deae4f Removing unused vp9_sub_pixel_mse* functions.
Change-Id: I8d906da3bd6de0d3042676846f61a8b2a3444508
2014-04-24 11:49:12 -07:00
Minghai Shang
4a1386e3c8 [svc rc] Increase worst quality for enhancement layers
Change-Id: Ifbfa90894eec9944bd55f364f1d17eb152338d6b
2014-04-24 11:33:23 -07:00
Adrian Grange
1aa2d1a444 Remove key_frame_frequency variable from VP9_COMP
This member of VP9_COMP seemed unnecessary since it
only shadowed VP9EncoderConfig.key_freq that is
accessible through VP9_COMP.

Change-Id: Ib751bb1cf1b0b3c50a2a527d7c34f6829dd6fee3
2014-04-24 08:44:47 -07:00
Joey Parrish
109f58acfd Merge "Add VPXD_SET_DECRYPTOR support to the VP9 decoder." 2014-04-24 07:45:20 -07:00
Jingning Han
5a4e17b42f Apply max intra block size condition to non-RD mode decision
Change-Id: I9b86a94d11db2239c85f61aeed5bbd83a0dfa028
2014-04-23 18:59:26 -07:00
Adrian Grange
086ae99235 Fixed handling of regularly placed keyframes
The encoder was not handling requests to place keyframes at
fixed intervals, i.e. kf_min_dist == kf_max_dist, correctly.

In this case when looking to place the next keyframe it was
accumulating stats all the way up to the end of the firstpass
file. This patch corrects this behavior.

Change-Id: I948ad9f1d7faa0c05861df588136cce3bb61d7e7
2014-04-23 16:59:43 -07:00
Joey Parrish
18c08607e0 Add VPXD_SET_DECRYPTOR support to the VP9 decoder.
Change-Id: I88f86c8ff9af34e0b6531028b691921b54c2fc48
2014-04-23 16:11:54 -07:00
Jingning Han
ace194a059 Merge "Chessboard pattern prediction filter type search in non-RD coding" 2014-04-23 12:48:27 -07:00
Dmitry Kovalev
8e528e8e6d Merge "Adding macro to define vp9_variance_WxH_c() functions." 2014-04-23 11:35:11 -07:00
Jingning Han
8969f7c892 Chessboard pattern prediction filter type search in non-RD coding
This commit introduces a chessboard pattern search for the prediction
filter type search. It runs extensive search in alternate blocks and
allows the rest blocks to refer coding decisions of their nearby
neighbors.

For pedestrian 1080p at 4000 kbps, the runtime of speed -5 goes down
from 43990 ms to 42200 ms. The overall compression performance for
RTC set is changed by -1.37%.

Change-Id: Icfe220c49451cda796f0ca91d935c9ed01e56c9d
2014-04-23 10:41:07 -07:00
Dmitry Kovalev
e608418899 Renaming MB_PREDICTION_MODE to PREDICTION_MODE.
Actually, it would be great to have two separate enums INTRA_MODES and
INTER_MODES in future.

Change-Id: I6c4147cf0002853da9c1e03fe9514eab876f01c8
2014-04-22 17:48:31 -07:00
Dmitry Kovalev
54006d1a1b Adding macro to define vp9_variance_WxH_c() functions.
Change-Id: I983e3831938d4ae055de20b8d257d223e7916b1f
2014-04-22 17:45:30 -07:00
Dmitry Kovalev
ef003078e8 Renaming "onyx" to "encoder".
Actual renames:
  vp9_onyx_if.c -> vp9_encoder.c
  vp9_onyx_int.h -> vp9_encoder.h

Change-Id: I80532a80b118d0060518e6c6a0d640e3f411783c
2014-04-22 14:57:05 -07:00
Alex Converse
9926f1566e Merge "Fix the CONFIG_ALPHA build." 2014-04-22 12:49:28 -07:00
Dmitry Kovalev
4a6abcb900 Merge "Template macros to generate subpix variance functions." 2014-04-22 11:42:42 -07:00
Dmitry Kovalev
a5cd9afb8c Merge "Inlining vp9_set_segmentation_map() function." 2014-04-22 11:42:07 -07:00
Alex Converse
e6222b1a47 Fix the CONFIG_ALPHA build.
Change-Id: Ib89fe34812c17cd6294ce3c38f87d43a79abb16f
2014-04-22 11:23:49 -07:00
Minghai Shang
afc5636699 Merge "Bug fix for svc first pass rate control." 2014-04-22 10:59:55 -07:00
Adrian Grange
4fa3e98876 Merge "Force ARNR filtering to be centered on the ARF frame" 2014-04-22 10:39:02 -07:00
Adrian Grange
59e733ca81 Force ARNR filtering to be centered on the ARF frame
ARNR filtering is now forced to be centered on the ARF
frame and the other two options have been removed.

The other modes of constructing the ARNR frame were
not used and there does not seem to be any good
reason to maintain them.

This is purely an encoder-side change.

Change-Id: Ic772636d23f280752973852b9740083532a49de2
2014-04-22 08:03:25 -07:00
Deb Mukherjee
02104ebbdc Merge "Adds test code for supplemental superframe data" 2014-04-22 06:53:18 -07:00
Dmitry Kovalev
0b25a3ca95 Inlining vp9_set_segmentation_map() function.
Change-Id: I82f23f0f91a0be8329e20fcd2a5918c6a096dacc
2014-04-21 20:22:36 -07:00
Dmitry Kovalev
b02b362d21 Template macros to generate subpix variance functions.
Change-Id: I931fde6013aa18294b49a361f75f177ab1262574
2014-04-21 19:57:25 -07:00
Yaowu Xu
0bba4f1efa Merge "Allow full RD TX size search for GF/ALT at speed 2" 2014-04-21 18:32:36 -07:00
Paul Wilkins
de43d2c67e Merge "Change naming of end_usage parameter." 2014-04-21 18:29:22 -07:00
Yaowu Xu
7129d4b4ca Merge "Remove an unused function" 2014-04-21 17:46:06 -07:00
Yaowu Xu
d928b34efe Allow full RD TX size search for GF/ALT at speed 2
For speed 3 and above, such search is only allowed at speed 3.
The change helped cif and stdhd set by 1.2% and .7% in compression,
but increased the encoding time by around 5%.

Change-Id: Ifa4832327f1c1bef3decb032ceb769cbf50e059f
2014-04-21 12:31:46 -07:00
Dmitry Kovalev
a439f5af5f Merge "Inlining and removing encoder_common_init()." 2014-04-21 12:21:06 -07:00
Deb Mukherjee
26210c672a Adds test code for supplemental superframe data
Adds test code to verify that supplemental superframe information
that precedes the normal superframe information will not break
decoding.

Change-Id: Ia252b887d7ee138f51dc9a778376ff739402c455
2014-04-21 11:58:36 -07:00
Paul Wilkins
4c7af859d7 Change naming of end_usage parameter.
The end_useage parameter  is confusingly named since it
now actually defines the rate control method used.

Change-Id: I98912caabfe556b7af0b939a645d1336409e4d71
2014-04-21 11:49:38 -07:00
Dmitry Kovalev
79303c993a Merge "Adding setup_frame() function." 2014-04-21 10:44:08 -07:00
Dmitry Kovalev
ece689650a Merge "Cleaning up vp9_rdopt.c." 2014-04-21 10:41:04 -07:00
Dmitry Kovalev
f0a47f85c5 Merge "Don't set loop filter sharpness in vp9_change_config()." 2014-04-21 10:40:30 -07:00
Dmitry Kovalev
37f0886bbf Merge "Cleaning vp9_variance.{c, h}." 2014-04-21 10:40:05 -07:00
Jingning Han
e38ca5422c Merge "Enable background detection for adaptive quantizer control" 2014-04-21 09:36:11 -07:00
Yaowu Xu
a7ecad59b6 Merge "Merge two new VBR adjustment schemes." 2014-04-21 09:11:24 -07:00
Yaowu Xu
3a5b7dd087 Merge "Add experimental VBR adaptation method." 2014-04-21 09:11:19 -07:00
Jingning Han
80a4f55989 Enable background detection for adaptive quantizer control
This commit enables a background detection approach for adaptive
quantizer control. It combines the cyclic refresh pattern and the
background information to determine the segment id for adaptive
quantizer selection, prior to the non-RD mode decision process.
It hence allows proper quantization information update for a more
precise rate-distortion modeling in the non-RD mode decision.

The compression performance of speed -5 for rtc set is improved
by 2.5%, at no speed change.

Change-Id: Ic3713e8ed9185b403b5b1679d19dabd57506d452
2014-04-21 08:57:53 -07:00
Yaowu Xu
bae205fd6a Remove an unused function
Change-Id: I0f2592ecfc5197dfb94975260cb2f862315e7895
2014-04-20 14:50:35 -07:00
Dmitry Kovalev
6962ea665d Merge "Moving set_rd_speed_thresholds{,_sub8x8} to vp9_rdopt.{h, c}." 2014-04-18 18:18:08 -07:00
Dmitry Kovalev
513743bd2c Inlining and removing encoder_common_init().
Change-Id: I35f948fe1ac107950c8d8e4ba06e5a95ac4ec30e
2014-04-18 18:17:43 -07:00
Dmitry Kovalev
5a54977aa4 Cleaning vp9_variance.{c, h}.
Change-Id: I802308de4817e48a627bb44a744d32010fe7818f
2014-04-18 17:05:28 -07:00
Dmitry Kovalev
d5d26f7692 Cleaning up vp9_rdopt.c.
Change-Id: Ifd008968326e61ab492162351e358bf0ac0dac0a
2014-04-18 16:56:43 -07:00
Adrian Grange
2b22185c14 Merge "Remove ALT_REF_MC_ENABLED and tidy-up ARNR code." 2014-04-18 16:34:57 -07:00
Dmitry Kovalev
76d58ba414 Moving set_rd_speed_thresholds{,_sub8x8} to vp9_rdopt.{h, c}.
Change-Id: I983364b33e8f103b43a0448821e890989176f1cc
2014-04-18 16:34:01 -07:00
Dmitry Kovalev
4c609680fb Don't set loop filter sharpness in vp9_change_config().
The right value is calculated and set in vp9_pick_filter_level().

Change-Id: I5f725ac21f90dc9b80181a09a2040970bf6671d4
2014-04-18 13:59:30 -07:00
Minghai Shang
1ec44505c9 Bug fix for svc first pass rate control.
1. We didn't scale source image in lower layers so that
the stats are incorrect.
2. We didn't extend borders for re-constructed image.

Change-Id: Ia8d7bafbdb695ffa7f504e171f9449812e7bb0a3
2014-04-18 13:08:48 -07:00
Dmitry Kovalev
07f86d0944 Renaming VP9_CONFIG to VP9EncoderConfig.
Change-Id: Id48edd12c6f649c82113128491ef6ea7410e93b2
2014-04-18 11:01:36 -07:00
Dmitry Kovalev
400973c361 Merge "Adding get_pass() function." 2014-04-18 10:38:20 -07:00
Adrian Grange
a6266e0399 Remove ALT_REF_MC_ENABLED and tidy-up ARNR code.
Change-Id: I922d988486b47f413d11a8eeb38532a484d15c80
2014-04-18 08:57:34 -07:00
Jingning Han
741c6bb619 Merge "Fix broken encoding process at sub8x8 block size" 2014-04-18 08:46:54 -07:00
Dmitry Kovalev
e62875b5a6 Merge "Removing cq_target_quality from VP9_COMP." 2014-04-17 18:27:19 -07:00
Dmitry Kovalev
69b88df206 Merge "Adding is_best_mode() function." 2014-04-17 18:26:54 -07:00
Jim Bankoski
1355af5c42 Merge "rename labels2mode because it was a terrible name." 2014-04-17 15:42:41 -07:00
Jim Bankoski
209d348c92 Merge "renamed pick_best_mbsegmentation and remove rd_check_segment_txsize" 2014-04-17 15:42:36 -07:00
Jim Bankoski
d9db2aa12a Merge "rename mode_index to ref index in vp9_rd_pick_inter_mode_sub_8x8" 2014-04-17 15:42:27 -07:00
Jingning Han
a7c69a71d9 Fix broken encoding process at sub8x8 block size
Use the correct buffer to update the coding mode decision for
sub8x8 blocks.

Change-Id: I091ef27d2047eeb8b73ceb7c2c7c45b38ba8c6d5
2014-04-17 15:33:46 -07:00
Dmitry Kovalev
219a006b9c Adding get_pass() function.
Change-Id: I43de248615b79828d5164b670e7358b8a520d075
2014-04-17 15:25:20 -07:00
Jingning Han
0bba4042c2 Merge "Skip fetching original frame pointers for UV in background check" 2014-04-17 15:22:41 -07:00
Dmitry Kovalev
52549b4e78 Adding is_best_mode() function.
Change-Id: Idca7c1cd8a12df465c58b6ba064a99404b3b4bce
2014-04-17 15:09:55 -07:00
Dmitry Kovalev
53dbc7f92c Removing cq_target_quality from VP9_COMP.
Use cq_level (which is identical) from VP9_CONFIG instead.

Change-Id: I1aaf2fcef3d2dbd4577f613d27693ff8a68989fd
2014-04-17 14:57:43 -07:00
Dmitry Kovalev
69009e738e Merge "Replacing cpu_used with speed in VP9_CONFIG." 2014-04-17 14:34:26 -07:00
Jim Bankoski
d3ccf55674 rename labels2mode because it was a terrible name.
Change-Id: I2d577d11966fcc5ffaaf0896bf51d18078ad1e9c
2014-04-17 13:48:54 -07:00
Paul Wilkins
02e5bde3f8 Merge two new VBR adjustment schemes.
To make direct side by side testing this patch combines two
VBR corrections schemes to allow more direct side by side testing.
(The other patch was by Debargha chg id I0cd1f7...)

Change-Id: I271c45e5c4ccf8de8305589000218b80d9dc3a25
2014-04-17 12:05:31 -07:00
Jingning Han
42c1f6dbf4 Skip fetching original frame pointers for UV in background check
The background detection only tracks luma component. This commits
removes the frame buffer pointer retrieval for chroma components.

Change-Id: I098bd2950f5e5829ed5dc2b48568167248da7fad
2014-04-17 11:07:32 -07:00
Jingning Han
96a381c255 Merge "Remove redundant buffer initialization and mode_info assignments" 2014-04-17 09:36:30 -07:00
Jim Bankoski
fba9b09f7e renamed pick_best_mbsegmentation and remove rd_check_segment_txsize
Change-Id: Ia7d33bc3eb595965bccf4b2231df1e3b2a0243c6
2014-04-17 09:11:23 -07:00
Jim Bankoski
5c28d1a1f0 rename mode_index to ref index in vp9_rd_pick_inter_mode_sub_8x8
Change-Id: I00bceb9de2009963c91e5102564c05c31ac1ad78
2014-04-17 08:40:47 -07:00
Jim Bankoski
e890c2579b add a context tree structure to encoder
This patch sets up a quad_tree structure (pc_tree) for holding all of
pick_mode_context data we use at any square block size during encoding
or picking modes.  That includes contexts for 2 horizontal and 2 vertical
splits, one none, and pointers to 4 sub pc_tree nodes corresponding
to split.  It also includes a pointer to the current chosen partitioning.

This replaces code that held an index for every level in the pick
modes array including:  sb_index, mb_index,
b_index, ab_index.

These were used as stateful indexes that pointed to the current pick mode
contexts you had at each level stored in the following arrays

array ab4x4_context[][][],
sb8x4_context[][][], sb4x8_context[][][], sb8x8_context[][][],
sb8x16_context[][][], sb16x8_context[][][], mb_context[][], sb32x16[][],
sb16x32[],  sb32_context[], sb32x64_context[], sb64x32_context[],
sb64_context

and the partitioning that had been stored in the following:
b_partitioning, mb_partitioning, sb_partitioning, and sb64_partitioning.

Prior to this patch before doing an encode you had to set the appropriate
index for your block size ( switch statement),  update it ( up to 3
lookups for the index array value) and then make your call into a recursive
function at which point you'd have to call get_context which then
had to do a switch statement based on the blocksize,  and then up to 3
lookups based upon the block size to find the context to use.

With the new code the context for the block size is passed around directly
avoiding the extraneous switch statements and multi dimensional array
look ups that were listed above.   At any level in the search all of the
contexts are local to the pc_tree you are working on (in?).

In addition in most places code that used to call sub functions and
then check if the block size was 4x4 and index was > 0 and return
now don't preferring instead to call the right none function on the inside.



Change-Id: I06e39318269d9af2ce37961b3f95e181b57f5ed9
2014-04-17 07:30:55 -07:00
Dmitry Kovalev
68dcddee7f Merge "Cleaning up vp9_init_second_pass()." 2014-04-16 19:27:49 -07:00
Dmitry Kovalev
2c8c1f5370 Replacing cpu_used with speed in VP9_CONFIG.
Change-Id: I86b85b5c11388e84a48f8936330c0d920df5d1f0
2014-04-16 18:31:42 -07:00
Jingning Han
b6ec6930e5 Remove redundant buffer initialization and mode_info assignments
There is no need to initialize source/dst frame buffers at frame
level. These will be done at block coding stage. This commit hence
removes the redundant operations.

Change-Id: I11d9f2556058c6205c8e58ed53e31f78622c41b7
2014-04-16 17:00:27 -07:00
Jingning Han
ef2f6dae6f Merge "Enable more precise background detection for partition decision" 2014-04-16 17:00:13 -07:00
Paul Wilkins
085f76e535 Add experimental VBR adaptation method.
Add code to monitor over and under spend and
apply limited correction to the data rate of subsequent
frames. To prevent the problem of starvation or overspend
on individual frames (especially near the end of a clip) the
maximum adjustment on a single frame is limited to a %
of its un-modified allocation.

Change-Id: I6e1ca035ab8afb0c98eac4392115d0752d9cbd7f
2014-04-16 15:56:51 -07:00
Dmitry Kovalev
961594c9c5 Cleaning up vp9_init_second_pass().
Change-Id: Ibf360fe0728e07de448e77e3841c49eb25d3ba2d
2014-04-16 15:17:53 -07:00
Paul Wilkins
fdc198c9de Merge "Remove old activity masking code." 2014-04-16 14:24:25 -07:00
Dmitry Kovalev
8325464afa Merge "Renaming VP9D_CONFIG to VP9DecoderConfig." 2014-04-16 14:21:32 -07:00
Dmitry Kovalev
833ad89f72 Merge "Adding sad function generation macros." 2014-04-16 14:07:46 -07:00
Jingning Han
e88a280573 Enable more precise background detection for partition decision
This commit compares the current original frame to the previous
original frame at 64x64 block level and decides if the entire
block belongs to background area. If it is in the background area,
skip non-RD partition search and copy the partition types of the
collocated block in the previous frame.

For vidyo1 in the rtc set, this makes the speed -5 coding speed
about 8% faster. The overall compression performance is down by
1.37% for rtc set.

Change-Id: Iccf920562fcc88f21d377fb6a44c547c8689b7ea
2014-04-16 14:00:52 -07:00
Yaowu Xu
4ec5569f50 Merge "Add consts in set_fixed_partitioning()" 2014-04-16 12:55:48 -07:00
Yaowu Xu
b12014b860 Merge "Refactor common code into a function" 2014-04-16 12:29:12 -07:00
Paul Wilkins
e434d08fd9 Remove old activity masking code.
Delete code relating to the old VP8_TUNE_SSIM flag
as this code does not currently work and is largely made
redundant in VP9 by the various AQ modes.

Change-Id: I71f28e1f680573d296422254489000678552b17b
2014-04-16 12:22:41 -07:00
Paul Wilkins
18072d29f9 Merge "Fix rate control bug." 2014-04-16 12:07:42 -07:00
Alex Converse
0d8e4f91a2 Unfork rd_thresh sub8x8.
Remove duplicate rd_thresh code introduced when vp9_rd_pick_inter_mode_sub8x8()
was forked from vp9_rd_pick_inter_mode_sb().

Change-Id: I3c9b7143d182e1f28b29c16518eaca81dc2ecfed
2014-04-16 10:23:37 -07:00
Paul Wilkins
658daf36fa Fix rate control bug.
Fix rate control bug whereby the rate factor heuristics
were being updated on arf overlays causing a rate surge
for a few frames followed by a corrective drop.

This fix eliminates many of the overshoot problems that
we were seeing on hard clips (even without applying
stricter vbr rate control) and also helps quality on
almost all clips with some hard clips improving by >5%.

Overall quality results measured at speed 2.
Derf  +1.78% opsnr , +2.44% SSIM
Stdhd +2.41% opsnr, +2.85% SSIM

Change-Id: I2369df6295c2705963fa6307877f6acb304bcc39
2014-04-16 10:13:06 -07:00
Dmitry Kovalev
92ebef119a Merge "Renaming av_per_frame_bandwidth to avg_frame_bandwidth." 2014-04-15 23:00:16 -07:00
Dmitry Kovalev
617a367c54 Merge "Consistent mode names." 2014-04-15 22:59:37 -07:00
Dmitry Kovalev
4e9529cb24 Renaming av_per_frame_bandwidth to avg_frame_bandwidth.
Just to be consistent with min_frame_bandwidth & max_frame_bandwidth names.

Change-Id: I36702c708cba9ad1a5c36393f37758a2edeadb90
2014-04-15 18:36:01 -07:00
Dmitry Kovalev
003376fc8b Merge "Adding scale_if_required() function." 2014-04-15 17:55:13 -07:00
Dmitry Kovalev
7a85ba8ac3 Adding sad function generation macros.
Change-Id: If6f013835b69ae61b0a0c6006fe0955303f579a5
2014-04-15 17:46:45 -07:00
Dmitry Kovalev
cb9550eea0 Merge "Adding get_search_range() function." 2014-04-15 16:39:27 -07:00
Dmitry Kovalev
0391790f24 Merge "Cleaning up vp9_rc_compute_frame_size_bounds()." 2014-04-15 14:58:31 -07:00
Dmitry Kovalev
6fe75c6397 Merge "Cleaning up vp9_twopass_worst_quality()." 2014-04-15 14:57:33 -07:00
Dmitry Kovalev
2f86279124 Adding scale_if_required() function.
Change-Id: I87819fed5aebb6ffe2f4d4655df226235a3d21cb
2014-04-15 14:43:45 -07:00
Dmitry Kovalev
0739cab86c Adding get_search_range() function.
Change-Id: I988eea8f78f71135b914661420c5c75674e5c010
2014-04-15 14:40:40 -07:00
Yaowu Xu
8f6f6ab244 Add consts in set_fixed_partitioning()
Change-Id: Ib8c1b3b0a5a5689d3261dc822a69e9d473b89be1
2014-04-15 11:49:49 -07:00
Dmitry Kovalev
55977e4a4f Merge "Moving frame_frags field from VP9Common to VP9_COMP." 2014-04-15 10:39:31 -07:00
Dmitry Kovalev
e58ea39fd0 Merge "Using anonymous enum instead of macros." 2014-04-15 10:25:14 -07:00
Dmitry Kovalev
398de52f92 Merge "Adding get_skip_encode_frame()." 2014-04-15 10:24:59 -07:00
Yaowu Xu
1cda057261 Refactor common code into a function
Change-Id: Id156af5662ebe6fbe1cab636564f5f4bedb85ab0
2014-04-15 10:10:23 -07:00
Dmitry Kovalev
14331a84bd Merge "Removing unused vp9_mcomp_x86.h file." 2014-04-14 17:05:15 -07:00
Dmitry Kovalev
78228f30f7 Merge "Replacing int_mv with MV." 2014-04-14 17:05:04 -07:00
Paul Wilkins
fd5a2066d5 Merge "Remove vp9_ prefix on static inline function." 2014-04-14 16:41:09 -07:00
Dmitry Kovalev
41a4b88a04 Adding get_skip_encode_frame().
Change-Id: Id687aa617650a859463e7ae63dd4c0dc4f3e4779
2014-04-14 15:19:43 -07:00
Dmitry Kovalev
c1981bdda0 Using anonymous enum instead of macros.
Change-Id: I5ed360585dae2c9fea6c32058dbfb8ec07700677
2014-04-14 15:11:13 -07:00
Yaowu Xu
d810fe5a92 Merge "Reduce code duplication" 2014-04-14 14:39:50 -07:00
Adrian Grange
48f5066553 Merge "Enable vpxenc to specify internal coded frame size" 2014-04-14 14:39:46 -07:00
Dmitry Kovalev
f3739f9052 Consistent mode names.
Change-Id: Icb4851d98c951506fe5d73d8d5a8ac7e53fecfd0
2014-04-14 14:09:39 -07:00
Paul Wilkins
096b44f43b Merge "Speed 2 alternative balance." 2014-04-14 12:08:42 -07:00