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