diff --git a/go.mod b/go.mod index 532b535..42a262d 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module github.com/pion/mediadevices go 1.13 require ( - github.com/blackjack/webcam v0.0.0-20220329180758-ba064708e165 + github.com/blackjack/webcam v0.0.0-20230411204030-32744c21431f github.com/gen2brain/malgo v0.11.10 github.com/google/uuid v1.3.0 github.com/kbinani/screenshot v0.0.0-20210720154843-7d3a670d8329 @@ -14,5 +14,6 @@ require ( github.com/pion/webrtc/v3 v3.1.59 github.com/stretchr/testify v1.8.2 golang.org/x/image v0.5.0 + golang.org/x/sys v0.7.0 // indirect gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect ) diff --git a/go.sum b/go.sum index d5b6740..6690cad 100644 --- a/go.sum +++ b/go.sum @@ -1,5 +1,5 @@ -github.com/blackjack/webcam v0.0.0-20220329180758-ba064708e165 h1:QsIbRyO2tn5eSJZ/skuDqSTo0GWI5H4G1AT7Mm2H0Nw= -github.com/blackjack/webcam v0.0.0-20220329180758-ba064708e165/go.mod h1:G0X+rEqYPWSq0dG8OMf8M446MtKytzpPjgS3HbdOJZ4= +github.com/blackjack/webcam v0.0.0-20230411204030-32744c21431f h1:qBxp6Oz8y0AfeqjrYcHaYdfWQf+vUXAwgZ+GWnTtd/E= +github.com/blackjack/webcam v0.0.0-20230411204030-32744c21431f/go.mod h1:G0X+rEqYPWSq0dG8OMf8M446MtKytzpPjgS3HbdOJZ4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -145,8 +145,9 @@ golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.7.0 h1:3jlCCIQZPdOYu1h8BkNvLz8Kgwtae2cagcG/VamtZRU= +golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= diff --git a/pkg/driver/camera/camera_linux.go b/pkg/driver/camera/camera_linux.go index 5a04298..8004c58 100644 --- a/pkg/driver/camera/camera_linux.go +++ b/pkg/driver/camera/camera_linux.go @@ -112,7 +112,22 @@ func discover(discovered map[string]struct{}, pattern string) { if reallink == prioritizedDevice { priority = driver.PriorityHigh } + + name := "" + busInfo := "" + if webcamCam, err := webcam.Open(cam.path); err == nil { + name, _ = webcamCam.GetName() + busInfo, _ = webcamCam.GetBusInfo() + } + driver.GetManager().Register(cam, driver.Info{ + // Source: https://www.kernel.org/doc/html/v4.9/media/uapi/v4l/vidioc-querycap.html + // Name of the device, a NUL-terminated UTF-8 string. For example: “Yoyodyne TV/FM”. One driver may support + // different brands or models of video hardware. This information is intended for users, for example in a + // menu of available devices. Since multiple TV cards of the same brand may be installed which are + // supported by the same driver, this name should be combined with the character device file name + // (e.g. /dev/video2) or the bus_info string to avoid ambiguities. + Name: name + LabelSeparator + busInfo, Label: label + LabelSeparator + reallink, DeviceType: driver.Camera, Priority: priority,