📄 jb.h
字号:
/********************************************************************20**
Name: Jitter Buffer
Type: C include file
Desc: Defines required by Jitter Buffer
File: jb.h
Sid: jb.h 1.0 - 01/21/2000
Prg: sdg
Revision History
09/27/2000 RFG Changed JB_G729_FRAME_SIZE to 30
Changed JB_G729_CODEC_INTERVAL to 3
************************************************************************/
#ifndef __JBH__
#define __JBH__
#include <vector.h>
#ifndef INCLUDE_RV_RTP
#include "RtpPacket.h"
#include "RtpManager.h"
#else
#include "rvrtp.h"
#include "rvwpt.h"
#endif
/***********************************************************************
defines related to codecs
***********************************************************************/
typedef enum coderInfo
{
JB_G711,
JB_G722,
JB_G723,
/* slm: MR3580 add support for G726-32 (T8300 only) */
JB_G726_32,
JB_G729,
JB_NUM_CODERS
} CoderInfo;
#define JB_10MS_TIMESTAMP 80 /* RTP timestamp for one 10ms interval */
/* slm: MR8849 change RAW FRAME definition for G711/G722/G726 to be for 1ms (not 10ms)
** this is required to interop with terminals that encode in non-multiples of 10ms */
#define JB_G711_RAW_FRAME_SIZE 8 /* size of 1ms g711 samples (size is negotiated per ms) */
#define JB_G722_RAW_FRAME_SIZE 8 /* size of 1ms g722 samples (size is negotiated per ms) */
#define JB_G723_6_RAW_FRAME_SIZE 24 /* size of a single 30ms g723 6.3kbps frame */
#define JB_G723_5_RAW_FRAME_SIZE 20 /* size of a single 30ms g723 5.3kbps frame */
/* slm: MR3327 add support for G723 SID frame */
#define JB_G723_SID_RAW_FRAME_SIZE 4 /* size of a single g723 Silence frame */
/* slm: MR3580 add support for G726-32 (T8300 only) */
#define JB_G726_32_RAW_FRAME_SIZE 4 /* size of 1ms g726 32kbps samples (size is negotiated per ms) */
#define JB_G729_RAW_FRAME_SIZE 10 /* size of a single 10ms g729 frame */
/* slm: MR4213 add support for variable rates */
#define JB_G723_MS_PER_FRAME 30
#define JB_G729_MS_PER_FRAME 10
/* GTC - milliseconds per frame for the other codecs */
#define JB_G711_MS_PER_FRAME 10
#define JB_G722_MS_PER_FRAME 10
#define JB_G726_32_MS_PER_FRAME 10
#define JB_MAX_MS 120 /* maximum number of millisecs jb will hold (in 10ms steps) */
#define JB_MAX_BUF_SIZE (JB_G711_RAW_FRAME_SIZE * JB_MAX_MS)
#define JB_G723_MAX_FRAMES (JB_MAX_MS / JB_G723_MS_PER_FRAME)
#define JB_G729_MAX_FRAMES (JB_MAX_MS / JB_G729_MS_PER_FRAME)
#define JB_G711_MAX_MS (JB_MAX_MS)
#define JB_G722_MAX_MS (JB_MAX_MS)
#define JB_G726_32_MAX_MS (JB_MAX_MS)
/***********************************************************************
macros for jb_utl.c
***********************************************************************/
#define MULTPERCENT(val, percent) \
(U16)(((U32)(val)*(U32)percent*(U32)656)>>16)
#define GETRAWFRAMESIZE(Codec, frameSize) \
switch (Codec) \
{ \
case JB_G711: \
frameSize = JB_G711_RAW_FRAME_SIZE; \
break; \
case JB_G722: \
frameSize = JB_G722_RAW_FRAME_SIZE; \
break; \
case JB_G723: \
frameSize = JB_G723_6_RAW_FRAME_SIZE; \
break; \
case JB_G726_32: \
frameSize = JB_G726_32_RAW_FRAME_SIZE; \
break; \
case JB_G729: \
frameSize = JB_G729_RAW_FRAME_SIZE; \
break; \
}
#ifdef DEBUG_JB
#define JBSTATE(targetstate) \
{ \
extern int jbstate_print; \
char *fromState, *toState; \
switch (targetstate) \
{ \
case JB_UNDERFLOW_LONG_SILENCE: \
toState = "JB_UNDERFLOW_LONG_SILENCE"; \
break; \
case JB_ACTIVE_HOLD: \
toState = "JB_ACTIVE_HOLD"; \
break; \
case JB_ACTIVE_PLAY: \
toState = "JB_ACTIVE_PLAY"; \
break; \
case JB_UNDERFLOW: \
toState = "JB_UNDERFLOW"; \
break; \
} \
switch (connCb->jitter.state) \
{ \
case JB_UNDERFLOW_LONG_SILENCE: \
fromState = "JB_UNDERFLOW_LONG_SILENCE"; \
break; \
case JB_ACTIVE_HOLD: \
fromState = "JB_ACTIVE_HOLD"; \
break; \
case JB_ACTIVE_PLAY: \
fromState = "JB_ACTIVE_PLAY"; \
break; \
case JB_UNDERFLOW: \
fromState = "JB_UNDERFLOW";\
break; \
} \
if( jbstate_print ) \
printf("State changed from %s to %s\n", fromState, toState); \
} \
connCb->jitter.state = targetstate;
#else /* DEBUG_JB */
#define JBSTATE(targetstate) \
connCb->jitter.state = targetstate;
#endif /* DEBUG_JB */
/***********************************************************************
general defines
***********************************************************************/
typedef enum configType
{
GEN=0,
JIT
} ConfigType;
typedef enum statsType
{
CB=0,
CONN
} StatsType;
typedef enum jbState
{
JB_UNDERFLOW_LONG_SILENCE=0,
JB_ACTIVE_HOLD,
JB_ACTIVE_PLAY,
JB_UNDERFLOW
} JbState;
typedef enum jbEvent
{
JB_RECEIVE_PACKET=0,
JB_PLAY_PACKET,
JB_LONG_SILENCE
} JbEvent;
#define NMB_JB_EVNT 3
#define NMB_JB_ST 4
#define JB_TQSIZE 128
//#ifndef SS_VW
//#define JB_DEFAULT_TIMER_RES 10 /* 1s */
//#else
//#define JB_DEFAULT_TIMER_RES 1 /* 100ms */
//#endif
#define JB_DEFAULT_TIMER_RES 1 /* 100ms */
/* slm: MR8849 add define for max lines */
#define JB_MAX_LINENUMS 4
#define MAX_RTP_SESSION JB_MAX_LINENUMS
#define NULLTCSPAUSE 0x800 /* Transmitter is paused due to 3rd-pty pause/transfer function */
#define NULLP 0 /* null pointer */
#define JB_MAX_TICKS 50
/* Unused function parameter macro */
#ifdef UNUSED
#undef UNUSED
#define UNUSED(x) (x=x)
#else
#define UNUSED(x) (x=x)
#endif /* UNUSED */
#ifdef MAX
#undef MAX
#define MAX(x, y) ((x) > (y) ? (x) : (y)) /* get maximum value */
#else
#define MAX(x, y) ((x) > (y) ? (x) : (y)) /* get maximum value */
#endif /* MAX */
#ifdef PUBLIC
#undef PUBLIC
#define PUBLIC /* public is c default scope */
#else /* not PUBLIC */
#define PUBLIC
#endif /* PUBLIC */
#ifdef PRIVATE
#undef PRIVATE
#define PRIVATE static /* private is c static scope */
#else /* not PRIVATE */
#define PRIVATE static /* private is c static scope */
#endif /* PRIVATE */
#ifdef EXTERN
#undef EXTERN
#define EXTERN extern
#else /* not EXTERN */
#define EXTERN extern
#endif /* EXTERN */
typedef char S8; /* signed - 8 bits */
typedef unsigned char U8;
typedef unsigned char Bool; /* boolean */
typedef short S16; /* signed - 16 bits */
typedef unsigned short U16;
typedef int S32;
typedef unsigned int U32;
typedef U8 Data; /* data */
typedef U32 Ticks; /* system clock ticks */
typedef void Void; /* void */
typedef U32 PTR; /* pointer */
typedef struct dspBuffer
{
U8 * putBuffer;
U32 bufLen;
U32 frames;
}DSPBuffer;
#ifndef INCLUDE_RV_RTP
typedef RtpPacket HrRtpHdr;
#else
class HrRtpHdr
{
public:
HrRtpHdr()
{
_header = NULL;
_payloadSize = 0;
_payloadUsage = 0;
_sequence = 0;
}
HrRtpHdr(rtpParam* param)
{
_header = param;
_payloadSize = param->len - param->sByte;
_payloadUsage = param->len - param->sByte;
_sequence = param->sequenceNumber;
}
int getPayloadUsage(){return _payloadUsage;}
void setPayloadUsage(int size){_payloadUsage = size;}
int getPayloadSize(){return _payloadSize;}
int getSequence(){return _sequence;}
rtpParam* getHeader(){return _header;}
private:
rtpParam* _header;
int _payloadUsage;
int _payloadSize;
int _sequence;
};
extern CallInfo wpCallInfo[];
#endif
#define RETVALUE(v) return(v);
#define TRC3(a) printf(#a "\n");
#define ARGS(a) a
#define ROK 0 /* ok */
#define RFAILED 1 /* failed, general */
/*
* The following is needed so that Core Trillium header files are not
* required to be included in a non-source release
*/
/* Audio/video application profile--standard payload types */
#define RTP_PT_PCMU 0 /* G.711 (ulaw) (8000 Hz) */
#define RTP_PT_1016 1 /* 1016 (8000 Hz) */
#define RTP_PT_G726_32 2 /* G.726-32 (8000 Hz) */
#define RTP_PT_GSM 3 /* GSM (8000 Hz) */
#define RTP_PT_G723 4 /* G.723 (8000 Hz) */
#define RTP_PT_DVI4_8000 5 /* DVI4 (8000 Hz) */
#define RTP_PT_DVI4_16000 6 /* DVI4 (16000 Hz) */
#define RTP_PT_LPC 7 /* LPC (8000 Hz) */
#define RTP_PT_PCMA 8 /* G.711 (alaw) (8000 Hz) */
#define RTP_PT_G722 9 /* G.722 (16000 Hz) */
#define RTP_PT_L16_2 10 /* Linear 16 (2 ch) (44100 Hz) */
#define RTP_PT_L16_1 11 /* Linear 16 (1 ch) (44100 Hz) */
#define RTP_PT_QCELP 12 /* QCELP (8000 Hz) */
#define RTP_PT_MPA 14 /* MPEG-1/MPEG-2 (90000 Hz) */
#define RTP_PT_G728 15 /* G.728 (8000 Hz) */
#define RTP_PT_DVI4_11025 16 /* DVI4 (11025 Hz) */
#define RTP_PT_DVI4_22050 17 /* DVI4 (22050 Hz) */
#define RTP_PT_G729 18 /* G.729 (8000 Hz) */
#define RTP_PT_CN 19 /* Comfort Noise (8000 Hz) */
#define RTP_PT_CELB 25 /* Cell-B (90000 Hz) */
#define RTP_PT_JPEG 26 /* JPEG (90000 Hz) */
#define RTP_PT_NV 28 /* nv (90000 Hz) */
#define RTP_PT_H261 31 /* H.261 (90000 Hz) */
#define RTP_PT_MPV 32 /* MPEG-1/MPEG-2 (90000 Hz) */
#define RTP_PT_MP2T 33 /* MPEG-2 transport (90000 Hz) */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -