SYMBOL INDEX (1109 symbols across 87 files) FILE: config/config.go type Config (line 12) | type Config struct method SaveToFile (line 230) | func (c *Config) SaveToFile() error { type SrtConfig (line 26) | type SrtConfig struct type RtcConfig (line 31) | type RtcConfig struct type HttpConfig (line 39) | type HttpConfig struct type CtrlAuthWhitelist (line 49) | type CtrlAuthWhitelist struct type Fmp4Config (line 54) | type Fmp4Config struct type Fmp4HttpConfig (line 59) | type Fmp4HttpConfig struct type Fmp4HlsConfig (line 63) | type Fmp4HlsConfig struct type GB28181Config (line 71) | type GB28181Config struct type GB28181MediaConfig (line 85) | type GB28181MediaConfig struct type ZlmCompatHookConfig (line 93) | type ZlmCompatHookConfig struct method HasZlmHooks (line 107) | func (c ZlmCompatHookConfig) HasZlmHooks() bool { type HttpNotifyConfig (line 118) | type HttpNotifyConfig struct type LogicConfig (line 141) | type LogicConfig struct function Open (line 146) | func Open(filepath string) error { function Unmarshal (line 159) | func Unmarshal(data []byte) error { function unmarshalConfig (line 184) | func unmarshalConfig(data []byte, cfg *Config) error { function GetConfig (line 224) | func GetConfig() *Config { FILE: config/config_test.go function TestUnmarshalStructuredConfig (line 8) | func TestUnmarshalStructuredConfig(t *testing.T) { function TestUnmarshalLegacyConfig (line 41) | func TestUnmarshalLegacyConfig(t *testing.T) { function TestUnmarshalStructuredFmp4ConfigKeepsExplicitZero (line 89) | func TestUnmarshalStructuredFmp4ConfigKeepsExplicitZero(t *testing.T) { function TestUnmarshalStructuredLogicConfigKeepsExplicitZero (line 130) | func TestUnmarshalStructuredLogicConfigKeepsExplicitZero(t *testing.T) { FILE: fmp4/hls/server.go type HlsServer (line 14) | type HlsServer struct method NewHlsSession (line 30) | func (s *HlsServer) NewHlsSession(streamName string) { method NewHlsSessionWithAppName (line 34) | func (s *HlsServer) NewHlsSessionWithAppName(appName, streamName strin... method OnMsg (line 40) | func (s *HlsServer) OnMsg(streamName string, msg base.RtmpMsg) { method OnMsgWithAppName (line 44) | func (s *HlsServer) OnMsgWithAppName(appName, streamName string, msg b... method OnStop (line 52) | func (s *HlsServer) OnStop(streamName string) { method OnStopWithAppName (line 56) | func (s *HlsServer) OnStopWithAppName(appName, streamName string) { method HandleRequest (line 66) | func (s *HlsServer) HandleRequest(ctx *gin.Context) { method getSession (line 74) | func (s *HlsServer) getSession(appName, streamName string) (*HlsSessio... method cleanInvalidSession (line 113) | func (s *HlsServer) cleanInvalidSession() { function NewHlsServer (line 20) | func NewHlsServer(conf config.Fmp4HlsConfig) *HlsServer { type sessionKey (line 101) | type sessionKey struct function hlsSessionKey (line 106) | func hlsSessionKey(appName, streamName string) sessionKey { FILE: fmp4/hls/session.go type HlsSession (line 19) | type HlsSession struct method OnMsg (line 84) | func (session *HlsSession) OnMsg(msg base.RtmpMsg) { method drain (line 244) | func (session *HlsSession) drain() { method OnStop (line 322) | func (session *HlsSession) OnStop() { method HandleRequest (line 328) | func (session *HlsSession) HandleRequest(ctx *gin.Context) { function NewHlsSession (line 39) | func NewHlsSession(streamName string, conf config.Fmp4HlsConfig) *HlsSes... function NewHlsSessionWithAppName (line 43) | func NewHlsSessionWithAppName(appName, streamName string, conf config.Fm... type Frame (line 333) | type Frame struct FILE: fmp4/http-fmp4/server.go type HttpFmp4Server (line 7) | type HttpFmp4Server struct method HandleRequest (line 16) | func (s *HttpFmp4Server) HandleRequest(c *gin.Context) { function NewHttpFmp4Server (line 10) | func NewHttpFmp4Server() *HttpFmp4Server { FILE: fmp4/http-fmp4/session.go type HttpFmp4Session (line 28) | type HttpFmp4Session struct method OnInitFmp4 (line 59) | func (session *HttpFmp4Session) OnInitFmp4(init []byte) { method OnFmp4Packets (line 63) | func (session *HttpFmp4Session) OnFmp4Packets(currentPart *muxer.Muxer... method Dispose (line 71) | func (session *HttpFmp4Session) Dispose() error { method dispose (line 74) | func (session *HttpFmp4Session) dispose() error { method handleSession (line 86) | func (session *HttpFmp4Session) handleSession(c *gin.Context) { method writeHttpHeader (line 135) | func (session *HttpFmp4Session) writeHttpHeader(header http.Header) er... method write (line 157) | func (session *HttpFmp4Session) write(buf []byte) (err error) { method OnMsg (line 163) | func (session *HttpFmp4Session) OnMsg(msg base.RtmpMsg) { method OnStop (line 169) | func (session *HttpFmp4Session) OnStop() { method GetSubscriberStat (line 175) | func (session *HttpFmp4Session) GetSubscriberStat() maxlogic.Subscribe... function NewHttpFmp4Session (line 41) | func NewHttpFmp4Session(appName, streamid string) *HttpFmp4Session { FILE: fmp4/muxer/codec.go type Codec (line 9) | type Codec interface type CodecH264 (line 15) | type CodecH264 struct method IsVideo (line 20) | func (c *CodecH264) IsVideo() bool { method Equal (line 24) | func (c *CodecH264) Equal(other Codec) bool { method String (line 32) | func (c *CodecH264) String() string { type CodecH265 (line 36) | type CodecH265 struct method IsVideo (line 42) | func (c *CodecH265) IsVideo() bool { method Equal (line 46) | func (c *CodecH265) Equal(other Codec) bool { method String (line 54) | func (c *CodecH265) String() string { type CodecAAC (line 58) | type CodecAAC struct method IsVideo (line 63) | func (c *CodecAAC) IsVideo() bool { method Equal (line 67) | func (c *CodecAAC) Equal(other Codec) bool { method String (line 75) | func (c *CodecAAC) String() string { type CodecOpus (line 79) | type CodecOpus struct method IsVideo (line 83) | func (c *CodecOpus) IsVideo() bool { method Equal (line 87) | func (c *CodecOpus) Equal(other Codec) bool { method String (line 91) | func (c *CodecOpus) String() string { FILE: fmp4/muxer/file_writer.go type Fmp4Record (line 12) | type Fmp4Record struct method createFile (line 45) | func (r *Fmp4Record) createFile() (err error) { method WriteInitFmp4 (line 58) | func (r *Fmp4Record) WriteInitFmp4(init []byte) { method WriteFmp4Segment (line 62) | func (r *Fmp4Record) WriteFmp4Segment(part *MuxerPart, lastSampleDurat... method WriteMultiFile (line 71) | func (r *Fmp4Record) WriteMultiFile(part *MuxerPart, lastSampleDuratio... method writeSingleFile (line 130) | func (r *Fmp4Record) writeSingleFile(part *MuxerPart, lastSampleDurati... method Dispose (line 150) | func (r *Fmp4Record) Dispose() error { function NewFmp4Record (line 27) | func NewFmp4Record(recordInterval int, enableRecordByInterval bool, stre... type FileWriter (line 158) | type FileWriter struct method Create (line 162) | func (fw *FileWriter) Create(filename string) (err error) { method Write (line 167) | func (fw *FileWriter) Write(b []byte) (err error) { method Dispose (line 175) | func (fw *FileWriter) Dispose() error { method Name (line 182) | func (fw *FileWriter) Name() string { FILE: fmp4/muxer/flac_box.go function BoxTypeFlac (line 7) | func BoxTypeFlac() mp4.BoxType { return mp4.StrToBoxType("fLaC") } function init (line 9) | func init() { function BoxTypeDfla (line 31) | func BoxTypeDfla() mp4.BoxType { function init (line 35) | func init() { type DflaBox (line 39) | type DflaBox struct method GetType (line 44) | func (d *DflaBox) GetType() mp4.BoxType { method AddFlag (line 59) | func (d *DflaBox) AddFlag(uint32) {} method CheckFlag (line 61) | func (d *DflaBox) CheckFlag(uint32) bool { method GetFlags (line 65) | func (d *DflaBox) GetFlags() uint32 { method GetVersion (line 69) | func (d *DflaBox) GetVersion() uint8 { method RemoveFlag (line 73) | func (d *DflaBox) RemoveFlag(uint32) { method SetFlags (line 76) | func (d *DflaBox) SetFlags(uint32) { method SetVersion (line 79) | func (d *DflaBox) SetVersion(uint8) { FILE: fmp4/muxer/init.go constant objectTypeIndicationVisualISO14496part2 (line 14) | objectTypeIndicationVisualISO14496part2 = 0x20 constant objectTypeIndicationAudioISO14496part3 (line 15) | objectTypeIndicationAudioISO14496part3 = 0x40 constant objectTypeIndicationVisualISO1318part2Main (line 16) | objectTypeIndicationVisualISO1318part2Main = 0x61 constant objectTypeIndicationAudioISO11172part3 (line 17) | objectTypeIndicationAudioISO11172part3 = 0x6B constant objectTypeIndicationVisualISO10918part1 (line 18) | objectTypeIndicationVisualISO10918part1 = 0x6C constant streamTypeVisualStream (line 23) | streamTypeVisualStream = 0x04 constant streamTypeAudioStream (line 24) | streamTypeAudioStream = 0x05 function h265FindParams (line 27) | func h265FindParams(params []mp4.HEVCNaluArray) ([]byte, []byte, []byte,... function h264FindParams (line 65) | func h264FindParams(avcc *mp4.AVCDecoderConfiguration) ([]byte, []byte, ... function esdsFindDecoderConf (line 87) | func esdsFindDecoderConf(descriptors []mp4.Descriptor) *mp4.DecoderConfi... function esdsFindDecoderSpecificInfo (line 96) | func esdsFindDecoderSpecificInfo(descriptors []mp4.Descriptor) []byte { type Init (line 106) | type Init struct method Marshal (line 111) | func (i *Init) Marshal(w io.WriteSeeker) error { method Unmarshal (line 193) | func (i *Init) Unmarshal(r io.ReadSeeker) error { FILE: fmp4/muxer/init_track.go function boolToUint8 (line 12) | func boolToUint8(v bool) uint8 { type InitTrack (line 20) | type InitTrack struct method marshal (line 39) | func (it *InitTrack) marshal(w *mp4Writer) error { function Uint32ToBoolSlice (line 548) | func Uint32ToBoolSlice(num uint32) [32]bool { FILE: fmp4/muxer/mp4_writer.go type mp4Writer (line 9) | type mp4Writer struct method writeBoxStart (line 19) | func (w *mp4Writer) writeBoxStart(box mp4.IImmutableBox) (int, error) { method writeBoxEnd (line 37) | func (w *mp4Writer) writeBoxEnd() error { method writeBox (line 42) | func (w *mp4Writer) writeBox(box mp4.IImmutableBox) (int, error) { method rewriteBox (line 56) | func (w *mp4Writer) rewriteBox(off int, box mp4.IImmutableBox) error { function newMP4Writer (line 13) | func newMP4Writer(w io.WriteSeeker) *mp4Writer { FILE: fmp4/muxer/muxer.go function AudioTimeScale (line 13) | func AudioTimeScale(c Codec) uint32 { function TsToTime (line 25) | func TsToTime(ts uint32) time.Duration { type Muxer (line 29) | type Muxer struct method WithLog (line 52) | func (m *Muxer) WithLog(log nazalog.Logger) { method AddVideoTrack (line 56) | func (m *Muxer) AddVideoTrack(c Codec) { method AddAudioTrack (line 75) | func (m *Muxer) AddAudioTrack(c Codec) { method AudioTimeScale (line 81) | func (m *Muxer) AudioTimeScale() uint32 { method GetInitMp4 (line 85) | func (m *Muxer) GetInitMp4() []byte { method Pack (line 117) | func (m *Muxer) Pack(msg base.RtmpMsg) (*PartSample, error) { method FeedVideo (line 127) | func (m *Muxer) FeedVideo(msg base.RtmpMsg) (*PartSample, error) { method FeedAudio (line 201) | func (m *Muxer) FeedAudio(msg base.RtmpMsg) (*PartSample, error) { function NewMuxer (line 45) | func NewMuxer() *Muxer { FILE: fmp4/muxer/muxer_part.go function durationGoToMp4 (line 5) | func durationGoToMp4(v time.Duration, timeScale uint32) uint64 { function durationMp4ToGo (line 12) | func durationMp4ToGo(v uint64, timeScale uint32) time.Duration { type MuxerPart (line 19) | type MuxerPart struct method Bytes (line 44) | func (p *MuxerPart) Bytes() []byte { method Duration (line 48) | func (p *MuxerPart) Duration() time.Duration { method AudioTimeScale (line 52) | func (p *MuxerPart) AudioTimeScale() uint32 { method Encode (line 56) | func (p *MuxerPart) Encode(lastSampleDuration time.Duration, end bool)... method WriteVideo (line 102) | func (p *MuxerPart) WriteVideo(sample *PartSample) { method WriteAudio (line 112) | func (p *MuxerPart) WriteAudio(sample *PartSample) { method StartVideoDts (line 122) | func (p *MuxerPart) StartVideoDts() time.Duration { method StartAudioDts (line 126) | func (p *MuxerPart) StartAudioDts() time.Duration { method ResetStartVideoDts (line 130) | func (p *MuxerPart) ResetStartVideoDts() { method ResetStartAudioDts (line 134) | func (p *MuxerPart) ResetStartAudioDts() { method Clone (line 138) | func (p *MuxerPart) Clone() *MuxerPart { method SetPartId (line 144) | func (p *MuxerPart) SetPartId(partId uint64) { method CalcDuration (line 148) | func (p *MuxerPart) CalcDuration(newPartStartDts time.Duration, end bo... method SetVideoStartDts (line 166) | func (p *MuxerPart) SetVideoStartDts(videoStartDTS time.Duration) { method SetAudioStartDts (line 170) | func (p *MuxerPart) SetAudioStartDts(audioStartDTS time.Duration) { function NewMuxerPart (line 36) | func NewMuxerPart(partId uint64, audioTimeScale uint32) *MuxerPart { FILE: fmp4/muxer/part.go constant trunFlagDataOffsetPreset (line 10) | trunFlagDataOffsetPreset = 0x01 constant trunFlagSampleDurationPresent (line 11) | trunFlagSampleDurationPresent = 0x100 constant trunFlagSampleSizePresent (line 12) | trunFlagSampleSizePresent = 0x200 constant trunFlagSampleFlagsPresent (line 13) | trunFlagSampleFlagsPresent = 0x400 constant trunFlagSampleCompositionTimeOffsetPresentOrV1 (line 14) | trunFlagSampleCompositionTimeOffsetPresentOrV1 = 0x800 constant sampleFlagIsNonSyncSample (line 16) | sampleFlagIsNonSyncSample = 1 << 16 type Part (line 20) | type Part struct method Marshal (line 26) | func (p *Part) Marshal(w io.WriteSeeker) error { FILE: fmp4/muxer/part_sample.go type PartSample (line 8) | type PartSample struct function avccMarshalSize (line 16) | func avccMarshalSize(au [][]byte) int { function AVCCMarshal (line 26) | func AVCCMarshal(au [][]byte) ([]byte, error) { function NewPartSampleH26x (line 45) | func NewPartSampleH26x(ptsOffset int32, randomAccessPresent bool, au [][... FILE: fmp4/muxer/part_track.go type PartTrack (line 6) | type PartTrack struct method marshal (line 12) | func (pt *PartTrack) marshal(w *mp4Writer) (*mp4.Trun, int, error) { FILE: fmp4/muxer/rtmp2fmp4.go type IRtmp2Fmp4muxerObserver (line 14) | type IRtmp2Fmp4muxerObserver interface type Rtmp2Fmp4Remuxer (line 21) | type Rtmp2Fmp4Remuxer struct method WithLog (line 49) | func (m *Rtmp2Fmp4Remuxer) WithLog(log nazalog.Logger) *Rtmp2Fmp4Remux... method FeedRtmpMessage (line 55) | func (m *Rtmp2Fmp4Remuxer) FeedRtmpMessage(msg base.RtmpMsg) { method Push (line 59) | func (m *Rtmp2Fmp4Remuxer) Push(msg base.RtmpMsg) { method drain (line 146) | func (m *Rtmp2Fmp4Remuxer) drain() { method FlushLastSegment (line 168) | func (m *Rtmp2Fmp4Remuxer) FlushLastSegment() { method Dispose (line 176) | func (m *Rtmp2Fmp4Remuxer) Dispose() { method pack (line 179) | func (m *Rtmp2Fmp4Remuxer) pack(msg base.RtmpMsg) { method partId (line 339) | func (m *Rtmp2Fmp4Remuxer) partId() uint64 { function NewRtmp2Fmp4Remuxer (line 34) | func NewRtmp2Fmp4Remuxer(observer IRtmp2Fmp4muxerObserver) *Rtmp2Fmp4Rem... FILE: fmp4/muxer/seekablebuffer.go type Buffer (line 10) | type Buffer struct method Write (line 16) | func (b *Buffer) Write(p []byte) (int, error) { method Read (line 35) | func (b *Buffer) Read(_ []byte) (int, error) { method Seek (line 40) | func (b *Buffer) Seek(offset int64, whence int) (int64, error) { method Reset (line 70) | func (b *Buffer) Reset() { FILE: fmp4/muxer/track.go type Track (line 3) | type Track struct function NewTrack (line 12) | func NewTrack(codec Codec, trackId, timeSacle uint32) *Track { FILE: gb28181/auth.go type Authorization (line 11) | type Authorization struct method Verify (line 15) | func (a *Authorization) Verify(username, passwd, realm, nonce string) ... method getDigest (line 36) | func (a *Authorization) getDigest(raw string) string { FILE: gb28181/avail_conn_pool.go type OnListenWithPort (line 20) | type OnListenWithPort type AvailConnPool (line 23) | type AvailConnPool struct method WithListenWithPort (line 39) | func (a *AvailConnPool) WithListenWithPort(listenWithPort OnListenWith... method Acquire (line 42) | func (a *AvailConnPool) Acquire() (net.Listener, uint16, error) { method Peek (line 72) | func (a *AvailConnPool) Peek() (uint16, error) { method ListenWithPort (line 79) | func (a *AvailConnPool) ListenWithPort(port uint16) (net.Listener, err... method nextPort (line 85) | func (a *AvailConnPool) nextPort(p uint16) uint16 { function NewAvailConnPool (line 32) | func NewAvailConnPool(minPort uint16, maxPort uint16) *AvailConnPool { FILE: gb28181/channel.go type Channel (line 20) | type Channel struct method WithMediaServer (line 65) | func (channel *Channel) WithMediaServer(observer IMediaOpObserver) { method TryAutoInvite (line 69) | func (channel *Channel) TryAutoInvite(opt *InviteOptions, streamName s... method CanInvite (line 75) | func (channel *Channel) CanInvite(streamName string) bool { method Invite (line 146) | func (channel *Channel) Invite(opt *InviteOptions, streamName string, ... method GetCallId (line 262) | func (channel *Channel) GetCallId() string { method stopMediaServer (line 270) | func (channel *Channel) stopMediaServer() (err error) { method byeClear (line 280) | func (channel *Channel) byeClear() (err error) { method Bye (line 286) | func (channel *Channel) Bye(streamName string) (err error) { method CreateRequst (line 300) | func (channel *Channel) CreateRequst(Method sip.RequestMethod, conf co... method PtzDirection (line 357) | func (channel *Channel) PtzDirection(direction *PtzDirection) error { method PtzZoom (line 379) | func (channel *Channel) PtzZoom(zoom *PtzZoom) error { method PtzFi (line 397) | func (channel *Channel) PtzFi(fi *PtzFi) error { method PtzPreset (line 417) | func (channel *Channel) PtzPreset(ptzPreset *PtzPreset) error { method PtzStop (line 445) | func (channel *Channel) PtzStop(stop *PtzStop) error { method sipMessage (line 459) | func (channel *Channel) sipMessage(xml string) error { type ChannelInfo (line 35) | type ChannelInfo struct type ChannelStatus (line 58) | type ChannelStatus constant ChannelOnStatus (line 61) | ChannelOnStatus = "ON" constant ChannelOffStatus (line 62) | ChannelOffStatus = "OFF" FILE: gb28181/device.go constant TIME_LAYOUT (line 17) | TIME_LAYOUT = "2006-01-02T15:04:05" type DeviceStatus (line 25) | type DeviceStatus constant DeviceRegisterStatus (line 28) | DeviceRegisterStatus = "REGISTER" constant DeviceRecoverStatus (line 29) | DeviceRecoverStatus = "RECOVER" constant DeviceOnlineStatus (line 30) | DeviceOnlineStatus = "ONLINE" constant DeviceOfflineStatus (line 31) | DeviceOfflineStatus = "OFFLINE" constant DeviceAlarmedStatus (line 32) | DeviceAlarmedStatus = "ALARMED" type Device (line 35) | type Device struct method WithMediaServer (line 67) | func (d *Device) WithMediaServer(observer IMediaOpObserver) { method WithSipSvr (line 71) | func (d *Device) WithSipSvr(sipSvr gosip.Server) *Device { method syncChannels (line 76) | func (d *Device) syncChannels() { method UpdateChannels (line 85) | func (d *Device) UpdateChannels(list ...ChannelInfo) { method addOrUpdateChannel (line 108) | func (d *Device) addOrUpdateChannel(info ChannelInfo) (c *Channel) { method Catalog (line 124) | func (d *Device) Catalog(conf config.GB28181Config) int { method CreateRequest (line 146) | func (d *Device) CreateRequest(Method sip.RequestMethod, conf config.G... method Subscribe (line 188) | func (d *Device) Subscribe(conf config.GB28181Config) int { method QueryDeviceInfo (line 215) | func (d *Device) QueryDeviceInfo(conf config.GB28181Config) { method UpdateChannelStatus (line 234) | func (d *Device) UpdateChannelStatus(deviceList []*notifyMessage, conf... method channelOnline (line 300) | func (d *Device) channelOnline(channelId string) { method channelOffline (line 310) | func (d *Device) channelOffline(channelId string) { method deleteChannel (line 320) | func (d *Device) deleteChannel(channelId string) { method UpdateChannelPosition (line 325) | func (d *Device) UpdateChannelPosition(channelId string, gpsTime strin... method SipRequestForResponse (line 341) | func (d *Device) SipRequestForResponse(request sip.Request) (sip.Respo... FILE: gb28181/http_logic.go type GbLogic (line 9) | type GbLogic struct method GetDeviceInfos (line 25) | func (g *GbLogic) GetDeviceInfos(c *gin.Context) { method StartPlay (line 30) | func (g *GbLogic) StartPlay(c *gin.Context) { method StopPlay (line 56) | func (g *GbLogic) StopPlay(c *gin.Context) { method PtzDirection (line 77) | func (g *GbLogic) PtzDirection(c *gin.Context) { method PtzZoom (line 98) | func (g *GbLogic) PtzZoom(c *gin.Context) { method PtzFi (line 119) | func (g *GbLogic) PtzFi(c *gin.Context) { method PtzPreset (line 140) | func (g *GbLogic) PtzPreset(c *gin.Context) { method PtzStop (line 160) | func (g *GbLogic) PtzStop(c *gin.Context) { method UpdateAllNotify (line 177) | func (g *GbLogic) UpdateAllNotify(c *gin.Context) { method UpdateNotify (line 181) | func (g *GbLogic) UpdateNotify(c *gin.Context) { function NewGbLogic (line 16) | func NewGbLogic(s *GB28181Server) *GbLogic { FILE: gb28181/inviteoption.go type InviteOptions (line 8) | type InviteOptions struct method IsLive (line 16) | func (o InviteOptions) IsLive() bool { method String (line 20) | func (o InviteOptions) String() string { method CreateSSRC (line 24) | func (o *InviteOptions) CreateSSRC(serial string, number uint16) { FILE: gb28181/mediaserver/conn.go type Frame (line 25) | type Frame struct type Conn (line 33) | type Conn struct method SetMediaServer (line 75) | func (c *Conn) SetMediaServer(mediaServer *GB28181MediaServer) { method SetKey (line 78) | func (c *Conn) SetKey(key string) { method SetPreferMediaKeyLookup (line 81) | func (c *Conn) SetPreferMediaKeyLookup(prefer bool) { method SetReadTimeout (line 84) | func (c *Conn) SetReadTimeout(timeout time.Duration) { method Serve (line 87) | func (c *Conn) Serve() (err error) { method Demuxer (line 209) | func (c *Conn) Demuxer(data []byte) error { method OnFrame (line 240) | func (c *Conn) OnFrame(frame []byte, cid mpegps.PsStreamType, pts uint... method Close (line 293) | func (c *Conn) Close() { function NewConn (line 61) | func NewConn(conn net.Conn, observer IGbObserver, lal logic.ILalServer) ... function getPayloadType (line 298) | func getPayloadType(cid mpegps.PsStreamType) base.AvPacketPt { function splitPsPackets (line 315) | func splitPsPackets(data []byte) [][]byte { FILE: gb28181/mediaserver/mediaserver_t.go type MediaInfo (line 3) | type MediaInfo struct method Clear (line 12) | func (m *MediaInfo) Clear() (err error) { FILE: gb28181/mediaserver/server.go constant defaultReadTimeout (line 14) | defaultReadTimeout = 10 * time.Second type IGbObserver (line 16) | type IGbObserver interface type GB28181MediaServer (line 23) | type GB28181MediaServer struct method WithPreferMediaKeyLookup (line 49) | func (s *GB28181MediaServer) WithPreferMediaKeyLookup(prefer bool) *GB... method WithReadTimeout (line 54) | func (s *GB28181MediaServer) WithReadTimeout(timeout time.Duration) *G... method GetListenerPort (line 59) | func (s *GB28181MediaServer) GetListenerPort() uint16 { method Start (line 62) | func (s *GB28181MediaServer) Start(listener net.Listener) (err error) { method CloseConn (line 105) | func (s *GB28181MediaServer) CloseConn(streamName string) { method Dispose (line 111) | func (s *GB28181MediaServer) Dispose() { function NewGB28181MediaServer (line 39) | func NewGB28181MediaServer(listenPort int, mediaKey string, observer IGb... FILE: gb28181/mpegps/bitstream.go type BitStream (line 9) | type BitStream struct method Uint8 (line 27) | func (bs *BitStream) Uint8(n int) uint8 { method Uint16 (line 31) | func (bs *BitStream) Uint16(n int) uint16 { method Uint32 (line 35) | func (bs *BitStream) Uint32(n int) uint32 { method GetBytes (line 39) | func (bs *BitStream) GetBytes(n int) []byte { method GetBits (line 53) | func (bs *BitStream) GetBits(n int) uint64 { method GetBit (line 88) | func (bs *BitStream) GetBit() uint8 { method SkipBits (line 101) | func (bs *BitStream) SkipBits(n int) { method Markdot (line 113) | func (bs *BitStream) Markdot() { method DistanceFromMarkDot (line 118) | func (bs *BitStream) DistanceFromMarkDot() int { method RemainBytes (line 124) | func (bs *BitStream) RemainBytes() int { method RemainBits (line 132) | func (bs *BitStream) RemainBits() int { method Bits (line 141) | func (bs *BitStream) Bits() []byte { method RemainData (line 145) | func (bs *BitStream) RemainData() []byte { method ReadUE (line 150) | func (bs *BitStream) ReadUE() uint64 { method ReadSE (line 163) | func (bs *BitStream) ReadSE() int64 { method ByteOffset (line 172) | func (bs *BitStream) ByteOffset() int { method UnRead (line 176) | func (bs *BitStream) UnRead(n int) { method NextBits (line 192) | func (bs *BitStream) NextBits(n int) uint64 { method EOS (line 198) | func (bs *BitStream) EOS() bool { function NewBitStream (line 17) | func NewBitStream(buf []byte) *BitStream { type BitStreamWriter (line 202) | type BitStreamWriter struct method expandSpace (line 220) | func (bsw *BitStreamWriter) expandSpace(n int) { method ByteOffset (line 234) | func (bsw *BitStreamWriter) ByteOffset() int { method BitOffset (line 238) | func (bsw *BitStreamWriter) BitOffset() int { method Markdot (line 242) | func (bsw *BitStreamWriter) Markdot() { method DistanceFromMarkDot (line 247) | func (bsw *BitStreamWriter) DistanceFromMarkDot() int { method PutByte (line 253) | func (bsw *BitStreamWriter) PutByte(v byte) { method PutBytes (line 265) | func (bsw *BitStreamWriter) PutBytes(v []byte) { method PutRepetValue (line 274) | func (bsw *BitStreamWriter) PutRepetValue(v byte, n int) { method PutUint8 (line 285) | func (bsw *BitStreamWriter) PutUint8(v uint8, n int) { method PutUint16 (line 289) | func (bsw *BitStreamWriter) PutUint16(v uint16, n int) { method PutUint32 (line 293) | func (bsw *BitStreamWriter) PutUint32(v uint32, n int) { method PutUint64 (line 297) | func (bsw *BitStreamWriter) PutUint64(v uint64, n int) { method SetByte (line 322) | func (bsw *BitStreamWriter) SetByte(v byte, where int) { method SetUint16 (line 326) | func (bsw *BitStreamWriter) SetUint16(v uint16, where int) { method Bits (line 330) | func (bsw *BitStreamWriter) Bits() []byte { method FillRemainData (line 342) | func (bsw *BitStreamWriter) FillRemainData(v byte) { method Reset (line 350) | func (bsw *BitStreamWriter) Reset() { function NewBitStreamWriter (line 210) | func NewBitStreamWriter(n int) *BitStreamWriter { FILE: gb28181/mpegps/pes_proto.go type TsStreamType (line 8) | type TsStreamType constant TsStreamAudioMpeg1 (line 11) | TsStreamAudioMpeg1 TsStreamType = 0x03 constant TsStreamAudioMpeg2 (line 12) | TsStreamAudioMpeg2 TsStreamType = 0x04 constant TsStreamAac (line 13) | TsStreamAac TsStreamType = 0x0F constant TsStreamH264 (line 14) | TsStreamH264 TsStreamType = 0x1B constant TsStreamH265 (line 15) | TsStreamH265 TsStreamType = 0x24 type PesStreamId (line 21) | type PesStreamId constant PesStreamEnd (line 24) | PesStreamEnd PesStreamId = 0xB9 constant PesStreamStart (line 25) | PesStreamStart PesStreamId = 0xBA constant PesStreamSystemHead (line 26) | PesStreamSystemHead PesStreamId = 0xBB constant PesStreamMap (line 27) | PesStreamMap PesStreamId = 0xBC constant PesStreamPrivate (line 28) | PesStreamPrivate PesStreamId = 0xBD constant PesStreamAudio (line 29) | PesStreamAudio PesStreamId = 0xC0 constant PesStreamVideo (line 30) | PesStreamVideo PesStreamId = 0xE0 type Display (line 33) | type Display interface function findPesIdByStreamType (line 37) | func findPesIdByStreamType(cid TsStreamType) PesStreamId { type PesPacket (line 48) | type PesPacket struct method PrettyPrint (line 88) | func (pkg *PesPacket) PrettyPrint(file *os.File) { method Decode (line 144) | func (pkg *PesPacket) Decode(bs *BitStream) error { method DecodeMpeg1 (line 247) | func (pkg *PesPacket) DecodeMpeg1(bs *BitStream) error { method Encode (line 307) | func (pkg *PesPacket) Encode(bsw *BitStreamWriter) { function NewPesPacket (line 84) | func NewPesPacket() *PesPacket { FILE: gb28181/mpegps/ps_demuxer.go type psStream (line 11) | type psStream struct method setCid (line 26) | func (p *psStream) setCid(cid PsStreamType) { method clearBuf (line 30) | func (p *psStream) clearBuf() { function newPsStream (line 19) | func newPsStream(sid uint8, cid PsStreamType) *psStream { type PsDemuxer (line 34) | type PsDemuxer struct method Input (line 61) | func (psDemuxer *PsDemuxer) Input(data []byte) error { method Flush (line 210) | func (psDemuxer *PsDemuxer) Flush() { method guessCodecid (line 221) | func (psDemuxer *PsDemuxer) guessCodecid(stream *psStream) { method demuxPespacket (line 238) | func (psDemuxer *PsDemuxer) demuxPespacket(stream *psStream, pes *PesP... method demuxAudio (line 255) | func (psDemuxer *PsDemuxer) demuxAudio(stream *psStream, pes *PesPacke... method demuxH26x (line 262) | func (psDemuxer *PsDemuxer) demuxH26x(stream *psStream, pes *PesPacket... function NewPsDemuxer (line 50) | func NewPsDemuxer() *PsDemuxer { FILE: gb28181/mpegps/ps_demuxer_test.go function TestPSDemuxer_Input (line 24) | func TestPSDemuxer_Input(t *testing.T) { function TestPSDemuxer (line 89) | func TestPSDemuxer(t *testing.T) { function fileExists (line 181) | func fileExists(fileName string) (bool, error) { function writeFile (line 191) | func writeFile(filename string, buffer []byte) (err error) { FILE: gb28181/mpegps/ps_muxer.go type PsMuxer (line 9) | type PsMuxer struct method AddStream (line 28) | func (muxer *PsMuxer) AddStream(cid PsStreamType) uint8 { method Write (line 50) | func (muxer *PsMuxer) Write(sid uint8, frame []byte, pts uint64, dts u... function NewPsMuxer (line 16) | func NewPsMuxer() *PsMuxer { FILE: gb28181/mpegps/ps_proto.go type Error (line 10) | type Error interface type needmoreError (line 18) | type needmoreError struct method Error (line 20) | func (e *needmoreError) Error() string { return "need more by... method NeedMore (line 21) | func (e *needmoreError) NeedMore() bool { return true } method ParserError (line 22) | func (e *needmoreError) ParserError() bool { return false } method StreamIdNotFound (line 23) | func (e *needmoreError) StreamIdNotFound() bool { return false } type parserError (line 27) | type parserError struct method Error (line 29) | func (e *parserError) Error() string { return "parser packet ... method NeedMore (line 30) | func (e *parserError) NeedMore() bool { return false } method ParserError (line 31) | func (e *parserError) ParserError() bool { return true } method StreamIdNotFound (line 32) | func (e *parserError) StreamIdNotFound() bool { return false } type sidNotFoundError (line 36) | type sidNotFoundError struct method Error (line 38) | func (e *sidNotFoundError) Error() string { return "stream id... method NeedMore (line 39) | func (e *sidNotFoundError) NeedMore() bool { return false } method ParserError (line 40) | func (e *sidNotFoundError) ParserError() bool { return false } method StreamIdNotFound (line 41) | func (e *sidNotFoundError) StreamIdNotFound() bool { return true } type PsStreamType (line 43) | type PsStreamType constant PsStreamUnknow (line 46) | PsStreamUnknow PsStreamType = 0xFF constant PsStreamAac (line 47) | PsStreamAac PsStreamType = 0x0F constant PsStreamH264 (line 48) | PsStreamH264 PsStreamType = 0x1B constant PsStreamH265 (line 49) | PsStreamH265 PsStreamType = 0x24 constant PsStreamG711A (line 50) | PsStreamG711A PsStreamType = 0x90 constant PsStreamG711U (line 51) | PsStreamG711U PsStreamType = 0x91 type PsPackHeader (line 79) | type PsPackHeader struct method PrettyPrint (line 87) | func (psPackHeader *PsPackHeader) PrettyPrint(file *os.File) { method Decode (line 95) | func (psPackHeader *PsPackHeader) Decode(bs *BitStream) error { method decodeMpeg2 (line 119) | func (psPackHeader *PsPackHeader) decodeMpeg2(bs *BitStream) error { method decodeMpeg1 (line 142) | func (psPackHeader *PsPackHeader) decodeMpeg1(bs *BitStream) error { method Encode (line 158) | func (psPackHeader *PsPackHeader) Encode(bsw *BitStreamWriter) { type ElementaryStream (line 177) | type ElementaryStream struct function NewElementaryStream (line 183) | func NewElementaryStream(sid uint8) *ElementaryStream { type SystemHeader (line 212) | type SystemHeader struct method PrettyPrint (line 225) | func (sh *SystemHeader) PrettyPrint(file *os.File) { method Encode (line 243) | func (sh *SystemHeader) Encode(bsw *BitStreamWriter) { method Decode (line 270) | func (sh *SystemHeader) Decode(bs *BitStream) error { type ElementaryStreamElem (line 314) | type ElementaryStreamElem struct function NewElementaryStreamElem (line 320) | func NewElementaryStreamElem(stype uint8, esid uint8) *ElementaryStreamE... type ProgramStreamMap (line 352) | type ProgramStreamMap struct method PrettyPrint (line 362) | func (psm *ProgramStreamMap) PrettyPrint(file *os.File) { method Encode (line 387) | func (psm *ProgramStreamMap) Encode(bsw *BitStreamWriter) { method Decode (line 413) | func (psm *ProgramStreamMap) Decode(bs *BitStream) error { type ProgramStreamDirectory (line 472) | type ProgramStreamDirectory struct method Decode (line 476) | func (psd *ProgramStreamDirectory) Decode(bs *BitStream) error { type CommonPesPacket (line 493) | type CommonPesPacket struct method Decode (line 498) | func (compes *CommonPesPacket) Decode(bs *BitStream) error { type PsPacket (line 513) | type PsPacket struct FILE: gb28181/mpegps/util.go constant CodecUnknown (line 9) | CodecUnknown = iota constant CodecH264 (line 10) | CodecH264 constant CodecH265 (line 11) | CodecH265 constant CodecH266 (line 12) | CodecH266 constant CodecMpeg4 (line 13) | CodecMpeg4 function CalcCrc32 (line 62) | func CalcCrc32(crc uint32, buffer []byte) uint32 { type StartCodeType (line 70) | type StartCodeType constant StartCode3 (line 73) | StartCode3 StartCodeType = 3 constant STartCode4 (line 74) | STartCode4 StartCodeType = 4 function FindStartCode (line 77) | func FindStartCode(nalu []byte, offset int) (int, StartCodeType) { function SplitFrame (line 91) | func SplitFrame(frames []byte, onFrame func(nalu []byte) bool) { function H264NaluType (line 108) | func H264NaluType(h264 []byte) uint8 { function H265NaluType (line 112) | func H265NaluType(h265 []byte) uint8 { function mpegH264FindNALU (line 117) | func mpegH264FindNALU(data []byte) (int, int, error) { function mpegH26xVerify (line 136) | func mpegH26xVerify(data []byte) (int, error) { function audioVerify (line 187) | func audioVerify(data []byte) PsStreamType { FILE: gb28181/ptz.go type MessagePtz (line 8) | type MessagePtz struct constant DeviceControl (line 16) | DeviceControl = "DeviceControl" constant PTZFirstByte (line 17) | PTZFirstByte = 0xA5 constant PresetSet (line 19) | PresetSet = 0x81 constant PresetCall (line 20) | PresetCall = 0x82 constant PresetDel (line 21) | PresetDel = 0x83 constant CruiseAdd (line 25) | CruiseAdd = 0x84 constant CruiseDel (line 26) | CruiseDel = 0x85 constant CruiseSetSpeed (line 27) | CruiseSetSpeed = 0x86 constant CruiseStopTime (line 28) | CruiseStopTime = 0x87 constant CruiseStart (line 29) | CruiseStart = 0x88 constant ScanningStart (line 32) | ScanningStart = 0x89 constant ScanningSpeed (line 33) | ScanningSpeed = 0x8A type PtzHead (line 55) | type PtzHead struct function getAssembleCode (line 62) | func getAssembleCode() uint8 { function getVerificationCode (line 65) | func getVerificationCode(ptz []byte) { type Ptz (line 81) | type Ptz struct method Pack (line 91) | func (p *Ptz) Pack() string { method Stop (line 128) | func (p *Ptz) Stop() string { type Fi (line 147) | type Fi struct method Pack (line 155) | func (f *Fi) Pack() string { type Preset (line 185) | type Preset struct method Pack (line 190) | func (p *Preset) Pack() string { type Cruise (line 212) | type Cruise struct method Pack (line 218) | func (c *Cruise) Pack() string { type Scanning (line 238) | type Scanning struct FILE: gb28181/rtppub/manager.go constant defaultPortMin (line 19) | defaultPortMin = 30000 constant defaultPortMaxIncrement (line 20) | defaultPortMaxIncrement = 3000 type Manager (line 28) | type Manager struct method Start (line 79) | func (m *Manager) Start(req base.ApiCtrlStartRtpPubReq) (ret base.ApiC... method Stop (line 160) | func (m *Manager) Stop(streamName, sessionID string) (*Session, error) { method GetMediaInfoByKey (line 178) | func (m *Manager) GetMediaInfoByKey(key string) (*mediaserver.MediaInf... method CheckSsrc (line 189) | func (m *Manager) CheckSsrc(ssrc uint32) (*mediaserver.MediaInfo, bool) { method NotifyClose (line 193) | func (m *Manager) NotifyClose(streamName string) { method UpdatePortRange (line 198) | func (m *Manager) UpdatePortRange(portMin, portMax int) { method OnRtpPacket (line 206) | func (m *Manager) OnRtpPacket(streamName string, mediaKey string) { method stopSession (line 215) | func (m *Manager) stopSession(session *Session) { method watchTimeout (line 232) | func (m *Manager) watchTimeout(session *Session, timeout time.Duration) { method listen (line 259) | func (m *Manager) listen(port int, network string) (net.Listener, int,... type Session (line 40) | type Session struct function NewManager (line 54) | func NewManager(lalServer logic.ILalServer, mediaConfig config.GB28181Me... function listenPort (line 279) | func listenPort(port int, network string) (net.Listener, error) { FILE: gb28181/rtppub/manager_test.go function freeTCPPort (line 13) | func freeTCPPort(t *testing.T) uint16 { function newTestManager (line 25) | func newTestManager(t *testing.T) *Manager { function TestManagerStartStopBySessionID (line 31) | func TestManagerStartStopBySessionID(t *testing.T) { function TestManagerRejectsDuplicateStream (line 60) | func TestManagerRejectsDuplicateStream(t *testing.T) { function TestManagerTimeoutRemovesIdleSession (line 85) | func TestManagerTimeoutRemovesIdleSession(t *testing.T) { function TestNewManagerUsesConfiguredPortRangeAfterListenPort (line 118) | func TestNewManagerUsesConfiguredPortRangeAfterListenPort(t *testing.T) { FILE: gb28181/rtppush/lower_push_session.go constant lowerPushNetworkUDP (line 20) | lowerPushNetworkUDP = "udp" constant lowerPushNetworkTCP (line 21) | lowerPushNetworkTCP = "tcp" constant lowerPushRtpPacketMax (line 24) | lowerPushRtpPacketMax = 1400 constant lowerPushQueueMax (line 26) | lowerPushQueueMax = 256 type LowerPushSession (line 34) | type LowerPushSession struct method WithStreamName (line 94) | func (s *LowerPushSession) WithStreamName(streamName string) *LowerPus... method WithLogPrefix (line 100) | func (s *LowerPushSession) WithLogPrefix(prefix string) *LowerPushSess... method SetLocalIP (line 106) | func (s *LowerPushSession) SetLocalIP(localIP string) { method SetLocalPort (line 111) | func (s *LowerPushSession) SetLocalPort(localPort int) { method SetPeerIP (line 116) | func (s *LowerPushSession) SetPeerIP(peerIP string) { method SetPeerPort (line 121) | func (s *LowerPushSession) SetPeerPort(peerPort int) { method SetSsrc (line 126) | func (s *LowerPushSession) SetSsrc(ssrc uint32) { method Start (line 131) | func (s *LowerPushSession) Start(network string) error { method startUDP (line 143) | func (s *LowerPushSession) startUDP() error { method startTCP (line 167) | func (s *LowerPushSession) startTCP() error { method OnMsg (line 187) | func (s *LowerPushSession) OnMsg(msg lalbase.RtmpMsg) { method OnStop (line 209) | func (s *LowerPushSession) OnStop() { method WriteRtpPacket (line 214) | func (s *LowerPushSession) WriteRtpPacket(pkt rtprtcp.RtpPacket) error { method WriteRtpPsPacket (line 231) | func (s *LowerPushSession) WriteRtpPsPacket(buf []byte) error { method writeUDP (line 250) | func (s *LowerPushSession) writeUDP(payload []byte) error { method writeTCP (line 260) | func (s *LowerPushSession) writeTCP(payload []byte) error { method Dispose (line 271) | func (s *LowerPushSession) Dispose() error { method UniqueKey (line 289) | func (s *LowerPushSession) UniqueKey() string { method StreamName (line 294) | func (s *LowerPushSession) StreamName() string { method LocalAddr (line 302) | func (s *LowerPushSession) LocalAddr() net.Addr { method RemoteAddr (line 313) | func (s *LowerPushSession) RemoteAddr() net.Addr { method consumeControlMsg (line 324) | func (s *LowerPushSession) consumeControlMsg(msg lalbase.RtmpMsg) bool { method updateVideoHeader (line 380) | func (s *LowerPushSession) updateVideoHeader(msg lalbase.RtmpMsg) error { method updateAacHeader (line 415) | func (s *LowerPushSession) updateAacHeader(msg lalbase.RtmpMsg) error { method shouldDrain (line 430) | func (s *LowerPushSession) shouldDrain(msg lalbase.RtmpMsg) bool { method drain (line 450) | func (s *LowerPushSession) drain() { method feedRtmpMsg (line 467) | func (s *LowerPushSession) feedRtmpMsg(msg lalbase.RtmpMsg) error { method feedVideo (line 482) | func (s *LowerPushSession) feedVideo(msg lalbase.RtmpMsg) error { method feedAudio (line 593) | func (s *LowerPushSession) feedAudio(msg lalbase.RtmpMsg) error { method nextSeq (line 620) | func (s *LowerPushSession) nextSeq() uint16 { method packRtp (line 626) | func (s *LowerPushSession) packRtp(buf []byte, timestamp uint32) []rtp... function NewLowerPushSession (line 74) | func NewLowerPushSession() *LowerPushSession { FILE: gb28181/rtppush/lower_push_session_test.go function TestLowerPushSessionUDPWriteRtpPacket (line 15) | func TestLowerPushSessionUDPWriteRtpPacket(t *testing.T) { function TestLowerPushSessionTCPWriteRtpPsPacket (line 61) | func TestLowerPushSessionTCPWriteRtpPsPacket(t *testing.T) { function TestLowerPushSessionWriteBeforeStart (line 114) | func TestLowerPushSessionWriteBeforeStart(t *testing.T) { function TestLowerPushSessionOnMsgVideoUDP (line 122) | func TestLowerPushSessionOnMsgVideoUDP(t *testing.T) { function TestLowerPushSessionOnMsgAudioTCP (line 194) | func TestLowerPushSessionOnMsgAudioTCP(t *testing.T) { function makeTestRtpPacket (line 265) | func makeTestRtpPacket(payload []byte) rtprtcp.RtpPacket { function makeAvcSeqHeaderMsg (line 274) | func makeAvcSeqHeaderMsg() lalbase.RtmpMsg { function makeAvcKeyFrameMsg (line 293) | func makeAvcKeyFrameMsg() lalbase.RtmpMsg { function makeAacSeqHeaderMsg (line 316) | func makeAacSeqHeaderMsg() lalbase.RtmpMsg { function makeAacRawMsg (line 328) | func makeAacRawMsg() lalbase.RtmpMsg { function makeG711AMsg (line 341) | func makeG711AMsg() lalbase.RtmpMsg { function min (line 353) | func min(a, b int) int { function TestFixturesAreValid (line 360) | func TestFixturesAreValid(t *testing.T) { FILE: gb28181/server.go type IMediaOpObserver (line 26) | type IMediaOpObserver interface type GB28181Server (line 30) | type GB28181Server struct method Start (line 114) | func (s *GB28181Server) Start() { method newSipServer (line 119) | func (s *GB28181Server) newSipServer(network string) gosip.Server { method Dispose (line 140) | func (s *GB28181Server) Dispose() { method OnStartMediaServer (line 152) | func (s *GB28181Server) OnStartMediaServer(netWork string, singlePort ... method OnStopMediaServer (line 222) | func (s *GB28181Server) OnStopMediaServer(netWork string, singlePort b... method CheckSsrc (line 261) | func (s *GB28181Server) CheckSsrc(ssrc uint32) (*mediaserver.MediaInfo... method GetMediaInfoByKey (line 288) | func (s *GB28181Server) GetMediaInfoByKey(key string) (*mediaserver.Me... method NotifyClose (line 316) | func (s *GB28181Server) NotifyClose(streamName string) { method OnRtpPacket (line 339) | func (s *GB28181Server) OnRtpPacket(streamName string, mediaKey string) { method startJob (line 342) | func (s *GB28181Server) startJob() { method removeBanDevice (line 357) | func (s *GB28181Server) removeBanDevice() { method statusCheck (line 370) | func (s *GB28181Server) statusCheck() { method getDeviceInfos (line 388) | func (s *GB28181Server) getDeviceInfos() (deviceInfos *DeviceInfos) { method GetAllSyncChannels (line 421) | func (s *GB28181Server) GetAllSyncChannels() { method GetSyncChannels (line 428) | func (s *GB28181Server) GetSyncChannels(deviceId string) bool { method FindChannel (line 437) | func (s *GB28181Server) FindChannel(deviceId string, channelId string)... method OnRegister (line 450) | func (s *GB28181Server) OnRegister(req sip.Request, tx sip.ServerTrans... method OnMessage (line 572) | func (s *GB28181Server) OnMessage(req sip.Request, tx sip.ServerTransa... method OnNotify (line 651) | func (s *GB28181Server) OnNotify(req sip.Request, tx sip.ServerTransac... method OnBye (line 696) | func (s *GB28181Server) OnBye(req sip.Request, tx sip.ServerTransactio... method StoreDevice (line 717) | func (s *GB28181Server) StoreDevice(id string, req sip.Request) (d *De... method RecoverDevice (line 766) | func (s *GB28181Server) RecoverDevice(d *Device, req sip.Request) { constant MaxRegisterCount (line 49) | MaxRegisterCount = 3 function init (line 56) | func init() { function NewGB28181Server (line 60) | func NewGB28181Server(conf config.GB28181Config, lal logic.ILalServer) *... type notifyMessage (line 791) | type notifyMessage struct FILE: gb28181/t_http_api.go type DeviceInfos (line 9) | type DeviceInfos struct type DeviceItem (line 12) | type DeviceItem struct type ChannelItem (line 16) | type ChannelItem struct type PlayInfo (line 28) | type PlayInfo struct type ReqPlay (line 36) | type ReqPlay struct type RespPlay (line 39) | type RespPlay struct type ReqStop (line 42) | type ReqStop struct type PtzDirection (line 46) | type PtzDirection struct type PtzZoom (line 55) | type PtzZoom struct type PtzFi (line 62) | type PtzFi struct type PresetCmd (line 71) | type PresetCmd constant PresetEditPoint (line 74) | PresetEditPoint PresetCmd = iota constant PresetDelPoint (line 75) | PresetDelPoint constant PresetCallPoint (line 76) | PresetCallPoint type PtzPreset (line 79) | type PtzPreset struct type PtzStop (line 85) | type PtzStop struct type ReqUpdateNotify (line 89) | type ReqUpdateNotify struct function ResponseErrorWithMsg (line 93) | func ResponseErrorWithMsg(c *gin.Context, code ResCode, msg interface{}) { function ResponseSuccess (line 101) | func ResponseSuccess(c *gin.Context, data interface{}) { type ResCode (line 109) | type ResCode method Msg (line 132) | func (c ResCode) Msg() string { constant CodeSuccess (line 112) | CodeSuccess ResCode = 1000 + iota constant CodeInvalidParam (line 113) | CodeInvalidParam constant CodeServerBusy (line 114) | CodeServerBusy constant CodeDeviceNotRegister (line 115) | CodeDeviceNotRegister constant CodeDeviceStopError (line 116) | CodeDeviceStopError constant SpeedParamError (line 128) | SpeedParamError = "speed 范围(0,8]" constant PointParamError (line 129) | PointParamError = "point 范围(0,50]" type ResponseData (line 140) | type ResponseData struct FILE: gb28181/util.go function RandNumString (line 14) | func RandNumString(n int) string { function RandString (line 19) | func RandString(n int) string { function randStringBySoure (line 25) | func randStringBySoure(src string, n int) string { function DecodeGbk (line 47) | func DecodeGbk(v interface{}, body []byte) error { function GbkToUtf8 (line 58) | func GbkToUtf8(s []byte) ([]byte, error) { FILE: gb28181/xml.go function BuildCatalogXML (line 46) | func BuildCatalogXML(sn int, id string) string { function BuildAlarmResponseXML (line 62) | func BuildAlarmResponseXML(id string) string { function BuildDeviceInfoXML (line 66) | func BuildDeviceInfoXML(sn int, id string) string { function XmlEncode (line 70) | func XmlEncode(v interface{}) (string, error) { FILE: logic/gop_cache.go type GopCache (line 9) | type GopCache struct method Feed (line 37) | func (c *GopCache) Feed(msg base.RtmpMsg) { method feedNewGop (line 76) | func (c *GopCache) feedNewGop(msg base.RtmpMsg) { method feedLastGop (line 85) | func (c *GopCache) feedLastGop(msg base.RtmpMsg) { method isGopRingFull (line 96) | func (c *GopCache) isGopRingFull() bool { method isGopRingEmpty (line 100) | func (c *GopCache) isGopRingEmpty() bool { method Clear (line 104) | func (c *GopCache) Clear() { method GetGopCount (line 112) | func (c *GopCache) GetGopCount() int { method GetGopDataAt (line 116) | func (c *GopCache) GetGopDataAt(pos int) []base.RtmpMsg { function NewGopCache (line 22) | func NewGopCache(gopSize, singleGopMaxFrameNum int) *GopCache { type Gop (line 124) | type Gop struct method feed (line 128) | func (g *Gop) feed(msg base.RtmpMsg) { method clear (line 132) | func (g *Gop) clear() { method release (line 142) | func (g *Gop) release() { method size (line 146) | func (g *Gop) size() int { FILE: logic/group.go constant SubscriberProtocolLalmax (line 17) | SubscriberProtocolLalmax = "LALMAX" constant SubscriberProtocolWHEP (line 18) | SubscriberProtocolWHEP = "WHEP" constant SubscriberProtocolJessibuca (line 19) | SubscriberProtocolJessibuca = "JESSIBUCA" constant SubscriberProtocolHTTPFMP4 (line 20) | SubscriberProtocolHTTPFMP4 = "HTTP-FMP4" constant SubscriberProtocolSRT (line 21) | SubscriberProtocolSRT = "SRT" type Subscriber (line 24) | type Subscriber interface type ReplaySubscriber (line 30) | type ReplaySubscriber interface type SubscriberInfo (line 35) | type SubscriberInfo struct type Group (line 42) | type Group struct method initHlsSession (line 132) | func (group *Group) initHlsSession() { method waitLifecycleIdle (line 138) | func (group *Group) waitLifecycleIdle() { method Key (line 147) | func (group *Group) Key() StreamKey { method UniqueKey (line 151) | func (group *Group) UniqueKey() string { method BindStopHook (line 155) | func (group *Group) BindStopHook(key StreamKey, onStop func(StreamKey)) { method BindActiveHook (line 166) | func (group *Group) BindActiveHook(key StreamKey, onActive func(Stream... method OnMsg (line 177) | func (group *Group) OnMsg(msg base.RtmpMsg) { method OnStop (line 239) | func (group *Group) OnStop() { method AddSubscriber (line 278) | func (group *Group) AddSubscriber(info SubscriberInfo, subscriber Subs... method AddSubscriberWithReplay (line 282) | func (group *Group) AddSubscriberWithReplay(info SubscriberInfo, subsc... method AddConsumer (line 345) | func (group *Group) AddConsumer(consumerID string, subscriber Subscrib... method AddConsumerWithReplay (line 349) | func (group *Group) AddConsumerWithReplay(consumerID string, subscribe... method StatSubscribers (line 353) | func (group *Group) StatSubscribers() []base.StatSub { method GetAllConsumer (line 365) | func (group *Group) GetAllConsumer() []base.StatSub { method RemoveSubscriber (line 369) | func (group *Group) RemoveSubscriber(subscriberID string) { method RemoveConsumer (line 379) | func (group *Group) RemoveConsumer(consumerID string) { method GetVideoSeqHeaderMsg (line 383) | func (group *Group) GetVideoSeqHeaderMsg() *base.RtmpMsg { method GetAudioSeqHeaderMsg (line 393) | func (group *Group) GetAudioSeqHeaderMsg() *base.RtmpMsg { method handleSubscriberMsg (line 403) | func (group *Group) handleSubscriberMsg(c *subscriberState, msg base.R... method replayGopMessagesLocked (line 441) | func (group *Group) replayGopMessagesLocked(c *subscriberState, msgs [... method getGopReplayMessages (line 561) | func (group *Group) getGopReplayMessages() []base.RtmpMsg { type subscriberState (line 63) | type subscriberState struct method AppName (line 80) | func (s *subscriberState) AppName() string { method GetStat (line 84) | func (s *subscriberState) GetStat() base.StatSession { method IsAlive (line 91) | func (s *subscriberState) IsAlive() (readAlive bool, writeAlive bool) { method RawQuery (line 95) | func (s *subscriberState) RawQuery() string { method StreamName (line 99) | func (s *subscriberState) StreamName() string { method UniqueKey (line 103) | func (s *subscriberState) UniqueKey() string { method UpdateStat (line 107) | func (s *subscriberState) UpdateStat(intervalSec uint32) { method Url (line 114) | func (s *subscriberState) Url() string { method deliverMsg (line 463) | func (s *subscriberState) deliverMsg(msg base.RtmpMsg) bool { method refreshStat (line 472) | func (s *subscriberState) refreshStat(intervalSec float64) base.StatSe... method refreshStatSnapshotLocked (line 494) | func (s *subscriberState) refreshStatSnapshotLocked() { method updateBitrateLocked (line 507) | func (s *subscriberState) updateBitrateLocked(intervalSec float64) { method stopWithNotify (line 534) | func (s *subscriberState) stopWithNotify() { method stopWithoutNotify (line 551) | func (s *subscriberState) stopWithoutNotify() { function newGroup (line 118) | func newGroup(manager *ComplexGroupManager, uniqueKey string, key Stream... function isActiveMediaMsg (line 228) | func isActiveMediaMsg(msg base.RtmpMsg) bool { function bitrateFromBytes (line 523) | func bitrateFromBytes(bytes uint64, intervalSec float64) int { function diffUint64 (line 527) | func diffUint64(curr, prev uint64) uint64 { FILE: logic/group_manager.go type IGroupManager (line 11) | type IGroupManager interface type ComplexGroupManager (line 20) | type ComplexGroupManager struct method GetOrCreateGroup (line 47) | func (m *ComplexGroupManager) GetOrCreateGroup(key StreamKey, uniqueKe... method GetOrCreateGroupByStreamName (line 90) | func (m *ComplexGroupManager) GetOrCreateGroupByStreamName(uniqueKey, ... method setGroup (line 94) | func (m *ComplexGroupManager) setGroup(key StreamKey, group *Group) { method setGroupLocked (line 105) | func (m *ComplexGroupManager) setGroupLocked(key StreamKey, group *Gro... method setGroupByStreamName (line 122) | func (m *ComplexGroupManager) setGroupByStreamName(streamName string, ... method RemoveGroup (line 126) | func (m *ComplexGroupManager) RemoveGroup(key StreamKey) { method RemoveGroupIfMatch (line 131) | func (m *ComplexGroupManager) RemoveGroupIfMatch(key StreamKey, group ... method removeGroup (line 135) | func (m *ComplexGroupManager) removeGroup(key StreamKey, group *Group,... method RemoveGroupByStreamName (line 175) | func (m *ComplexGroupManager) RemoveGroupByStreamName(streamName strin... method GetGroup (line 179) | func (m *ComplexGroupManager) GetGroup(key StreamKey) (bool, *Group) { method getGroupLocked (line 190) | func (m *ComplexGroupManager) getGroupLocked(key StreamKey) (bool, *Gr... method GetGroupByStreamName (line 211) | func (m *ComplexGroupManager) GetGroupByStreamName(streamName string) ... method WaitGroup (line 217) | func (m *ComplexGroupManager) WaitGroup(key StreamKey, interval, timeo... method getGroupByOnlyStreamNameLocked (line 231) | func (m *ComplexGroupManager) getGroupByOnlyStreamNameLocked(streamNam... method Iterate (line 247) | func (m *ComplexGroupManager) Iterate(onIterateGroup func(key StreamKe... method Len (line 276) | func (m *ComplexGroupManager) Len() int { function NewComplexGroupManager (line 28) | func NewComplexGroupManager() *ComplexGroupManager { function GetGroupManagerInstance (line 40) | func GetGroupManagerInstance() *ComplexGroupManager { FILE: logic/group_test.go type recordSubscriber (line 11) | type recordSubscriber struct method OnMsg (line 17) | func (s *recordSubscriber) OnMsg(msg base.RtmpMsg) { method OnStop (line 23) | func (s *recordSubscriber) OnStop() { method len (line 29) | func (s *recordSubscriber) len() int { method markerAt (line 35) | func (s *recordSubscriber) markerAt(idx int) byte { method stopCountValue (line 41) | func (s *recordSubscriber) stopCountValue() int { type blockingSubscriber (line 47) | type blockingSubscriber struct method OnMsg (line 63) | func (s *blockingSubscriber) OnMsg(msg base.RtmpMsg) { method OnStop (line 77) | func (s *blockingSubscriber) OnStop() {} method OnReplayStart (line 79) | func (s *blockingSubscriber) OnReplayStart() { method OnReplayStop (line 85) | func (s *blockingSubscriber) OnReplayStop() { method markers (line 91) | func (s *blockingSubscriber) markers() []byte { function newBlockingSubscriber (line 56) | func newBlockingSubscriber() *blockingSubscriber { type selfRemovingSubscriber (line 102) | type selfRemovingSubscriber struct method OnMsg (line 110) | func (s *selfRemovingSubscriber) OnMsg(msg base.RtmpMsg) { method OnStop (line 121) | func (s *selfRemovingSubscriber) OnStop() {} method len (line 123) | func (s *selfRemovingSubscriber) len() int { method markerAt (line 129) | func (s *selfRemovingSubscriber) markerAt(idx int) byte { type statSubscriber (line 135) | type statSubscriber struct method OnMsg (line 140) | func (s *statSubscriber) OnMsg(msg base.RtmpMsg) {} method OnStop (line 142) | func (s *statSubscriber) OnStop() {} method GetSubscriberStat (line 144) | func (s *statSubscriber) GetSubscriberStat() SubscriberStat { method setStat (line 150) | func (s *statSubscriber) setStat(stat SubscriberStat) { function videoSeqHeader (line 156) | func videoSeqHeader(marker byte) base.RtmpMsg { function videoKeyNalu (line 168) | func videoKeyNalu(marker byte) base.RtmpMsg { function videoInterNalu (line 180) | func videoInterNalu(marker byte) base.RtmpMsg { function aacSeqHeader (line 192) | func aacSeqHeader(marker byte) base.RtmpMsg { function aacRaw (line 203) | func aacRaw(marker byte) base.RtmpMsg { function g711aAudio (line 214) | func g711aAudio(marker byte) base.RtmpMsg { function payloadMarker (line 221) | func payloadMarker(msg base.RtmpMsg) byte { function newTestGroup (line 225) | func newTestGroup(streamName string) *Group { function testSubscriberState (line 230) | func testSubscriberState(t *testing.T, group *Group, subscriberID string... function TestAddConsumerReplaysCachedGopImmediately (line 246) | func TestAddConsumerReplaysCachedGopImmediately(t *testing.T) { function TestVideoSeqHeaderChangeClearsStaleGop (line 271) | func TestVideoSeqHeaderChangeClearsStaleGop(t *testing.T) { function TestNonAacAudioIsNotReplayedAsHeader (line 298) | func TestNonAacAudioIsNotReplayedAsHeader(t *testing.T) { function TestAddConsumerWithReplayDisabledDoesNotReplayCachedGop (line 321) | func TestAddConsumerWithReplayDisabledDoesNotReplayCachedGop(t *testing.... function TestAddConsumerReplayDoesNotInterleaveWithLiveKeyFrame (line 353) | func TestAddConsumerReplayDoesNotInterleaveWithLiveKeyFrame(t *testing.T) { function TestSubscriberRemovingItselfStopsReplayDelivery (line 398) | func TestSubscriberRemovingItselfStopsReplayDelivery(t *testing.T) { function TestSubscriberRemovingItselfStopsHeaderAndLiveDelivery (line 422) | func TestSubscriberRemovingItselfStopsHeaderAndLiveDelivery(t *testing.T) { function TestGroupManagerSupportsAppNameAndStreamName (line 441) | func TestGroupManagerSupportsAppNameAndStreamName(t *testing.T) { function TestGroupManagerStreamNameFallbackRejectsAmbiguousAppName (line 458) | func TestGroupManagerStreamNameFallbackRejectsAmbiguousAppName(t *testin... function TestGroupManagerGetOrCreateGroupReturnsExisting (line 469) | func TestGroupManagerGetOrCreateGroupReturnsExisting(t *testing.T) { function TestGroupManagerGetOrCreateWaitsForClosedGroupCleanup (line 487) | func TestGroupManagerGetOrCreateWaitsForClosedGroupCleanup(t *testing.T) { function TestGroupManagerGetOrCreateReturnsReplacementAfterWaitingClosedGroup (line 525) | func TestGroupManagerGetOrCreateReturnsReplacementAfterWaitingClosedGrou... function TestGroupManagerRemoveGroupIfMatchDoesNotRemoveNewGroup (line 560) | func TestGroupManagerRemoveGroupIfMatchDoesNotRemoveNewGroup(t *testing.... function TestGroupManagerIterateRemoveDoesNotRemoveReplacement (line 576) | func TestGroupManagerIterateRemoveDoesNotRemoveReplacement(t *testing.T) { function TestGopCacheClearReleasesStaleGopPayloads (line 597) | func TestGopCacheClearReleasesStaleGopPayloads(t *testing.T) { function TestGopCacheNegativeFrameLimitMeansUnlimited (line 614) | func TestGopCacheNegativeFrameLimitMeansUnlimited(t *testing.T) { function TestOnStopIsIdempotentAndClosesSubscribers (line 626) | func TestOnStopIsIdempotentAndClosesSubscribers(t *testing.T) { function TestOnMsgTriggersActiveHookOnceOnFirstMediaPacket (line 646) | func TestOnMsgTriggersActiveHookOnceOnFirstMediaPacket(t *testing.T) { function TestAddSubscriberAfterStopIsIgnored (line 672) | func TestAddSubscriberAfterStopIsIgnored(t *testing.T) { function TestDuplicateSubscriberIDIsIgnored (line 690) | func TestDuplicateSubscriberIDIsIgnored(t *testing.T) { function TestStatSubscribersRefreshRuntimeStats (line 709) | func TestStatSubscribersRefreshRuntimeStats(t *testing.T) { FILE: logic/stat_aggregator.go type StatAggregator (line 6) | type StatAggregator struct method ExtSubscribers (line 22) | func (a *StatAggregator) ExtSubscribers(key StreamKey) []base.StatSub { method BuildGroupView (line 42) | func (a *StatAggregator) BuildGroupView(group base.StatGroup) StatGrou... method BuildGroupsView (line 56) | func (a *StatAggregator) BuildGroupsView(groups []base.StatGroup) []St... method MergeGroup (line 68) | func (a *StatAggregator) MergeGroup(group base.StatGroup) base.StatGro... method MergeGroups (line 72) | func (a *StatAggregator) MergeGroups(groups []base.StatGroup) []base.S... method FindGroupView (line 84) | func (a *StatAggregator) FindGroupView(groups []base.StatGroup, key St... method FindGroup (line 114) | func (a *StatAggregator) FindGroup(groups []base.StatGroup, key Stream... type StatGroupView (line 10) | type StatGroupView struct function NewStatAggregator (line 15) | func NewStatAggregator(groupManager IGroupManager) *StatAggregator { FILE: logic/stream_key.go type StreamKey (line 3) | type StreamKey struct method Valid (line 20) | func (key StreamKey) Valid() bool { method String (line 24) | func (key StreamKey) String() string { function NewStreamKey (line 9) | func NewStreamKey(appName, streamName string) StreamKey { function StreamKeyFromStreamName (line 16) | func StreamKeyFromStreamName(streamName string) StreamKey { FILE: logic/subscriber_stat.go type SubscriberStat (line 4) | type SubscriberStat struct type SubscriberStatProvider (line 11) | type SubscriberStatProvider interface FILE: main.go function main (line 20) | func main() { function parseFlag (line 43) | func parseFlag() string { FILE: rtc/jessibucasession.go type jessibucaSession (line 19) | type jessibucaSession struct method createDataChannel (line 59) | func (conn *jessibucaSession) createDataChannel() (err error) { method GetAnswerSDP (line 66) | func (conn *jessibucaSession) GetAnswerSDP(offer string) (sdp string) { method Run (line 99) | func (conn *jessibucaSession) Run() { method OnMsg (line 179) | func (conn *jessibucaSession) OnMsg(msg base.RtmpMsg) { method OnStop (line 194) | func (conn *jessibucaSession) OnStop() { method Close (line 200) | func (conn *jessibucaSession) Close() { method GetSubscriberStat (line 209) | func (conn *jessibucaSession) GetSubscriberStat() maxlogic.SubscriberS... method refreshRemoteAddr (line 217) | func (conn *jessibucaSession) refreshRemoteAddr() { method currentRemoteAddr (line 223) | func (conn *jessibucaSession) currentRemoteAddr() string { method loadRemoteAddr (line 237) | func (conn *jessibucaSession) loadRemoteAddr() string { function NewJessibucaSession (line 39) | func NewJessibucaSession(appName, streamid string, writeChanSize int, pc... function chunkSlice (line 163) | func chunkSlice(slice []byte, size int) [][]byte { FILE: rtc/packer.go constant PacketH264 (line 15) | PacketH264 = "H264" constant PacketHEVC (line 16) | PacketHEVC = "HEVC" constant PacketPCMA (line 17) | PacketPCMA = "PCMA" constant PacketPCMU (line 18) | PacketPCMU = "PCMU" constant PacketOPUS (line 19) | PacketOPUS = "OPUS" type Packer (line 22) | type Packer struct method Encode (line 44) | func (p *Packer) Encode(msg base.RtmpMsg) ([]*rtp.Packet, error) { method UpdateVideoCodec (line 51) | func (p *Packer) UpdateVideoCodec(vps, sps, pps []byte) { function NewPacker (line 26) | func NewPacker(mimeType string, codec []byte) *Packer { type IRtpEncoder (line 66) | type IRtpEncoder interface type H264RtpEncoder (line 70) | type H264RtpEncoder struct method Encode (line 95) | func (enc *H264RtpEncoder) Encode(msg base.RtmpMsg) ([]*rtp.Packet, er... method UpdateVideoCodec (line 147) | func (enc *H264RtpEncoder) UpdateVideoCodec(_ []byte, sps, pps []byte) { function NewH264RtpEncoder (line 77) | func NewH264RtpEncoder(codec []byte) *H264RtpEncoder { type G711RtpEncoder (line 152) | type G711RtpEncoder struct method Encode (line 166) | func (enc *G711RtpEncoder) Encode(msg base.RtmpMsg) ([]*rtp.Packet, er... function NewG711RtpEncoder (line 157) | func NewG711RtpEncoder(pt uint8) *G711RtpEncoder { type HevcRtpEncoder (line 192) | type HevcRtpEncoder struct method Encode (line 219) | func (enc *HevcRtpEncoder) Encode(msg base.RtmpMsg) ([]*rtp.Packet, er... method UpdateVideoCodec (line 273) | func (enc *HevcRtpEncoder) UpdateVideoCodec(vps, sps, pps []byte) { function NewHevcRtpEncoder (line 200) | func NewHevcRtpEncoder(codec []byte) *HevcRtpEncoder { type OpusRtpEncoder (line 279) | type OpusRtpEncoder struct method Encode (line 292) | func (enc *OpusRtpEncoder) Encode(msg base.RtmpMsg) ([]*rtp.Packet, er... function NewOpusRtpEncoder (line 284) | func NewOpusRtpEncoder(pt uint8) *OpusRtpEncoder { FILE: rtc/peerConnection.go type peerConnection (line 10) | type peerConnection struct function newPeerConnection (line 14) | func newPeerConnection(ips []string, iceUDPMux ice.UDPMux, iceTCPMux ice... FILE: rtc/server.go type StreamNotFoundFn (line 20) | type StreamNotFoundFn type RtcServer (line 22) | type RtcServer struct method SetStreamNotFoundFn (line 31) | func (s *RtcServer) SetStreamNotFoundFn(fn StreamNotFoundFn) { method waitStreamReady (line 37) | func (s *RtcServer) waitStreamReady(appName, streamid, schema string) ... method HandleWHIP (line 100) | func (s *RtcServer) HandleWHIP(c *gin.Context) { method ServeWHIPPublishPage (line 148) | func (s *RtcServer) ServeWHIPPublishPage(c *gin.Context) { method HandleJessibuca (line 167) | func (s *RtcServer) HandleJessibuca(c *gin.Context) { method ServeWHEPPlayPage (line 222) | func (s *RtcServer) ServeWHEPPlayPage(c *gin.Context) { method HandleWHEP (line 243) | func (s *RtcServer) HandleWHEP(c *gin.Context) { method HandleZlmWebrtcPlay (line 299) | func (s *RtcServer) HandleZlmWebrtcPlay(app, stream, offer string) (st... function NewRtcServer (line 52) | func NewRtcServer(config config.RtcConfig, lal logic.ILalServer) (*RtcSe... function buildWHIPPublishHTML (line 163) | func buildWHIPPublishHTML() string { function buildWHEPPlayHTML (line 239) | func buildWHEPPlayHTML() string { FILE: rtc/subscriber_stat.go function remoteAddrFromDTLSTransport (line 9) | func remoteAddrFromDTLSTransport(dtls *webrtc.DTLSTransport) string { function remoteAddrFromICETransport (line 16) | func remoteAddrFromICETransport(iceTransport *webrtc.ICETransport) string { FILE: rtc/unpacker.go type UnPacker (line 24) | type UnPacker struct method UnPack (line 70) | func (un *UnPacker) UnPack(pkt *rtp.Packet) (err error) { function NewUnPacker (line 34) | func NewUnPacker(mimeType string, clockRate uint32, pktChan chan<- base.... type IRtpDecoder (line 105) | type IRtpDecoder interface type H264RtpDecoder (line 109) | type H264RtpDecoder struct method Decode (line 121) | func (r *H264RtpDecoder) Decode(pkt *rtp.Packet) ([]byte, error) { function NewH264RtpDecoder (line 114) | func NewH264RtpDecoder(f format.Format) *H264RtpDecoder { type G711RtpDecoder (line 141) | type G711RtpDecoder struct method Decode (line 153) | func (r *G711RtpDecoder) Decode(pkt *rtp.Packet) ([]byte, error) { function NewG711RtpDecoder (line 146) | func NewG711RtpDecoder(f format.Format) *G711RtpDecoder { type OpusRtpDecoder (line 163) | type OpusRtpDecoder struct method Decode (line 175) | func (r *OpusRtpDecoder) Decode(pkt *rtp.Packet) ([]byte, error) { function NewOpusRtpDecoder (line 168) | func NewOpusRtpDecoder(f format.Format) *OpusRtpDecoder { type H265RtpDecoder (line 185) | type H265RtpDecoder struct method Decode (line 197) | func (r *H265RtpDecoder) Decode(pkt *rtp.Packet) ([]byte, error) { function NewH265RtpDecoder (line 190) | func NewH265RtpDecoder(f format.Format) *H265RtpDecoder { FILE: rtc/whepsession.go constant whepMaxReplayPaceDelay (line 23) | whepMaxReplayPaceDelay = 5 * time.Millisecond type whepSession (line 25) | type whepSession struct method GetAnswerSDP (line 67) | func (conn *whepSession) GetAnswerSDP(offer string) (sdp string) { method Run (line 172) | func (conn *whepSession) Run() { method signalConnected (line 233) | func (conn *whepSession) signalConnected() { method OnReplayStart (line 240) | func (conn *whepSession) OnReplayStart() { method OnReplayStop (line 247) | func (conn *whepSession) OnReplayStop() { method paceReplayMsg (line 251) | func (conn *whepSession) paceReplayMsg(msg base.RtmpMsg) { method OnMsg (line 283) | func (conn *whepSession) OnMsg(msg base.RtmpMsg) { method OnStop (line 302) | func (conn *whepSession) OnStop() { method sendAudio (line 306) | func (conn *whepSession) sendAudio(msg base.RtmpMsg) { method sendVideo (line 323) | func (conn *whepSession) sendVideo(msg base.RtmpMsg) { method updateVideoCodec (line 341) | func (conn *whepSession) updateVideoCodec(msg base.RtmpMsg) { method Close (line 380) | func (conn *whepSession) Close() { method GetSubscriberStat (line 386) | func (conn *whepSession) GetSubscriberStat() maxlogic.SubscriberStat { method recordSentRTP (line 394) | func (conn *whepSession) recordSentRTP(pkt *rtp.Packet) { method refreshRemoteAddr (line 401) | func (conn *whepSession) refreshRemoteAddr() { method currentRemoteAddr (line 407) | func (conn *whepSession) currentRemoteAddr() string { method loadRemoteAddr (line 424) | func (conn *whepSession) loadRemoteAddr() string { function NewWhepSession (line 48) | func NewWhepSession(appName, streamid string, writeChanSize int, pc *pee... FILE: rtc/whipsession.go type whipSession (line 11) | type whipSession struct method GetAnswerSDP (line 47) | func (conn *whipSession) GetAnswerSDP(offer string) (sdp string) { method Run (line 73) | func (conn *whipSession) Run() { method Close (line 135) | func (conn *whipSession) Close() { function NewWhipSession (line 23) | func NewWhipSession(streamid string, pc *peerConnection, lalServer logic... FILE: server/hook_builtin_http_plugin.go type hookBuiltinHTTPPlugin (line 5) | type hookBuiltinHTTPPlugin struct method Name (line 10) | func (p *hookBuiltinHTTPPlugin) Name() string { method OnHookEvent (line 14) | func (p *hookBuiltinHTTPPlugin) OnHookEvent(event HookEvent) error { method mustRegisterBuiltinHTTPPlugin (line 115) | func (h *HttpNotify) mustRegisterBuiltinHTTPPlugin() { FILE: server/hook_filter.go type HookEventFilter (line 9) | type HookEventFilter struct method Match (line 53) | func (f HookEventFilter) Match(event HookEvent) bool { function NewHookEventFilter (line 16) | func NewHookEventFilter(appName, streamName, sessionID string, eventName... function ParseHookEventNames (line 36) | func ParseHookEventNames(raw string) []string { function matchStreamKey (line 81) | func matchStreamKey(key maxlogic.StreamKey, appName, streamName string) ... FILE: server/hook_plugin.go constant defaultHookPluginBufferSize (line 8) | defaultHookPluginBufferSize = 64 type HookPlugin (line 10) | type HookPlugin interface type HookPluginOptions (line 15) | type HookPluginOptions struct type hookPluginEntry (line 20) | type hookPluginEntry struct method RegisterPlugin (line 26) | func (h *HttpNotify) RegisterPlugin(plugin HookPlugin, options HookPlugi... method runPlugin (line 68) | func (h *HttpNotify) runPlugin(entry *hookPluginEntry) { method dispatchPlugins (line 76) | func (h *HttpNotify) dispatchPlugins(event HookEvent) { method unregisterPlugin (line 93) | func (h *HttpNotify) unregisterPlugin(name string) { FILE: server/http_notify.go type hookHTTPPostTask (line 42) | type hookHTTPPostTask struct type hookHTTPPostWorker (line 49) | type hookHTTPPostWorker struct type HookGroupInfo (line 53) | type HookGroupInfo struct type HookEvent (line 59) | type HookEvent struct constant HookEventServerStart (line 72) | HookEventServerStart = "on_server_start" constant HookEventUpdate (line 73) | HookEventUpdate = "on_update" constant HookEventGroupStart (line 74) | HookEventGroupStart = "on_group_start" constant HookEventGroupStop (line 75) | HookEventGroupStop = "on_group_stop" constant HookEventStreamActive (line 76) | HookEventStreamActive = "on_stream_active" constant HookEventPubStart (line 77) | HookEventPubStart = "on_pub_start" constant HookEventPubStop (line 78) | HookEventPubStop = "on_pub_stop" constant HookEventSubStart (line 79) | HookEventSubStart = "on_sub_start" constant HookEventSubStop (line 80) | HookEventSubStop = "on_sub_stop" constant HookEventRelayPullStart (line 81) | HookEventRelayPullStart = "on_relay_pull_start" constant HookEventRelayPullStop (line 82) | HookEventRelayPullStop = "on_relay_pull_stop" constant HookEventRtmpConnect (line 83) | HookEventRtmpConnect = "on_rtmp_connect" constant HookEventHlsMakeTs (line 84) | HookEventHlsMakeTs = "on_hls_make_ts" constant HookEventStreamChanged (line 85) | HookEventStreamChanged = "on_stream_changed" constant HookEventServerKeepalive (line 86) | HookEventServerKeepalive = "on_server_keepalive" constant HookEventStreamNoneReader (line 87) | HookEventStreamNoneReader = "on_stream_none_reader" constant HookEventRtpServerTimeout (line 88) | HookEventRtpServerTimeout = "on_rtp_server_timeout" constant HookEventRecordMp4 (line 89) | HookEventRecordMp4 = "on_record_mp4" constant HookEventPublish (line 90) | HookEventPublish = "on_publish" constant HookEventPlay (line 91) | HookEventPlay = "on_play" constant HookEventStreamNotFound (line 92) | HookEventStreamNotFound = "on_stream_not_found" type SubCountFn (line 97) | type SubCountFn type HttpNotify (line 99) | type HttpNotify struct method SetSubCountFn (line 122) | func (h *HttpNotify) SetSubCountFn(fn SubCountFn) { method UpdateZlmHookConfig (line 129) | func (h *HttpNotify) UpdateZlmHookConfig(zlmCfg config.ZlmCompatHookCo... method NotifyServerStart (line 181) | func (h *HttpNotify) NotifyServerStart(info base.LalInfo) { method NotifyUpdate (line 186) | func (h *HttpNotify) NotifyUpdate(info base.UpdateInfo) { method NotifyGroupStart (line 192) | func (h *HttpNotify) NotifyGroupStart(info HookGroupInfo) { method NotifyGroupStop (line 197) | func (h *HttpNotify) NotifyGroupStop(info HookGroupInfo) { method NotifyStreamActive (line 202) | func (h *HttpNotify) NotifyStreamActive(info HookGroupInfo) { method NotifyPubStart (line 207) | func (h *HttpNotify) NotifyPubStart(info base.PubStartInfo) { method NotifyPubStop (line 234) | func (h *HttpNotify) NotifyPubStop(info base.PubStopInfo) { method NotifySubStart (line 254) | func (h *HttpNotify) NotifySubStart(info base.SubStartInfo) { method NotifySubStop (line 271) | func (h *HttpNotify) NotifySubStop(info base.SubStopInfo) { method NotifyPullStart (line 289) | func (h *HttpNotify) NotifyPullStart(info base.PullStartInfo) { method NotifyPullStop (line 294) | func (h *HttpNotify) NotifyPullStop(info base.PullStopInfo) { method NotifyRtmpConnect (line 299) | func (h *HttpNotify) NotifyRtmpConnect(info base.RtmpConnectInfo) { method NotifyOnHlsMakeTs (line 304) | func (h *HttpNotify) NotifyOnHlsMakeTs(info base.HlsMakeTsInfo) { method NotifyStreamChanged (line 309) | func (h *HttpNotify) NotifyStreamChanged(info ZlmOnStreamChangedPayloa... method NotifyServerKeepalive (line 316) | func (h *HttpNotify) NotifyServerKeepalive() { method NotifyStreamNoneReader (line 322) | func (h *HttpNotify) NotifyStreamNoneReader(info ZlmOnStreamNoneReader... method NotifyRtpServerTimeout (line 329) | func (h *HttpNotify) NotifyRtpServerTimeout(info ZlmOnRtpServerTimeout... method NotifyRecordMp4 (line 336) | func (h *HttpNotify) NotifyRecordMp4(info ZlmOnRecordMp4Payload) { method NotifyPublish (line 343) | func (h *HttpNotify) NotifyPublish(info ZlmOnPublishPayload) { method NotifyPlay (line 350) | func (h *HttpNotify) NotifyPlay(info ZlmOnPlayPayload) { method NotifyStreamNotFound (line 357) | func (h *HttpNotify) NotifyStreamNotFound(info ZlmOnStreamNotFoundPayl... method OnServerStart (line 366) | func (h *HttpNotify) OnServerStart(info base.LalInfo) { method OnUpdate (line 370) | func (h *HttpNotify) OnUpdate(info base.UpdateInfo) { method OnGroupStart (line 374) | func (h *HttpNotify) OnGroupStart(info HookGroupInfo) { method OnGroupStop (line 378) | func (h *HttpNotify) OnGroupStop(info HookGroupInfo) { method OnStreamActive (line 382) | func (h *HttpNotify) OnStreamActive(info HookGroupInfo) { method OnPubStart (line 386) | func (h *HttpNotify) OnPubStart(info base.PubStartInfo) { method OnPubStop (line 390) | func (h *HttpNotify) OnPubStop(info base.PubStopInfo) { method OnSubStart (line 394) | func (h *HttpNotify) OnSubStart(info base.SubStartInfo) { method OnSubStop (line 398) | func (h *HttpNotify) OnSubStop(info base.SubStopInfo) { method OnRelayPullStart (line 402) | func (h *HttpNotify) OnRelayPullStart(info base.PullStartInfo) { method OnRelayPullStop (line 406) | func (h *HttpNotify) OnRelayPullStop(info base.PullStopInfo) { method OnRtmpConnect (line 410) | func (h *HttpNotify) OnRtmpConnect(info base.RtmpConnectInfo) { method OnHlsMakeTs (line 414) | func (h *HttpNotify) OnHlsMakeTs(info base.HlsMakeTsInfo) { method asyncPostEvent (line 418) | func (h *HttpNotify) asyncPostEvent(url string, event HookEvent) { method newHookHTTPPostTask (line 426) | func (h *HttpNotify) newHookHTTPPostTask(url string, event HookEvent) ... method dispatchHTTPPost (line 451) | func (h *HttpNotify) dispatchHTTPPost(task hookHTTPPostTask) { method runHTTPPostWorker (line 470) | func (h *HttpNotify) runHTTPPostWorker(orderKey string, worker *hookHT... method postRaw (line 503) | func (h *HttpNotify) postRaw(url string, payload []byte) { method Recent (line 524) | func (h *HttpNotify) Recent(limit int) []HookEvent { method RecentFiltered (line 538) | func (h *HttpNotify) RecentFiltered(limit int, filter HookEventFilter)... method Subscribe (line 560) | func (h *HttpNotify) Subscribe(buffer int) (int64, <-chan HookEvent, f... method publish (line 584) | func (h *HttpNotify) publish(event string, info interface{}) { function NewHttpNotify (line 155) | func NewHttpNotify(cfg config.HttpNotifyConfig, serverId string) *HttpNo... function buildHookHTTPOrderKey (line 435) | func buildHookHTTPOrderKey(url string, event HookEvent) string { function populateHookEventMeta (line 637) | func populateHookEventMeta(event *HookEvent, info interface{}) { function populateHookSessionMeta (line 703) | func populateHookSessionMeta(event *HookEvent, info base.SessionEventCom... FILE: server/middle.go method Cors (line 10) | func (s *LalMaxServer) Cors() gin.HandlerFunc { function Authentication (line 36) | func Authentication(secrets, ips []string) gin.HandlerFunc { function authentication (line 51) | func authentication(reqToken, clientIP string, secrets, ips []string) bo... function containFn (line 63) | func containFn[T comparable](ts []T, t T) bool { FILE: server/router.go method InitRouter (line 5) | func (s *LalMaxServer) InitRouter(router *gin.Engine) { FILE: server/router_ctrl.go method initCtrlRouter (line 11) | func (s *LalMaxServer) initCtrlRouter(router *gin.Engine, handlers ...gi... method ctrlStartRelayPullHandler (line 21) | func (s *LalMaxServer) ctrlStartRelayPullHandler(c *gin.Context) { method ctrlStopRelayPullHandler (line 52) | func (s *LalMaxServer) ctrlStopRelayPullHandler(c *gin.Context) { method ctrlKickSessionHandler (line 68) | func (s *LalMaxServer) ctrlKickSessionHandler(c *gin.Context) { method ctrlStartRtpPubHandler (line 87) | func (s *LalMaxServer) ctrlStartRtpPubHandler(c *gin.Context) { method ctrlStopRtpPubHandler (line 110) | func (s *LalMaxServer) ctrlStopRtpPubHandler(c *gin.Context) { FILE: server/router_flv_proxy.go method initFlvProxy (line 16) | func (s *LalMaxServer) initFlvProxy(router *gin.Engine) { method getLalHttpflvAddr (line 75) | func (s *LalMaxServer) getLalHttpflvAddr() string { FILE: server/router_fmp4.go method initFmp4Router (line 10) | func (s *LalMaxServer) initFmp4Router(router *gin.Engine) { method HandleHls (line 15) | func (s *LalMaxServer) HandleHls(c *gin.Context) { method HandleHttpFmp4 (line 24) | func (s *LalMaxServer) HandleHttpFmp4(c *gin.Context) { FILE: server/router_helper.go function unmarshalRequestJSONBody (line 12) | func unmarshalRequestJSONBody(r *http.Request, info interface{}, keyFiel... FILE: server/router_hook.go method initHookRouter (line 12) | func (s *LalMaxServer) initHookRouter(router *gin.Engine, handlers ...gi... method hookRecentHandler (line 18) | func (s *LalMaxServer) hookRecentHandler(c *gin.Context) { method hookStreamHandler (line 44) | func (s *LalMaxServer) hookStreamHandler(c *gin.Context) { function writeHookEventSSE (line 111) | func writeHookEventSSE(w http.ResponseWriter, event HookEvent) error { FILE: server/router_rtc.go method initRtcRouter (line 9) | func (s *LalMaxServer) initRtcRouter(router *gin.Engine) { method HandleWHIP (line 25) | func (s *LalMaxServer) HandleWHIP(c *gin.Context) { method HandleWHEP (line 54) | func (s *LalMaxServer) HandleWHEP(c *gin.Context) { method HandleJessibuca (line 83) | func (s *LalMaxServer) HandleJessibuca(c *gin.Context) { FILE: server/router_stat.go method initStatRouter (line 11) | func (s *LalMaxServer) initStatRouter(router *gin.Engine, handlers ...gi... method statGroupHandler (line 18) | func (s *LalMaxServer) statGroupHandler(c *gin.Context) { method statAllGroupHandler (line 42) | func (s *LalMaxServer) statAllGroupHandler(c *gin.Context) { method statLalInfoHandler (line 50) | func (s *LalMaxServer) statLalInfoHandler(c *gin.Context) { FILE: server/router_test.go type testHookPlugin (line 24) | type testHookPlugin struct method Name (line 47) | func (p *testHookPlugin) Name() string { method OnHookEvent (line 51) | func (p *testHookPlugin) OnHookEvent(event HookEvent) error { type maxlogicTestSubscriber (line 29) | type maxlogicTestSubscriber struct method OnMsg (line 39) | func (s *maxlogicTestSubscriber) OnMsg(msg base.RtmpMsg) {} method OnStop (line 41) | func (s *maxlogicTestSubscriber) OnStop() {} method GetSubscriberStat (line 43) | func (s *maxlogicTestSubscriber) GetSubscriberStat() maxlogic.Subscrib... type hookHTTPPayload (line 33) | type hookHTTPPayload struct constant httpNotifyAddr (line 61) | httpNotifyAddr = ":55559" function uniqueTestName (line 63) | func uniqueTestName(prefix string) string { function findTestGroup (line 67) | func findTestGroup(groups []LalmaxStatGroup, streamName string) *LalmaxS... function TestMain (line 76) | func TestMain(m *testing.M) { function TestAllGroup (line 127) | func TestAllGroup(t *testing.T) { function TestNotifyUpdate (line 191) | func TestNotifyUpdate(t *testing.T) { function TestRtpPubStartStop (line 231) | func TestRtpPubStartStop(t *testing.T) { function TestStatGroupWithAppName (line 272) | func TestStatGroupWithAppName(t *testing.T) { function TestStatGroupIncludesLalmaxExtSubs (line 290) | func TestStatGroupIncludesLalmaxExtSubs(t *testing.T) { function TestStatGroupIncludesLalmaxExtSubsRuntimeFields (line 330) | func TestStatGroupIncludesLalmaxExtSubsRuntimeFields(t *testing.T) { function TestStopRelayPullAllowsGet (line 382) | func TestStopRelayPullAllowsGet(t *testing.T) { function TestHookHubRecentAndSubscribe (line 400) | func TestHookHubRecentAndSubscribe(t *testing.T) { function TestHookGroupEventsFromDirectLifecycle (line 430) | func TestHookGroupEventsFromDirectLifecycle(t *testing.T) { function TestHookHubStreamActiveEvent (line 495) | func TestHookHubStreamActiveEvent(t *testing.T) { function TestBuiltinHTTPPluginRespectsEnableFlag (line 521) | func TestBuiltinHTTPPluginRespectsEnableFlag(t *testing.T) { function TestBuiltinHTTPPluginPreservesOrderPerStream (line 542) | func TestBuiltinHTTPPluginPreservesOrderPerStream(t *testing.T) { function TestBuiltinHTTPPluginAllowsParallelAcrossStreams (line 611) | func TestBuiltinHTTPPluginAllowsParallelAcrossStreams(t *testing.T) { function TestBuiltinHTTPPluginPreservesOrderAcrossDifferentURLsForSameStream (line 673) | func TestBuiltinHTTPPluginPreservesOrderAcrossDifferentURLsForSameStream... function TestHookRecentEndpoint (line 749) | func TestHookRecentEndpoint(t *testing.T) { function TestHookRecentEndpointFilterByEventAndStream (line 791) | func TestHookRecentEndpointFilterByEventAndStream(t *testing.T) { function TestHookEventFilterBySessionID (line 842) | func TestHookEventFilterBySessionID(t *testing.T) { function TestHookEventFilterByUpdateGroup (line 856) | func TestHookEventFilterByUpdateGroup(t *testing.T) { function TestHookEventFilterByGroupLifecycle (line 871) | func TestHookEventFilterByGroupLifecycle(t *testing.T) { function TestHookPluginReceivesFilteredEvents (line 884) | func TestHookPluginReceivesFilteredEvents(t *testing.T) { function TestRegisterHookPluginFromServer (line 930) | func TestRegisterHookPluginFromServer(t *testing.T) { function TestAuthentication (line 965) | func TestAuthentication(t *testing.T) { function TestWHIPGETNot404 (line 999) | func TestWHIPGETNot404(t *testing.T) { function TestWHEPGETCanonicalPath (line 1019) | func TestWHEPGETCanonicalPath(t *testing.T) { FILE: server/router_zlm_compat.go method initZlmCompatRouter (line 16) | func (s *LalMaxServer) initZlmCompatRouter(router *gin.Engine, handlers ... method zlmOpenRtpServerHandler (line 33) | func (s *LalMaxServer) zlmOpenRtpServerHandler(c *gin.Context) { method zlmCloseRtpServerHandler (line 62) | func (s *LalMaxServer) zlmCloseRtpServerHandler(c *gin.Context) { method zlmCloseStreamsHandler (line 82) | func (s *LalMaxServer) zlmCloseStreamsHandler(c *gin.Context) { method zlmGetServerConfigHandler (line 130) | func (s *LalMaxServer) zlmGetServerConfigHandler(c *gin.Context) { method zlmSetServerConfigHandler (line 137) | func (s *LalMaxServer) zlmSetServerConfigHandler(c *gin.Context) { method zlmRestartServerHandler (line 226) | func (s *LalMaxServer) zlmRestartServerHandler(c *gin.Context) { method zlmAddStreamProxyHandler (line 234) | func (s *LalMaxServer) zlmAddStreamProxyHandler(c *gin.Context) { method zlmStartRecordHandler (line 277) | func (s *LalMaxServer) zlmStartRecordHandler(c *gin.Context) { method zlmStopRecordHandler (line 303) | func (s *LalMaxServer) zlmStopRecordHandler(c *gin.Context) { method zlmGetSnapHandler (line 323) | func (s *LalMaxServer) zlmGetSnapHandler(c *gin.Context) { method zlmWebrtcHandler (line 350) | func (s *LalMaxServer) zlmWebrtcHandler(c *gin.Context) { function extractHostPort (line 390) | func extractHostPort(conf *config.Config, protocol string) string { FILE: server/server.go type LalMaxServer (line 30) | type LalMaxServer struct method Run (line 118) | func (s *LalMaxServer) Run() (err error) { method runPeriodicUpdate (line 179) | func (s *LalMaxServer) runPeriodicUpdate(ctx context.Context) { method runPeriodicKeepalive (line 205) | func (s *LalMaxServer) runPeriodicKeepalive(ctx context.Context) { method HookHub (line 228) | func (s *LalMaxServer) HookHub() *HttpNotify { method RegisterHookPlugin (line 232) | func (s *LalMaxServer) RegisterHookPlugin(plugin HookPlugin, options H... function NewLalMaxServer (line 45) | func NewLalMaxServer(conf *config.Config) (*LalMaxServer, error) { FILE: server/stat_view.go type LalmaxGroupStat (line 8) | type LalmaxGroupStat struct type LalmaxStatGroup (line 12) | type LalmaxStatGroup struct type ApiStatGroupResp (line 26) | type ApiStatGroupResp struct type ApiStatAllGroupResp (line 31) | type ApiStatAllGroupResp struct function newLalmaxStatGroup (line 38) | func newLalmaxStatGroup(view maxlogic.StatGroupView) LalmaxStatGroup { function newLalmaxStatGroups (line 57) | func newLalmaxStatGroups(views []maxlogic.StatGroupView) []LalmaxStatGro... FILE: server/zlm_compat_config.go type lalRawPorts (line 14) | type lalRawPorts struct function buildZlmServerConfig (line 27) | func buildZlmServerConfig(conf *config.Config) map[string]any { function extractPort (line 100) | func extractPort(addr string) string { function parsePortRange (line 113) | func parsePortRange(s string) (int, int, bool) { function boolStr (line 126) | func boolStr(v bool) string { FILE: server/zlm_compat_ffmpeg.go type ffmpegRecorder (line 15) | type ffmpegRecorder struct method startRecord (line 46) | func (r *ffmpegRecorder) startRecord(rtmpAddr, app, stream string, typ... method stopRecord (line 112) | func (r *ffmpegRecorder) stopRecord(app, stream string, typ int) (stri... type recordSession (line 21) | type recordSession struct function newFfmpegRecorder (line 30) | func newFfmpegRecorder(outputDir string) *ffmpegRecorder { function recordKey (line 41) | func recordKey(app, stream string, typ int) string { function getSnap (line 131) | func getSnap(srcURL string, timeoutSec int) ([]byte, error) { FILE: server/zlm_compat_test.go function TestZlmCompatOpenRtpServer (line 21) | func TestZlmCompatOpenRtpServer(t *testing.T) { function TestZlmCompatCloseRtpServer (line 53) | func TestZlmCompatCloseRtpServer(t *testing.T) { function TestZlmCompatCloseRtpServerNotFound (line 88) | func TestZlmCompatCloseRtpServerNotFound(t *testing.T) { function TestZlmCompatCloseStreams (line 108) | func TestZlmCompatCloseStreams(t *testing.T) { function TestZlmCompatGetServerConfig (line 137) | func TestZlmCompatGetServerConfig(t *testing.T) { function TestZlmCompatSetServerConfig (line 176) | func TestZlmCompatSetServerConfig(t *testing.T) { function TestZlmCompatAddStreamProxy (line 226) | func TestZlmCompatAddStreamProxy(t *testing.T) { function TestZlmCompatStartStopRecord (line 256) | func TestZlmCompatStartStopRecord(t *testing.T) { function TestZlmHookOnStreamChangedFormat (line 318) | func TestZlmHookOnStreamChangedFormat(t *testing.T) { function TestZlmHookOnStreamChangedFieldCompleteness (line 385) | func TestZlmHookOnStreamChangedFieldCompleteness(t *testing.T) { function TestZlmHookOnServerKeepalive (line 444) | func TestZlmHookOnServerKeepalive(t *testing.T) { function TestZlmHookOnStreamNoneReader (line 479) | func TestZlmHookOnStreamNoneReader(t *testing.T) { function TestZlmHookOnRtpServerTimeout (line 521) | func TestZlmHookOnRtpServerTimeout(t *testing.T) { function TestZlmHookOnStreamChangedOrderPerStream (line 562) | func TestZlmHookOnStreamChangedOrderPerStream(t *testing.T) { function TestZlmHookOnPublish (line 632) | func TestZlmHookOnPublish(t *testing.T) { function TestZlmHookOnPlay (line 670) | func TestZlmHookOnPlay(t *testing.T) { function TestZlmHookOnStreamNotFound (line 708) | func TestZlmHookOnStreamNotFound(t *testing.T) { function TestZlmHookDispatchByConfig (line 745) | func TestZlmHookDispatchByConfig(t *testing.T) { FILE: server/zlm_compat_types.go type ZlmFixedHeader (line 7) | type ZlmFixedHeader struct type ZlmOpenRtpServerReq (line 14) | type ZlmOpenRtpServerReq struct type ZlmOpenRtpServerResp (line 20) | type ZlmOpenRtpServerResp struct type ZlmCloseRtpServerReq (line 28) | type ZlmCloseRtpServerReq struct type ZlmCloseRtpServerResp (line 32) | type ZlmCloseRtpServerResp struct type ZlmCloseStreamsReq (line 39) | type ZlmCloseStreamsReq struct type ZlmCloseStreamsResp (line 47) | type ZlmCloseStreamsResp struct type ZlmGetServerConfigResp (line 55) | type ZlmGetServerConfigResp struct type ZlmSetServerConfigResp (line 62) | type ZlmSetServerConfigResp struct type ZlmStartRecordReq (line 69) | type ZlmStartRecordReq struct type ZlmStartRecordResp (line 78) | type ZlmStartRecordResp struct type ZlmStopRecordReq (line 85) | type ZlmStopRecordReq struct type ZlmStopRecordResp (line 92) | type ZlmStopRecordResp struct type ZlmAddStreamProxyReq (line 99) | type ZlmAddStreamProxyReq struct type ZlmAddStreamProxyResp (line 109) | type ZlmAddStreamProxyResp struct type ZlmGetSnapReq (line 118) | type ZlmGetSnapReq struct type ZlmOnStreamChangedPayload (line 126) | type ZlmOnStreamChangedPayload struct type ZlmOriginSock (line 147) | type ZlmOriginSock struct type ZlmTrack (line 155) | type ZlmTrack struct type ZlmOnServerKeepalivePayload (line 170) | type ZlmOnServerKeepalivePayload struct type ZlmOnStreamNoneReaderPayload (line 176) | type ZlmOnStreamNoneReaderPayload struct type ZlmOnRecordMp4Payload (line 186) | type ZlmOnRecordMp4Payload struct type ZlmOnPublishPayload (line 202) | type ZlmOnPublishPayload struct type ZlmOnPlayPayload (line 216) | type ZlmOnPlayPayload struct type ZlmOnStreamNotFoundPayload (line 230) | type ZlmOnStreamNotFoundPayload struct type ZlmOnRtpServerTimeoutPayload (line 246) | type ZlmOnRtpServerTimeoutPayload struct FILE: srt/pub.go type Publisher (line 15) | type Publisher struct method SetSession (line 38) | func (p *Publisher) SetSession(session logic.ICustomizePubSessionConte... method Run (line 42) | func (p *Publisher) Run() { function NewPublisher (line 25) | func NewPublisher(ctx context.Context, conn srt.Conn, streamName string,... FILE: srt/server.go type SrtServer (line 14) | type SrtServer struct method Run (line 58) | func (s *SrtServer) Run(ctx context.Context) { method handlePublish (line 109) | func (s *SrtServer) handlePublish(ctx context.Context, conn srt.Conn, ... method handleSubcribe (line 126) | func (s *SrtServer) handleSubcribe(ctx context.Context, conn srt.Conn,... method Remove (line 131) | func (s *SrtServer) Remove(host string, ss logic.ICustomizePubSessionC... type SrtOption (line 19) | type SrtOption struct type ModSrtOption (line 41) | type ModSrtOption function NewSrtServer (line 43) | func NewSrtServer(addr string, lal logic.ILalServer, modOptions ...ModSr... type StreamInfo (line 135) | type StreamInfo struct function getStreamInfo (line 140) | func getStreamInfo(streamid string) StreamInfo { FILE: srt/stream_id.go type StreamID (line 8) | type StreamID struct function parseStreamID (line 17) | func parseStreamID(streamID string) (*StreamID, error) { FILE: srt/sub.go type Subscriber (line 17) | type Subscriber struct method Run (line 49) | func (s *Subscriber) Run() { method OnMsg (line 88) | func (s *Subscriber) OnMsg(msg base.RtmpMsg) { method OnStop (line 155) | func (s *Subscriber) OnStop() { method GetSubscriberStat (line 160) | func (s *Subscriber) GetSubscriberStat() maxlogic.SubscriberStat { function NewSubscriber (line 33) | func NewSubscriber(ctx context.Context, conn srt.Conn, streamName string... FILE: utils/adjustdts.go type DtsDecoder (line 5) | type DtsDecoder struct method Decode (line 26) | func (d *DtsDecoder) Decode(ts uint32) time.Duration { function NewDtsDecoder (line 12) | func NewDtsDecoder(startDts, clockRate time.Duration, prevDts uint32) *D... function multiplyAndDivide (line 20) | func multiplyAndDivide(v, m, d time.Duration) time.Duration {