Commit Graph

5656 Commits

Author SHA1 Message Date
Dmitry Kovalev
b2be554351 Cleaning up vp9_init_second_pass().
modified_error_total from TWO_PASS struct is not required anymore.

Change-Id: I0e07cac1e6d1b6a78418116be725bcd72bfbd847
2014-05-22 13:04:43 -07:00
Deb Mukherjee
b59b324171 Merge "Renames x86_64 specific asm files" 2014-05-22 12:30:38 -07:00
Deb Mukherjee
53f1452f5d Adjust cq_level in constrained quality mode
If we are already saving a lot in bits from the target (maximum)
bitrate in the constrained quality mode, allow the quantizer
to go lower than the cq level. This hopefully will solve issues
with getting too low a bitrate and consequently poor quality for
certain videos in cq mode.

Change-Id: I1c4e8b0171fcf58f95198b3add85eea5f3c8f19f
2014-05-22 12:19:55 -07:00
Dmitry Kovalev
0a6e42c241 Adding several consts to assign_std_frame_bits().
Change-Id: I6c27c60f7192b1b397f01882ab68a68cdf767534
2014-05-22 12:17:18 -07:00
Dmitry Kovalev
6e6f5881d8 Merge "Cleaning up calculate_modified_err()." 2014-05-22 12:09:48 -07:00
Dmitry Kovalev
da39b6a1af Cleaning up calc_frame_boost().
Change-Id: I3ba9374de96dc31fb4e736742603ef988d8aaa5f
2014-05-22 12:07:14 -07:00
Dmitry Kovalev
3b72ed50b4 Merge "Removing decoded_key_frame flag." 2014-05-22 11:55:19 -07:00
Dmitry Kovalev
b8a65127ae Cleaning up calculate_section_intra_ratio().
Addition of reset_fpf_position() call fixes previous issue with this patch.

Change-Id: I356186d5a1032297a147194e81e9c7db252d14a6
2014-05-22 11:38:02 -07:00
Paul Wilkins
56966ea8ce Merge "Revert "Cleaning up calculate_section_intra_ratio()."" 2014-05-22 10:39:04 -07:00
Yaowu Xu
04cf82fb04 Merge "Enable various thresholds of motion detection" 2014-05-22 09:09:42 -07:00
Paul Wilkins
74a919a239 Revert "Cleaning up calculate_section_intra_ratio()."
Breaks rate control completely.

This reverts commit 9067b293b3.

Change-Id: I8f89e209cf7bd607f7de5c4872adcd57a9c5c72b
2014-05-22 14:30:41 +01:00
Dmitry Kovalev
e7135a9344 Removing decoded_key_frame flag.
Change-Id: I79576920efb7f3f6f197d386727409759d8bda8d
2014-05-21 15:51:40 -07:00
Deb Mukherjee
e272273443 Renames x86_64 specific asm files
Renames all x86_64 specific assembly files to consistently
end in _x86_64.asm. This will be useful for build systems to
handle these files differently.
All new 64-bit specific assembly files should use the new
naming convention.

Change-Id: I36c89584967c82ffc4088b1b5044ac15d2bb7536
2014-05-21 13:55:56 -07:00
Dmitry Kovalev
7b3136c8d7 Moving first pass related functions to vp9_firstpasss.c.
Change-Id: I7ce717badf098d1dad14cb6677c0f811057f4bb1
2014-05-21 12:45:32 -07:00
Dmitry Kovalev
508cd5a6bf Reusing rd_less_than_thresh() function.
Change-Id: I29df10fde86128467f5e99fc373ac04f004257e1
2014-05-21 12:20:07 -07:00
hkuang
0958bbd185 Merge "Fix the memory alignment issue due to patch: https://gerrit.chromium.org/gerrit/#/c/70162/" 2014-05-21 12:12:21 -07:00
Yaowu Xu
3bda7ec1ba Enable various thresholds of motion detection
This commit changed to enable the encoder to adjust motion dection
speed threshold based on picture size. In addition, cpu-used 1 now
does a partition search every other frame instead of every third
frame for low resolution inputs.

The change has no quality/speed impact for 720p and above. Test
showed the change increase encoding time by between 3% to 6% for
cpu-used 2 encodiong of 360p sequences. It also has a compression
gain about .3%.

For cpu-used 2, the change resolved some very disturbing visual
artifacts in certain sequences when large block partitionings and
transforms are used as a result of copying the partition from a
previous frame.

Change-Id: Ic7fd22508cdb811d4ca935655adbf20109286cfa
2014-05-21 12:08:56 -07:00
Dmitry Kovalev
35a83677a5 Moving itxm_add pointer from MACROBLOCKD to MACROBLOCK.
The final goal is eventually to get rid of both itxm_add and fwd_txm4x4.
This patch does it in the decoder.

Change-Id: Ibb3db57efbcbb1ac387c6742538a9fcf2c6f24a5
2014-05-21 11:09:44 -07:00
Dmitry Kovalev
66ce10c13d Merge "Deadline is not supported in VP9 decoder, removing it completely." 2014-05-21 10:37:39 -07:00
Dmitry Kovalev
3971967c0b Merge "Cleaning up calculate_section_intra_ratio()." 2014-05-21 10:35:01 -07:00
hkuang
b9e1e994e1 Fix the memory alignment issue due to patch:
https://gerrit.chromium.org/gerrit/#/c/70162/

