1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
|
From: Jan Grulich <jgrulich@redhat.com>
Date: Thu, 30 Nov 2023 11:49:00 +0000
Subject: Bug 1844020 - Add option to DeviceInfo::GetDeviceName() identifying a
placeholder device r=pehrsons,webrtc-reviewers
Adds a new parameter "deviceIsPlaceholder" that will be set to true in
case the returned device is not a real device but a placeholder that is
just used to inform about camera device existence.
Differential Revision: https://phabricator.services.mozilla.com/D189929
Mercurial Revision: https://hg.mozilla.org/mozilla-central/rev/ed31b2acb5fbca3e2d0691a64bc52e65952070c0
---
modules/video_capture/linux/device_info_pipewire.cc | 4 +++-
modules/video_capture/linux/device_info_pipewire.h | 3 ++-
modules/video_capture/linux/device_info_v4l2.cc | 3 ++-
modules/video_capture/linux/device_info_v4l2.h | 3 ++-
modules/video_capture/video_capture.h | 3 ++-
modules/video_capture/windows/device_info_ds.cc | 3 ++-
modules/video_capture/windows/device_info_ds.h | 3 ++-
7 files changed, 15 insertions(+), 7 deletions(-)
diff --git a/modules/video_capture/linux/device_info_pipewire.cc b/modules/video_capture/linux/device_info_pipewire.cc
index fc0554f384..f9f08a9c27 100644
--- a/modules/video_capture/linux/device_info_pipewire.cc
+++ b/modules/video_capture/linux/device_info_pipewire.cc
@@ -50,8 +50,10 @@ int32_t DeviceInfoPipeWire::GetDeviceName(uint32_t deviceNumber,
uint32_t deviceUniqueIdUTF8Length,
char* productUniqueIdUTF8,
uint32_t productUniqueIdUTF8Length,
- pid_t* pid) {
+ pid_t* pid,
+ bool* deviceIsPlaceholder) {
RTC_CHECK(pipewire_session_);
+
if (deviceNumber >= NumberOfDevices())
return -1;
diff --git a/modules/video_capture/linux/device_info_pipewire.h b/modules/video_capture/linux/device_info_pipewire.h
index 8a33d75892..00715c94bc 100644
--- a/modules/video_capture/linux/device_info_pipewire.h
+++ b/modules/video_capture/linux/device_info_pipewire.h
@@ -30,7 +30,8 @@ class DeviceInfoPipeWire : public DeviceInfoImpl {
uint32_t deviceUniqueIdUTF8Length,
char* productUniqueIdUTF8 = nullptr,
uint32_t productUniqueIdUTF8Length = 0,
- pid_t* pid = 0) override;
+ pid_t* pid = 0,
+ bool* deviceIsPlaceholder = 0) override;
/*
* Fills the membervariable _captureCapabilities with capabilites for the
* given device name.
diff --git a/modules/video_capture/linux/device_info_v4l2.cc b/modules/video_capture/linux/device_info_v4l2.cc
index 04caaea592..401c38f9c5 100644
--- a/modules/video_capture/linux/device_info_v4l2.cc
+++ b/modules/video_capture/linux/device_info_v4l2.cc
@@ -232,7 +232,8 @@ int32_t DeviceInfoV4l2::GetDeviceName(uint32_t deviceNumber,
uint32_t deviceUniqueIdUTF8Length,
char* /*productUniqueIdUTF8*/,
uint32_t /*productUniqueIdUTF8Length*/,
- pid_t* /*pid*/) {
+ pid_t* /*pid*/,
+ bool* /*deviceIsPlaceholder*/) {
// Travel through /dev/video [0-63]
uint32_t count = 0;
char device[20];
diff --git a/modules/video_capture/linux/device_info_v4l2.h b/modules/video_capture/linux/device_info_v4l2.h
index 0bec3eb765..55415845ad 100644
--- a/modules/video_capture/linux/device_info_v4l2.h
+++ b/modules/video_capture/linux/device_info_v4l2.h
@@ -36,7 +36,8 @@ class DeviceInfoV4l2 : public DeviceInfoImpl {
uint32_t deviceUniqueIdUTF8Length,
char* productUniqueIdUTF8 = 0,
uint32_t productUniqueIdUTF8Length = 0,
- pid_t* pid=0) override;
+ pid_t* pid = 0,
+ bool* deviceIsPlaceholder = 0) override;
/*
* Fills the membervariable _captureCapabilities with capabilites for the
* given device name.
diff --git a/modules/video_capture/video_capture.h b/modules/video_capture/video_capture.h
index 43a6a7f832..f59c34f8b2 100644
--- a/modules/video_capture/video_capture.h
+++ b/modules/video_capture/video_capture.h
@@ -74,7 +74,8 @@ class VideoCaptureModule : public RefCountInterface {
uint32_t deviceUniqueIdUTF8Length,
char* productUniqueIdUTF8 = 0,
uint32_t productUniqueIdUTF8Length = 0,
- pid_t* pid = 0) = 0;
+ pid_t* pid = 0,
+ bool* deviceIsPlaceholder = 0) = 0;
// Returns the number of capabilities this device.
virtual int32_t NumberOfCapabilities(const char* deviceUniqueIdUTF8) = 0;
diff --git a/modules/video_capture/windows/device_info_ds.cc b/modules/video_capture/windows/device_info_ds.cc
index f6927281f3..8ca741239c 100644
--- a/modules/video_capture/windows/device_info_ds.cc
+++ b/modules/video_capture/windows/device_info_ds.cc
@@ -173,7 +173,8 @@ int32_t DeviceInfoDS::GetDeviceName(uint32_t deviceNumber,
uint32_t deviceUniqueIdUTF8Length,
char* productUniqueIdUTF8,
uint32_t productUniqueIdUTF8Length,
- pid_t* pid) {
+ pid_t* pid,
+ bool* deviceIsPlaceholder) {
MutexLock lock(&_apiLock);
const int32_t result = GetDeviceInfo(
deviceNumber, deviceNameUTF8, deviceNameLength, deviceUniqueIdUTF8,
diff --git a/modules/video_capture/windows/device_info_ds.h b/modules/video_capture/windows/device_info_ds.h
index e6dfaed366..a9a1449b99 100644
--- a/modules/video_capture/windows/device_info_ds.h
+++ b/modules/video_capture/windows/device_info_ds.h
@@ -51,7 +51,8 @@ class DeviceInfoDS : public DeviceInfoImpl {
uint32_t deviceUniqueIdUTF8Length,
char* productUniqueIdUTF8,
uint32_t productUniqueIdUTF8Length,
- pid_t* pid) override;
+ pid_t* pid,
+ bool* deviceIsPlaceholder) override;
/*
* Display OS /capture device specific settings dialog
|