594 Commits

Author SHA1 Message Date
Yaowu Xu
08b912b4d1 Merge "Add a strict mode for auto_min_max_partition_size feature" 2014-01-29 16:36:06 -08:00
Yaowu Xu
1ca1186529 Add a strict mode for auto_min_max_partition_size feature
In this new mode, the size range is strictly determined by the min
and max partition size in neighborhood blocks.

Niklas720 encoding time at cpu-used -5 goes from 56250ms to 50676ms,
a 10% reduction.

Change-Id: I316b0e2ac967ff3fad57b28d69c0ec80b7d8b34e
2014-01-29 14:51:51 -08:00
Dmitry Kovalev
b107f2c470 Renaming "mbskip" to "skip".
Change-Id: I27a30b43eae026a77f92958e2238d02d9cdf7832
2014-01-29 14:48:42 -08:00
Dmitry Kovalev
70cde0af3d Removing ENC_DEBUG.
Change-Id: I101017621003314f000a454725ea13fc9db43177
2014-01-29 12:58:57 -08:00
Dmitry Kovalev
b00eb5c464 Finally removing vp9_setup_interp_filters() function.
Change-Id: If446225afbb49f6033c2a4516a37c377de6f70f7
2014-01-29 11:29:34 -08:00
Jim Bankoski
ea8aaf15b5 create super fast rtc mode
This patch only works if the video is a width and height that are both
a multiple of 32..   It sets every partition to 16x16, and does INTRADC
only on the first frame and ZEROMV on every other frame.   It always does
does the largest possible transform, and loop filter level is set to 4.

Was ~20% faster than speed -5 of vp8

Now 20% slower but adds motion search ( every block ), nearest, near
and zeromv

The SVC test was changed because - while this realtime mode produces
bad quality albeit quickly, it isn't obeying all the rules it should
about which frames are available.

Change-Id: I235c0b22573957986d41497dfb84568ec1dec8c7
2014-01-29 08:39:39 -08:00
Paul Wilkins
c382136122 Trap divide by 0.
Trap divide by 0 that could occur with a 0 rate target
in aq mode COMPLEXITY_AQ.

Change-Id: I034514f512b2a0db470ae8d37ea395278bf473cf
2014-01-29 14:59:04 +00:00
Dmitry Kovalev
e5b31a1d8c Decoupling set_ref_ptrs() and vp9_setup_interp_filters().
Change-Id: I8d17867a4772554cbba2bd113cc5b4c99d50146d
2014-01-27 16:00:20 -08:00
Dmitry Kovalev
4264c93844 Renaming INTERPOLATION_TYPE to INTERP_FILTER.
Corresponding renames:
  subpel_kernel              => interp_kernel
  vp9_get_filter_kernel()    => vp9_get_interp_kernel()
  pred_filter_type           => pred_interp_filter
  adaptive_pred_filter_type  => adaptive_pred_interp_filter
  mcomp_filter_type          => interp_filter
  read_interp_filter_type()  => read_interp_filter()
  write_interp_filter_type() => write_interp_filter()
  fix_mcomp_filter_type()    => fix_interp_filter()

Change-Id: I1fa61fa1dc81ebbf043457c3ee2d8d4515bee6d3
2014-01-24 15:57:28 -08:00
Yaowu Xu
ebe160568b Prevent invaid memory access
Reading second motion vector only when it has a second ref_frame

Change-Id: Ica72c1cd955832e15ceccda5e5a17b0bfcd83044
2014-01-22 09:10:44 -08:00
Jingning Han
b461c0884e Deprecate best_mv from encoder
This commit deprecates the use of best_mv from encoding and bit-stream
writing stages. It hence removes the definition from MACROBLOCKD.

Change-Id: I8e5302775a2aa4a18900726df407bff881f2dfb1
2014-01-17 17:15:34 -08:00
Jingning Han
98b01c038f Rename pick_sb_modes to rd_pick_sb_modes
Keep naming consistency for RD and non-RD mode decision functions,
respectively.

Change-Id: I904282b675fc511a46c13cb1f8287aa5d1c8ac94
2014-01-16 18:05:42 -08:00
Jingning Han
2f52decd22 Inter-frame non-RD mode decision
This commit setups a test framework for real-time coding. It enables
a light motion search for non-RD mode decision purpose.

Change-Id: I8bec656331539e963c2b685a70e43e0ae32a6e9d
2014-01-16 12:35:04 -08:00
Jim Bankoski
73cd22f8d4 As you go mbmi->skip_coeff
Calculate the skip_coeff as part of the encode process, rather than
checking the eobs after the fact with another pass.