Change-Id: I797be6a4b21460de6d791125fc20d2be3a35364f
2014-05-21 10:08:06 -07:00
Jingning Han
d8b26caa71 Merge "Adjust the forward 16x16 DCT computation steps" 2014-05-21 09:16:04 -07:00
Dmitry Kovalev
9067b293b3 Cleaning up calculate_section_intra_ratio().
Change-Id: I3258b789ce8c59fdfeaaca1acb9638b565e82a2a
2014-05-20 19:24:01 -07:00
Dmitry Kovalev
55c52f6626 Merge "Cleaning up vp9_twopass_postencode_update()." 2014-05-20 18:41:14 -07:00
Dmitry Kovalev
68ec479eb6 Merge "Replacing int_mv with MV." 2014-05-20 18:40:34 -07:00
Dmitry Kovalev
1a96edd891 Merge "Hiding struct diff in *.c file." 2014-05-20 18:32:30 -07:00
Deb Mukherjee
ef750d8472 Merge "Extends temporal filtering to work for 422 data" 2014-05-20 16:31:28 -07:00
Deb Mukherjee
a185bc3350 Extends temporal filtering to work for 422 data
This is needed for profiles 1 and 2.

Change-Id: I5dd7644c2932d055ab89e050d4be7d4117cd1028
2014-05-20 15:19:40 -07:00
hkuang
20c1edf612 Refactor decode_tiles and loopfilter code.
The current decode_tiles decodes the frame one tile by one tile
and then loopfilter the whole frame or use another worker thread to
do loopfiltering.

|------|------|------|------|
|Tile1-|Tile2-|Tile3-|Tile4-|
|------|------|------|------|

For example, if a tile video has one row and four cols, decode_tiles
will decode the Tile1, then Tile2, then Tile3, then Tile4.
And during decode each tile, decode_tile will decode row by row in
each tile.

For frame parallel decoding, decode_tiles will decode video in row order
across the tiles. So the order will be:
"Decode 1st row of Tile1" -> "Decode 1st row of Tile2"
-> "Decode 1st row of Tile3" -> "Decode 1st row of Tile4"
-> "Decode 2nd row of Tile1" -> "Decode 2nd row of Tile2"
-> "Decode 2nd row of Tile3" -> "Decode 2nd row of Tile4"-> "loopfilter 1st row"

Change-Id: I2211f9adc6d142fbf411d491031203cb8a6dbf6b
2014-05-20 14:47:45 -07:00
Dmitry Kovalev
3b62aa4825 Cleaning up vp9_twopass_postencode_update().
Change-Id: Id79138f2dd472ee95c784b0eb2781d4037c51dd8
2014-05-20 14:44:02 -07:00
Dmitry Kovalev
f82ae7980b Cleaning up calculate_modified_err().
Change-Id: I87bb1876f8a04ef28cb7135b657815e12f2f31cb
2014-05-20 14:22:10 -07:00
Minghai Shang
7af3440268 [spatial svc] Remove some restrictions that are needed to improve the quality
Change-Id: I76a48b03388a8c5cc74b871deb836cd92263b306
2014-05-20 11:16:45 -07:00
Paul Wilkins
e9ed051c83 Merge "Cosmetic clean up." 2014-05-20 02:34:56 -07:00
Yunqing Wang
f4f5de0027 Merge "Add static-threshold skipping in non-rd mode" 2014-05-19 13:01:29 -07:00
Jingning Han
7f547336b7 Adjust the forward 16x16 DCT computation steps
This commit adjusts the forward 16x16 DCT computation steps to
simplify the register level operations. It fixes the corresponding
sse2 version accordingly.

Change-Id: I72a9c25b8ca9442fc5e113f47cd701ae55aa7f08
2014-05-19 12:39:26 -07:00
Yunqing Wang
b91b146d1d Add static-threshold skipping in non-rd mode
Added a skipping test in non-rd inter-mode. After interpolation
prediction step, the residuals are tested to see if they will be
quantized to 0 based on modeling between spatial domain and
frequency domain.

Set static-thresh to 800 for >=720p and 300 for <720p, rtc set
tests showed
1. Speed 5, psnr: -0.514%; ssim: -1.748%;
   speedup on related clips: 5% -11%
2. Speed 6, psbr: -0.628%; ssim: -1.637%;
   speedup on related clips: 4% - 9%

Change-Id: I62fbf26bc043ecd2b584f255f1a4ee5ab52bfcf3
2014-05-19 11:47:13 -07:00
Dmitry Kovalev
81e03394d6 Replacing int_mv with MV.
Change-Id: Icd7eea20e944e3e28e5eb20cdc088866a54d53b4
2014-05-19 11:43:07 -07:00
Yaowu Xu
0249531bb9 Merge "Remove unused varables" 2014-05-19 11:28:33 -07:00
Dmitry Kovalev
0271c75afe Hiding struct diff in *.c file.
Change-Id: Ia0dc05e530428af9ab5aa57e24f1115b0b4765d3
2014-05-19 11:19:21 -07:00
Dmitry Kovalev
f80bd43bf8 Removing unused members from PICK_MODE_CONTEXT struct.
Change-Id: Ieb3bc037a2ae7791323a0f9cec04381ba9b0c795
2014-05-19 10:41:58 -07:00
Dmitry Kovalev
28012a75ae Merge "Cleaning up vp9_cx_iface.c." 2014-05-19 10:31:19 -07:00
Dmitry Kovalev
9ef3347b85 Merge "Cleaning up vp9_pick_inter_mode()." 2014-05-19 10:29:42 -07:00
Dmitry Kovalev
05d55026f7 Merge "Reusing swap_block_ptr() function." 2014-05-19 10:28:51 -07:00
Dmitry Kovalev
a822a2a566 Merge "Removing unused fields from twopass_rc struct." 2014-05-19 10:27:47 -07:00
Dmitry Kovalev
c23c613fdf Merge "Hiding vp9_sub_pel_filters_{8, 8s, 8lp} filters in *.c file." 2014-05-19 10:27:16 -07:00
Dmitry Kovalev
5ac6d9778f Merge "Making vp9_initialize_dec() static." 2014-05-19 10:27:07 -07:00
Yaowu Xu
d83295f2e1 Merge "Add a TODO" 2014-05-19 08:37:47 -07:00
Paul Wilkins
f07a96fdc1 Cosmetic clean up.
Use type TWO_PASS instead of "struct twopass".

