1b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org/*
2b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
3b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *
4b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *  Use of this source code is governed by a BSD-style license
5b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *  that can be found in the LICENSE file in the root of the source
6b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *  tree. An additional intellectual property rights grant can be found
7b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *  in the file PATENTS.  All contributing project authors may
8b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *  be found in the AUTHORS file in the root of the source tree.
9b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org */
10b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#ifndef VOICE_ENGINE_MAIN_TEST_AUTO_TEST_FAKE_MEDIA_PROCESS_H_
11b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define VOICE_ENGINE_MAIN_TEST_AUTO_TEST_FAKE_MEDIA_PROCESS_H_
12b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
133f45c2e0ac4cb280f941efa3a3476895795e3dd6pbos@webrtc.org#include <math.h>
14b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
15b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgclass FakeMediaProcess : public webrtc::VoEMediaProcess {
16b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org public:
176a4acb9ec855d75fc9d23e4111f319396403647apbos@webrtc.org  FakeMediaProcess() : frequency(0) {}
18ca7a9a2696d2f73f543241093c4faeb4c608678cpbos@webrtc.org  virtual void Process(int channel,
19b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                       const webrtc::ProcessingTypes type,
2054f03bc96c30337a3a97af7262cfb5148063b162pbos@webrtc.org                       int16_t audio_10ms[],
21ca7a9a2696d2f73f543241093c4faeb4c608678cpbos@webrtc.org                       int length,
22ca7a9a2696d2f73f543241093c4faeb4c608678cpbos@webrtc.org                       int sampling_freq_hz,
23ca7a9a2696d2f73f543241093c4faeb4c608678cpbos@webrtc.org                       bool stereo) {
24b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    for (int i = 0; i < length; i++) {
25b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org      if (!stereo) {
2654f03bc96c30337a3a97af7262cfb5148063b162pbos@webrtc.org        audio_10ms[i] = static_cast<int16_t>(audio_10ms[i] *
27b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            sin(2.0 * 3.14 * frequency * 400.0 / sampling_freq_hz));
28b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org      } else {
29b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        // Interleaved stereo.
3054f03bc96c30337a3a97af7262cfb5148063b162pbos@webrtc.org        audio_10ms[2 * i] = static_cast<int16_t> (
31b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            audio_10ms[2 * i] * sin(2.0 * 3.14 *
32b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                frequency * 400.0 / sampling_freq_hz));
3354f03bc96c30337a3a97af7262cfb5148063b162pbos@webrtc.org        audio_10ms[2 * i + 1] = static_cast<int16_t> (
34b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            audio_10ms[2 * i + 1] * sin(2.0 * 3.14 *
35b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                frequency * 400.0 / sampling_freq_hz));
36b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org      }
37b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org      frequency++;
38b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
39b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org  }
40b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
41b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org private:
42b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org  int frequency;
43b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org};
44b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
45b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#endif  // VOICE_ENGINE_MAIN_TEST_AUTO_TEST_FAKE_MEDIA_PROCESS_H_
46