private void createPeerConnectionFactoryInternal(Context context) {
    Log.d(
        TAG,
        "Create peer connection factory. Use video: " + peerConnectionParameters.videoCallEnabled);
    isError = false;

    // Initialize field trials.
    PeerConnectionFactory.initializeFieldTrials(FIELD_TRIAL_AUTOMATIC_RESIZE);

    // Check preferred video codec.
    preferredVideoCodec = VIDEO_CODEC_VP8;
    if (videoCallEnabled && peerConnectionParameters.videoCodec != null) {
      if (peerConnectionParameters.videoCodec.equals(VIDEO_CODEC_VP9)) {
        preferredVideoCodec = VIDEO_CODEC_VP9;
      } else if (peerConnectionParameters.videoCodec.equals(VIDEO_CODEC_H264)) {
        preferredVideoCodec = VIDEO_CODEC_H264;
      }
    }
    Log.d(TAG, "Pereferred video codec: " + preferredVideoCodec);

    // Check if ISAC is used by default.
    preferIsac = false;
    if (peerConnectionParameters.audioCodec != null
        && peerConnectionParameters.audioCodec.equals(AUDIO_CODEC_ISAC)) {
      preferIsac = true;
    }

    // Enable/disable OpenSL ES playback.
    if (!peerConnectionParameters.useOpenSLES) {
      Log.d(TAG, "Disable OpenSL ES audio even if device supports it");
      WebRtcAudioManager.setBlacklistDeviceForOpenSLESUsage(true /* enable */);
    } else {
      Log.d(TAG, "Allow OpenSL ES audio if device supports it");
      WebRtcAudioManager.setBlacklistDeviceForOpenSLESUsage(false);
    }

    // Create peer connection factory.
    if (!PeerConnectionFactory.initializeAndroidGlobals(
        context, true, true, peerConnectionParameters.videoCodecHwAcceleration)) {
      events.onPeerConnectionError("Failed to initializeAndroidGlobals");
    }
    factory = new PeerConnectionFactory();
    if (options != null) {
      Log.d(TAG, "Factory networkIgnoreMask option: " + options.networkIgnoreMask);
      factory.setOptions(options);
    }
    Log.d(TAG, "Peer connection factory created.");
  }
예제 #2
0
 private void createPeerConnectionFactoryInternal(Context context, EGLContext renderEGLContext) {
   Log.d(
       TAG,
       "Create peer connection factory with EGLContext "
           + renderEGLContext
           + ". Use video: "
           + peerConnectionParameters.videoCallEnabled);
   isError = false;
   // Check if VP9 is used by default.
   if (videoCallEnabled
       && peerConnectionParameters.videoCodec != null
       && peerConnectionParameters.videoCodec.equals(VIDEO_CODEC_VP9)) {
     PeerConnectionFactory.initializeFieldTrials(FIELD_TRIAL_VP9);
   } else {
     PeerConnectionFactory.initializeFieldTrials(null);
   }
   // Check if H.264 is used by default.
   preferH264 = false;
   if (videoCallEnabled
       && peerConnectionParameters.videoCodec != null
       && peerConnectionParameters.videoCodec.equals(VIDEO_CODEC_H264)) {
     preferH264 = true;
   }
   // Check if ISAC is used by default.
   preferIsac = false;
   if (peerConnectionParameters.audioCodec != null
       && peerConnectionParameters.audioCodec.equals(AUDIO_CODEC_ISAC)) {
     preferIsac = true;
   }
   if (!PeerConnectionFactory.initializeAndroidGlobals(
       context, true, true, peerConnectionParameters.videoCodecHwAcceleration, renderEGLContext)) {
     events.onPeerConnectionError("Failed to initializeAndroidGlobals");
   }
   factory = new PeerConnectionFactory();
   if (options != null) {
     Log.d(TAG, "Factory networkIgnoreMask option: " + options.networkIgnoreMask);
     factory.setOptions(options);
   }
   Log.d(TAG, "Peer connection factory created.");
 }