Commit Graph

6412 Commits

Author SHA1 Message Date
Jim Bankoski
e711617c10 Merge "vp9_postproc.c: unused parameter warning resolved" 2014-08-25 06:39:12 -07:00
Dmitry Kovalev
80fd1419f5 Removing source field from VP9_COMP.
Using local variables instead.

Change-Id: I68737f7e392b81492ffd3ef2c2ff9afbf55fb097
2014-08-22 16:57:58 -07:00
Dmitry Kovalev
a459e582cb Replacing int_mv with MV inside the first pass code.
Change-Id: Ia3be6b5a18e1ff6cc5c5f4d37e4a5d0972388308
2014-08-22 16:20:18 -07:00
Dmitry Kovalev
4b60d4a3e8 Removing local set_speed_features() function.
The function was called in two places. In the first case it is replaced
with vp9_set_speed_features() call. In the second case the body of set_speed_features() is inlined.

Change-Id: If3fdf1b4168eee97677c224f69c245fe46c7f606
2014-08-22 15:59:13 -07:00
Dmitry Kovalev
8d363882fd Choosing GOOD mode by default.
This patch fixes slow first pass problem. Mode could only be determined
from the deadline value during frame encode call. Unfortunately, we use
mode value before any encode calls during the first pass encoding (see
set_speed_features() logic). The mode for the first pass must be different
from BEST to make first pass fast.

Change-Id: I562a7d32004ff631695d91c09a44d8a9076fd6b5
2014-08-22 15:46:25 -07:00
Jingning Han
310f5a769c Merge "Move mv cost table to VP9_COMP" 2014-08-22 14:41:17 -07:00
Dmitry Kovalev
3c810ef79c Merge "Removing last_source field from VP9_COMP." 2014-08-22 14:19:49 -07:00
Dmitry Kovalev
8fa9d18379 Merge "Replacing 'struct vpx_fixed_buf' with 'vpx_fixed_buf_t’." 2014-08-22 14:19:32 -07:00
Jim Bankoski
3c463ab056 vp9_calc_ssim: remove unused parm to resolve warning
Change-Id: I2b4f4e929495837817010eae12aa6225899afaff
2014-08-22 13:41:38 -07:00
Jim Bankoski
eec110a25b vp9_denoiser_update_frame_stats: unused parm fixed
Change-Id: Ic39cc0deafb3ed509434d3d9953b99713de7394a
2014-08-22 13:41:16 -07:00
Jim Bankoski
cebe2c8d88 vp9_postproc.c: unused parameter warning resolved
Change-Id: I6d77a7c775c0482fd1f9bb03ea6f336dd2973fa0
2014-08-22 13:41:07 -07:00
Jim Bankoski
75290d9bc3 vp9_cx_iface.c: spatial_svc resolve missing initializer warning
Change-Id: I3f56a4d64828a74c370a5b3247a5f00e554a922c
2014-08-22 13:36:41 -07:00
Dmitry Kovalev
f9fb3b8e0e Replacing 'struct vpx_fixed_buf' with 'vpx_fixed_buf_t’.
Change-Id: Ibbbc5b39429d4b753f0a966b9d84d1d7bf823650
2014-08-22 11:56:31 -07:00
Jingning Han
2b1c6eacb9 Move mv cost table to VP9_COMP
The mv cost table set is maintained at frame level, hence moved to
VP9_COMP.

Change-Id: Icb3d0185d47443590bd11357de729aa4ba5c5e5e
2014-08-22 09:38:07 -07:00
Dmitry Kovalev
10da24a494 Removing last_source field from VP9_COMP.
Change-Id: I5d7cb0151d8495e5ecd073a98b73da65cc6e7274
2014-08-21 17:49:40 -07:00
Dmitry Kovalev
98c8eb85e6 Adding is_keyframe temp var.
Change-Id: I5fec955c8b8f5a9b5027a0f92afb22d22770d84a
2014-08-21 17:41:03 -07:00
Dmitry Kovalev
13eb51b83b Removing clear_system_state() call from update_coef_probs().
clear_system_state() is already called before write_compressed_header().

Change-Id: Ia9fb0d0672f939ba7d92a69a2cd6f5c62088c79d
2014-08-21 17:21:07 -07:00
Dmitry Kovalev
694a5a2596 Removing lookup_next_frame_stats().
Change-Id: Ib6b51b3d106de38a9ccbcd4a835025db185877e9
2014-08-21 17:14:45 -07:00
Dmitry Kovalev
5eb3efa9bb Converting configure_skippable_frame() to is_skippable_frame().
Change-Id: I9cc2b4c66a84386cc8a16cfe4545722876915126
2014-08-21 15:33:40 -07:00
Adrian Grange
4d5c914809 Merge "Fix bug 837 (Part 2): Handle increase in frame width" 2014-08-21 15:25:34 -07:00
Dmitry Kovalev
fbc2fbf4b2 Adding oxcf temp variable.
Change-Id: I546c7c987b38865f05bc5e2d6730a5a68e238032
2014-08-21 11:44:24 -07:00
Dmitry Kovalev
729abdb709 Removing unused debug code under WRITE_RECON_BUFFER.
Change-Id: Id2aea01c8e1d5cf9f27501d23633d3703abd6f11
2014-08-21 11:38:24 -07:00
Dmitry Kovalev
45425f8c1e Removing is_best_mode() function.
Change-Id: Iccd7cec885e8aeb0e54613d888f9960c393cee0b
2014-08-21 11:32:33 -07:00
Dmitry Kovalev
c72f0ee35b Removing output_pkt_list and pkt_list from config structs.
Change-Id: Id21f1e77f1d030fbe3f5f30486d2a7ecb2bccdf5
2014-08-21 11:13:25 -07:00
Dmitry Kovalev
df083b266a Merge "Removing extraconfig_map from vp9_cx_iface.c." 2014-08-21 11:10:13 -07:00
Dmitry Kovalev
eafa7126a0 Merge "Replacing NOT_IMPLMENTED with NULL." 2014-08-21 11:10:00 -07:00
Yaowu Xu
23c88870ec Merge "Fix bug 804" 2014-08-21 08:56:32 -07:00
Adrian Grange
7b2177ce9c Fix bug 837 (Part 2): Handle increase in frame width
The case where frame width increases but the overall memory
size required to hold the mi arrays does not was not
handled.

Change-Id: I72e70b912a7d1766687ad682979f1c9ee124449b
2014-08-21 08:15:23 -07:00
Jim Bankoski
c6e9eb6935 Merge "vp9_pickmode.c: check value that can be null to avoid warning" 2014-08-21 06:58:42 -07:00
Dmitry Kovalev
49b27a87f5 Merge "Removing iface pointer from vpx_codec_priv." 2014-08-21 00:26:56 -07:00
Dmitry Kovalev
cd6d9846b0 Replacing NOT_IMPLMENTED with NULL.
We don’t need to introduce new macro for the null value.

Change-Id: I59dbae25feeebb4e8359095801aecc8bb17d7764
2014-08-20 17:16:28 -07:00
Dmitry Kovalev
22bbdc48f6 Merge "Revert "Removing unnecessary casts to int64_t."" 2014-08-20 12:31:32 -07:00
Dmitry Kovalev
f2e652396f Removing iface pointer from vpx_codec_priv.
The iface pointer is already in vpx_codec_ctx struct.

Change-Id: I9fffe27c613a7c94476f185a1e5a53ff6d99f1c6
2014-08-20 12:31:19 -07:00
Dmitry Kovalev
c8e933ef4b Merge "Removing gold_is_last, alt_is_last, gold_is_alt flags." 2014-08-20 12:10:14 -07:00
Dmitry Kovalev
7025d72cd8 Revert "Removing unnecessary casts to int64_t."
My fault, that was a float (not integer) which was converted to int64_t.

