]> granicus.if.org Git - libvpx/log
libvpx
8 years agoEnable hbd_build to use SSSE3optimized functions
Yaowu Xu [Wed, 27 Jan 2016 23:25:42 +0000 (15:25 -0800)]
Enable hbd_build to use SSSE3optimized functions

This commit changes the SSSE3 assembly functions for idct32x32 to
support highbitdepth build.

On test clip fdJc1_IBKJA.248.webm, this cuts the speed difference
between hbd and lbd build from between 3-4% to 1-2%.

Change-Id: Ic3390e0113bc1ca5bba8ec80d1795ad31b484fca

8 years agoMerge "Add a vp9 test vector"
Yaowu Xu [Fri, 29 Jan 2016 01:28:43 +0000 (01:28 +0000)]
Merge "Add a vp9 test vector"

8 years agoMerge "vp9: encoder-breakout: Modify UV thresholds."
Marco Paniconi [Fri, 29 Jan 2016 01:19:30 +0000 (01:19 +0000)]
Merge "vp9: encoder-breakout: Modify UV thresholds."

8 years agoAdd a vp9 test vector
Yaowu Xu [Thu, 28 Jan 2016 16:50:50 +0000 (08:50 -0800)]
Add a vp9 test vector

This test vector exercises various idct32x32 functions in decoder.

Change-Id: Ic9453f50ef4723bdaace9bd80f32540d061ef2a1

8 years agovp9/10: fix encoder crash on flush
James Zern [Thu, 28 Jan 2016 20:53:41 +0000 (12:53 -0800)]
vp9/10: fix encoder crash on flush

the lookahead buffer allocation is deferred to receipt of the first
frame to allow profile changes. if the encoder was flushed before
supplying any frames the encoder would crash trying to dereference the
NULL buffer. vp8 is unaffected.

fixes mozilla bug:
https://bugzilla.mozilla.org/show_bug.cgi?id=1237848

Change-Id: Icee4b64de760476eee0d33b568f0a1010335ff13

8 years agovp9: encoder-breakout: Modify UV thresholds.
Marco [Thu, 28 Jan 2016 20:10:38 +0000 (12:10 -0800)]
vp9: encoder-breakout: Modify UV thresholds.

Set UV thresholds to 0 for encoder breakout if
block is detected as skin.

Change-Id: Iaaa30b5cc8bae4cf611f8ea8eba693b730e32a3f

8 years agoVPX skin map improvement.
JackyChen [Tue, 26 Jan 2016 10:01:10 +0000 (18:01 +0800)]
VPX skin map improvement.

Use multiple clusters instead of one and decrease
the distance thresholds.

Add a define to switch between models.
Default is set to existing (1 cluster) model.

Change-Id: I802cd9bb565437ae8983ef39453939f5d5073bb1

8 years agoMerge "vp9 non-rd mode: Modification for detected skin areas."
Marco Paniconi [Thu, 28 Jan 2016 17:01:19 +0000 (17:01 +0000)]
Merge "vp9 non-rd mode: Modification for detected skin areas."

8 years agoMerge "VP9: Refactor dec_build_inter_predictors_sb()"
Scott LaVarnway [Thu, 28 Jan 2016 12:31:22 +0000 (12:31 +0000)]
Merge "VP9: Refactor dec_build_inter_predictors_sb()"

8 years agovp9 non-rd mode: Modification for detected skin areas.
Marco [Fri, 22 Jan 2016 19:45:31 +0000 (11:45 -0800)]
vp9 non-rd mode: Modification for detected skin areas.

If a superblock contains alot of "skin" then force split
of 64x64 partition, and make some adjustments in mode selection.

This helps to reduce artifacts on moving face/skin areas at low bitrates.

Little/no change in metrics: avgPSNR/SSIM down by ~0.12%.
Small encoding time increase < 1%.

Change-Id: Ic57f52148c3716f391419fab0530d916e4c1d186

8 years agoMerge "Fix some typos."
Hui Su [Thu, 28 Jan 2016 01:04:50 +0000 (01:04 +0000)]
Merge "Fix some typos."

8 years agoFix some typos.
hui su [Mon, 25 Jan 2016 18:19:16 +0000 (10:19 -0800)]
Fix some typos.

Change-Id: I32aacd014df6c927cf2893dc096cbe6ec7604b9b

8 years agoMerge "vp9-aqmode=3: Limit on period for golden update."
Marco Paniconi [Wed, 27 Jan 2016 21:38:35 +0000 (21:38 +0000)]
Merge "vp9-aqmode=3: Limit on period for golden update."

8 years agoMerge "Switch to 9-bit rate cost constants built on a 256 probability denominator."
Alex Converse [Wed, 27 Jan 2016 20:54:07 +0000 (20:54 +0000)]
Merge "Switch to 9-bit rate cost constants built on a 256 probability denominator."

8 years agovp9-aqmode=3: Limit on period for golden update.
Marco [Wed, 27 Jan 2016 20:01:58 +0000 (12:01 -0800)]
vp9-aqmode=3: Limit on period for golden update.

For aqmode=3, golden period update is set based on period of cyclic refresh.
Put a limit on max golden period update, for now set to 40.
And fix comment.

Change-Id: Icb61dd87c796cce2a5f5f7331c6a129540994696

8 years agoSwitch to 9-bit rate cost constants built on a 256 probability denominator.
Alex Converse [Wed, 13 Jan 2016 22:21:30 +0000 (14:21 -0800)]
Switch to 9-bit rate cost constants built on a 256 probability denominator.

-.220 BDRATE derf: https://x20web.corp.google.com/~aconverse/results/cost256_derf.html
-.675 BDRATE hevcmr: https://x20web.corp.google.com/~aconverse/results/cost256_hevcmr.html

Change-Id: Ifb1646d8ce65ffe0eff9953a911b1b88735b335f

8 years agoVP9: Refactor dec_build_inter_predictors_sb()
Scott LaVarnway [Wed, 27 Jan 2016 15:37:59 +0000 (07:37 -0800)]
VP9: Refactor dec_build_inter_predictors_sb()

Change-Id: I336fe2006288214977b5ee854124ee7b5bba5796

8 years agoMerge "Fix a clang/win build error"
Yunqing Wang [Tue, 26 Jan 2016 19:00:06 +0000 (19:00 +0000)]
Merge "Fix a clang/win build error"

8 years agoFix a clang/win build error
Yunqing Wang [Tue, 26 Jan 2016 18:10:07 +0000 (10:10 -0800)]
Fix a clang/win build error

Made the definition of THREAD_FUNCTION consistent.

Change-Id: I1ac099484e201e359298ed16de0b81ec781075ce

8 years agoMerge "vp9: Be more responsive to massive overshoot."
Alex Converse [Tue, 26 Jan 2016 17:59:59 +0000 (17:59 +0000)]
Merge "vp9: Be more responsive to massive overshoot."

8 years agoMerge "Code clean of sad4xNx4D_sse"
James Zern [Mon, 25 Jan 2016 20:57:15 +0000 (20:57 +0000)]
Merge "Code clean of sad4xNx4D_sse"

8 years agovp9: Be more responsive to massive overshoot.
Alex Converse [Mon, 25 Jan 2016 20:03:50 +0000 (12:03 -0800)]
vp9: Be more responsive to massive overshoot.

Limit oscilation detection in the case where overshoot is very very
large.

This keeps the 9-bit cost patch from breaking the DownUp reisze test.
The patch pushed us to an 11% undershoot right before a scene cut
causing a 1200% overshoot. (Whereas before we were undershooting by
only 6% before overshooting by 1200%).

Change-Id: Id90ccfab8aba872ccadc45b73b3bb097b895677f

8 years agoCleaned a code in define_gf_group() for firstpass
Zoe Liu [Sat, 23 Jan 2016 01:13:03 +0000 (17:13 -0800)]
Cleaned a code in define_gf_group() for firstpass

Change-Id: I0b8eff9e74e3446024482d011ec4fb28b19136d3

8 years agoMerge "Short circuit flat blocks when coding screen content at realtime speed."
Alex Converse [Sat, 23 Jan 2016 02:04:37 +0000 (02:04 +0000)]
Merge "Short circuit flat blocks when coding screen content at realtime speed."

8 years agoMerge "VP9: Do not set up/left available in vp9_first_pass()"
Scott LaVarnway [Fri, 22 Jan 2016 21:53:26 +0000 (21:53 +0000)]
Merge "VP9: Do not set up/left available in vp9_first_pass()"

8 years agoShort circuit flat blocks when coding screen content at realtime speed.
Alex Converse [Wed, 20 Jan 2016 22:28:09 +0000 (14:28 -0800)]
Short circuit flat blocks when coding screen content at realtime speed.

In inter mode search skip all modes except NEARESTMV and DC_PRED.

10% less encode latency for large frames using the chromium remoting_perftests.

+0.313% BDRATE on the screencast set at speed -6.

Change-Id: Ib97a39dd8bcdeab545509e0e02d78ce7033f8c63

8 years agoVP9: Do not set up/left available in vp9_first_pass()
Scott LaVarnway [Fri, 22 Jan 2016 17:22:53 +0000 (09:22 -0800)]
VP9: Do not set up/left available in vp9_first_pass()

These values are set in set_mi_row_col()

Change-Id: Ie44c9d2dcb79797a8473b5fc29394277a7117547

8 years agoFix a minor typo
Yaowu Xu [Fri, 22 Jan 2016 18:57:16 +0000 (10:57 -0800)]
Fix a minor typo

a wrong variable.

Change-Id: I9fa02621dbdc508a12ba1ef9c8f98dbeab68e958

8 years agoMerge "Properly set segmentation for error-resilient mode"
Yaowu Xu [Fri, 22 Jan 2016 16:52:41 +0000 (16:52 +0000)]
Merge "Properly set segmentation for error-resilient mode"

8 years agoMerge "vp9 pickmode: Fix the shift on negative value."
Marco Paniconi [Fri, 22 Jan 2016 00:09:27 +0000 (00:09 +0000)]
Merge "vp9 pickmode: Fix the shift on negative value."

8 years agovp9 pickmode: Fix the shift on negative value.
Marco [Thu, 21 Jan 2016 23:13:10 +0000 (15:13 -0800)]
vp9 pickmode: Fix the shift on negative value.

Error only affected svc 1 pass mode, introduced in:
https://chromium-review.googlesource.com/#/c/319609/

Change-Id: Ifc078c82d38b742966a81baaf5ad532f7dbc13a4

8 years agoMerge "Remove the vestigal skip_eob feature from tokenization."
Alex Converse [Thu, 21 Jan 2016 23:11:14 +0000 (23:11 +0000)]
Merge "Remove the vestigal skip_eob feature from tokenization."

8 years agoMerge "vp9_aq_cyclicrefresh: fix double->float warning"
James Zern [Thu, 21 Jan 2016 23:08:02 +0000 (23:08 +0000)]
Merge "vp9_aq_cyclicrefresh: fix double->float warning"

8 years agovp9_aq_cyclicrefresh: fix double->float warning
James Zern [Thu, 21 Jan 2016 22:07:33 +0000 (14:07 -0800)]
vp9_aq_cyclicrefresh: fix double->float warning

Change-Id: I39d3a150de9a77967a4e25ca89d2eda51fd18d47

8 years agoMerge "Fix a typo in ctrl_set_render_size()"
Yaowu Xu [Thu, 21 Jan 2016 20:06:29 +0000 (20:06 +0000)]
Merge "Fix a typo in ctrl_set_render_size()"

8 years agoFix a typo in ctrl_set_render_size()
Yaowu Xu [Thu, 21 Jan 2016 19:19:08 +0000 (11:19 -0800)]
Fix a typo in ctrl_set_render_size()

Change-Id: I6a7fa6d0ae8ce8de7b426189d5eb00413f21bc17

8 years agoMerge "Tie the bit cost scale to a define."
Alex Converse [Thu, 21 Jan 2016 19:17:56 +0000 (19:17 +0000)]
Merge "Tie the bit cost scale to a define."

8 years agovp9-aqmode=3: Reduce condition below which we turn off delta-qp.
Marco [Thu, 21 Jan 2016 01:44:02 +0000 (17:44 -0800)]
vp9-aqmode=3: Reduce condition below which we turn off delta-qp.

Add TODO to consider turning-off more smoothly.

Change-Id: Id6dd4c5c515f5b09c388af965eb27dbe24924362

8 years agoFix build with --enable-internal-stats
hui su [Thu, 21 Jan 2016 02:02:30 +0000 (18:02 -0800)]
Fix build with --enable-internal-stats

Change-Id: I9649647cc5755c8411ddd56f92e7f96d421c2663

8 years agoMerge "vp9-svc: Allow frame-dropping in svc datarate control tests."
Marco Paniconi [Thu, 21 Jan 2016 01:39:53 +0000 (01:39 +0000)]
Merge "vp9-svc: Allow frame-dropping in svc datarate control tests."

8 years agoRemove the vestigal skip_eob feature from tokenization.
Alex Converse [Wed, 20 Jan 2016 22:09:45 +0000 (14:09 -0800)]
Remove the vestigal skip_eob feature from tokenization.

Repack TOKENEXTRA fields.

Speed impact within measurment margin of error.

Change-Id: I9a6d1dde1bb4a0766b02d0cb74c871ddde907cde

8 years agovp9-svc: Allow frame-dropping in svc datarate control tests.
Marco [Wed, 20 Jan 2016 21:51:12 +0000 (13:51 -0800)]
vp9-svc: Allow frame-dropping in svc datarate control tests.

Remove comment(s) and enable frame-dropper for tests.
Frame dropper for 1 pass svc was fixed a while ago:
https://chromium-review.googlesource.com/#/c/309230/

Change-Id: I5fd3192825b22e562db9210d3dc7b246a1799d8d

8 years agovp8-denoiser: Fix threshold for skin map.
Marco [Wed, 20 Jan 2016 21:46:39 +0000 (13:46 -0800)]
vp8-denoiser: Fix threshold for skin map.

Make it consistent with the comment/intended behavior,
that is, only denoise if current block is zero_mv.

Change-Id: I3909761e802e80089752a493ab3646dc32698ded

8 years agoMerge "Remove duplicate definitions"
Yaowu Xu [Wed, 20 Jan 2016 18:12:51 +0000 (18:12 +0000)]
Merge "Remove duplicate definitions"

8 years agoRemove duplicate definitions
Yaowu Xu [Wed, 20 Jan 2016 16:56:41 +0000 (08:56 -0800)]
Remove duplicate definitions

This fixes the build errors with msvc.

Change-Id: Ie2716e4c15a1bacfb00a8d41ec3283d718af88fc

8 years agoVidyo patch: Changes to the scalability code.
Marco [Fri, 15 Jan 2016 17:35:41 +0000 (09:35 -0800)]
Vidyo patch: Changes to the scalability code.

Changes to mode selection for 1 pass SVC mode:
use base layer motion vector, changes to intra-prediction.

Change-Id: I3e883aa04db521cfa026a0b12c9478ea35a344c9

8 years agoMerge "VP9: Eliminate MB_MODE_INFO"
Scott LaVarnway [Wed, 20 Jan 2016 12:19:27 +0000 (12:19 +0000)]
Merge "VP9: Eliminate MB_MODE_INFO"

8 years agoMerge "Use input framerate as timebase if none was explicitly specified."
James Zern [Wed, 20 Jan 2016 02:27:29 +0000 (02:27 +0000)]
Merge "Use input framerate as timebase if none was explicitly specified."

8 years agoMerge "Amend and improve VP8 multithreading implementation"
Yunqing Wang [Wed, 20 Jan 2016 01:51:37 +0000 (01:51 +0000)]
Merge "Amend and improve VP8 multithreading implementation"

8 years agoVP9: Eliminate MB_MODE_INFO
Scott LaVarnway [Wed, 20 Jan 2016 00:40:20 +0000 (16:40 -0800)]
VP9: Eliminate MB_MODE_INFO

Change-Id: Ifa607dd2bb366ce09fa16dfcad3cc45a2440c185

8 years agoMerge "Deduplicate sign cost for ONE/TWO/THREE/FOUR tokens"
Alex Converse [Tue, 19 Jan 2016 20:04:28 +0000 (20:04 +0000)]
Merge "Deduplicate sign cost for ONE/TWO/THREE/FOUR tokens"

8 years agoUse input framerate as timebase if none was explicitly specified.
Ronald S. Bultje [Mon, 18 Jan 2016 19:03:45 +0000 (14:03 -0500)]
Use input framerate as timebase if none was explicitly specified.

After patch:
$ vpxenc tennis_sif.y4m --end-usage=q -q 20 -o x.ivf --ivf --codec=vp9 --limit=30
$ ffmpeg -i x.ivf -i tennis_sif.y4m -lavfi psnr -f null -
[..]
[Parsed_psnr_0 @ 0x7f8913c21e40] PSNR y:43.270594 u:46.300362 v:47.011172 average:44.097994 min:43.460704 max:52.509271

Before patch:
$ vpxenc tennis_sif.y4m --end-usage=q -q 20 -o x.ivf --ivf --codec=vp9 --limit=30
$ ffmpeg -i x.ivf -i tennis_sif.y4m -lavfi psnr -f null -
[..]
[Parsed_psnr_0 @ 0x7fbdaac22780] PSNR y:27.427366 u:41.505376 v:36.853477 average:28.990890 min:22.219454 max:52.509271
$ ffmpeg -i x.ivf -f rawvideo x.yuv
$ ffmpeg -f rawvideo -vcodec rawvideo -video_size 352x240 -framerate 29.97 -i x.yuv -i tennis_sif.y4m -lavfi psnr -f null -
[..]
[Parsed_psnr_0 @ 0x7fadf9e013a0] PSNR y:43.270594 u:46.300362 v:47.011172 average:44.097994 min:43.460704 max:52.509271

