mirror of
https://github.com/pion/mediadevices.git
synced 2026-04-22 15:57:27 +08:00
36 lines
732 B
Go
36 lines
732 B
Go
package video
|
|
|
|
import (
|
|
"image"
|
|
)
|
|
|
|
type Reader interface {
|
|
Read() (img image.Image, release func(), err error)
|
|
}
|
|
|
|
type ReaderFunc func() (img image.Image, release func(), err error)
|
|
|
|
func (rf ReaderFunc) Read() (img image.Image, release func(), err error) {
|
|
img, release, err = rf()
|
|
return
|
|
}
|
|
|
|
// TransformFunc produces a new Reader that will produces a transformed video
|
|
type TransformFunc func(r Reader) Reader
|
|
|
|
// Merge merges transforms and produces a new TransformFunc that will execute
|
|
// transforms in order
|
|
func Merge(transforms ...TransformFunc) TransformFunc {
|
|
return func(r Reader) Reader {
|
|
for _, transform := range transforms {
|
|
if transform == nil {
|
|
continue
|
|
}
|
|
|
|
r = transform(r)
|
|
}
|
|
|
|
return r
|
|
}
|
|
}
|