Commit 8d5b2859 authored by johannkoenig's avatar johannkoenig Committed by Commit bot

libvpx: enable high bit depth for vp9

Allow the library to process 8 bit (plus high bitdepth internal), 10
bit, and 12 bit files.

Only for x86 targets. Performance for 8 bit (regular internal) is within
1-2% for these targets.

BUG=445071
R=jzern

Review-Url: https://codereview.chromium.org/2361263002
Cr-Commit-Position: refs/heads/master@{#420523}
parent 3a881a03
......@@ -31,7 +31,7 @@ Please follow these steps to update libvpx source code:
2. Generate .gni and config files.
cd third_party/libvpx
./generate_gni.sh
./generate_gni.sh --enable-vp9-highbitdepth
3. Update 'Branch' in README.chromium if necessary.
......
......@@ -368,10 +368,16 @@ libvpx_srcs_x86_assembly = [
"//third_party/libvpx/source/libvpx/vp8/encoder/x86/quantize_mmx.asm",
"//third_party/libvpx/source/libvpx/vp9/common/x86/vp9_mfqe_sse2.asm",
"//third_party/libvpx/source/libvpx/vp9/encoder/x86/vp9_dct_sse2.asm",
"//third_party/libvpx/source/libvpx/vp9/encoder/x86/vp9_error_sse2.asm",
"//third_party/libvpx/source/libvpx/vp9/encoder/x86/vp9_highbd_error_avx.asm",
"//third_party/libvpx/source/libvpx/vp9/encoder/x86/vp9_highbd_error_sse2.asm",
"//third_party/libvpx/source/libvpx/vp9/encoder/x86/vp9_temporal_filter_apply_sse2.asm",
"//third_party/libvpx/source/libvpx/vpx_dsp/x86/add_noise_sse2.asm",
"//third_party/libvpx/source/libvpx/vpx_dsp/x86/deblock_sse2.asm",
"//third_party/libvpx/source/libvpx/vpx_dsp/x86/highbd_intrapred_sse2.asm",
"//third_party/libvpx/source/libvpx/vpx_dsp/x86/highbd_sad4d_sse2.asm",
"//third_party/libvpx/source/libvpx/vpx_dsp/x86/highbd_sad_sse2.asm",
"//third_party/libvpx/source/libvpx/vpx_dsp/x86/highbd_subpel_variance_impl_sse2.asm",
"//third_party/libvpx/source/libvpx/vpx_dsp/x86/highbd_variance_impl_sse2.asm",
"//third_party/libvpx/source/libvpx/vpx_dsp/x86/intrapred_sse2.asm",
"//third_party/libvpx/source/libvpx/vpx_dsp/x86/intrapred_ssse3.asm",
"//third_party/libvpx/source/libvpx/vpx_dsp/x86/inv_wht_sse2.asm",
......@@ -383,6 +389,8 @@ libvpx_srcs_x86_assembly = [
"//third_party/libvpx/source/libvpx/vpx_dsp/x86/subpel_variance_sse2.asm",
"//third_party/libvpx/source/libvpx/vpx_dsp/x86/subtract_sse2.asm",
"//third_party/libvpx/source/libvpx/vpx_dsp/x86/vpx_convolve_copy_sse2.asm",
"//third_party/libvpx/source/libvpx/vpx_dsp/x86/vpx_high_subpixel_8t_sse2.asm",
"//third_party/libvpx/source/libvpx/vpx_dsp/x86/vpx_high_subpixel_bilinear_sse2.asm",
"//third_party/libvpx/source/libvpx/vpx_dsp/x86/vpx_subpixel_8t_sse2.asm",
"//third_party/libvpx/source/libvpx/vpx_dsp/x86/vpx_subpixel_8t_ssse3.asm",
"//third_party/libvpx/source/libvpx/vpx_dsp/x86/vpx_subpixel_bilinear_sse2.asm",
......@@ -402,9 +410,13 @@ libvpx_srcs_x86_sse2 = [
"//third_party/libvpx/source/libvpx/vp9/common/x86/vp9_idct_intrin_sse2.c",
"//third_party/libvpx/source/libvpx/vp9/encoder/x86/vp9_dct_intrin_sse2.c",
"//third_party/libvpx/source/libvpx/vp9/encoder/x86/vp9_denoiser_sse2.c",
"//third_party/libvpx/source/libvpx/vp9/encoder/x86/vp9_highbd_block_error_intrin_sse2.c",
"//third_party/libvpx/source/libvpx/vp9/encoder/x86/vp9_quantize_sse2.c",
"//third_party/libvpx/source/libvpx/vpx_dsp/x86/avg_intrin_sse2.c",
"//third_party/libvpx/source/libvpx/vpx_dsp/x86/fwd_txfm_sse2.c",
"//third_party/libvpx/source/libvpx/vpx_dsp/x86/highbd_loopfilter_sse2.c",
"//third_party/libvpx/source/libvpx/vpx_dsp/x86/highbd_quantize_intrin_sse2.c",
"//third_party/libvpx/source/libvpx/vpx_dsp/x86/highbd_variance_sse2.c",
"//third_party/libvpx/source/libvpx/vpx_dsp/x86/inv_txfm_sse2.c",
"//third_party/libvpx/source/libvpx/vpx_dsp/x86/loopfilter_sse2.c",
"//third_party/libvpx/source/libvpx/vpx_dsp/x86/quantize_sse2.c",
......@@ -415,7 +427,6 @@ libvpx_srcs_x86_sse3 = []
libvpx_srcs_x86_ssse3 = [
"//third_party/libvpx/source/libvpx/vp8/encoder/x86/quantize_ssse3.c",
"//third_party/libvpx/source/libvpx/vp9/encoder/x86/vp9_dct_ssse3.c",
"//third_party/libvpx/source/libvpx/vp9/encoder/x86/vp9_frame_scale_ssse3.c",
"//third_party/libvpx/source/libvpx/vpx_dsp/x86/vpx_subpixel_8t_intrin_ssse3.c",
]
libvpx_srcs_x86_sse4_1 =
......@@ -797,13 +808,19 @@ libvpx_srcs_x86_64_assembly = [
"//third_party/libvpx/source/libvpx/vp8/encoder/x86/quantize_mmx.asm",
"//third_party/libvpx/source/libvpx/vp9/common/x86/vp9_mfqe_sse2.asm",
"//third_party/libvpx/source/libvpx/vp9/encoder/x86/vp9_dct_sse2.asm",
"//third_party/libvpx/source/libvpx/vp9/encoder/x86/vp9_error_sse2.asm",
"//third_party/libvpx/source/libvpx/vp9/encoder/x86/vp9_highbd_error_avx.asm",
"//third_party/libvpx/source/libvpx/vp9/encoder/x86/vp9_highbd_error_sse2.asm",
"//third_party/libvpx/source/libvpx/vp9/encoder/x86/vp9_quantize_ssse3_x86_64.asm",
"//third_party/libvpx/source/libvpx/vp9/encoder/x86/vp9_temporal_filter_apply_sse2.asm",
"//third_party/libvpx/source/libvpx/vpx_dsp/x86/add_noise_sse2.asm",
"//third_party/libvpx/source/libvpx/vpx_dsp/x86/avg_ssse3_x86_64.asm",
"//third_party/libvpx/source/libvpx/vpx_dsp/x86/deblock_sse2.asm",
"//third_party/libvpx/source/libvpx/vpx_dsp/x86/fwd_txfm_ssse3_x86_64.asm",
"//third_party/libvpx/source/libvpx/vpx_dsp/x86/highbd_intrapred_sse2.asm",
"//third_party/libvpx/source/libvpx/vpx_dsp/x86/highbd_sad4d_sse2.asm",
"//third_party/libvpx/source/libvpx/vpx_dsp/x86/highbd_sad_sse2.asm",
"//third_party/libvpx/source/libvpx/vpx_dsp/x86/highbd_subpel_variance_impl_sse2.asm",
"//third_party/libvpx/source/libvpx/vpx_dsp/x86/highbd_variance_impl_sse2.asm",
"//third_party/libvpx/source/libvpx/vpx_dsp/x86/intrapred_sse2.asm",
"//third_party/libvpx/source/libvpx/vpx_dsp/x86/intrapred_ssse3.asm",
"//third_party/libvpx/source/libvpx/vpx_dsp/x86/inv_txfm_ssse3_x86_64.asm",
......@@ -819,6 +836,8 @@ libvpx_srcs_x86_64_assembly = [
"//third_party/libvpx/source/libvpx/vpx_dsp/x86/subpel_variance_sse2.asm",
"//third_party/libvpx/source/libvpx/vpx_dsp/x86/subtract_sse2.asm",
"//third_party/libvpx/source/libvpx/vpx_dsp/x86/vpx_convolve_copy_sse2.asm",
"//third_party/libvpx/source/libvpx/vpx_dsp/x86/vpx_high_subpixel_8t_sse2.asm",
"//third_party/libvpx/source/libvpx/vpx_dsp/x86/vpx_high_subpixel_bilinear_sse2.asm",
"//third_party/libvpx/source/libvpx/vpx_dsp/x86/vpx_subpixel_8t_sse2.asm",
"//third_party/libvpx/source/libvpx/vpx_dsp/x86/vpx_subpixel_8t_ssse3.asm",
"//third_party/libvpx/source/libvpx/vpx_dsp/x86/vpx_subpixel_bilinear_sse2.asm",
......@@ -838,9 +857,13 @@ libvpx_srcs_x86_64_sse2 = [
"//third_party/libvpx/source/libvpx/vp9/common/x86/vp9_idct_intrin_sse2.c",
"//third_party/libvpx/source/libvpx/vp9/encoder/x86/vp9_dct_intrin_sse2.c",
"//third_party/libvpx/source/libvpx/vp9/encoder/x86/vp9_denoiser_sse2.c",
"//third_party/libvpx/source/libvpx/vp9/encoder/x86/vp9_highbd_block_error_intrin_sse2.c",
"//third_party/libvpx/source/libvpx/vp9/encoder/x86/vp9_quantize_sse2.c",
"//third_party/libvpx/source/libvpx/vpx_dsp/x86/avg_intrin_sse2.c",
"//third_party/libvpx/source/libvpx/vpx_dsp/x86/fwd_txfm_sse2.c",
"//third_party/libvpx/source/libvpx/vpx_dsp/x86/highbd_loopfilter_sse2.c",
"//third_party/libvpx/source/libvpx/vpx_dsp/x86/highbd_quantize_intrin_sse2.c",
"//third_party/libvpx/source/libvpx/vpx_dsp/x86/highbd_variance_sse2.c",
"//third_party/libvpx/source/libvpx/vpx_dsp/x86/inv_txfm_sse2.c",
"//third_party/libvpx/source/libvpx/vpx_dsp/x86/loopfilter_sse2.c",
"//third_party/libvpx/source/libvpx/vpx_dsp/x86/quantize_sse2.c",
......@@ -851,7 +874,6 @@ libvpx_srcs_x86_64_sse3 = []
libvpx_srcs_x86_64_ssse3 = [
"//third_party/libvpx/source/libvpx/vp8/encoder/x86/quantize_ssse3.c",
"//third_party/libvpx/source/libvpx/vp9/encoder/x86/vp9_dct_ssse3.c",
"//third_party/libvpx/source/libvpx/vp9/encoder/x86/vp9_frame_scale_ssse3.c",
"//third_party/libvpx/source/libvpx/vpx_dsp/x86/vpx_subpixel_8t_intrin_ssse3.c",
]
libvpx_srcs_x86_64_sse4_1 =
......
......@@ -69,7 +69,7 @@
%define CONFIG_TEMPORAL_DENOISING 1
%define CONFIG_VP9_TEMPORAL_DENOISING 1
%define CONFIG_COEFFICIENT_RANGE_CHECKING 0
%define CONFIG_VP9_HIGHBITDEPTH 0
%define CONFIG_VP9_HIGHBITDEPTH 1
%define CONFIG_BETTER_HW_COMPATIBILITY 0
%define CONFIG_EXPERIMENTAL 0
%define CONFIG_SIZE_LIMIT 1
......
......@@ -6,5 +6,5 @@
/* in the file PATENTS. All contributing project authors may */
/* be found in the AUTHORS file in the root of the source tree. */
#include "vpx/vpx_codec.h"
static const char* const cfg = "--target=x86-linux-gcc --enable-external-build --enable-postproc --enable-multi-res-encoding --enable-temporal-denoising --enable-vp9-temporal-denoising --enable-vp9-postproc --size-limit=16384x16384 --enable-realtime-only --disable-install-docs --enable-pic --as=yasm";
static const char* const cfg = "--target=x86-linux-gcc --enable-external-build --enable-postproc --enable-multi-res-encoding --enable-temporal-denoising --enable-vp9-temporal-denoising --enable-vp9-postproc --size-limit=16384x16384 --enable-realtime-only --disable-install-docs --enable-pic --as=yasm --enable-vp9-highbitdepth";
const char *vpx_codec_build_config(void) {return cfg;}
......@@ -81,7 +81,7 @@
#define CONFIG_TEMPORAL_DENOISING 1
#define CONFIG_VP9_TEMPORAL_DENOISING 1
#define CONFIG_COEFFICIENT_RANGE_CHECKING 0
#define CONFIG_VP9_HIGHBITDEPTH 0
#define CONFIG_VP9_HIGHBITDEPTH 1
#define CONFIG_BETTER_HW_COMPATIBILITY 0
#define CONFIG_EXPERIMENTAL 0
#define CONFIG_SIZE_LIMIT 1
......
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -69,7 +69,7 @@
%define CONFIG_TEMPORAL_DENOISING 1
%define CONFIG_VP9_TEMPORAL_DENOISING 1
%define CONFIG_COEFFICIENT_RANGE_CHECKING 0
%define CONFIG_VP9_HIGHBITDEPTH 0
%define CONFIG_VP9_HIGHBITDEPTH 1
%define CONFIG_BETTER_HW_COMPATIBILITY 0
%define CONFIG_EXPERIMENTAL 0
%define CONFIG_SIZE_LIMIT 1
......
......@@ -6,5 +6,5 @@
/* in the file PATENTS. All contributing project authors may */
/* be found in the AUTHORS file in the root of the source tree. */
#include "vpx/vpx_codec.h"
static const char* const cfg = "--target=x86_64-linux-gcc --enable-external-build --enable-postproc --enable-multi-res-encoding --enable-temporal-denoising --enable-vp9-temporal-denoising --enable-vp9-postproc --size-limit=16384x16384 --enable-realtime-only --disable-install-docs --enable-pic --as=yasm";
static const char* const cfg = "--target=x86_64-linux-gcc --enable-external-build --enable-postproc --enable-multi-res-encoding --enable-temporal-denoising --enable-vp9-temporal-denoising --enable-vp9-postproc --size-limit=16384x16384 --enable-realtime-only --disable-install-docs --enable-pic --as=yasm --enable-vp9-highbitdepth";
const char *vpx_codec_build_config(void) {return cfg;}
......@@ -81,7 +81,7 @@
#define CONFIG_TEMPORAL_DENOISING 1
#define CONFIG_VP9_TEMPORAL_DENOISING 1
#define CONFIG_COEFFICIENT_RANGE_CHECKING 0
#define CONFIG_VP9_HIGHBITDEPTH 0
#define CONFIG_VP9_HIGHBITDEPTH 1
#define CONFIG_BETTER_HW_COMPATIBILITY 0
#define CONFIG_EXPERIMENTAL 0
#define CONFIG_SIZE_LIMIT 1
......
......@@ -69,7 +69,7 @@
%define CONFIG_TEMPORAL_DENOISING 1
%define CONFIG_VP9_TEMPORAL_DENOISING 1
%define CONFIG_COEFFICIENT_RANGE_CHECKING 0
%define CONFIG_VP9_HIGHBITDEPTH 0
%define CONFIG_VP9_HIGHBITDEPTH 1
%define CONFIG_BETTER_HW_COMPATIBILITY 0
%define CONFIG_EXPERIMENTAL 0
%define CONFIG_SIZE_LIMIT 1
......
......@@ -6,5 +6,5 @@
/* in the file PATENTS. All contributing project authors may */
/* be found in the AUTHORS file in the root of the source tree. */
#include "vpx/vpx_codec.h"
static const char* const cfg = "--target=x86-darwin9-gcc --enable-external-build --enable-postproc --enable-multi-res-encoding --enable-temporal-denoising --enable-vp9-temporal-denoising --enable-vp9-postproc --size-limit=16384x16384 --enable-realtime-only --disable-install-docs --enable-pic --as=yasm";
static const char* const cfg = "--target=x86-darwin9-gcc --enable-external-build --enable-postproc --enable-multi-res-encoding --enable-temporal-denoising --enable-vp9-temporal-denoising --enable-vp9-postproc --size-limit=16384x16384 --enable-realtime-only --disable-install-docs --enable-pic --as=yasm --enable-vp9-highbitdepth";
const char *vpx_codec_build_config(void) {return cfg;}
......@@ -81,7 +81,7 @@
#define CONFIG_TEMPORAL_DENOISING 1
#define CONFIG_VP9_TEMPORAL_DENOISING 1
#define CONFIG_COEFFICIENT_RANGE_CHECKING 0
#define CONFIG_VP9_HIGHBITDEPTH 0
#define CONFIG_VP9_HIGHBITDEPTH 1
#define CONFIG_BETTER_HW_COMPATIBILITY 0
#define CONFIG_EXPERIMENTAL 0
#define CONFIG_SIZE_LIMIT 1
......
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -69,7 +69,7 @@
%define CONFIG_TEMPORAL_DENOISING 1
%define CONFIG_VP9_TEMPORAL_DENOISING 1
%define CONFIG_COEFFICIENT_RANGE_CHECKING 0
%define CONFIG_VP9_HIGHBITDEPTH 0
%define CONFIG_VP9_HIGHBITDEPTH 1
%define CONFIG_BETTER_HW_COMPATIBILITY 0
%define CONFIG_EXPERIMENTAL 0
%define CONFIG_SIZE_LIMIT 1
......
......@@ -6,5 +6,5 @@
/* in the file PATENTS. All contributing project authors may */
/* be found in the AUTHORS file in the root of the source tree. */
#include "vpx/vpx_codec.h"
static const char* const cfg = "--target=x86_64-darwin9-gcc --enable-external-build --enable-postproc --enable-multi-res-encoding --enable-temporal-denoising --enable-vp9-temporal-denoising --enable-vp9-postproc --size-limit=16384x16384 --enable-realtime-only --disable-install-docs --enable-pic --as=yasm";
static const char* const cfg = "--target=x86_64-darwin9-gcc --enable-external-build --enable-postproc --enable-multi-res-encoding --enable-temporal-denoising --enable-vp9-temporal-denoising --enable-vp9-postproc --size-limit=16384x16384 --enable-realtime-only --disable-install-docs --enable-pic --as=yasm --enable-vp9-highbitdepth";
const char *vpx_codec_build_config(void) {return cfg;}
......@@ -81,7 +81,7 @@
#define CONFIG_TEMPORAL_DENOISING 1
#define CONFIG_VP9_TEMPORAL_DENOISING 1
#define CONFIG_COEFFICIENT_RANGE_CHECKING 0
#define CONFIG_VP9_HIGHBITDEPTH 0
#define CONFIG_VP9_HIGHBITDEPTH 1
#define CONFIG_BETTER_HW_COMPATIBILITY 0
#define CONFIG_EXPERIMENTAL 0
#define CONFIG_SIZE_LIMIT 1
......
......@@ -69,7 +69,7 @@
%define CONFIG_TEMPORAL_DENOISING 1
%define CONFIG_VP9_TEMPORAL_DENOISING 1
%define CONFIG_COEFFICIENT_RANGE_CHECKING 0
%define CONFIG_VP9_HIGHBITDEPTH 0
%define CONFIG_VP9_HIGHBITDEPTH 1
%define CONFIG_BETTER_HW_COMPATIBILITY 0
%define CONFIG_EXPERIMENTAL 0
%define CONFIG_SIZE_LIMIT 1
......
......@@ -6,5 +6,5 @@
/* in the file PATENTS. All contributing project authors may */
/* be found in the AUTHORS file in the root of the source tree. */
#include "vpx/vpx_codec.h"
static const char* const cfg = "--target=x86-win32-vs12 --enable-external-build --enable-postproc --enable-multi-res-encoding --enable-temporal-denoising --enable-vp9-temporal-denoising --enable-vp9-postproc --size-limit=16384x16384 --enable-realtime-only --disable-install-docs --enable-pic --as=yasm";
static const char* const cfg = "--target=x86-win32-vs12 --enable-external-build --enable-postproc --enable-multi-res-encoding --enable-temporal-denoising --enable-vp9-temporal-denoising --enable-vp9-postproc --size-limit=16384x16384 --enable-realtime-only --disable-install-docs --enable-pic --as=yasm --enable-vp9-highbitdepth";
const char *vpx_codec_build_config(void) {return cfg;}
......@@ -81,7 +81,7 @@
#define CONFIG_TEMPORAL_DENOISING 1
#define CONFIG_VP9_TEMPORAL_DENOISING 1
#define CONFIG_COEFFICIENT_RANGE_CHECKING 0
#define CONFIG_VP9_HIGHBITDEPTH 0
#define CONFIG_VP9_HIGHBITDEPTH 1
#define CONFIG_BETTER_HW_COMPATIBILITY 0
#define CONFIG_EXPERIMENTAL 0
#define CONFIG_SIZE_LIMIT 1
......
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -69,7 +69,7 @@
%define CONFIG_TEMPORAL_DENOISING 1
%define CONFIG_VP9_TEMPORAL_DENOISING 1
%define CONFIG_COEFFICIENT_RANGE_CHECKING 0
%define CONFIG_VP9_HIGHBITDEPTH 0
%define CONFIG_VP9_HIGHBITDEPTH 1
%define CONFIG_BETTER_HW_COMPATIBILITY 0
%define CONFIG_EXPERIMENTAL 0
%define CONFIG_SIZE_LIMIT 1
......
......@@ -6,5 +6,5 @@
/* in the file PATENTS. All contributing project authors may */
/* be found in the AUTHORS file in the root of the source tree. */
#include "vpx/vpx_codec.h"
static const char* const cfg = "--target=x86_64-win64-vs12 --enable-external-build --enable-postproc --enable-multi-res-encoding --enable-temporal-denoising --enable-vp9-temporal-denoising --enable-vp9-postproc --size-limit=16384x16384 --enable-realtime-only --disable-install-docs --enable-pic --as=yasm";
static const char* const cfg = "--target=x86_64-win64-vs12 --enable-external-build --enable-postproc --enable-multi-res-encoding --enable-temporal-denoising --enable-vp9-temporal-denoising --enable-vp9-postproc --size-limit=16384x16384 --enable-realtime-only --disable-install-docs --enable-pic --as=yasm --enable-vp9-highbitdepth";
const char *vpx_codec_build_config(void) {return cfg;}
......@@ -81,7 +81,7 @@
#define CONFIG_TEMPORAL_DENOISING 1
#define CONFIG_VP9_TEMPORAL_DENOISING 1
#define CONFIG_COEFFICIENT_RANGE_CHECKING 0
#define CONFIG_VP9_HIGHBITDEPTH 0
#define CONFIG_VP9_HIGHBITDEPTH 1
#define CONFIG_BETTER_HW_COMPATIBILITY 0
#define CONFIG_EXPERIMENTAL 0
#define CONFIG_SIZE_LIMIT 1
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment