1function plotJitterEstimate(filename)
2
3[timestamps, framedata, slopes, randJitters, framestats, timetable, filtjitter, rtt, rttStatsVec] = jitterBufferTraceParser(filename);
4
5x = 1:size(framestats, 1);
6%figure(2);
7subfigure(3, 2, 1);
8hold on;
9plot(x, slopes(x, 1).*(framestats(x, 1) - framestats(x, 2)) + 3*sqrt(randJitters(x,2)), 'b'); title('Estimate ms');
10plot(x, filtjitter, 'r');
11plot(x, slopes(x, 1).*(framestats(x, 1) - framestats(x, 2)), 'g');
12subfigure(3, 2, 2);
13%subplot(211);
14plot(x, slopes(x, 1)); title('Line slope');
15%subplot(212);
16%plot(x, slopes(x, 2)); title('Line offset');
17subfigure(3, 2, 3); hold on;
18plot(x, framestats); plot(x, framedata(x, 1)); title('frame size and average frame size');
19subfigure(3, 2, 4);
20plot(x, framedata(x, 2)); title('Delay');
21subfigure(3, 2, 5);
22hold on;
23plot(x, randJitters(x,1),'r');
24plot(x, randJitters(x,2)); title('Random jitter');
25
26subfigure(3, 2, 6);
27delays = framedata(:,2);
28dL = [0; framedata(2:end, 1) - framedata(1:end-1, 1)];
29hold on;
30plot(dL, delays, '.');
31s = [min(dL) max(dL)];
32plot(s, slopes(end, 1)*s + slopes(end, 2), 'g');
33plot(s, slopes(end, 1)*s + slopes(end, 2) + 3*sqrt(randJitters(end,2)), 'r');
34plot(s, slopes(end, 1)*s + slopes(end, 2) - 3*sqrt(randJitters(end,2)), 'r');
35title('theta(1)*x+theta(2), (dT-dTS)/dL');
36if sum(size(rttStatsVec)) > 0
37    figure; hold on;
38    rttNstdDevsDrift = 3.5;
39    rttNstdDevsJump = 2.5;
40    rttSamples = rttStatsVec(:, 1);
41    rttAvgs = rttStatsVec(:, 2);
42    rttStdDevs = sqrt(rttStatsVec(:, 3));
43    rttMax = rttStatsVec(:, 4);
44    plot(rttSamples, 'ko-');
45    plot(rttAvgs, 'g');
46    plot(rttAvgs + rttNstdDevsDrift*rttStdDevs, 'b--');
47    plot(rttAvgs + rttNstdDevsJump*rttStdDevs, 'b');
48    plot(rttAvgs - rttNstdDevsJump*rttStdDevs, 'b');
49    plot(rttMax, 'r');
50    %plot(driftRestarts*max(maxRtts), '.');
51    %plot(jumpRestarts*max(maxRtts), '.');
52end