Change-Id: I9d92920893bd436537b2ca19e9c9d355cca56c7c
2014-05-19 11:14:02 +01:00
Dmitry Kovalev
b043c3e081 Merge "Moving PC_TREE from MACROBLOCK to VP9_COMP." 2014-05-16 22:46:45 -07:00
Yaowu Xu
c03ae7d99f Add a TODO
Change-Id: I16bf93d40e9b345705b49bf09dd4b6996b513a83
2014-05-16 12:48:38 -07:00
Dmitry Kovalev
51545f5753 Moving PC_TREE from MACROBLOCK to VP9_COMP.
Because PC_TREE is encoder-level data, not MACROBLOCK-level data.

Change-Id: I4f620c0781acd3a2744860610117e74948e0b2b5
2014-05-16 10:17:13 -07:00
Dmitry Kovalev
0912ee1718 Cleaning up vp9_cx_iface.c.
Marking unused parameters with (void), adding consts, fixing formatting.

Change-Id: I8ac1e6606c0f2673f78bc41830e672a680ffed02
2014-05-16 09:50:23 -07:00
Dmitry Kovalev
79ba41903f Removing MACROBLOCKD dependency from loop filter.
Change-Id: I9ef40f3d95ab8f94f69e92ea25678a40956bc1ce
2014-05-16 09:48:26 -07:00
Dmitry Kovalev
b334bfc322 Merge "Removing redundant decoder_init flag." 2014-05-16 09:45:51 -07:00
Adrian Grange
9dc9f17814 Merge "Fix post-processor macros & remove vizualization" 2014-05-16 09:01:41 -07:00
Yaowu Xu
13e20b830e Merge "cleanup -wextra warnings:" 2014-05-16 07:07:47 -07:00
Yaowu Xu
3316e2654f Remove unused varables
Change-Id: Ieb508d97026d624e853c2cd61b1ddf3591bf8233
2014-05-15 18:49:53 -07:00
Yaowu Xu
7fc5e74232 Reuse precalculated result
Change-Id: Iff9efff6c9cb41f833cee40eae014bd4489a87d0
2014-05-15 18:40:13 -07:00
Dmitry Kovalev
619e6b539a Merge "Removing redundant "8x8" suffix from MODE_INFO vars." 2014-05-15 17:53:31 -07:00
Yaowu Xu
8ea9f1dad7 Merge "vp9_rdopt.c: cleanup -wextra warnings" 2014-05-15 17:44:54 -07:00
Yaowu Xu
1e4a7c111b Merge "vp9_tokenize.c: cleanup -wextra warnings" 2014-05-15 17:36:18 -07:00
Yaowu Xu
04c40d3d93 cleanup -wextra warnings:
vp9_decoder.c
  vp9_dthread.c

Change-Id: Iaafe941545db98e9e3559096a955894646084ac2
2014-05-15 15:59:25 -07:00
Yaowu Xu
2fd79c7a37 Merge "vp9_firstpass.c: clean -wextra warnings" 2014-05-15 15:20:50 -07:00
Dmitry Kovalev
4466e83a22 Merge "Removing unused img_setup field." 2014-05-15 15:02:07 -07:00
Dmitry Kovalev
0fd7fc1370 Removing redundant decoder_init flag.
Change-Id: Ieee7a7e3c40d6bcc9fa4df8d10ee9620995aa691
2014-05-15 14:59:15 -07:00
Yaowu Xu
8989e83341 Merge "vp9_pickmode.c: cleanup -wextra warnings" 2014-05-15 14:51:51 -07:00
Jim Bankoski
ec82d2dfec Merge "Revert "Remove Wextra warnings from vp9_sad.c"" 2014-05-15 11:54:23 -07:00
Yunqing Wang
c661cf0dad Merge "AVX2 To VP9 Block Error Optimization" 2014-05-15 11:29:29 -07:00
Yaowu Xu
21bb6ddb57 vp9_firstpass.c: clean -wextra warnings
Change-Id: Ic488fe6edbc119f475763d72a85809499df60106
2014-05-15 11:29:15 -07:00
Yaowu Xu
e623056b2e vp9_pickmode.c: cleanup -wextra warnings
Change-Id: I07e39f04fb11d2673722651fc78d0e9d22b1f557
2014-05-15 11:29:03 -07:00
Yaowu Xu
d7227958a7 vp9_rdopt.c: cleanup -wextra warnings
Change-Id: I1f87c689cad2224181d40a7d00f5c1064ceefa4b
2014-05-15 11:28:38 -07:00
Dmitry Kovalev
073fbdf7f5 Reusing swap_block_ptr() function.
Change-Id: I51ae33fcaaa7330b68493a782ec6ef02539fda71
2014-05-15 11:19:43 -07:00
Dmitry Kovalev
ed784a0bc4 Removing redundant "8x8" suffix from MODE_INFO vars.
Change-Id: I7ed7fecc959c6598ff98895f1a5cf7e11ac1615f
2014-05-15 11:14:42 -07:00
Dmitry Kovalev
3181290ee8 Removing unused fields from twopass_rc struct.
Change-Id: Iaece070e9d1305ac3d8df9d3431fefa6e20ac0ec
2014-05-15 11:12:45 -07:00
Dmitry Kovalev
be49292ca1 Cleaning up vp9_pick_inter_mode().
Change-Id: I21bff31e58e9078b4ffcbd2027cc52366843ff23
2014-05-15 11:10:13 -07:00
hkuang
1fe6496b17 Merge "Refactor calling loopfilter code." 2014-05-15 10:51:10 -07:00
hkuang
bf8c58be5a Refactor calling loopfilter code.
This change is mainly for a follow CL that will refactor the
decode_tiles.

