Re: problem while reducing the seding rate
Dinil Divakaran <[email protected]>
| Newsgroups | gmane.comp.gnu.ccrtp.devel |
|---|---|
| Message-ID | <[email protected]> |
Thanks for the explanation; I seem to grasp your point.
But, can I not do the same using onExpireSend and putData ?
onExpireSend should be given point to OutgoingRTPPkt as
argument; but I don't know how to use it with putData. Can
anyone please help ?
- Dinil
On Wed, 11 May 2005, Michel de Boer wrote:
> Hi Dinil,
>
> This sounds like the problem that I had with sending RTP DTMF events.
> All RTP packets in this case have the same timestamp and ccRTP
> discards packets when the timestamp gets too old.
>
> In your case you increase the PERIOD, but it seems that
> you keep the payload size of your packets the same. That means
> that the timestamps you provide with putData will not be in
> sync with the timestamp clock from ccRTP itself. The timestamp
> of your second packet indicates that this packet should come 50ms after
> the first packet. But you only deliver it 100ms after the first
> packet.
>
> I think you have to deliver the data to ccRTP with the correct
> rate (depending on the number of samples per second). So if you
> want to double the period from 50 to 100 then you should also double
> the size of your payload.
>
> Regards,
> Michel
>
>
>
> Dinil Divakaran wrote:
>>
>> Hi all,
>>
>> I was working on an example for transmitting an audio file using ccrtp
>> (http://www.gnu.org/software/ccrtp/doc/refman/html/audiotx_8cpp-example.html)
>>
>> The following lines are from the above example. In this code, packets are
>> sent and then thread sleeps for a time of 'PERIOD' milliseconds. I changed
>> the value of PERIOD to 100 (milliseconds) and found that even though the
>> program says that the packets are sent; the packets weren't actually sent.
>> 'tcpdump' showed that only the first packet was sent; and thereafter only
>> RTCP packets were sent (with still lesser frequency). When I changed the
>> value of 'PERIOD' to 50, the packets were sent successfully.
>>
>> Can anyone please tell me where have I gone wrong ?
>>
>> --------------------------------------------------------------------------
>> .
>> .
>> .
>>
>> cout << "Transmitting " << PACKET_SIZE
>> << " octects long packets "
>> << "every " << PERIOD << " milliseconds..." << endl;
>>
>> unsigned char buffer[PACKET_SIZE];
>> int count=PACKET_SIZE;
>>
>> // This will be useful for periodic execution
>> TimerPort::setTimer(PERIOD);
>>
>> setCancel(cancelImmediate);
>> // This is the main loop, where packets are transmitted.
>> for( int i = 0 ; (!sendingfile || count > 0) ; i++ ){
>>
>> count = ::read(audioinput,buffer,PACKET_SIZE);
>> if( count > 0 ){
>> // send an RTP packet, providing timestamp,
>> // payload type and payload.
>> socket->putData(PACKET_SIZE * i, buffer, PACKET_SIZE);
>> }
>> cout << "." << flush;
>>
>> // Let's wait for the next cycle
>> Thread::sleep(TimerPort::getTimer());
>> TimerPort::incTimer(PERIOD);
>> }
>> cout << endl << "I have got no more data to send. " <<endl;
>>
>> .
>> .
>> .
>> .
>> --------------------------------------------------------------------------
>>
>> - Dinil
>>
>>
>>
>> _______________________________________________
>> Ccrtp-devel mailing list
>> [email protected]
>> http://lists.gnu.org/mailman/listinfo/ccrtp-devel
>>
>>
>