platform/upstream/libvpx.git
8 years agoMerge "vpx_dsp: added vpx_highbd_idct32x32_1_add_sse2()"
James Zern [Thu, 8 Sep 2016 01:05:17 +0000 (01:05 +0000)]
Merge "vpx_dsp: added vpx_highbd_idct32x32_1_add_sse2()"

8 years agovpx_mem.c: remove unnecessary inline
James Zern [Wed, 7 Sep 2016 17:51:33 +0000 (10:51 -0700)]
vpx_mem.c: remove unnecessary inline

these aren't overly speed critical, best to leave it to the compiler.

Change-Id: I231c14abee5b845d7b8e8454832f2feb22c6ce45

8 years agovpx_dsp: added vpx_highbd_idct32x32_1_add_sse2()
Scott LaVarnway [Wed, 7 Sep 2016 12:58:29 +0000 (05:58 -0700)]
vpx_dsp: added vpx_highbd_idct32x32_1_add_sse2()

Change-Id: I140d93aebadb0eaf6220881e61a0451450081227

8 years agoFix missing write to opsnr in internal stats
Sarah Parker [Sat, 3 Sep 2016 19:15:32 +0000 (12:15 -0700)]
Fix missing write to opsnr in internal stats

Change-Id: I21c8ad0b5ed7f8d843cae45c18f5727bceb8f859

8 years agoMerge "invalid_file_test: quiet -Wunused-const-variable warnings"
James Zern [Sat, 3 Sep 2016 01:14:54 +0000 (01:14 +0000)]
Merge "invalid_file_test: quiet -Wunused-const-variable warnings"

8 years agoinvalid_file_test: quiet -Wunused-const-variable warnings
James Zern [Fri, 2 Sep 2016 02:52:27 +0000 (19:52 -0700)]
invalid_file_test: quiet -Wunused-const-variable warnings

present when --disable-vp8(-decoder) or --disable-vp9(-decoder) was used

Change-Id: I31ebb7a55c6f1af3c744982f56b78e80116cc845

8 years agovp8_cx_iface: quiet -Wshorten-64-to-32 warning
James Zern [Fri, 2 Sep 2016 02:50:04 +0000 (19:50 -0700)]
vp8_cx_iface: quiet -Wshorten-64-to-32 warning

set_reference_and_update(): use the correct type for flags,
vpx_enc_frame_flags_t

Change-Id: I257da784537ff18686f6db8665f99af6ea6a86ba

8 years agoget_cpu_count: quiet -Wshorten-64-to-32 warnings
James Zern [Fri, 2 Sep 2016 02:48:04 +0000 (19:48 -0700)]
get_cpu_count: quiet -Wshorten-64-to-32 warnings

sysconf returns a long; cast (unsigned) dwNumberOfProcessors to int for
good measure

Change-Id: I1f181d7bd9a060c0898db41f66a5065394afdc4e

8 years agoMerge changes from topic 'Wundef'
Johann Koenig [Fri, 2 Sep 2016 01:39:17 +0000 (01:39 +0000)]
Merge changes from topic 'Wundef'

* changes:
  Enable -Wundef by default
  Define VP8_TEMPORAL_ALT_REF to !CONFIG_REALTIME_ONLY
  Remove CONFIG_DEBUG guards from assert()
  Remove unused function vpx_de_mblock
  Fix -Wundef warning for OUTPUT_FPF
  Fix -Wundef warning for __SANITIZE_ADDRESS__

8 years agoMerge "Fix formatting in internal stats for vp8 and vp9"
Yaowu Xu [Thu, 1 Sep 2016 23:55:23 +0000 (23:55 +0000)]
Merge "Fix formatting in internal stats for vp8 and vp9"

8 years agoMerge "Casts to remove some warnings."
Yaowu Xu [Thu, 1 Sep 2016 23:37:04 +0000 (23:37 +0000)]
Merge "Casts to remove some warnings."

8 years agoMerge "Refactor uv tx size with lookup arrays"
Debargha Mukherjee [Thu, 1 Sep 2016 16:46:32 +0000 (16:46 +0000)]
Merge "Refactor uv tx size with lookup arrays"

8 years agoMerge "Modified resize loop constraints."
Paul Wilkins [Thu, 1 Sep 2016 15:59:29 +0000 (15:59 +0000)]
Merge "Modified resize loop constraints."

8 years agoCasts to remove some warnings.
paulwilkins [Thu, 1 Sep 2016 09:01:33 +0000 (10:01 +0100)]
Casts to remove some warnings.

Added casts to remove warnings:
BUG=webm:1274

In regards to the safety of these casts they are of two types:-

