Deb Mukherjee
58b9c9fbce
Merge "Adds a non-normative resize library to vp9 encoder"
2014-01-22 11:46:43 -08:00
Yaowu Xu
528bf858fa
Merge "Prevent invaid memory access"
2014-01-22 11:39:24 -08:00
Adrian Grange
a858c5c227
Merge "Tidy up comments & remove commented out code."
2014-01-22 11:14:07 -08:00
hkuang
7f30a6f877
Merge "Seperate the border size for encoder and decoder."
2014-01-22 10:59:31 -08:00
Adrian Grange
82f6af6009
Tidy up comments & remove commented out code.
...
Change-Id: I46dd5ce06f36362c6274511cd1531d93926aa9bc
2014-01-22 09:59:01 -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
Dmitry Kovalev
ed6bb10f0f
Fixing simple_weight() function + cleanup.
...
We used y_width/y_height instead of y_crop_width/y_crop_height.
Change-Id: Ia796494956f16d7a4085e043d58bdfe6de19abe7
2014-01-22 08:57:13 -08:00
Dmitry Kovalev
73b7405a90
Merge "Simplifying target_size_from_buffer_level() function."
2014-01-22 08:54:59 -08:00
Dmitry Kovalev
36406fdb07
Removing unnecessary vp9_clear_system_state() calls.
...
Change-Id: I597645a15fff2d3a1104861a5c90f64394952e0b
2014-01-22 02:39:52 -08:00
Dmitry Kovalev
3cdcb2f567
Simplifying target_size_from_buffer_level() function.
...
Change-Id: I1d556ddf04ab0a98eadf412972a6977c1055446f
2014-01-22 02:24:01 -08:00
Dmitry Kovalev
2b6e0fe010
Merge "Cleaning up first_pass_motion_search() function."
2014-01-22 01:51:08 -08:00
Dmitry Kovalev
6e706ed783
Merge "Cleaning up vp9_ratectrl.c."
2014-01-21 23:12:42 -08:00
Dmitry Kovalev
52bcaf426d
Merge "Cleaning up vp9_setup_buffer_inter() function."
2014-01-21 23:11:39 -08:00
Dmitry Kovalev
209a3ae4f4
Merge "Replacing cpi->twopass with twopass."
2014-01-21 23:01:27 -08:00
Dmitry Kovalev
ef9f7446be
Cleaning up vp9_setup_buffer_inter() function.
...
Change-Id: Ia63e2d05fa5dca3fb67788b0f1f28e9802ef27dd
2014-01-21 19:46:07 -08:00
Yaowu Xu
4e2ae30287
Merge "remove complex rd modeling."
2014-01-21 18:02:50 -08:00
Deb Mukherjee
3cd37dfeb5
Adds a non-normative resize library to vp9 encoder
...
Adds an arbitrary-size resize library for use in scaling of input
frames in a non-normative manner in the vp9 encoder. The method
used is as follows:
Downsampling - Uses a 8 tap filter for factor of 2 decimation upto
a size just higher than the desired size. Then interpolates pixels
at a precision of 1/32 pel using a set of 8-tap filters.
Upsampling - Interpolates pixels at a precision of 1/32 pel using
a set of 8-tap filters.
There is no assembly optimization yet.
Change-Id: Ib5b81e174fc139da322bb97c8214d52289d60d8a
2014-01-21 16:50:00 -08:00
Alex Converse
7a197b2d49
Merge "Have check_initial_width() take subsampling as arguments directly."
2014-01-21 16:31:14 -08:00
Yaowu Xu
000efb5711
Merge "Enforce key frame placement"
2014-01-21 16:04:35 -08:00
hkuang
437004c710
Seperate the border size for encoder and decoder.
...
Encoder's boarder is still 160, while decoder's boarder will be 32.
With on demand and separate boarder buffer for boarder extension.
The decoder's boarder does not need to to 160 anymore.
Change-Id: I93d5aaff15a33a2213e9761eaa37c5f2870747db
2014-01-21 15:28:41 -08:00
Dmitry Kovalev
c2b5a39345
Removing duplicated SAD calculation code.
...
Change-Id: I8d693371a29103769d5bed9d5f9cfe4f58ca3189
2014-01-21 14:24:37 -08:00
Yaowu Xu
dbae98082c
Enforce key frame placement
...
Change-Id: I2f85c6b058638571d68a7209779de8ca8168934f
2014-01-21 14:08:43 -08:00
Jingning Han
20cf22a128
Enforce effective motion vector search range
...
This commit explicitly enforces the effective motion vector range
in the motion search stage. The range needs to be the intersection
of UMV border, effective absolute motion vector value range, and
the target search area.
Change-Id: I1cf7c563e02b1086040dad6c1f4f6be1538635a6
2014-01-21 12:03:18 -08:00
Dmitry Kovalev
575a083bcc
Merge "Replacing macros with inline functions."
2014-01-21 10:17:29 -08:00
Jim Bankoski
3fa1356994
remove complex rd modeling.
...
The affect on quality was minimal. Less than .1%, various sets
yt ( +.15%), derf (-.1%), hd ( -.1% ), std hd(-.15%)...
The affect on speed of encode at speed -5 was substantial ( ~3% ).
Change-Id: I8903346fbae0c35f5b9ea20f81fdd239ae81247d
2014-01-21 09:59:49 -08:00
Yaowu Xu
466f42aa10
Merge "Deprecate best_mv from encoder"
2014-01-21 09:35:52 -08:00
Dmitry Kovalev
6031abeb38
Cleaning up vp9_ratectrl.c.
...
Change-Id: I3a260d3ca68db3a9352ae5409de76e56202976e5
2014-01-17 17:43:04 -08:00
Dmitry Kovalev
a001016996
Removing MODE_STATS.
...
Change-Id: I7520e1cc82b749187c9445356dd7b54f3f3826cc
2014-01-17 17:30:22 -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
Dmitry Kovalev
2f4e6ee55d
Cleaning up vp9_picklpf.c file.
...
Change-Id: Id54f317846f61a320cc5aeef47248e074376ee5d
2014-01-17 16:09:21 -08:00
Alex Converse
7e157467dc
Merge "Fix output cropping in vp9_get_preview_raw_frame."
2014-01-17 15:49:06 -08:00
Dmitry Kovalev
c5b633975c
Merge "Removing unused vp9_yv12_copy_partial_frame() function."
2014-01-17 15:43:02 -08:00
Dmitry Kovalev
d8bfe9e24c
Cleaning up vp9_refining_search_sad() function.
...
Change-Id: I660b53da8ebf3049832ce8a10721051c4e0ebb00
2014-01-17 15:20:28 -08:00
Alex Converse
9c19953763
Fix output cropping in vp9_get_preview_raw_frame.
...
Handle the non-420 case and set uv_width.
This is needed to get the correct colorspace information out of
vp9e_get_preview().
Change-Id: I62ce118cd7082708d812deb0843c1be87582e0fe
2014-01-17 14:03:42 -08:00
Dmitry Kovalev
50ca3c8324
Merge "Cleaning up vp9_refining_search_8p_c() function."
2014-01-17 12:36:00 -08:00
Jingning Han
d100fb6139
Merge "Rename pick_sb_modes to rd_pick_sb_modes"
2014-01-17 10:58:26 -08:00
Alex Converse
2bfafefb34
Merge "Fix key frames for one pass."
2014-01-17 10:22:59 -08:00
Dmitry Kovalev
ac40c87f68
Removing unused vp9_yv12_copy_partial_frame() function.
...
Change-Id: I3149e562fe9500914f67b6f908283edcdc381ac6
2014-01-16 18:16: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
Dmitry Kovalev
67246764a2
Replacing macros with inline functions.
...
Change-Id: Ibde8fb45594cd259fc3281d7874de8fc877fd4f2
2014-01-16 18:00:44 -08:00
Dmitry Kovalev
55d0230221
Cleaning up vp9_refining_search_8p_c() function.
...
Change-Id: Icf3b3dd96d7e133a4ad7260cd95288f6217998a6
2014-01-16 16:05:36 -08:00
Jingning Han
013eba8ee8
Merge "Inter-frame non-RD mode decision"
2014-01-16 14:04:51 -08:00
Alex Converse
2b3891d9da
Fix key frames for one pass.
...
Set this_key_frame_forced flag and don't use kf_boost when not set.
Change-Id: Ibe66a82fa9219e60db358ddeb43d6471816c8b50
2014-01-16 13:04:51 -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
Adrian Grange
6cd6349896
Merge "Fix printf formatting"
2014-01-16 11:02:55 -08:00
Jim Bankoski
a5cb1b1ad5
Merge "don't dummy pack if we won't recode"
2014-01-16 08:21:03 -08:00
Dmitry Kovalev
8f0d213494
Merge "Cleaning up reatectrl.c file."
2014-01-15 16:26:09 -08:00
Dmitry Kovalev
a86a5b17e5
Replacing cpi->twopass with twopass.
...
Change-Id: I733a84ec178439ead66e031395d9a8e49e8f4d1a
2014-01-15 16:21:38 -08:00
Dmitry Kovalev
c37d54a93e
Merge "Replacing cpi->rc with rc."
2014-01-15 16:04:05 -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
d39485a776
Merge "calculate_modified_err() cleanup."
2014-01-15 12:56:32 -08:00
Dmitry Kovalev
b7465b3efb
Replacing cpi->rc with rc.
...
Change-Id: I0fbb7615545861e26ebffe72bd44f3a0e8616df7
2014-01-15 12:46:18 -08:00
Dmitry Kovalev
8b5133fc4c
Merge "Removing unused calc_partial_ssl_err() function."
2014-01-15 12:24:06 -08:00
Dmitry Kovalev
efdbd29928
calculate_modified_err() cleanup.
...
Change-Id: Ia24c9b1ff2d51dd9cb133722a041a615e1b8419f
2014-01-15 12:23:16 -08:00
Jim Bankoski
ae5b96d355
Merge "As you go mbmi->skip_coeff"
2014-01-15 12:20:14 -08:00
Dmitry Kovalev
a26899ada5
Merge "Removing intra_mode_stats."
2014-01-15 12:16:50 -08:00
Jim Bankoski
9adcc4d681
Merge "Save ~30% off tokenize_b"
2014-01-15 10:59:49 -08:00
Adrian Grange
7a203301b7
Fix printf formatting
...
Change-Id: I37c5d6f4a0f09d48d3ee31eecdb68dfa11d30bd3
2014-01-15 09:58:01 -08:00
Dmitry Kovalev
69b684279c
Merge "Cleaning up vp9_rdopt.c."
2014-01-15 00:00:33 -08:00
Dmitry Kovalev
0f008fbd2e
Cleaning up first_pass_motion_search() function.
...
Change-Id: I4826a71c7f99db09e5362b16703d024939587f25
2014-01-14 18:07:23 -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
433e5ea0e8
Fixing invalid block width/height calculation.
...
Change-Id: Ieaeb53902ce0ffd5b1b27a92583e98abfa791433
2014-01-14 17:53:32 -08:00
Dmitry Kovalev
70fe826d26
Cleaning up vp9_rdopt.c.
...
Change-Id: I5200bf68b43578eaadc4ea47b37f2633fa96d7bd
2014-01-14 17:46:14 -08:00
Jim Bankoski
da94b9be81
Save ~30% off tokenize_b
...
Refactoring for speed in the same vein as detokenize_b...
Change-Id: I90779aa46e3b13c22ddce9a42b60e1920ad97142
2014-01-14 15:19:43 -08:00
Dmitry Kovalev
f13b3d1e08
Merge "Making motion search code more compact."
2014-01-14 15:12:43 -08:00
Dmitry Kovalev
382470db42
Merge "Removing unnecessary casts + cleanup."
2014-01-14 14:47:48 -08:00
Dmitry Kovalev
970e945795
Merge changes I8eda5762,Ia2ffca07
...
* changes:
Removing unused switchable_interp_count[] field from VP9_COMP.
Using clamp() function instead of the same raw code.
2014-01-14 14:46:07 -08:00
Dmitry Kovalev
b53113c3ca
Merge "Removing unused error_bins[] field from VP9_COMP."
2014-01-14 14:45:17 -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
7da6422d63
Merge "Adding get_vp9_ref_frame_buffer() function."
2014-01-14 14:12:45 -08:00
Dmitry Kovalev
518a934f43
Merge "Converting int_mv to MV."
2014-01-14 14:11:49 -08:00
Deb Mukherjee
fc43938d5e
Merge "Minor fix on an assert"
2014-01-14 13:57:17 -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
Yaowu Xu
4f2a80f05f
Merge "fix a div by zero issue"
2014-01-13 18:04:30 -08: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
0a74236bd4
Removing unused switchable_interp_count[] field from VP9_COMP.
...
Change-Id: I8eda5762728d981ab7757388741b598c665c26ca
2014-01-13 16:30:40 -08:00
Dmitry Kovalev
46a951c846
Using clamp() function instead of the same raw code.
...
Change-Id: Ia2ffca072f5391b277ce1a0c4e5b4ece9ffc6831
2014-01-13 16:27:50 -08:00
Dmitry Kovalev
80aae67f44
Making motion search code more compact.
...
Change-Id: I04d6a006eaf2676f2d8d1d96b87f69e081969382
2014-01-13 15:24:06 -08:00
Dmitry Kovalev
9855b6e510
Reusing get_frame_new_buffer() function.
...
Change-Id: Iac5c5aeaef62a4095a60d91285d2c7ad717db0fb
2014-01-13 14:04:56 -08:00
Dmitry Kovalev
887984479c
Removing unnecessary casts + cleanup.
...
Change-Id: I7298087426977e36b61ecf493949e9412842254c
2014-01-13 13:04:05 -08:00
Dmitry Kovalev
dd31f2e4ae
Merge "Adding mv_has_subpel() function."
2014-01-13 12:00:51 -08:00
Dmitry Kovalev
b9592fa0b3
Removing intra_mode_stats.
...
Change-Id: I6e0895f7f826b484ac86945e6abe3a706a6b0399
2014-01-13 11:40:33 -08:00
Dmitry Kovalev
62a2c2b15b
Removing unused calc_partial_ssl_err() function.
...
Change-Id: Iad8b0208d3a3b0fc3d7fda3933b0fc007d4d2e9e
2014-01-13 11:26:16 -08:00
Dmitry Kovalev
2033ac49b4
Converting int_mv to MV.
...
Change-Id: Id31c0e100d275bd3650eaf5e4b8fe5ce648dbfaf
2014-01-13 11:21:07 -08:00
Dmitry Kovalev
4ae8ac7be8
Merge "Cleaning up and fixing psnr calculation code."
2014-01-13 10:59:26 -08:00
Dmitry Kovalev
b02c72b5d9
Adding mv_has_subpel() function.
...
Change-Id: I50922bb1a689f8515debaa018f850b231c21189f
2014-01-13 10:57:56 -08:00
Yaowu Xu
31d3f43e18
fix a div by zero issue
...
Change-Id: I091dfaa0ed5b9672eedd46d6097469d0802e24ef
2014-01-13 10:44:32 -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
Paul Wilkins
a00dad39bd
No arf right before real scene cut.
...
To reduce pulsing we now allow an arf just before forced key frames
and at the end of a clip or section (which may be stitched to
another clip or section). However, this does not make sense for
key frames arising from real scene cuts.
Change from original patch reflects other recent changes in regard
to alignment of gf/arf and kf groups.
Change-Id: I074a91d1207e9b3e28085af982f6718aa599775f
2014-01-13 11:35:02 +00:00
Paul Wilkins
603075fa04
Further rate control tweaks and fixes.
...
Further fixes regarding min and max rate.
Bug fixes re kf group bits and last kf group.
Change-Id: Iaafd719d30a489e135a3c55851ce8c632091a436
2014-01-13 11:34:34 +00:00
Dmitry Kovalev
d2c1e8a5a5
Cleaning up reatectrl.c file.
...
Adding temp variable for &cpi->rc.
Change-Id: Id9a658659354c12e1940532ff85311ce89071b2f
2014-01-10 17:44:33 -08:00
Dmitry Kovalev
ca677a3859
Merge "Cleaning up vp9_rc_postencode_update() function."
2014-01-10 16:53:35 -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
29736b889b
Merge "Declare setup_buffer_inter in vp9_rdopt.h"
2014-01-10 16:01:07 -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
Jingning Han
db2b350d33
Declare setup_buffer_inter in vp9_rdopt.h
...
This funtion initializes buffer pointers and first stage motion vector
prediction. It will be needed by both regular rate-distortion
optimization loop and the non-RD mode decision. Hence move its
declaration in vp9_rdopt.h
Change-Id: I64e8b6316c9d05f20756a62721533a2e4d158235
2014-01-10 13:52:40 -08:00