avutil: add audio encoder/decoder for handlers
This commit is contained in:
parent
512de0943f
commit
393f695613
@ -50,6 +50,8 @@ type RegisterHandler struct {
|
|||||||
UrlDemuxer func(string)(bool,av.DemuxCloser,error)
|
UrlDemuxer func(string)(bool,av.DemuxCloser,error)
|
||||||
UrlReader func(string)(bool,io.ReadCloser,error)
|
UrlReader func(string)(bool,io.ReadCloser,error)
|
||||||
Probe func([]byte)bool
|
Probe func([]byte)bool
|
||||||
|
AudioEncoder func(av.CodecType)(av.AudioEncoder,error)
|
||||||
|
AudioDecoder func(av.CodecData)(av.AudioDecoder,error)
|
||||||
}
|
}
|
||||||
|
|
||||||
type Handlers struct {
|
type Handlers struct {
|
||||||
@ -84,6 +86,30 @@ func (self *Handlers) createUrl(u *url.URL, uri string) (w io.WriteCloser, err e
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (self *Handlers) NewAudioEncoder(typ av.CodecType) (enc av.AudioEncoder, err error) {
|
||||||
|
for _, handler := range self.handlers {
|
||||||
|
if handler.AudioEncoder != nil {
|
||||||
|
if enc, _ = handler.AudioEncoder(typ); enc != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
err = fmt.Errorf("avutil: encoder", typ, "not found")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func (self *Handlers) NewAudioDecoder(codec av.CodecData) (dec av.AudioDecoder, err error) {
|
||||||
|
for _, handler := range self.handlers {
|
||||||
|
if handler.AudioDecoder != nil {
|
||||||
|
if dec, _ = handler.AudioDecoder(codec); dec != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
err = fmt.Errorf("avutil: decoder", codec.Type(), "not found")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
func (self *Handlers) Open(uri string) (demuxer av.DemuxCloser, err error) {
|
func (self *Handlers) Open(uri string) (demuxer av.DemuxCloser, err error) {
|
||||||
for _, handler := range self.handlers {
|
for _, handler := range self.handlers {
|
||||||
if handler.UrlDemuxer != nil {
|
if handler.UrlDemuxer != nil {
|
||||||
@ -174,10 +200,6 @@ func (self *Handlers) Create(uri string) (muxer av.MuxCloser, err error) {
|
|||||||
|
|
||||||
var DefaultHandlers = &Handlers{}
|
var DefaultHandlers = &Handlers{}
|
||||||
|
|
||||||
func AddHandler(fn func(*RegisterHandler)) {
|
|
||||||
DefaultHandlers.Add(fn)
|
|
||||||
}
|
|
||||||
|
|
||||||
func Open(url string) (demuxer av.DemuxCloser, err error) {
|
func Open(url string) (demuxer av.DemuxCloser, err error) {
|
||||||
return DefaultHandlers.Open(url)
|
return DefaultHandlers.Open(url)
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user