Commit Graph

721 Commits

Author SHA1 Message Date
Dmitry Kovalev
c48f2bd807 General vp9_encodeframe.c cleanup.
Change-Id: Ie364fe837002de96923da2c1c0ff8bb4b8d469a7
2014-04-04 10:44:58 -07:00
Dmitry Kovalev
0e8f35de85 Merge "Removing interp_kernel from MACROBLOCKD." 2014-04-03 16:58:21 -07:00
Dmitry Kovalev
a9f324fa7f Removing interp_kernel from MACROBLOCKD.
Now interp_kernel is obtained when it is really required (based on
mbmi->interp_filter value).

Change-Id: I4c7a93c179d1045eba16e7526c293d02c9b8b47e
2014-04-03 15:28:42 -07:00
Paul Wilkins
009ee2b737 Fix complexity Aq mode.
This was broken by change
Icc4b66f3935fad5ec4516a4d57e843d12c365e64

Change-Id: I49e3fc525664eb7a433f55f76b8f8628fe251eab
2014-04-03 14:34:43 +01:00
Deb Mukherjee
97f4fb7b5f Rate ctrl changes to track target bitrates closer
Turns off the DISABLE_RC_LONG_TERM_MEM macro and makes other changes
in the way the bits are updated, to make 2-pass rate control track
target bitrates closer.

Change-Id: I5f3be4b11c2908e6a9a9a1dd4fcf4e65531c44d8
2014-04-02 11:16:20 -07:00
Dmitry Kovalev
4f8a440083 Clearing all encoder counts with single vp9_zero() call.
Change-Id: I4341d16ef83acd1cc9e55f7c5eff4af921bf57d4
2014-04-01 20:09:35 -07:00
Dmitry Kovalev
86f44a91f4 Renaming two members in MACROBLOCKD struct.
Renames:
  mi_8x8 -> mi
  mode_info_stride -> mi_stride

Change-Id: I66f3e5fd1e7b7f46f108af5bb711c5fd9493c1be
2014-04-01 17:46:40 -07:00
Dmitry Kovalev
06159fcd18 Merge "Common configuration for MACROBLOCKD struct." 2014-04-01 15:54:34 -07:00
Alex Converse
d0a2988dbd Merge "Propagate active map state." 2014-04-01 13:49:26 -07:00
Dmitry Kovalev
d42976c515 Common configuration for MACROBLOCKD struct.
Change-Id: Ie2ea9dd8bd338cc9fe12ca9033df64f7644c68b3
2014-04-01 10:57:59 -07:00
Alex Converse
12dd53d06a Propagate active map state.
This fixes active map for non-rd realtime speeds.

Change-Id: I1bf416de3f7ef2e5dd2eabde052cce3c0683a52c
2014-03-31 16:55:39 -07:00
Jingning Han
99893f2410 Apply finer quantizer to partition search frames in non-RD flow
This commit optimizes the bit allocation for the non-RD coding flow.
It applies slightly better quantizer to the frames, where all blocks
run a non-RD partition search. Such frames typically have better
rate-distortion trade off, thus improving the reconstruction quality
for next few frames reference at reasonably low increment in rate
cost.

The coding performance for rtc set at speed -5 with error-resilient
tuned on and rate control set as cbr is improved by 19.58%. It improved
the coding speed by about 10% for a portion of local test clips.

Change-Id: I9d56696cd4359dc8136ca10aff10fff05aaa2686
2014-03-31 09:33:11 -07:00
Jingning Han
4a42047b4e Fix segment_id assignment in update_state_rt for AQ mode
Properly obtain and buffer the segment_id in non-RD mode information
update process.

Change-Id: I43230001872f6a986d12c0d94e98fdec0db3be2c
2014-03-27 12:42:04 -07:00
Marco Paniconi
2b06bf20ce Move aq_mode=2 (complexity_aq) to separate file.
Change-Id: Iffa45b9b04196c1ded6037622a8644a2500a62de
2014-03-26 18:01:59 -07:00
Jingning Han
6bdfc8cd0b Merge "Motion referenced partition search for non-RD coding flow" 2014-03-26 16:06:01 -07:00
Dmitry Kovalev
0437575848 Merge "Removing prev_mi_8x8 from MACROBLOCKD." 2014-03-26 15:45:11 -07:00
Jingning Han
abdb0650b4 Motion referenced partition search for non-RD coding flow
This commit enables the non-RD mode decision coding flow to
adaptively apply partition search in non-refresh frame, when the
collocated block in previous frame suggests there might be a motion
activity. It refactors the update_state_rt() function to support
buffer swap of mode_info struct, thereby unifying the encoding
stage across various non-RD coding modes.

