Hello all,

I'm writing to you regarding the jitter value calculated by openRTSP.

I've read this:

">I found out that jitter is expressed in timestamp units. Could you
>please confirm or correct the following:
>I divide the jitter value received by liblive by
> 90000 for h263+, MPEG-Video JPEG-Video, MPEG-Audio
> 8000 for AMR-NB, AMR-WB, PCMU, PCMA
>to get the jitter in seconds.

Yes - however, it's best if you look this value (the RTP timestamp
frequency) directly, by calling "RTPSink:: rtpTimestampFrequency()"
(if you are a sender), or "RTPSource:: timestampFrequency()" (if you
are a receiver)."
source : http://osdir.com/ml/video.livedotcom.devel/2006-12/msg00003.html


In my case, I stream a mp4 video with the Helix Server (http://www.realnetworks.com/products/media_delivery.html)

So, to get the jitter value in seconds, I've made the following addition in the source code of the file "playCommon.cpp". (from line 1170 to 1175)

1165    RTPReceptionStatsDB::Iterator statsIter(src->receptionStatsDB());
1166    // Assume that there's only one SSRC source (usually the case):
1167    RTPReceptionStats* stats = statsIter.next(True);
1168    if (stats != NULL) {
1169
1170    //code added by myself
1171    double freq = src->timestampFrequency();
1172    *env << "stats->jitter()\t" << stats->jitter() << "\n";
1173 *env << "src->timestampFrequency()\t" << src->timestampFrequency() << "\n";
1174    *env << "jitter (in seconds) :\t" << stats->jitter()/freq << "\n";
1175    //end of code added by myself
1176
1177 *env << "inter_packet_gap_ms_min\t" << stats->minInterPacketGapUS()/1000.0 << "\n";
1178    struct timeval totalGaps = stats->totalInterPacketGaps();
1179 double totalGapsMS = totalGaps.tv_sec*1000.0 + totalGaps.tv_usec/1000.0;
1180    unsigned totNumPacketsReceived = stats->totNumPacketsReceived();
1181    *env << "inter_packet_gap_ms_ave\t"
1182 << (totNumPacketsReceived == 0 ? 0.0 : totalGapsMS/totNumPacketsReceived) << "\n"; 1183 *env << "inter_packet_gap_ms_max\t" << stats->maxInterPacketGapUS()/1000.0 << "\n";
1184    }

I've got a timestampFrequency of 5544 (for the video subsession).
Is it normal or should it be 90000 ?

Is the code I've added is correct? It gives the jitter in seconds, right?


Another question, the fJitter value is in float, while the return value of the jitter() function is in integer, is it right?
Why this choice?

And my last question is, the value jitter that is given in the stats is the mean jitter or the last jitter?


Thank you in advance,

Gille
_______________________________________________
live-devel mailing list
live-devel@lists.live555.com
http://lists.live555.com/mailman/listinfo/live-devel

Reply via email to