1324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver// Copyright (c) 2012 The Chromium Authors. All rights reserved.
2324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver// Use of this source code is governed by a BSD-style license that can be
3324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver// found in the LICENSE file.
4324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
5324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver#ifndef MEDIA_BASE_VECTOR_MATH_TESTING_H_
6324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver#define MEDIA_BASE_VECTOR_MATH_TESTING_H_
7324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
8324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver#include <utility>
9324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
10324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver#include "build/build_config.h"
11324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver#include "media/base/media_export.h"
12324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
13324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruvernamespace media {
14324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruvernamespace vector_math {
15324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
16324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver// Optimized versions exposed for testing.  See vector_math.h for details.
17324c4644fee44b9898524c09511bd33c3f12e2dfBen GruverMEDIA_EXPORT void FMAC_C(const float src[], float scale, int len, float dest[]);
18324c4644fee44b9898524c09511bd33c3f12e2dfBen GruverMEDIA_EXPORT void FMUL_C(const float src[], float scale, int len, float dest[]);
19324c4644fee44b9898524c09511bd33c3f12e2dfBen GruverMEDIA_EXPORT std::pair<float, float> EWMAAndMaxPower_C(
20324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    float initial_value, const float src[], int len, float smoothing_factor);
21324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
22324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver#if defined(ARCH_CPU_X86_FAMILY) && !defined(OS_NACL)
23324c4644fee44b9898524c09511bd33c3f12e2dfBen GruverMEDIA_EXPORT void FMAC_SSE(const float src[], float scale, int len,
24324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                           float dest[]);
25324c4644fee44b9898524c09511bd33c3f12e2dfBen GruverMEDIA_EXPORT void FMUL_SSE(const float src[], float scale, int len,
26324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                           float dest[]);
27324c4644fee44b9898524c09511bd33c3f12e2dfBen GruverMEDIA_EXPORT std::pair<float, float> EWMAAndMaxPower_SSE(
28324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    float initial_value, const float src[], int len, float smoothing_factor);
29324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver#endif
30324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
31324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver#if defined(ARCH_CPU_ARM_FAMILY) && defined(USE_NEON)
32324c4644fee44b9898524c09511bd33c3f12e2dfBen GruverMEDIA_EXPORT void FMAC_NEON(const float src[], float scale, int len,
33324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                            float dest[]);
34324c4644fee44b9898524c09511bd33c3f12e2dfBen GruverMEDIA_EXPORT void FMUL_NEON(const float src[], float scale, int len,
35324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver                            float dest[]);
36324c4644fee44b9898524c09511bd33c3f12e2dfBen GruverMEDIA_EXPORT std::pair<float, float> EWMAAndMaxPower_NEON(
37324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    float initial_value, const float src[], int len, float smoothing_factor);
38324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver#endif
39324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
40324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver}  // namespace vector_math
41324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver}  // namespace media
42324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
43324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver#endif  // MEDIA_BASE_VECTOR_MATH_TESTING_H_
44324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver