1470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.comfunction plotTimingTest(filename)
2470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.comfid=fopen(filename);
3470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com
4470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com%DEBUG     ; ( 9:53:33:859 |    0)        VIDEO:-1         ;      7132; Stochastic test 1
5470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com%DEBUG     ; ( 9:53:33:859 |    0) VIDEO CODING:-1         ;      7132; Frame decoded: timeStamp=3000 decTime=10 at 10012
6470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com%DEBUG     ; ( 9:53:33:859 |    0)        VIDEO:-1         ;      7132; timeStamp=3000 clock=10037 maxWaitTime=0
7470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com%DEBUG     ; ( 9:53:33:859 |    0)        VIDEO:-1         ;      7132; timeStampMs=33 renderTime=54
8470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.comline = fgetl(fid);
9470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.comdecTime = [];
10470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.comwaitTime = [];
11470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.comrenderTime = [];
12470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.comfoundStart = 0;
13470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.comtestName = 'Stochastic test 1';
14470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.comwhile ischar(line)
15470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com    if length(line) == 0
16470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com        line = fgetl(fid);
17470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com        continue;
18470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com    end
19470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com    lineOrig = line;
20470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com    line = line(72:end);
21470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com    if ~foundStart
22470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com        if strncmp(line, testName, length(testName)) 
23470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com            foundStart = 1;
24470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com        end
25470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com        line = fgetl(fid);
26470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com        continue;
27470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com    end
28470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com    [p, count] = sscanf(line, 'Frame decoded: timeStamp=%lu decTime=%d maxDecTime=%d, at %lu');
29470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com    if count == 4
30470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com        decTime = [decTime; p'];
31470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com        line = fgetl(fid);
32470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com        continue;
33470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com    end
34470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com    [p, count] = sscanf(line, 'timeStamp=%u clock=%u maxWaitTime=%u');
35470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com    if count == 3
36470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com        waitTime = [waitTime; p'];
37470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com        line = fgetl(fid);
38470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com        continue;
39470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com    end
40470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com    [p, count] = sscanf(line, 'timeStamp=%u renderTime=%u');
41470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com    if count == 2
42470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com        renderTime = [renderTime; p'];
43470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com        line = fgetl(fid);
44470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com        continue;
45470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com    end    
46470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com    line = fgetl(fid);
47470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.comend
48470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.comfclose(fid);
49470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com
50470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com% Compensate for wrap arounds and start counting from zero.
51470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.comtimeStamps = waitTime(:, 1);
52470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.comtsDiff = diff(timeStamps);
53470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.comwrapIdx = find(tsDiff < 0);
54470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.comtimeStamps(wrapIdx+1:end) = hex2dec('ffffffff') + timeStamps(wrapIdx+1:end);
55470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.comtimeStamps = timeStamps - timeStamps(1);
56470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com
57470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.comfigure;
58470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.comhold on;
59470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.complot(timeStamps, decTime(:, 2), 'r');
60470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.complot(timeStamps, waitTime(:, 3), 'g');
61470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.complot(timeStamps(2:end), diff(renderTime(:, 2)), 'b');
62470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.comlegend('Decode time', 'Max wait time', 'Render time diff');