It provides 5% compression performance gains in speed -6 for rtc
test set, at about 12% speed slow down.

Change-Id: Iefa374aed5a11c4b7ff9a3ed36a98ea8bd184edb
2014-03-26 13:09:04 -07:00
Dmitry Kovalev
fc25e4dc52 Encapsulating CYCLIC_REFRESH struct into .c file.
Change-Id: I32695ad703dcbbbbf5f122b403f3d3120a0be366
2014-03-26 11:00:35 -07:00
Dmitry Kovalev
63f86c149a Removing prev_mi_8x8 from MACROBLOCKD.
Change-Id: I32beb5f18c10b5771146c55933b5555487f53633
2014-03-26 10:50:34 -07:00
Yaowu Xu
2ec04d1f84 Merge "Added a speed feature "allow_skip_recode"" 2014-03-26 09:53:42 -07:00
Jingning Han
3b8d00449c Merge "Apply early termination in non-RD partition search" 2014-03-26 09:28:55 -07:00
Marco Paniconi
79ec9a26d1 Merge "Fix to cylcic refresh: use correct/chosen mode for update_segment." 2014-03-26 09:15:15 -07:00
Marco Paniconi
eeed7e2953 Fix to cylcic refresh: use correct/chosen mode for update_segment.
Fix so that vp9_update_segment_aq() will use the correct (i..e, chosen)
encoding mode (from ctx struct) in update_state.

Change-Id: Icc4b66f3935fad5ec4516a4d57e843d12c365e64
2014-03-25 16:40:48 -07:00
Jingning Han
0d78687583 Apply early termination in non-RD partition search
This commit allows the recursive non-RD partition search to early
terminate sub search tree when the cumulative rate-distortion is
already above the best available.

Change-Id: Ifdbcbb4bee229f47fde3033200829577c9f1fc1d
2014-03-25 15:51:36 -07:00
Yaowu Xu
6eb2cacf0d Added a speed feature "allow_skip_recode"
This commit added a speed feature to make the logic of calculating
skip_recode on a block level more explicit. This also enable the
feature to be enabled at speed 5 where the previous logic is too
conservative, help gain back the lost speed for --rt(-5).

Change-Id: Ieb37ca3e85c2e7bda343486edf13d5f5395f2233
2014-03-25 14:27:45 -07:00
Dmitry Kovalev
ed39c40a2e Moving above_context to VP9_COMMON.
Change-Id: I713af99d1e17e05a20eab20df51d74ebfd1a68d2
2014-03-25 10:40:08 -07:00
Jingning Han
c4e807ae2f Fix compiling errors due to git merge
There were a few conflicts between the new non-RD partition search
and recent clean-up patches, which were not caught by git control.
This commit fixed these issues.

Change-Id: Ieebefbd6c19d81d0d13e3c568877d5cce2ab7797
2014-03-25 10:25:16 -07:00
Jingning Han
17e9df1441 Merge "Always use adaptive motion search in non-RD coding mode" 2014-03-25 09:27:03 -07:00
Jingning Han
c270ce662b Merge "Enable recursive partition selection for non-RD coding mode" 2014-03-25 09:26:49 -07:00
Jingning Han
1b46f315f6 Always use adaptive motion search in non-RD coding mode
This commit takes out the if statements on using adaptive motion
search flag. This feature is automatically enabled in non-RD mode
decision flow for variable partition types search.

Change-Id: I5a25cf9109d84d07aa61b3e02c8d32dda1e90cb0
2014-03-24 22:33:00 -07:00
Alex Converse
64c766bb08 Merge "Don't subpartion inactive area in rd_use_partition." 2014-03-24 17:04:45 -07:00
Alex Converse
98fde54685 Merge "Deduplicate and rename mode info step." 2014-03-24 17:04:30 -07:00
Jingning Han
6b6d3886fc Enable recursive partition selection for non-RD coding mode
This commit enables a recursive partition type search for non-RD
mode decisions. It allows the encoder to choose variable block
sizes in a 64x64 block based on rate-distortion modeling.

