Rename Spec to Setting

This commit is contained in:
Lukas Herman
2019-12-26 22:03:27 -08:00
parent 5679e3c0d7
commit ec58fac1e7
5 changed files with 32 additions and 32 deletions

View File

@@ -46,7 +46,7 @@ func (m *mediaDevices) videoSelect(constraints VideoTrackConstraints) (tracker,
drivers := driver.Manager.Query(videoFilterFn) drivers := driver.Manager.Query(videoFilterFn)
var bestDriver driver.VideoDriver var bestDriver driver.VideoDriver
var bestSpec driver.VideoSpec var bestSetting driver.VideoSetting
minFitnessDist := math.Inf(1) minFitnessDist := math.Inf(1)
for _, d := range drivers { for _, d := range drivers {
@@ -55,19 +55,19 @@ func (m *mediaDevices) videoSelect(constraints VideoTrackConstraints) (tracker,
if wasClosed { if wasClosed {
err := d.Open() err := d.Open()
if err != nil { if err != nil {
// Skip this driver if we failed to open because we can't get the specs // Skip this driver if we failed to open because we can't get the settings
continue continue
} }
} }
vd := d.(driver.VideoDriver) vd := d.(driver.VideoDriver)
for _, spec := range vd.Specs() { for _, setting := range vd.Settings() {
fitnessDist := constraints.fitnessDistance(spec) fitnessDist := constraints.fitnessDistance(setting)
if fitnessDist < minFitnessDist { if fitnessDist < minFitnessDist {
minFitnessDist = fitnessDist minFitnessDist = fitnessDist
bestDriver = vd bestDriver = vd
bestSpec = spec bestSetting = setting
} }
} }
@@ -87,5 +87,5 @@ func (m *mediaDevices) videoSelect(constraints VideoTrackConstraints) (tracker,
return nil, fmt.Errorf("failed in opening the best video driver") return nil, fmt.Errorf("failed in opening the best video driver")
} }
} }
return newVideoTrack(m.pc, bestDriver, bestSpec, constraints.Codec) return newVideoTrack(m.pc, bestDriver, bestSetting, constraints.Codec)
} }

View File