Change-Id: Ib41b139e96a97dee30e4b993b4cc53d86337128d
2014-01-14 17:58:25 -08:00
Dmitry Kovalev
a8bb1ffd89 Merge "Reusing get_frame_new_buffer() function." 2014-01-14 14:40:48 -08:00
Dmitry Kovalev
f3728f20ea Merge "Cleaning up vp9_encodeframe.c." 2014-01-14 14:14:49 -08:00
Dmitry Kovalev
9855b6e510 Reusing get_frame_new_buffer() function.
Change-Id: Iac5c5aeaef62a4095a60d91285d2c7ad717db0fb
2014-01-13 14:04:56 -08:00
Jingning Han
4f969ccc1b Merge "Enable skipping reference frame check in rd loop" 2014-01-10 16:00:56 -08:00
Dmitry Kovalev
3df5c54ad7 Cleaning up vp9_encodeframe.c.
Change-Id: I6d9f595249dc71752abe16c042d3b07aa2e4248d
2014-01-10 13:48:44 -08:00
Jingning Han
d66c748635 Enable skipping reference frame check in rd loop
This commit allows encoder to compare the SAD cost associated with
the best motion vector predictor, per frame. If one reference frame
has this cost more than 4 times of the best SAD cost given by other
reference frames, skip NEARESTMV, NEARMV, ZEROMV mode check of this
reference frame.

This setting is turned on in speed 2 and above. Compression quality
change in speed 2:
derf  -0.014%
yt    -0.097%
hd    -0.023%
stdhd  0.046%

It reduces the speed 2 runtime of test sequences:
pedestrian_area_1080p 4000 kbps 310763 ms -> 303595 ms
bluesky_1080p 6000 kbps         259852 ms -> 251920 ms

Change-Id: I7f59cf79503d51836d61d56d50dc5bdf0e502e22
2014-01-09 18:25:53 -08:00
Dmitry Kovalev
0ecd583d8d Cleanups around cpi->common.
Change-Id: I0c42a729038d0f4cb7bc07f587d066fcb1dfe9d9
2014-01-08 14:51:00 -08:00
Dmitry Kovalev
7b496783c2 Merge "Adding get_ref_frame_buffer() function." 2014-01-07 09:56:06 -08:00
Dmitry Kovalev
ff655420b5 Reusing ROUND_POWER_OF_TWO macro.
Change-Id: I064ba32d5358bfbf080a4300fc1793b345080006
2014-01-06 17:38:57 -08:00
Dmitry Kovalev
7919bf6afd Adding get_ref_frame_buffer() function.
Encapsulating direct references to lst_fb_idx, gld_fb_idx, alt_fb_idx.

Change-Id: I7e65ba3f131286e433e6651970c5647311fa4687
2014-01-06 14:50:54 -08:00
Dmitry Kovalev
ba41e9d459 Adding RefBuffer struct.
Adding RefBuffer to simplify reference buffer management. The struct has a
pointer to image data and scale factors relative to the current frame.

Change-Id: If38eb1491ff687cc11428aee339f3e052e2c5d9e
2014-01-03 15:21:55 -08:00
Dmitry Kovalev
2336853be1 Merge "Pre planes configuration cleanup." 2014-01-03 15:04:53 -08:00
Dmitry Kovalev
a8ba34d299 Pre planes configuration cleanup.
Change-Id: I1d50f8701d9c9dedb84387a773a3e9b4daaad720
2014-01-03 12:50:57 -08:00
Dmitry Kovalev
5b04962cf4 Merging best_ref_mv and second_best_ref_mv into best_ref_mv[2].
Change-Id: If04b57828847cee09a79c94e1098d1aa4990ea0d
2014-01-03 11:31:00 -08:00
Dmitry Kovalev
f16b186b8e Reusing vp9_get_skip_context() function in encoder.
Change-Id: Ic0345622115941f49b6a568c7b8154ba892cbf0d
2014-01-02 18:29:56 -08:00
Dmitry Kovalev
1e8b5bf4ac Merge "Removing vp9_findnearmv.{h, c} files." 2013-12-26 13:38:38 -08:00
Dmitry Kovalev
b3b9f4a4d0 Merge "Using single struct to represent scale factors." 2013-12-20 11:22:02 -08:00
Dmitry Kovalev
47d482cb0a Merge "Reusing FRAME_COUNTS in the encoder." 2013-12-20 10:56:31 -08:00
Dmitry Kovalev
987810ad95 Removing vp9_findnearmv.{h, c} files.
Moving all code from that files to vp9_mvref_common.{h, c}.

Change-Id: Ibc4afcb8cea6847166ff411130e93611ebe63b20
2013-12-19 17:39:57 -08:00
Dmitry Kovalev
a3fbcc88bb Using single struct to represent scale factors.
Moving back to scale_factors struct. We don't need anymore x_offset_q4 and
y_offset_q4 because both values are calculated locally inside vp9_scale_mv
function.

