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

Side by Side Diff: webrtc/examples/androidapp/src/org/appspot/apprtc/PeerConnectionClient.java

Issue 2550393002: Add FlexFEC settings toggle in Android AppRTCMobile. (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 unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright 2014 The WebRTC Project Authors. All rights reserved. 2 * Copyright 2014 The WebRTC Project Authors. All rights reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
64 public static final String VIDEO_TRACK_ID = "ARDAMSv0"; 64 public static final String VIDEO_TRACK_ID = "ARDAMSv0";
65 public static final String AUDIO_TRACK_ID = "ARDAMSa0"; 65 public static final String AUDIO_TRACK_ID = "ARDAMSa0";
66 public static final String VIDEO_TRACK_TYPE = "video"; 66 public static final String VIDEO_TRACK_TYPE = "video";
67 private static final String TAG = "PCRTCClient"; 67 private static final String TAG = "PCRTCClient";
68 private static final String VIDEO_CODEC_VP8 = "VP8"; 68 private static final String VIDEO_CODEC_VP8 = "VP8";
69 private static final String VIDEO_CODEC_VP9 = "VP9"; 69 private static final String VIDEO_CODEC_VP9 = "VP9";
70 private static final String VIDEO_CODEC_H264 = "H264"; 70 private static final String VIDEO_CODEC_H264 = "H264";
71 private static final String AUDIO_CODEC_OPUS = "opus"; 71 private static final String AUDIO_CODEC_OPUS = "opus";
72 private static final String AUDIO_CODEC_ISAC = "ISAC"; 72 private static final String AUDIO_CODEC_ISAC = "ISAC";
73 private static final String VIDEO_CODEC_PARAM_START_BITRATE = "x-google-start- bitrate"; 73 private static final String VIDEO_CODEC_PARAM_START_BITRATE = "x-google-start- bitrate";
74 private static final String VIDEO_FLEXFEC_FIELDTRIAL = "WebRTC-FlexFEC-03/Enab led/";
74 private static final String AUDIO_CODEC_PARAM_BITRATE = "maxaveragebitrate"; 75 private static final String AUDIO_CODEC_PARAM_BITRATE = "maxaveragebitrate";
75 private static final String AUDIO_ECHO_CANCELLATION_CONSTRAINT = "googEchoCanc ellation"; 76 private static final String AUDIO_ECHO_CANCELLATION_CONSTRAINT = "googEchoCanc ellation";
76 private static final String AUDIO_AUTO_GAIN_CONTROL_CONSTRAINT = "googAutoGain Control"; 77 private static final String AUDIO_AUTO_GAIN_CONTROL_CONSTRAINT = "googAutoGain Control";
77 private static final String AUDIO_HIGH_PASS_FILTER_CONSTRAINT = "googHighpassF ilter"; 78 private static final String AUDIO_HIGH_PASS_FILTER_CONSTRAINT = "googHighpassF ilter";
78 private static final String AUDIO_NOISE_SUPPRESSION_CONSTRAINT = "googNoiseSup pression"; 79 private static final String AUDIO_NOISE_SUPPRESSION_CONSTRAINT = "googNoiseSup pression";
79 private static final String AUDIO_LEVEL_CONTROL_CONSTRAINT = "levelControl"; 80 private static final String AUDIO_LEVEL_CONTROL_CONSTRAINT = "levelControl";
80 private static final String DTLS_SRTP_KEY_AGREEMENT_CONSTRAINT = "DtlsSrtpKeyA greement"; 81 private static final String DTLS_SRTP_KEY_AGREEMENT_CONSTRAINT = "DtlsSrtpKeyA greement";
81 private static final int HD_VIDEO_WIDTH = 1280; 82 private static final int HD_VIDEO_WIDTH = 1280;
82 private static final int HD_VIDEO_HEIGHT = 720; 83 private static final int HD_VIDEO_HEIGHT = 720;
83 private static final int BPS_IN_KBPS = 1000; 84 private static final int BPS_IN_KBPS = 1000;
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
158 public static class PeerConnectionParameters { 159 public static class PeerConnectionParameters {
159 public final boolean videoCallEnabled; 160 public final boolean videoCallEnabled;
160 public final boolean loopback; 161 public final boolean loopback;
161 public final boolean tracing; 162 public final boolean tracing;
162 public final int videoWidth; 163 public final int videoWidth;
163 public final int videoHeight; 164 public final int videoHeight;
164 public final int videoFps; 165 public final int videoFps;
165 public final int videoMaxBitrate; 166 public final int videoMaxBitrate;
166 public final String videoCodec; 167 public final String videoCodec;
167 public final boolean videoCodecHwAcceleration; 168 public final boolean videoCodecHwAcceleration;
169 public final boolean videoFlexfecEnabled;
168 public final int audioStartBitrate; 170 public final int audioStartBitrate;
169 public final String audioCodec; 171 public final String audioCodec;
170 public final boolean noAudioProcessing; 172 public final boolean noAudioProcessing;
171 public final boolean aecDump; 173 public final boolean aecDump;
172 public final boolean useOpenSLES; 174 public final boolean useOpenSLES;
173 public final boolean disableBuiltInAEC; 175 public final boolean disableBuiltInAEC;
174 public final boolean disableBuiltInAGC; 176 public final boolean disableBuiltInAGC;
175 public final boolean disableBuiltInNS; 177 public final boolean disableBuiltInNS;
176 public final boolean enableLevelControl; 178 public final boolean enableLevelControl;
177 private final DataChannelParameters dataChannelParameters; 179 private final DataChannelParameters dataChannelParameters;
178 180
179 public PeerConnectionParameters(boolean videoCallEnabled, boolean loopback, boolean tracing, 181 public PeerConnectionParameters(boolean videoCallEnabled, boolean loopback, boolean tracing,
180 int videoWidth, int videoHeight, int videoFps, int videoMaxBitrate, Stri ng videoCodec, 182 int videoWidth, int videoHeight, int videoFps, int videoMaxBitrate, Stri ng videoCodec,
181 boolean videoCodecHwAcceleration, int audioStartBitrate, String audioCod ec, 183 boolean videoCodecHwAcceleration, boolean videoFlexfecEnabled, int audio StartBitrate,
182 boolean noAudioProcessing, boolean aecDump, boolean useOpenSLES, boolean disableBuiltInAEC, 184 String audioCodec, boolean noAudioProcessing, boolean aecDump, boolean u seOpenSLES,
183 boolean disableBuiltInAGC, boolean disableBuiltInNS, boolean enableLevel Control) { 185 boolean disableBuiltInAEC, boolean disableBuiltInAGC, boolean disableBui ltInNS,
186 boolean enableLevelControl) {
184 this(videoCallEnabled, loopback, tracing, videoWidth, videoHeight, videoFp s, videoMaxBitrate, 187 this(videoCallEnabled, loopback, tracing, videoWidth, videoHeight, videoFp s, videoMaxBitrate,
185 videoCodec, videoCodecHwAcceleration, audioStartBitrate, audioCodec, n oAudioProcessing, 188 videoCodec, videoCodecHwAcceleration, videoFlexfecEnabled, audioStartB itrate, audioCodec,
186 aecDump, useOpenSLES, disableBuiltInAEC, disableBuiltInAGC, disableBui ltInNS, 189 noAudioProcessing, aecDump, useOpenSLES, disableBuiltInAEC, disableBui ltInAGC,
187 enableLevelControl, null); 190 disableBuiltInNS, enableLevelControl, null);
188 } 191 }
189 192
190 public PeerConnectionParameters(boolean videoCallEnabled, boolean loopback, boolean tracing, 193 public PeerConnectionParameters(boolean videoCallEnabled, boolean loopback, boolean tracing,
191 int videoWidth, int videoHeight, int videoFps, int videoMaxBitrate, Stri ng videoCodec, 194 int videoWidth, int videoHeight, int videoFps, int videoMaxBitrate, Stri ng videoCodec,
192 boolean videoCodecHwAcceleration, int audioStartBitrate, String audioCod ec, 195 boolean videoCodecHwAcceleration, boolean videoFlexfecEnabled, int audio StartBitrate,
193 boolean noAudioProcessing, boolean aecDump, boolean useOpenSLES, boolean disableBuiltInAEC, 196 String audioCodec, boolean noAudioProcessing, boolean aecDump, boolean u seOpenSLES,
194 boolean disableBuiltInAGC, boolean disableBuiltInNS, boolean enableLevel Control, 197 boolean disableBuiltInAEC, boolean disableBuiltInAGC, boolean disableBui ltInNS,
195 DataChannelParameters dataChannelParameters) { 198 boolean enableLevelControl, DataChannelParameters dataChannelParameters) {
196 this.videoCallEnabled = videoCallEnabled; 199 this.videoCallEnabled = videoCallEnabled;
197 this.loopback = loopback; 200 this.loopback = loopback;
198 this.tracing = tracing; 201 this.tracing = tracing;
199 this.videoWidth = videoWidth; 202 this.videoWidth = videoWidth;
200 this.videoHeight = videoHeight; 203 this.videoHeight = videoHeight;
201 this.videoFps = videoFps; 204 this.videoFps = videoFps;
202 this.videoMaxBitrate = videoMaxBitrate; 205 this.videoMaxBitrate = videoMaxBitrate;
203 this.videoCodec = videoCodec; 206 this.videoCodec = videoCodec;
207 this.videoFlexfecEnabled = videoFlexfecEnabled;
204 this.videoCodecHwAcceleration = videoCodecHwAcceleration; 208 this.videoCodecHwAcceleration = videoCodecHwAcceleration;
205 this.audioStartBitrate = audioStartBitrate; 209 this.audioStartBitrate = audioStartBitrate;
206 this.audioCodec = audioCodec; 210 this.audioCodec = audioCodec;
207 this.noAudioProcessing = noAudioProcessing; 211 this.noAudioProcessing = noAudioProcessing;
208 this.aecDump = aecDump; 212 this.aecDump = aecDump;
209 this.useOpenSLES = useOpenSLES; 213 this.useOpenSLES = useOpenSLES;
210 this.disableBuiltInAEC = disableBuiltInAEC; 214 this.disableBuiltInAEC = disableBuiltInAEC;
211 this.disableBuiltInAGC = disableBuiltInAGC; 215 this.disableBuiltInAGC = disableBuiltInAGC;
212 this.disableBuiltInNS = disableBuiltInNS; 216 this.disableBuiltInNS = disableBuiltInNS;
213 this.enableLevelControl = enableLevelControl; 217 this.enableLevelControl = enableLevelControl;
(...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after
359 if (peerConnectionParameters.tracing) { 363 if (peerConnectionParameters.tracing) {
360 PeerConnectionFactory.startInternalTracingCapture( 364 PeerConnectionFactory.startInternalTracingCapture(
361 Environment.getExternalStorageDirectory().getAbsolutePath() + File.sep arator 365 Environment.getExternalStorageDirectory().getAbsolutePath() + File.sep arator
362 + "webrtc-trace.txt"); 366 + "webrtc-trace.txt");
363 } 367 }
364 Log.d(TAG, 368 Log.d(TAG,
365 "Create peer connection factory. Use video: " + peerConnectionParameters .videoCallEnabled); 369 "Create peer connection factory. Use video: " + peerConnectionParameters .videoCallEnabled);
366 isError = false; 370 isError = false;
367 371
368 // Initialize field trials. 372 // Initialize field trials.
369 PeerConnectionFactory.initializeFieldTrials(""); 373 if (peerConnectionParameters.videoFlexfecEnabled) {
374 PeerConnectionFactory.initializeFieldTrials(VIDEO_FLEXFEC_FIELDTRIAL);
375 Log.d(TAG, "Enable FlexFEC field trial.");
376 } else {
377 PeerConnectionFactory.initializeFieldTrials("");
378 }
370 379
371 // Check preferred video codec. 380 // Check preferred video codec.
372 preferredVideoCodec = VIDEO_CODEC_VP8; 381 preferredVideoCodec = VIDEO_CODEC_VP8;
373 if (videoCallEnabled && peerConnectionParameters.videoCodec != null) { 382 if (videoCallEnabled && peerConnectionParameters.videoCodec != null) {
374 if (peerConnectionParameters.videoCodec.equals(VIDEO_CODEC_VP9)) { 383 if (peerConnectionParameters.videoCodec.equals(VIDEO_CODEC_VP9)) {
375 preferredVideoCodec = VIDEO_CODEC_VP9; 384 preferredVideoCodec = VIDEO_CODEC_VP9;
376 } else if (peerConnectionParameters.videoCodec.equals(VIDEO_CODEC_H264)) { 385 } else if (peerConnectionParameters.videoCodec.equals(VIDEO_CODEC_H264)) {
377 preferredVideoCodec = VIDEO_CODEC_H264; 386 preferredVideoCodec = VIDEO_CODEC_H264;
378 } 387 }
379 } 388 }
380 Log.d(TAG, "Pereferred video codec: " + preferredVideoCodec); 389 Log.d(TAG, "Preferred video codec: " + preferredVideoCodec);
381 390
382 // Check if ISAC is used by default. 391 // Check if ISAC is used by default.
383 preferIsac = peerConnectionParameters.audioCodec != null 392 preferIsac = peerConnectionParameters.audioCodec != null
384 && peerConnectionParameters.audioCodec.equals(AUDIO_CODEC_ISAC); 393 && peerConnectionParameters.audioCodec.equals(AUDIO_CODEC_ISAC);
385 394
386 // Enable/disable OpenSL ES playback. 395 // Enable/disable OpenSL ES playback.
387 if (!peerConnectionParameters.useOpenSLES) { 396 if (!peerConnectionParameters.useOpenSLES) {
388 Log.d(TAG, "Disable OpenSL ES audio even if device supports it"); 397 Log.d(TAG, "Disable OpenSL ES audio even if device supports it");
389 WebRtcAudioManager.setBlacklistDeviceForOpenSLESUsage(true /* enable */); 398 WebRtcAudioManager.setBlacklistDeviceForOpenSLESUsage(true /* enable */);
390 } else { 399 } else {
(...skipping 850 matching lines...) Expand 10 before | Expand all | Expand 10 after
1241 public void onCreateFailure(final String error) { 1250 public void onCreateFailure(final String error) {
1242 reportError("createSDP error: " + error); 1251 reportError("createSDP error: " + error);
1243 } 1252 }
1244 1253
1245 @Override 1254 @Override
1246 public void onSetFailure(final String error) { 1255 public void onSetFailure(final String error) {
1247 reportError("setSDP error: " + error); 1256 reportError("setSDP error: " + error);
1248 } 1257 }
1249 } 1258 }
1250 } 1259 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698