interface change CodecData()(CodecData,error)
handler.AudioDecoder(av.AudioCodecData)
This commit is contained in:
parent
e64341e05c
commit
fb6c20e424
2
av/av.go
2
av/av.go
@ -263,7 +263,7 @@ func (self AudioFrame) Concat(in AudioFrame) (out AudioFrame) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type AudioEncoder interface {
|
type AudioEncoder interface {
|
||||||
CodecData() AudioCodecData
|
CodecData() (AudioCodecData, error)
|
||||||
Encode(AudioFrame) ([][]byte, error)
|
Encode(AudioFrame) ([][]byte, error)
|
||||||
//Flush() ([]Packet, error)
|
//Flush() ([]Packet, error)
|
||||||
Close()
|
Close()
|
||||||
|
@ -51,7 +51,7 @@ type RegisterHandler struct {
|
|||||||
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)
|
AudioEncoder func(av.CodecType)(av.AudioEncoder,error)
|
||||||
AudioDecoder func(av.CodecData)(av.AudioDecoder,error)
|
AudioDecoder func(av.AudioCodecData)(av.AudioDecoder,error)
|
||||||
}
|
}
|
||||||
|
|
||||||
type Handlers struct {
|
type Handlers struct {
|
||||||
@ -98,7 +98,7 @@ func (self *Handlers) NewAudioEncoder(typ av.CodecType) (enc av.AudioEncoder, er
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func (self *Handlers) NewAudioDecoder(codec av.CodecData) (dec av.AudioDecoder, err error) {
|
func (self *Handlers) NewAudioDecoder(codec av.AudioCodecData) (dec av.AudioDecoder, err error) {
|
||||||
for _, handler := range self.handlers {
|
for _, handler := range self.handlers {
|
||||||
if handler.AudioDecoder != nil {
|
if handler.AudioDecoder != nil {
|
||||||
if dec, _ = handler.AudioDecoder(codec); dec != nil {
|
if dec, _ = handler.AudioDecoder(codec); dec != nil {
|
||||||
|
@ -42,7 +42,9 @@ func NewTranscoder(streams []av.CodecData, options Options) (_self *Transcoder,
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
ts.timeline = &pktque.Timeline{}
|
ts.timeline = &pktque.Timeline{}
|
||||||
ts.codec = enc.CodecData()
|
if ts.codec, err = enc.CodecData(); err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
ts.aencodec = ts.codec.(av.AudioCodecData)
|
ts.aencodec = ts.codec.(av.AudioCodecData)
|
||||||
ts.adecodec = stream.(av.AudioCodecData)
|
ts.adecodec = stream.(av.AudioCodecData)
|
||||||
ts.aenc = enc
|
ts.aenc = enc
|
||||||
@ -168,7 +170,10 @@ func (self *Muxer) WritePacket(pkt av.Packet) (err error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (self *Muxer) Close() (err error) {
|
func (self *Muxer) Close() (err error) {
|
||||||
return self.transcoder.Close()
|
if self.transcoder != nil {
|
||||||
|
return self.transcoder.Close()
|
||||||
|
}
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
type Demuxer struct {
|
type Demuxer struct {
|
||||||
@ -220,5 +225,8 @@ func (self *Demuxer) Streams() (streams []av.CodecData, err error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (self *Demuxer) Close() (err error) {
|
func (self *Demuxer) Close() (err error) {
|
||||||
return self.transcoder.Close()
|
if self.transcoder != nil {
|
||||||
|
return self.transcoder.Close()
|
||||||
|
}
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
@ -290,8 +290,12 @@ func (self *AudioEncoder) prepare() (err error) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func (self *AudioEncoder) CodecData() (codec av.AudioCodecData) {
|
func (self *AudioEncoder) CodecData() (codec av.AudioCodecData, err error) {
|
||||||
return self.codecData
|
if err = self.prepare(); err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
codec = self.codecData
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func (self *AudioEncoder) encodeOne(frame av.AudioFrame) (gotpkt bool, pkt []byte, err error) {
|
func (self *AudioEncoder) encodeOne(frame av.AudioFrame) (gotpkt bool, pkt []byte, err error) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user