| /* |
| * Copyright (c) 2011 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. |
| */ |
| |
| // This sub-API supports the following functionalities: |
| // |
| // - Enables full duplex VoIP sessions via RTP using G.711 (mu-Law or A-Law). |
| // - Initialization and termination. |
| // - Trace information on text files or via callbacks. |
| // - Multi-channel support (mixing, sending to multiple destinations etc.). |
| // - Call setup (port and address) for receiving and sending sides. |
| // |
| // To support other codecs than G.711, the VoECodec sub-API must be utilized. |
| // |
| // Usage example, omitting error checking: |
| // |
| // using namespace webrtc; |
| // VoiceEngine* voe = VoiceEngine::Create(); |
| // VoEBase* base = VoEBase::GetInterface(voe); |
| // base->Init(); |
| // int ch = base->CreateChannel(); |
| // base->StartPlayout(ch); |
| // ... |
| // base->DeleteChannel(ch); |
| // base->Terminate(); |
| // base->Release(); |
| // VoiceEngine::Delete(voe); |
| // |
| #ifndef WEBRTC_VOICE_ENGINE_VOE_BASE_H |
| #define WEBRTC_VOICE_ENGINE_VOE_BASE_H |
| |
| #include "common_types.h" |
| |
| namespace webrtc { |
| |
| class AudioDeviceModule; |
| |
| const int kVoEDefault = -1; |
| |
| // VoiceEngineObserver |
| class WEBRTC_DLLEXPORT VoiceEngineObserver |
| { |
| public: |
| // This method will be called after the occurrence of any runtime error |
| // code, or warning notification, when the observer interface has been |
| // installed using VoEBase::RegisterVoiceEngineObserver(). |
| virtual void CallbackOnError(const int channel, const int errCode) = 0; |
| |
| protected: |
| virtual ~VoiceEngineObserver() {} |
| }; |
| |
| // VoiceEngine |
| class WEBRTC_DLLEXPORT VoiceEngine |
| { |
| public: |
| // Creates a VoiceEngine object, which can then be used to acquire |
| // sub-APIs. Returns NULL on failure. |
| static VoiceEngine* Create(); |
| |
| // Deletes a created VoiceEngine object and releases the utilized resources. |
| // If |ignoreRefCounters| is set to false, all reference counters must be |
| // zero to enable a valid release of the allocated resources. When set to |
| // true, a release of all resources allocated by the VoE is performed |
| // without checking the reference counter state. |
| static bool Delete(VoiceEngine*& voiceEngine, |
| bool ignoreRefCounters = false); |
| |
| // Specifies the amount and type of trace information which will be |
| // created by the VoiceEngine. |
| static int SetTraceFilter(const unsigned int filter); |
| |
| // Sets the name of the trace file and enables non-encrypted trace messages. |
| static int SetTraceFile(const char* fileNameUTF8, |
| const bool addFileCounter = false); |
| |
| // Installs the TraceCallback implementation to ensure that the user |
| // receives callbacks for generated trace messages. |
| static int SetTraceCallback(TraceCallback* callback); |
| |
| static int SetAndroidObjects(void* javaVM, void* env, void* context); |
| |
| protected: |
| VoiceEngine() {} |
| virtual ~VoiceEngine() {} |
| }; |
| |
| // VoEBase |
| class WEBRTC_DLLEXPORT VoEBase |
| { |
| public: |
| // Factory for the VoEBase sub-API. Increases an internal reference |
| // counter if successful. Returns NULL if the API is not supported or if |
| // construction fails. |
| static VoEBase* GetInterface(VoiceEngine* voiceEngine); |
| |
| // Releases the VoEBase sub-API and decreases an internal reference |
| // counter. Returns the new reference count. This value should be zero |
| // for all sub-API:s before the VoiceEngine object can be safely deleted. |
| virtual int Release() = 0; |
| |
| // Installs the observer class to enable runtime error control and |
| // warning notifications. |
| virtual int RegisterVoiceEngineObserver(VoiceEngineObserver& observer) = 0; |
| |
| // Removes and disables the observer class for runtime error control |
| // and warning notifications. |
| virtual int DeRegisterVoiceEngineObserver() = 0; |
| |
| // Initiates all common parts of the VoiceEngine; e.g. all |
| // encoders/decoders, the sound card and core receiving components. |
| // This method also makes it possible to install a user-defined |
| // external Audio Device Module (ADM) which implements all the audio |
| // layer functionality in a separate (reference counted) module. |
| virtual int Init(AudioDeviceModule* external_adm = NULL) = 0; |
| |
| // Terminates all VoiceEngine functions and releses allocated resources. |
| virtual int Terminate() = 0; |
| |
| // Retrieves the maximum number of channels that can be created. |
| virtual int MaxNumOfChannels() = 0; |
| |
| // Creates a new channel and allocates the required resources for it. |
| virtual int CreateChannel() = 0; |
| |
| // Deletes an existing channel and releases the utilized resources. |
| virtual int DeleteChannel(int channel) = 0; |
| |
| // Sets the local receiver port and address for a specified |
| // |channel| number. |
| virtual int SetLocalReceiver(int channel, int port, |
| int RTCPport = kVoEDefault, |
| const char ipAddr[64] = NULL, |
| const char multiCastAddr[64] = NULL) = 0; |
| |
| // Gets the local receiver port and address for a specified |
| // |channel| number. |
| virtual int GetLocalReceiver(int channel, int& port, int& RTCPport, |
| char ipAddr[64]) = 0; |
| |
| // Sets the destination port and address for a specified |channel| number. |
| virtual int SetSendDestination(int channel, int port, |
| const char ipAddr[64], |
| int sourcePort = kVoEDefault, |
| int RTCPport = kVoEDefault) = 0; |
| |
| // Gets the destination port and address for a specified |channel| number. |
| virtual int GetSendDestination(int channel, int& port, char ipAddr[64], |
| int& sourcePort, int& RTCPport) = 0; |
| |
| // Prepares and initiates the VoiceEngine for reception of |
| // incoming RTP/RTCP packets on the specified |channel|. |
| virtual int StartReceive(int channel) = 0; |
| |
| // Stops receiving incoming RTP/RTCP packets on the specified |channel|. |
| virtual int StopReceive(int channel) = 0; |
| |
| // Starts forwarding the packets to the mixer/soundcard for a |
| // specified |channel|. |
| virtual int StartPlayout(int channel) = 0; |
| |
| // Stops forwarding the packets to the mixer/soundcard for a |
| // specified |channel|. |
| virtual int StopPlayout(int channel) = 0; |
| |
| // Starts sending packets to an already specified IP address and |
| // port number for a specified |channel|. |
| virtual int StartSend(int channel) = 0; |
| |
| // Stops sending packets from a specified |channel|. |
| virtual int StopSend(int channel) = 0; |
| |
| // Gets the version information for VoiceEngine and its components. |
| virtual int GetVersion(char version[1024]) = 0; |
| |
| // Gets the last VoiceEngine error code. |
| virtual int LastError() = 0; |
| |
| |
| // Stops or resumes playout and transmission on a temporary basis. |
| virtual int SetOnHoldStatus(int channel, bool enable, |
| OnHoldModes mode = kHoldSendAndPlay) = 0; |
| |
| // Gets the current playout and transmission status. |
| virtual int GetOnHoldStatus(int channel, bool& enabled, |
| OnHoldModes& mode) = 0; |
| |
| // Sets the NetEQ playout mode for a specified |channel| number. |
| virtual int SetNetEQPlayoutMode(int channel, NetEqModes mode) = 0; |
| |
| // Gets the NetEQ playout mode for a specified |channel| number. |
| virtual int GetNetEQPlayoutMode(int channel, NetEqModes& mode) = 0; |
| |
| // Sets the NetEQ background noise mode for a specified |channel| number. |
| virtual int SetNetEQBGNMode(int channel, NetEqBgnModes mode) = 0; |
| |
| // Gets the NetEQ background noise mode for a specified |channel| number. |
| virtual int GetNetEQBGNMode(int channel, NetEqBgnModes& mode) = 0; |
| |
| protected: |
| VoEBase() {} |
| virtual ~VoEBase() {} |
| }; |
| |
| } // namespace webrtc |
| |
| #endif // WEBRTC_VOICE_ENGINE_VOE_BASE_H |