42
42
43
43
import io .getstream .webrtc .flutter .audio .AudioSwitchManager ;
44
44
import io .getstream .webrtc .flutter .audio .AudioUtils ;
45
+ import io .getstream .webrtc .flutter .audio .LocalAudioTrack ;
45
46
import io .getstream .webrtc .flutter .record .AudioChannel ;
46
47
import io .getstream .webrtc .flutter .record .AudioSamplesInterceptor ;
47
48
import io .getstream .webrtc .flutter .record .MediaRecorderImpl ;
56
57
import io .getstream .webrtc .flutter .videoEffects .VideoFrameProcessor ;
57
58
import io .getstream .webrtc .flutter .videoEffects .VideoEffectProcessor ;
58
59
import io .getstream .webrtc .flutter .videoEffects .ProcessorProvider ;
60
+ import io .getstream .webrtc .flutter .video .LocalVideoTrack ;
59
61
60
62
import org .webrtc .AudioSource ;
61
63
import org .webrtc .AudioTrack ;
@@ -383,7 +385,9 @@ private ConstraintsMap getUserAudio(ConstraintsMap constraints, MediaStream stre
383
385
384
386
if (deviceId != null ) {
385
387
try {
386
- setPreferredInputDevice (deviceId );
388
+ if (VERSION .SDK_INT >= VERSION_CODES .M ) {
389
+ setPreferredInputDevice (deviceId );
390
+ }
387
391
} catch (Exception e ) {
388
392
Log .e (TAG , "setPreferredInputDevice failed" , e );
389
393
}
@@ -392,7 +396,7 @@ private ConstraintsMap getUserAudio(ConstraintsMap constraints, MediaStream stre
392
396
AudioTrack track = pcFactory .createAudioTrack (trackId , audioSource );
393
397
stream .addTrack (track );
394
398
395
- stateProvider .putLocalTrack (track .id (), track );
399
+ stateProvider .putLocalTrack (track .id (), new LocalAudioTrack ( track ) );
396
400
397
401
ConstraintsMap trackParams = new ConstraintsMap ();
398
402
trackParams .putBoolean ("enabled" , track .enabled ());
@@ -403,7 +407,9 @@ private ConstraintsMap getUserAudio(ConstraintsMap constraints, MediaStream stre
403
407
trackParams .putBoolean ("remote" , false );
404
408
405
409
if (deviceId == null ) {
406
- deviceId = "" + getPreferredInputDevice (preferredInput );
410
+ if (VERSION .SDK_INT >= VERSION_CODES .M ) {
411
+ deviceId = "" + getPreferredInputDevice (preferredInput );
412
+ }
407
413
}
408
414
409
415
ConstraintsMap settings = new ConstraintsMap ();
@@ -522,7 +528,7 @@ protected void onReceiveResult(int requestCode, Bundle resultData) {
522
528
523
529
private void getDisplayMedia (final Result result , final MediaStream mediaStream , final Intent mediaProjectionData ) {
524
530
/* Create ScreenCapture */
525
- MediaStreamTrack [] tracks = new MediaStreamTrack [ 1 ] ;
531
+ VideoTrack displayTrack = null ;
526
532
VideoCapturer videoCapturer = null ;
527
533
videoCapturer =
528
534
new OrientationAwareScreenCapturer (
@@ -570,41 +576,31 @@ public void onStop() {
570
576
String trackId = stateProvider .getNextTrackUUID ();
571
577
mVideoCapturers .put (trackId , info );
572
578
573
- tracks [ 0 ] = pcFactory .createVideoTrack (trackId , videoSource );
579
+ displayTrack = pcFactory .createVideoTrack (trackId , videoSource );
574
580
575
581
ConstraintsArray audioTracks = new ConstraintsArray ();
576
582
ConstraintsArray videoTracks = new ConstraintsArray ();
577
583
ConstraintsMap successResult = new ConstraintsMap ();
578
584
579
- for (MediaStreamTrack track : tracks ) {
580
- if (track == null ) {
581
- continue ;
582
- }
585
+ if (displayTrack != null ) {
586
+ String id = displayTrack .id ();
583
587
584
- String id = track .id ();
588
+ LocalVideoTrack displayLocalVideoTrack = new LocalVideoTrack (displayTrack );
589
+ videoSource .setVideoProcessor (displayLocalVideoTrack );
585
590
586
- if (track instanceof AudioTrack ) {
587
- mediaStream .addTrack ((AudioTrack ) track );
588
- } else {
589
- mediaStream .addTrack ((VideoTrack ) track );
590
- }
591
- stateProvider .putLocalTrack (id , track );
591
+ stateProvider .putLocalTrack (id , displayLocalVideoTrack );
592
592
593
593
ConstraintsMap track_ = new ConstraintsMap ();
594
- String kind = track .kind ();
594
+ String kind = displayTrack .kind ();
595
595
596
- track_ .putBoolean ("enabled" , track .enabled ());
596
+ track_ .putBoolean ("enabled" , displayTrack .enabled ());
597
597
track_ .putString ("id" , id );
598
598
track_ .putString ("kind" , kind );
599
599
track_ .putString ("label" , kind );
600
- track_ .putString ("readyState" , track .state ().toString ());
600
+ track_ .putString ("readyState" , displayTrack .state ().toString ());
601
601
track_ .putBoolean ("remote" , false );
602
602
603
- if (track instanceof AudioTrack ) {
604
- audioTracks .pushMap (track_ );
605
- } else {
606
- videoTracks .pushMap (track_ );
607
- }
603
+ videoTracks .pushMap (track_ );
608
604
}
609
605
610
606
String streamId = mediaStream .getId ();
@@ -758,6 +754,13 @@ private ConstraintsMap getUserVideo(ConstraintsMap constraints, MediaStream medi
758
754
deviceId = result .first ;
759
755
VideoCapturer videoCapturer = result .second ;
760
756
757
+ if (facingMode == null && cameraEnumerator .isFrontFacing (deviceId )) {
758
+ facingMode = "user" ;
759
+ } else if (facingMode == null && cameraEnumerator .isBackFacing (deviceId )) {
760
+ facingMode = "environment" ;
761
+ }
762
+ // else, leave facingMode as it was
763
+
761
764
PeerConnectionFactory pcFactory = stateProvider .getPeerConnectionFactory ();
762
765
VideoSource videoSource = pcFactory .createVideoSource (false );
763
766
String threadName = Thread .currentThread ().getName () + "_texture_camera_thread" ;
@@ -824,7 +827,10 @@ private ConstraintsMap getUserVideo(ConstraintsMap constraints, MediaStream medi
824
827
VideoTrack track = pcFactory .createVideoTrack (trackId , videoSource );
825
828
mediaStream .addTrack (track );
826
829
827
- stateProvider .putLocalTrack (track .id (), track );
830
+ LocalVideoTrack localVideoTrack = new LocalVideoTrack (track );
831
+ videoSource .setVideoProcessor (localVideoTrack );
832
+
833
+ stateProvider .putLocalTrack (track .id (),localVideoTrack );
828
834
829
835
ConstraintsMap trackParams = new ConstraintsMap ();
830
836
0 commit comments