|
|
@ -42,35 +42,84 @@ extern "C" |
|
|
|
{ |
|
|
|
#endif |
|
|
|
|
|
|
|
#define RTP_TYPE_GSM 3 |
|
|
|
#define RTP_TYPE_L16 10 |
|
|
|
#define RTP_TYPE_L16MONO 11 |
|
|
|
#define RTP_TYPE_MPA 14 |
|
|
|
#define RTP_TYPE_MPV 32 |
|
|
|
#define RTP_TYPE_PCMU 0 |
|
|
|
/* Reserved 1 */ |
|
|
|
/* Reserved 2 */ |
|
|
|
#define RTP_TYPE_GSM 3 |
|
|
|
#define RTP_TYPE_G723 4 |
|
|
|
#define RTP_TYPE_DVI4_8000 5 |
|
|
|
#define RTP_TYPE_DVI4_16000 6 |
|
|
|
#define RTP_TYPE_LPC 7 |
|
|
|
#define RTP_TYPE_PCMA 8 |
|
|
|
#define RTP_TYPE_G722 9 |
|
|
|
#define RTP_TYPE_L16 10 |
|
|
|
#define RTP_TYPE_L16MONO 11 |
|
|
|
#define RTP_TYPE_QCELP 12 |
|
|
|
#define RTP_TYPE_CN 13 |
|
|
|
#define RTP_TYPE_MPA 14 |
|
|
|
#define RTP_TYPE_G728 15 |
|
|
|
#define RTP_TYPE_DVI4_11025 16 |
|
|
|
#define RTP_TYPE_DVI4_22050 17 |
|
|
|
#define RTP_TYPE_G729 18 |
|
|
|
/* Reserved 19 */ |
|
|
|
/* Unassigned 20 */ |
|
|
|
/* Unassigned 21 */ |
|
|
|
/* Unassigned 22 */ |
|
|
|
/* Unassigned 23 */ |
|
|
|
/* Unassigned 24 */ |
|
|
|
#define RTP_TYPE_CELB 25 |
|
|
|
#define RTP_TYPE_JPEG 26 |
|
|
|
/* Unassigned 27 */ |
|
|
|
#define RTP_TYPE_NV 28 |
|
|
|
/* Unassigned 29 */ |
|
|
|
/* Unassigned 30 */ |
|
|
|
#define RTP_TYPE_H261 31 |
|
|
|
#define RTP_TYPE_MPV 32 |
|
|
|
#define RTP_TYPE_MP2T 33 |
|
|
|
#define RTP_TYPE_H263 34 |
|
|
|
/* Unassigned 35-71 */ |
|
|
|
/* Reserved 72-76 */ |
|
|
|
/* Unassigned 77-95 */ |
|
|
|
/* Dynamic 96-127 */ |
|
|
|
|
|
|
|
static inline uint32_t rtp_3551_get_clock_rate(uint8_t i_type) |
|
|
|
{ |
|
|
|
/* rtp type is a 7bit positive integer, thus 0xff is invalid */ |
|
|
|
struct { |
|
|
|
uint8_t i_type; |
|
|
|
uint32_t i_rate; |
|
|
|
} profiles[] = { |
|
|
|
{ RTP_TYPE_TS, 90000 }, |
|
|
|
{ RTP_TYPE_MPA, 90000 }, |
|
|
|
{ RTP_TYPE_MPV, 90000 }, |
|
|
|
{ RTP_TYPE_L16, 44100 }, |
|
|
|
{ RTP_TYPE_L16MONO, 44100 }, |
|
|
|
{ RTP_TYPE_GSM, 8000 }, |
|
|
|
switch (i_type) { |
|
|
|
case RTP_TYPE_PCMU: |
|
|
|
case RTP_TYPE_GSM: |
|
|
|
case RTP_TYPE_G723: |
|
|
|
case RTP_TYPE_DVI4_8000: |
|
|
|
case RTP_TYPE_LPC: |
|
|
|
case RTP_TYPE_PCMA: |
|
|
|
case RTP_TYPE_G722: |
|
|
|
case RTP_TYPE_QCELP: |
|
|
|
case RTP_TYPE_CN: |
|
|
|
case RTP_TYPE_G728: |
|
|
|
case RTP_TYPE_G729: |
|
|
|
return 8000; |
|
|
|
|
|
|
|
{ 0xff, 0xffff} |
|
|
|
}; |
|
|
|
case RTP_TYPE_DVI4_16000: |
|
|
|
return 16000; |
|
|
|
|
|
|
|
int i = 0; |
|
|
|
while(profiles[i].i_type != 0xff) { |
|
|
|
if (i_type == profiles[i].i_type) { |
|
|
|
return profiles[i].i_rate; |
|
|
|
} |
|
|
|
i++; |
|
|
|
case RTP_TYPE_L16: |
|
|
|
case RTP_TYPE_L16MONO: |
|
|
|
return 44100; |
|
|
|
|
|
|
|
case RTP_TYPE_DVI4_11025: |
|
|
|
return 11025; |
|
|
|
|
|
|
|
case RTP_TYPE_DVI4_22050: |
|
|
|
return 22050; |
|
|
|
|
|
|
|
case RTP_TYPE_MPA: |
|
|
|
case RTP_TYPE_CELB: |
|
|
|
case RTP_TYPE_JPEG: |
|
|
|
case RTP_TYPE_NV: |
|
|
|
case RTP_TYPE_H261: |
|
|
|
case RTP_TYPE_MPV: |
|
|
|
case RTP_TYPE_MP2T: |
|
|
|
case RTP_TYPE_H263: |
|
|
|
return 90000; |
|
|
|
} |
|
|
|
return 0; /* invalid clock rate for unknown type */ |
|
|
|
} |
|
|
|