Change-Id: Ifac2d6c2ff8379b2d318fe5cfe4be0bf1bc9f27f

8 years agoTie the bit cost scale to a define.
Alex Converse [Fri, 15 Jan 2016 22:32:52 +0000 (14:32 -0800)]
Tie the bit cost scale to a define.

This is a pure-refactor in preparation to potentially raise the bit-cost
resolution.

Verified at good speed 0 and rt speed -6.

Change-Id: I5347e6e8c28a9ad9dd0aae1d76a3d0f3c2335bb9

8 years agovp9-denoiser: Set motion threshold for skin_map to 0.
Marco [Fri, 15 Jan 2016 23:02:09 +0000 (15:02 -0800)]
vp9-denoiser: Set motion threshold for skin_map to 0.

More aggresive on avoiding denoising on skin.
May supplement this later by adding condtion onn consec_zeromv.

Change-Id: Ied92b332f9b24e821d2009f81d1565758588d9a5

8 years agoDeduplicate sign cost for ONE/TWO/THREE/FOUR tokens
Alex Converse [Fri, 15 Jan 2016 21:55:29 +0000 (13:55 -0800)]
Deduplicate sign cost for ONE/TWO/THREE/FOUR tokens

Change-Id: I9c383d604dfd240e38b198ac5bf86ddd3456f442

8 years agoMerge "Adding an aq mode for 360 videos"
Debargha Mukherjee [Thu, 14 Jan 2016 16:13:56 +0000 (16:13 +0000)]
Merge "Adding an aq mode for 360 videos"

8 years agoMerge "VP9: inline vp9_use_mv_hp()"
Scott LaVarnway [Thu, 14 Jan 2016 13:36:40 +0000 (13:36 +0000)]
Merge "VP9: inline vp9_use_mv_hp()"

8 years agoMerge "VP9: Remove decoder args from find_mv_refs_idx()"
Scott LaVarnway [Thu, 14 Jan 2016 13:30:30 +0000 (13:30 +0000)]
Merge "VP9: Remove decoder args from find_mv_refs_idx()"

8 years agoMerge changes I6998e15f,I88891d9f
James Zern [Thu, 14 Jan 2016 04:13:24 +0000 (04:13 +0000)]
Merge changes I6998e15f,I88891d9f

* changes:
  Remove unused POSIX_MMAP references
  Remove unused stdint.h check

8 years agoProperly set segmentation for error-resilient mode
Yaowu Xu [Thu, 14 Jan 2016 01:27:17 +0000 (17:27 -0800)]
Properly set segmentation for error-resilient mode

Change-Id: I0c85b637e51dc949a4e919f10a78870f23c2ca6a

8 years agoAdding an aq mode for 360 videos
Debargha Mukherjee [Wed, 16 Dec 2015 23:34:07 +0000 (15:34 -0800)]
Adding an aq mode for 360 videos

Different quality levels are used for different regions in
the frame depending on how far they are vertically from the
center. Specifically, three segments are used based on the
mi_row index with respect number to the number of mi_rows in
the frame.

Change-Id: Ifc8b777bc58ea8521dffc4640360c67d99f8d381

8 years agoMerge "Revert "Merge "Change highbd variance rounding to prevent negative variance."""
Alex Converse [Wed, 13 Jan 2016 21:51:23 +0000 (21:51 +0000)]
Merge "Revert "Merge "Change highbd variance rounding to prevent negative variance."""

8 years agoVP9: Remove decoder args from find_mv_refs_idx()
Scott LaVarnway [Wed, 13 Jan 2016 21:30:40 +0000 (13:30 -0800)]
VP9: Remove decoder args from find_mv_refs_idx()

The decoder does not use this function.

Change-Id: Ie67f909c0f4108ef286789c70df867d4b960a780

8 years agoMerge "Fix encoder crashes and enc/dec mismatches"
Yaowu Xu [Wed, 13 Jan 2016 21:07:53 +0000 (21:07 +0000)]
Merge "Fix encoder crashes and enc/dec mismatches"

8 years agoRevert "Merge "Change highbd variance rounding to prevent negative variance.""
Alex Converse [Wed, 13 Jan 2016 19:18:19 +0000 (11:18 -0800)]
Revert "Merge "Change highbd variance rounding to prevent negative variance.""

This reverts commit ea48370a500537906d62544ca4ed75301d79e772, reversing
changes made to 15939cb2d76c773950cda40988ede89e111872ea.

The commit was insufficiently tested and causes failures.

Change-Id: I623d6fc2cd3ae6fd42d0abab1f8eada465ae57a7

8 years agoFix encoder crashes and enc/dec mismatches
Yaowu Xu [Tue, 12 Jan 2016 17:47:07 +0000 (09:47 -0800)]
Fix encoder crashes and enc/dec mismatches

This commit adds the logic for segmentation map initialization and
disable temporal update of segmentation map when error-resilient
mode is on. It fixes the enc/dec mistmates (release build) and
assertions(debug) when both aq-mode and error-resilient are on.

Change-Id: Id2155e8b28962cf1f64494f4df0c8d79499b6890

8 years agoVP9: inline vp9_use_mv_hp()
Scott LaVarnway [Wed, 13 Jan 2016 16:02:05 +0000 (08:02 -0800)]
VP9: inline vp9_use_mv_hp()

Change-Id: Ib275bfc4c29c572d6c70e5ec6dbfc241590d3e3e

8 years agoMerge "Change highbd variance rounding to prevent negative variance."
Alex Converse [Wed, 13 Jan 2016 00:25:54 +0000 (00:25 +0000)]
Merge "Change highbd variance rounding to prevent negative variance."

8 years agoMerge "VP9: Eliminate unnecessary nearest/near searches"
Scott LaVarnway [Tue, 12 Jan 2016 20:00:59 +0000 (20:00 +0000)]
Merge "VP9: Eliminate unnecessary nearest/near searches"

8 years agoVP9: Eliminate unnecessary nearest/near searches
Scott LaVarnway [Tue, 12 Jan 2016 13:09:06 +0000 (05:09 -0800)]
VP9: Eliminate unnecessary nearest/near searches

Prior to this patch, read_inter_block_mode_info() would
find the nearmv and nearestmv for all modes.  Now it does not
search for ZEROMV modes and breaks out early for NEARMV and
NEWMV modes.

Change-Id: Ifa7b1eaf58bb03b9c7792ea5012fef477527d0fd

8 years agoRemove experimental flag for ext_tx
Debargha Mukherjee [Fri, 8 Jan 2016 20:01:51 +0000 (12:01 -0800)]
Remove experimental flag for ext_tx

Also includes a bug fix.

Change-Id: Ia49ed00f8ffd1531c10bcf89b1f497310ee7cb82

8 years agoMerge "Modifies inter/intra coding to allow all tx types"
Debargha Mukherjee [Fri, 8 Jan 2016 20:02:41 +0000 (20:02 +0000)]
Merge "Modifies inter/intra coding to allow all tx types"

8 years agoAmend and improve VP8 multithreading implementation
Yunqing Wang [Thu, 7 Jan 2016 02:27:37 +0000 (18:27 -0800)]
Amend and improve VP8 multithreading implementation

There are flaws in current implementation of VP8 multithreading encoder
and decoder as reported in the following issue:
https://code.google.com/p/chromium/issues/detail?id=158922

Although the data race warnings are harmless, and wouldn't cause real
problems while encoding and decoding videos, it is better to fix the
warnings so that VP8 code could pass the TSan test.

To synchronize the thread-shared data access and maintain the speed
(i.e. decoding speed), use multiple mutexes based on mb_rows to reduce
the number of synchronizations needed, make the reads and writes of
the shared data protected, and reduce the number of mb_col writes by
nsync times.

The decoder speed tests showed < 3% speed loss while using 2 ~ 4
threads.

Change-Id: Ie296defffcd86a693188b668270d811964227882

8 years agoModifies inter/intra coding to allow all tx types
Debargha Mukherjee [Wed, 6 Jan 2016 19:24:57 +0000 (11:24 -0800)]
Modifies inter/intra coding to allow all tx types

The nominal tx_type for a given mode is used as a context
to encode the actual tx_type for intra.

Results:
derflr: -0.241% BDRATE
hevcmr: -0.366% BDRATE

Change-Id: Icfe7b0a58d79bc6497a06e3441779afec6e01e21

8 years agoMerge "Update IMAGE_ABI_VERSION which wasn't updated after color_range enum was intro...
James Zern [Fri, 8 Jan 2016 02:32:38 +0000 (02:32 +0000)]
Merge "Update IMAGE_ABI_VERSION which wasn't updated after color_range enum was introduced."

8 years agoMerge "Enable encoder to avoid 8x4 or 4x8 partitions"
Yaowu Xu [Thu, 7 Jan 2016 23:00:00 +0000 (23:00 +0000)]
Merge "Enable encoder to avoid 8x4 or 4x8 partitions"

8 years agoMerge "Fix a typo"
Yaowu Xu [Thu, 7 Jan 2016 20:26:09 +0000 (20:26 +0000)]
Merge "Fix a typo"

8 years agoEnable encoder to avoid 8x4 or 4x8 partitions
Yaowu Xu [Thu, 7 Jan 2016 17:43:26 +0000 (09:43 -0800)]
Enable encoder to avoid 8x4 or 4x8 partitions

This commit enables encoder to avoid 8x4 and 4x8 partitions for
scaled reference frames when libvpx is configured and built with
--enable-better-hw-compatibility

Change-Id: I02ad65c386f5855f4325d72570c49164ed52f413

8 years agoFix a typo
Yaowu Xu [Thu, 7 Jan 2016 17:29:34 +0000 (09:29 -0800)]
Fix a typo

Change-Id: I12de2dd5e5f375551804166188d76a9ad8067b41

8 years agovp9-svc: Fix to avoid msan unitialized value.
Marco [Wed, 6 Jan 2016 19:30:02 +0000 (11:30 -0800)]
vp9-svc: Fix to avoid msan unitialized value.

Move the logic for forcing zero_mode after the
(ref_frame & flag_list) check.
This was causing an memory leak under msan:
https://bugs.chromium.org/p/webrtc/issues/detail?id=5402

Change-Id: Ie9d243369f8ed7c332f46178275945331da4fd85

8 years agoAssert no mv clamping for scaled references
Yaowu Xu [Tue, 5 Jan 2016 02:24:18 +0000 (18:24 -0800)]
Assert no mv clamping for scaled references

Under --enable-better-hw-compabibility, this commit adds the asserts
that no mv clamping is applied for scaled references, so when built
with this configure option, decoder will assert if an input bitstream
triggger mv clamping for scaled reference frames.

Change-Id: I786e86a2bbbfb5bc2d2b706a31b0ffa8fe2eb0cb

8 years agoMerge "Assert no 8x4/4x8 partition for scaled references"
Yaowu Xu [Tue, 5 Jan 2016 20:35:46 +0000 (20:35 +0000)]
Merge "Assert no 8x4/4x8 partition for scaled references"

8 years agoMerge "vp9-skin detection: Refactoring."
Marco Paniconi [Tue, 5 Jan 2016 16:56:54 +0000 (16:56 +0000)]
Merge "vp9-skin detection: Refactoring."

8 years agoAssert no 8x4/4x8 partition for scaled references
Yaowu Xu [Thu, 3 Dec 2015 01:00:26 +0000 (17:00 -0800)]
Assert no 8x4/4x8 partition for scaled references

This commit adds a new configure option:

--enable-better-hw-compatibility

The purpose of the configure option is to provide information on known
hardware decoder implementation bugs, so encoder implementers may
choose to implement their encoders in a way to avoid triggering these
decoder bugs.

The WebM team were made aware of that a number of hardware decoders
have trouble in handling the combination of scaled frame reference
frame and 8x4 or 4x8 partitions. This commit added asserts to vp9
decoder, so when built with above configure option, the decoder can
assert if an input bitstream triggers such decoder bug.

Change-Id: I386204cfa80ed16b50ebde57f886121ed76200bf

8 years agoMerge "vp10: only assume ONLY_4X4 if segmentation is disabled."
Yaowu Xu [Tue, 5 Jan 2016 02:29:05 +0000 (02:29 +0000)]
Merge "vp10: only assume ONLY_4X4 if segmentation is disabled."

8 years agoMerge "vp10: skip coding of txsz for lossless-segment blocks."
Yaowu Xu [Tue, 5 Jan 2016 02:28:58 +0000 (02:28 +0000)]
Merge "vp10: skip coding of txsz for lossless-segment blocks."

8 years agovp9-skin detection: Refactoring.
Marco [Tue, 5 Jan 2016 00:48:15 +0000 (16:48 -0800)]
vp9-skin detection: Refactoring.

Add function to compute skin map for a given block, as its
used in several places (cyclic refresh, noise estimation, and denoising).

Change-Id: Ied622908df43b6927f7fafc6c019d1867f2a24eb

8 years agovp9-svc: Set initial values for ext_buffer/flag indices.
Marco [Mon, 4 Jan 2016 20:19:56 +0000 (12:19 -0800)]
vp9-svc: Set initial values for ext_buffer/flag indices.

Set initial values for these parameters in the vp9_init_layer_context().

This also fixes an issue in the svc-bypass mode when frame flags are
passed via the vpx_codec_encode().

Change-Id: I0968f04672f8d3d2fe2cea6b8a23f79f80d7a8b1

8 years agovp10: only assume ONLY_4X4 if segmentation is disabled.
Ronald S. Bultje [Mon, 4 Jan 2016 20:13:29 +0000 (15:13 -0500)]
vp10: only assume ONLY_4X4 if segmentation is disabled.

Otherwise, per-segment lossless might mean that some segments are not
lossless and they could still want to use another mode. The per-block
tx points remain uncoded on blocks where (per the segment id) the Q
value implies lossless.

Change-Id: If210206ab1fe3dd11976797370c77f961f13dfa0

8 years agovp10: skip coding of txsz for lossless-segment blocks.
Ronald S. Bultje [Mon, 4 Jan 2016 20:20:50 +0000 (15:20 -0500)]
vp10: skip coding of txsz for lossless-segment blocks.

Change-Id: Ic23c10b6d2a9fed3abe69c6bf10e910832444f2c

8 years agoUpdate IMAGE_ABI_VERSION which wasn't updated after color_range enum was introduced.
Sasi Inguva [Mon, 4 Jan 2016 19:56:56 +0000 (11:56 -0800)]
Update IMAGE_ABI_VERSION which wasn't updated after color_range enum was introduced.

Change-Id: I83703851f65f93573ebf7d2c0d0f056ba879c07a

8 years agoMerge "Code clean of highbd_tm_predictor_32x32"
Jian Zhou [Mon, 28 Dec 2015 18:17:03 +0000 (18:17 +0000)]
Merge "Code clean of highbd_tm_predictor_32x32"

8 years agoMerge changes I0139f8e9,I7d2545fc
Jian Zhou [Mon, 28 Dec 2015 18:16:13 +0000 (18:16 +0000)]
Merge changes I0139f8e9,I7d2545fc

* changes:
  Code clean of highbd_tm_predictor_16x16
  Code clean of highbd_dc_predictor_32x32

9 years agoMerge "Fix sub8x8 motion search on scaled reference frame"
Jingning Han [Wed, 23 Dec 2015 02:34:18 +0000 (02:34 +0000)]
Merge "Fix sub8x8 motion search on scaled reference frame"

9 years agoCode clean of highbd_tm_predictor_32x32
Jian Zhou [Wed, 23 Dec 2015 00:51:57 +0000 (16:51 -0800)]
Code clean of highbd_tm_predictor_32x32

Remove the ARCH_X86_64 constraint. No performance hit on both
big core and small core.

Change-Id: I39860b62b7a0ae4acaafdca7d68f3e5820133a81

9 years agoCode clean of highbd_tm_predictor_16x16
Jian Zhou [Wed, 23 Dec 2015 00:34:40 +0000 (16:34 -0800)]
Code clean of highbd_tm_predictor_16x16

Remove the ARCH_X86_64 constraint.

Change-Id: I0139f8e998cc5525df55161c2054008d21ac24d4

9 years agoCode clean of highbd_dc_predictor_32x32
Jian Zhou [Mon, 21 Dec 2015 19:52:23 +0000 (11:52 -0800)]
Code clean of highbd_dc_predictor_32x32

Remove the ARCH_X86_64 constraint.

Change-Id: I7d2545fc4f24eb352cf3e03082fc4d48d46fbb09

9 years agoMerge "aq-mode=3: Don't reset segment if block is determined to be skin."
Marco Paniconi [Tue, 22 Dec 2015 20:18:24 +0000 (20:18 +0000)]
Merge "aq-mode=3: Don't reset segment if block is determined to be skin."

9 years agoaq-mode=3: Don't reset segment if block is determined to be skin.
Marco [Mon, 21 Dec 2015 18:35:05 +0000 (10:35 -0800)]
aq-mode=3: Don't reset segment if block is determined to be skin.

For coding block sizes <=16X16, if the block is determined to be skin,
then always allow for that block to be candidate for refresh. So if that
block happens to be on the boost segment(s), segment won't get reset to 0
and delta-q will be applied.

PSNR/SSIM metrics neutral (little/no change) on RTC clips.
Speed increase small/negligible (< 1%).
Some visual improvement on faces in a few RTC clips.

Change-Id: I6bf0fce6f39d820b491ce05d7c017ad168fce7d6

9 years agoMerge "Code clean of highbd_tm_predictor_4x4"
James Zern [Tue, 22 Dec 2015 16:45:01 +0000 (16:45 +0000)]
Merge "Code clean of highbd_tm_predictor_4x4"