33 Commits

Author SHA1 Message Date
Lukas Herman c98b3b0909 Enhance driver discovery logging 2020-10-30 17:32:40 -07:00
Lukas Herman 2f5e4ee914 New mediadevices design
Changelog:
  * Better support for non-webrtc use cases
  * Enable multiple readers
  * Enhance codec selectors
  * Update APIs to reflect on the new v3 webrtc design
  * Cleaner APIs
2020-10-30 00:33:55 -07:00
Lukas Herman 70f7360b92 Enhance failed to find driver error message 2020-09-11 12:39:48 -04:00
Lukas Herman 8d7947b594 Fix invalid constraints merging 2020-06-03 11:36:04 -04:00
Atsushi Watanabe 00eca231a7 Select by DeviceID using StringConstraint 2020-05-24 11:15:29 -04:00
Atsushi Watanabe ecff5e63a5 prop: support ranged/exact/oneof constraints 2020-05-24 10:26:16 +09:00
Lukas Herman 8127ce3be6 Refractor track to be more DRY
Resolves https://github.com/pion/mediadevices/issues/141

 * Remove newVideoTrack and newAudioTrack
 * Add a generic encoderBuilder struct
 * Add newVideoEncoderBuilders and newAudioEncoderBuilders helpers
 * Update sampler to be functional and add support for audio sampler
 * Reduce boilerplates by using closure
2020-04-18 23:51:09 -04:00
Lukas Herman e091067e8e Add support for non-discrete constraints
Resolves https://github.com/pion/mediadevices/issues/61

* Add a Merge method in prop
* Replace a manual merge in mediadevices in best property selection
  with the new Merge method
2020-02-19 21:07:27 -08:00
Atsushi Watanabe 2bac44aa8a Close drivers on stream initialization failure
In GetUserMedia and GetDisplayMedia, driver was left opened if
initialization failure. Since Trackers are not returned on error,
there was no way to close them.
This commit closes Trackers on GetUserMedia/GetDisplayMedia failure.
2020-02-19 20:21:21 -08:00
Atsushi Watanabe 53d55a30e5 Add driver priority information
Make system default device selected by default.
2020-02-14 21:08:47 -08:00
Atsushi Watanabe c501f06326 Add driver.FilterAnd/Not
Simplify the logical operations in driver selection.
2020-02-14 12:22:03 -08:00
Lukas Herman 9917591ef4 Add DeviceType to MediaDeviceInfo 2020-02-14 12:22:03 -08:00
Lukas Herman 350fab996e Exclude screen capture devices from selectVideo 2020-02-14 12:22:03 -08:00
Lukas Herman ed2323bebc Add GetDisplayMedia
* Add selectScreen to select all registered drivers that can screenshare
* Add GetDisplayMedia
* Add screenshare example
2020-02-14 12:22:03 -08:00
Lukas Herman 46c55deeb4 Change driver registration requirement to have an Info
* Move label to Info
* Replace label requirement to be an info
* Replace Label driver method to be an Info method
2020-02-14 12:22:03 -08:00
Atsushi Watanabe bca254261d Allow to use user defined Track
Add WithTrackGenerator option to specify TrackGenerator.
This allows user to replace Track by user defined one that
has WriteSample() and Codec() interface.
2020-02-12 22:24:32 -08:00
Atsushi Watanabe 99af57a42a Select media with DeviceID property 2020-02-12 22:24:09 -08:00
Atsushi Watanabe 5653cdf9e8 Implement EnumerateDevices and register all devices 2020-02-12 22:24:09 -08:00
Lukas Herman c6d0f3ec02 Add custom video/audio transforms
Resolves https://github.com/pion/mediadevices/issues/31
2020-02-12 08:17:57 -08:00
Lukas Herman ec310e566b Move Codec from MediaTrackConstraints to prop.Codec 2020-02-10 20:07:41 -08:00
Atsushi Watanabe 2fd3907305 Add MediaDevicesFromCodecs
Add a constructor directly from lists of codecs.
It makes MediaDevices capable for non-WebRTC purposes
as same as the Web API.
2020-02-09 07:12:04 -08:00
Lukas Herman aece2b94c6 Refractor, unify some APIs to be more DRY 2020-02-06 22:44:29 -08:00
Lukas Herman 2640f6c1f4 Move all settings to video/audio under io 2020-02-06 22:44:29 -08:00
Lukas Herman 2d9bfcda4d Remove Kind in favor of type assertion 2020-02-06 22:44:29 -08:00
Lukas Herman 61c0b53c55 Add initial audio support 2020-02-06 22:44:29 -08:00
Lukas Herman 5316a81aec Add some comments for better godoc 2019-12-28 09:39:31 -08:00
Lukas Herman 53244f8b27 Expose Tracker and Manager types for better godoc 2019-12-28 09:39:31 -08:00
Lukas Herman ec58fac1e7 Rename Spec to Setting 2019-12-28 09:39:31 -08:00
Lukas Herman 5679e3c0d7 Add SelectSettings algorithm and Codec to video constraints 2019-12-28 09:39:31 -08:00
Lukas Herman 9dbe3bfb9a Move reusable packages into pkg 2019-12-25 16:13:37 -08:00
Lukas Herman 417491ec95 Clean up driver's interfaces 2019-12-25 16:13:37 -08:00
Lukas Herman 709e56166f Completely rearchitect the overall project structure 2019-12-25 16:13:37 -08:00
Lukas Herman b8b30bd7eb Initial commit
Resolves #1
2019-12-04 21:58:39 -08:00