interface change CodecData()(CodecData,error)

handler.AudioDecoder(av.AudioCodecData)
This commit is contained in:
nareix 2016-07-12 12:55:44 +08:00
parent e64341e05c
commit fb6c20e424
4 changed files with 20 additions and 8 deletions

View File

@ -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()

View File

@ -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 {

View File

@ -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
} }

View File

@ -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) {