Change-Id: I52de6f8dbada75a64d9a94ebb5975136ed0960b4
2014-05-15 10:21:18 -07:00
Adrian Grange
384bc5163c Fix post-processor macros & remove vizualization
Make all post-processor code conditionally
compilable based on the CONFIG_VP9_POSTPROC
macro.

Also, remove the vizualization code from VP9
since it is out of date and will not compile.

Change-Id: I1e9e13a09ecd43e9a3f3704c175ae8cd258ababd
2014-05-15 08:35:36 -07:00
Jim Bankoski
a16794dd31 Revert "Remove Wextra warnings from vp9_sad.c"
This reverts commit 7ab9a9587b

Nightly test http://build.webmproject.org/jenkins/view/libvpx-nightly-tests/job/libvpx%20unit%20tests%20(valgrind-2)/arch=x86_64-linux-gcc,filter=-*VP8*:*Large.*/276/console

Failed 

This patch did not address all the assembly issues 
some of the vp8 assembly counts on 5 arguments being passed in to this function:   

one example : vp8_sad8x16_wmt

Please address or split this into vp9 and vp8 patches.

Change-Id: I78afcc171649894f887bb8ee3c66de24aaddc7ca
2014-05-15 08:31:20 -07:00
Yaowu Xu
71854f3a6e Merge "vp9_decodeframe.c: cleanup -wextra warnings" 2014-05-15 06:50:51 -07:00
Yaowu Xu
9a2749fcc6 Merge "vp9_ratectrl.c: cleanup -wextra warning" 2014-05-15 06:50:12 -07:00
Paul Wilkins
8deb0e182b Merge "Silence unused parameter warnings." 2014-05-15 02:39:22 -07:00
Paul Wilkins
33aeb84c3f Merge "Clear unused parameter warning." 2014-05-15 02:39:14 -07:00
Yaowu Xu
06496d5508 Merge "vp9_quantizer.c: cleanup -wextra warnings" 2014-05-14 17:48:33 -07:00
Yaowu Xu
882f71e52b Merge "vp9_mbgraph.c: cleanup -wextra warnings" 2014-05-14 17:17:28 -07:00
Dmitry Kovalev
6471dd7648 Removing unused img_setup field.
Change-Id: I152e54fa1acceea5ec809d5bf7bfa7f4ef2b9acf
2014-05-14 16:47:33 -07:00
Dmitry Kovalev
39015ea200 Making vp9_initialize_dec() static.
Change-Id: I831fe91dfadf4e89f5bbba6ab7a9917d8dd2ed55
2014-05-14 16:33:00 -07:00
Dmitry Kovalev
021eaabdb8 Hiding vp9_sub_pel_filters_{8, 8s, 8lp} filters in *.c file.
Change-Id: Id401da740b0a0141caaef9e1bcccd981e5cef4a4
2014-05-14 16:21:41 -07:00
Dmitry Kovalev
86094f22ba Merge "Moving frame_coef_probs from VP9_COMP to local scope." 2014-05-14 12:38:19 -07:00
Dmitry Kovalev
9b90820c70 Merge "Cleaning up vp9_context_tree.c." 2014-05-14 12:26:48 -07:00
levytamar82
1fbab853c8 AVX2 To VP9 Block Error Optimization
vp9_block_error_sse2 can only handle 16 bytes at a time but
the function requires to handle a sequence of 32 bytes at a time
so each 16 bytes is handled in a different register.
With AVX2 optimization the 32 bytes can be handled in one register instead
of two in the SSE2
The vp9_block_error was optimized by 85%.
The user level was optimized by 1.2%

Change-Id: Ia8fffe60e61eff7432a5fbd538757894f6c319fd
2014-05-14 11:51:07 -07:00
Jingning Han
0604c0854c Merge "Tune minq index table for P frames in one_pass_cbr coding mode" 2014-05-14 10:50:11 -07:00
Yaowu Xu
6f35081003 vp9_ratectrl.c: cleanup -wextra warning
Change-Id: I7ca46fa26acd80a21210cb8d9584ad812cb995bf
2014-05-14 10:38:04 -07:00
Yaowu Xu
051332a6a4 vp9_tokenize.c: cleanup -wextra warnings
Change-Id: I85854f1ab2d60feea0bfe6b2141f89a998777ecb
2014-05-14 10:36:14 -07:00
Paul Wilkins
e6cd696ba2 Merge "Fix int compared to unsigned int warnings." 2014-05-14 10:08:30 -07:00
Paul Wilkins
8628d3a7ae Merge "Simplify 2 pass KF bitrate allocation" 2014-05-14 10:08:11 -07:00
Paul Wilkins
81bb41fafe Merge "Further two pass clean up." 2014-05-14 10:07:51 -07:00
Deb Mukherjee
9687c057f8 Merge "Remove Wextra warnings from vp9_sad.c" 2014-05-14 10:01:50 -07:00
Yaowu Xu
ed09580777 vp9_decodeframe.c: cleanup -wextra warnings
Change-Id: I0315cea6a5e58182bc2556e9825ec2ef0b1480c3
2014-05-14 09:46:11 -07:00
Yaowu Xu
c39a361b0f vp9_quantizer.c: cleanup -wextra warnings
Change-Id: If5a3c48a8c554018a5d63c1541a2900f15767a00
2014-05-14 09:37:45 -07:00
Jingning Han
e5bbb4cfd8 Merge "Silience -wextra warnings in vp9_reconintra.c" 2014-05-14 09:25:08 -07:00
Paul Wilkins
69544cfe40 Clear unused parameter warning.
Caused by a parameter which is only used under
#if CONFIG_VP9_POSTPROC.

Change-Id: I2c0979d215d45f56da1a38bb13aa214bde52a640
2014-05-14 17:20:24 +01:00
Yaowu Xu
e05a17bf8e vp9_mbgraph.c: cleanup -wextra warnings
Change-Id: Ia6e2c2741adbf45f98a447dbb401506f95a2b0c8
2014-05-14 09:18:16 -07:00
Paul Wilkins
82cf10702d Silence unused parameter warnings.
The various motion search functions share a
common function prototype. In the case of
vp9_full_range_search() two of the parameters
are not needed.

Change-Id: I0e190af54a3b3f276409f20e8ec55912f9b0b798
2014-05-14 16:47:32 +01:00
Paul Wilkins
2493e0f332 Fix int compared to unsigned int warnings.
Also delete vp9_set_roimap() which is not used in VP9.

Change-Id: I48c60b1dc8794c6a234f9c3d95e2debb7bdb3fd5
2014-05-14 16:31:17 +01:00
Paul Wilkins
1c520605e3 Merge "Clean up two unused parameters." 2014-05-14 08:05:44 -07:00
Paul Wilkins
200f9aed4f Silence unused parameter warnings.
Remove two unused parameters in the function
vp9_refining_search_8p_c().

Change-Id: Ic192734586291cf5400926eeb8e720e69d40835c
2014-05-14 14:06:16 +01:00
Paul Wilkins
7b4258da08 Clean up two unused parameters.
Unused parameters to encode_without_recode_loop()

Change-Id: Ia94ce09199cd2419f26964eb5b53db2b7718cf03
2014-05-14 12:59:34 +01:00
Paul Wilkins
6122ca87a3 Simplify 2 pass KF bitrate allocation
Simplify the calculation of KF bitrate in similar way
to previous patch for GF/arf.

This has no impact on derf or std hd sets but gives a
small net gain of ~0.1% for yt and yt-hd sets.

Change-Id: Ida64ac1428d9c2a62adb67056fadbf0180eff030
2014-05-14 12:41:42 +01:00
Paul Wilkins
d677ea1f81 Further two pass clean up.
The variation in boost calculation for gf and arf groups
is not significant enough to justify the extra complexity.
Also removed some other spurious code that no longer
has much material impact.

The handling of the rare case, where the boost bits
number is less than the number of bits a that would
be allocated if a frame was not boosted, will be dealt
with in a subsequent patch.

This change actually helps on all sets a little by
~0.1% - 0.2% with slightly bigger gains on SSIM.

Change-Id: Id42c1ac22a80a8c4993cfa0e51bc733eb9ed4f75
2014-05-14 12:29:36 +01:00
Deb Mukherjee
7ab9a9587b Remove Wextra warnings from vp9_sad.c
As a side-effect, the max_sad check is removed from the
C-implementation of VP8, for consistency with VP9, and to
ensure that the SAD tests common to VP8/VP9 pass.
That will make the VP8 C implementation of sad a little slower
but given that is rarely used in practice, the impact will be
minimal.

Change-Id: I7f43089fdea047fbf1862e40c21e4715c30f07ca
2014-05-14 03:17:31 -07:00
Dmitry Kovalev
d31b836193 Deadline is not supported in VP9 decoder, removing it completely.
Change-Id: I7675f23150404913f4b457add69fb846f6921997
2014-05-13 17:35:46 -07:00
Dmitry Kovalev
eecc750b33 Merge "Moving loopfilter call to vp9_decode_frame()." 2014-05-13 17:20:26 -07:00
Adrian Grange
28dfb16203 Merge "vp9_convolve.c: cleanup -wextra warnings" 2014-05-13 16:01:38 -07:00
Dmitry Kovalev
9e311a53cc Merge "Adding get_tile_buffers() function." 2014-05-13 15:25:34 -07:00
Dmitry Kovalev
b35b426e58 Merge "Fixing constant value used to calculate frame pts and duration." 2014-05-13 15:10:45 -07:00
Dmitry Kovalev
32c51e8222 Merge "Inlining setup_key_frame() and setup_inter_frame()." 2014-05-13 15:00:22 -07:00
Jingning Han
806fa6aaca Silience -wextra warnings in vp9_reconintra.c
The warning messages complained that there are unused arguments
in a few prediction modes. This structure was designed on purpose,
such that a wrapper function can cover all prediction mode cases
and make them readily accessible as an pointer array.

This commit silences such warnings.

Change-Id: I7036b6bdb70747e5327d8f6fceb154f100abc4c0
2014-05-13 12:54:23 -07:00
Jingning Han
3f96081a15 Tune minq index table for P frames in one_pass_cbr coding mode
Allow slightly larger minq-maxq range for P frames. This improves
the compression performance of speed -5 for rtc set by 2.7% in psnr.

Change-Id: I438653d52d0fe51111509c6092e2334bac2de0cf
2014-05-13 12:27:42 -07:00
Adrian Grange
9e0b5abc30 Merge "Move frame stats output to after update" 2014-05-13 10:07:36 -07:00
Adrian Grange
fd6bf31b8a vp9_convolve.c: cleanup -wextra warnings
Change-Id: I04930aca2293ebbaeb96dfedd2f9c5a55762fd2e
2014-05-13 09:57:24 -07:00
Dmitry Kovalev
889887aa68 Inlining setup_key_frame() and setup_inter_frame().
Change-Id: I6c0f0f91c189c041559f724f4faeada144390353
2014-05-12 17:13:07 -07:00
Dmitry Kovalev
ae7d3ef39f Moving loopfilter call to vp9_decode_frame().
Inline loopfilter has been already handled in vp9_decode_frame().
Collecting all similar code in one place now.

Change-Id: I358a0280fc7c2b27cca520bc1e8c16c4eb6491dd
2014-05-12 16:19:19 -07:00
Yaowu Xu
38f3cf125e Merge "vp9_pickmode.c: Removed unused function parameters" 2014-05-12 14:56:54 -07:00
Yaowu Xu
69d2fb856b Merge "Change to use proper type" 2014-05-12 14:05:52 -07:00
Yaowu Xu
c80287f02d Merge "fixed comparison of different int types." 2014-05-12 14:05:47 -07:00
Dmitry Kovalev
ccfb4b920a Adding get_tile_buffers() function.
Change-Id: I910c437b80af90c50831e1fbff75842d4276a027
2014-05-12 12:49:29 -07:00
Yaowu Xu
3e81ee26cc vp9_pickmode.c: Removed unused function parameters
Change-Id: I4ec07d3935dc56ca16ea4ba1e5730b09f1bf1f21
2014-05-12 12:10:23 -07:00
Yaowu Xu
26cb7bee7d Change to use proper type
Change-Id: If1afb9f3eaec88079d1d97907870409bce691c2a
2014-05-12 11:56:17 -07:00
Yaowu Xu
77c754df79 Merge "Cleanup unused parameters" 2014-05-12 11:05:54 -07:00
Yaowu Xu
817ac44aa2 Merge "Fixed comparison of different int types" 2014-05-12 11:05:48 -07:00
Yaowu Xu
7145e3f797 fixed comparison of different int types.
Change-Id: Iaa5543eb9e17589d46d9ed2bc363e2646ed4e01e
2014-05-12 10:01:00 -07:00
Johann
dbf61d2f01 Merge "Only build neon assembly for armv7 targets" 2014-05-12 09:57:20 -07:00
Yaowu Xu
d22faee98d Cleanup unused parameters
Remove unused function parameters from:
vp9_encodemb.c
vp9_encodeframe.c

Change-Id: I07725e5099cf98486e70c9c70babb0cd785c58a9
2014-05-12 09:53:11 -07:00
Yaowu Xu
eccad3897e Fixed comparison of different int types
Change-Id: I499635967faaf4ec1c498e88d09b2d3f2a4badba
2014-05-12 09:40:11 -07:00
Johann
ce23931a3f Only build neon assembly for armv7 targets
Allow selectively building just the intrinsics for armv8

Change-Id: I2f29b2e4508b8b8e5649c2906b3159ad1d4ec477
2014-05-12 08:52:02 -07:00
Paul Wilkins
702e25839e Clean up of firstpass.c
Re-factor duplicate code.
Add two pass check for use of section_intra_rating as
it is un-initialised in the 1 pass and rt case.

Change-Id: I93120796f07961b8a21fb26e1a9f0d3d13949994
2014-05-12 12:32:42 +01:00
Paul Wilkins
00d54aa331 First pass clean up.
One of a series of changes to clean up two pass
allocation as precursor to support for multiple arf
or boosted frames per GF/ARF group.

This change pulls out the calculation of the total bits
allocated to a GF/ARF group into a function, to aid
readability and reduce the line count for define_gf_group().

This change should have no material impact on output.

Change-Id: I716fba08e26f9ddde3257e7d9b188453791883a3
2014-05-12 12:31:02 +01:00
Adrian Grange
3305909bc2 Merge "Fix check of debug counts for corrupt frame" 2014-05-11 09:13:55 -07:00
James Zern
e975791564 Merge "vp9_dx_iface: subtract ptrs to validate frame_size" 2014-05-10 11:05:31 -07:00
Jingning Han
6d065ba3cb Merge "Apply constrained partition search range to non-RD mode decision" 2014-05-10 10:39:26 -07:00
Dmitry Kovalev
1b60a14ef0 Merge "Removing VP9DecoderConfig." 2014-05-09 19:13:08 -07:00
Jingning Han
734c5ffa2c Apply constrained partition search range to non-RD mode decision
This commit enables a chessboard pattern for partition search. All
the black blocks run regular partition search ranging from 8x8 to
32x32. The rest white blocks take the nearby blocks' information
to adaptively decide the effective search range.

The compression performance for rtc set at speed -5 is down by 1.5%.
For pedestrian 1080p at speed -5, the runtime goes from 41594 ms to
39697 ms, i.e., about 5% faster.

Change-Id: Ia4b96e237abfaada487c743bca08fe1afd298685
2014-05-09 17:07:19 -07:00
Alex Converse
ec8a3272fa Merge "Add an x86inc MMX fwht4x4." 2014-05-09 13:48:49 -07:00
Alex Converse
eb8a348672 Merge "Allow speed 5 lossless" 2014-05-09 13:48:42 -07:00
Adrian Grange
99892e85d5 Fix check of debug counts for corrupt frame
Fixes the idecoder in the case where:
  cm->error_resilient_mode == 0, and
  cm->frame_parallel_decoding_mode == 0, but
  new_fb->corrupted == 1.

The assert in debug_check_frame_counts fails to
take into account the case of a corrupt frame.

Change-Id: Idf318a68458cc88d65d6f3f408a10d8ffe87e43f
2014-05-09 10:12:23 -07:00
Jingning Han
9412785b02 Merge changes I3edd4b95,I4514f974,Ie7fa4386
* changes:
  Turn on unit tests for SSSE3 8x8 forward and inverse 2D-DCT
  Change eob threshold for partial inverse 8x8 2D-DCT to 12
  SSSE3 8x8 inverse 2D-DCT with first 10 coeffs non-zero
2014-05-09 09:58:39 -07:00
Alex Converse
09d947ecb9 Allow speed 5 lossless
tx_mode supercedes whatever mechanism is used to push for 16x16
allowing for the use of the 4x4 transform.

Change-Id: I6c3f05ab9fe52050e40cc6303de9334653763289
2014-05-09 09:53:46 -07:00
Adrian Grange
8d2fff7cb4 Move frame stats output to after update
Frame-level stats were being output before the
post-encode update had been carried out.

