Restructuring and removing neteq_tests.gypi according to project structure discussed with Andrew. We want to flatten out the hierarchy and minimize the number of GYP files.
I also fixed compilation on Mac (by enabling exceptions for the NetEqTestTools target). Executing the test fails on Mac, but I assume this is because it checks bit exactness, similar to the issue we had with audio_coding_module (see issue 114) Review URL: http://webrtc-codereview.appspot.com/255004 git-svn-id: http://webrtc.googlecode.com/svn/trunk@895 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
255
src/modules/audio_coding/neteq/mcu.h
Normal file
255
src/modules/audio_coding/neteq/mcu.h
Normal file
@@ -0,0 +1,255 @@
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
/*
|
||||
* MCU struct and functions related to the MCU side operations.
|
||||
*/
|
||||
|
||||
#ifndef MCU_H
|
||||
#define MCU_H
|
||||
|
||||
#include "typedefs.h"
|
||||
|
||||
#include "codec_db.h"
|
||||
#include "rtcp.h"
|
||||
#include "packet_buffer.h"
|
||||
#include "buffer_stats.h"
|
||||
#include "neteq_statistics.h"
|
||||
|
||||
#ifdef NETEQ_ATEVENT_DECODE
|
||||
#include "dtmf_buffer.h"
|
||||
#endif
|
||||
|
||||
#define MAX_ONE_DESC 5 /* cannot do more than this many consecutive one-descriptor decodings */
|
||||
#define MAX_LOSS_REPORT_PERIOD 60 /* number of seconds between auto-reset */
|
||||
|
||||
enum TsScaling
|
||||
{
|
||||
kTSnoScaling = 0,
|
||||
kTSscalingTwo,
|
||||
kTSscalingTwoThirds,
|
||||
kTSscalingFourThirds
|
||||
};
|
||||
|
||||
typedef struct
|
||||
{
|
||||
|
||||
WebRtc_Word16 current_Codec;
|
||||
WebRtc_Word16 current_Payload;
|
||||
WebRtc_UWord32 timeStamp; /* Next timestamp that should be played */
|
||||
WebRtc_Word16 millisecondsPerCall;
|
||||
WebRtc_UWord16 timestampsPerCall; /* Output chunk size */
|
||||
WebRtc_UWord16 fs;
|
||||
WebRtc_UWord32 ssrc; /* Current ssrc */
|
||||
WebRtc_Word16 new_codec;
|
||||
WebRtc_Word16 first_packet;
|
||||
|
||||
/* MCU/DSP Communication layer */
|
||||
WebRtc_Word16 *pw16_readAddress;
|
||||
WebRtc_Word16 *pw16_writeAddress;
|
||||
void *main_inst;
|
||||
|
||||
CodecDbInst_t codec_DB_inst; /* Information about all the codecs, i.e. which
|
||||
functions to use and which codpoints that
|
||||
have been assigned */
|
||||
SplitInfo_t PayloadSplit_inst; /* Information about how the current codec
|
||||
payload should be splitted */
|
||||
WebRtcNetEQ_RTCP_t RTCP_inst; /* RTCP statistics */
|
||||
PacketBuf_t PacketBuffer_inst; /* The packet buffer */
|
||||
BufstatsInst_t BufferStat_inst; /* Statistics that are used to make decision
|
||||
for what the DSP should perform */
|
||||
#ifdef NETEQ_ATEVENT_DECODE
|
||||
dtmf_inst_t DTMF_inst;
|
||||
#endif
|
||||
int NoOfExpandCalls;
|
||||
WebRtc_Word16 AVT_PlayoutOn;
|
||||
enum WebRtcNetEQPlayoutMode NetEqPlayoutMode;
|
||||
|
||||
WebRtc_Word16 one_desc; /* Number of times running on one desc */
|
||||
|
||||
WebRtc_UWord32 lostTS; /* Number of timestamps lost */
|
||||
WebRtc_UWord32 lastReportTS; /* Timestamp elapsed since last report was given */
|
||||
|
||||
WebRtc_UWord32 externalTS;
|
||||
WebRtc_UWord32 internalTS;
|
||||
WebRtc_Word16 TSscalingInitialized;
|
||||
enum TsScaling scalingFactor;
|
||||
|
||||
MCUStats_t statInst;
|
||||
|
||||
#ifdef NETEQ_STEREO
|
||||
int usingStereo;
|
||||
#endif
|
||||
|
||||
} MCUInst_t;
|
||||
|
||||
/****************************************************************************
|
||||
* WebRtcNetEQ_McuReset(...)
|
||||
*
|
||||
* Reset the MCU instance.
|
||||
*
|
||||
* Input:
|
||||
* - inst : MCU instance
|
||||
*
|
||||
* Return value : 0 - Ok
|
||||
* <0 - Error
|
||||
*/
|
||||
int WebRtcNetEQ_McuReset(MCUInst_t *inst);
|
||||
|
||||
/****************************************************************************
|
||||
* WebRtcNetEQ_ResetMcuInCallStats(...)
|
||||
*
|
||||
* Reset MCU-side statistics variables for the in-call statistics.
|
||||
*
|
||||
* Input:
|
||||
* - inst : MCU instance
|
||||
*
|
||||
* Return value : 0 - Ok
|
||||
* <0 - Error
|
||||
*/
|
||||
int WebRtcNetEQ_ResetMcuInCallStats(MCUInst_t *inst);
|
||||
|
||||
/****************************************************************************
|
||||
* WebRtcNetEQ_ResetMcuJitterStat(...)
|
||||
*
|
||||
* Reset MCU-side statistics variables for the post-call statistics.
|
||||
*
|
||||
* Input:
|
||||
* - inst : MCU instance
|
||||
*
|
||||
* Return value : 0 - Ok
|
||||
* <0 - Error
|
||||
*/
|
||||
int WebRtcNetEQ_ResetMcuJitterStat(MCUInst_t *inst);
|
||||
|
||||
/****************************************************************************
|
||||
* WebRtcNetEQ_McuAddressInit(...)
|
||||
*
|
||||
* Initializes MCU with read address and write address.
|
||||
*
|
||||
* Input:
|
||||
* - inst : MCU instance
|
||||
* - Data2McuAddress : Pointer to MCU address
|
||||
* - Data2DspAddress : Pointer to DSP address
|
||||
* - main_inst : Pointer to NetEQ main instance
|
||||
*
|
||||
* Return value : 0 - Ok
|
||||
* <0 - Error
|
||||
*/
|
||||
int WebRtcNetEQ_McuAddressInit(MCUInst_t *inst, void * Data2McuAddress,
|
||||
void * Data2DspAddress, void *main_inst);
|
||||
|
||||
/****************************************************************************
|
||||
* WebRtcNetEQ_McuSetFs(...)
|
||||
*
|
||||
* Initializes MCU with read address and write address.
|
||||
*
|
||||
* Input:
|
||||
* - inst : MCU instance
|
||||
* - fs_hz : Sample rate in Hz -- 8000, 16000, 32000, (48000)
|
||||
*
|
||||
* Return value : 0 - Ok
|
||||
* <0 - Error
|
||||
*/
|
||||
int WebRtcNetEQ_McuSetFs(MCUInst_t *inst, WebRtc_UWord16 fs_hz);
|
||||
|
||||
/****************************************************************************
|
||||
* WebRtcNetEQ_SignalMcu(...)
|
||||
*
|
||||
* Signal the MCU that data is available and ask for a RecOut decision.
|
||||
*
|
||||
* Input:
|
||||
* - inst : MCU instance
|
||||
*
|
||||
* Return value : 0 - Ok
|
||||
* <0 - Error
|
||||
*/
|
||||
int WebRtcNetEQ_SignalMcu(MCUInst_t *inst);
|
||||
|
||||
/****************************************************************************
|
||||
* WebRtcNetEQ_RecInInternal(...)
|
||||
*
|
||||
* This function inserts a packet into the jitter buffer.
|
||||
*
|
||||
* Input:
|
||||
* - MCU_inst : MCU instance
|
||||
* - RTPpacket : The RTP packet, parsed into NetEQ's internal RTP struct
|
||||
* - uw32_timeRec : Time stamp for the arrival of the packet (not RTP timestamp)
|
||||
*
|
||||
* Return value : 0 - Ok
|
||||
* -1 - Error
|
||||
*/
|
||||
|
||||
int WebRtcNetEQ_RecInInternal(MCUInst_t *MCU_inst, RTPPacket_t *RTPpacket,
|
||||
WebRtc_UWord32 uw32_timeRec);
|
||||
|
||||
/****************************************************************************
|
||||
* WebRtcNetEQ_RecInInternal(...)
|
||||
*
|
||||
* Split the packet according to split_inst and inserts the parts into
|
||||
* Buffer_inst.
|
||||
*
|
||||
* Input:
|
||||
* - MCU_inst : MCU instance
|
||||
* - RTPpacket : The RTP packet, parsed into NetEQ's internal RTP struct
|
||||
* - uw32_timeRec : Time stamp for the arrival of the packet (not RTP timestamp)
|
||||
*
|
||||
* Return value : 0 - Ok
|
||||
* -1 - Error
|
||||
*/
|
||||
int WebRtcNetEQ_SplitAndInsertPayload(RTPPacket_t *packet, PacketBuf_t *Buffer_inst,
|
||||
SplitInfo_t *split_inst, WebRtc_Word16 *flushed);
|
||||
|
||||
/****************************************************************************
|
||||
* WebRtcNetEQ_GetTimestampScaling(...)
|
||||
*
|
||||
* Update information about timestamp scaling for a payload type
|
||||
* in MCU_inst->scalingFactor.
|
||||
*
|
||||
* Input:
|
||||
* - MCU_inst : MCU instance
|
||||
* - rtpPayloadType : RTP payload number
|
||||
*
|
||||
* Return value : 0 - Ok
|
||||
* -1 - Error
|
||||
*/
|
||||
|
||||
int WebRtcNetEQ_GetTimestampScaling(MCUInst_t *MCU_inst, int rtpPayloadType);
|
||||
|
||||
/****************************************************************************
|
||||
* WebRtcNetEQ_ScaleTimestampExternalToInternal(...)
|
||||
*
|
||||
* Convert from external to internal timestamp using current scaling info.
|
||||
*
|
||||
* Input:
|
||||
* - MCU_inst : MCU instance
|
||||
* - externalTS : External timestamp
|
||||
*
|
||||
* Return value : Internal timestamp
|
||||
*/
|
||||
|
||||
WebRtc_UWord32 WebRtcNetEQ_ScaleTimestampExternalToInternal(const MCUInst_t *MCU_inst,
|
||||
WebRtc_UWord32 externalTS);
|
||||
|
||||
/****************************************************************************
|
||||
* WebRtcNetEQ_ScaleTimestampInternalToExternal(...)
|
||||
*
|
||||
* Convert from external to internal timestamp using current scaling info.
|
||||
*
|
||||
* Input:
|
||||
* - MCU_inst : MCU instance
|
||||
* - externalTS : Internal timestamp
|
||||
*
|
||||
* Return value : External timestamp
|
||||
*/
|
||||
|
||||
WebRtc_UWord32 WebRtcNetEQ_ScaleTimestampInternalToExternal(const MCUInst_t *MCU_inst,
|
||||
WebRtc_UWord32 internalTS);
|
||||
#endif
|
||||
Reference in New Issue
Block a user