• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  *  Copyright 2020 The WebRTC project authors. All Rights Reserved.
3  *
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
6  *  tree. An additional intellectual property rights grant can be found
7  *  in the file PATENTS.  All contributing project authors may
8  *  be found in the AUTHORS file in the root of the source tree.
9  */
10 
11 package org.webrtc;
12 
13 import static org.junit.Assert.assertEquals;
14 import static org.junit.Assert.assertNotNull;
15 import static org.junit.Assert.assertNull;
16 import static org.junit.Assert.assertTrue;
17 import static org.mockito.Mockito.mock;
18 
19 import android.support.test.InstrumentationRegistry;
20 import androidx.test.filters.SmallTest;
21 import java.util.Arrays;
22 import org.junit.Before;
23 import org.junit.Test;
24 import org.webrtc.RtpParameters.DegradationPreference;
25 
26 /** Unit-tests for {@link RtpSender}. */
27 public class RtpSenderTest {
28   private PeerConnectionFactory factory;
29   private PeerConnection pc;
30 
31   @Before
setUp()32   public void setUp() {
33     PeerConnectionFactory.initialize(PeerConnectionFactory.InitializationOptions
34                                          .builder(InstrumentationRegistry.getTargetContext())
35                                          .setNativeLibraryName(TestConstants.NATIVE_LIBRARY)
36                                          .createInitializationOptions());
37 
38     factory = PeerConnectionFactory.builder().createPeerConnectionFactory();
39 
40     PeerConnection.RTCConfiguration config = new PeerConnection.RTCConfiguration(Arrays.asList());
41     // RtpTranceiver is part of new unified plan semantics.
42     config.sdpSemantics = PeerConnection.SdpSemantics.UNIFIED_PLAN;
43     pc = factory.createPeerConnection(config, mock(PeerConnection.Observer.class));
44   }
45 
46   /** Test checking the enum values for DegradationPreference stay consistent */
47   @Test
48   @SmallTest
testSetDegradationPreference()49   public void testSetDegradationPreference() throws Exception {
50     RtpTransceiver transceiver = pc.addTransceiver(MediaStreamTrack.MediaType.MEDIA_TYPE_VIDEO);
51     RtpSender sender = transceiver.getSender();
52 
53     RtpParameters parameters = sender.getParameters();
54     assertNotNull(parameters);
55     assertNull(parameters.degradationPreference);
56 
57     parameters.degradationPreference = DegradationPreference.MAINTAIN_FRAMERATE;
58     assertTrue(sender.setParameters(parameters));
59     parameters = sender.getParameters();
60     assertEquals(DegradationPreference.MAINTAIN_FRAMERATE, parameters.degradationPreference);
61 
62     parameters.degradationPreference = DegradationPreference.MAINTAIN_RESOLUTION;
63     assertTrue(sender.setParameters(parameters));
64     parameters = sender.getParameters();
65     assertEquals(DegradationPreference.MAINTAIN_RESOLUTION, parameters.degradationPreference);
66 
67     parameters.degradationPreference = DegradationPreference.BALANCED;
68     assertTrue(sender.setParameters(parameters));
69     parameters = sender.getParameters();
70     assertEquals(DegradationPreference.BALANCED, parameters.degradationPreference);
71 
72     parameters.degradationPreference = DegradationPreference.DISABLED;
73     assertTrue(sender.setParameters(parameters));
74     parameters = sender.getParameters();
75     assertEquals(DegradationPreference.DISABLED, parameters.degradationPreference);
76   }
77 }
78