Skip to content

Commit 2f92e11

Browse files
committed
MediaDevices: device and capabilities retrieval
1 parent 57277ac commit 2f92e11

File tree

14 files changed

+343
-240
lines changed

14 files changed

+343
-240
lines changed

webrtc-demo/webrtc-demo-api/src/main/java/dev/onvoid/webrtc/demo/presenter/AudioSettingsPresenter.java

+9-13
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@
1919
import dev.onvoid.webrtc.demo.config.AudioConfiguration;
2020
import dev.onvoid.webrtc.demo.config.Configuration;
2121
import dev.onvoid.webrtc.demo.view.AudioSettingsView;
22+
import dev.onvoid.webrtc.media.MediaDevices;
2223
import dev.onvoid.webrtc.media.audio.AudioDevice;
23-
import dev.onvoid.webrtc.media.audio.AudioDeviceModule;
2424

2525
import java.util.List;
2626

@@ -40,25 +40,21 @@ public class AudioSettingsPresenter extends Presenter<AudioSettingsView> {
4040

4141
@Override
4242
public void initialize() {
43-
AudioDeviceModule audioModule = new AudioDeviceModule();
43+
var renderDevices = MediaDevices.getAudioRenderDevices();
44+
var captureDevices = MediaDevices.getAudioCaptureDevices();
4445

45-
var playoutDevices = audioModule.getPlayoutDevices();
46-
var recordingDevices = audioModule.getRecordingDevices();
46+
var renderDevice = getAudioDevice(renderDevices, config.getPlayoutDevice());
47+
var captureDevice = getAudioDevice(captureDevices, config.getRecordingDevice());
4748

48-
var playoutDevice = getAudioDevice(playoutDevices, config.getPlayoutDevice());
49-
var recordingDevice = getAudioDevice(recordingDevices, config.getRecordingDevice());
49+
config.setPlayoutDevice(renderDevice);
50+
config.setRecordingDevice(captureDevice);
5051

51-
config.setPlayoutDevice(playoutDevice);
52-
config.setRecordingDevice(recordingDevice);
53-
54-
view.setAudioPlayoutDevices(playoutDevices);
55-
view.setAudioRecordingDevices(recordingDevices);
52+
view.setAudioPlayoutDevices(renderDevices);
53+
view.setAudioRecordingDevices(captureDevices);
5654
view.setAudioPlayoutDevice(config.playoutDeviceProperty());
5755
view.setAudioRecordingDevice(config.recordingDeviceProperty());
5856
view.setReceiveAudio(config.receiveAudioProperty());
5957
view.setSendAudio(config.sendAudioProperty());
60-
61-
audioModule.dispose();
6258
}
6359

6460
private AudioDevice getAudioDevice(List<AudioDevice> devices, AudioDevice device) {

webrtc-demo/webrtc-demo-api/src/main/java/dev/onvoid/webrtc/demo/presenter/VideoSettingsPresenter.java

+4-7
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,9 @@
1919
import dev.onvoid.webrtc.demo.config.Configuration;
2020
import dev.onvoid.webrtc.demo.config.VideoConfiguration;
2121
import dev.onvoid.webrtc.demo.view.VideoSettingsView;
22+
import dev.onvoid.webrtc.media.MediaDevices;
2223
import dev.onvoid.webrtc.media.video.VideoCaptureCapability;
2324
import dev.onvoid.webrtc.media.video.VideoDevice;
24-
import dev.onvoid.webrtc.media.video.VideoDeviceModule;
2525

2626
import java.util.Comparator;
2727
import java.util.List;
@@ -32,26 +32,23 @@ public class VideoSettingsPresenter extends Presenter<VideoSettingsView> {
3232

3333
private final VideoConfiguration config;
3434

35-
private final VideoDeviceModule videoModule;
36-
3735

3836
@Inject
3937
VideoSettingsPresenter(VideoSettingsView view, Configuration config) {
4038
super(view);
4139

4240
this.config = config.getVideoConfiguration();
43-
this.videoModule = new VideoDeviceModule();
4441
}
4542

4643
@Override
4744
public void initialize() {
48-
var devices = videoModule.getCaptureDevices();
45+
var devices = MediaDevices.getVideoCaptureDevices();
4946
var device = config.getCaptureDevice();
5047

5148
int devIndex = devices.indexOf(device);
5249
device = (devIndex < 0) ? devices.get(0) : devices.get(devIndex);
5350

54-
var capabilities = videoModule.getCaptureCapabilities(device);
51+
var capabilities = MediaDevices.getVideoCaptureCapabilities(device);
5552
capabilities.sort(new VideoCaptureCapabilityComparator());
5653
var capability = getCaptureCapability(capabilities);
5754

@@ -71,7 +68,7 @@ public void initialize() {
7168
}
7269

7370
private void onVideoCaptureDevice(VideoDevice device) {
74-
var capabilities = videoModule.getCaptureCapabilities(device);
71+
var capabilities = MediaDevices.getVideoCaptureCapabilities(device);
7572
capabilities.sort(new VideoCaptureCapabilityComparator());
7673
var capability = getCaptureCapability(capabilities);
7774

webrtc-demo/webrtc-demo-javafx/src/main/java/dev/onvoid/webrtc/demo/javafx/factory/DeviceListCell.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ protected void updateItem(Device item, boolean empty) {
3434
setText(null);
3535
}
3636
else {
37-
setText(item.name);
37+
setText(item.getName());
3838
}
3939
}
4040

webrtc-jni/include/JNI_AudioDeviceModule.h

-16
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

webrtc-jni/include/JNI_MediaDevices.h

+45
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

webrtc-jni/include/JNI_VideoDeviceModule.h

-29
This file was deleted.

webrtc-jni/src/JNI_AudioDeviceModule.cpp

-44
Original file line numberDiff line numberDiff line change
@@ -53,50 +53,6 @@ JNIEXPORT void JNICALL Java_dev_onvoid_webrtc_media_audio_AudioDeviceModule_init
5353
}
5454
}
5555

56-
JNIEXPORT jobject JNICALL Java_dev_onvoid_webrtc_media_audio_AudioDeviceModule_getPlayoutDevices
57-
(JNIEnv * env, jobject caller)
58-
{
59-
webrtc::AudioDeviceModule * audioModule = GetHandle<webrtc::AudioDeviceModule>(env, caller);
60-
CHECK_HANDLEV(audioModule, nullptr);
61-
62-
char name[webrtc::kAdmMaxDeviceNameSize];
63-
char guid[webrtc::kAdmMaxGuidSize];
64-
65-
int16_t deviceCount = audioModule->PlayoutDevices();
66-
67-
jni::JavaArrayList deviceList(env, deviceCount);
68-
69-
for (int i = 0; i < deviceCount; ++i) {
70-
if (audioModule->PlayoutDeviceName(i, name, guid) == 0) {
71-
deviceList.add(jni::Device::toJavaAudioDevice(env, name, guid));
72-
}
73-
}
74-
75-
return deviceList.listObject().release();
76-
}
77-
78-
JNIEXPORT jobject JNICALL Java_dev_onvoid_webrtc_media_audio_AudioDeviceModule_getRecordingDevices
79-
(JNIEnv * env, jobject caller)
80-
{
81-
webrtc::AudioDeviceModule * audioModule = GetHandle<webrtc::AudioDeviceModule>(env, caller);
82-
CHECK_HANDLEV(audioModule, nullptr);
83-
84-
char name[webrtc::kAdmMaxDeviceNameSize];
85-
char guid[webrtc::kAdmMaxGuidSize];
86-
87-
int16_t deviceCount = audioModule->RecordingDevices();
88-
89-
jni::JavaArrayList deviceList(env, deviceCount);
90-
91-
for (int i = 0; i < deviceCount; ++i) {
92-
if (audioModule->RecordingDeviceName(i, name, guid) == 0) {
93-
deviceList.add(jni::Device::toJavaAudioDevice(env, name, guid));
94-
}
95-
}
96-
97-
return deviceList.listObject().release();
98-
}
99-
10056
JNIEXPORT void JNICALL Java_dev_onvoid_webrtc_media_audio_AudioDeviceModule_setPlayoutDevice
10157
(JNIEnv * env, jobject caller, jobject device)
10258
{

0 commit comments

Comments
 (0)