void getStats(String trackId, final Callback cb) { MediaStreamTrack track = null; if (trackId == null || trackId.isEmpty() || (track = webRTCModule.mMediaStreamTracks.get(trackId)) != null) { peerConnection.getStats( new StatsObserver() { @Override public void onComplete(StatsReport[] reports) { cb.invoke(convertWebRTCStats(reports)); } }, track); } else { Log.e(TAG, "peerConnectionGetStats() MediaStreamTrack not found for id: " + trackId); } }
@SuppressWarnings("deprecation") // TODO(sakal): getStats is deprecated. public boolean getStats() { if (peerConnection == null || isError) { return false; } boolean success = peerConnection.getStats(new StatsObserver() { @Override public void onComplete(final StatsReport[] reports) { events.onPeerConnectionStatsReady(reports); } }, null); if (!success) { Log.e(TAG, "getStats() returns false!"); return false; } return true; }
private void getStats() { if (peerConnection == null || isError) { return; } boolean success = peerConnection.getStats(new StatsObserver() { @Override public void onComplete(final StatsReport[] reports) { events.onPeerConnectionStatsReady(reports); } }, null); if (!success) { Log.e(TAG, "getStats() returns false!"); } }
private Map<String, String> getReportMap(StatsReport report) { Map<String, String> reportMap = new HashMap<String, String>(); for (StatsReport.Value value : report.values) { reportMap.put(value.name, value.value); } return reportMap; }
@Override public void onPeerConnectionStatsReady(final StatsReport[] reports) { runOnUiThread(new Runnable() { @Override public void run() { if (!isError && iceConnected) { hudFragment.updateEncoderStatistics(reports); } } }); }
@Override public void onPeerConnectionStatsReady(final StatsReport[] reports) { runOnUiThread(new Runnable() { @Override public void run() { if (!isError && iceConnected) { updateEncoderStatistics(reports); } } }); }
private void updateHUD(StatsReport[] reports) { StringBuilder builder = new StringBuilder(); for (StatsReport report : reports) { // bweforvideo to show statistics for video Bandwidth Estimation, // which is global per-session. if (report.id.equals("bweforvideo")) { for (StatsReport.Value value : report.values) { String name = value.name.replace("goog", "") .replace("Available", "").replace("Bandwidth", "") .replace("Bitrate", "").replace("Enc", ""); builder.append(name).append("=").append(value.value) .append(" "); } builder.append("\n"); } else if (report.type.equals("googCandidatePair")) { String activeConnectionStats = getActiveConnectionStats(report); if (activeConnectionStats == null) { continue; } builder.append(activeConnectionStats); } else { continue; } builder.append("\n"); } hudView.setText(builder.toString() + hudView.getText()); }
@Override public void onPeerConnectionStatsReady(final StatsReport[] reports) { Handler mainHandler = new Handler(device.getMainLooper()); Runnable myRunnable = new Runnable() { @Override public void run() { // by the time stats are returned (when requested at disconnect(), iceConnected might have transitioned to disconnected webrtcReportsJsonString = webrtcStatsReports2JsonString(reports); try { //String statsJsonString = webrtcReportsJsonString; String statsJsonString = "WebRTC getStats() reports in json format: " + new JSONObject(webrtcReportsJsonString).toString(3); //RCLogger.i(TAG, "Stats: " + statsJsonString); // Logcat enforces a max size to logged messages, so to avoid getting truncated logs, let's break // the json reports that tend to be huge in 1000-byte chunks final int CHUNK_SIZE = 1000; for (int i = 0; i <= statsJsonString.length() / CHUNK_SIZE; i++) { int start = i * CHUNK_SIZE; int end = (i + 1) * CHUNK_SIZE; end = end > statsJsonString.length() ? statsJsonString.length() : end; RCLogger.i(TAG, statsJsonString.substring(start, end)); } } catch (JSONException e) { e.printStackTrace(); } handleDisconnect(null); } }; mainHandler.post(myRunnable); }
public void onCallStatsReceived(StatsReport[] report , CallStatsAPIListener listener) { //Log.d(TAG,"Call stats received"); for(int i = 0;i<report.length;i++) { //Log.d(TAG,"report "+report[i].toString()); } listener.onSucess(); }
private void updateHUD(StatsReport[] reports) { StringBuilder builder = new StringBuilder(); for (StatsReport report : reports) { if (!report.id.equals("bweforvideo")) { continue; } for (StatsReport.Value value : report.values) { String name = value.name.replace("goog", "").replace("Available", "") .replace("Bandwidth", "").replace("Bitrate", "").replace("Enc", ""); builder.append(name).append("=").append(value.value).append(" "); } builder.append("\n"); } hudView.setText(builder.toString() + hudView.getText()); }
@Override public void onPeerConnectionStatsReady(StatsReport[] reports) {}
@Override public void onIceServers(List<PeerConnection.IceServer> iceServers) { factory = new PeerConnectionFactory(); MediaConstraints pcConstraints = appRtcClient.pcConstraints(); pcConstraints.optional.add( new MediaConstraints.KeyValuePair("RtpDataChannels", "true")); pc = factory.createPeerConnection(iceServers, pcConstraints, pcObserver); createDataChannelToRegressionTestBug2302(pc); // See method comment. // Uncomment to get ALL WebRTC tracing and SENSITIVE libjingle logging. // NOTE: this _must_ happen while |factory| is alive! // Logging.enableTracing( // "logcat:", // EnumSet.of(Logging.TraceLevel.TRACE_ALL), // Logging.Severity.LS_SENSITIVE); { final PeerConnection finalPC = pc; final Runnable repeatedStatsLogger = new Runnable() { public void run() { synchronized (quit[0]) { if (quit[0]) { return; } final Runnable runnableThis = this; if (hudView.getVisibility() == View.INVISIBLE) { vsv.postDelayed(runnableThis, 1000); return; } boolean success = finalPC.getStats(new StatsObserver() { public void onComplete(final StatsReport[] reports) { runOnUiThread(new Runnable() { public void run() { updateHUD(reports); } }); for (StatsReport report : reports) { Log.d(TAG, "Stats: " + report.toString()); } vsv.postDelayed(runnableThis, 1000); } }, null); if (!success) { throw new RuntimeException("getStats() return false!"); } } } }; vsv.postDelayed(repeatedStatsLogger, 1000); } { logAndToast("Creating local video source..."); MediaStream lMS = factory.createLocalMediaStream("ARDAMS"); if (appRtcClient.videoConstraints() != null) { VideoCapturer capturer = getVideoCapturer(); videoSource = factory.createVideoSource( capturer, appRtcClient.videoConstraints()); VideoTrack videoTrack = factory.createVideoTrack("ARDAMSv0", videoSource); videoTrack.addRenderer(new VideoRenderer(localRender)); lMS.addTrack(videoTrack); } if (appRtcClient.audioConstraints() != null) { lMS.addTrack(factory.createAudioTrack( "ARDAMSa0", factory.createAudioSource(appRtcClient.audioConstraints()))); } pc.addStream(lMS, new MediaConstraints()); } logAndToast("Waiting for ICE candidates..."); }
@Override public void onIceServers(List<PeerConnection.IceServer> iceServers) { factory = new PeerConnectionFactory(); pc = factory.createPeerConnection( iceServers, appRtcClient.pcConstraints(), pcObserver); // Uncomment to get ALL WebRTC tracing and SENSITIVE libjingle logging. // NOTE: this _must_ happen while |factory| is alive! // Logging.enableTracing( // "logcat:", // EnumSet.of(Logging.TraceLevel.TRACE_ALL), // Logging.Severity.LS_SENSITIVE); { final PeerConnection finalPC = pc; final Runnable repeatedStatsLogger = new Runnable() { public void run() { synchronized (quit[0]) { if (quit[0]) { return; } final Runnable runnableThis = this; boolean success = finalPC.getStats(new StatsObserver() { public void onComplete(StatsReport[] reports) { for (StatsReport report : reports) { Log.d(TAG, "Stats: " + report.toString()); } vsv.postDelayed(runnableThis, 10000); } }, null); if (!success) { throw new RuntimeException("getStats() return false!"); } } } }; vsv.postDelayed(repeatedStatsLogger, 10000); } { logAndToast("Creating local video source..."); MediaStream lMS = factory.createLocalMediaStream("ARDAMS"); if (appRtcClient.videoConstraints() != null) { VideoCapturer capturer = getVideoCapturer(); videoSource = factory.createVideoSource( capturer, appRtcClient.videoConstraints()); VideoTrack videoTrack = factory.createVideoTrack("ARDAMSv0", videoSource); videoTrack.addRenderer(new VideoRenderer(new VideoCallbacks( vsv, VideoStreamsView.Endpoint.LOCAL))); lMS.addTrack(videoTrack); } lMS.addTrack(factory.createAudioTrack("ARDAMSa0")); pc.addStream(lMS, new MediaConstraints()); } logAndToast("Waiting for ICE candidates..."); }
/** * Callback fired once peer connection statistics is ready. */ void onPeerConnectionStatsReady(final StatsReport[] reports);