[Live-devel] StatsIterator sometimes doesn't return any stats

Andy Hawkins Andy.Hawkins at uniguest.com
Wed Feb 14 04:00:45 PST 2024


I'm trying to report statistics of the amount of data being received by a ProxyServerMediaSession. I have the following code:

      double Total = 0.0;

      int NumSubsessions = 0;
      int NumSources = 0;
      int NumStats = 0;

      if (fClientMediaSession)
      {
            MediaSubsessionIterator SubsessionIterator(*fClientMediaSession);
            MediaSubsession *Subsession;
            while ((Subsession = SubsessionIterator.next()) != NULL)
            {
                  NumSubsessions++;

                  RTPSource *Source = Subsession->rtpSource();
                  if (Source)
                  {
                        NumSources++;

                        RTPReceptionStatsDB::Iterator StatsIterator(Source->receptionStatsDB());
                        RTPReceptionStats *Stats;
                        while ((Stats = StatsIterator.next()) != NULL)
                        {
                              NumStats++;

                              Total += Stats->totNumKBytesReceived();
                        }
                  }
            }
      }

      Log << Total << ", sub: " << NumSubsessions << ", source: " << NumSources << ", stats: " << NumStats << std::endl;
      return Total;

I'm finding that sometimes the total ends up less than the previous time I called the method. When this happens, I get log lines like the following:

4406.52, sub: 2, source: 2, stats: 2
4464.01, sub: 2, source: 2, stats: 2
4641.45, sub: 2, source: 2, stats: 2
136.921, sub: 2, source: 2, stats: 1
4977.11, sub: 2, source: 2, stats: 2
5035.39, sub: 2, source: 2, stats: 2
5211.74, sub: 2, source: 2, stats: 2

You can see that in the fourth entry, it found 2 subsessions, two sources, but only one of the sources had stats associated with it. This throws off my calculations for bytes per second, as it looks like the total number of bytes received has gone down since the previous sample.

Is there an issue with my code? Is there some reason why the stats should be 'missing' on certain calls?

Thanks

Andy

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.live555.com/pipermail/live-devel/attachments/20240214/5af9a76f/attachment.htm>


More information about the live-devel mailing list