Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / third_party / webrtc / voice_engine / utility.h
index fcb4462..127bdba 100644 (file)
  *  Contains functions often used by different parts of VoiceEngine.
  */
 
-#ifndef WEBRTC_VOICE_ENGINE_UTILITY_H
-#define WEBRTC_VOICE_ENGINE_UTILITY_H
+#ifndef WEBRTC_VOICE_ENGINE_UTILITY_H_
+#define WEBRTC_VOICE_ENGINE_UTILITY_H_
 
+#include "webrtc/common_audio/resampler/include/push_resampler.h"
 #include "webrtc/typedefs.h"
-#include "webrtc/voice_engine/voice_engine_defines.h"
 
-namespace webrtc
-{
-
-class Module;
-
-namespace voe
-{
-
-class Utility
-{
-public:
-    static void MixWithSat(int16_t target[],
-                           int target_channel,
-                           const int16_t source[],
-                           int source_channel,
-                           int source_len);
-
-    static void MixSubtractWithSat(int16_t target[],
-                                   const int16_t source[],
-                                   uint16_t len);
-
-    static void MixAndScaleWithSat(int16_t target[],
-                                   const int16_t source[],
-                                   float scale,
-                                   uint16_t len);
-
-    static void Scale(int16_t vector[], float scale, uint16_t len);
-
-    static void ScaleWithSat(int16_t vector[],
-                             float scale,
-                             uint16_t len);
-};
+namespace webrtc {
+
+class AudioFrame;
+
+namespace voe {
+
+// Upmix or downmix and resample the audio in |src_frame| to |dst_frame|.
+// Expects |dst_frame| to have its |num_channels_| and |sample_rate_hz_| set to
+// the desired values. Updates |samples_per_channel_| accordingly.
+//
+// On failure, returns -1 and copies |src_frame| to |dst_frame|.
+void RemixAndResample(const AudioFrame& src_frame,
+                      PushResampler<int16_t>* resampler,
+                      AudioFrame* dst_frame);
+
+// Downmix and downsample the audio in |src_data| to |dst_af| as necessary,
+// specified by |codec_num_channels| and |codec_rate_hz|. |mono_buffer| is
+// temporary space and must be of sufficient size to hold the downmixed source
+// audio (recommend using a size of kMaxMonoDataSizeSamples).
+void DownConvertToCodecFormat(const int16_t* src_data,
+                              int samples_per_channel,
+                              int num_channels,
+                              int sample_rate_hz,
+                              int codec_num_channels,
+                              int codec_rate_hz,
+                              int16_t* mono_buffer,
+                              PushResampler<int16_t>* resampler,
+                              AudioFrame* dst_af);
+
+void MixWithSat(int16_t target[],
+                int target_channel,
+                const int16_t source[],
+                int source_channel,
+                int source_len);
 
 }  // namespace voe
-
 }  // namespace webrtc
 
-#endif  // WEBRTC_VOICE_ENGINE_UTILITY_H
+#endif  // WEBRTC_VOICE_ENGINE_UTILITY_H_