?? rtp_ctrl.c
字號:
#include <errno.h>#include "rtp_ctrl.h"#include "sound.h"void* Rtp_Ctrl(void* rtp_info){ int sock; struct sockaddr_in term; BYTE rtp_data[RTP_DATA_LEN]; RTP_INFO* info = (RTP_INFO*)rtp_info; short buf[AUDIO_BUFF_SIZE]; int i; term.sin_family = AF_INET; term.sin_port = htons(info->send_port); term.sin_addr.s_addr = inet_addr(info->send_addr); sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); open_soundr(); do{ if(*(info->psend_switch) == ok){ record_sound( buf ); for(i=0; i < AUDIO_BUFF_SIZE; i++){ (info->s_audio_data)[i] = g711encode(buf[i]); } info->rtp_header->seq = htons(info->seqnum); info->rtp_header->ts = htonl(info->timestamp); memcpy(rtp_data, info->rtp_header, RTP_HEADER_LEN); memcpy(rtp_data+RTP_HEADER_LEN, info->s_audio_data, AUDIO_BUFF_SIZE); sendto(sock, rtp_data, RTP_DATA_LEN, 0, (struct sockaddr*)&term, sizeof(term)); info->seqnum++; info->timestamp += AUDIO_BUFF_SIZE; info->rtp_header->m = 0; memset(rtp_data , 0, RTP_DATA_LEN); memset(info->s_audio_data, 0, AUDIO_BUFF_SIZE); } }while(*(info->psend_switch) != ng); close_soundr();}void* Recv_Rtp(void* rtpinfo){ int sock; struct sockaddr_in term; unsigned char rtp_data[RTP_DATA_LEN]; int termsize; int r_rtpsize; unsigned short buf[AUDIO_BUFF_SIZE]; int i; RTP_INFO* info = (RTP_INFO*)rtpinfo; char error[256]; static int status = 0; memset(&term, 0, sizeof(term)); term.sin_family = AF_INET; term.sin_port = htons(info->recv_port); term.sin_addr.s_addr = htonl(INADDR_ANY); sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); if(bind(sock, (struct sockaddr *)&term, sizeof(term)) < 0){ debug("Error!!socket create failed.\n"); return; } termsize = sizeof(term); open_soundp(); do{ if(r_rtpsize = recvfrom(sock, rtp_data, RTP_DATA_LEN, 0, (struct sockaddr*)&term, &termsize) < 0){ debug("Error!!recvfrom failed.\n"); strcpy(error, strerror(errno)); printf("%s\n", error); continue; } memcpy(info->r_audio_data, rtp_data + RTP_HEADER_LEN, AUDIO_BUFF_SIZE); for(i=0; i < AUDIO_BUFF_SIZE; i++){ buf[i] = g711decode((info->r_audio_data)[i]); } memset(rtp_data, 0, RTP_DATA_LEN); play_sound(buf); }while(*(info->psend_switch) != ng); close_soundp();}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -