Move src/ -> webrtc/

TBR=niklas.enbom@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/915006

git-svn-id: http://webrtc.googlecode.com/svn/trunk/webrtc@2963 4adac7df-926f-26a2-2b94-8c16560cd09d
diff --git a/voice_engine/shared_data.h b/voice_engine/shared_data.h
new file mode 100644
index 0000000..191e369
--- /dev/null
+++ b/voice_engine/shared_data.h
@@ -0,0 +1,90 @@
+/*
+ *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#ifndef WEBRTC_VOICE_ENGINE_SHARED_DATA_H
+#define WEBRTC_VOICE_ENGINE_SHARED_DATA_H
+
+#include "voice_engine_defines.h"
+
+#include "channel_manager.h"
+#include "statistics.h"
+#include "process_thread.h"
+
+#include "audio_device.h"
+#include "audio_processing.h"
+
+class ProcessThread;
+
+namespace webrtc {
+class CriticalSectionWrapper;
+
+namespace voe {
+
+class TransmitMixer;
+class OutputMixer;
+
+class SharedData
+{
+public:
+    // Public accessors.
+    WebRtc_UWord32 instance_id() const { return _instanceId; }
+    Statistics& statistics() { return _engineStatistics; }
+    ChannelManager& channel_manager() { return _channelManager; }
+    AudioDeviceModule* audio_device() { return _audioDevicePtr; }
+    void set_audio_device(AudioDeviceModule* audio_device);
+    AudioProcessing* audio_processing() { return _audioProcessingModulePtr; }
+    void set_audio_processing(AudioProcessing* audio_processing);
+    TransmitMixer* transmit_mixer() { return _transmitMixerPtr; }
+    OutputMixer* output_mixer() { return _outputMixerPtr; }
+    CriticalSectionWrapper* crit_sec() { return _apiCritPtr; }
+    bool ext_recording() const { return _externalRecording; }
+    void set_ext_recording(bool value) { _externalRecording = value; }
+    bool ext_playout() const { return _externalPlayout; }
+    void set_ext_playout(bool value) { _externalPlayout = value; }
+    ProcessThread* process_thread() { return _moduleProcessThreadPtr; }
+    AudioDeviceModule::AudioLayer audio_device_layer() const {
+      return _audioDeviceLayer;
+    }
+    void set_audio_device_layer(AudioDeviceModule::AudioLayer layer) {
+      _audioDeviceLayer = layer;
+    }
+
+    WebRtc_UWord16 NumOfSendingChannels();
+
+    // Convenience methods for calling statistics().SetLastError().
+    void SetLastError(const WebRtc_Word32 error) const;
+    void SetLastError(const WebRtc_Word32 error, const TraceLevel level) const;
+    void SetLastError(const WebRtc_Word32 error, const TraceLevel level,
+                      const char* msg) const;
+
+protected:
+    const WebRtc_UWord32 _instanceId;
+    CriticalSectionWrapper* _apiCritPtr;
+    ChannelManager _channelManager;
+    Statistics _engineStatistics;
+    AudioDeviceModule* _audioDevicePtr;
+    OutputMixer* _outputMixerPtr;
+    TransmitMixer* _transmitMixerPtr;
+    AudioProcessing* _audioProcessingModulePtr;
+    ProcessThread* _moduleProcessThreadPtr;
+
+    bool _externalRecording;
+    bool _externalPlayout;
+
+    AudioDeviceModule::AudioLayer _audioDeviceLayer;
+
+    SharedData();
+    virtual ~SharedData();
+};
+
+} //  namespace voe
+
+} //  namespace webrtc
+#endif // WEBRTC_VOICE_ENGINE_SHARED_DATA_H