Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(60)

Unified Diff: tools/matlab/rtpAnalyze.m

Issue 2584433002: Create top-level dir tools-webrtc and start moving things into it. (Closed)
Patch Set: Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « tools/matlab/parseLog.m ('k') | tools/network_emulator/config.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/matlab/rtpAnalyze.m
diff --git a/tools/matlab/rtpAnalyze.m b/tools/matlab/rtpAnalyze.m
deleted file mode 100644
index c51af9cca5b06d04bd9b0c2c01d330d5fa0ff7a7..0000000000000000000000000000000000000000
--- a/tools/matlab/rtpAnalyze.m
+++ /dev/null
@@ -1,251 +0,0 @@
-function rtpAnalyze( input_file )
-%RTP_ANALYZE Analyze RTP stream(s) from a txt file
-% The function takes the output from the command line tool rtp_analyze
-% and analyzes the stream(s) therein. First, process your rtpdump file
-% through rtp_analyze (from command line):
-% $ out/Debug/rtp_analyze my_file.rtp my_file.txt
-% Then load it with this function (in Matlab):
-% >> rtpAnalyze('my_file.txt')
-
-% Copyright (c) 2015 The WebRTC project authors. All Rights Reserved.
-%
-% Use of this source code is governed by a BSD-style license
-% that can be found in the LICENSE file in the root of the source
-% tree. An additional intellectual property rights grant can be found
-% in the file PATENTS. All contributing project authors may
-% be found in the AUTHORS file in the root of the source tree.
-
-[SeqNo,TimeStamp,ArrTime,Size,PT,M,SSRC] = importfile(input_file);
-
-%% Filter out RTCP packets.
-% These appear as RTP packets having payload types 72 through 76.
-ix = not(ismember(PT, 72:76));
-fprintf('Removing %i RTCP packets\n', length(SeqNo) - sum(ix));
-SeqNo = SeqNo(ix);
-TimeStamp = TimeStamp(ix);
-ArrTime = ArrTime(ix);
-Size = Size(ix);
-PT = PT(ix);
-M = M(ix);
-SSRC = SSRC(ix);
-
-%% Find streams.
-[uSSRC, ~, uix] = unique(SSRC);
-
-% If there are multiple streams, select one and purge the other
-% streams from the data vectors. If there is only one stream, the
-% vectors are good to use as they are.
-if length(uSSRC) > 1
- for i=1:length(uSSRC)
- uPT = unique(PT(uix == i));
- fprintf('%i: %s (%d packets, pt: %i', i, uSSRC{i}, ...
- length(find(uix==i)), uPT(1));
- if length(uPT) > 1
- fprintf(', %i', uPT(2:end));
- end
- fprintf(')\n');
- end
- sel = input('Select stream number: ');
- if sel < 1 || sel > length(uSSRC)
- error('Out of range');
- end
- ix = find(uix == sel);
- % This is where the data vectors are trimmed.
- SeqNo = SeqNo(ix);
- TimeStamp = TimeStamp(ix);
- ArrTime = ArrTime(ix);
- Size = Size(ix);
- PT = PT(ix);
- M = M(ix);
- SSRC = SSRC(ix);
-end
-
-%% Unwrap SeqNo and TimeStamp.
-SeqNoUW = maxUnwrap(SeqNo, 65535);
-TimeStampUW = maxUnwrap(TimeStamp, 4294967295);
-
-%% Generate some stats for the stream.
-fprintf('Statistics:\n');
-fprintf('SSRC: %s\n', SSRC{1});
-uPT = unique(PT);
-if length(uPT) > 1
- warning('This tool cannot yet handle changes in codec sample rate');
-end
-fprintf('Payload type(s): %i', uPT(1));
-if length(uPT) > 1
- fprintf(', %i', uPT(2:end));
-end
-fprintf('\n');
-fprintf('Packets: %i\n', length(SeqNo));
-SortSeqNo = sort(SeqNoUW);
-fprintf('Missing sequence numbers: %i\n', ...
- length(find(diff(SortSeqNo) > 1)));
-fprintf('Duplicated packets: %i\n', length(find(diff(SortSeqNo) == 0)));
-reorderIx = findReorderedPackets(SeqNoUW);
-fprintf('Reordered packets: %i\n', length(reorderIx));
-tsdiff = diff(TimeStampUW);
-tsdiff = tsdiff(diff(SeqNoUW) == 1);
-[utsdiff, ~, ixtsdiff] = unique(tsdiff);
-fprintf('Common packet sizes:\n');
-for i = 1:length(utsdiff)
- fprintf(' %i samples (%i%%)\n', ...
- utsdiff(i), ...
- round(100 * length(find(ixtsdiff == i))/length(ixtsdiff)));
-end
-
-%% Trying to figure out sample rate.
-fs_est = (TimeStampUW(end) - TimeStampUW(1)) / (ArrTime(end) - ArrTime(1));
-fs_vec = [8, 16, 32, 48];
-fs = 0;
-for f = fs_vec
- if abs((fs_est-f)/f) < 0.05 % 5% margin
- fs = f;
- break;
- end
-end
-if fs == 0
- fprintf('Cannot determine sample rate. I get it to %.2f kHz\n', ...
- fs_est);
- fs = input('Please, input a sample rate (in kHz): ');
-else
- fprintf('Sample rate estimated to %i kHz\n', fs);
-end
-
-SendTimeMs = (TimeStampUW - TimeStampUW(1)) / fs;
-
-fprintf('Stream duration at sender: %.1f seconds\n', ...
- (SendTimeMs(end) - SendTimeMs(1)) / 1000);
-
-fprintf('Stream duration at receiver: %.1f seconds\n', ...
- (ArrTime(end) - ArrTime(1)) / 1000);
-
-fprintf('Clock drift: %.2f%%\n', ...
- 100 * ((ArrTime(end) - ArrTime(1)) / ...
- (SendTimeMs(end) - SendTimeMs(1)) - 1));
-
-fprintf('Sent average bitrate: %i kbps\n', ...
- round(sum(Size) * 8 / (SendTimeMs(end)-SendTimeMs(1))));
-
-fprintf('Received average bitrate: %i kbps\n', ...
- round(sum(Size) * 8 / (ArrTime(end)-ArrTime(1))));
-
-%% Plots.
-delay = ArrTime - SendTimeMs;
-delay = delay - min(delay);
-delayOrdered = delay;
-delayOrdered(reorderIx) = nan; % Set reordered packets to NaN.
-delayReordered = delay(reorderIx); % Pick the reordered packets.
-sendTimeMsReordered = SendTimeMs(reorderIx);
-
-% Sort time arrays in packet send order.
-[~, sortix] = sort(SeqNoUW);
-SendTimeMs = SendTimeMs(sortix);
-Size = Size(sortix);
-delayOrdered = delayOrdered(sortix);
-
-figure
-plot(SendTimeMs / 1000, delayOrdered, ...
- sendTimeMsReordered / 1000, delayReordered, 'r.');
-xlabel('Send time [s]');
-ylabel('Relative transport delay [ms]');
-title(sprintf('SSRC: %s', SSRC{1}));
-
-SendBitrateKbps = 8 * Size(1:end-1) ./ diff(SendTimeMs);
-figure
-plot(SendTimeMs(1:end-1)/1000, SendBitrateKbps);
-xlabel('Send time [s]');
-ylabel('Send bitrate [kbps]');
-end
-
-%% Subfunctions.
-
-% findReorderedPackets returns the index to all packets that are considered
-% old compared with the largest seen sequence number. The input seqNo must
-% be unwrapped for this to work.
-function reorderIx = findReorderedPackets(seqNo)
-largestSeqNo = seqNo(1);
-reorderIx = [];
-for i = 2:length(seqNo)
- if seqNo(i) < largestSeqNo
- reorderIx = [reorderIx; i]; %#ok<AGROW>
- else
- largestSeqNo = seqNo(i);
- end
-end
-end
-
-%% Auto-generated subfunction.
-function [SeqNo,TimeStamp,SendTime,Size,PT,M,SSRC] = ...
- importfile(filename, startRow, endRow)
-%IMPORTFILE Import numeric data from a text file as column vectors.
-% [SEQNO,TIMESTAMP,SENDTIME,SIZE,PT,M,SSRC] = IMPORTFILE(FILENAME) Reads
-% data from text file FILENAME for the default selection.
-%
-% [SEQNO,TIMESTAMP,SENDTIME,SIZE,PT,M,SSRC] = IMPORTFILE(FILENAME,
-% STARTROW, ENDROW) Reads data from rows STARTROW through ENDROW of text
-% file FILENAME.
-%
-% Example:
-% [SeqNo,TimeStamp,SendTime,Size,PT,M,SSRC] =
-% importfile('rtpdump_recv.txt',2, 123);
-%
-% See also TEXTSCAN.
-
-% Auto-generated by MATLAB on 2015/05/28 09:55:50
-
-%% Initialize variables.
-if nargin<=2
- startRow = 2;
- endRow = inf;
-end
-
-%% Format string for each line of text:
-% column1: double (%f)
-% column2: double (%f)
-% column3: double (%f)
-% column4: double (%f)
-% column5: double (%f)
-% column6: double (%f)
-% column7: text (%s)
-% For more information, see the TEXTSCAN documentation.
-formatSpec = '%5f%11f%11f%6f%6f%3f%s%[^\n\r]';
-
-%% Open the text file.
-fileID = fopen(filename,'r');
-
-%% Read columns of data according to format string.
-% This call is based on the structure of the file used to generate this
-% code. If an error occurs for a different file, try regenerating the code
-% from the Import Tool.
-dataArray = textscan(fileID, formatSpec, endRow(1)-startRow(1)+1, ...
- 'Delimiter', '', 'WhiteSpace', '', 'HeaderLines', startRow(1)-1, ...
- 'ReturnOnError', false);
-for block=2:length(startRow)
- frewind(fileID);
- dataArrayBlock = textscan(fileID, formatSpec, ...
- endRow(block)-startRow(block)+1, 'Delimiter', '', 'WhiteSpace', ...
- '', 'HeaderLines', startRow(block)-1, 'ReturnOnError', false);
- for col=1:length(dataArray)
- dataArray{col} = [dataArray{col};dataArrayBlock{col}];
- end
-end
-
-%% Close the text file.
-fclose(fileID);
-
-%% Post processing for unimportable data.
-% No unimportable data rules were applied during the import, so no post
-% processing code is included. To generate code which works for
-% unimportable data, select unimportable cells in a file and regenerate the
-% script.
-
-%% Allocate imported array to column variable names
-SeqNo = dataArray{:, 1};
-TimeStamp = dataArray{:, 2};
-SendTime = dataArray{:, 3};
-Size = dataArray{:, 4};
-PT = dataArray{:, 5};
-M = dataArray{:, 6};
-SSRC = dataArray{:, 7};
-end
-
« no previous file with comments | « tools/matlab/parseLog.m ('k') | tools/network_emulator/config.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698