618 Commits

Author SHA1 Message Date
Jim Bankoski
a5cb1b1ad5 Merge "don't dummy pack if we won't recode" 2014-01-16 08:21:03 -08:00
Jim Bankoski
3977e64fc7 don't dummy pack if we won't recode
Avoid packing the bitstream 2 times unless we need to.  For me this
at speed -5 was a 2% speed up.

Change-Id: I32205c98f55eedd4ff031ed5fb498c84bdaa855d
2014-01-15 15:30:13 -08:00
Yaowu Xu
293532f314 Merge "Add max burst bitrate control." 2014-01-15 14:40:59 -08:00
Dmitry Kovalev
a26899ada5 Merge "Removing intra_mode_stats." 2014-01-15 12:16:50 -08:00
Adrian Grange
7a203301b7 Fix printf formatting
Change-Id: I37c5d6f4a0f09d48d3ee31eecdb68dfa11d30bd3
2014-01-15 09:58:01 -08:00
Dmitry Kovalev
b53113c3ca Merge "Removing unused error_bins[] field from VP9_COMP." 2014-01-14 14:45:17 -08:00
Dmitry Kovalev
7da6422d63 Merge "Adding get_vp9_ref_frame_buffer() function." 2014-01-14 14:12:45 -08:00
Deb Mukherjee
1699d6bd53 Minor fix on an assert
Fixes assert that fails occasionally on small values of
max-key frame intervals. Also, adds a small change on
updating frames_to_key for frame drops.

Change-Id: Icc2b33b25e3e4ced7e49f8db73e0a887ef9c99e0
2014-01-14 12:51:13 -08:00
Paul Wilkins
5c808ba13a Add max burst bitrate control.
Applies an upper limit on burst bitrate for any
frame. This is to insure that typical encodes for YT
do not produce frames that are so large that they
risk stalling HW implementations. Such frames
could also cause playback problems in SW.

For now the limit is set at 250 bits per MB for 1080P
and larger (with the 1080P limit used for smaller frames).

Setting maxQ, constant quality mode or targeting a
very high bandwidth will have precedence over this limit.

Change-Id: Ie6f776c38b06ac7cec043d034085f4b79ee46a38
2014-01-14 09:52:49 +00:00
Dmitry Kovalev
a8a5774ba9 Removing unused error_bins[] field from VP9_COMP.
Change-Id: I883eb9026b44cb354d5b01c0f1d34ecd71f942e4
2014-01-13 16:33:16 -08:00
Dmitry Kovalev
b9592fa0b3 Removing intra_mode_stats.
Change-Id: I6e0895f7f826b484ac86945e6abe3a706a6b0399
2014-01-13 11:40:33 -08:00
Dmitry Kovalev
4ae8ac7be8 Merge "Cleaning up and fixing psnr calculation code." 2014-01-13 10:59:26 -08:00
Yaowu Xu
5e5d4c0ea7 Enable reference frame masking for rt mode
Reference frame masking helped good quality mode to gain about 5% in
encoding speed, this commit enable it for rt mode to gain the speed
improvement.

In addition, this commit move the speed feature setup to a separate
function.

Change-Id: I015e8f78bbb21dd43ae183b9b9355bea2ccda9c5
2014-01-13 10:06:17 -08:00
Dmitry Kovalev
4def0a8125 Cleaning up and fixing psnr calculation code.
Introducing calc_psnr() which calculates psnr between two yv12 buffers.
Previously we incorrectly used width/height instead of
crop_width/crop_height to calculate number of samples -- fixed.

Change-Id: Iecda01980555de55ad347e0276e6641c793fa56c
2014-01-10 16:09:56 -08:00
Jingning Han
4f969ccc1b Merge "Enable skipping reference frame check in rd loop" 2014-01-10 16:00:56 -08:00
Jim Bankoski
6439aa5a0e explain speed features
Added comments to explain what the various speed features do, and removed
1 that was clearly unused.

Change-Id: Icd37a536072ddafedbfaefcecbe48979f6d10faf
2014-01-10 14:10:34 -08:00
Dmitry Kovalev
804a155d64 Adding get_vp9_ref_frame_buffer() function.
Change-Id: Iae195fcf952dd27ba424f8e95090b8ffc4d5a7c8
2014-01-10 11:59:38 -08:00
Marco Paniconi
21a0c1f38f Merge "Don't use gf_update by default for 1-pass CBR." 2014-01-10 11:43:20 -08:00
Marco Paniconi
c46538d45e Don't use gf_update by default for 1-pass CBR.
Change-Id: I5df6abceb0a2a69706feadeb820b593cae88f573
2014-01-10 10:40:12 -08:00
Marco Paniconi
a260369aa8 Merge "Keep buffer clipped to maximum in change_config." 2014-01-10 09:33:33 -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
Deb Mukherjee
36c8daed58 Merge "Cleanups on refresh flags" 2014-01-09 17:38:45 -08:00
Deb Mukherjee
412e4954c1 Cleanups on refresh flags
Cleanups on frame refresh flags and external overrides.

Change-Id: Ia6a56fe1bde906b1dc3fcbf4ef1c7b207cd2df2d
2014-01-09 17:00:23 -08:00
Yaowu Xu
b1d81e19d8 Merge "Simplify set_rt_speed_feature()" 2014-01-09 15:02:24 -08:00
Marco Paniconi
193fa5c8ba Keep buffer clipped to maximum in change_config.
Under a configuration change, where the bitrate suddenly decreases,
the buffer level may be larger than maximum allowed (for that first frame to be encoded after change_config).
This change keeps it clipped to its maximum level.

