code: protected void internalEndpointInitialization(final CountDownLatch endpointLatch) {
  		if (this.isWeb()) {
  			WebRtcEndpoint.Builder builder = new WebRtcEndpoint.Builder(pipeline);
  			/*
  			 * if (this.dataChannels) { builder.useDataChannels(); }
  			 */
  			builder.buildAsync(new Continuation<WebRtcEndpoint>() {
  				@Override
  				public void onSuccess(WebRtcEndpoint result) throws Exception {
  					webEndpoint = result;
  
  					webEndpoint.setMaxVideoRecvBandwidth(maxRecvKbps);
  					webEndpoint.setMinVideoRecvBandwidth(minRecvKbps);
  					webEndpoint.setMaxVideoSendBandwidth(maxSendKbps);
  					webEndpoint.setMinVideoSendBandwidth(minSendKbps);
  
  					endpointLatch.countDown();
  					log.trace("EP {}: Created a new WebRtcEndpoint", endpointName);
  					endpointSubscription = registerElemErrListener(webEndpoint);
  				}
  
  				@Override
  				public void onError(Throwable cause) throws Exception {
  					endpointLatch.countDown();
  					log.error("EP {}: Failed to create a new WebRtcEndpoint", endpointName, cause);
  				}
  			});
  		} else {
  			new RtpEndpoint.Builder(pipeline).buildAsync(new Continuation<RtpEndpoint>() {
  				@Override
  				public void onSuccess(RtpEndpoint result) throws Exception {
  					endpoint = result;
  					endpointLatch.countDown();
  					log.trace("EP {}: Created a new RtpEndpoint", endpointName);
  					endpointSubscription = registerElemErrListener(endpoint);
  				}
  
  				@Override
  				public void onError(Throwable cause) throws Exception {
  					endpointLatch.countDown();
  					log.error("EP {}: Failed to create a new RtpEndpoint", endpointName, cause);
  				}
  			});
  		}
  	}
docs: Creates the endpoint (RTP or WebRTC) and any other additional elements (if
  needed).
  
  @param endpointLatch