This reverts commit a885e1cbf0

Change-Id: Ic50708b959e1c3cb3e37da1429d334fafc3391d6
2014-08-20 11:24:48 -07:00
Dmitry Kovalev
9988b9b164 Merge "Converting MODE to be just BEST, GOOD, and REALTIME." 2014-08-20 11:03:03 -07:00
Dmitry Kovalev
a3c0708a80 Merge "Adding set_mv_search_params()." 2014-08-20 11:02:56 -07:00
Jingning Han
acb11a471a Merge "Fix def pairs in 32x32 2D-DCT sse2" 2014-08-20 10:46:19 -07:00
Dmitry Kovalev
611a45fb0e Merge "Adding gf_group temp variable." 2014-08-20 09:55:05 -07:00
Jingning Han
5b21708fd5 Fix def pairs in 32x32 2D-DCT sse2
Properly pair the def/undef order.

Change-Id: I9736a6f8d2efc075b1d72dafc75b9350d055cf65
2014-08-20 09:40:30 -07:00
Dmitry Kovalev
a9e38537cd Merge "Cleaning up detect_transition_to_still()." 2014-08-19 18:42:52 -07:00
Alex Converse
b9aae3b95d Merge "Fix valgrind error in pickmode." 2014-08-19 17:46:27 -07:00
Minghai Shang
229f2aa5b8 Merge "[spatial svc]Add a few different encode frame tests." 2014-08-19 17:45:01 -07:00
James Zern
9a1d2f099c Merge "vp9_ratectrl.c : remove dead assignment to clear warning" 2014-08-19 17:09:46 -07:00
Dmitry Kovalev
b1b568e0b3 Cleaning up detect_transition_to_still().
Change-Id: I70f4bfbfb474ae0f3e34f647b596fc0269b4aa51
2014-08-19 16:01:34 -07:00
Dmitry Kovalev
8c72c79756 Merge "Adding set_rc_buffer_sizes()." 2014-08-19 16:00:38 -07:00
Dmitry Kovalev
d4adf25d96 Removing extraconfig_map from vp9_cx_iface.c.
We have just one default set of extra config values, g_usage is
never used with VP9.

Change-Id: I0f1939b0a2da4522a87a393d85be8c8acf7f364c
2014-08-19 15:59:12 -07:00
Alex Converse
0bb9dec8f7 Fix valgrind error in pickmode.
Don't intra transform blocks past the edge of the image.

Change-Id: Ib8de6901ea339f352f6a7c9cd2af64aa2f55fa8a
2014-08-19 14:09:57 -07:00
Dmitry Kovalev
6c4fecbcf1 Adding set_mv_search_params().
Change-Id: I1d1bd2d636a03e23f7d44cda349053966f99736d
2014-08-19 11:49:05 -07:00
Dmitry Kovalev
87ee096117 Adding set_rc_buffer_sizes().
Change-Id: I76aab1e4f56a790597104b5c9b0d3543d6982eae
2014-08-19 11:33:36 -07:00
Dmitry Kovalev
215151b78d Converting MODE to be just BEST, GOOD, and REALTIME.
After that change oxcf->pass and oxcf->mode become two orthogonal variables.

Change-Id: I1501f83cd2805480e8118135e6d4045fb41e26d5
2014-08-19 10:37:12 -07:00
Dmitry Kovalev
f617889be7 Moving frame_is_boosted() to vp9_speed_features.c.
Change-Id: I9261ded5fbba7a625d8224d91be296265a932410
2014-08-19 10:31:29 -07:00
Dmitry Kovalev
86533dc72d Merge "Removing unnecessary casts to int64_t." 2014-08-19 10:28:21 -07:00
Jim Bankoski
83eff950ad Merge "vp9_rdopt.c : signed unsigned mismatch in choose_tx_size" 2014-08-19 09:59:10 -07:00
Jim Bankoski
0cb31c7270 Merge "vp9_firstpass.c : remove unused parm in get_zero_motion" 2014-08-19 09:58:57 -07:00
Frank Galligan
c92cb1ceb4 Merge "Improved vp9_quantize_fp_neon()" 2014-08-19 09:47:39 -07:00
Jim Bankoski
f274ac7df5 vp9_rdopt.c : signed unsigned mismatch in choose_tx_size
Change-Id: Id68736ffa71843b02ee3634edc525219d6e54d4f
2014-08-19 06:40:29 -07:00
Jim Bankoski
b29d517344 vp9_firstpass.c : remove unused parm in get_zero_motion
Change-Id: I803bfc0b26804912ccd088d8a90a0f02fc55eed9
2014-08-19 06:39:12 -07:00
Jim Bankoski
8f4b357d99 vp9_pickmode.c: check value that can be null to avoid warning
Change-Id: Ia023a49ddb606899171ff19f9e271ec8ed0b2fb3
2014-08-19 06:16:34 -07:00
Jim Bankoski
76e9992b9b vp9_ratectrl.c : remove dead assignment to clear warning
Change-Id: Iacc0b5c58032bde372ed9f99b87712547c4d8454
2014-08-19 06:16:25 -07:00
Jim Bankoski
d735cd5e8f Merge "vp9_firstpass.c : clear warning re: use of null lc" 2014-08-19 06:16:13 -07:00
Yunqing Wang
4d98b50be5 Merge "Add early termination in transform size search" 2014-08-18 19:00:24 -07:00
Jingning Han
af2a736953 Merge "Speed up mode search depending on relative ref frame position" 2014-08-18 17:58:43 -07:00
Dmitry Kovalev
a8cd30cb5d Removing gold_is_last, alt_is_last, gold_is_alt flags.
Change-Id: I061d3bc5b13e3819710fc29504f01f01f065032e
2014-08-18 17:11:20 -07:00
Jim Bankoski
b78f8f6700 vp9_firstpass.c : clear warning re: use of null lc
Change-Id: I80f81f6f4f15766f504c15f8c20258a84bbaa9ac
2014-08-18 16:44:48 -07:00
Yunqing Wang
ba70f16011 Add early termination in transform size search
In the full-rd transform size search, we go through all transform
sizes to choose the one with best rd score. In this patch, an
early termination is added to stop the search once we see that the
smaller size won't give better rd score than the larger size. Also,
the search starts from largest transform size, then goes down to
smallest size.

A speed feature tx_size_search_breakout is added, which is turned off
at speed 0, and on for other speeds. The transform size search is
turned on at speed 1.

Borg test results:
1. At speed 1,
   derf set: psnr gain: 0.618%, ssim gain: 0.377%;
   stdhd set: psnr gain: 0.594%, ssim gain: 0.162%;
   No noticeable speed change.
3. At speed 2,
   derf set: psnr loss: 0.157%, ssim loss: 0.175%;
   stdhd set: psnr loss: 0.090%, ssim loss: 0.101%;
   speed gain: ~4%.

Change-Id: I22535cd2017b5e54f2a62bb6a38231aea4268b3f
2014-08-18 16:27:04 -07:00
Jingning Han
6a464eca05 Speed up mode search depending on relative ref frame position
This commit enables the encoder to record the location of the
center frame to generate alter reference frame. It then allows to
skip checking prediction modes of other reference frame types when
it comes to encode this frame.

The speed 3 runtime is reduced for the test sequences:
bus at CIF 1000 kbps, 9791 ms -> 9446 ms, i.e., 3.5% speed-up,
pedestrian at 1080p 2000 kbps, 184043 ms -> 175730 ms, i.e., 4.5%
speed-up.

No compression performance change observed.

Change-Id: Iacfde3bcc1445964e7a241f239bd6ea11cb94bd1
2014-08-18 16:06:54 -07:00
Dmitry Kovalev
4590c5e508 Adding gf_group temp variable.
Change-Id: Ifc33b1e893480b36ccf88794ea15e87e5cc97823
2014-08-18 15:56:26 -07:00
Dmitry Kovalev
a885e1cbf0 Removing unnecessary casts to int64_t.
Change-Id: I156419fdf68056759a4cd4206cc829a00025ef78
2014-08-18 14:37:56 -07:00
Dmitry Kovalev
17a26eb443 Replacing SVC oxcf->mode check with oxcf->pass check.
oxcf->pass is used in all other places in similar contexts.

Change-Id: I9de3a5f24311838d5a6dc3dd470d258cb189ff59
2014-08-18 14:11:59 -07:00
Dmitry Kovalev
c5bb9753c3 Merge "Removing vp9_rescale()." 2014-08-18 11:18:26 -07:00
Minghai Shang
e1b5d24837 [spatial svc]Add a few different encode frame tests.
1. Clean the code for encode frame tests
2. Add encode w/ and w/o alt reference frame test
3. Add encode SNR layers test
4. Add encode multiple layers but decode partial layers test

Change-Id: Ibd2c9bc02525db584a6f931a98405f2d851b3cd6
2014-08-18 11:18:21 -07:00
Yaowu Xu
cfd53a2479 Merge "Revert "Removing duplicated code from init_config()."" 2014-08-18 09:40:16 -07:00
Jingning Han
0e11945754 Merge "Remove unused variables in vp9_rd_pick_inter_mode_sb" 2014-08-18 09:28:04 -07:00
Jingning Han
a313c8e7be Merge "Remove unused code in vp9_rd_pick_inter_mode_sb" 2014-08-18 09:27:56 -07:00
Yaowu Xu
beff5b6aa4 Revert "Removing duplicated code from init_config()."
This reverts commit 5509b7fd8f


Observed a big drop in compression quality and speed for speed 1 for a 360p test clip, revert this now for investigation.

Change-Id: If69dc8d77a225b34dc7907a9472e1a7a0a22762d
2014-08-18 09:27:50 -07:00
Pengchong Jin
997db6fc3f Merge "Add a speed feature to give the tighter search range" 2014-08-15 19:51:04 -07:00
Dmitry Kovalev
0b8b682b70 Merge "Removing duplicated code from init_config()." 2014-08-15 17:13:37 -07:00
Dmitry Kovalev
1acc96fb80 Removing vp9_rescale().
Now everything is int64_t, so we don't need that function.

Change-Id: I7dd2023677b4943ecd968d68cc06f9d4862c3c3f
2014-08-15 17:02:10 -07:00
Pengchong Jin
eca93642e2 Add a speed feature to give the tighter search range
Add a speed feature to give the tighter partition search
range. Before partition search, calculate the histogram
of the partition sizes of the left, above and previous
co-located blocks of the current block. If the variance of
observed partition sizes is small enough, adjust the search
range around the mean partition size, which will be tigher.

The feature is currently turned on at speed 2. Experiments on
sample youtube clips show on average the runtime is reduced
by 3-7%.

For hard stdhd clips:
park_joy_1080p @ 15000kbps:       509251 ms -> 491953 ms (3.3%)
pedestrian_area_1080p @ 2000kbps: 223941 ms -> 214226 ms (4.3%)

The PSNR performance is changed:
derf: -0.112%
yt:   -0.099%
hd:   -0.090%
stdhd:-0.102%

Change-Id: Ie205ec5325bf92ec5676c243e30ba9d0adca10f2
2014-08-15 16:14:20 -07:00
Dmitry Kovalev
dc35b40a67 Merge "Simplifying vp9_set_speed_features() function." 2014-08-15 15:31:43 -07:00
Jingning Han
5386df41ba Remove unused variables in vp9_rd_pick_inter_mode_sb
Change-Id: Ib52e1ce5aa4a22d70e124c3c29a92e00ffac50e4
2014-08-15 15:28:25 -07:00
Jingning Han
5d453e39cf Remove unused code in vp9_rd_pick_inter_mode_sb
Change-Id: I4f0bac3367b1a7c5e7f746b97ca619b81c8dfc49
2014-08-15 15:08:46 -07:00
Dmitry Kovalev
5509b7fd8f Removing duplicated code from init_config().
Change-Id: I50f4485cfbdaadc3084aa5bc63bf3a2f15a0d903
2014-08-15 14:25:00 -07:00
Yunqing Wang
28b1437d77 Remove a unused speed feature
Removed disable_split_var_thresh, which is not used anymore.

Change-Id: I50119b150442e1571157433b5effc6aae0dbe0fd
2014-08-15 14:10:27 -07:00
Dmitry Kovalev
fa8de273e7 Merge "Cleaning up vp9_encoder.c." 2014-08-15 12:52:44 -07:00
Dmitry Kovalev
a646d7ff69 Merge "Removing active_arnr_{strength, frames} from VP9_COMP." 2014-08-15 12:51:56 -07:00
Adrian Grange
c5d8c1e785 Merge "get_ref_frame: fix test for valid buffer." 2014-08-15 10:41:28 -07:00
Dmitry Kovalev
f1ec9e8712 Cleaning up vp9_encoder.c.
Change-Id: Ib06c59d1adefb841a6ff653619dffb7e23f3318d
2014-08-15 10:26:03 -07:00
Dmitry Kovalev
31e54bbf42 Removing active_arnr_{strength, frames} from VP9_COMP.
Change-Id: I60472b71ca75ee0522ed2611f43e1207d44b66d0
2014-08-15 10:22:00 -07:00
James Zern
1043474665 Merge "vp9_copy_reference_dec: check ref frame index before use" 2014-08-14 18:53:39 -07:00
Jingning Han
80e5550723 Merge "Remove redundant vp9_init_plane_quantizers call" 2014-08-14 18:50:16 -07:00
James Zern
2ba201fcdb Merge "32 Align Load bug In the sub_pixel_avg_variance the parameter sec was also aligned load and changed to unaligned." 2014-08-14 18:42:34 -07:00
Dmitry Kovalev
480693b995 Merge "Moving framerate from VP9EncoderConfig to VP9_COMP." 2014-08-14 18:26:35 -07:00
Yaowu Xu
2aea20d613 Merge "Mask out H_PRED and V_PRED for 32x32 blocks" 2014-08-14 15:25:34 -07:00
Yaowu Xu
d0f256e9d4 Merge "Set max_intra_bsize to 32x32" 2014-08-14 15:25:30 -07:00
James Zern
a07d09ff34 vp9_copy_reference_dec: check ref frame index before use
use get_ref_frame() to ensure a valid frame is retrieved if one exists

Change-Id: I4b116d928e643ee62a991babd4b974037b6b3830
2014-08-14 14:57:54 -07:00
Adrian Grange
54f8cb78c6 Merge "Fix bug 837: realloc mode info buffers on resize" 2014-08-14 14:53:33 -07:00
Jingning Han
d67b608c5d Remove redundant vp9_init_plane_quantizers call
When aq mode is on, the quantizer will be reset later in the same
function (line 571).

Change-Id: I20635db31261d136d04d5deeb881ad3957078bf1
2014-08-14 14:21:08 -07:00
levytamar82
efdfdf5787 32 Align Load bug
In the sub_pixel_avg_variance the parameter sec was also aligned load and
changed to unaligned.

Change-Id: I4d4966e0291059ea4d705baed1503dc58444fcb7
2014-08-14 14:07:28 -07:00
Adrian Grange
89a213b4b0 get_ref_frame: fix test for valid buffer.
In the current implementation of the encoder,
frame buffers may come from the wider set of
12 such buffers, and is not restricted to the
8 allowed as reference frames. This is only
an implementation detail and does not affect
the constraint of having a total of 8 reference
buffers overall.

Change-Id: I075f777146c2df49c275d89232933f8127235175
2014-08-14 12:42:11 -07:00
Yaowu Xu
5966586aef Mask out H_PRED and V_PRED for 32x32 blocks
Change-Id: I2847af5062b5fa320629fcabb9fa6b23ba3e5513
2014-08-14 10:52:10 -07:00
Yaowu Xu
4d6d061316 Set max_intra_bsize to 32x32
At --good and speed 3 or above for resolution less than 720p. This
disables the tests for 64x64 intra prediction modes. Encoding time
reduction is about 1%.

Change-Id: Ib396e3d1417fece416e3f0fee929b128acbb130f
2014-08-14 10:51:44 -07:00
Yaowu Xu
d4a47a6cc0 Merge "Replace current_video_frame with better alternatives" 2014-08-14 09:06:38 -07:00
Adrian Grange
4e30565a9f Fix bug 837: realloc mode info buffers on resize
The test to determine if the mode info buffers need
to be resized when the frame size changes was
incorrect, as per bug 837.

By storing the size of the allocated data structure,
a simple test determines whether to allocate more
memory when the frame size changes.

Change-Id: I1544698f2882cf958fc672485614f2f46e9719bd
2014-08-14 08:59:15 -07:00
Adam Xu
1d476a9ba4 Merge "Simplify select_tx_mode()" 2014-08-13 19:50:01 -07:00
Yaowu Xu
741a23cd97 Replace current_video_frame with better alternatives
In the encoder, current_video_frame is used in a couple of places to
decide encoding strategy, this commit replaces with more appropriate
variables.

Change-Id: I3d3d8d8e2ea02c489e4639b9d4c446a63e357d29
2014-08-13 17:19:34 -07:00
Jingning Han
ccef8842d2 Allow full coeff probability model and cost update
This commit moves the simplified coefficient probability model
and costing update to speed 4, and turns on chessboard pattern
mode search for sub 720p sequences. The overall coding performance
of speed 3 is improved:
derf  0.889%
stdhd 1.744%

The speed 3 runtime for test sequences are improved:
bus cif at 1000 kbps 9823 ms -> 9642 ms
pedestrian 1080p 2000 kbps 189559 ms -> 183284 ms

Change-Id: Iecbc7496a68f31fd49fb09f8dfd97c028d675a5d
2014-08-13 14:17:14 -07:00
Jingning Han
1e30547984 Skip mode search based on reference frame consistency
This commit enables the encoder to skip NEARMV and ZEROMV if the
above and left blocks have identical reference frame, and the
current reference is different from that. It reduces the runtime
of speed 3 for test sequences:
bus cif at 1000 kbps 10064 ms -> 9823 ms
pedestrian 1080p at 2000 kbps 193078 ms -> 189559 ms

The compression performance is changed by
derf  -0.085%
stdhd -0.103%

Change-Id: If304f26d42e6412152a84c3dd7b02635c38444f4
2014-08-13 14:16:18 -07:00
Jingning Han
6e086548cb Merge "Enable motion field based mode seach skip" 2014-08-13 14:13:19 -07:00
Jingning Han
0daadeb60c Enable motion field based mode seach skip
This commit allows the encoder to check the above and left neighbor
blocks' reference frames and motion vectors. If they are all
consistent, skip checking the NEARMV and ZEROMV modes. This is
enabled in speed 3. The coding performance is improved:

pedestrian area 1080p at 2000 kbps,
from  74773 b/f, 41.101 dB, 198064 ms
to    74795 b/f, 41.099 dB, 193078 ms

park joy 1080p at 15000 kbps,
from 290727 b/f, 30.640 dB, 609113 ms
to   290558 b/f, 30.630 dB, 592815 ms

Overall compression performance of speed 3 is changed
derf  -0.171%
stdhd -0.168%

Change-Id: I8d47dd543a5f90d7a1c583f74035b926b6704b95
2014-08-13 12:15:13 -07:00
Yaowu Xu
b6a41802c4 Simplify select_tx_mode()
The function is called only once, right after all stats counters are
reset to 0. Therefore all the computations have zero effect on return
values. This commmit to removed those effectless code.

Change-Id: I50d27c0802547921fa36c60aa4bd92d76247f595
2014-08-13 11:48:29 -07:00
Jim Bankoski
07c3abe21e Merge "intra blocks disallowed inadvertently" 2014-08-13 08:40:14 -07:00
Paul Wilkins
a3dbc8b304 Merge "Minor Two pass rate control adjustments." 2014-08-13 02:56:19 -07:00
James Zern
4b79563805 Merge "get_ref_frame: check ref_frame_map value" 2014-08-12 22:48:27 -07:00
James Zern
80b6c9c56f Merge "VP8D_GET_FRAME_CORRUPTED: check frame pointer" 2014-08-12 21:11:36 -07:00
James Zern
a6b7bd6a1c Merge "fixes several -Wunused-function warnings" 2014-08-12 20:15:14 -07:00
James Zern
8910cf8d69 Merge "Fix a run-time integer overflow" 2014-08-12 19:21:20 -07:00
James Zern
3caed4f8fd get_ref_frame: check ref_frame_map value
'ref_frame_map' is initialized to -1. avoids using an invalid index  if
VP9_GET_REFERENCE/VP8_COPY_REFERENCE controls are issued after a decode
error.

Change-Id: I4599762c4d0b07a5943a72bf4a86ccb596cc062a
2014-08-12 17:47:04 -07:00
James Zern
7d9da93a97 VP8D_GET_FRAME_CORRUPTED: check frame pointer
if the decode of the first frame fails, frame_to_show may not be set.
fixes a crash in vpxdec with corrupt data.

Change-Id: I5ab9476d005778a13fd42a39d05876bb6c90a93c
2014-08-12 17:41:47 -07:00
Jim Bankoski
f452961765 fixes several -Wunused-function warnings
Change-Id: I4dc2cb255f4fe30998b6ee61184895dee9f5da8e
2014-08-12 16:51:07 -07:00
Yaowu Xu
3011c53d36 Fix a run-time integer overflow
Change-Id: I87255d8a25ef8c7d235cbf3c8887d7bed7892cfe
2014-08-12 16:49:07 -07:00
Jim Bankoski
5c55202c6b intra blocks disallowed inadvertently
At speed 6 the smallest partitioning was 16x16 and biggest
intra block was 8x8, essentially disallowing all intra blocks
which produces ugly artifacts when revealing new video.

Change-Id: I364042d4c64e09be0666ade64aac94d0a1b586cf
2014-08-12 16:22:32 -07:00
Alex Converse
f55f68c13a Fix pickmode for intra DC blocks
Change-Id: I4906043ec1e3577ba37622a235c54adacb66125a
2014-08-12 16:04:14 -07:00
Paul Wilkins
ea55e4d26a Minor Two pass rate control adjustments.
Alter way in which we identify static scenes.
Remove some redundant code.

Change-Id: I883c2ea2e341770648a8663d8881f720ed099b61
2014-08-12 16:27:32 +01:00
James Zern
1d9e2b5003 Merge "remove unused fields from BOOL_CODER / vp9_writer" 2014-08-11 23:08:45 -07:00
James Zern
2ee221a2dc Merge "vp9_write_bit_buffer: fix function name typo" 2014-08-11 18:43:51 -07:00
Jingning Han
245e57c78e Merge "Enable fast forward txfm and quant for rate-distortion search" 2014-08-11 17:56:48 -07:00
Minghai Shang
136a022d71 [spatial svc]Remove CONFIG_SPATIAL_SVC for ss_enable_auto_alt_ref in vpx_codec_enc_cfg to fix heap-overflow issue in asan config
Change-Id: Icdf08501db5f416285f751d316941dfacd2c69ba
2014-08-11 13:43:25 -07:00
Dmitry Kovalev
ccddd5d0f9 Merge "Removing unised OUTPUT_YUV_SRC define." 2014-08-11 11:03:20 -07:00
Jingning Han
5b63c2797a Merge "Integrate fast txfm and quant path into skip_recode system" 2014-08-11 08:53:34 -07:00
Jingning Han
9da4cd94f5 Merge "Extend skip_txfm flag into array to cover YUV planes" 2014-08-11 08:53:25 -07:00
Dmitry Kovalev
55f6ef9e53 Removing unised OUTPUT_YUV_SRC define.
Change-Id: Ia88eebf10c8620dadaa66722543db291e44fe104
2014-08-08 17:14:01 -07:00
Dmitry Kovalev
cd1fbc67f9 Simplifying vp9_set_speed_features() function.
Change-Id: I3e67230690b81ef54ef48ae26107fe7bc880ab8e
2014-08-08 16:29:24 -07:00
Jingning Han
b4b09c9796 Enable fast forward txfm and quant for rate-distortion search
This commit enables encoder to select fast forward transform and
quantization path according to the prediction residual sse/variance,
in the rate-distortion optimization scheme.

Change-Id: Ief9fc3844fd4107166d401970e800c6e5ce2b5fe
2014-08-08 16:16:51 -07:00
Dmitry Kovalev
6e5149b68d Merge "Moving pass from VP9_COMP to VP9EncoderConfig." 2014-08-08 16:07:47 -07:00
Adrian Grange
a334cb0b7d Merge "Common encode/decode function to get reference frame" 2014-08-08 15:56:18 -07:00
Dmitry Kovalev
5a78c40657 Moving framerate from VP9EncoderConfig to VP9_COMP.
Framerate changes over time, VP9EncoderConfig supposed to have static
read-only data.

Change-Id: I36580a7ee71243c1eabb57691089691731d03e67
2014-08-08 15:29:37 -07:00
Dmitry Kovalev
9a4cd41793 Merge "Removing legacy XMA features from libvpx." 2014-08-08 14:58:23 -07:00
Dmitry Kovalev
91c2f1e45a Moving pass from VP9_COMP to VP9EncoderConfig.
We had a very complicated way to initialize cpi->pass from
cfg->g_pass:
switch (cfg->g_pass) {
  case VPX_RC_ONE_PASS:
    oxcf->mode = ONE_PASS_GOOD;
    break;
  case VPX_RC_FIRST_PASS:
    oxcf->mode = TWO_PASS_FIRST;
    break;
  case VPX_RC_LAST_PASS:
    oxcf->mode = TWO_PASS_SECOND_BEST;
    break;
}

cpi->pass = get_pass(oxcf->mode).

Now pass is moved to VP9EncoderConfig and initialization is simple:
switch (cfg->g_pass) {
  case VPX_RC_ONE_PASS:
    oxcf->pass = 0;
    break;
  case VPX_RC_FIRST_PASS:
    oxcf->pass = 1;
    break;
  case VPX_RC_LAST_PASS:
    oxcf->pass = 2;
    break;
}

Change-Id: I8f582203a4575f5e39b071598484a8ad2b72e0d9
2014-08-08 14:27:54 -07:00
Scott LaVarnway
7035527c9a Improved vp9_quantize_fp_neon()
Eliminated instructions by using better neon instructions
and rearranging the loop.

On a Nexus 7, vpxenc (in realtime mode, speed -12)
reported a performance improvement of ~1.0%.

Change-Id: I6b1700e79318f647ea67ef25e954c308932950ec
2014-08-08 13:57:25 -07:00
Dmitry Kovalev
2fe6fa72fc Merge "Cleaning up vp9_encodeframe.c." 2014-08-08 13:55:34 -07:00
Adrian Grange
1ebf52df2c Common encode/decode function to get reference frame
Replaced encoder and decoder functions to get a pointer
to a reference frame with a common function, vp9_get_ref_frame,
and simplified it.

Change-Id: Icb206fcce8caace3bfd1db3dbfa318dde79043ee
2014-08-08 11:37:11 -07:00
Adrian Grange
75b42a4977 Remove coding_use_prev_mi member from VP9_COMMON
This was shadowing the use of error_resilient_mode, but with
the opposite sense.

Change-Id: Ie4d30263a304fe4b3e94f0c7741db6888cc6afd8
2014-08-08 09:40:38 -07:00
Alex Converse
bac9beff72 Merge "Fix active_map speed 6." 2014-08-08 09:30:47 -07:00
Alex Converse
6acc5c630e Merge "Cleanup SEG_LVL_SKIP handling in encode_superblock." 2014-08-08 09:30:44 -07:00
levytamar82
69a5f5ecf7 Fix bug 807
in the sub_pixel_*variance* function the dst is aligned to 16 bytes and not
to 32 bytes - now load unaligned data

Change-Id: I2e0b9745543697efc56fefa32857ea10117af135
2014-08-07 18:51:02 -07:00
Alex Converse
2a5c46d8f5 Fix active_map speed 6.
Fix the interaction between active map and reuse_inter_pred_sby. The
reuse_inter_pred_sby feature expects inter predictors to already be
built, but blocks with active map on skip this step.

Change-Id: Ibb2bf0d228f678935d82a0ede9cb0919ab7c8878
2014-08-07 15:57:58 -07:00
Alex Converse
e874aea74c Cleanup SEG_LVL_SKIP handling in encode_superblock.
Change-Id: Ib7497ba08696765cbc1b2cc4218d37f4298f278c
2014-08-07 15:57:58 -07:00
levytamar82
839911fb6d Fix bug 804
A bug in Microsoft compiler was found in the function
vp9_filter_block1d16_v8_avx2 and a workaround applied.
the bug occur when there was 4 consecutive maddubs + min + adds
intrinsic instructions.

Change-Id: I83499faeb70971e650e5663fd2490360ddb1a51b
2014-08-07 15:09:24 -07:00
Dmitry Kovalev
b539705916 Cleaning up vp9_encodeframe.c.
Change-Id: Ia3001ae5c44faee3978fc3eb7a027cd9712a0373
2014-08-07 14:55:54 -07:00
levytamar82
af10457e02 Fix bug 806
in the function sad32x32x4d and sad64x64x4d the source is aligned to 16 bytes
and not to 32 bytes - the load is now unaligned.

Change-Id: I922fdba56d0936b5cf72e4503519f185645a168c
2014-08-07 14:13:30 -07:00
Dmitry Kovalev
65234504b9 Merge "Removing direct references to VP9_COMP." 2014-08-07 14:12:32 -07:00
James Zern
79716fb668 Merge "vp9_bitstream: make some function params const" 2014-08-07 12:34:11 -07:00
Deb Mukherjee
a468170804 Merge "Changes hdr for profiles > 1 for intraonly frames" 2014-08-07 11:15:38 -07:00
James Zern
cffe2df033 vp9_bitstream: make some function params const
Change-Id: Ic49e290c7c88c55e730a0b2b0eb16ee3d0f120e7
2014-08-07 10:56:06 -07:00
Alex Converse
4db5605bdb Merge "vp9_cx_iface.c: warning missing default" 2014-08-07 10:53:01 -07:00
Dmitry Kovalev
ae249d8602 Merge "Adding ticks <-> timebase units conversion functions." 2014-08-07 10:18:08 -07:00
Deb Mukherjee
09bf1d61ca Changes hdr for profiles > 1 for intraonly frames
Specifies the bit-depth, color sampling and colorspace
for intra only frames for profiles > 0

Also adds checks to ensure that profile 1 and 3 are
exclusively used for non 420 streams.

