Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(95)

Side by Side Diff: webrtc/api/dtmfsender.h

Issue 2514883002: Create //webrtc/api:libjingle_peerconnection_api + refactorings. (Closed)
Patch Set: Rebase Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « webrtc/api/datachannel_unittest.cc ('k') | webrtc/api/dtmfsender.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 /*
2 * Copyright 2012 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 #ifndef WEBRTC_API_DTMFSENDER_H_
12 #define WEBRTC_API_DTMFSENDER_H_
13
14 #include <string>
15
16 #include "webrtc/api/dtmfsenderinterface.h"
17 #include "webrtc/api/mediastreaminterface.h"
18 #include "webrtc/api/proxy.h"
19 #include "webrtc/base/common.h"
20 #include "webrtc/base/constructormagic.h"
21 #include "webrtc/base/messagehandler.h"
22 #include "webrtc/base/refcount.h"
23
24 // DtmfSender is the native implementation of the RTCDTMFSender defined by
25 // the WebRTC W3C Editor's Draft.
26 // http://dev.w3.org/2011/webrtc/editor/webrtc.html
27
28 namespace rtc {
29 class Thread;
30 }
31
32 namespace webrtc {
33
34 // This interface is called by DtmfSender to talk to the actual audio channel
35 // to send DTMF.
36 class DtmfProviderInterface {
37 public:
38 // Returns true if the audio track with given id (|track_id|) is capable
39 // of sending DTMF. Otherwise returns false.
40 virtual bool CanInsertDtmf(const std::string& track_id) = 0;
41 // Sends DTMF |code| via the audio track with given id (|track_id|).
42 // The |duration| indicates the length of the DTMF tone in ms.
43 // Returns true on success and false on failure.
44 virtual bool InsertDtmf(const std::string& track_id,
45 int code, int duration) = 0;
46 // Returns a |sigslot::signal0<>| signal. The signal should fire before
47 // the provider is destroyed.
48 virtual sigslot::signal0<>* GetOnDestroyedSignal() = 0;
49
50 protected:
51 virtual ~DtmfProviderInterface() {}
52 };
53
54 class DtmfSender
55 : public DtmfSenderInterface,
56 public sigslot::has_slots<>,
57 public rtc::MessageHandler {
58 public:
59 static rtc::scoped_refptr<DtmfSender> Create(
60 AudioTrackInterface* track,
61 rtc::Thread* signaling_thread,
62 DtmfProviderInterface* provider);
63
64 // Implements DtmfSenderInterface.
65 void RegisterObserver(DtmfSenderObserverInterface* observer) override;
66 void UnregisterObserver() override;
67 bool CanInsertDtmf() override;
68 bool InsertDtmf(const std::string& tones,
69 int duration,
70 int inter_tone_gap) override;
71 const AudioTrackInterface* track() const override;
72 std::string tones() const override;
73 int duration() const override;
74 int inter_tone_gap() const override;
75
76 protected:
77 DtmfSender(AudioTrackInterface* track,
78 rtc::Thread* signaling_thread,
79 DtmfProviderInterface* provider);
80 virtual ~DtmfSender();
81
82 private:
83 DtmfSender();
84
85 // Implements MessageHandler.
86 void OnMessage(rtc::Message* msg) override;
87
88 // The DTMF sending task.
89 void DoInsertDtmf();
90
91 void OnProviderDestroyed();
92
93 void StopSending();
94
95 rtc::scoped_refptr<AudioTrackInterface> track_;
96 DtmfSenderObserverInterface* observer_;
97 rtc::Thread* signaling_thread_;
98 DtmfProviderInterface* provider_;
99 std::string tones_;
100 int duration_;
101 int inter_tone_gap_;
102
103 RTC_DISALLOW_COPY_AND_ASSIGN(DtmfSender);
104 };
105
106 // Define proxy for DtmfSenderInterface.
107 BEGIN_SIGNALING_PROXY_MAP(DtmfSender)
108 PROXY_SIGNALING_THREAD_DESTRUCTOR()
109 PROXY_METHOD1(void, RegisterObserver, DtmfSenderObserverInterface*)
110 PROXY_METHOD0(void, UnregisterObserver)
111 PROXY_METHOD0(bool, CanInsertDtmf)
112 PROXY_METHOD3(bool, InsertDtmf, const std::string&, int, int)
113 PROXY_CONSTMETHOD0(const AudioTrackInterface*, track)
114 PROXY_CONSTMETHOD0(std::string, tones)
115 PROXY_CONSTMETHOD0(int, duration)
116 PROXY_CONSTMETHOD0(int, inter_tone_gap)
117 END_PROXY_MAP()
118
119 // Get DTMF code from the DTMF event character.
120 bool GetDtmfCode(char tone, int* code);
121
122 } // namespace webrtc
123
124 #endif // WEBRTC_API_DTMFSENDER_H_
OLDNEW
« no previous file with comments | « webrtc/api/datachannel_unittest.cc ('k') | webrtc/api/dtmfsender.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698