Change-Id: I4d0b5b3d1fd8148600dd39e02bd630c9464baba5
2014-01-09 14:33:40 -08:00
Dmitry Kovalev
c8e8d3a461 Merge "Renaming 'Sharpness' to 'sharpness'." 2014-01-09 13:42:55 -08:00
Yaowu Xu
2d381d76d8 Simplify set_rt_speed_feature()
1. Made speed choices to be progressive
2. Adjusted rt speed settings to achieve better speed/quality

Overall, rt-5 gained 2.5% in compression/quality, encoding time of 720p
niklas clip goes from 137,052ms to 121,874ms

Change-Id: Ia6e7e1e15225395a868a2f1059c3db8e266e1600
2014-01-09 13:02:15 -08:00
Dmitry Kovalev
d606bf93ef Merge "Removing direct references to {lst_fb, gld_fb, alt_fb}_idx fields." 2014-01-08 18:12:09 -08:00
Dmitry Kovalev
510a828256 Removing direct references to {lst_fb, gld_fb, alt_fb}_idx fields.
Change-Id: Ib1d9628d2b538b6dc27b0db1fa7f40f70ff2072f
2014-01-08 15:21:41 -08:00
Dmitry Kovalev
962c8b241e Renaming 'Mode' to 'mode'.
Change-Id: I6cdd670d66288dbd66228f38bba6b30502d25362
2014-01-08 14:33:59 -08:00
Dmitry Kovalev
57be81369a Renaming 'Sharpness' to 'sharpness'.
Change-Id: I54513dc3b3321e0c0bb6b15ea5c34085ed80b4a4
2014-01-08 14:19:14 -08:00
Deb Mukherjee
0d21d79bbc Merge "Further rate control cleanups" 2014-01-08 09:20:29 -08:00
Deb Mukherjee
730ade414d Further rate control cleanups
Some cleanups on frames_to_key, frames_since_key.
Also removes the unused fixed_q parameters in vp9.

Change-Id: If8743a32c71de30a8d17136477b53d607a7acda8
2014-01-07 13:51:50 -08:00
Jingning Han
fdad4fd226 Remove deprecated variable from rt_speed_feature
This resolves a merge error.

Change-Id: Ifb83acc0a08e80c82f7624f9c86f79d3a86cc871
2014-01-07 10:15:51 -08:00
Jingning Han
656166ea81 Merge "Remove avoid_frame_with_high_error from RD loop" 2014-01-07 09:31:17 -08:00
Yaowu Xu
9aa16eecd0 Merge "Added placeholder for real time mode" 2014-01-06 16:26:57 -08:00
Dmitry Kovalev
29199efd57 Merge "Moving reset_segment_features() to encoder/vp9_segmentation.h." 2014-01-06 15:01:54 -08:00
Dmitry Kovalev
bbb25e6a39 Merge "Adding RefBuffer struct." 2014-01-06 14:19:44 -08:00
Jingning Han
393a8ccef9 Remove avoid_frame_with_high_error from RD loop
The feature undergoes prior assumption that the recursive partition
size search from 4x4 to 64x64, hence utilizing information from small
blocks to determine early termination in large block rate-distortion
optimization search. The current codebase is now going from top down.
The previous function might go with not properly initialized values,
hence removed.

Tested on pedestrian_area_1080p at 4000 kbps running under speed 2.
No visible difference in runtime observed.

Change-Id: I553df415c6191413762db7ae34e8790c71d8118e
2014-01-06 13:34:07 -08:00
Yaowu Xu
a2c01ed5b4 Added placeholder for real time mode
Change-Id: I203d10f76c7ca78d875eaae15557cd765c6240d1
2014-01-06 11:57:25 -08:00
Dmitry Kovalev
4603f31d02 Moving reset_segment_features() to encoder/vp9_segmentation.h.
Change-Id: I0db4b31cb2382d4f6249eae0a8f42d227ad0ac57
2014-01-06 11:31:57 -08:00
Deb Mukherjee
cf3d2c8d5a Corerctly sets frame type in the 2 pass case
This patch sets frame types correctly in the new
vp9_get_second_pass_params() function called prior
to encode_frame_to_data_rate() function, so that the
latter function can just work with what is passed to
it. This will allow multiple vp9_get_second_pass_params()
to be created for various encode strategies without
messing with the core encode function.

There is no difference in derf and yt. stdhd/hd are pending.

Change-Id: I70dfb97e9f497e9cee04052e0e8e0c2892eab0c3
2014-01-06 10:49:25 -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
Yunqing Wang
a7248a04b7 Merge "Remove a unused sub-pixel search" 2013-12-27 14:05: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
Marco Paniconi
68cdbfe50e Merge "Initialize avg_frame_qindex to worst_allowed for 1 pass." 2013-12-20 10:28:09 -08:00
Yaowu Xu
2472f125c1 Fix a bug
The line was accidently removed in 4dbad63a7.

Change-Id: Ic1e18f209cead95cecc684f952ae667271b58a97
2013-12-20 08:52:35 -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
Marco Paniconi
5ba4b16c2d Initialize avg_frame_qindex to worst_allowed for 1 pass.
Change-Id: I535bde16c8fc4c2cd263bbbbaed46ead4c776090
2013-12-19 14:55:49 -08:00