- Normalized bits per (16x16) MB stored in a 32 bit int (This is safe as bits
per MB even with << 9 normalization cant overflow 32 bits. Even raw 12
bits hdr source even would only be  29 bits :- (4+4+12+9) and the encoder
imposes much stricter limits than this on max bit rate.

- Cast as part of variance calculations.  There is an internal cast up to 64 bit
for the Sum X Sum calculation, but after normalization dividing by the number
of points the result will always be <= the SSE value.

Change-Id: I4e700236ed83d6b2b1955e92e84c3b1978b9eaa0

8 years agoEnable -Wundef by default
Johann [Thu, 1 Sep 2016 05:17:38 +0000 (22:17 -0700)]
Enable -Wundef by default

BUG=webm:1069

Change-Id: I43728f9fd007542718a55d5fdcbc63a8d2f86682

8 years agoDefine VP8_TEMPORAL_ALT_REF to !CONFIG_REALTIME_ONLY
Johann [Thu, 1 Sep 2016 05:38:27 +0000 (22:38 -0700)]
Define VP8_TEMPORAL_ALT_REF to !CONFIG_REALTIME_ONLY

Previously VP8_TEMPORAL_ALT_REF was only defined for non-realtime-only
builds. However, its value was checked with #if, not #ifdef.

Fixes -Wundef warnings.

BUG=webm:1069

Change-Id: If78d8731298f3f0d3662ffa25f973e7adaf67152

8 years agoRemove CONFIG_DEBUG guards from assert()
Johann [Sat, 27 Aug 2016 01:08:35 +0000 (18:08 -0700)]
Remove CONFIG_DEBUG guards from assert()

When 'NDEBUG' is set, assert() generates no code.

Change-Id: Icf61cfc1a8f6e5f0770b3626d8c73ae968df1108

8 years agoRemove unused function vpx_de_mblock
Johann [Sat, 27 Aug 2016 01:06:19 +0000 (18:06 -0700)]
Remove unused function vpx_de_mblock

vpx_config.h was not included so CONFIG_POSTPROC was never defined.

Change-Id: I777de499823afa286734549a8e7f4a93e7ad97f3

8 years agoFix -Wundef warning for OUTPUT_FPF
Johann [Sat, 27 Aug 2016 00:53:50 +0000 (17:53 -0700)]
Fix -Wundef warning for OUTPUT_FPF

BUG=webm:1069

Change-Id: I3d13d07cf0934e6e262c8033bd77d7197d03ce21

8 years agoFix -Wundef warning for __SANITIZE_ADDRESS__
Johann [Sat, 27 Aug 2016 00:52:47 +0000 (17:52 -0700)]
Fix -Wundef warning for __SANITIZE_ADDRESS__

BUG=webm:1069

Change-Id: Iad8811939a910a8f31cf5788220712a255ddf36a

8 years agoMerge "Rename test/lpf_8_test.cc to test/lpf_test.cc"
Linfeng Zhang [Wed, 31 Aug 2016 22:46:06 +0000 (22:46 +0000)]
Merge "Rename test/lpf_8_test.cc to test/lpf_test.cc"

8 years agoRename test/lpf_8_test.cc to test/lpf_test.cc
Linfeng Zhang [Wed, 31 Aug 2016 22:14:42 +0000 (15:14 -0700)]
Rename test/lpf_8_test.cc to test/lpf_test.cc

It actually tests all sizes lpf functions.

Change-Id: Ie31798f90165e6e0c13cbac0e0ab9648ab568bce

8 years agoUpdate NEON transpose functions.
Linfeng Zhang [Wed, 31 Aug 2016 21:58:40 +0000 (14:58 -0700)]
Update NEON transpose functions.

Unify coding style.

Change-Id: I5826f40c02c882df7353391e0c9dd6cef6bd4b97

8 years agoRefactor uv tx size with lookup arrays
Debargha Mukherjee [Tue, 30 Aug 2016 19:52:29 +0000 (12:52 -0700)]
Refactor uv tx size with lookup arrays

Change-Id: Ife6a3d301c5faaba89d16d188d638631083511f7

8 years agoMerge "Update vpx_lpf_vertical_16_dual_neon() intrinsics"
Linfeng Zhang [Wed, 31 Aug 2016 19:41:25 +0000 (19:41 +0000)]
Merge "Update vpx_lpf_vertical_16_dual_neon() intrinsics"

8 years agoModified resize loop constraints.
paulwilkins [Mon, 8 Aug 2016 14:08:21 +0000 (15:08 +0100)]
Modified resize loop constraints.

Using a tighter resize constraint on undershoot seems to help
results (especially SSIM) as significant undershoot on a frame
seems to have more of a damaging impact than overshoot.

This patch has been tuned so that in local testing using the
derf set it is encode speed neutral for speed  setting 2.

Average quality result for speed 2 (psnr,ssim) were  as follows:-

 lowres  0.039,  0.453
 midres  0.249, 0.853
 hdres  0.159, 0.659
 NetFlix -0.241, 0.360

Change-Id: Ie8d3a0d7d6f7ea89d9965d1821be17f8bda85062

8 years agolibyuv: update to de944ed8c74909ea6fbd743a22efe1e55e851b83
Jim Bankoski [Tue, 30 Aug 2016 21:24:35 +0000 (14:24 -0700)]
libyuv: update to de944ed8c74909ea6fbd743a22efe1e55e851b83

Fixes windows build issue:
==> tests::VS10_x64 is broken
         LINK : warning C4742: 'kYvuI601Constants' has different alignment in 'third_party\libyuv\source\row_common.cc' and 'third_party\libyuv\source\planar_functions.cc': 32 and 2 [.build-x86_64-win64-vs10\vpxdec.vcxproj]
         LINK : warning C4744: 'kYvuI601Constants' has different type in 'third_party\libyuv\source\row_common.cc' and 'third_party\libyuv\source\planar_functions.cc': '__declspec(align(32)) struct (224 bytes)' and 'struct (224 bytes)' [.build-x86_64-win64-vs10\vpxdec.vcxproj]
         LINK : warning C4742: 'kYuvI601Constants' has different alignment in 'third_party\libyuv\source\row_common.cc' and 'third_party\libyuv\source\planar_functions.cc': 32 and 2 [.build-x86_64-win64-vs10\vpxdec.vcxproj]
         LINK : warning C4744: 'kYuvI601Constants' has different type in 'third_party\libyuv\source\row_common.cc' and 'third_party\libyuv\source\planar_functions.cc': '__declspec(align(32)) struct (224 bytes)' and 'struct (224 bytes)' [.build-x86_64-win64-vs10\vpxdec.vcxproj]
         LINK : warning C4742: 'kYvuI601Constants' has different alignment in 'third_party\libyuv\source\row_common.cc' and 'third_party\libyuv\source\planar_functions.cc': 32 and 2 [.build-x86_64-win64-vs10\vpxenc.vcxproj]
         LINK : warning C4744: 'kYvuI601Constants' has different type in 'third_party\libyuv\source\row_common.cc' and 'third_party\libyuv\source\planar_functions.cc': '__declspec(align(32)) struct (224 bytes)' and 'struct (224 bytes)' [.build-x86_64-win64-vs10\vpxenc.vcxproj]
         LINK : warning C4742: 'kYuvI601Constants' has different alignment in 'third_party\libyuv\source\row_common.cc' and 'third_party\libyuv\source\planar_functions.cc': 32 and 2 [.build-x86_64-win64-vs10\vpxenc.vcxproj]
         LINK : warning C4744: 'kYuvI601Constants' has different type in 'third_party\libyuv\source\row_common.cc' and 'third_party\libyuv\source\planar_functions.cc': '__declspec(align(32)) struct (224 bytes)' and 'struct (224 bytes)' [.build-x86_64-win64-vs10\vpxenc.vcxproj]
         LINK : error C2220: warning treated as error - no 'executable' file generated [.build-x86_64-win64-vs10\vpxdec.vcxproj]
         LINK : error C2220: warning treated as error - no 'executable' file generated [.build-x86_64-win64-vs10\vpxenc.vcxproj]

Change-Id: Ic3c4fff9209f5a52ff8f8ff321548d49ba09ec06

8 years agoUpdate vpx_lpf_vertical_16_dual_neon() intrinsics
Linfeng Zhang [Mon, 29 Aug 2016 22:20:09 +0000 (15:20 -0700)]
Update vpx_lpf_vertical_16_dual_neon() intrinsics

Process 16 samples together.

Change-Id: If6ee8e3377aa2786417f2fc411ba7d87ea8b6799

8 years agoMerge "Adjust coefficient optimization and tx_domain rd speed features."
Paul Wilkins [Tue, 30 Aug 2016 16:54:39 +0000 (16:54 +0000)]
Merge "Adjust  coefficient optimization  and tx_domain rd speed features."

8 years agoMerge "Update vpx_lpf_horizontal_edge_16_neon() intrinsics"
Linfeng Zhang [Mon, 29 Aug 2016 21:37:07 +0000 (21:37 +0000)]
Merge "Update vpx_lpf_horizontal_edge_16_neon() intrinsics"

8 years agoMerge "vp8: Move loopfilter synchronization to end of encode_frame call."
Marco Paniconi [Mon, 29 Aug 2016 05:52:39 +0000 (05:52 +0000)]
Merge "vp8: Move loopfilter synchronization to end of encode_frame call."

8 years agoUpdate vpx_lpf_horizontal_edge_16_neon() intrinsics
Linfeng Zhang [Wed, 24 Aug 2016 18:13:54 +0000 (11:13 -0700)]
Update vpx_lpf_horizontal_edge_16_neon() intrinsics

Process 16 samples together.

Change-Id: I9cfbe04c9d25d8b89f63f48f519e812746db754d

8 years agoMerge "vpx_mem,align_addr: use ~ to create mask"
James Zern [Sat, 27 Aug 2016 21:27:45 +0000 (21:27 +0000)]
Merge "vpx_mem,align_addr: use ~ to create mask"

8 years agovpx_mem,align_addr: use ~ to create mask
James Zern [Sat, 27 Aug 2016 17:34:40 +0000 (10:34 -0700)]
vpx_mem,align_addr: use ~ to create mask

removes the need for an intermediate cast to int, which was missing in
the call added in:
69c5ba1 vpx_mem: Refactor code

quiets a visual studio warning:
C4146: unary minus operator applied to unsigned type, result still
unsigned

Change-Id: I76c4003416759c6c76b78f74de7c0d2ba5071216

8 years agovp9_alt_ref_aq_set_nsegments: harmonize fn signature
James Zern [Sat, 27 Aug 2016 18:16:03 +0000 (11:16 -0700)]
vp9_alt_ref_aq_set_nsegments: harmonize fn signature

Change-Id: I5f232664652a8dc3a71e43b8b1fa05ddb4a84ecc

8 years agoMove vp9_alt_ref_aq_private.h to vp9_alt_ref_aq.c
Yury Gitman [Fri, 26 Aug 2016 00:43:33 +0000 (17:43 -0700)]
Move vp9_alt_ref_aq_private.h to vp9_alt_ref_aq.c

+ add a temporary dummy element to ALT_REF_AQ to avoid a warning about
an empty struct

Change-Id: Ib6e5c39ff62ad96eb4e3686d4882228a42b3843f

8 years agoMerge changes Ia81004d6,I74b80fb6,I38fcb62b,I2da9cd5d
James Zern [Fri, 26 Aug 2016 23:52:04 +0000 (23:52 +0000)]
Merge changes Ia81004d6,I74b80fb6,I38fcb62b,I2da9cd5d

* changes:
  vpx_mem: add basic size check
  vpx_mem: normalize function names
  vpx_realloc correction.
  vpx_mem: Refactor code

8 years agoMerge changes I353da4a2,I423f2153
James Zern [Fri, 26 Aug 2016 23:48:08 +0000 (23:48 +0000)]
Merge changes I353da4a2,I423f2153

* changes:
  vp8_decoder_create_threads: check sem/pthread returns
  vp8_create_decoder_instances: add missing setjmp

8 years agoMerge "Remove halfpix specialization"
Johann Koenig [Fri, 26 Aug 2016 21:28:01 +0000 (21:28 +0000)]
Merge "Remove halfpix specialization"

8 years agoMerge "add_noise,vpx_setup_noise: correct 'char_dist' type"
James Zern [Fri, 26 Aug 2016 18:47:39 +0000 (18:47 +0000)]
Merge "add_noise,vpx_setup_noise: correct 'char_dist' type"

8 years agoMerge "libyuv: update to c244a3e9"
James Bankoski [Fri, 26 Aug 2016 18:06:06 +0000 (18:06 +0000)]
Merge "libyuv: update to c244a3e9"

8 years agoMerge "Fix VS build warnings in vp9_alt_ref_aq files"
Jingning Han [Fri, 26 Aug 2016 17:19:12 +0000 (17:19 +0000)]
Merge "Fix VS build warnings in vp9_alt_ref_aq files"

8 years agoMerge "Add ALLOW_RECODE_FIRST speed mode."
Paul Wilkins [Fri, 26 Aug 2016 15:46:45 +0000 (15:46 +0000)]
Merge "Add ALLOW_RECODE_FIRST speed mode."

8 years agoFix VS build warnings in vp9_alt_ref_aq files
Jingning Han [Fri, 26 Aug 2016 15:42:51 +0000 (08:42 -0700)]
Fix VS build warnings in vp9_alt_ref_aq files

Change-Id: I5b19ec00a1eb8b148026f665d217c12eb50b614a

8 years agoAdd ALLOW_RECODE_FIRST speed mode.
paulwilkins [Fri, 26 Aug 2016 10:43:47 +0000 (11:43 +0100)]
Add ALLOW_RECODE_FIRST speed mode.

This patch is to address concerns that changes to allow
recodes on the first frame in each ARF group do not give a
good enough speed quality trade off for speed 2. Though the
average impact  on encode speed is 1-2%, for some hard clips
it is > 5% rise.  For speed 1 this is less an issue and for Speed 0
the previous patch actually  improves speed.

Change-Id: Ie1bcefdbfdf846d3f4428590173f621465dffe3a

8 years agoMerge "vp8: fix decoder crash with invalid leading keyframes"
James Zern [Fri, 26 Aug 2016 07:01:42 +0000 (07:01 +0000)]
Merge "vp8: fix decoder crash with invalid leading keyframes"

8 years agoFix formatting in internal stats for vp8 and vp9
Sarah Parker [Fri, 26 Aug 2016 00:25:26 +0000 (17:25 -0700)]
Fix formatting in internal stats for vp8 and vp9

This corrects a formatting error introduced in:
I1e9d548ce445d29002f0c59ebfd3957a6f15e702
where spaces were used as delimiters instead of tabs.

The corresponding fix for vp10 is in
Ica3d625d6672b3c47e0e208b45eede29b9004030.

Change-Id: Ibc4eb8fd82e6b926ba259a679dc98557cadba9b1

8 years agovp8: Move loopfilter synchronization to end of encode_frame call.
Marco [Thu, 25 Aug 2016 15:53:24 +0000 (08:53 -0700)]
vp8: Move loopfilter synchronization to end of encode_frame call.

Allow loopfilter to continue until encode_frame is completed.

Change-Id: I7bbccc3d409e263aab6a6ff24588d8b2a964a96e

8 years agoCreate interface for the ALT_REF_AQ class
Yury Gitman [Mon, 18 Jul 2016 22:44:40 +0000 (15:44 -0700)]
Create interface for the ALT_REF_AQ class

Current commit is just an API template  for the rest of the code, and
I will add inner logic later.

Altref  frames  generate a  lot  of  bitrate  and  at the  same  time
other  frames  refer to  them  a  lot, so  it  makes  sense to  apply
special  compensation-based adaptive  quantization scheme  for altref
frames. E.g.,  for blocks  that are  good predictors  for the  future
apply rate-control  chosen quantizer  while for bad  predictors apply
worse one.

Change-Id: Iba3f8ec349470673b7249f6a125f6859336a47c8

8 years agoMerge "Add --alt-ref-aq=<int> option"
Yury Gitman [Thu, 25 Aug 2016 17:49:41 +0000 (17:49 +0000)]
Merge "Add --alt-ref-aq=<int> option"

8 years agoAdjust coefficient optimization and tx_domain rd speed features.
paulwilkins [Thu, 18 Aug 2016 13:15:25 +0000 (14:15 +0100)]
Adjust  coefficient optimization  and tx_domain rd speed features.

Previously Tx domain rd was used in all cases above speed 0.
Coefficient optimization was only enabled for best and speed 0.

This patch selectively sets these features at other speed settings
based on block complexity.

For the Netflix and HD sets in particular the quality gains are
large compared to the speed hit. At speed 1 the average psnr
gain in the NF set  is > 2.5% with one clip coming in at 18%
and some points almost 30%.  Average gains for the lower
resolution test sets are around 1%.

The gains are biggest at low Q so some further optimization
may be possible.

Change-Id: I340376c7b2a78e5389a34b7ebdc41072808d0576

8 years agolibyuv: update to c244a3e9
Jim Bankoski [Thu, 25 Aug 2016 13:39:38 +0000 (06:39 -0700)]
libyuv: update to c244a3e9

Fixes color issue when scaling without breaking mingw.

BUG=https://bugs.chromium.org/p/libyuv/issues/detail?id=605
BUG=https://bugs.chromium.org/p/webm/issues/detail?id=1252

Change-Id: I09437d93fd65964ad57113274d8c819f3eaf2e57

8 years agoadd_noise,vpx_setup_noise: correct 'char_dist' type
James Zern [Thu, 25 Aug 2016 04:46:26 +0000 (21:46 -0700)]
add_noise,vpx_setup_noise: correct 'char_dist' type

fixes SSE2/AddNoiseTest.CheckCvsAssembly/0 with -funsigned-char.
visibly broken since:
0dc69c7 postproc : fix function parameters for noise functions.
where the types diverged (char vs. int8)
but likely the return changed in:
2ca24b0 postproc - move filling of noise buffer to vpx_dsp.
when multiple implementations were merged.

Change-Id: I176ca1f170217f05ba7872b0c4de63e41949e999

8 years agoMerge "Add datarate tests for encoder multi-threads (vp8 and vp9)."
Marco Paniconi [Thu, 25 Aug 2016 03:13:36 +0000 (03:13 +0000)]
Merge "Add datarate tests for encoder multi-threads (vp8 and vp9)."

8 years agovpx_mem: add basic size check
James Zern [Wed, 24 Aug 2016 04:06:36 +0000 (21:06 -0700)]
vpx_mem: add basic size check

set a max allocable size to prevent overflows in 32-bit and extremely
large allocation attempts in 64-bit. this could be amended to allow size
or num parameters to be 64-bits with the correct size being used at each
call site.

BUG=webm:819

Change-Id: Ia81004d6c4279680714c4488b4f6cf287ab396a5

8 years agovpx_mem: normalize function names
James Zern [Wed, 24 Aug 2016 23:50:13 +0000 (16:50 -0700)]
vpx_mem: normalize function names

use lower case + '_' rather than capital followed by camel case

Change-Id: I74b80fb660d281228e25edc8b6509455ffe2920e

8 years agovpx_realloc correction.
Urvang Joshi [Tue, 26 Jul 2016 19:02:37 +0000 (12:02 -0700)]
vpx_realloc correction.

vpx_realloc was allocating 1 byte more than needed every time.
Fixed this, and took this opportunity to do a small refactoring.

Change-Id: I38fcb62b698894acbbab43466c1decd12f906789
(cherry picked from aom: 2a876b4 aom_realloc correction.)

8 years agovpx_mem: Refactor code
Urvang Joshi [Tue, 26 Jul 2016 00:12:14 +0000 (17:12 -0700)]
vpx_mem: Refactor code

Change-Id: I2da9cd5da48ae97e770bccfd1233bcc70b484688
(cherry picked from aom: 83c95f5 aom_mem: Refactor code)

8 years agoAdd datarate tests for encoder multi-threads (vp8 and vp9).
Marco [Wed, 24 Aug 2016 18:52:44 +0000 (11:52 -0700)]
Add datarate tests for encoder multi-threads (vp8 and vp9).

Change-Id: I7f9b23026aaee309095cc3f4724125ae319875af

8 years agoAdd --alt-ref-aq=<int> option
Yury Gitman [Mon, 18 Jul 2016 19:17:58 +0000 (12:17 -0700)]
Add --alt-ref-aq=<int> option

In the future this option will activate adaptive quantization special
for altref frames. Encoder will  create the adaptive quantization map
on the basis of lookahead buffers similarity which is the estimate of
the future motion compensation performance.

Change-Id: Ia0088b3babb0f9a4899c79d8d819947ba5a03df2

8 years agoMerge "vp9: Refactor set_low_temp_var_flag."
Jacky Chen [Wed, 24 Aug 2016 22:02:52 +0000 (22:02 +0000)]
Merge "vp9: Refactor set_low_temp_var_flag."

8 years agovp8_decoder_create_threads: check sem/pthread returns
James Zern [Wed, 24 Aug 2016 01:46:31 +0000 (18:46 -0700)]
vp8_decoder_create_threads: check sem/pthread returns

Change-Id: I353da4a2f988ca51d48d0ca91236e8cc0bb48ff5

8 years agovp8_create_decoder_instances: add missing setjmp
James Zern [Wed, 24 Aug 2016 01:29:42 +0000 (18:29 -0700)]
vp8_create_decoder_instances: add missing setjmp

vp8_decoder_create_threads() has allocations that expect one is set.

Change-Id: I423f2153a2969c88d48ba45cc9ead4a01443ce65

8 years agoRemove halfpix specialization
Johann [Tue, 23 Aug 2016 23:58:07 +0000 (16:58 -0700)]
Remove halfpix specialization

This function only exists as a shortcut to subpixel variance with
predefined offsets. xoffset = 4 for horizontal, yoffset = 4 for vertical
and both for "hv"

Removing this allows the existing optimizations for the variance
functions to be called. Instead of having only sse2 optimizations, this
gives sse2, ssse3, msa and neon.

BUG=webm:1273

Change-Id: Ieb407b423b91b87d33c4263c6a1ad5e673b0efd6

8 years agovp8: fix decoder crash with invalid leading keyframes
James Zern [Tue, 23 Aug 2016 22:51:32 +0000 (15:51 -0700)]
vp8: fix decoder crash with invalid leading keyframes

decoding the same invalid keyframe twice would result in a crash as the
second time through the decoder would be assumed to have been
initialized as there was no resolution change. in this case the
resolution was itself invalid (0x6), but vp8_peek_si() was only failing
in the case of 0x0.
invalid-vp80-00-comprehensive-018.ivf.2kf_0x6.ivf tests this case by
duplicating the first keyframe and additionally adds a valid one to
ensure decoding can resume without error.

BUG=b/30593765

Change-Id: If0859035908b7870d67a7f3f646b5a080252eb6d

8 years agoCorrect CHECK_MEM_ERROR macro (release builds)
Yury Gitman [Tue, 23 Aug 2016 01:52:44 +0000 (18:52 -0700)]
Correct CHECK_MEM_ERROR macro (release builds)

The previous macro doesn't work with &cpi->common as a first argument

Change-Id: Iddf7a1f5d56d7abafd9b2b8707aa611d349e7a68

8 years agovp9: Refactor set_low_temp_var_flag.
jackychen [Tue, 23 Aug 2016 21:17:28 +0000 (14:17 -0700)]
vp9: Refactor set_low_temp_var_flag.

No need to pass in force_split, since we should use sb_type in the
condition.

Change-Id: Ide27243ef46e017bbb98d676347fc566a6c828f7

8 years agoMerge "Disable split mode in 4k video encoding"
Yunqing Wang [Tue, 23 Aug 2016 15:35:32 +0000 (15:35 +0000)]
Merge "Disable split mode in 4k video encoding"

8 years agoDisable split mode in 4k video encoding
Yunqing Wang [Tue, 23 Aug 2016 02:46:44 +0000 (19:46 -0700)]
Disable split mode in 4k video encoding

Disabled the split mode while encoding 4k video to speed
up the encoder.

Borg test result on 4k set:
Overall PSNR: +0.029%; SSIM: +0.009%.
Average encoder speedup at speed 2 is 2.5%.

Change-Id: I1519c658f07c3ac838affbe5aff0ed9b94f3f8f4

8 years agoCorrect CHECK_MEM_ERROR macro
Yury Gitman [Mon, 22 Aug 2016 21:25:00 +0000 (14:25 -0700)]
Correct CHECK_MEM_ERROR macro

The previous macro doesn't work with &cpi->common as a first argument

Change-Id: Ic3f5c49a94cf8b17de6569811b957c963341bb58

8 years agoMerge "Revert "vp8: Move loopfilter synchronization to end of encode_frame call.""
Marco Paniconi [Mon, 22 Aug 2016 15:46:57 +0000 (15:46 +0000)]
Merge "Revert "vp8: Move loopfilter synchronization to end of encode_frame call.""

8 years agoRevert "vp8: Move loopfilter synchronization to end of encode_frame call."
Marco Paniconi [Mon, 22 Aug 2016 15:46:20 +0000 (15:46 +0000)]
Revert "vp8: Move loopfilter synchronization to end of encode_frame call."

This reverts commit c2fe9acceda922ca1d9f0d6185b340560b93597a.

This change break linux browser test in chromium:
https://build.chromium.org/p/chromium.webrtc/builders/Linux%20Tester

Change-Id: I226782fad480c17a99ec6c785ad93cf4ab88f0ae

8 years agoMerge "Adjust speed features for 4k video encoding"
Yunqing Wang [Fri, 19 Aug 2016 23:11:05 +0000 (23:11 +0000)]
Merge "Adjust speed features for 4k video encoding"

8 years agoAdjust speed features for 4k video encoding
Yunqing Wang [Fri, 19 Aug 2016 16:30:32 +0000 (09:30 -0700)]
Adjust speed features for 4k video encoding

Adjusted speed 2 features to speed up 4k video encoding.
BDBR results from borg test:
PSNR: +0.313%; SSIM: +0.268%.
Average speedup: 8.5%

Change-Id: I1e2695a01fb3f3817c1df4480e184c2aed8f2eba

8 years agovp9_pickmode: quiet float conversion warnings
James Zern [Fri, 19 Aug 2016 08:28:01 +0000 (01:28 -0700)]
vp9_pickmode: quiet float conversion warnings

Change-Id: I591e4f958955b3f2edb2f95a83c54cd83c8ef075

8 years agovp9_alloc_context_buffers: clear cm->mi* on failure
James Zern [Thu, 18 Aug 2016 22:29:56 +0000 (15:29 -0700)]
vp9_alloc_context_buffers: clear cm->mi* on failure

this fixes a crash in vp9_dec_setup_mi() via
vp9_init_context_buffers() should decoding continue and the decoder
resyncs on a smaller frame

BUG=b/30593752

Change-Id: I9ce8d94abe89bcd058697e8bd8599690e61bd380

8 years agoMerge "vp9 svc: SVC encoder speed up."
Jacky Chen [Thu, 18 Aug 2016 21:21:29 +0000 (21:21 +0000)]
Merge "vp9 svc: SVC encoder speed up."

8 years agoMerge "Remove '-chromium' flag from ads2gas_apple.pl"
Johann Koenig [Thu, 18 Aug 2016 19:54:54 +0000 (19:54 +0000)]
Merge "Remove '-chromium' flag from ads2gas_apple.pl"

8 years agovp9 svc: SVC encoder speed up.
JackyChen [Fri, 5 Aug 2016 18:10:29 +0000 (11:10 -0700)]
vp9 svc: SVC encoder speed up.

Bias towards base_mv and skip 1/4 pixel motion search when using base mv.
2~3% speed up for 2 spatial layers, 3~5% speed up for 3 spatial layers.
PSNR loss:
(2 layers) 0.07dB for gips_stationary, 0.04dB for gips_motion;
(3 layers) 0.07dB for gips_stationary, 0.06dB for gips_motion.

Change-Id: I773acbda080c301cabe8cd259f842bcc5b8bc999

8 years agoMerge "vp9 non-rd pickmode: Add limit on newmv-last and golden bias."
Marco Paniconi [Thu, 18 Aug 2016 18:03:48 +0000 (18:03 +0000)]
Merge "vp9 non-rd pickmode: Add limit on newmv-last and golden bias."

8 years agoMerge "vp8: Move loopfilter synchronization to end of encode_frame call."
Marco Paniconi [Thu, 18 Aug 2016 02:46:31 +0000 (02:46 +0000)]
Merge "vp8: Move loopfilter synchronization to end of encode_frame call."

8 years agovp9 non-rd pickmode: Add limit on newmv-last and golden bias.
Marco [Mon, 15 Aug 2016 17:22:40 +0000 (10:22 -0700)]
vp9 non-rd pickmode: Add limit on newmv-last and golden bias.

Add option, for newmv-last, to limit the rd-threshold update for early exit,
under a source varianace condition.
This can improve visual quality in low texture moving areas,
like forehead/faces.

Also add bias against golden to improve the speed/fps,
will little/negligible loss in quality.

Only affects CBR mode, non-svc, non-screen-content.

Change-Id: I3a5229eee860c71499a6fd464c450b167b07534d

8 years agoRemove '-chromium' flag from ads2gas_apple.pl
Johann [Wed, 17 Aug 2016 21:05:16 +0000 (14:05 -0700)]
Remove '-chromium' flag from ads2gas_apple.pl

The flag was added because Apple clang and Chromium clang disagreed
for certain versions of instructions.

qsubaddx, qaddsubx, ldrneb and ldrneh were used in armv6 assembly
which was removed in d55724fae9cb27e070add7952394fc0427ef2061

vqshrun was used in some neon assembly but superseded by
dcbfacbb984cdcd5b5a5030103305fa3669dfece

.include was used for obj_int_extract/asm_offsets and removed in
6eec73a747f3d14d327cdc33279de96d0deb48c8

Change-Id: I32f4c9b536d0318482101c0b8e91e42b8f545f18

8 years agoAdd casting to fix warning.
paulwilkins [Wed, 17 Aug 2016 09:50:18 +0000 (10:50 +0100)]
Add casting to fix warning.

Frame bits can safely be stored int but group bits
(kf or arf) use 64bit.

Change-Id: I0800f2a28070f8749110a95721c116fc56987885

8 years agoAdd {} to try and keep Jenkins happy.
paulwilkins [Wed, 17 Aug 2016 10:14:44 +0000 (11:14 +0100)]
Add {} to try and keep Jenkins happy.

Change-Id: If1ca3cf83e058317c9751d7da6caa7cd75eb6845

8 years agovp8: Move loopfilter synchronization to end of encode_frame call.
Marco [Tue, 16 Aug 2016 18:21:20 +0000 (11:21 -0700)]
vp8: Move loopfilter synchronization to end of encode_frame call.

Change-Id: I5bdfea7f51df1f1fa5d9c1597e96988acce6c2f2

8 years agoNEON asm of vpx_lpf_{horizontal,vertical}_8_dual_neon()
Linfeng Zhang [Sat, 13 Aug 2016 01:14:21 +0000 (18:14 -0700)]
NEON asm of vpx_lpf_{horizontal,vertical}_8_dual_neon()

Also expose the NEON intrinsics version.

BUG=webm:1261, webm:1266.

Change-Id: I8c4ae658467dcf66ebf7a75982b2ef712dbb4535

8 years agoChange default recode rule for good speed 0 and best.
paulwilkins [Wed, 10 Aug 2016 13:00:52 +0000 (14:00 +0100)]
Change default recode rule for good speed 0 and best.

Changes the default recode rule for Speed 0 and best quality
from ALLOW_RECODE to ALLOW_RECODE_KFARFGF.

Tested on the NF, hdres, midres and lowres test sets, this setting
when combined with patch I40cb559... now performs "as well" in
metrics terms (in fact it came out a tiny amount better overall)
but encode time is 9.6%  faster (measured as the average
from 27 mid rate local encodes on clips in the derf/lowres set.

Change-Id: I8c781c0cdfa3a9929cd9406d15582fce47d6ae3b

8 years agoChange to recode rules.
paulwilkins [Tue, 9 Aug 2016 09:50:33 +0000 (10:50 +0100)]
Change to recode rules.

Allow recodes for the first inter frame in each arf group
even when the recode rule is set to ALLOW_RECODE_KFARFGF.

Small gains of 0.05%.

Change-Id: I40cb559d36a2bf0ebf5cf758c3f92e452b480577

8 years agoMerge "Modified ARF group allocation."
Paul Wilkins [Mon, 15 Aug 2016 09:42:29 +0000 (09:42 +0000)]
Merge "Modified ARF group allocation."

8 years agoMerge "Fix another motion vector out of range bug"
Yunqing Wang [Fri, 12 Aug 2016 23:52:14 +0000 (23:52 +0000)]
Merge "Fix another motion vector out of range bug"

8 years agoMerge "variance_impl_avx2: restore table layout"
James Zern [Fri, 12 Aug 2016 23:02:27 +0000 (23:02 +0000)]
Merge "variance_impl_avx2: restore table layout"

8 years agovariance_impl_avx2: restore table layout
James Zern [Fri, 12 Aug 2016 06:23:16 +0000 (23:23 -0700)]
variance_impl_avx2: restore table layout

disable clang-format for bilinear_filters_avx2

restores the row layout prior to:
099bd7f vpx_dsp: apply clang-format
but keeps the justification used by clang-format

Change-Id: Icf1733a37edb807e74c26b23a93963c03bd08fd7

8 years agoNEON intrinsics for 4 loopfilter functions
Linfeng Zhang [Wed, 3 Aug 2016 18:42:33 +0000 (11:42 -0700)]
NEON intrinsics for 4 loopfilter functions

New NEON intrinsics functions:
vpx_lpf_horizontal_edge_8_neon()
vpx_lpf_horizontal_edge_16_neon()
vpx_lpf_vertical_16_neon()
vpx_lpf_vertical_16_dual_neon()

BUG=webm:1262, webm:1263, webm:1264, webm:1265.

Change-Id: I7a2aff2a358b22277429329adec606e08efbc8cb

8 years agoFix another motion vector out of range bug
Yunqing Wang [Fri, 12 Aug 2016 00:34:20 +0000 (17:34 -0700)]
Fix another motion vector out of range bug

This patch fixed a motion vector out of range bug:
vpxenc: ../libvpx/vp9/encoder/vp9_mcomp.c:69:
 mv_cost: Assertion `mv->col >= -((1 << (11 + 1 + 2)) - 1) &&
 mv->col < ((1 << (11 + 1 + 2)) - 1)' failed.

For blocks that returned without having full-pixel search, the original
MV limits were not restored, which caused the failure. Moved the set
MV limit function down to fix the bug.

Change-Id: Id7d798fc7214e95c6e4846c588f0233fcf1a4223

8 years agovp8: Fix denoiser setting in multi-res sample encoder.
Marco [Wed, 10 Aug 2016 23:20:46 +0000 (16:20 -0700)]
vp8: Fix denoiser setting in multi-res sample encoder.

Change-Id: I9222f3b252e5ed883659f1a14cd705944ee9da07

8 years agoModified ARF group allocation.
paulwilkins [Tue, 9 Aug 2016 09:10:16 +0000 (10:10 +0100)]
Modified ARF group allocation.

Small average gains in the range 0.05 - 0.1

Change-Id: I30e85c04be615cc84726427c5057388b20a6ff60

8 years agoAlign thread entry point stack
Aleksey Vasenev [Fri, 29 Jul 2016 08:28:50 +0000 (11:28 +0300)]
Align thread entry point stack

_beginthreadex does not align the stack on 16-byte boundary as expected
by gcc.

On x86 targets, the force_align_arg_pointer attribute may be applied to
individual function definitions, generating an alternate prologue and
epilogue that realigns the run-time stack if necessary. This supports
mixing legacy codes that run with a 4-byte aligned stack with modern
codes that keep a 16-byte stack for SSE compatibility.
https://gcc.gnu.org/onlinedocs/gcc/x86-Function-Attributes.html

Change-Id: Ie4e4ab32948c238fa87054d5664189972ca6708e
Signed-off-by: Aleksey Vasenev <margtu-fivt@ya.ru>
8 years agoMerge changes I1d3edbdb,I8b49fd05
James Zern [Wed, 10 Aug 2016 00:05:54 +0000 (00:05 +0000)]
Merge changes I1d3edbdb,I8b49fd05

* changes:
  tests: use scoped_ptr for local video source vars
  y4m_test: init members in the constructor

8 years agoMerge "Refactor mv limits."
Alex Converse [Tue, 9 Aug 2016 17:12:50 +0000 (17:12 +0000)]
Merge "Refactor mv limits."