1b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgfunction plotTimingTest(filename)
2b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgfid=fopen(filename);
3b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
4b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org%DEBUG     ; ( 9:53:33:859 |    0)        VIDEO:-1         ;      7132; Stochastic test 1
5b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org%DEBUG     ; ( 9:53:33:859 |    0) VIDEO CODING:-1         ;      7132; Frame decoded: timeStamp=3000 decTime=10 at 10012
6b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org%DEBUG     ; ( 9:53:33:859 |    0)        VIDEO:-1         ;      7132; timeStamp=3000 clock=10037 maxWaitTime=0
7b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org%DEBUG     ; ( 9:53:33:859 |    0)        VIDEO:-1         ;      7132; timeStampMs=33 renderTime=54
8b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgline = fgetl(fid);
9b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgdecTime = [];
10b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgwaitTime = [];
11b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgrenderTime = [];
12b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgfoundStart = 0;
13b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgtestName = 'Stochastic test 1';
14b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgwhile ischar(line)
15b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if length(line) == 0
16b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        line = fgetl(fid);
17b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        continue;
18b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    end
19b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    lineOrig = line;
20b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    line = line(72:end);
21b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if ~foundStart
22b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        if strncmp(line, testName, length(testName)) 
23b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            foundStart = 1;
24b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        end
25b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        line = fgetl(fid);
26b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        continue;
27b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    end
28b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    [p, count] = sscanf(line, 'Frame decoded: timeStamp=%lu decTime=%d maxDecTime=%d, at %lu');
29b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if count == 4
30b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        decTime = [decTime; p'];
31b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        line = fgetl(fid);
32b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        continue;
33b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    end
34b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    [p, count] = sscanf(line, 'timeStamp=%u clock=%u maxWaitTime=%u');
35b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if count == 3
36b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        waitTime = [waitTime; p'];
37b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        line = fgetl(fid);
38b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        continue;
39b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    end
40b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    [p, count] = sscanf(line, 'timeStamp=%u renderTime=%u');
41b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if count == 2
42b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        renderTime = [renderTime; p'];
43b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        line = fgetl(fid);
44b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        continue;
45b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    end    
46b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    line = fgetl(fid);
47b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgend
48b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgfclose(fid);
49b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
50b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org% Compensate for wrap arounds and start counting from zero.
51b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgtimeStamps = waitTime(:, 1);
52b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgtsDiff = diff(timeStamps);
53b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgwrapIdx = find(tsDiff < 0);
54b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgtimeStamps(wrapIdx+1:end) = hex2dec('ffffffff') + timeStamps(wrapIdx+1:end);
55b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgtimeStamps = timeStamps - timeStamps(1);
56b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
57b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgfigure;
58b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orghold on;
59b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgplot(timeStamps, decTime(:, 2), 'r');
60b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgplot(timeStamps, waitTime(:, 3), 'g');
61b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgplot(timeStamps(2:end), diff(renderTime(:, 2)), 'b');
62b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orglegend('Decode time', 'Max wait time', 'Render time diff');