diff --git a/av.go b/av.go index e242c21..0af8069 100644 --- a/av.go +++ b/av.go @@ -31,6 +31,33 @@ func (self SampleFormat) BytesPerSample() int { } } +func (self SampleFormat) String() string { + switch self { + case U8: + return "U8" + case S16: + return "S16" + case S32: + return "S32" + case FLT: + return "FLT" + case DBL: + return "DBL" + case U8P: + return "U8P" + case S16P: + return "S16P" + case FLTP: + return "FLTP" + case DBLP: + return "DBLP" + case U32: + return "U32" + default: + return "?" + } +} + func (self SampleFormat) IsPlanar() bool { switch self { case S16P,S32P,FLTP,DBLP: @@ -40,11 +67,83 @@ func (self SampleFormat) IsPlanar() bool { } } +type ChannelLayout uint64 + const ( - H264 = 0x264 - AAC = 0xaac + CH_FRONT_CENTER = ChannelLayout(1< - -minidash.open('src', function(video) { -}) - -minidash.HandleConn(func(conn *minidash.Conn) { - conn.RequestSrc - muxer, err := conn.WriteHeader(cli.Streams()) - muxer.WritePacket() -}) - -怎样转码 -av.Transconder{ - TranscodeHeader(codecData) ok, codecData, error - TranscodePacket(Packet, flush) []Packet, error - FlushPacket() []Packet, error -} - -decoder := ffmpeg.FindAudioDecoder(AudioCodecData) -decoder := ffmpeg.FindAudioDecoderByName("aac", CodecData) - -av.DemuxTranscoder{ - Demuxer Demuxer - Transconders []Transconder -} -Streams() -ReadPacket() -ClearPacketCache() - -怎样混合多个Demuxer -DemuxerMixer{ - demuxer -} -demuxer.FilterStreams() -streams := demuxer.Streams() -streams[0] -*/ - diff --git a/proxy/proxy.go b/proxy/proxy.go index 58462d0..d256b86 100644 --- a/proxy/proxy.go +++ b/proxy/proxy.go @@ -10,16 +10,19 @@ import ( "fmt" ) -func hashParams(params []interface{}) uint64 { +func hashParams(params []interface{}) (res uint64, err error) { f := fnv.New64() for _, p := range params { if s, ok := p.(string); ok { io.WriteString(f, s) } else { - binary.Write(f, binary.LittleEndian, p) + if err = binary.Write(f, binary.LittleEndian, p); err != nil { + return + } } } - return f.Sum64() + res = f.Sum64() + return } type Publisher struct { @@ -166,7 +169,11 @@ func (self *Proxy) HandleSubscribe(fn func(*Publisher)) { } func (self *Proxy) Publish(params ...interface{}) (pub *Publisher, err error) { - h := hashParams(params) + var h uint64 + if h, err = hashParams(params); err != nil { + err = fmt.Errorf("please use string/int in Publish() params") + return + } self.lock.Lock() pub, exists := self.publishers[h] @@ -188,7 +195,11 @@ func (self *Proxy) Publish(params ...interface{}) (pub *Publisher, err error) { } func (self *Proxy) Subscribe(params ...interface{}) (sub *Subscriber, err error) { - h := hashParams(params) + var h uint64 + if h, err = hashParams(params); err != nil { + err = fmt.Errorf("please use string/int in Subscribe() params") + return + } needcb := false self.lock.RLock()