It improves speed -6 coding efficiency for rtc set by 2.4%. Most
of the gains come from 32-40dB range, where many sequences gain
about 5% to 20%. Local tests suggest there is no speed change.

Change-Id: I06300016e500a21652812b7b3b081db39a783d66
2014-03-24 14:40:29 -07:00
Alex Converse
5182a35004 Don't subpartion inactive area in rd_use_partition.
Change-Id: I50db8d3c99eea39e46cc5876cb1f49513c084073
2014-03-24 12:54:30 -07:00
Alex Converse
f16f507c76 Deduplicate and rename mode info step.
Change-Id: Ie624a119ce8e0891f4ca396040d679e22ef8ce27
2014-03-24 12:54:30 -07:00
Dmitry Kovalev
6bfcb269a5 Cleaning up vp9_aq_cyclicrefresh.{c, h}.
Change-Id: I288e5ffade508fc3c803986d47ccf06df8d784dd
2014-03-24 12:03:44 -07:00
Jim Bankoski
f7188e5aea refactor reset_skip_txfm_size and elimate a lot of code
Change-Id: Id70bd0ff8836c28d9c8653e018e071ca9fb06610
2014-03-24 08:54:49 -07:00
Dmitry Kovalev
9895c9d4dd Merge "Removing redundant {above, left}_seg_context manipulation code." 2014-03-22 22:31:48 -07:00
Jingning Han
5950a69213 Merge "Reformat non-RD coding flow" 2014-03-21 21:43:02 -07:00
Jingning Han
89cc421e89 Reformat non-RD coding flow
This commit reformats non-RD coding flow layout to allow mode
decision with fixed and variable block sizes.

Change-Id: I2cdd3bb9f26c499ee4a9849004fd925cdd195d09
2014-03-21 16:41:55 -07:00
Marco Paniconi
03a9e5edb6 Rename the aq_mode files.
Change-Id: Id76a628495c822e23825b66a7589b4a3279680e2
2014-03-21 15:20:59 -07:00
Yaowu Xu
bcd102c523 Merge "Fix bad speed settings interaction." 2014-03-21 12:13:44 -07:00
Dmitry Kovalev
4cb37bff96 Removing redundant {above, left}_seg_context manipulation code.
Change-Id: Ib3c1746e61220c629cbd971b2458aa686b5c9e36
2014-03-21 12:12:55 -07:00
Dmitry Kovalev
a57de9da03 Merge "Reusing {above, left}_seg_context vars in both encoder and decoder." 2014-03-21 12:02:42 -07:00
Yaowu Xu
2d70e16595 Merge "Fix a valgrind error" 2014-03-21 11:13:43 -07:00
Yaowu Xu
e993fb5e24 Fix a valgrind error
Valgrind was complaining uninitialzed values are being used.

Change-Id: Ia9eb619f4e67d1fb7af1057d50304f15adc02aab
2014-03-21 08:36:40 -07:00
Paul Wilkins
2e05341ab4 Fix bad speed settings interaction.
The flag x->skip_recode interacts badly with
the cpi->sf.use_nonrd_pick_mode and
cpi->sf.skip_encode_sb speed settings.

Restricting the use of the skip_decode flag when
these other speed choices are in use helps quality
for speeds 3 and 4 by a large amount with only a
small impact on speed.

Average improvmentes for 2 pass speed 4:
Derf +8.8%
Yt + 10.53%
Std-Hd +6.95%
yt-hd + 22.95%

Change-Id: I8010876d8012042a11077c92e69d813c3dfa58eb
2014-03-21 10:10:50 +00:00
Yaowu Xu
0de216a995 Use local vairable in rd_auto_partition_range()
In addition to a few cleanups.

Change-Id: Ice5938ef494513921a47e7c64ba9928f2202e24e
2014-03-20 19:22:26 -07:00
Dmitry Kovalev
7ad40117f1 Reusing {above, left}_seg_context vars in both encoder and decoder.
Change-Id: Id1fa36c92cb007b73a450cc8552e810cedad38b9
2014-03-20 16:15:57 -07:00
Jingning Han
b64d58c773 Merge "Enable variable block size test in non-RD mode decision" 2014-03-19 18:54:42 -07:00