Change-Id: I78a2122ba253c428a14558bda0e78ece738d2b5b
2013-12-19 16:06:33 -08:00
Dmitry Kovalev
40e173ac42 Merge "vp9_encode_frame() cleanup." 2013-12-19 15:37:13 -08:00
Dmitry Kovalev
f06187f125 vp9_encode_frame() cleanup.
Change-Id: I82ecbe7fe0baa890ce251043f3c7159188c00665
2013-12-19 14:28:42 -08:00
Dmitry Kovalev
431aaefbec Replacing 1 << mi_{width, height}_log2() with lookup tables.
Change-Id: Iba91ff1e797a83517e2cd7c3ab86cba39f39415b
2013-12-19 13:43:45 -08:00
Dmitry Kovalev
e4b85c9ed8 Merge "Adding get_zbin_mode_boost() function." 2013-12-19 11:03:23 -08:00
Dmitry Kovalev
4e84ad1fc6 Reusing FRAME_COUNTS in the encoder.
Replacing: intra_inter_count, y_mode_count, y_uv_mode_count.

Change-Id: I5d70f73288af6effe6176e26400138067a2ae2a3
2013-12-18 18:52:58 -08:00
Dmitry Kovalev
829ec56b47 Merge "Reusing FRAME_COUNTS in the encoder." 2013-12-18 18:27:08 -08:00
Dmitry Kovalev
de49895804 Adding get_zbin_mode_boost() function.
Change-Id: Ia356178d6a3c40b512d3123390781ef94dec72d6
2013-12-18 10:39:08 -08:00
Dmitry Kovalev
1d23a6594b Reusing FRAME_COUNTS in the encoder.
Change-Id: I6ab9fe2326ebbadf0dd10cca9f66cf8277e3f43b
Replacing: comp_inter_count, single_ref_count, comp_ref_count.
2013-12-16 20:12:47 -08:00
Deb Mukherjee
1e59cbf23b Rate control changes on active_worst_quality
Various cleanups and refactoring.
Removes feedback of active worst qaulity and uses last_q
instead to make the interface cleaner. Active worst quality
is now decided only once for a frame being coded in the
beginning based on last_q and other stats. Also, adds other
cleaups on last_q to store also the last_q for altref frames,
and reduces the altref interval a little.

The output does change a little.
derfraw300: +0.224% (global psnr)
stdhdraw250: +0.442% (global psnr)

Change-Id: Ie634cdc032697044c472dd0fe79c109b3e7f9767
2013-12-16 17:08:16 -08:00
hkuang
fb53409d2a Merge "Remove border extension in intra frame prediction." 2013-12-16 14:48:54 -08:00
Dmitry Kovalev
4f0a381b49 Merge "Reusing nmv_frame_counts from FRAME_COUNTS in encoder." 2013-12-16 14:10:13 -08:00
hkuang
25e5552630 Remove border extension in intra frame prediction.
Change-Id: Id677df4d3dbbed6fdf7319ca6464f19cf32c8176
2013-12-16 14:05:58 -08:00
Dmitry Kovalev
1a23a34419 Merge "Cleaning up encode_sb() and encode_b() functions." 2013-12-16 12:21:38 -08:00
Jingning Han
3b5a90bd86 Enable adaptive pred filter type for sub8x8
This commit enables an adaptive prediction filter type selection
for sub8x8 block sizes. In speed 1, it re-uses the filter type of
collocated 8x8 block if it is tested in the rate-distortion optimization
loop, for the sub8x8 blocks. Otherwise, it runs the normal test
over all the three filter types. In speed 2, it re-uses the 8x8
block's prediction filter type, if available. Otherwise, force it
to be EIGHTTAP.

Compression and speed performance wise:
speed 1
derf -0.266%
yt   -0.138%

bus at 2000 kbps: 33766ms -> 30451ms (10% speed-up)
football at 600 kbps: 48173ms -> 43786ms (9% speed-up)

speed 2
derf -0.026%
yt   +0.134%

bus at 2000 kbps: 18973ms -> 17698ms (6% speed-up)
football at 600 kbps: 26748ms -> 25096ms (6% speed-up)

Change-Id: I77e097533b969fd3472147225fa79fc98095d342
2013-12-12 17:54:34 -08:00
Dmitry Kovalev
efe5b28c09 Reusing nmv_frame_counts from FRAME_COUNTS in encoder.
Change-Id: Iadf2fcc9a5bfa5d02fc166f31963be1cc814831c
2013-12-11 15:16:10 -08:00
Dmitry Kovalev
b8dc52f4a3 Cleaning up encode_sb() and encode_b() functions.
Trying to make encode_sb() more similar to write_modes_sb() and
decode_mode_sb() because essentially all branching logic should be the
same.

Change-Id: Ib7dec7b48fce29418142abad4d1dcfdb1c770735
2013-12-11 14:38:22 -08:00