1 /*
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 #ifndef WEBRTC_MODULES_RTP_RTCP_SOURCE_DTMF_QUEUE_H_
12 #define WEBRTC_MODULES_RTP_RTCP_SOURCE_DTMF_QUEUE_H_
13 
14 #include "webrtc/modules/rtp_rtcp/source/rtp_rtcp_config.h"
15 #include "webrtc/system_wrappers/include/critical_section_wrapper.h"
16 #include "webrtc/typedefs.h"
17 
18 namespace webrtc {
19 class DTMFqueue {
20  public:
21   DTMFqueue();
22   virtual ~DTMFqueue();
23 
24   int32_t AddDTMF(uint8_t dtmf_key, uint16_t len, uint8_t level);
25   int8_t NextDTMF(uint8_t* dtmf_key, uint16_t* len, uint8_t* level);
26   bool PendingDTMF();
27   void ResetDTMF();
28 
29  private:
30   CriticalSectionWrapper* dtmf_critsect_;
31   uint8_t next_empty_index_;
32   uint8_t dtmf_key_[DTMF_OUTBAND_MAX];
33   uint16_t dtmf_length[DTMF_OUTBAND_MAX];
34   uint8_t dtmf_level_[DTMF_OUTBAND_MAX];
35 };
36 }  // namespace webrtc
37 
38 #endif  // WEBRTC_MODULES_RTP_RTCP_SOURCE_DTMF_QUEUE_H_
39