Change-Id: I67405c67c020cde4468f5db3cee76f7de5b624eb
2014-05-09 09:44:47 -07:00
Yaowu Xu
ff3baaef94 Merge "Skip testing large tx sizes when encoding lossless." 2014-05-09 09:28:05 -07:00
James Zern
a8cfbbe33f vp9_dx_iface: subtract ptrs to validate frame_size
Change-Id: Ic5a6a4a2fec802d9c9c7a71dbae59d5b4d3a8b23
2014-05-08 20:20:20 -07:00
James Zern
4aa7691225 vp9_dx_iface: fix implicit ptrdiff_t -> uint32_t conversion
Change-Id: Ib773aac06b22009408cdd29a73190b276a53fcf6
2014-05-08 20:19:49 -07:00
Alex Converse
4bb70ea136 Skip testing large tx sizes when encoding lossless.
Change-Id: Ib7a17893f6dc0f501b1252ae32804ede144dde37
2014-05-08 18:07:14 -07:00
Dmitry Kovalev
0dacecaf20 Removing VP9DecoderConfig.
We only used two members from that struct: max_threads and inv_tile_order.
Moving them directly to VP9Decoder struct.

Change-Id: If696a4e5b5b41868a55f3cc971e1d7c1dd9d5f69
2014-05-08 16:24:36 -07:00
Dmitry Kovalev
55e4b76569 Merge "Simplifying decoder_decode() function." 2014-05-08 15:01:40 -07:00
Alex Converse
b5422fab46 Add an x86inc MMX fwht4x4.
Change-Id: Ib0a73d4863478f9b8a00976379d25d2f6ebbb197
2014-05-08 12:01:27 -07:00
Jingning Han
41a350a83d Change eob threshold for partial inverse 8x8 2D-DCT to 12
The scanning order has the first 12 coefficients of the 8x8 2D-DCT
sitting in the top left 4x4 block. Hence the partial inverse 8x8
2D-DCT allows to handle cases with eob below 12.

The overall runtime of the inverse 8x8 2D-DCT unit is reduced from
166 cycles (using SSE2) to 150 cycles (using SSSE3).

Change-Id: I4514f9748042809ac84df4c14382c00f313f1cd2
2014-05-08 09:48:58 -07:00
Frank Galligan
07f9fa4336 Merge "vp9_pickmode: Fix signed/unsigned mismatch." 2014-05-08 08:49:12 -07:00
Frank Galligan
aa3d59fcf9 Merge "vp9_firstpass: Fix MSVC data loss warning." 2014-05-08 08:49:04 -07:00
Tom Finegan
86a89d740e vp9_svc_layercontext: Clean up function definition mismatch.
vp9_is_upper_layer_key_frame() definition does not match declaration--
it was missing the second const.

Change-Id: I71312579eb443be1924b8b06d8b3177c3dcb40f3
2014-05-07 18:32:27 -07:00
Tom Finegan
7811039d47 vp9_firstpass: Fix MSVC data loss warning.
Change-Id: I5307fe85ee081fbcfdf55a974f7eba1e0070c723
2014-05-07 18:27:29 -07:00
Tom Finegan
0fc027ad33 vp9_pickmode: Fix signed/unsigned mismatch.
Avoids getting reverted on the next libvpx chrome roll attempt.

Change-Id: I2431bd601111a78320af5f211f6413009674f1c8
2014-05-07 18:20:29 -07:00
Jingning Han
9e7b09bc5d SSSE3 8x8 inverse 2D-DCT with first 10 coeffs non-zero
This commit enables ssse3 assembly implementation of the 8x8
inverse 2D-DCT with only first 10 coefficients non-zero. The
average runtime for this unit goes down from 198 cycles to 129
cycles (34.8% faster).

Change-Id: Ie7fa4386f6d3a2fe0d47a2eb26fc2a6bbc592ac7
2014-05-07 17:40:02 -07:00
Jingning Han
7af0e984b8 Merge "Tune rate-distortion modeling to account for frame light change" 2014-05-07 17:36:00 -07:00
Yaowu Xu
5a65790814 Merge "Remove separate arf and gf minq tables." 2014-05-07 17:04:49 -07:00
Yaowu Xu
9b4d0e81a2 Merge "Rate control adjustment." 2014-05-07 17:04:41 -07:00
Dmitry Kovalev
dc554abc59 Merge "Cleaning up vp9_encode_frame() function." 2014-05-07 14:10:07 -07:00
Dmitry Kovalev
e91616a5d4 Merge "Using SPEED_FEATURES instead of VP9_COMP in vp9_init_search_range()." 2014-05-07 14:07:33 -07:00
Paul Wilkins
ed30c8eff2 Remove separate arf and gf minq tables.
Merged minq tables for arf and gf cases.
These tables were almost the same and for
VBR the arf table was not used at all.

Change-Id: Ie3c87e91dab613cf06f6945ac1ace0e0e4213d34
2014-05-07 14:00:15 -07:00
Paul Wilkins
38ff3e328f Rate control adjustment.
Small adjustment to the active Q range calculations.
These changes should slightly extend the available Q range
for KF/GF/ARF and narrow it for other frames.

The results for this change in isolation are broadly positive
for SSIM and average PSNR and slightly up but mixed for opsnr.

derf +0.293% opsnr, +1.286% SSIM
std-hd + 0.528% opsnr, + 1.746% SSIM
yt +0.056% opsnr, +0.457% SSIM
yt-hd -0.147% opsnr, + 0.226% SSIM

Change-Id: If065280342027ecc5d44b49fc1d440dfef041002
2014-05-07 13:56:05 -07:00
Dmitry Kovalev
68a600d82a Merge "Moving pair_set_epi32 macro into vp9_dct32x32_sse2.c." 2014-05-07 13:34:05 -07:00
Dmitry Kovalev
cc5eee12bf Merge "Removing MODE_TEST_HIT_STATS." 2014-05-07 10:40:31 -07:00
Alex Converse
1354d0bb39 Merge "Revert "Add an MMX fwht4x4"" 2014-05-07 10:09:04 -07:00
Yunqing Wang
fffeaa395c Merge "Clean up full-pixel search calling code" 2014-05-07 08:33:03 -07:00
Paul Wilkins
33b1c457ed Revert "Add an MMX fwht4x4"
Includes changes that are not compatible with VS windows builds.
Amongst other things stdint.h is not supported in VS.