Change-Id: Icfb15fa1acccbce8f757c78fa8a2f60591360745
2014-08-07 09:47:14 -07:00
Yaowu Xu
566716e3ae Merge "configure: add --enable-coefficient-range-checking" 2014-08-07 07:16:39 -07:00
Jim Bankoski
9ba1254317 vp9_cx_iface.c: warning missing default
Change-Id: I18cbdad6031d14d4c1a818c0ab33bbedf7b33e19
2014-08-07 06:53:24 -07:00
Jim Bankoski
8e5fa0aa05 Merge "vp9_rd.c: cleanup ugly expression" 2014-08-07 06:24:17 -07:00
Hangyu Kuang
a95758c881 Merge "Make the api behavior conform to api spec." 2014-08-06 17:44:53 -07:00
Yaowu Xu
0a2b25dcb9 configure: add --enable-coefficient-range-checking
This commit adds a configure time option used to enable strict error
checking in decoder to make sure intermediate stage cofficients of
inverse transforms are within valid range of signed 16 bit integer.

For valid VP9 input streams, intermediate stage coefficients should
always stay within the range of a signed 16 bit integer. Coefficients
can go out of this range for invalid/corrupt VP9 streams. However,
strictly checking this range for every intermediate coefficient can
be a burden for decoder, therefore such validation is only enabled
with configure option --enable-coefficient-range-checking.

Change-Id: I47d47c8c4e48a922c3d223ca59064f51b3f0f5ed
2014-08-06 17:13:16 -07:00
Jim Bankoski
4e7cd38f9e vp9_rd.c: cleanup ugly expression
Change-Id: I066763c2e3ae69ab772bb986da97af9b504f0329
2014-08-06 16:34:47 -07:00
Jingning Han
8684c23260 Integrate fast txfm and quant path into skip_recode system
This commit integrates the fast transform and quantization process
into skip_recode scheme in the rate-distortion optimization loop.
Previously the fast transform and quantization process was only
enabled for non-RD coding flow.

Change-Id: Ib7db4d39b7033f1495c75897271f769799198ba8
2014-08-06 16:11:22 -07:00
Minghai Shang
390ad737b8 [spatial svc]Add is_spatial_svc() helper function.
Change-Id: Ice5376100d8e27cbdaddfd3cd06898cedd2720fe
2014-08-06 15:20:51 -07:00
Dmitry Kovalev
545c324971 Adding ticks <-> timebase units conversion functions.
Change-Id: I75abd57367a7974a9fab8a727b2bbc54dea428c3
2014-08-06 14:58:53 -07:00
Adrian Grange
7ec06cddc6 Merge "Create function vp9_preserve_existing_gf" 2014-08-06 14:50:51 -07:00
Dmitry Kovalev
09b3d04aac Removing direct references to VP9_COMP.
Change-Id: Ic37624d807884e71f08b50fd04892f03f2708ba7
2014-08-06 12:59:02 -07:00
James Zern
ff40d9ec29 Merge "Write VP9E_SET_TUNE_CONTENT to the correct location." 2014-08-06 12:25:06 -07:00
James Zern
f80245bdea Merge "vp9_subexp: remove vp9_compute_update_table()" 2014-08-06 12:15:36 -07:00
Hangyu Kuang
7050074756 Make the api behavior conform to api spec.
When no more data is available, vpx_codec_decode should
be called with NULL as data and 0 as data_sz.

vpx_codec_get_frame iterates over a list of the frames
available for display. The iterator storage should be initialized
to NULL to start the iteration. Iteration is complete when this
function returns NULL.

Also change the unit test to conform to the api spec.

Change-Id: I4b258b309f5df3d37d10c82f01492c0394181c2a
2014-08-06 11:16:14 -07:00
Alex Converse
82eed664f3 Write VP9E_SET_TUNE_CONTENT to the correct location.
Change-Id: Ie8c976ececc79fd58c6eb16b7add053dc58e3bb8
2014-08-06 10:59:16 -07:00
Alex Converse
a6aaab3a9f Merge "Use INTER_ALL for VAR based partitions for screencast material." 2014-08-06 10:31:03 -07:00
Alex Converse
b26d9eab21 Merge "Add a codec control option to tune for screen content." 2014-08-06 10:30:40 -07:00
Johann
0fa4777b1c Merge "Remove vp9_postproc_x86.h" 2014-08-06 08:46:14 -07:00
Pengchong Jin
92cdb96e5f Merge "Directly split the block in partition search" 2014-08-06 08:38:56 -07:00
James Zern
8c3886df78 remove unused fields from BOOL_CODER / vp9_writer
measure_cost, bit_counter, value

Change-Id: I8f93444ddddbee4ece7db6076a922ad96786044c
2014-08-05 21:58:03 -07:00
James Zern
c5a7eefdca vp9_write_bit_buffer: fix function name typo
vp9_rb_bytes_written -> vp9_wb_bytes_written
+ move limits.h from the header to the source file where it's needed

Change-Id: Ifcdc856b4d4dcc2fff555ef11f86c86a0d83dab3
2014-08-05 21:57:54 -07:00
Dmitry Kovalev
a42b5c2ffc Removing legacy XMA features from libvpx.
Change-Id: I60ffee7cf78e748792fa6d109322ec32f92e40a9
2014-08-05 16:34:09 -07:00
Pengchong Jin
74593c1eae Directly split the block in partition search
This patch allows the encoder to directly split the block
in partition search, therefore skip searching NONE. It
computes a score which measures whether 16x16 motion vectors
from the first pass in the current block are consistent with
each others. If they are inconsistent and we have enough Q
to encode, split the block directly, and skip searching NONE.

This feature is under flag CONFIG_FP_MB_STATS. In speed 2,
it further gives a speedup of 3-8% on sample yt clips as
compared to the previous version under the same flag. Overall,
the features under the flag will give 7-15% on typical yt
clips at up to 6000kbps data rate. The speedup at very high
data rate is not significant.

For hard stdhd clips:
park_joy_1080p @ 15000kbps:       504541ms -> 506293ms (-0.35%)
pedestrian_area_1080p @ 2000kbps: 326610ms -> 290090ms (+11.2%)

The compression performance using the features under the flag:
derf: -0.068%
yt:   -0.189%
hd:   -0.318%
stdhd:-0.183%

To use the feature, set CONFIG_FP_MB_STATS and turn on
cpi->use_fp_mb_stats.

Change-Id: Iad58a2966515c8861aa9eb211565b1864048d47f
2014-08-05 16:13:40 -07:00
Johann
7516abc7dc Remove vp9_postproc_x86.h
This configuration has moved to vp9_rtcd_defs.pl

Change-Id: I71a31dbb8d79df226b60dd834324a5af69956c51
2014-08-05 15:46:13 -07:00
Jingning Han
1a8d45f309 Extend skip_txfm flag into array to cover YUV planes
Change-Id: Ieae182d72d625d0d3fd4ed7c7d24cb521a0f21b0
2014-08-05 15:42:12 -07:00
Adrian Grange
0984121f49 Create function vp9_preserve_existing_gf
This code was being called from two places and
difficult to parse. I rationalized it in to a
function to improve readability.

Change-Id: I154b8fe0b84e6c01e69601e78e67bd47c954d8b6
2014-08-05 15:25:21 -07:00
Alex Converse
2be9ea610f Use INTER_ALL for VAR based partitions for screencast material.
This offers 25% more compression on my HD screencast testset.

Change-Id: I85eaef95fd8f2e03e326443e9514482b2ee35cef
2014-08-05 15:23:50 -07:00
Alex Converse
572de92991 Add a codec control option to tune for screen content.
Change-Id: I12b0b0a06750cb9a5f1bdc3368deb44137acc9a3
2014-08-05 15:23:45 -07:00
James Zern
82e5665f74 vp9_subexp: remove vp9_compute_update_table()
makes update_bits[] a constant table

