2020-11-02 07:54:53 +08:00
|
|
|
package mediadevices
|
|
|
|
|
2021-05-19 20:39:54 +08:00
|
|
|
import (
|
|
|
|
"github.com/pion/mediadevices/pkg/codec"
|
|
|
|
"github.com/pion/rtp"
|
|
|
|
)
|
2020-11-02 07:54:53 +08:00
|
|
|
|
|
|
|
type RTPReadCloser interface {
|
|
|
|
Read() (pkts []*rtp.Packet, release func(), err error)
|
|
|
|
Close() error
|
2021-05-19 20:39:54 +08:00
|
|
|
codec.Controllable
|
2020-11-02 07:54:53 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
type rtpReadCloserImpl struct {
|
2021-05-19 20:39:54 +08:00
|
|
|
readFn func() ([]*rtp.Packet, func(), error)
|
|
|
|
closeFn func() error
|
|
|
|
controllerFn func() codec.EncoderController
|
2020-11-02 07:54:53 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
func (r *rtpReadCloserImpl) Read() ([]*rtp.Packet, func(), error) {
|
|
|
|
return r.readFn()
|
|
|
|
}
|
|
|
|
|
|
|
|
func (r *rtpReadCloserImpl) Close() error {
|
|
|
|
return r.closeFn()
|
|
|
|
}
|
2021-05-19 20:39:54 +08:00
|
|
|
|
|
|
|
func (r *rtpReadCloserImpl) Controller() codec.EncoderController {
|
|
|
|
return r.controllerFn()
|
|
|
|
}
|