This reverts commit 89fbf3de50.

Change-Id: Ifa86d7df250578d1ada9b539c9ff12ed0c523cdd
2014-05-07 12:53:27 +01:00
Jingning Han
74f98e6f45 Tune rate-distortion modeling to account for frame light change
When the variance is far less than sse, the block is considered to
be under light change. All the energy is compacted into DC coeff
and can be coded at low cost. In such situation, switch the rate-
distortion modeling from sse+var based back to variance based.

Note that this is a temporary solution to handle the rare situations
where the scene light changes.

Change-Id: I1ee0fe2b9eda6b5fac40152e1841bf23f4d229fd
2014-05-06 16:50:50 -07:00
Alex Converse
75d05d5ed4 Merge "Add an MMX fwht4x4" 2014-05-06 11:12:27 -07:00
Jingning Han
d289deb04c Merge "SSSE3 implementation of full inverse 8x8 2D-DCT" 2014-05-06 09:17:22 -07:00
Minghai Shang
e9f46ebd38 Merge "[spatial svc] No need to code full width and height for non key frame" 2014-05-05 23:21:53 -07:00
Dmitry Kovalev
3af5eab2c1 Merge "Cleaning up vp9_full_range_search_c() function." 2014-05-05 22:01:02 -07:00
Dmitry Kovalev
e8bbb3d9db Making vp9_get_sse_sum_{8x8, 16x16} static.
Change-Id: Ifb7937c977308c682986f0ce9645a0807d2aa46a
2014-05-05 19:12:38 -07:00
Dmitry Kovalev
ec234eb5e1 Merge "Moving costs from MACROBLOCK to VP9_COMP." 2014-05-05 19:10:25 -07:00
Dmitry Kovalev
a4533957b0 Merge "Cleaning up vp9_variance.c" 2014-05-05 19:09:57 -07:00
Yunqing Wang
a3c5a79426 Clean up full-pixel search calling code
Removed repetitive code.

Change-Id: Ib6adb6eaf7d4e3feeabb71651f4cc447974a925d
2014-05-05 17:44:13 -07:00
Alex Converse
89fbf3de50 Add an MMX fwht4x4
7% faster encoding a desktop lossless at RT speed 4.

Change-Id: I41627f5b737752616b6512bb91a36ec45995bf64
2014-05-05 15:10:48 -07:00
Adrian Grange
928b34e895 Fix rounding in ARNR calculation
The rounding of the ARNR filter output prior to
normalization by the filter strength was incorrect
when strength = 0.

In this case 1 << (strength - 1) would not create the
required rounding of 0, rather it would outrange. This
patch fixes this issue.

Change-Id: I771809ba34d6052b17d34c870ea11ff67b418dab
2014-05-05 11:00:43 -07:00
Jingning Han
52ae97b6aa SSSE3 implementation of full inverse 8x8 2D-DCT
This commit enables SSSE3 version full inverse 8x8 2D-DCT and
reconstruction. It makes the runtime of vp9_idct8x8_64_add down
from 256 cycles (SSE2) to 246 cycles.

Change-Id: I0600feac894d6a443a3c9d18daf34156d4e225c3
2014-05-05 10:49:27 -07:00
Minghai Shang
bb505879d6 [spatial svc] No need to code full width and height for non key frame
Change-Id: I62ab0f4346b4157a90dc5b5f73ab5e597d69c1bd
2014-05-02 11:29:05 -07:00
Dmitry Kovalev
4498194bad Cleaning up vp9_variance.c
Change-Id: Ie2b9c9881085053c191f3f7b8253e283edef573b
2014-05-02 11:10:45 -07:00
Adrian Grange
8b2b7370b5 Merge "Revert "Force ARNR filtering to be centered on the ARF frame"" 2014-05-02 08:13:06 -07:00
Adrian Grange
a481fcc3e0 Merge "Fix mode selection bug when ARNR filtering disabled" 2014-05-02 08:12:00 -07:00
Debargha Mukherjee
6497f2718f Merge "Switch the default 2 pass vbr variant." 2014-05-02 04:03:29 -07:00
Dmitry Kovalev
53888035f9 Merge "Moving #defines to *.c from *.h." 2014-05-01 18:28:34 -07:00
Dmitry Kovalev
2cba07c660 Merge "Adding vp9_temporal_filter_init() function." 2014-05-01 18:28:21 -07:00
Dmitry Kovalev
d32615c523 Merge "Replacing int_mv with MV." 2014-05-01 18:28:12 -07:00
Dmitry Kovalev
a0327f5eaf Merge "Simplifying vp9_is_upper_layer_key_frame()." 2014-05-01 18:27:56 -07:00
Dmitry Kovalev
25a666ef39 Moving pair_set_epi32 macro into vp9_dct32x32_sse2.c.
Change-Id: I642a7d343677bf934e9a54cf4ad78e908620e39a
2014-05-01 16:45:49 -07:00
Dmitry Kovalev
7d9d5df263 Using SPEED_FEATURES instead of VP9_COMP in vp9_init_search_range().
Change-Id: I961d50d6fafdd37ef7f23f0a871d28e28d2084ca
2014-05-01 16:36:51 -07:00
Dmitry Kovalev
66307bf2c8 Moving costs from MACROBLOCK to VP9_COMP.
Change-Id: I61471dd0f77d1547abec13cbf9670e1c4eb9131a
2014-05-01 16:12:23 -07:00
Dmitry Kovalev
e6a985153f Cleaning up vp9_context_tree.c.
Change-Id: I2d6389773e3c761cda62868735dc5dfbf267b49f
2014-05-01 15:23:35 -07:00