@@ -18,7 +18,7 @@ type VideoTrackConstraints struct {
} }
// fitnessDistance is an implementation for https://w3c.github.io/mediacapture-main/#dfn-fitness-distance // fitnessDistance is an implementation for https://w3c.github.io/mediacapture-main/#dfn-fitness-distance
func (c *VideoTrackConstraints) fitnessDistance(s driver.VideoSpec) float64 { func (c *VideoTrackConstraints) fitnessDistance(s driver.VideoSetting) float64 {
var dist float64 var dist float64
if s.Width != c.Width { if s.Width != c.Width {

View File

@@ -15,7 +15,7 @@ type camera struct {
cam *webcam.Webcam cam *webcam.Webcam
formats map[webcam.PixelFormat]frame.Format formats map[webcam.PixelFormat]frame.Format
reversedFormats map[frame.Format]webcam.PixelFormat reversedFormats map[frame.Format]webcam.PixelFormat
specs []VideoSpec settings []VideoSetting
} }
var _ VideoAdapter = &camera{} var _ VideoAdapter = &camera{}
@@ -53,10 +53,10 @@ func (c *camera) Open() error {
return err return err
} }
specs := make([]VideoSpec, 0) settings := make([]VideoSetting, 0)
for format := range cam.GetSupportedFormats() { for format := range cam.GetSupportedFormats() {
for _, frameSize := range cam.GetSupportedFrameSizes(format) { for _, frameSize := range cam.GetSupportedFrameSizes(format) {
specs = append(specs, VideoSpec{ settings = append(settings, VideoSetting{
Width: int(frameSize.MaxWidth), Width: int(frameSize.MaxWidth),
Height: int(frameSize.MaxHeight), Height: int(frameSize.MaxHeight),
FrameFormat: c.formats[format], FrameFormat: c.formats[format],
@@ -65,12 +65,12 @@ func (c *camera) Open() error {
} }
c.cam = cam c.cam = cam
c.specs = specs c.settings = settings
return nil return nil
} }
func (c *camera) Close() error { func (c *camera) Close() error {
c.specs = nil c.settings = nil
if c.cam == nil { if c.cam == nil {
return nil return nil
} }
@@ -78,9 +78,9 @@ func (c *camera) Close() error {
return c.cam.StopStreaming() return c.cam.StopStreaming()
} }
func (c *camera) Start(spec VideoSpec, cb DataCb) error { func (c *camera) Start(setting VideoSetting, cb DataCb) error {
pf := c.reversedFormats[spec.FrameFormat] pf := c.reversedFormats[setting.FrameFormat]
_, _, _, err := c.cam.SetImageFormat(pf, uint32(spec.Width), uint32(spec.Height)) _, _, _, err := c.cam.SetImageFormat(pf, uint32(setting.Width), uint32(setting.Height))
if err != nil { if err != nil {
return err return err
} }
@@ -124,6 +124,6 @@ func (c *camera) Info() Info {
} }
} }
func (c *camera) Specs() []VideoSpec { func (c *camera) Settings() []VideoSetting {
return c.specs return c.settings
} }

View File

@@ -25,28 +25,28 @@ type Infoer interface {
} }
type Info struct { type Info struct {
Kind Kind Kind Kind
DeviceType DeviceType DeviceType DeviceType
} }
type VideoCapable interface { type VideoCapable interface {
Start(spec VideoSpec, cb DataCb) error Start(setting VideoSetting, cb DataCb) error
Stop() error Stop() error
Specs() []VideoSpec Settings() []VideoSetting
} }
type VideoSpec struct { type VideoSetting struct {
Width, Height int Width, Height int
FrameFormat frame.Format FrameFormat frame.Format
} }
type AudioCapable interface { type AudioCapable interface {
Start(spec AudioSpec, cb DataCb) error Start(setting AudioSetting, cb DataCb) error
Stop() error Stop() error
Specs() []AudioSpec Settings() []AudioSetting
} }
type AudioSpec struct { type AudioSetting struct {
} }
type Adapter interface { type Adapter interface {

View File

@@ -19,14 +19,14 @@ type videoTrack struct {
t *webrtc.Track t *webrtc.Track
s *sampler s *sampler
d driver.VideoDriver d driver.VideoDriver
spec driver.VideoSpec setting driver.VideoSetting
decoder frame.Decoder decoder frame.Decoder
encoder codec.Encoder encoder codec.Encoder
} }
func newVideoTrack(pc *webrtc.PeerConnection, d driver.VideoDriver, spec driver.VideoSpec, codecName Codec) (*videoTrack, error) { func newVideoTrack(pc *webrtc.PeerConnection, d driver.VideoDriver, setting driver.VideoSetting, codecName Codec) (*videoTrack, error) {
var err error var err error
decoder, err := frame.NewDecoder(spec.FrameFormat) decoder, err := frame.NewDecoder(setting.FrameFormat)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -37,8 +37,8 @@ func newVideoTrack(pc *webrtc.PeerConnection, d driver.VideoDriver, spec driver.
default: default:
payloadType = webrtc.DefaultPayloadTypeH264 payloadType = webrtc.DefaultPayloadTypeH264
encoder, err = h264.NewEncoder(h264.Options{ encoder, err = h264.NewEncoder(h264.Options{
Width: spec.Width, Width: setting.Width,
Height: spec.Height, Height: setting.Height,
Bitrate: 1000000, Bitrate: 1000000,
MaxFrameRate: 30, MaxFrameRate: 30,
}) })
@@ -58,17 +58,17 @@ func newVideoTrack(pc *webrtc.PeerConnection, d driver.VideoDriver, spec driver.
t: track, t: track,
s: newSampler(track.Codec().ClockRate), s: newSampler(track.Codec().ClockRate),
d: d, d: d,
spec: spec, setting: setting,
decoder: decoder, decoder: decoder,
encoder: encoder, encoder: encoder,
} }
go d.Start(spec, vt.dataCb) go d.Start(setting, vt.dataCb)
return &vt, nil return &vt, nil
} }
func (vt *videoTrack) dataCb(b []byte) { func (vt *videoTrack) dataCb(b []byte) {
img, err := vt.decoder.Decode(b, vt.spec.Width, vt.spec.Height) img, err := vt.decoder.Decode(b, vt.setting.Width, vt.setting.Height)
if err != nil { if err != nil {
// TODO: probably do some logging here // TODO: probably do some logging here
return return