Index: webrtc/modules/video_coding/main/test/plotReceiveTrace.m |
diff --git a/webrtc/modules/video_coding/main/test/plotReceiveTrace.m b/webrtc/modules/video_coding/main/test/plotReceiveTrace.m |
deleted file mode 100644 |
index 4d262aa165269b45f22bce648ba870f9e0e82979..0000000000000000000000000000000000000000 |
--- a/webrtc/modules/video_coding/main/test/plotReceiveTrace.m |
+++ /dev/null |
@@ -1,213 +0,0 @@ |
-function [t, TS] = plotReceiveTrace(filename, flat) |
-fid=fopen(filename); |
-%DEBUG ; ( 8:32:33:375 | 0) VIDEO:1 ; 5260; First packet of frame 1869537938 |
-%DEBUG ; ( 8:32:33:375 | 0) VIDEO CODING:1 ; 5260; Decoding timestamp 1869534934 |
-%DEBUG ; ( 8:32:33:375 | 0) VIDEO:1 ; 5260; Render frame 1869534934 at 20772610 |
-%DEBUG ; ( 8:32:33:375 | 0) VIDEO CODING:-1 ; 5260; Frame decoded: timeStamp=1870511259 decTime=0 maxDecTime=0, at 19965 |
-%DEBUG ; ( 7:59:42:500 | 0) VIDEO:-1 ; 2500; Received complete frame timestamp 1870514263 frame type 1 frame size 7862 at time 19965, jitter estimate was 130 |
-%DEBUG ; ( 8: 5:51:774 | 0) VIDEO:-1 ; 3968; ExtrapolateLocalTime(1870967878)=24971 ms |
- |
-if nargin == 1 |
- flat = 0; |
-end |
-line = fgetl(fid); |
-estimatedArrivalTime = []; |
-packetTime = []; |
-firstPacketTime = []; |
-decodeTime = []; |
-decodeCompleteTime = []; |
-renderTime = []; |
-completeTime = []; |
-while ischar(line)%line ~= -1 |
- if length(line) == 0 |
- line = fgetl(fid); |
- continue; |
- end |
- % Parse the trace line header |
- [tempres, count] = sscanf(line, 'DEBUG ; (%u:%u:%u:%u |%*lu)%13c:'); |
- if count < 5 |
- line = fgetl(fid); |
- continue; |
- end |
- hr=tempres(1); |
- mn=tempres(2); |
- sec=tempres(3); |
- ms=tempres(4); |
- timeInMs=hr*60*60*1000 + mn*60*1000 + sec*1000 + ms; |
- label = tempres(5:end); |
- I = find(label ~= 32); |
- label = label(I(1):end); % remove white spaces |
- if ~strncmp(char(label), 'VIDEO', 5) & ~strncmp(char(label), 'VIDEO CODING', 12) |
- line = fgetl(fid); |
- continue; |
- end |
- message = line(72:end); |
- |
- % Parse message |
- [p, count] = sscanf(message, 'ExtrapolateLocalTime(%lu)=%lu ms'); |
- if count == 2 |
- estimatedArrivalTime = [estimatedArrivalTime; p']; |
- line = fgetl(fid); |
- continue; |
- end |
- |
- [p, count] = sscanf(message, 'Packet seqNo %u of frame %lu at %lu'); |
- if count == 3 |
- packetTime = [packetTime; p']; |
- line = fgetl(fid); |
- continue; |
- end |
- |
- [p, count] = sscanf(message, 'First packet of frame %lu at %lu'); |
- if count == 2 |
- firstPacketTime = [firstPacketTime; p']; |
- line = fgetl(fid); |
- continue; |
- end |
- |
- [p, count] = sscanf(message, 'Decoding timestamp %lu at %lu'); |
- if count == 2 |
- decodeTime = [decodeTime; p']; |
- line = fgetl(fid); |
- continue; |
- end |
- |
- [p, count] = sscanf(message, 'Render frame %lu at %lu. Render delay %lu, required delay %lu, max decode time %lu, min total delay %lu'); |
- if count == 6 |
- renderTime = [renderTime; p']; |
- line = fgetl(fid); |
- continue; |
- end |
- |
- [p, count] = sscanf(message, 'Frame decoded: timeStamp=%lu decTime=%d maxDecTime=%lu, at %lu'); |
- if count == 4 |
- decodeCompleteTime = [decodeCompleteTime; p']; |
- line = fgetl(fid); |
- continue; |
- end |
- |
- [p, count] = sscanf(message, 'Received complete frame timestamp %lu frame type %u frame size %*u at time %lu, jitter estimate was %lu'); |
- if count == 4 |
- completeTime = [completeTime; p']; |
- line = fgetl(fid); |
- continue; |
- end |
- |
- line = fgetl(fid); |
-end |
-fclose(fid); |
- |
-t = completeTime(:,3); |
-TS = completeTime(:,1); |
- |
-figure; |
-subplot(211); |
-hold on; |
-slope = 0; |
- |
-if sum(size(packetTime)) > 0 |
- % Plot the time when each packet arrives |
- firstTimeStamp = packetTime(1,2); |
- x = (packetTime(:,2) - firstTimeStamp)/90; |
- if flat |
- slope = x; |
- end |
- firstTime = packetTime(1,3); |
- plot(x, packetTime(:,3) - firstTime - slope, 'b.'); |
-else |
- % Plot the time when the first packet of a frame arrives |
- firstTimeStamp = firstPacketTime(1,1); |
- x = (firstPacketTime(:,1) - firstTimeStamp)/90; |
- if flat |
- slope = x; |
- end |
- firstTime = firstPacketTime(1,2); |
- plot(x, firstPacketTime(:,2) - firstTime - slope, 'b.'); |
-end |
- |
-% Plot the frame complete time |
-if prod(size(completeTime)) > 0 |
- x = (completeTime(:,1) - firstTimeStamp)/90; |
- if flat |
- slope = x; |
- end |
- plot(x, completeTime(:,3) - firstTime - slope, 'ks'); |
-end |
- |
-% Plot the time the decode starts |
-if prod(size(decodeTime)) > 0 |
- x = (decodeTime(:,1) - firstTimeStamp)/90; |
- if flat |
- slope = x; |
- end |
- plot(x, decodeTime(:,2) - firstTime - slope, 'r.'); |
-end |
- |
-% Plot the decode complete time |
-if prod(size(decodeCompleteTime)) > 0 |
- x = (decodeCompleteTime(:,1) - firstTimeStamp)/90; |
- if flat |
- slope = x; |
- end |
- plot(x, decodeCompleteTime(:,4) - firstTime - slope, 'g.'); |
-end |
- |
-if prod(size(renderTime)) > 0 |
- % Plot the wanted render time in ms |
- x = (renderTime(:,1) - firstTimeStamp)/90; |
- if flat |
- slope = x; |
- end |
- plot(x, renderTime(:,2) - firstTime - slope, 'c-'); |
- |
- % Plot the render time if there were no render delay or decoding delay. |
- x = (renderTime(:,1) - firstTimeStamp)/90; |
- if flat |
- slope = x; |
- end |
- plot(x, renderTime(:,2) - firstTime - slope - renderTime(:, 3) - renderTime(:, 5), 'c--'); |
- |
- % Plot the render time if there were no render delay. |
- x = (renderTime(:,1) - firstTimeStamp)/90; |
- if flat |
- slope = x; |
- end |
- plot(x, renderTime(:,2) - firstTime - slope - renderTime(:, 3) - renderTime(:, 5), 'b-'); |
-end |
- |
-%plot(x, 90*x, 'r-'); |
- |
-xlabel('RTP timestamp (in ms)'); |
-ylabel('Time (ms)'); |
-legend('Packet arrives', 'Frame complete', 'Decode', 'Decode complete', 'Time to render', 'Only jitter', 'Must decode'); |
- |
-% subplot(312); |
-% hold on; |
-% completeTs = completeTime(:, 1); |
-% arrivalTs = estimatedArrivalTime(:, 1); |
-% [c, completeIdx, arrivalIdx] = intersect(completeTs, arrivalTs); |
-% %plot(completeTs(completeIdx), completeTime(completeIdx, 3) - estimatedArrivalTime(arrivalIdx, 2)); |
-% timeUntilComplete = completeTime(completeIdx, 3) - estimatedArrivalTime(arrivalIdx, 2); |
-% devFromAvgCompleteTime = timeUntilComplete - mean(timeUntilComplete); |
-% plot(completeTs(completeIdx) - completeTs(completeIdx(1)), devFromAvgCompleteTime); |
-% plot(completeTime(:, 1) - completeTime(1, 1), completeTime(:, 4), 'r'); |
-% plot(decodeCompleteTime(:, 1) - decodeCompleteTime(1, 1), decodeCompleteTime(:, 2), 'g'); |
-% plot(decodeCompleteTime(:, 1) - decodeCompleteTime(1, 1), decodeCompleteTime(:, 3), 'k'); |
-% xlabel('RTP timestamp'); |
-% ylabel('Time (ms)'); |
-% legend('Complete time - Estimated arrival time', 'Desired jitter buffer level', 'Actual decode time', 'Max decode time', 0); |
- |
-if prod(size(renderTime)) > 0 |
- subplot(212); |
- hold on; |
- firstTime = renderTime(1, 1); |
- targetDelay = max(renderTime(:, 3) + renderTime(:, 4) + renderTime(:, 5), renderTime(:, 6)); |
- plot(renderTime(:, 1) - firstTime, renderTime(:, 3), 'r-'); |
- plot(renderTime(:, 1) - firstTime, renderTime(:, 4), 'b-'); |
- plot(renderTime(:, 1) - firstTime, renderTime(:, 5), 'g-'); |
- plot(renderTime(:, 1) - firstTime, renderTime(:, 6), 'k-'); |
- plot(renderTime(:, 1) - firstTime, targetDelay, 'c-'); |
- xlabel('RTP timestamp'); |
- ylabel('Time (ms)'); |
- legend('Render delay', 'Jitter delay', 'Decode delay', 'Extra delay', 'Min total delay'); |
-end |