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');