Please see inline.
From: Siga [mailto:[email protected]] Sent: Monday, March 28, 2011 8:00 AM To: Uttam Sarkar (usarkar) Cc: [email protected] Subject: Re: [Sip-implementors] RTP Send thread problem Hi Uttam, about the variable for the sequence number I using the one which I have declared in my RTP.h header file initializations in my rtp.h is like this struct rtp_hdr{ uint16_t version:2; uint16_t padding:1; uint16_t extension:1; uint16_t csrccount:4; uint16_t marker:1; uint16_t payloadtype:7; uint16_t sequencenumber; uint32_t timestamp; uint32_t ssrc; }; and I am including it in my main source file before assigning the value for seq_num and time_stamp. My initializations are as shown below: #define RTP_TIMESTAMP_INCR 160 #define RTP_PACKET_SIZE 172 static u8_t rtp_send_packet[RTP_PACKET_SIZE]; //this is globally declared static void rtp_send_packets(int send_socket, struct sock_addr_ in* remote_addr ) { rtp_hdr* rtphdr; [US] Make this rtphdr as static or global variable. /*other initializations*/ if(sendto(rtp_send_sock, rtp_send_packet, sizeof(rtp_hdr) + rtp_payload_size, 0, (struct sockaddr*)to, sizeof(to)) >= 0){ rtphdr->timestamp = rtphdr->timestamp + RTP_TIMESTAMP_INCR; rtphdr->sequencenumber = rtphdr->sequencenumber++; } } is there any mistake with this type of initializations. Regards On Mon, Mar 28, 2011 at 1:38 PM, Uttam Sarkar (usarkar) <[email protected]> wrote: Make sure you use static or global variable for sequence number in rtp_send_packets. -----Original Message----- From: [email protected] [mailto:[email protected]] On Behalf Of Siga Sent: Monday, March 28, 2011 6:53 AM To: [email protected] Subject: [Sip-implementors] RTP Send thread problem Hi, I am encountering a strange scenario with my RTP Send thread. After setting up a connection with another client from my SIP Client I start sending and receiving RTP packets. I have no problem in receiving the packets, but the problem is with the RTP Send thread such that after a sleep of 20ms which I am making the RTP Send thread to sleep, after this 20ms sleep the send thread starts again, but again the sequence number and time stamp are reset and start again from the beginning. I can see on netmon that my RTP Send thread is sending some packets starting with sequence number = 1 and time stamp = 160 and after the thread starts from sleep, it again starts sending the RTP packets starting with sequence number = 1 and time stamp = 160. Here is the netmon capture: 396 7.4784891 192.168.1.80 192.168.1.1 RTP RTP:PayloadType = PCMA Audio, 8000Hz [1 Channel], SSRC = 329899372, Seq = 1, TimeStamp = 160 {UDP:1, IPv4:18} 397 7.4825127 192.168.1.80 192.168.1.1 RTP RTP:PayloadType = PCMA Audio, 8000Hz [1 Channel], SSRC = 329899372, Seq = 2, TimeStamp = 320 {UDP:1, IPv4:18} 398 7.4859608 192.168.1.1 192.168.1.80 RTP RTP:PayloadType = PCMA Audio, 8000Hz [1 Channel], SSRC = 1419577456, Seq = 55420, TimeStamp = 1294160 {UDP:1, IPv4:18} 399 7.4865240 192.168.1.80 192.168.1.1 RTP RTP:PayloadType = PCMA Audio, 8000Hz [1 Channel], SSRC = 329899372, Seq = 3, TimeStamp = 480 {UDP:1, IPv4:18} 400 7.5061632 192.168.1.1 192.168.1.80 RTP RTP:PayloadType = PCMA Audio, 8000Hz [1 Channel], SSRC = 1419577456, Seq = 55421, TimeStamp = 1294320 {UDP:1, IPv4:18} 401 7.5184904 192.168.1.80 192.168.1.1 RTP RTP:PayloadType = PCMA Audio, 8000Hz [1 Channel], SSRC = 329899372, Seq = 4, TimeStamp = 640 {UDP:1, IPv4:18} 402 7.5259976 192.168.1.1 192.168.1.80 RTP RTP:PayloadType = PCMA Audio, 8000Hz [1 Channel], SSRC = 1419577456, Seq = 55422, TimeStamp = 1294480 {UDP:1, IPv4:18} 403 7.5270654 192.168.1.80 192.168.1.1 RTP RTP:PayloadType = PCMA Audio, 8000Hz [1 Channel], SSRC = 329899372, Seq = 1, TimeStamp = 160 {UDP:1, IPv4:18} 404 7.5321877 192.168.1.80 192.168.1.1 RTP RTP:PayloadType = PCMA Audio, 8000Hz [1 Channel], SSRC = 329899372, Seq = 2, TimeStamp = 320 {UDP:1, IPv4:18} 405 7.5362360 192.168.1.80 192.168.1.1 RTP RTP:PayloadType = PCMA Audio, 8000Hz [1 Channel], SSRC = 329899372, Seq = 3, TimeStamp = 480 {UDP:1, IPv4:18} 406 7.5459893 192.168.1.1 192.168.1.80 RTP RTP:PayloadType = PCMA Audio, 8000Hz [1 Channel], SSRC = 1419577456, Seq = 55423, TimeStamp = 1294640 {UDP:1, IPv4:18} 407 7.5660443 192.168.1.1 192.168.1.80 RTP RTP:PayloadType = PCMA Audio, 8000Hz [1 Channel], SSRC = 1419577456, Seq = 55424, TimeStamp = 1294800 {UDP:1, IPv4:18} 408 7.5727087 192.168.1.80 192.168.1.1 UDP UDP:SrcPort = 22334, DstPort = 12964, Length = 180 {UDP:1, IPv4:18} 409 7.5789801 192.168.1.80 192.168.1.1 RTP RTP:PayloadType = PCMA Audio, 8000Hz [1 Channel], SSRC = 329899372, Seq = 1, TimeStamp = 160 {UDP:1, IPv4:18} 410 7.5830083 192.168.1.80 192.168.1.1 RTP RTP:PayloadType = PCMA Audio, 8000Hz [1 Channel], SSRC = 329899372, Seq = 2, TimeStamp = 320 {UDP:1, IPv4:18} 411 7.5860037 192.168.1.1 192.168.1.80 RTP RTP:PayloadType = PCMA Audio, 8000Hz [1 Channel], SSRC = 1419577456, Seq = 55425, TimeStamp = 1294960 {UDP:1, IPv4:18} 412 7.6060190 192.168.1.1 192.168.1.80 RTP RTP:PayloadType = PCMA Audio, 8000Hz [1 Channel], SSRC = 1419577456, Seq = 55426, TimeStamp = 1295120 {UDP:1, IPv4:18} 413 7.6162093 192.168.1.80 192.168.1.1 RTP RTP:PayloadType = PCMA Audio, 8000Hz [1 Channel], SSRC = 329899372, Seq = 3, TimeStamp = 480 {UDP:1, IPv4:18} 414 7.6254210 192.168.1.80 192.168.1.1 RTP RTP:PayloadType = PCMA Audio, 8000Hz [1 Channel], SSRC = 329899372, Seq = 1, TimeStamp = 160 {UDP:1, IPv4:18} 415 7.6258741 192.168.1.1 192.168.1.80 RTP RTP:PayloadType = PCMA Audio, 8000Hz [1 Channel], SSRC = 1419577456, Seq = 55427, TimeStamp = 1295280 {UDP:1, IPv4:18} 416 7.6304875 192.168.1.80 192.168.1.1 RTP RTP:PayloadType = PCMA Audio, 8000Hz [1 Channel], SSRC = 329899372, Seq = 2, TimeStamp = 320 {UDP:1, IPv4:18} 417 7.6345130 192.168.1.80 192.168.1.1 RTP RTP:PayloadType = PCMA Audio, 8000Hz [1 Channel], SSRC = 329899372, Seq = 3, TimeStamp = 480 {UDP:1, IPv4:18} 418 7.6460465 192.168.1.1 192.168.1.80 RTP RTP:PayloadType = PCMA Audio, 8000Hz [1 Channel], SSRC = 1419577456, Seq = 55428, TimeStamp = 1295440 {UDP:1, IPv4:18} 419 7.6660144 192.168.1.1 192.168.1.80 RTP RTP:PayloadType = PCMA Audio, 8000Hz [1 Channel], SSRC = 1419577456, Seq = 55429, TimeStamp = 1295600 {UDP:1, IPv4:18} 420 7.6664040 192.168.1.80 192.168.1.1 RTP RTP:PayloadType = PCMA Audio, 8000Hz [1 Channel], SSRC = 329899372, Seq = 4, TimeStamp = 640 {UDP:1, IPv4:18} 421 7.6760927 192.168.1.80 192.168.1.1 RTP RTP:PayloadType = PCMA Audio, 8000Hz [1 Channel], SSRC = 329899372, Seq = 1, TimeStamp = 160 {UDP:1, IPv4:18} 422 7.6801471 192.168.1.80 192.168.1.1 RTP RTP:PayloadType = PCMA Audio, 8000Hz [1 Channel], SSRC = 329899372, Seq = 2, TimeStamp = 320 {UDP:1, IPv4:18} 423 7.6841980 192.168.1.80 192.168.1.1 RTP RTP:PayloadType = PCMA Audio, 8000Hz [1 Channel], SSRC = 329899372, Seq = 3, TimeStamp = 480 {UDP:1, IPv4:18} 424 7.6858368 192.168.1.1 192.168.1.80 RTP RTP:PayloadType = PCMA Audio, 8000Hz [1 Channel], SSRC = 1419577456, Seq = 55430, TimeStamp = 1295760 {UDP:1, IPv4:18} 425 7.7060118 192.168.1.1 192.168.1.80 RTP RTP:PayloadType = PCMA Audio, 8000Hz [1 Channel], SSRC = 1419577456, Seq = 55431, TimeStamp = 1295920 {UDP:1, IPv4:18} 426 7.7209980 192.168.1.80 192.168.1.1 UDP UDP:SrcPort = 22334, DstPort = 12964, Length = 180 {UDP:1, IPv4:18} 427 7.7259359 192.168.1.1 192.168.1.80 RTP RTP:PayloadType = PCMA Audio, 8000Hz [1 Channel], SSRC = 1419577456, Seq = 55432, TimeStamp = 1296080 {UDP:1, IPv4:18} 428 7.7288774 192.168.1.80 192.168.1.1 RTP RTP:PayloadType = PCMA Audio, 8000Hz [1 Channel], SSRC = 329899372, Seq = 1, TimeStamp = 160 {UDP:1, IPv4:18} 429 7.7335620 192.168.1.80 192.168.1.1 RTP RTP:PayloadType = PCMA Audio, 8000Hz [1 Channel], SSRC = 329899372, Seq = 2, TimeStamp = 320 {UDP:1, IPv4:18} 430 7.7460382 192.168.1.1 192.168.1.80 RTP RTP:PayloadType = PCMA Audio, 8000Hz [1 Channel], SSRC = 1419577456, Seq = 55433, TimeStamp = 1296240 {UDP:1, IPv4:18} 431 7.7660654 192.168.1.1 192.168.1.80 RTP RTP:PayloadType = PCMA Audio, 8000Hz [1 Channel], SSRC = 1419577456, Seq = 55434, TimeStamp = 1296400 {UDP:1, IPv4:18} 432 7.7688175 192.168.1.80 192.168.1.1 UDP UDP:SrcPort = 22334, DstPort = 12964, Length = 180 {UDP:1, IPv4:18} 433 7.7755308 192.168.1.80 192.168.1.1 RTP RTP:PayloadType = PCMA Audio, 8000Hz [1 Channel], SSRC = 329899372, Seq = 1, TimeStamp = 160 {UDP:1, IPv4:18} 434 7.7795409 192.168.1.80 192.168.1.1 RTP RTP:PayloadType = PCMA Audio, 8000Hz [1 Channel], SSRC = 329899372, Seq = 2, TimeStamp = 320 {UDP:1, IPv4:18} 435 7.7859224 192.168.1.1 192.168.1.80 RTP RTP:PayloadType = PCMA Audio, 8000Hz [1 Channel], SSRC = 1419577456, Seq = 55435, TimeStamp = 1296560 {UDP:1, IPv4:18} 436 7.8060232 192.168.1.1 192.168.1.80 RTP RTP:PayloadType = PCMA Audio, 8000Hz [1 Channel], SSRC = 1419577456, Seq = 55436, TimeStamp = 1296720 {UDP:1, IPv4:18} 437 7.8128543 192.168.1.80 192.168.1.1 RTP RTP:PayloadType = PCMA Audio, 8000Hz [1 Channel], SSRC = 329899372, Seq = 3, TimeStamp = 480 {UDP:1, IPv4:18} 438 7.8225130 192.168.1.80 192.168.1.1 RTP RTP:PayloadType = PCMA Audio, 8000Hz [1 Channel], SSRC = 329899372, Seq = 1, TimeStamp = 160 {UDP:1, IPv4:18} 439 7.8258402 192.168.1.1 192.168.1.80 RTP RTP:PayloadType = PCMA Audio, 8000Hz [1 Channel], SSRC = 1419577456, Seq = 55437, TimeStamp = 1296880 {UDP:1, IPv4:18} 440 7.8265628 192.168.1.80 192.168.1.1 RTP RTP:PayloadType = PCMA Audio, 8000Hz [1 Channel], SSRC = 329899372, Seq = 2, TimeStamp = 320 {UDP:1, IPv4:18} 441 7.8316670 192.168.1.80 192.168.1.1 RTP RTP:PayloadType = PCMA Audio, 8000Hz [1 Channel], SSRC = 329899372, Seq = 3, TimeStamp = 480 {UDP:1, IPv4:18} 442 7.8462520 192.168.1.1 192.168.1.80 RTP RTP:PayloadType = PCMA Audio, 8000Hz [1 Channel], SSRC = 1419577456, Seq = 55438, TimeStamp = 1297040 {UDP:1, IPv4:18} 443 7.8661544 192.168.1.1 192.168.1.80 RTP RTP:PayloadType = PCMA Audio, 8000Hz [1 Channel], SSRC = 1419577456, Seq = 55439, TimeStamp = 1297200 {UDP:1, IPv4:18} 444 7.8670660 192.168.1.80 192.168.1.1 UDP UDP:SrcPort = 22334, DstPort = 12964, Length = 180 {UDP:1, IPv4:18} 445 7.8738410 192.168.1.80 192.168.1.1 RTP RTP:PayloadType = PCMA Audio, 8000Hz [1 Channel], SSRC = 329899372, Seq = 1, TimeStamp = 160 {UDP:1, IPv4:18} 446 7.8786926 192.168.1.80 192.168.1.1 RTP RTP:PayloadType = PCMA Audio, 8000Hz [1 Channel], SSRC = 329899372, Seq = 2, TimeStamp = 320 {UDP:1, IPv4:18} 447 7.8859087 192.168.1.1 192.168.1.80 RTP RTP:PayloadType = PCMA Audio, 8000Hz [1 Channel], SSRC = 1419577456, Seq = 55440, TimeStamp = 1297360 {UDP:1, IPv4:18} 448 7.9059979 192.168.1.1 192.168.1.80 RTP RTP:PayloadType = PCMA Audio, 8000Hz [1 Channel], SSRC = 1419577456, Seq = 55441, TimeStamp = 1297520 {UDP:1, IPv4:18} 449 7.9111579 192.168.1.80 192.168.1.1 RTP RTP:PayloadType = PCMA Audio, 8000Hz [1 Channel], SSRC = 329899372, Seq = 3, TimeStamp = 480 {UDP:1, IPv4:18} 450 7.9207415 192.168.1.80 192.168.1.1 RTP RTP:PayloadType = PCMA Audio, 8000Hz [1 Channel], SSRC = 329899372, Seq = 1, TimeStamp = 160 {UDP:1, IPv4:18} 451 7.9256898 192.168.1.80 192.168.1.1 RTP RTP:PayloadType = PCMA Audio, 8000Hz [1 Channel], SSRC = 329899372, Seq = 2, TimeStamp = 320 {UDP:1, IPv4:18} 452 7.9263754 192.168.1.1 192.168.1.80 RTP RTP:PayloadType = PCMA Audio, 8000Hz [1 Channel], SSRC = 1419577456, Seq = 55442, TimeStamp = 1297680 {UDP:1, IPv4:18} 453 7.9307948 192.168.1.80 192.168.1.1 RTP RTP:PayloadType = PCMA Audio, 8000Hz [1 Channel], SSRC = 329899372, Seq = 3, TimeStamp = 480 {UDP:1, IPv4:18} 454 7.9461513 192.168.1.1 192.168.1.80 RTP RTP:PayloadType = PCMA Audio, 8000Hz [1 Channel], SSRC = 1419577456, Seq = 55443, TimeStamp = 1297840 {UDP:1, IPv4:18} 455 7.9654232 192.168.1.80 192.168.1.1 UDP UDP:SrcPort = 22334, DstPort = 12964, Length = 180 {UDP:1, IPv4:18} Skeleton of my pseudo code looks something like this: *static void rtp_send_packets(send_socket, &remote_addr ) { * /*here I assign the values for the RTP packet like version number, payload type etc*/ /*finally send the rtp packets to the server using sento */ * } static void rtp_send_thread(void *arg) { * /*here I do all the initializations and binding stuff for sending RTP Thread**/ while(1){ rtp_send_packets(send_socket, &remote_addr ); sleep_ms(20); } } void rtp_init(void) { pthread_t rtp_send_th; pthread_t rtp_recv_th; pthread_create(&rtp_send_th, NULL, rtp_send_thread, NULL); pthread_create(&rtp_recv_th, NULL, rtp_recv_thread, NULL); }* Does anybody have an idea why this is happening? Regards _______________________________________________ Sip-implementors mailing list [email protected] https://lists.cs.columbia.edu/cucslists/listinfo/sip-implementors _______________________________________________ Sip-implementors mailing list [email protected] https://lists.cs.columbia.edu/cucslists/listinfo/sip-implementors