Change-Id: If105bf0522487f54a31e12a7cc73aa24671b19d4
2014-08-05 14:34:15 -07:00
Minghai Shang
854acfbbea Merge "[spatial svc]Enabl golden frame for base layer and fix wrong ref_frame_flag for upper layers in first frame" 2014-08-05 10:40:04 -07:00
Jim Bankoski
ba5c7efd4e Merge changes I4e2aeaef,Ie3e478ef
* changes:
  vpxdec warning errors addressed
  cast enums to int to avoid gcc warning in pred_common
2014-08-05 08:57:34 -07:00
Pengchong Jin
5971e8985b Merge "Store first pass motion vector directions" 2014-08-04 17:35:42 -07:00
Pengchong Jin
233e0ccc73 Store first pass motion vector directions
Re-organize the one-byte structure for 16x16 first pass
block. Add bits to indicate motion vector directions.

Change-Id: Id10754ba343dfc712c7fed5bcc85c67fa0bbcb89
2014-08-04 16:17:47 -07:00
Jingning Han
ef1023b786 Merge "Cosmetic indent fix in vp9_rd_pick_inter_mode_sb" 2014-08-04 15:39:51 -07:00
Minghai Shang
5de4368b43 [spatial svc]Enabl golden frame for base layer and fix wrong ref_frame_flag for upper layers in first frame
Change-Id: I1fec9c084b499b2f445b79726066d01b136b59fa
2014-08-04 15:06:21 -07:00
Jingning Han
395c934720 Cosmetic indent fix in vp9_rd_pick_inter_mode_sb
Change-Id: I303213fbb0ad5fbf28f0ca17271624b75e9d6319
2014-08-04 15:00:47 -07:00
Jim Bankoski
128827d947 cast enums to int to avoid gcc warning in pred_common
Change-Id: Ie3e478ef4fa565225d9e19a14d2f40aad966c2b6
2014-08-04 12:07:37 -07:00
Jim Bankoski
63c1c3ee64 energy -> int to avoid unsigned / signed mismatch
Change-Id: Idd1327852f0df0eab0ea3b33959f2b8292b77301
2014-08-04 12:07:26 -07:00
Jim Bankoski
967c7c0828 vp9_firstpass.c: fix unused static function
Change-Id: Ia989a01d79f1f02defbeccb1b8eee23fdf5e764e
2014-08-04 12:07:20 -07:00
Jim Bankoski
64126c3aa4 set but unused var in vp9_rdopt
Change-Id: Ie813af24d23c7d72b38749b3382b315daf516be5
2014-08-04 08:56:05 -07:00
Jim Bankoski
7f63dabfe9 break at the end of clauses with assert(0) to avoid gcc warning
Change-Id: I1b3c5337f018dde27dc819ab18bd081d169a91e8
2014-08-04 08:52:53 -07:00
Jim Bankoski
3cf5908e24 uint8_t segment and skip to avoid signed / unsigned warnings
Change-Id: I2e2765b851fb0a1b15351c2aa0e079197cbee373
2014-08-04 08:52:40 -07:00
Jim Bankoski
c3591463f4 avoid signed mismatch warning in gcc
Change-Id: I9d995178fd764be252e571fa23901da0f991bbb8
2014-08-04 08:52:40 -07:00
James Zern
ce896df057 Merge "vp9_entropy: inline comes first to avoid warning." 2014-08-01 19:15:34 -07:00
James Zern
3a924f6ed1 Merge "signed unsigned mismatch - warning error" 2014-08-01 16:28:38 -07:00
Jim Bankoski
9c74e6aac7 vp9_entropy: inline comes first to avoid warning.
Change-Id: I5b050122e6ed183a5b33c1f38e4fbf63b6721062
2014-08-01 16:05:30 -07:00
James Zern
1b6ac28a2f Merge "removed sign mismatch warning" 2014-08-01 14:45:12 -07:00
Frank Galligan
5f8fa13258 Merge "Added vp9_sad8x8_neon()" 2014-08-01 14:11:38 -07:00
Scott LaVarnway
98165ec074 Neon version of vp9_sub_pixel_variance8x8(),
vp9_variance8x8(), and vp9_get8x8var().

On a Nexus 7, vpxenc (in realtime mode, speed -12)
reported a performance improvement of ~1.2%.

Change-Id: I8a66ac2a0f550b407caa27816833bdc563395102
2014-08-01 11:35:55 -07:00
Frank Galligan
5487b6067c Merge "Neon version of vp9_sub_pixel_variance32x32()," 2014-08-01 09:46:37 -07:00
Scott LaVarnway
545be78136 Added vp9_sad8x8_neon()
Change-Id: I3be8911121ef9a5f39f6c1a2e28f9e00972e0624
2014-08-01 06:36:18 -07:00
Jim Bankoski
0f3689d32d signed unsigned mismatch - warning error
Change-Id: I991e36aa3cfa62aae6d27b253297dd9ca9e8bc12
2014-08-01 06:29:32 -07:00
Jim Bankoski
512f9b631f removed sign mismatch warning
Change-Id: Iaa40b472f6c1c48bb3bb47332b6fcf36d7f3c10e
2014-08-01 06:28:00 -07:00
Jingning Han
f94227c81d Merge "Skip calling vp9_block_energy when aq-mode is off" 2014-07-31 14:38:20 -07:00
Yunqing Wang
d5b8a1b324 Merge "Code cleanup in rdopt.c" 2014-07-31 12:20:06 -07:00
James Zern
bd72aa712b Merge "Changes interface to avoid uninitialized warnings in vp9_cx_iface.c." 2014-07-31 11:53:56 -07:00
Jingning Han
1c3a80b9a1 Skip calling vp9_block_energy when aq-mode is off
The mb_energy value is used by aq-mode. Turn off computing its
value when aq-mode is off.

Change-Id: I26c239f124eca45a5ee58b90d19eae00d9a7cda5
2014-07-31 11:51:59 -07:00
Frank Galligan
e589d8ea5c Merge "Neon version of vp9_subtract_block()" 2014-07-31 10:24:26 -07:00
Yunqing Wang
678d747259 Code cleanup in rdopt.c
Moved encode_breakout code out of handle_inter_mode().

Change-Id: Icd661136b05fdf163768c406f91e0c98a8df89eb
2014-07-31 09:55:40 -07:00
Scott LaVarnway
6f4b8dcdc2 Neon version of vp9_subtract_block()
On a Nexus 7, vpxenc (in realtime mode, speed -12)
reported a performance improvement of ~3.2%

Change-Id: I8862497264142171b7efc32df1a67714a23539f4
2014-07-31 09:28:06 -07:00
Jingning Han
a6a348b85e Merge "Refactor rd_pick_parition interface" 2014-07-31 09:25:34 -07:00
Scott LaVarnway
d39448e2d4 Neon version of vp9_sub_pixel_variance32x32(),
vp9_variance32x32(), and vp9_get32x32var().

Change-Id: I8137e2540e50984744da59ae3a41e94f8af4a548
2014-07-31 08:00:36 -07:00
Jim Bankoski
8a774e14ff Changes interface to avoid uninitialized warnings in vp9_cx_iface.c.
Change-Id: I1092239e21c1cde188ee2dcb765f4c6fc8c5cdec
2014-07-31 06:27:57 -07:00
Jingning Han
a3b062c56f Merge "Chessboard pattern partition search" 2014-07-30 14:34:42 -07:00
Pengchong Jin
7f29d22e51 Merge "Early termination after partition NONE is done in RD." 2014-07-30 13:35:02 -07:00
James Zern
d1403eafb5 Merge "vp9_cx_iface: defer compressed data buffer alloc" 2014-07-30 12:03:45 -07:00
Pengchong Jin
49866baae6 Early termination after partition NONE is done in RD.
This patch allows the encoder to skip the search for partition
SPLIT, HORZ, VERT after the search for partition NONE is done
in RD optimization. It uses the first pass block-wise statistics
to make the decision. If all 16x16 blocks in the current partition
have zero motions and small residues from the frist pass statistics,
and it has small difference variance, further partition search is
skipped.

For speed 2 setting, experiments on general youtube clips show that
the speedup varies from 1% - 10%, 5% on average. On the performance
side in PSNR, derf 0.004%, yt -0.059%, hd -0.106%, stdhd 0.032%.

For hard stdhd clips:
park_joy_1080p, 502952 ms -> 503307 ms (-0.07%)
pedestrian_area_1080p, 227049 ms -> 220531 ms (+3%)

This feature is under the compilation flag CONFIG_FP_MB_STATS and
it is off in current setting.

Change-Id: I554537e9242178263b65ebe14a04f9c221b58bae
2014-07-30 11:54:49 -07:00
Frank Galligan
81c2db591f Merge "Neon version of vp9_quantize_fp()" 2014-07-30 11:12:20 -07:00
Jingning Han
d82ff94284 Refactor rd_pick_parition interface
Remove the variable that indicates the relative block index. This
is explicitly covered by the use of pc_tree.

Change-Id: Ib13142582fff926c85e375bde656aa050add8350
2014-07-30 10:53:57 -07:00
Jingning Han
ca2dcb7fed Chessboard pattern partition search
This commit enables a chessboard pattern constrained partition
search for 720p and above resolutions. The scheme applies stricter
partition search to alternative blocks based on its above/left
neighboring blocks' partition range, as well as that of the
collocated blocks in the previous frame. It is currently turned
on at 16x16 block size level. The chessboard pattern is flipped
per coding frame.

The speed 3 runtime is reduced:
park_joy_1080p, 652832 ms -> 607738 ms (7% speed-up)
pedestrian_area_1080p, 215998 ms -> 200589 ms (8% speed-up)

The compression performance is changed:
hd     -0.223%
stdhd  -0.295%

Change-Id: I2d4d123ae89f7171562f618febb4d81789575b19
2014-07-30 10:32:41 -07:00
Jingning Han
e9935a4ca0 Merge "Clean up max/min allowed block size in rd_pick_partition" 2014-07-30 10:05:26 -07:00
Jingning Han
22cf82a14c Merge "Use frame index directly in get_chessboard_index" 2014-07-30 10:05:03 -07:00
Jim Bankoski
e71adcd834 Merge "clear up cfg unused warning in vp9_pick_inter_mode" 2014-07-30 09:56:33 -07:00
Scott LaVarnway
d4a37db5b8 Neon version of vp9_quantize_fp()
On a Nexus 7, vpxenc (in realtime mode, speed -12)
reported a performance improvement of ~12.4%

Change-Id: Id29d215acf58bb108489e218a259adf74b4768d7
2014-07-30 09:33:46 -07:00
Jim Bankoski
6647ca795d clear up cfg unused warning in vp9_pick_inter_mode
Change-Id: Iefcf0a25aaf5e44e8e791839aa82d876555025e0
2014-07-30 08:55:22 -07:00
Scott LaVarnway
521cf7e879 Neon version of vp9_sub_pixel_variance16x16(),
vp9_variance16x16(), and vp9_get16x16var().

On a Nexus 7, vpxenc (in realtime mode, speed -12)
reported a performance improvement of ~16.7%.

Change-Id: Ib163aa99f56e680194aabe00dacdd7f0899a4ecb
2014-07-30 08:17:32 -07:00
James Zern
c2c02510bd vp9_cx_iface: defer compressed data buffer alloc
currently the only way to know if multiple alt-refs are enabled is to
inspect the encoder instance.
this reduces the size of the allocation by 75% when not using multiple
alt-refs

Change-Id: Ie4baa240c2897e64b766c6ad229674884b5a65b6
2014-07-29 15:01:36 -07:00
Pengchong Jin
838b53b9fb Merge "Remove the redundant index computation in the first pass" 2014-07-29 14:27:24 -07:00
Jingning Han
6646ea73e2 Clean up max/min allowed block size in rd_pick_partition
This commit replace the repetitive retrieve of max and min allowed
partition from speed_feature with local variables max_size and
min_size.

Change-Id: Ib06f11f16615e4876e4dd5fb6a968c6bf5f7b216
2014-07-29 11:03:52 -07:00
Jingning Han
c36f78b054 Use frame index directly in get_chessboard_index
The get_chessboard_index() used to call the entire VP9_COMMON
struct pointer to retrieve the chessboard pattern index. This cl
makes it call the frame index directly.

Change-Id: I3cad9d209ea2e77a358085a04fe1ff0ddec5ba03
2014-07-29 10:55:56 -07:00
Scott LaVarnway
d19d222db6 Added vp9_fdct8x8_neon(), vp9_fdct8x8_1_neon()
On a Nexus 7, vpxenc (in realtime mode, speed -12)
reported a performance improvement of ~3.7%.

Change-Id: I428c72c40df82c6d537955e320a8debf99343004
2014-07-29 08:56:05 -07:00
Pengchong Jin
6491065775 Remove the redundant index computation in the first pass
Remove the redundant index computation when store the first
pass block-wise statistics. Currently, a single byte is
allocated for a 16x16 blocks, and all the frame statistics
saved during the first pass will be kept in memory for use
in the second pass. For a 1920x1080 300-frame clip, it will
take about 2.3 MB memory. This feature is off in current
setting.

Change-Id: I135a95b348ec093d54c6a07e1e8237626909e3bd
2014-07-28 18:31:36 -07:00
levytamar82
4ba92dc5ab Fix bug 805
Remove all the redundant dct functions (dct4x4, dct8x8)
in avx2 except dct32x32 those functions were copied originally from dct_sse2

Change-Id: I742576fbf5175f3ac09f2076976a9247b259323e
2014-07-28 15:46:01 -07:00
Pengchong Jin
c580428928 Merge "Store block-wise statistics obtained in the first pass" 2014-07-28 14:49:05 -07:00
Pengchong Jin
bae652245d Store block-wise statistics obtained in the first pass
Change-Id: I9956db2ba2f7d28f484daaf5022d8d1ef5db473c
2014-07-28 09:12:40 -07:00
Jim Bankoski
899585ebe9 Fix reference frame size restrictions.
The issue was introduced by commit g9f37d14 with adding explicit
restrictions on reference-frame scale factors. The restriction
is checked against aligned-by-8 frame dimensions, not against
original ones. So, for example, frame of 35×35 actually can refer
to frame of 70×70, but the new check won't allow this. It will
compare 35 vs 72 (not 70), so 2x downscale limit will be exceeded.

Change-Id: Ic663693034440f64ac8312cbff9e1e773a921060
2014-07-28 08:37:25 -07:00
Jingning Han
ac1f06188d Merge "Fix rd_pick_partition search loop for 4x4 blocks" 2014-07-25 15:57:35 -07:00
Jingning Han
0c103eb211 Merge "Fix potential ioc issue in vp9_get_prob for 4K above sizes" 2014-07-25 15:56:53 -07:00
Jingning Han
3d5f17311c Merge "Remove unnecessary conditional assignment" 2014-07-25 15:56:31 -07:00
Minghai Shang
8433c8f92d Merge "[spatial svc]Fix reference issues" 2014-07-25 13:24:27 -07:00
Alex Converse
f5827aee38 Merge "Refactor inter/intra_suberblock_yrd." 2014-07-25 10:51:48 -07:00