Alex Converse [Thu, 9 Jul 2015 16:57:01 +0000 (16:57 +0000)]
Merge "Add an SSE2 version of vp9_iwht4x4_16_add."
paulwilkins [Thu, 9 Jul 2015 16:38:37 +0000 (16:38 +0000)]
Merge "Change speed and rd features for formatting bars."
Jingning Han [Wed, 8 Jul 2015 21:26:00 +0000 (14:26 -0700)]
Format fixes in vp9_encodeframe.c and vp9_encodemb.c
Change-Id: Ib1303dac9043ab1b1f8fce54611cf4ea8a208038
Jingning Han [Wed, 8 Jul 2015 16:15:39 +0000 (09:15 -0700)]
Refactor transform block loop for inter mode decoding
Rework the inter mode transform block decoding loop. Replace the
block index with the row and col index as the input argument. It
saves function call to compute the row and col index according to
the block index and overall block size, and many if statements
associated with the transform block position relative to the coding
block. For the test bit-stream pedestrian_area 1080p at 5 Mbps,
the decoding speed goes up from 81.13 fps to 81.92 fps.
Note that the intra coded block decoding needs more refactoring
work than the inter ones. So keep it using foreach_transforme_block
as for now.
Change-Id: I5622bdae7be28ed5af96693274057f55ba9b4fb4
Alex Converse [Tue, 7 Jul 2015 22:27:54 +0000 (15:27 -0700)]
Add an SSE2 version of vp9_iwht4x4_16_add.
80% fewer cycles than C
Change-Id: I841bde1e268ddd33ae2ee75eee94737a400e2cde
Alex Converse [Wed, 8 Jul 2015 20:42:34 +0000 (20:42 +0000)]
Merge "Don't allocate dqcoeff in MACROBLOCKD."
Alex Converse [Wed, 8 Jul 2015 04:19:21 +0000 (21:19 -0700)]
Don't allocate dqcoeff in MACROBLOCKD.
The encoder gets its dqcoeff from the context tree. In the decoder move
it to directly after MACROBLOCKD.
Change-Id: I46c9b76f26956a360d17de0b26ecb994dae34ecb
Jingning Han [Wed, 8 Jul 2015 19:28:24 +0000 (19:28 +0000)]
Merge "Refactor inverse_transform_block argument list"
Jingning Han [Wed, 8 Jul 2015 19:27:21 +0000 (19:27 +0000)]
Merge "Reset dqcoeff[0] only if eob is 1"
Frank Galligan [Wed, 8 Jul 2015 18:15:38 +0000 (18:15 +0000)]
Merge "VP9_LPF_VERTICAL_16_DUAL_SSE2 optimization"
Johann [Wed, 8 Jul 2015 17:50:32 +0000 (17:50 +0000)]
Merge "Use 'unsigned long' for _BitScanReverse parameter"
paulwilkins [Wed, 24 Jun 2015 10:36:51 +0000 (11:36 +0100)]
Change speed and rd features for formatting bars.
Change speed features / behavior for split mode when there
is an internal active edge (e.g. formatting bars).
Remove some threshold constraints in rd code near the active
edge of the image.
Add some plumbing for left and right active edge detection.
Patch set 5. Limit rd pass through for sub 8x8 to internal active edges.
This takes away any speed penalty for most clips but keeps the enhanced
edge coding for the more critical case of internal image edges
Change-Id: If644e4762874de4fe9cbb0a66211953fa74c13a5
Jingning Han [Tue, 7 Jul 2015 22:32:27 +0000 (15:32 -0700)]
Refactor inverse_transform_block argument list
Replace block index with transform type in the argument list. This
allows to save an extra fetch to the prediction mode. For pedestrian
area 1080p coded at 5 Mbps with single tile, the average decoding
speed goes up from 80.55 fps (before the refactoring series) to
81.13 fps.
Change-Id: Icbebf84ce63c19c0c92f3690ed201f6c3eab7881
James Zern [Wed, 8 Jul 2015 01:27:11 +0000 (01:27 +0000)]
Merge "vp9_entropymv: remove vp9_get_mv_mag()"
Johann [Wed, 8 Jul 2015 00:45:06 +0000 (17:45 -0700)]
Use 'unsigned long' for _BitScanReverse parameter
New clang warnings in chromium reveal an incompatible pointer being
passed.
Change-Id: I0d893993726ecf899f467c16175bfb8c76329731
https://code.google.com/p/chromium/issues/detail?id=504696
Frank Galligan [Wed, 8 Jul 2015 00:16:02 +0000 (00:16 +0000)]
Merge "Add vp9_int_pro_row_neon."
Johann [Tue, 7 Jul 2015 23:57:17 +0000 (23:57 +0000)]
Merge "Move sub pixel variance to vpx_dsp"
Jingning Han [Tue, 7 Jul 2015 23:09:39 +0000 (23:09 +0000)]
Merge "Rework scan order fetch logic for decoder"
Johann [Fri, 5 Jun 2015 16:54:19 +0000 (09:54 -0700)]
Move sub pixel variance to vpx_dsp
Change-Id: I66bf6720c396c89aa2d1fd26d5d52bf5d5e3dff1
Marco [Tue, 7 Jul 2015 22:47:43 +0000 (22:47 +0000)]
Merge "Update to speed 5 non-rd mode partition search."
Jingning Han [Tue, 7 Jul 2015 22:35:44 +0000 (22:35 +0000)]
Merge "Add vp9_ prefix to init_macroblockd"
Jingning Han [Tue, 7 Jul 2015 22:35:26 +0000 (22:35 +0000)]
Merge "Reduce dqcoeff array size in decoder"
Jingning Han [Tue, 7 Jul 2015 22:18:30 +0000 (15:18 -0700)]
Reset dqcoeff[0] only if eob is 1
If only the first dequantized coefficient is non-zero, reset
dqcoeff[0] to zero directly.
Change-Id: I0197ba72028a8ec436f0b1b9abcc1c0ae5d70abe
Jingning Han [Tue, 7 Jul 2015 20:52:56 +0000 (13:52 -0700)]
Rework scan order fetch logic for decoder
Save redundant call for getting prediction mode to obtain scan
order for detokenization.
Change-Id: I0683ef119f1579d1261ed5d59052a1745b68ef6f
Marco [Tue, 7 Jul 2015 21:34:08 +0000 (21:34 +0000)]
Merge "Update to vpx_temporal_svc_encoder:"
Jingning Han [Tue, 7 Jul 2015 20:42:18 +0000 (20:42 +0000)]
Merge "Unify subtract function used in VP8/9"
Yaowu Xu [Tue, 7 Jul 2015 19:28:56 +0000 (19:28 +0000)]
Merge "Allows using optimzed version vp9_fdct8x8"
Johann [Tue, 7 Jul 2015 19:14:32 +0000 (19:14 +0000)]
Merge "Remove comment about disabled tests"
Jingning Han [Tue, 7 Jul 2015 19:00:01 +0000 (12:00 -0700)]
Add vp9_ prefix to init_macroblockd
Change-Id: I202d4924e627eec94838741df004ed9259d38b88
Marco [Tue, 7 Jul 2015 18:43:15 +0000 (11:43 -0700)]
Update to speed 5 non-rd mode partition search.
If the pre-selected partition size (from variance partition) is
32x32, also apply nonrd partition search for 32x32 and 16x16 size.
Overall small positive gain in metrics, average ~1%.
Some visual improvement, for lower resolutions.
Change-Id: I69cb425bda94f7d13d34c451ab30e9276335a30e
Jingning Han [Tue, 7 Jul 2015 18:36:05 +0000 (11:36 -0700)]
Reduce dqcoeff array size in decoder
The decoding process handles detokenization and reconstruction per
transform block sequentially. There is no need to offset the dqcoeff
buffer according to the transform block index. This allows to
reduce the memory spill and improve cache performance.
Change-Id: Ibb8bfe532a7a08fcabaf6d42cbec1e986901d32d
Parag Salasakar [Tue, 7 Jul 2015 18:14:18 +0000 (18:14 +0000)]
Merge "mips msa vp8 idct optimization"
Marco [Tue, 7 Jul 2015 18:07:10 +0000 (11:07 -0700)]
Update to vpx_temporal_svc_encoder:
Add set_tune_content control setting.
Change-Id: I8f7af8e8e9bc35a2d1546c5a0b2dd14be3cce750
Yaowu Xu [Tue, 7 Jul 2015 17:28:42 +0000 (10:28 -0700)]
Allows using optimzed version vp9_fdct8x8
Change-Id: I59cecb7178a93cdee7ad535fa996ef0caa6e988c
Jingning Han [Mon, 6 Jul 2015 23:52:24 +0000 (16:52 -0700)]
Unify subtract function used in VP8/9
This commit replaces the vp8_ prefixed subtract function with the
common vpx_subtract_block function. It removes redundant SIMD
optimization codes and unit tests.
Change-Id: I42e086c32c93c6125e452dcaa6ed04337fe028d9
Debargha Mukherjee [Tue, 7 Jul 2015 14:25:34 +0000 (14:25 +0000)]
Merge "Adds macros for new encoder controls"
paulwilkins [Tue, 7 Jul 2015 12:44:27 +0000 (12:44 +0000)]
Merge "Alter partition search at image edge."
paulwilkins [Tue, 7 Jul 2015 08:44:33 +0000 (08:44 +0000)]
Merge "Error score recalibration for inactive regions."
paulwilkins [Tue, 7 Jul 2015 08:44:15 +0000 (08:44 +0000)]
Merge "ARF Boost correction for inactive regions."
Parag Salasakar [Thu, 2 Jul 2015 12:38:06 +0000 (18:08 +0530)]
mips msa vp8 idct optimization
average improvement ~2x-5x
Change-Id: I19e82f78772993bcd67fcf975fe180232172f86d
James Zern [Tue, 7 Jul 2015 03:49:28 +0000 (20:49 -0700)]
vp9_entropymv: remove vp9_get_mv_mag()
inline the code directly in read_mv_component(), the only place where it
was being used; this removes a function call in a hot function
Change-Id: I66f99c0c9ce3bc310101dbca4a470f023cc6fb55
Parag Salasakar [Tue, 7 Jul 2015 02:10:21 +0000 (02:10 +0000)]
Merge "mips msa vpx_dsp sadx3 sadx8 optimization"
James Zern [Tue, 7 Jul 2015 00:48:57 +0000 (00:48 +0000)]
Merge "inline vp9_reader_has_error()"
Johann [Tue, 30 Jun 2015 16:23:23 +0000 (09:23 -0700)]
Remove comment about disabled tests
The tests were re-enabled in
1fe643cf03f45198e5a033743d7c4dc027b8dfd9
Change-Id: I17b45a4bbe720a56605aed338446ff77df71abad
Debargha Mukherjee [Mon, 6 Jul 2015 23:07:53 +0000 (16:07 -0700)]
Adds macros for new encoder controls
To aid version management for integration with ffmpeg by use
of:
#ifdef VPX_CTRL_<CTRL_ID>
...
#endif
Change-Id: If550e06de4d3aa3685881f312ce6a86fa9de083b
James Zern [Mon, 6 Jul 2015 22:52:38 +0000 (22:52 +0000)]
Merge "vp9_variance*.c: make static tables const"
James Zern [Mon, 6 Jul 2015 22:43:01 +0000 (22:43 +0000)]
Merge "mips msa vp9 subpel variance optimization"
Jingning Han [Mon, 6 Jul 2015 22:39:26 +0000 (22:39 +0000)]
Merge "Move subtract functions from vp9 to vpx_dsp"
James Zern [Mon, 6 Jul 2015 22:04:37 +0000 (15:04 -0700)]
vp9_variance*.c: make static tables const
Change-Id: Ia5044d13c09685c401191fe87fbf90d36203aadd
Parag Salasakar [Sun, 5 Jul 2015 16:14:06 +0000 (21:44 +0530)]
mips msa vp9 subpel variance optimization
Change-Id: If88401bf8c5d8ee58200278734d7a5058d1585d0
Debargha Mukherjee [Mon, 6 Jul 2015 21:36:38 +0000 (21:36 +0000)]
Merge "Expose params min-gf-interval/max-gf-interval"
James Zern [Mon, 6 Jul 2015 21:36:36 +0000 (21:36 +0000)]
Merge "remove vp9_get_interp_kernel()"
James Zern [Thu, 2 Jul 2015 02:01:58 +0000 (19:01 -0700)]
remove vp9_get_interp_kernel()
expose filter_kernels[] and do the table lookup directly
Change-Id: I0b10bff0327c3e01a723736141a9ffd377cd3d20
Debargha Mukherjee [Wed, 1 Apr 2015 23:39:06 +0000 (16:39 -0700)]
Expose params min-gf-interval/max-gf-interval
Adds two new vp9 parameters --min-gf-interval and --max-gf-interval
to enable testing based on frequency of alt-ref frames.
Also adds a unit-test to test enforcement of min-gf-interval.
For both these parameters the default value is 0, which indicates
they are picked by the encoder, based on resolution and framerate
considerations. If they are greater than zero, the specified
parameter is honored.
(Additional note by paulwilkins)
Note that there is a slight oddity in that key frames are also GFs and
considered part of GF only group. However they are treated as not
being part of an arf group because for arf groups the previous GF is
assumed to be the terminal or overlay frame for the previous group.
(end note)
Change-Id: Ibf0c30b72074b3f71918ab278ccccc02a95a70a0
Jingning Han [Mon, 6 Jul 2015 16:33:27 +0000 (09:33 -0700)]
Move subtract functions from vp9 to vpx_dsp
Factor out the subtraction operator as common function.
Change-Id: I526e703477c6a290e0e3e3c8898f8bb1ca82779b
Jingning Han [Mon, 6 Jul 2015 17:01:29 +0000 (17:01 +0000)]
Merge "Rename vpx_thread to vpx_util"
James Zern [Fri, 3 Jul 2015 18:44:00 +0000 (18:44 +0000)]
Merge "Revert "Correct the inter prediction coordinate...""
hkuang [Wed, 1 Jul 2015 23:22:47 +0000 (16:22 -0700)]
Revert "Correct the inter prediction coordinate..."
Change in
92b199061a13173d29247257f4ef906d38b012bf leads to frame parallel
decode failure in extreme case.
addresses issue #1010
Change-Id: I4fa488dac8e8c584f5eef4cae1640a579130d387
James Zern [Thu, 2 Jul 2015 21:07:31 +0000 (21:07 +0000)]
Merge "Revert "mips msa vp9 subpel variance optimization""
James Zern [Thu, 2 Jul 2015 21:07:22 +0000 (21:07 +0000)]
Merge "Revert "mips msa vp9 avg subpel variance optimization""
James Zern [Thu, 2 Jul 2015 19:02:52 +0000 (12:02 -0700)]
Revert "mips msa vp9 subpel variance optimization"
This reverts commit
a42df86c035d1bc007dbc816b4b758605135d6d9.
this change causes MSA/VP9SubpelVarianceTest.Ref and
MSA/VP9SubpelVarianceTest.ExtremeRef failures under
mips32r5el-msa-linux-gnu and mips64r6el-msa-linux-gnu
Change-Id: I40b71a0b774eaeb31f66f795733f95cf360909f7
James Zern [Thu, 2 Jul 2015 19:01:16 +0000 (12:01 -0700)]
Revert "mips msa vp9 avg subpel variance optimization"
This reverts commit
61774ad1c44c73ccde48a2e3456e86196965b5dc.
this change causes MSA/VP9SubpelAvgVarianceTest.Ref failures under
mips32r5el-msa-linux-gnu and mips64r6el-msa-linux-gnu
Change-Id: I7fb520c12b2a3b212d5e84b7619a380a48e49bb0
levytamar82 [Wed, 29 Apr 2015 18:54:11 +0000 (11:54 -0700)]
VP9_LPF_VERTICAL_16_DUAL_SSE2 optimization
The vp9_lpf_vertical_16_dual function optimized for x86 32bit target. The hot code in that function was caused by the call to the transpose8x16.
The gcc generated assembly created uneeded fills and spills to the stack. By interleaving 2 loads and unpack instructions, in addition to hoisting the consumer
instruction closer to the producer instructions, we eliminated most of the fills and spills and improve the function-level performance by 17%.
credit for writing the function as well as finding the root cause goes to Erik Niemeyer (erik.a.niemeyer@intel.com)
Change-Id: I6173cf53956d52918a047d1c53d9a673f952ec46
Jingning Han [Thu, 2 Jul 2015 17:01:09 +0000 (10:01 -0700)]
Rename vpx_thread to vpx_util
Change the dir name to include more util tools.
Change-Id: Id5b16062803ce5eed872fe2edb36d7e56b32eed8
paulwilkins [Wed, 17 Jun 2015 16:14:25 +0000 (17:14 +0100)]
Alter partition search at image edge.
Added code to reduce the minimum partition size searched
for super blocks at or straddling the edge of the image.
If the first pass has detected formatting bars the "active" edge
may not be the real edge.
Change-Id: I9c4bdd1477e60f162a75fac95ba6be7c3521e05c
paulwilkins [Tue, 16 Jun 2015 14:55:12 +0000 (15:55 +0100)]
Error score recalibration for inactive regions.
Apply a correction to the frame error scores for frames
with inactive regions.
Change-Id: I217840f2efe7eafed3f5b8ddc7c468f1ca3d923c
paulwilkins [Mon, 15 Jun 2015 10:28:38 +0000 (11:28 +0100)]
ARF Boost correction for inactive regions.
Correct the ARF boost calculations to partly discount
inactive or very low energy regions of the image.
Examples (formatting bars and 0 energy areas of animated clips).
Change-Id: I241af058d10aba8c67a4deca36deb913047d4561
Jingning Han [Thu, 2 Jul 2015 04:24:53 +0000 (04:24 +0000)]
Merge "Use vpx prefix for codec independent threading functions"
Jingning Han [Thu, 2 Jul 2015 04:24:35 +0000 (04:24 +0000)]
Merge "Move multi-threading module functions into vpx_thread folder"
Parag Salasakar [Thu, 2 Jul 2015 02:32:19 +0000 (08:02 +0530)]
mips msa vpx_dsp sadx3 sadx8 optimization
average improvement ~3x-5x
Change-Id: Ifdb4670d31ae83c4e22a4238293d1377b16c90db
James Zern [Thu, 2 Jul 2015 02:10:43 +0000 (19:10 -0700)]
inline vp9_reader_has_error()
this is tested for each block
Change-Id: I229c6f0e9513fb206bdbce8be9699a4bf4008ca4
James Zern [Thu, 2 Jul 2015 01:52:39 +0000 (01:52 +0000)]
Merge "vp9_pred_common: inline vp9_get_tx_size_context"
James Zern [Thu, 2 Jul 2015 01:52:19 +0000 (01:52 +0000)]
Merge "vp9_pred_common: inline vp9_get_segment_id"
James Zern [Thu, 2 Jul 2015 01:51:24 +0000 (01:51 +0000)]
Merge "vp9_dsubexp: replace some divides with shifts"
James Zern [Thu, 2 Jul 2015 01:51:05 +0000 (01:51 +0000)]
Merge "vp9/inv_remap_prob: simplify inv_map_table[]"
James Zern [Thu, 2 Jul 2015 01:50:44 +0000 (01:50 +0000)]
Merge "vp9_dsubexp: remove clamp in inv_remap_prob()"
Jingning Han [Wed, 1 Jul 2015 23:32:48 +0000 (16:32 -0700)]
Use vpx prefix for codec independent threading functions
Replace vp9_ prefix with vpx_ for common multi-threading functions.
Change-Id: I941a5ead9bfe8213fdad345511d2061b07797b55
Jingning Han [Wed, 1 Jul 2015 21:58:13 +0000 (14:58 -0700)]
Move multi-threading module functions into vpx_thread folder
This commit moves the primitive multi-threading files from vp9
folder to vpx_thread, which will be accessible by all vpx codec.
Change-Id: Ib51e66e9c69801c10631fab56d35a0c0aaed5883
Johann [Wed, 1 Jul 2015 21:14:41 +0000 (21:14 +0000)]
Merge "Fix --disable-use-x86inc when used with --enable-vp9-highbitdepth"
Johann [Wed, 1 Jul 2015 21:14:16 +0000 (21:14 +0000)]
Merge "Fix --disable-use-x86inc"
Johann [Tue, 30 Jun 2015 00:04:58 +0000 (17:04 -0700)]
Fix --disable-use-x86inc when used with --enable-vp9-highbitdepth
Change-Id: I0ed6de72dc0bb99fc9c5b1f6500399b16754ffb3
Johann [Mon, 29 Jun 2015 23:44:30 +0000 (16:44 -0700)]
Fix --disable-use-x86inc
Change-Id: I374fcd8fb45a6893dcdeac6896671be142a99f06
James Zern [Wed, 1 Jul 2015 20:05:49 +0000 (20:05 +0000)]
Merge "mips msa vp9 avg subpel variance optimization"
Scott LaVarnway [Wed, 1 Jul 2015 20:01:51 +0000 (20:01 +0000)]
Merge "Move inter_predictor to vp9_reconinter.h"
Parag Salasakar [Wed, 1 Jul 2015 18:23:08 +0000 (18:23 +0000)]
Merge "mips msa vpx_dsp sad sad4d avgsad optimization"
James Zern [Wed, 1 Jul 2015 17:57:52 +0000 (17:57 +0000)]
Merge "loopfiltersimpleverticaledge_neon: quiet uninit var warnings"
Scott LaVarnway [Wed, 1 Jul 2015 12:52:20 +0000 (12:52 +0000)]
Merge "VP9: Move ref_mvs[][] and mode_context[] from MB_MODE_INFO"
Parag Salasakar [Wed, 1 Jul 2015 08:16:41 +0000 (13:46 +0530)]
mips msa vp9 avg subpel variance optimization
average improvement ~3x-5x
Change-Id: Iefbcafc05daab77b38a4e63b551e427867a501a4
James Zern [Wed, 1 Jul 2015 06:23:59 +0000 (23:23 -0700)]
loopfiltersimpleverticaledge_neon: quiet uninit var warnings
take 2. localize the function parameter to actually remove the warning
Change-Id: I23c02061b5e21b0b75bd33c26062d1e531df7b92
Parag Salasakar [Wed, 1 Jul 2015 05:49:42 +0000 (11:19 +0530)]
mips msa vpx_dsp sad sad4d avgsad optimization
average improvement ~3x-5x
Change-Id: Ie30748cfbedebbd544b7ef4f286055ccb7f60306
James Zern [Wed, 1 Jul 2015 03:09:00 +0000 (20:09 -0700)]
vp9_dsubexp: replace some divides with shifts
Change-Id: I24e10c37ea8f06600cd04b43512efa6170e23e5c
James Zern [Wed, 1 Jul 2015 02:58:08 +0000 (19:58 -0700)]
vp9/inv_remap_prob: simplify inv_map_table[]
add one to each entry to remove the universal 'value + 1'.
Change-Id: I8919b1d7fde8155d1728196c4d577db3064e2c1e
Parag Salasakar [Wed, 1 Jul 2015 02:02:44 +0000 (07:32 +0530)]
mips msa vp9 subpel variance optimization
average improvement ~3x-5x
Change-Id: I4cbba2711467b0e205904769ebbb4a1fcbb1a311
Parag Salasakar [Wed, 1 Jul 2015 01:40:24 +0000 (01:40 +0000)]
Merge "mips msa vpx_dsp variance optimization"
James Zern [Tue, 30 Jun 2015 22:09:48 +0000 (15:09 -0700)]
vp9_dsubexp: remove clamp in inv_remap_prob()
the max value of the lookup in expanded form is:
(((1 << 7) - 1) << 1) - 65 + 1 + 64 = 254
remove the clamp [0, 253] and add one table entry
Change-Id: I0b5d0c66702fdb0b8f1cc9ab9b0dac66326e85a6
James Zern [Tue, 30 Jun 2015 21:12:50 +0000 (21:12 +0000)]
Merge "vp9_common_data: right-size tables"
Yaowu Xu [Tue, 30 Jun 2015 19:48:32 +0000 (19:48 +0000)]
Merge "Fixed a variance calculation"
Parag Salasakar [Fri, 26 Jun 2015 08:32:16 +0000 (14:02 +0530)]
mips msa vpx_dsp variance optimization
average improvement ~2x-4x
Change-Id: Ia3eef3f390148c2eb5cdc580a94cb26369737f82
Parag Salasakar [Tue, 30 Jun 2015 06:25:30 +0000 (06:25 +0000)]
Merge "mips msa vp9 common macro comments updated"
James Zern [Tue, 30 Jun 2015 06:21:58 +0000 (06:21 +0000)]
Merge changes Idce95354,I6b791088
* changes:
loopfiltersimpleverticaledge_neon: quiet uninit var warnings
idct_dequant_0_2x_neon: quiet uninit var warnings