OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 } |
OLD | NEW |