[Live-devel] Jitter value with openRTSP
ggomand
ggomand at info.fundp.ac.be
Tue Nov 25 03:24:22 PST 2008
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
More information about the live-devel
mailing list