blob: 4c55f13f1becc5cac8a88575a6f610d798ef7718 [file] [log] [blame]
niklase@google.com470e71d2011-07-07 08:21:25 +00001/*
2 * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
3 *
4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
11// This sub-API supports the following functionalities:
12//
13// - External protocol support.
niklase@google.com470e71d2011-07-07 08:21:25 +000014// - Packet timeout notification.
15// - Dead-or-Alive connection observations.
niklase@google.com470e71d2011-07-07 08:21:25 +000016//
17// Usage example, omitting error checking:
18//
19// using namespace webrtc;
20// VoiceEngine* voe = VoiceEngine::Create();
21// VoEBase* base = VoEBase::GetInterface(voe);
22// VoENetwork* netw = VoENetwork::GetInterface(voe);
23// base->Init();
24// int ch = base->CreateChannel();
25// ...
26// netw->SetPeriodicDeadOrAliveStatus(ch, true);
27// ...
28// base->DeleteChannel(ch);
29// base->Terminate();
30// base->Release();
31// netw->Release();
32// VoiceEngine::Delete(voe);
33//
34#ifndef WEBRTC_VOICE_ENGINE_VOE_NETWORK_H
35#define WEBRTC_VOICE_ENGINE_VOE_NETWORK_H
36
pbos@webrtc.org956aa7e2013-05-21 13:52:32 +000037#include "webrtc/common_types.h"
niklase@google.com470e71d2011-07-07 08:21:25 +000038
39namespace webrtc {
40
41class VoiceEngine;
42
43// VoEConnectionObserver
44class WEBRTC_DLLEXPORT VoEConnectionObserver
45{
46public:
47 // This method will be called peridically and deliver dead-or-alive
48 // notifications for a specified |channel| when the observer interface
49 // has been installed and activated.
pbos@webrtc.org92135212013-05-14 08:31:39 +000050 virtual void OnPeriodicDeadOrAlive(int channel, bool alive) = 0;
niklase@google.com470e71d2011-07-07 08:21:25 +000051
52protected:
53 virtual ~VoEConnectionObserver() {}
54};
55
56// VoENetwork
57class WEBRTC_DLLEXPORT VoENetwork
58{
59public:
60 // Factory for the VoENetwork sub-API. Increases an internal
61 // reference counter if successful. Returns NULL if the API is not
62 // supported or if construction fails.
63 static VoENetwork* GetInterface(VoiceEngine* voiceEngine);
64
65 // Releases the VoENetwork sub-API and decreases an internal
66 // reference counter. Returns the new reference count. This value should
67 // be zero for all sub-API:s before the VoiceEngine object can be safely
68 // deleted.
69 virtual int Release() = 0;
70
71 // Installs and enables a user-defined external transport protocol for a
72 // specified |channel|.
73 virtual int RegisterExternalTransport(
74 int channel, Transport& transport) = 0;
75
76 // Removes and disables a user-defined external transport protocol for a
77 // specified |channel|.
78 virtual int DeRegisterExternalTransport(int channel) = 0;
79
80 // The packets received from the network should be passed to this
81 // function when external transport is enabled. Note that the data
82 // including the RTP-header must also be given to the VoiceEngine.
solenberg@webrtc.orgb1f50102014-03-24 10:38:25 +000083 virtual int ReceivedRTPPacket(int channel,
84 const void* data,
85 unsigned int length) = 0;
86 virtual int ReceivedRTPPacket(int channel,
87 const void* data,
88 unsigned int length,
89 const PacketTime& packet_time) {
90 return 0;
91 }
niklase@google.com470e71d2011-07-07 08:21:25 +000092
93 // The packets received from the network should be passed to this
94 // function when external transport is enabled. Note that the data
95 // including the RTCP-header must also be given to the VoiceEngine.
96 virtual int ReceivedRTCPPacket(
97 int channel, const void* data, unsigned int length) = 0;
98
niklase@google.com470e71d2011-07-07 08:21:25 +000099protected:
100 VoENetwork() {}
101 virtual ~VoENetwork() {}
102};
103
pbos@webrtc.orgd900e8b2013-07-03 15:12:26 +0000104} // namespace webrtc
niklase@google.com470e71d2011-07-07 08:21:25 +0000105
106#endif // WEBRTC_VOICE_ENGINE_VOE_NETWORK_H