| /* |
| * 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. |
| */ |
| |
| /* |
| * Packet buffer for DTMF messages. |
| */ |
| |
| #ifndef DTMF_BUFFER_H |
| #define DTMF_BUFFER_H |
| |
| #include "typedefs.h" |
| |
| #include "neteq_defines.h" |
| |
| /* Include this code only if ATEVENT (DTMF) is defined in */ |
| #ifdef NETEQ_ATEVENT_DECODE |
| |
| #define MAX_DTMF_QUEUE_SIZE 4 |
| |
| typedef struct dtmf_inst_t_ |
| { |
| WebRtc_Word16 MaxPLCtime; |
| WebRtc_Word16 CurrentPLCtime; |
| WebRtc_Word16 EventQueue[MAX_DTMF_QUEUE_SIZE]; |
| WebRtc_Word16 EventQueueVolume[MAX_DTMF_QUEUE_SIZE]; |
| WebRtc_Word16 EventQueueEnded[MAX_DTMF_QUEUE_SIZE]; |
| WebRtc_UWord32 EventQueueStartTime[MAX_DTMF_QUEUE_SIZE]; |
| WebRtc_UWord32 EventQueueEndTime[MAX_DTMF_QUEUE_SIZE]; |
| WebRtc_Word16 EventBufferSize; |
| WebRtc_Word16 framelen; |
| } dtmf_inst_t; |
| |
| /**************************************************************************** |
| * WebRtcNetEQ_DtmfDecoderInit(...) |
| * |
| * This function initializes a DTMF instance. |
| * |
| * Input: |
| * - DTMF_decinst_t : DTMF instance |
| * - fs : The sample rate used for the DTMF |
| * - MaxPLCtime : Maximum length for a PLC before zeros should be inserted |
| * |
| * Return value : 0 - Ok |
| * -1 - Error |
| */ |
| |
| WebRtc_Word16 WebRtcNetEQ_DtmfDecoderInit(dtmf_inst_t *DTMFdec_inst, WebRtc_UWord16 fs, |
| WebRtc_Word16 MaxPLCtime); |
| |
| /**************************************************************************** |
| * WebRtcNetEQ_DtmfInsertEvent(...) |
| * |
| * This function decodes a packet with DTMF frames. |
| * |
| * Input: |
| * - DTMFdec_inst : DTMF instance |
| * - encoded : Encoded DTMF frame(s) |
| * - len : Bytes in encoded vector |
| * |
| * |
| * Return value : 0 - Ok |
| * -1 - Error |
| */ |
| |
| WebRtc_Word16 WebRtcNetEQ_DtmfInsertEvent(dtmf_inst_t *DTMFdec_inst, |
| const WebRtc_Word16 *encoded, WebRtc_Word16 len, |
| WebRtc_UWord32 timeStamp); |
| |
| /**************************************************************************** |
| * WebRtcNetEQ_DtmfDecode(...) |
| * |
| * This function decodes a packet with DTMF frame(s). Output will be the |
| * event that should be played for next 10 ms. |
| * |
| * Input: |
| * - DTMFdec_inst : DTMF instance |
| * - currTimeStamp : The current playout timestamp |
| * |
| * Output: |
| * - event : Event number to be played |
| * - volume : Event volume to be played |
| * |
| * Return value : >0 - There is a event to be played |
| * 0 - No event to be played |
| * -1 - Error |
| */ |
| |
| WebRtc_Word16 WebRtcNetEQ_DtmfDecode(dtmf_inst_t *DTMFdec_inst, WebRtc_Word16 *event, |
| WebRtc_Word16 *volume, WebRtc_UWord32 currTimeStamp); |
| |
| #endif /* NETEQ_ATEVENT_DECODE */ |
| |
| #endif /* DTMF_BUFFER_H */ |
| |