SYMBOL INDEX (1325 symbols across 112 files) FILE: cmd/server/http.go type httpHandler (line 24) | type httpHandler struct method ServeHTTP (line 28) | func (h *httpHandler) ServeHTTP(w http.ResponseWriter, _ *http.Request) { FILE: cmd/server/main.go function main (line 48) | func main() { function runService (line 91) | func runService(_ context.Context, c *cli.Command) error { function runHandler (line 161) | func runHandler(_ context.Context, c *cli.Command) error { FILE: cmd/template_version/main.go function main (line 23) | func main() { FILE: magefile.go constant gstVersion (line 33) | gstVersion = "1.24.12" constant libniceVersion (line 34) | libniceVersion = "0.1.21" constant chromiumVersion (line 35) | chromiumVersion = "146.0.7680.177-1" constant dockerBuild (line 36) | dockerBuild = "docker build" constant dockerBuildX (line 37) | dockerBuildX = "docker buildx build --push --platform linux/amd64,lin... type packageInfo (line 40) | type packageInfo struct function Proto (line 44) | func Proto() error { function EnsureMediaSamples (line 94) | func EnsureMediaSamples() error { function Integration (line 112) | func Integration(configFile string) error { function Retest (line 129) | func Retest(configFile string) error { function Build (line 171) | func Build() error { function BuildTemplate (line 179) | func BuildTemplate() error { function BuildGStreamer (line 186) | func BuildGStreamer() error { function buildGstreamer (line 190) | func buildGstreamer(cmd string) error { function Dotfiles (line 207) | func Dotfiles() error { FILE: pkg/config/base.go constant TmpDir (line 30) | TmpDir = "/home/egress/tmp" type BaseConfig (line 32) | type BaseConfig struct method initLogger (line 103) | func (c *BaseConfig) initLogger(values ...interface{}) error { method getLatencyConfig (line 139) | func (c *BaseConfig) getLatencyConfig(requestType types.RequestType) L... type SessionLimits (line 72) | type SessionLimits struct type DebugConfig (line 80) | type DebugConfig struct type LatencyConfig (line 88) | type LatencyConfig struct type AudioTempoController (line 98) | type AudioTempoController struct FILE: pkg/config/config_test.go function TestSegmentNaming (line 27) | func TestSegmentNaming(t *testing.T) { function TestValidateAndUpdateOutputParamsRejectsHLSMP3 (line 98) | func TestValidateAndUpdateOutputParamsRejectsHLSMP3(t *testing.T) { function TestValidateAndUpdateOutputParamsRejectsVideoFileMP3 (line 117) | func TestValidateAndUpdateOutputParamsRejectsVideoFileMP3(t *testing.T) { FILE: pkg/config/encoding.go method applyPreset (line 23) | func (p *PipelineConfig) applyPreset(preset livekit.EncodingOptionsPrese... method applyAdvanced (line 75) | func (p *PipelineConfig) applyAdvanced(advanced *livekit.EncodingOptions... FILE: pkg/config/manifest.go type Manifest (line 25) | type Manifest struct method AddFile (line 103) | func (m *Manifest) AddFile(filename, location string) { method AddPlaylist (line 112) | func (m *Manifest) AddPlaylist() *Playlist { method AddImage (line 137) | func (m *Manifest) AddImage(filename string, ts time.Time, location st... method Close (line 147) | func (m *Manifest) Close(endedAt int64) ([]byte, error) { type File (line 45) | type File struct type Playlist (line 50) | type Playlist struct method UpdateLocation (line 122) | func (p *Playlist) UpdateLocation(location string) { method AddSegment (line 128) | func (p *Playlist) AddSegment(filename, location string) { type Segment (line 56) | type Segment struct type Image (line 61) | type Image struct method initManifest (line 67) | func (p *PipelineConfig) initManifest() { method shouldCreateManifest (line 85) | func (p *PipelineConfig) shouldCreateManifest() bool { FILE: pkg/config/output.go constant StreamKeyframeInterval (line 26) | StreamKeyframeInterval = 4.0 type OutputConfig (line 28) | type OutputConfig interface type outputConfig (line 32) | type outputConfig struct method GetOutputType (line 36) | func (o outputConfig) GetOutputType() types.OutputType { method updateEncodedOutputs (line 40) | func (p *PipelineConfig) updateEncodedOutputs(req egress.EncodedOutput) ... method updateOutputs (line 220) | func (p *PipelineConfig) updateOutputs(req *livekit.ExportReplayRequest)... method updateDirectOutput (line 412) | func (p *PipelineConfig) updateDirectOutput(req *livekit.TrackEgressRequ... FILE: pkg/config/output_file.go type FileConfig (line 29) | type FileConfig struct method updateFilepath (line 127) | func (o *FileConfig) updateFilepath(p *PipelineConfig, identifier stri... method GetFileConfig (line 40) | func (p *PipelineConfig) GetFileConfig() *FileConfig { method getEncodedFileConfig (line 48) | func (p *PipelineConfig) getEncodedFileConfig(file *livekit.EncodedFileO... method getDirectFileConfig (line 52) | func (p *PipelineConfig) getDirectFileConfig(file *livekit.DirectFileOut... function fileTypeToOutputType (line 56) | func fileTypeToOutputType(ft livekit.EncodedFileType) types.OutputType { method getFileConfig (line 69) | func (p *PipelineConfig) getFileConfig(outputType types.OutputType, file... method getFilenameInfo (line 105) | func (p *PipelineConfig) getFilenameInfo() (string, map[string]string) { function clean (line 165) | func clean(filepath string) string { FILE: pkg/config/output_image.go type ImageConfig (line 30) | type ImageConfig struct method updatePrefix (line 129) | func (o *ImageConfig) updatePrefix(p *PipelineConfig) error { method GetImageConfigs (line 51) | func (p *PipelineConfig) GetImageConfigs() []*ImageConfig { method getImageConfig (line 62) | func (p *PipelineConfig) getImageConfig(images *livekit.ImageOutput, upl... function getMimeTypes (line 157) | func getMimeTypes(imageCodec livekit.ImageCodec) (types.MimeType, types.... FILE: pkg/config/output_segment.go type SegmentConfig (line 30) | type SegmentConfig struct method updatePrefixAndPlaylist (line 117) | func (o *SegmentConfig) updatePrefixAndPlaylist(p *PipelineConfig) err... method GetSegmentConfig (line 46) | func (p *PipelineConfig) GetSegmentConfig() *SegmentConfig { method getSegmentConfig (line 55) | func (p *PipelineConfig) getSegmentConfig(segments *livekit.SegmentedFil... function removeKnownExtension (line 105) | func removeKnownExtension(filename string) string { FILE: pkg/config/output_stream.go type StreamConfig (line 27) | type StreamConfig struct type Stream (line 36) | type Stream struct method UpdateEndTime (line 86) | func (s *Stream) UpdateEndTime(endedAt int64) { method ShouldSendRetryUpdate (line 98) | func (s *Stream) ShouldSendRetryUpdate(now time.Time, minInterval time... method GetStreamConfig (line 46) | func (p *PipelineConfig) GetStreamConfig() *StreamConfig { method GetWebsocketConfig (line 54) | func (p *PipelineConfig) GetWebsocketConfig() *StreamConfig { method getStreamConfig (line 62) | func (p *PipelineConfig) getStreamConfig(outputType types.OutputType, ur... FILE: pkg/config/pipeline.go type PipelineConfig (line 43) | type PipelineConfig struct method IsReplay (line 67) | func (p *PipelineConfig) IsReplay() bool { method Update (line 196) | func (p *PipelineConfig) Update(request *rpc.StartEgressRequest) error { method validateAndUpdateOutputParams (line 624) | func (p *PipelineConfig) validateAndUpdateOutputParams() error { method validateAndUpdateOutputCodecs (line 671) | func (p *PipelineConfig) validateAndUpdateOutputCodecs() (compatibleAu... method updateOutputType (line 718) | func (p *PipelineConfig) updateOutputType(compatibleAudioCodecs map[ty... method UpdateInfoFromSDK (line 754) | func (p *PipelineConfig) UpdateInfoFromSDK(identifier string, replacem... method GetEncodedOutputs (line 805) | func (p *PipelineConfig) GetEncodedOutputs() []OutputConfig { type StorageObserver (line 71) | type StorageObserver interface type SourceConfig (line 79) | type SourceConfig struct type WebSourceParams (line 85) | type WebSourceParams struct type SDKSourceParams (line 94) | type SDKSourceParams struct type AudioRouteConfig (line 108) | type AudioRouteConfig struct type AudioRouteMatch (line 113) | type AudioRouteMatch struct type TrackSource (line 119) | type TrackSource struct type AudioConfig (line 132) | type AudioConfig struct type VideoConfig (line 141) | type VideoConfig struct function NewPipelineConfig (line 155) | func NewPipelineConfig(confString string, req *rpc.StartEgressRequest) (... function GetValidatedPipelineConfig (line 182) | func GetValidatedPipelineConfig(conf *ServiceConfig, req *rpc.StartEgres... function ShouldUseSDKSource (line 616) | func ShouldUseSDKSource(req interface { function isHttp (line 815) | func isHttp(parsedUrl *url.URL) bool { function stringReplace (line 819) | func stringReplace(s string, replacements map[string]string) string { FILE: pkg/config/retry_test.go function TestFileOutputRetrySafety (line 27) | func TestFileOutputRetrySafety(t *testing.T) { function TestSegmentOutputRetrySafety (line 104) | func TestSegmentOutputRetrySafety(t *testing.T) { FILE: pkg/config/service.go constant roomCompositeCpuCost (line 32) | roomCompositeCpuCost = 4 constant audioRoomCompositeCpuCost (line 33) | audioRoomCompositeCpuCost = 1 constant webCpuCost (line 34) | webCpuCost = 4 constant audioWebCpuCost (line 35) | audioWebCpuCost = 1 constant participantCpuCost (line 36) | participantCpuCost = 2 constant trackCompositeCpuCost (line 37) | trackCompositeCpuCost = 1 constant trackCpuCost (line 38) | trackCpuCost = 0.5 constant maxCpuUtilization (line 39) | maxCpuUtilization = 0.8 constant maxUploadQueue (line 40) | maxUploadQueue = 60 constant defaultTemplatePort (line 42) | defaultTemplatePort = 7980 constant defaultTemplateBaseTemplate (line 43) | defaultTemplateBaseTemplate = "http://localhost:%d/" constant defaultIOCreateTimeout (line 45) | defaultIOCreateTimeout = time.Second * 15 constant defaultIOUpdateTimeout (line 46) | defaultIOUpdateTimeout = time.Second * 30 constant defaultIOWorkers (line 47) | defaultIOWorkers = 5 constant defaultJitterBufferLatency (line 49) | defaultJitterBufferLatency = time.Second * 2 constant defaultAudioMixerLatency (line 50) | defaultAudioMixerLatency = time.Millisecond * 2750 constant defaultPipelineLatency (line 51) | defaultPipelineLatency = time.Second * 3 constant defaultRTPMaxDriftAdjustment (line 52) | defaultRTPMaxDriftAdjustment = time.Millisecond * 5 constant defaultOldPacketThreshold (line 53) | defaultOldPacketThreshold = 2200 * time.Millisecond constant defaultRTPMaxAllowedTsDiff (line 54) | defaultRTPMaxAllowedTsDiff = time.Second * 5 constant defaultAudioTempoControllerAdjustmentRate (line 56) | defaultAudioTempoControllerAdjustmentRate = 0.05 constant defaultMaxPulseClients (line 58) | defaultMaxPulseClients = 60 type ServiceConfig (line 61) | type ServiceConfig struct method InitDefaults (line 131) | func (c *ServiceConfig) InitDefaults() { type MemorySource (line 73) | type MemorySource constant MemorySourceProcRSS (line 77) | MemorySourceProcRSS MemorySource = "proc_rss" constant MemorySourceCgroup (line 79) | MemorySourceCgroup MemorySource = "cgroup" type CPUCostConfig (line 82) | type CPUCostConfig struct function NewServiceConfig (line 100) | func NewServiceConfig(confString string) (*ServiceConfig, error) { function applyLatencyDefaults (line 208) | func applyLatencyDefaults(latency *LatencyConfig) { FILE: pkg/config/storage.go type StorageConfig (line 26) | type StorageConfig struct method IsLocal (line 140) | func (c *StorageConfig) IsLocal() bool { method getStorageConfig (line 36) | func (p *PipelineConfig) getStorageConfig(req egress.UploadRequest) (*St... function resolveStorageConfig (line 147) | func resolveStorageConfig(outputStorage, requestStorage *livekit.Storage... FILE: pkg/config/test_overrides.go type TestOverrides (line 4) | type TestOverrides struct FILE: pkg/config/urls.go method AddStream (line 39) | func (o *StreamConfig) AddStream(rawUrl string, outputType types.OutputT... method ValidateUrl (line 62) | func (o *StreamConfig) ValidateUrl(rawUrl string, outputType types.Outpu... method GetStream (line 110) | func (o *StreamConfig) GetStream(rawUrl string) (*Stream, error) { method updateTwitchURL (line 140) | func (o *StreamConfig) updateTwitchURL(key string) (string, error) { method updateTwitchTemplate (line 148) | func (o *StreamConfig) updateTwitchTemplate() error { function redactStreamKey (line 184) | func redactStreamKey(url string) (string, string, bool) { FILE: pkg/config/urls_test.go function TestValidateUrl (line 27) | func TestValidateUrl(t *testing.T) { function TestGetUrl (line 77) | func TestGetUrl(t *testing.T) { FILE: pkg/errors/errors.go function New (line 24) | func New(err string) error { function Is (line 28) | func Is(err, target error) bool { function As (line 32) | func As(err error, target any) bool { type ErrArray (line 36) | type ErrArray struct method AppendErr (line 40) | func (e *ErrArray) AppendErr(err error) { method Check (line 44) | func (e *ErrArray) Check(err error) { method ToError (line 50) | func (e *ErrArray) ToError() psrpc.Error { function ErrPadLinkFailed (line 83) | func ErrPadLinkFailed(src, sink, status string) error { function ErrGstPipelineError (line 87) | func ErrGstPipelineError(err error) error { function ErrProcessFailed (line 91) | func ErrProcessFailed(process string, err error) error { function ChromeError (line 95) | func ChromeError(err error) error { function PageLoadError (line 114) | func PageLoadError(err string) error { function TemplateError (line 119) | func TemplateError(err string) error { function ErrCouldNotParseConfig (line 123) | func ErrCouldNotParseConfig(err error) error { function ErrNotSupported (line 127) | func ErrNotSupported(feature string) error { function ErrIncompatible (line 131) | func ErrIncompatible(format, codec interface{}) error { function ErrInvalidInput (line 135) | func ErrInvalidInput(field string) error { function ErrInvalidUrl (line 139) | func ErrInvalidUrl(url string, reason string) error { function ErrUploadFailed (line 143) | func ErrUploadFailed(location string, err error) error { function ErrParticipantNotFound (line 147) | func ErrParticipantNotFound(identity string) error { function ErrStreamNotFound (line 151) | func ErrStreamNotFound(url string) error { function ErrTrackNotFound (line 155) | func ErrTrackNotFound(trackID string) error { function ErrFeatureDisabled (line 159) | func ErrFeatureDisabled(feature string) error { function ErrCPUExhausted (line 163) | func ErrCPUExhausted(usage float64) error { function ErrOOM (line 167) | func ErrOOM(usage float64) error { FILE: pkg/gstreamer/bin.go constant removeSourceBinTimeout (line 33) | removeSourceBinTimeout = 3 * time.Second type Bin (line 55) | type Bin struct method NewBin (line 79) | func (b *Bin) NewBin(name string) *Bin { method GetName (line 90) | func (b *Bin) GetName() string { method AddSourceBin (line 95) | func (b *Bin) AddSourceBin(src *Bin) error { method AddSinkBin (line 101) | func (b *Bin) AddSinkBin(sink *Bin) error { method addBin (line 106) | func (b *Bin) addBin(bin *Bin, direction gst.PadDirection) error { method AddElement (line 160) | func (b *Bin) AddElement(e *gst.Element) error { method AddElements (line 173) | func (b *Bin) AddElements(elements ...*gst.Element) error { method ForceRemoveSourceBin (line 187) | func (b *Bin) ForceRemoveSourceBin(name string) error { method RemoveSourceBin (line 239) | func (b *Bin) RemoveSourceBin(name string) error { method RemoveSinkBin (line 244) | func (b *Bin) RemoveSinkBin(name string) error { method removeSourceLocked (line 249) | func (b *Bin) removeSourceLocked(name string) *Bin { method removeBin (line 259) | func (b *Bin) removeBin(name string, direction gst.PadDirection) error { method probeRemoveSource (line 303) | func (b *Bin) probeRemoveSource(src *Bin) { method probeRemoveSink (line 375) | func (b *Bin) probeRemoveSink(sink *Bin) { method SetState (line 445) | func (b *Bin) SetState(state gst.State) error { method SetLinkFunc (line 462) | func (b *Bin) SetLinkFunc(f func([]*gst.Element) error) { method SetShouldLink (line 469) | func (b *Bin) SetShouldLink(f func(string) bool) { method SetGetSrcPad (line 477) | func (b *Bin) SetGetSrcPad(f func(srcName string) *gst.Pad) { method SetGetSinkPad (line 485) | func (b *Bin) SetGetSinkPad(f func(sinkName string) *gst.Pad) { method SetEOSFunc (line 493) | func (b *Bin) SetEOSFunc(f func() bool) { method sendEOS (line 500) | func (b *Bin) sendEOS() { method AddOnEOSReceived (line 526) | func (b *Bin) AddOnEOSReceived(f func()) error { method link (line 560) | func (b *Bin) link() error { method queueLinkPeersLocked (line 672) | func (b *Bin) queueLinkPeersLocked(src, sink *Bin) error { function detachSourceBin (line 408) | func detachSourceBin(src *Bin, srcGhostPad, sinkGhostPad *gst.GhostPad, ... function deleteGhostPadsLocked (line 428) | func deleteGhostPadsLocked(src, sink *Bin) (*gst.GhostPad, *gst.GhostPad... function linkPeersLocked (line 633) | func linkPeersLocked(src, sink *Bin) error { function getPeerSrcs (line 701) | func getPeerSrcs(srcs []*Bin) []*Bin { function getPeerSinks (line 713) | func getPeerSinks(sinks []*Bin) []*Bin { FILE: pkg/gstreamer/builder.go function BuildQueue (line 25) | func BuildQueue(name string, latency time.Duration, leaky bool) (*gst.El... function BuildAudioRate (line 49) | func BuildAudioRate(name string, tolerance time.Duration) (*gst.Element,... FILE: pkg/gstreamer/callbacks.go type Callbacks (line 24) | type Callbacks struct method SetOnError (line 45) | func (c *Callbacks) SetOnError(f func(error)) { method OnError (line 51) | func (c *Callbacks) OnError(err error) { method SetOnDebugDotRequest (line 61) | func (c *Callbacks) SetOnDebugDotRequest(f func(string)) { method OnDebugDotRequest (line 67) | func (c *Callbacks) OnDebugDotRequest(reason string) { method PipelinePaused (line 77) | func (c *Callbacks) PipelinePaused() <-chan struct{} { method OnPipelinePaused (line 81) | func (c *Callbacks) OnPipelinePaused() { method AddOnStop (line 85) | func (c *Callbacks) AddOnStop(f func() error) { method OnStop (line 91) | func (c *Callbacks) OnStop() error { method AddOnTrackAdded (line 103) | func (c *Callbacks) AddOnTrackAdded(f func(*config.TrackSource)) { method OnTrackAdded (line 109) | func (c *Callbacks) OnTrackAdded(ts *config.TrackSource) { method AddOnTrackMuted (line 119) | func (c *Callbacks) AddOnTrackMuted(f func(string)) { method OnTrackMuted (line 125) | func (c *Callbacks) OnTrackMuted(trackID string) { method AddOnTrackUnmuted (line 135) | func (c *Callbacks) AddOnTrackUnmuted(f func(string)) { method OnTrackUnmuted (line 141) | func (c *Callbacks) OnTrackUnmuted(trackID string) { method AddOnTrackRemoved (line 151) | func (c *Callbacks) AddOnTrackRemoved(f func(string)) { method OnTrackRemoved (line 157) | func (c *Callbacks) OnTrackRemoved(trackID string) { method AddOnSourceBinReset (line 167) | func (c *Callbacks) AddOnSourceBinReset(f func(*config.TrackSource) er... method OnSourceBinReset (line 177) | func (c *Callbacks) OnSourceBinReset(ts *config.TrackSource) error { method SetOnEOSSent (line 190) | func (c *Callbacks) SetOnEOSSent(f func()) { method OnEOSSent (line 196) | func (c *Callbacks) OnEOSSent() { FILE: pkg/gstreamer/pads.go type padTemplate (line 28) | type padTemplate struct method toPad (line 35) | func (p *padTemplate) toPad() *gst.Pad { method findDirectMatch (line 42) | func (p *padTemplate) findDirectMatch(others []*padTemplate) *padTempl... method findAnyMatch (line 58) | func (p *padTemplate) findAnyMatch(others []*padTemplate) *padTemplate { function createGhostPadsLocked (line 70) | func createGhostPadsLocked(src, sink *Bin, queue *gst.Element) (*gst.Gho... function matchPadsLocked (line 109) | func matchPadsLocked(src, sink *Bin) (*gst.Pad, *gst.Pad, error) { method getPadTemplatesLocked (line 149) | func (b *Bin) getPadTemplatesLocked(direction gst.PadDirection) []*padTe... method getTypesLocked (line 203) | func (b *Bin) getTypesLocked(direction gst.PadDirection) (map[string]str... FILE: pkg/gstreamer/pipeline.go constant stateChangeTimeout (line 29) | stateChangeTimeout = time.Second * 15 type Pipeline (line 32) | type Pipeline struct method AddSourceBin (line 62) | func (p *Pipeline) AddSourceBin(src *Bin) error { method AddSinkBin (line 70) | func (p *Pipeline) AddSinkBin(sink *Bin) error { method AddElement (line 78) | func (p *Pipeline) AddElement(e *gst.Element) error { method AddElements (line 86) | func (p *Pipeline) AddElements(elements ...*gst.Element) error { method Link (line 94) | func (p *Pipeline) Link() error { method SetWatch (line 98) | func (p *Pipeline) SetWatch(watch func(msg *gst.Message) bool) { method SetState (line 102) | func (p *Pipeline) SetState(state gst.State) error { method Run (line 123) | func (p *Pipeline) Run() error { method SendEOS (line 134) | func (p *Pipeline) SendEOS() { method Stop (line 145) | func (p *Pipeline) Stop() { method DebugBinToDotData (line 166) | func (p *Pipeline) DebugBinToDotData(details gst.DebugGraphDetails) st... method RunningTime (line 171) | func (p *Pipeline) RunningTime() (time.Duration, bool) { method PlayheadPosition (line 203) | func (p *Pipeline) PlayheadPosition() (time.Duration, bool) { function NewPipeline (line 43) | func NewPipeline(name string, latency time.Duration, callbacks *Callback... FILE: pkg/gstreamer/queue_monitor.go type LeakyQueueMonitor (line 27) | type LeakyQueueMonitor struct method postEOSStats (line 75) | func (m *LeakyQueueMonitor) postEOSStats() { method Name (line 118) | func (m *LeakyQueueMonitor) Name() string { function NewLeakyQueueMonitor (line 37) | func NewLeakyQueueMonitor(name string, queue *gst.Element) { constant LeakyQueueStatsMessage (line 73) | LeakyQueueStatsMessage = "LeakyQueueStats" FILE: pkg/gstreamer/state.go type State (line 24) | type State method String (line 80) | func (s State) String() string { constant StateBuilding (line 27) | StateBuilding State = iota constant StateStarted (line 28) | StateStarted constant StateRunning (line 29) | StateRunning constant StateEOS (line 30) | StateEOS constant StateStopping (line 31) | StateStopping constant StateFinished (line 32) | StateFinished type StateManager (line 35) | type StateManager struct method GetState (line 40) | func (s *StateManager) GetState() State { method GetStateLocked (line 47) | func (s *StateManager) GetStateLocked() State { method LockState (line 51) | func (s *StateManager) LockState() { method UnlockState (line 55) | func (s *StateManager) UnlockState() { method LockStateShared (line 59) | func (s *StateManager) LockStateShared() { method UnlockStateShared (line 63) | func (s *StateManager) UnlockStateShared() { method UpgradeState (line 67) | func (s *StateManager) UpgradeState(state State) (State, bool) { FILE: pkg/gstreamer/time_provider.go type TimeProvider (line 22) | type TimeProvider interface type nopTimeProvider (line 29) | type nopTimeProvider struct method RunningTime (line 36) | func (n *nopTimeProvider) RunningTime() (time.Duration, bool) { method PlayheadPosition (line 40) | func (n *nopTimeProvider) PlayheadPosition() (time.Duration, bool) { function NopTimeProvider (line 32) | func NopTimeProvider() TimeProvider { FILE: pkg/handler/handler.go type Handler (line 40) | type Handler struct method Run (line 103) | func (h *Handler) Run() { method Kill (line 169) | func (h *Handler) Kill() { method shouldInjectEgressFailure (line 177) | func (h *Handler) shouldInjectEgressFailure() bool { function NewHandler (line 56) | func NewHandler(conf *config.PipelineConfig, bus psrpc.MessageBus) (*Han... type ipcStorageObserver (line 187) | type ipcStorageObserver struct method OnStorageEvent (line 191) | func (o *ipcStorageObserver) OnStorageEvent(egressID, operation, path ... FILE: pkg/handler/handler_ipc.go method GetPipelineDot (line 34) | func (h *Handler) GetPipelineDot(ctx context.Context, _ *ipc.GstPipeline... method GetPProf (line 54) | func (h *Handler) GetPProf(ctx context.Context, req *ipc.PProfRequest) (... method GetMetrics (line 75) | func (h *Handler) GetMetrics(ctx context.Context, _ *ipc.MetricsRequest)... method GenerateMetrics (line 89) | func (h *Handler) GenerateMetrics(_ context.Context) (string, error) { function renderMetrics (line 103) | func renderMetrics(metrics []*dto.MetricFamily) (string, error) { method KillEgress (line 121) | func (h *Handler) KillEgress(ctx context.Context, req *ipc.KillEgressReq... FILE: pkg/handler/handler_rpc.go method UpdateStream (line 24) | func (h *Handler) UpdateStream(ctx context.Context, req *livekit.UpdateS... method UpdateEgress (line 40) | func (h *Handler) UpdateEgress(ctx context.Context, req *livekit.UpdateE... method StopEgress (line 56) | func (h *Handler) StopEgress(ctx context.Context, _ *livekit.StopEgressR... FILE: pkg/info/io.go constant numWorkers (line 38) | numWorkers = 5 constant maxBackoff (line 39) | maxBackoff = time.Minute * 1 constant unhealthyShutdownWatchdogDelay (line 40) | unhealthyShutdownWatchdogDelay = 20 * time.Second type SessionReporter (line 43) | type SessionReporter interface type sessionReporter (line 52) | type sessionReporter struct method CreateEgress (line 118) | func (c *sessionReporter) CreateEgress(ctx context.Context, info *live... method UpdateEgress (line 146) | func (c *sessionReporter) UpdateEgress(ctx context.Context, info *live... method UpdateMetrics (line 170) | func (c *sessionReporter) UpdateMetrics(_ context.Context, _ *rpc.Upda... method SetWatchdogHandler (line 174) | func (c *sessionReporter) SetWatchdogHandler(w func()) { method IsHealthy (line 181) | func (c *sessionReporter) IsHealthy() bool { method Drain (line 188) | func (c *sessionReporter) Drain() { method runWorker (line 193) | func (c *sessionReporter) runWorker(w *worker) { method getWorker (line 213) | func (c *sessionReporter) getWorker(egressID string) *worker { method handleUpdate (line 231) | func (c *sessionReporter) handleUpdate(w *worker, egressID string) { method setHealthy (line 285) | func (c *sessionReporter) setHealthy(isHealthy bool) bool { type worker (line 69) | type worker struct method submit (line 219) | func (w *worker) submit(u *update) error { type update (line 76) | type update struct function NewSessionReporter (line 81) | func NewSessionReporter(conf *config.BaseConfig, bus psrpc.MessageBus) (... function isRetryableError (line 307) | func isRetryableError(err error) bool { FILE: pkg/ipc/conn.go constant network (line 28) | network = "unix" constant handlerAddress (line 29) | handlerAddress = "handler_ipc.sock" constant serviceAddress (line 30) | serviceAddress = "service_ipc.sock" type EgressHandlerClientWrapper (line 33) | type EgressHandlerClientWrapper struct method Close (line 94) | func (c EgressHandlerClientWrapper) Close() error { function StartServiceListener (line 38) | func StartServiceListener(ipcServer *grpc.Server, serviceTmpDir string) ... function NewHandlerClient (line 53) | func NewHandlerClient(handlerTmpDir string) (*EgressHandlerClientWrapper... function StartHandlerListener (line 66) | func StartHandlerListener(ipcServer *grpc.Server, handlerTmpDir string) ... function NewServiceClient (line 81) | func NewServiceClient(serviceTmpDir string) (EgressServiceClient, error) { FILE: pkg/ipc/ipc.pb.go constant _ (line 36) | _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) constant _ (line 38) | _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) type HandlerReadyRequest (line 41) | type HandlerReadyRequest struct method Reset (line 48) | func (x *HandlerReadyRequest) Reset() { method String (line 55) | func (x *HandlerReadyRequest) String() string { method ProtoMessage (line 59) | func (*HandlerReadyRequest) ProtoMessage() {} method ProtoReflect (line 61) | func (x *HandlerReadyRequest) ProtoReflect() protoreflect.Message { method Descriptor (line 74) | func (*HandlerReadyRequest) Descriptor() ([]byte, []int) { method GetEgressId (line 78) | func (x *HandlerReadyRequest) GetEgressId() string { type HandlerFinishedRequest (line 85) | type HandlerFinishedRequest struct method Reset (line 94) | func (x *HandlerFinishedRequest) Reset() { method String (line 101) | func (x *HandlerFinishedRequest) String() string { method ProtoMessage (line 105) | func (*HandlerFinishedRequest) ProtoMessage() {} method ProtoReflect (line 107) | func (x *HandlerFinishedRequest) ProtoReflect() protoreflect.Message { method Descriptor (line 120) | func (*HandlerFinishedRequest) Descriptor() ([]byte, []int) { method GetEgressId (line 124) | func (x *HandlerFinishedRequest) GetEgressId() string { method GetMetrics (line 131) | func (x *HandlerFinishedRequest) GetMetrics() string { method GetInfo (line 138) | func (x *HandlerFinishedRequest) GetInfo() *livekit.EgressInfo { type StorageEventRequest (line 145) | type StorageEventRequest struct method Reset (line 156) | func (x *StorageEventRequest) Reset() { method String (line 163) | func (x *StorageEventRequest) String() string { method ProtoMessage (line 167) | func (*StorageEventRequest) ProtoMessage() {} method ProtoReflect (line 169) | func (x *StorageEventRequest) ProtoReflect() protoreflect.Message { method Descriptor (line 182) | func (*StorageEventRequest) Descriptor() ([]byte, []int) { method GetEgressId (line 186) | func (x *StorageEventRequest) GetEgressId() string { method GetOperation (line 193) | func (x *StorageEventRequest) GetOperation() string { method GetPath (line 200) | func (x *StorageEventRequest) GetPath() string { method GetSize (line 207) | func (x *StorageEventRequest) GetSize() int64 { method GetLifetimeDays (line 214) | func (x *StorageEventRequest) GetLifetimeDays() int64 { type GstPipelineDebugDotRequest (line 221) | type GstPipelineDebugDotRequest struct method Reset (line 227) | func (x *GstPipelineDebugDotRequest) Reset() { method String (line 234) | func (x *GstPipelineDebugDotRequest) String() string { method ProtoMessage (line 238) | func (*GstPipelineDebugDotRequest) ProtoMessage() {} method ProtoReflect (line 240) | func (x *GstPipelineDebugDotRequest) ProtoReflect() protoreflect.Messa... method Descriptor (line 253) | func (*GstPipelineDebugDotRequest) Descriptor() ([]byte, []int) { type GstPipelineDebugDotResponse (line 257) | type GstPipelineDebugDotResponse struct method Reset (line 264) | func (x *GstPipelineDebugDotResponse) Reset() { method String (line 271) | func (x *GstPipelineDebugDotResponse) String() string { method ProtoMessage (line 275) | func (*GstPipelineDebugDotResponse) ProtoMessage() {} method ProtoReflect (line 277) | func (x *GstPipelineDebugDotResponse) ProtoReflect() protoreflect.Mess... method Descriptor (line 290) | func (*GstPipelineDebugDotResponse) Descriptor() ([]byte, []int) { method GetDotFile (line 294) | func (x *GstPipelineDebugDotResponse) GetDotFile() string { type PProfRequest (line 301) | type PProfRequest struct method Reset (line 310) | func (x *PProfRequest) Reset() { method String (line 317) | func (x *PProfRequest) String() string { method ProtoMessage (line 321) | func (*PProfRequest) ProtoMessage() {} method ProtoReflect (line 323) | func (x *PProfRequest) ProtoReflect() protoreflect.Message { method Descriptor (line 336) | func (*PProfRequest) Descriptor() ([]byte, []int) { method GetProfileName (line 340) | func (x *PProfRequest) GetProfileName() string { method GetTimeout (line 347) | func (x *PProfRequest) GetTimeout() int32 { method GetDebug (line 354) | func (x *PProfRequest) GetDebug() int32 { type PProfResponse (line 361) | type PProfResponse struct method Reset (line 368) | func (x *PProfResponse) Reset() { method String (line 375) | func (x *PProfResponse) String() string { method ProtoMessage (line 379) | func (*PProfResponse) ProtoMessage() {} method ProtoReflect (line 381) | func (x *PProfResponse) ProtoReflect() protoreflect.Message { method Descriptor (line 394) | func (*PProfResponse) Descriptor() ([]byte, []int) { method GetPprofFile (line 398) | func (x *PProfResponse) GetPprofFile() []byte { type MetricsRequest (line 405) | type MetricsRequest struct method Reset (line 411) | func (x *MetricsRequest) Reset() { method String (line 418) | func (x *MetricsRequest) String() string { method ProtoMessage (line 422) | func (*MetricsRequest) ProtoMessage() {} method ProtoReflect (line 424) | func (x *MetricsRequest) ProtoReflect() protoreflect.Message { method Descriptor (line 437) | func (*MetricsRequest) Descriptor() ([]byte, []int) { type MetricsResponse (line 441) | type MetricsResponse struct method Reset (line 448) | func (x *MetricsResponse) Reset() { method String (line 455) | func (x *MetricsResponse) String() string { method ProtoMessage (line 459) | func (*MetricsResponse) ProtoMessage() {} method ProtoReflect (line 461) | func (x *MetricsResponse) ProtoReflect() protoreflect.Message { method Descriptor (line 474) | func (*MetricsResponse) Descriptor() ([]byte, []int) { method GetMetrics (line 478) | func (x *MetricsResponse) GetMetrics() string { type KillEgressRequest (line 485) | type KillEgressRequest struct method Reset (line 492) | func (x *KillEgressRequest) Reset() { method String (line 499) | func (x *KillEgressRequest) String() string { method ProtoMessage (line 503) | func (*KillEgressRequest) ProtoMessage() {} method ProtoReflect (line 505) | func (x *KillEgressRequest) ProtoReflect() protoreflect.Message { method Descriptor (line 518) | func (*KillEgressRequest) Descriptor() ([]byte, []int) { method GetError (line 522) | func (x *KillEgressRequest) GetError() string { constant file_ipc_proto_rawDesc (line 531) | file_ipc_proto_rawDesc = "" + function file_ipc_proto_rawDescGZIP (line 580) | func file_ipc_proto_rawDescGZIP() []byte { function init (line 631) | func init() { file_ipc_proto_init() } function file_ipc_proto_init (line 632) | func file_ipc_proto_init() { FILE: pkg/ipc/ipc_grpc.pb.go constant _ (line 36) | _ = grpc.SupportPackageIsVersion9 constant EgressService_HandlerReady_FullMethodName (line 39) | EgressService_HandlerReady_FullMethodName = "/ipc.EgressService/Handl... constant EgressService_HandlerUpdate_FullMethodName (line 40) | EgressService_HandlerUpdate_FullMethodName = "/ipc.EgressService/Handl... constant EgressService_HandlerFinished_FullMethodName (line 41) | EgressService_HandlerFinished_FullMethodName = "/ipc.EgressService/Handl... constant EgressService_ReplayReady_FullMethodName (line 42) | EgressService_ReplayReady_FullMethodName = "/ipc.EgressService/Repla... constant EgressService_StorageEvent_FullMethodName (line 43) | EgressService_StorageEvent_FullMethodName = "/ipc.EgressService/Stora... type EgressServiceClient (line 49) | type EgressServiceClient interface type egressServiceClient (line 57) | type egressServiceClient struct method HandlerReady (line 65) | func (c *egressServiceClient) HandlerReady(ctx context.Context, in *Ha... method HandlerUpdate (line 75) | func (c *egressServiceClient) HandlerUpdate(ctx context.Context, in *l... method HandlerFinished (line 85) | func (c *egressServiceClient) HandlerFinished(ctx context.Context, in ... method ReplayReady (line 95) | func (c *egressServiceClient) ReplayReady(ctx context.Context, in *rpc... method StorageEvent (line 105) | func (c *egressServiceClient) StorageEvent(ctx context.Context, in *St... function NewEgressServiceClient (line 61) | func NewEgressServiceClient(cc grpc.ClientConnInterface) EgressServiceCl... type EgressServiceServer (line 118) | type EgressServiceServer interface type UnimplementedEgressServiceServer (line 132) | type UnimplementedEgressServiceServer struct method HandlerReady (line 134) | func (UnimplementedEgressServiceServer) HandlerReady(context.Context, ... method HandlerUpdate (line 137) | func (UnimplementedEgressServiceServer) HandlerUpdate(context.Context,... method HandlerFinished (line 140) | func (UnimplementedEgressServiceServer) HandlerFinished(context.Contex... method ReplayReady (line 143) | func (UnimplementedEgressServiceServer) ReplayReady(context.Context, *... method StorageEvent (line 146) | func (UnimplementedEgressServiceServer) StorageEvent(context.Context, ... method mustEmbedUnimplementedEgressServiceServer (line 149) | func (UnimplementedEgressServiceServer) mustEmbedUnimplementedEgressSe... method testEmbeddedByValue (line 150) | func (UnimplementedEgressServiceServer) testEmbeddedByValue() ... type UnsafeEgressServiceServer (line 155) | type UnsafeEgressServiceServer interface function RegisterEgressServiceServer (line 159) | func RegisterEgressServiceServer(s grpc.ServiceRegistrar, srv EgressServ... function _EgressService_HandlerReady_Handler (line 170) | func _EgressService_HandlerReady_Handler(srv interface{}, ctx context.Co... function _EgressService_HandlerUpdate_Handler (line 188) | func _EgressService_HandlerUpdate_Handler(srv interface{}, ctx context.C... function _EgressService_HandlerFinished_Handler (line 206) | func _EgressService_HandlerFinished_Handler(srv interface{}, ctx context... function _EgressService_ReplayReady_Handler (line 224) | func _EgressService_ReplayReady_Handler(srv interface{}, ctx context.Con... function _EgressService_StorageEvent_Handler (line 242) | func _EgressService_StorageEvent_Handler(srv interface{}, ctx context.Co... constant EgressHandler_GetPipelineDot_FullMethodName (line 293) | EgressHandler_GetPipelineDot_FullMethodName = "/ipc.EgressHandler/GetPip... constant EgressHandler_GetPProf_FullMethodName (line 294) | EgressHandler_GetPProf_FullMethodName = "/ipc.EgressHandler/GetPProf" constant EgressHandler_GetMetrics_FullMethodName (line 295) | EgressHandler_GetMetrics_FullMethodName = "/ipc.EgressHandler/GetMet... constant EgressHandler_KillEgress_FullMethodName (line 296) | EgressHandler_KillEgress_FullMethodName = "/ipc.EgressHandler/KillEg... type EgressHandlerClient (line 302) | type EgressHandlerClient interface type egressHandlerClient (line 309) | type egressHandlerClient struct method GetPipelineDot (line 317) | func (c *egressHandlerClient) GetPipelineDot(ctx context.Context, in *... method GetPProf (line 327) | func (c *egressHandlerClient) GetPProf(ctx context.Context, in *PProfR... method GetMetrics (line 337) | func (c *egressHandlerClient) GetMetrics(ctx context.Context, in *Metr... method KillEgress (line 347) | func (c *egressHandlerClient) KillEgress(ctx context.Context, in *Kill... function NewEgressHandlerClient (line 313) | func NewEgressHandlerClient(cc grpc.ClientConnInterface) EgressHandlerCl... type EgressHandlerServer (line 360) | type EgressHandlerServer interface type UnimplementedEgressHandlerServer (line 373) | type UnimplementedEgressHandlerServer struct method GetPipelineDot (line 375) | func (UnimplementedEgressHandlerServer) GetPipelineDot(context.Context... method GetPProf (line 378) | func (UnimplementedEgressHandlerServer) GetPProf(context.Context, *PPr... method GetMetrics (line 381) | func (UnimplementedEgressHandlerServer) GetMetrics(context.Context, *M... method KillEgress (line 384) | func (UnimplementedEgressHandlerServer) KillEgress(context.Context, *K... method mustEmbedUnimplementedEgressHandlerServer (line 387) | func (UnimplementedEgressHandlerServer) mustEmbedUnimplementedEgressHa... method testEmbeddedByValue (line 388) | func (UnimplementedEgressHandlerServer) testEmbeddedByValue() ... type UnsafeEgressHandlerServer (line 393) | type UnsafeEgressHandlerServer interface function RegisterEgressHandlerServer (line 397) | func RegisterEgressHandlerServer(s grpc.ServiceRegistrar, srv EgressHand... function _EgressHandler_GetPipelineDot_Handler (line 408) | func _EgressHandler_GetPipelineDot_Handler(srv interface{}, ctx context.... function _EgressHandler_GetPProf_Handler (line 426) | func _EgressHandler_GetPProf_Handler(srv interface{}, ctx context.Contex... function _EgressHandler_GetMetrics_Handler (line 444) | func _EgressHandler_GetMetrics_Handler(srv interface{}, ctx context.Cont... function _EgressHandler_KillEgress_Handler (line 462) | func _EgressHandler_KillEgress_Handler(srv interface{}, ctx context.Cont... FILE: pkg/logging/csv.go type TrackStats (line 26) | type TrackStats struct type StreamStats (line 39) | type StreamStats struct type CSVLogger (line 49) | type CSVLogger struct function NewCSVLogger (line 53) | func NewCSVLogger[T any](filename string) (*CSVLogger[T], error) { method Write (line 76) | func (l *CSVLogger[T]) Write(value *T) { method Close (line 88) | func (l *CSVLogger[T]) Close() { FILE: pkg/logging/handler.go constant channelSize (line 16) | channelSize = 4096 constant dropLogThrottle (line 17) | dropLogThrottle = 10 * time.Second type HandlerLogger (line 20) | type HandlerLogger struct method Write (line 40) | func (h *HandlerLogger) Write(p []byte) (int, error) { method Close (line 61) | func (h *HandlerLogger) Close() error { method drain (line 67) | func (h *HandlerLogger) drain() { method processLine (line 98) | func (h *HandlerLogger) processLine(line string, panicBuf *[]string) { method isPanicContinuation (line 142) | func (h *HandlerLogger) isPanicContinuation(line string) bool { method flushPanic (line 155) | func (h *HandlerLogger) flushPanic(panicBuf *[]string) { function NewHandlerLogger (line 28) | func NewHandlerLogger(handlerID, egressID string) *HandlerLogger { FILE: pkg/logging/s3.go type S3Logger (line 28) | type S3Logger struct method Logf (line 40) | func (l *S3Logger) Logf(classification logging.Classification, format ... method WriteLogs (line 50) | func (l *S3Logger) WriteLogs() { function NewS3Logger (line 34) | func NewS3Logger() *S3Logger { FILE: pkg/pipeline/builder/audio.go constant leakyQueue (line 36) | leakyQueue = true constant blockingQueue (line 37) | blockingQueue = false constant audioRateTolerance (line 39) | audioRateTolerance = 3 * time.Millisecond constant audioBinName (line 40) | audioBinName = "audio" type AudioBin (line 43) | type AudioBin struct method onTrackAdded (line 160) | func (b *AudioBin) onTrackAdded(ts *config.TrackSource) { method onTrackRemoved (line 174) | func (b *AudioBin) onTrackRemoved(trackID string) { method buildWebInput (line 193) | func (b *AudioBin) buildWebInput() error { method buildSDKInput (line 217) | func (b *AudioBin) buildSDKInput() error { method addAudioAppSrcBin (line 240) | func (b *AudioBin) addAudioAppSrcBin(ts *config.TrackSource) error { method addAudioAppSrcBinLocked (line 247) | func (b *AudioBin) addAudioAppSrcBinLocked(ts *config.TrackSource) err... method onSourceBinReset (line 366) | func (b *AudioBin) onSourceBinReset(ts *config.TrackSource) error { method resetAudioAppSrcBin (line 373) | func (b *AudioBin) resetAudioAppSrcBin(ts *config.TrackSource) error { method getChannelLocked (line 406) | func (b *AudioBin) getChannelLocked(ts *config.TrackSource) livekit.Au... method addAudioTestSrcBin (line 433) | func (b *AudioBin) addAudioTestSrcBin() error { method addMixer (line 466) | func (b *AudioBin) addMixer() error { method addEncoder (line 488) | func (b *AudioBin) addEncoder() error { method installPitchProbes (line 563) | func (b *AudioBin) installPitchProbes() { method addAudioConvertWithPitch (line 601) | func (b *AudioBin) addAudioConvertWithPitch(bin *gstreamer.Bin, p *con... type driftProcessNotifier (line 55) | type driftProcessNotifier interface type audioPacer (line 59) | type audioPacer struct method start (line 67) | func (a *audioPacer) start(drift time.Duration) { method observeProcessedDuration (line 95) | func (a *audioPacer) observeProcessedDuration(d time.Duration) { method stop (line 107) | func (a *audioPacer) stop() { function BuildAudioBin (line 116) | func BuildAudioBin(pipeline *gstreamer.Pipeline, p *config.PipelineConfi... function addAudioConverter (line 534) | func addAudioConverter(b *gstreamer.Bin, p *config.PipelineConfig, chann... function newAudioFloatCapsFilter (line 656) | func newAudioFloatCapsFilter(p *config.PipelineConfig, channel livekit.A... function newAudioCapsFilter (line 679) | func newAudioCapsFilter(p *config.PipelineConfig, channel livekit.AudioC... function subscribeForQoS (line 714) | func subscribeForQoS(mixer *gst.Element) { FILE: pkg/pipeline/builder/file.go function BuildFileBin (line 26) | func BuildFileBin(pipeline *gstreamer.Pipeline, p *config.PipelineConfig... FILE: pkg/pipeline/builder/image.go constant imageQueueLatency (line 31) | imageQueueLatency = 200 * time.Millisecond function BuildImageBin (line 34) | func BuildImageBin(c *config.ImageConfig, pipeline *gstreamer.Pipeline, ... FILE: pkg/pipeline/builder/muxer.go type muxer (line 26) | type muxer interface type muxerImpl (line 32) | type muxerImpl struct method GetRequestPad (line 53) | func (m *muxerImpl) GetRequestPad(name string) *gst.Pad { method GetElement (line 57) | func (m *muxerImpl) GetElement() *gst.Element { function newMuxer (line 37) | func newMuxer(elementName string) (*muxerImpl, error) { type mp3Muxer (line 63) | type mp3Muxer struct method GetRequestPad (line 83) | func (m *mp3Muxer) GetRequestPad(_ string) *gst.Pad { function newMP3Muxer (line 70) | func newMP3Muxer() (*mp3Muxer, error) { FILE: pkg/pipeline/builder/muxer_test.go function initGStreamer (line 14) | func initGStreamer(t *testing.T) { function TestNewMuxer_KnownMuxers (line 19) | func TestNewMuxer_KnownMuxers(t *testing.T) { function TestNewMuxer_InvalidMuxer (line 32) | func TestNewMuxer_InvalidMuxer(t *testing.T) { function TestNewMP3Muxer (line 40) | func TestNewMP3Muxer(t *testing.T) { FILE: pkg/pipeline/builder/pts_fixer.go type ptsFixer (line 13) | type ptsFixer struct method onBuffer (line 44) | func (f *ptsFixer) onBuffer(_ *gst.Pad, info *gst.PadProbeInfo) gst.Pa... function newPTSFixer (line 22) | func newPTSFixer(elementName, context string) (*ptsFixer, error) { FILE: pkg/pipeline/builder/segment.go type FirstSampleMetadata (line 31) | type FirstSampleMetadata struct function BuildSegmentBin (line 35) | func BuildSegmentBin(pipeline *gstreamer.Pipeline, p *config.PipelineCon... FILE: pkg/pipeline/builder/stream.go type StreamBin (line 33) | type StreamBin struct method BuildStream (line 115) | func (sb *StreamBin) BuildStream(stream *config.Stream, framerate int3... type Stream (line 40) | type Stream struct method Reset (line 234) | func (s *Stream) Reset(streamErr error) (bool, error) { method Stats (line 274) | func (s *Stream) Stats() (*logging.StreamStats, bool) { function BuildStreamBin (line 52) | func BuildStreamBin(pipeline *gstreamer.Pipeline, p *config.PipelineConf... constant outBytesTotal (line 267) | outBytesTotal = "out-bytes-total" constant outBytesAcked (line 268) | outBytesAcked = "out-bytes-acked" constant inBytesTotal (line 269) | inBytesTotal = "in-bytes-total" constant inBytesAcked (line 270) | inBytesAcked = "in-bytes-acked" constant srtBytesSent (line 271) | srtBytesSent = "bytes-sent-total" function tryUInt64 (line 306) | func tryUInt64(stats map[string]interface{}, key string) uint64 { FILE: pkg/pipeline/builder/video.go constant videoTestSrcName (line 35) | videoTestSrcName = "video_test_src" type VideoBin (line 38) | type VideoBin struct method buildVideoQueue (line 55) | func (b *VideoBin) buildVideoQueue(name string) (*gst.Element, error) { method onTrackAdded (line 128) | func (b *VideoBin) onTrackAdded(ts *config.TrackSource) { method onTrackRemoved (line 142) | func (b *VideoBin) onTrackRemoved(trackID string) { method onTrackMuted (line 170) | func (b *VideoBin) onTrackMuted(trackID string) { method onTrackUnmuted (line 186) | func (b *VideoBin) onTrackUnmuted(trackID string) { method onSourceBinReset (line 202) | func (b *VideoBin) onSourceBinReset(ts *config.TrackSource) error { method resetVideoAppSrcBin (line 209) | func (b *VideoBin) resetVideoAppSrcBin(ts *config.TrackSource) error { method buildWebInput (line 271) | func (b *VideoBin) buildWebInput() error { method buildSDKInput (line 323) | func (b *VideoBin) buildSDKInput() error { method addAppSrcBin (line 359) | func (b *VideoBin) addAppSrcBin(ts *config.TrackSource) error { method buildAppSrcBin (line 383) | func (b *VideoBin) buildAppSrcBin(ts *config.TrackSource, name string)... method addVideoTestSrcBin (line 536) | func (b *VideoBin) addVideoTestSrcBin() error { method addSelector (line 572) | func (b *VideoBin) addSelector() error { method addEncoder (line 599) | func (b *VideoBin) addEncoder() error { method addDecodedVideoSink (line 714) | func (b *VideoBin) addDecodedVideoSink() error { method addVideoConverter (line 734) | func (b *VideoBin) addVideoConverter(bin *gstreamer.Bin) error { method newVideoCapsFilter (line 772) | func (b *VideoBin) newVideoCapsFilter(includeFramerate bool) (*gst.Ele... method getSrcPad (line 794) | func (b *VideoBin) getSrcPad(name string) *gst.Pad { method createSrcPad (line 801) | func (b *VideoBin) createSrcPad(trackID, name string) { method createSrcPadLocked (line 808) | func (b *VideoBin) createSrcPadLocked(trackID, name string) { method createTestSrcPad (line 827) | func (b *VideoBin) createTestSrcPad() { method setSelectorPad (line 847) | func (b *VideoBin) setSelectorPad(name string) error { method setSelectorPadLocked (line 854) | func (b *VideoBin) setSelectorPadLocked(name string) error { function BuildVideoBin (line 63) | func BuildVideoBin(pipeline *gstreamer.Pipeline, p *config.PipelineConfi... FILE: pkg/pipeline/builder/vp9_probe.go constant keyframeHistorySize (line 16) | keyframeHistorySize = 10 constant keyframeRequestInterval (line 17) | keyframeRequestInterval = 200 * time.Millisecond type vp9ParseProbe (line 23) | type vp9ParseProbe struct method Close (line 78) | func (p *vp9ParseProbe) Close() { method onSrcBuffer (line 93) | func (p *vp9ParseProbe) onSrcBuffer(_ *gst.Pad, info *gst.PadProbeInfo... method onSinkBuffer (line 113) | func (p *vp9ParseProbe) onSinkBuffer(_ *gst.Pad, info *gst.PadProbeInf... method handleMissingPTS (line 142) | func (p *vp9ParseProbe) handleMissingPTS() { method handleValidPTS (line 162) | func (p *vp9ParseProbe) handleValidPTS(buffer *gst.Buffer, pts time.Du... method trackKeyframe (line 179) | func (p *vp9ParseProbe) trackKeyframe(pts time.Duration) { method requestKeyframeIfDue (line 199) | func (p *vp9ParseProbe) requestKeyframeIfDue() { method keyframeStats (line 225) | func (p *vp9ParseProbe) keyframeStats() (time.Duration, int, bool) { method logKeyframeHistory (line 237) | func (p *vp9ParseProbe) logKeyframeHistory(reason string) { function newVP9ParseProbe (line 51) | func newVP9ParseProbe(trackID string, parse *gst.Element, onSignal func(... function clockTimeToDuration (line 218) | func clockTimeToDuration(ct gst.ClockTime) (time.Duration, bool) { type missingPadError (line 256) | type missingPadError struct method Error (line 265) | func (e missingPadError) Error() string { function newMissingPadError (line 261) | func newMissingPadError(element, pad string) error { FILE: pkg/pipeline/builder/websocket.go function BuildWebsocketBin (line 25) | func BuildWebsocketBin(pipeline *gstreamer.Pipeline, appSinkCallbacks *a... FILE: pkg/pipeline/controller.go constant pipelineName (line 49) | pipelineName = "pipeline" constant eosTimeout (line 50) | eosTimeout = time.Second * 30 constant streamRetryUpdateInterval (line 52) | streamRetryUpdateInterval = time.Minute type Controller (line 55) | type Controller struct method Callbacks (line 156) | func (c *Controller) Callbacks() *gstreamer.Callbacks { method BuildPipeline (line 188) | func (c *Controller) BuildPipeline() error { method SetReplayTiming (line 244) | func (c *Controller) SetReplayTiming(startAt, durationMs int64) { method Run (line 249) | func (c *Controller) Run(ctx context.Context) *livekit.EgressInfo { method UpdateStream (line 361) | func (c *Controller) UpdateStream(ctx context.Context, req *livekit.Up... method UpdateEgress (line 418) | func (c *Controller) UpdateEgress(ctx context.Context, req *livekit.Up... method streamFinished (line 449) | func (c *Controller) streamFinished(ctx context.Context, stream *confi... method streamFailed (line 473) | func (c *Controller) streamFailed(ctx context.Context, stream *config.... method trackStreamRetry (line 498) | func (c *Controller) trackStreamRetry(ctx context.Context, stream *con... method onEOSSent (line 513) | func (c *Controller) onEOSSent() { method onStorageLimitReached (line 522) | func (c *Controller) onStorageLimitReached() { method SendEOS (line 529) | func (c *Controller) SendEOS(ctx context.Context, reason string) { method sendEOS (line 570) | func (c *Controller) sendEOS() { method OnError (line 601) | func (c *Controller) OnError(err error) { method Close (line 615) | func (c *Controller) Close() { method startSessionLimitTimer (line 672) | func (c *Controller) startSessionLimitTimer(ctx context.Context) { method startOutputSizeMonitor (line 709) | func (c *Controller) startOutputSizeMonitor() { method stopOutputSizeMonitor (line 721) | func (c *Controller) stopOutputSizeMonitor() { method monitorOutputDirSize (line 728) | func (c *Controller) monitorOutputDirSize(ctx context.Context) { method getOutputDirStats (line 796) | func (c *Controller) getOutputDirStats() (int64, []outputFileStat, err... method logOutputFileSizes (line 842) | func (c *Controller) logOutputFileSizes(files []outputFileStat, limit ... method updateStartTime (line 856) | func (c *Controller) updateStartTime(startedAt int64) { method updateStreamStartTime (line 893) | func (c *Controller) updateStreamStartTime(streamID string) { method streamUpdated (line 908) | func (c *Controller) streamUpdated(ctx context.Context) { method sendHandlerUpdate (line 930) | func (c *Controller) sendHandlerUpdate(ctx context.Context, info *live... method updateEndTime (line 936) | func (c *Controller) updateEndTime() { method uploadManifest (line 985) | func (c *Controller) uploadManifest() { method getStreamSink (line 1031) | func (c *Controller) getStreamSink() *sink.StreamSink { method getSegmentSink (line 1040) | func (c *Controller) getSegmentSink() *sink.SegmentSink { method getImageSink (line 1049) | func (c *Controller) getImageSink(name string) *sink.ImageSink { type controllerStats (line 87) | type controllerStats struct type SourceBuilder (line 102) | type SourceBuilder function New (line 108) | func New(ctx context.Context, conf *config.PipelineConfig, ipcServiceCli... function NewWithSource (line 121) | func NewWithSource( function newController (line 160) | func newController(conf *config.PipelineConfig, ipcServiceClient ipc.Egr... type outputFileStat (line 791) | type outputFileStat struct FILE: pkg/pipeline/debug.go method GetGstPipelineDebugDot (line 35) | func (c *Controller) GetGstPipelineDebugDot() (string, error) { function sanitizeDebugFilenameComponent (line 49) | func sanitizeDebugFilenameComponent(s string) string { method writeDotFile (line 64) | func (c *Controller) writeDotFile(filename, contents string) { method generateDotFile (line 74) | func (c *Controller) generateDotFile(reason string) { method generatePProf (line 100) | func (c *Controller) generatePProf() { method uploadDebugFiles (line 123) | func (c *Controller) uploadDebugFiles() { FILE: pkg/pipeline/sink/file.go type FileSink (line 30) | type FileSink struct method Start (line 65) | func (s *FileSink) Start() error { method UploadManifest (line 69) | func (s *FileSink) UploadManifest(filepath string) (string, bool, erro... method Close (line 83) | func (s *FileSink) Close() error { function newFileSink (line 38) | func newFileSink( FILE: pkg/pipeline/sink/image.go type ImageSink (line 36) | type ImageSink struct method Start (line 92) | func (s *ImageSink) Start() error { method handleNewImage (line 114) | func (s *ImageSink) handleNewImage(update *imageUpdate) error { method getImageTime (line 149) | func (s *ImageSink) getImageTime(pts uint64) time.Time { method NewImage (line 159) | func (s *ImageSink) NewImage(filepath string, ts uint64) error { method UploadManifest (line 174) | func (s *ImageSink) UploadManifest(filepath string) (string, bool, err... method Close (line 188) | func (s *ImageSink) Close() error { type imageUpdate (line 52) | type imageUpdate struct function newImageSink (line 57) | func newImageSink( FILE: pkg/pipeline/sink/m3u8/writer.go type PlaylistType (line 27) | type PlaylistType constant PlaylistTypeLive (line 30) | PlaylistTypeLive PlaylistType = "" constant PlaylistTypeEvent (line 31) | PlaylistTypeEvent PlaylistType = "EVENT" type PlaylistWriter (line 34) | type PlaylistWriter interface type basePlaylistWriter (line 39) | type basePlaylistWriter struct method createHeader (line 58) | func (p *basePlaylistWriter) createHeader(plType PlaylistType) string { method createSegmentEntry (line 74) | func (p *basePlaylistWriter) createSegmentEntry(dateTime time.Time, du... type eventPlaylistWriter (line 44) | type eventPlaylistWriter struct method Append (line 110) | func (p *eventPlaylistWriter) Append(dateTime time.Time, duration floa... method Close (line 122) | func (p *eventPlaylistWriter) Close() error { type livePlaylistWriter (line 48) | type livePlaylistWriter struct method Append (line 148) | func (p *livePlaylistWriter) Append(dateTime time.Time, duration float... method Close (line 167) | func (p *livePlaylistWriter) Close() error { method generatePlaylist (line 183) | func (p *livePlaylistWriter) generatePlaylist() string { function NewEventPlaylistWriter (line 88) | func NewEventPlaylistWriter(filename string, targetDuration int) (Playli... function NewLivePlaylistWriter (line 133) | func NewLivePlaylistWriter(filename string, targetDuration int, windowSi... FILE: pkg/pipeline/sink/m3u8/writer_test.go function TestEventPlaylistWriter (line 26) | func TestEventPlaylistWriter(t *testing.T) { function TestLivePlaylistWriter (line 51) | func TestLivePlaylistWriter(t *testing.T) { FILE: pkg/pipeline/sink/segments.go constant defaultLivePlaylistWindow (line 38) | defaultLivePlaylistWindow = 5 type SegmentSink (line 41) | type SegmentSink struct method Start (line 150) | func (s *SegmentSink) Start() error { method handleClosedSegment (line 171) | func (s *SegmentSink) handleClosedSegment(update SegmentUpdate) { method handlePlaylistUpdates (line 199) | func (s *SegmentSink) handlePlaylistUpdates(update SegmentUpdate) error { method shouldUploadPlaylist (line 241) | func (s *SegmentSink) shouldUploadPlaylist() bool { method uploadPlaylist (line 247) | func (s *SegmentSink) uploadPlaylist() error { method uploadLivePlaylist (line 263) | func (s *SegmentSink) uploadLivePlaylist() error { method UpdateStartDate (line 273) | func (s *SegmentSink) UpdateStartDate(t time.Time) { method FragmentOpened (line 280) | func (s *SegmentSink) FragmentOpened(filepath string, startTime uint64... method FragmentClosed (line 303) | func (s *SegmentSink) FragmentClosed(filepath string, endTime uint64) ... method UploadManifest (line 325) | func (s *SegmentSink) UploadManifest(filepath string) (string, bool, e... method Close (line 339) | func (s *SegmentSink) Close() error { type SegmentUpdate (line 70) | type SegmentUpdate struct function newSegmentSink (line 76) | func newSegmentSink( FILE: pkg/pipeline/sink/sink.go type Sink (line 28) | type Sink interface type base (line 36) | type base struct method AddEOSProbe (line 71) | func (s *base) AddEOSProbe() { method EOSReceived (line 80) | func (s *base) EOSReceived() bool { function NewSink (line 41) | func NewSink( FILE: pkg/pipeline/sink/stream.go type StreamSink (line 32) | type StreamSink struct method Start (line 75) | func (s *StreamSink) Start() error { method AddStream (line 105) | func (s *StreamSink) AddStream(stream *config.Stream) error { method GetStream (line 127) | func (s *StreamSink) GetStream(name string) (*config.Stream, error) { method ResetStream (line 138) | func (s *StreamSink) ResetStream(stream *config.Stream, streamErr erro... method RemoveStream (line 149) | func (s *StreamSink) RemoveStream(stream *config.Stream) error { method UploadManifest (line 162) | func (s *StreamSink) UploadManifest(_ string) (string, bool, error) { method Close (line 166) | func (s *StreamSink) Close() error { function newStreamSink (line 44) | func newStreamSink(p *gstreamer.Pipeline, conf *config.PipelineConfig, o... FILE: pkg/pipeline/sink/uploader/uploader.go constant presignedExpiration (line 33) | presignedExpiration = time.Hour * 24 * 7 type Uploader (line 35) | type Uploader struct method Upload (line 113) | func (u *Uploader) Upload( method upload (line 166) | func (u *Uploader) upload(localFilepath string, storageFilepath string... type store (line 44) | type store struct function New (line 50) | func New(primary, backup *config.StorageConfig, monitor *stats.HandlerMo... function getUploader (line 75) | func getUploader(conf *config.StorageConfig) (*store, error) { FILE: pkg/pipeline/sink/uploader/uploader_test.go function TestUploader (line 17) | func TestUploader(t *testing.T) { FILE: pkg/pipeline/sink/websocket.go constant pingPeriod (line 39) | pingPeriod = time.Second * 30 type WebsocketSink (line 41) | type WebsocketSink struct method Start (line 122) | func (s *WebsocketSink) Start() error { method Write (line 177) | func (s *WebsocketSink) Write(p []byte) (int, error) { method OnTrackMuted (line 187) | func (s *WebsocketSink) OnTrackMuted(_ string) { method OnTrackUnmuted (line 193) | func (s *WebsocketSink) OnTrackUnmuted(_ string) { method writeMutedMessage (line 203) | func (s *WebsocketSink) writeMutedMessage(muted bool) error { method UploadManifest (line 220) | func (s *WebsocketSink) UploadManifest(_ string) (string, bool, error) { method Close (line 224) | func (s *WebsocketSink) Close() error { function newWebsocketSink (line 50) | func newWebsocketSink( type textMessagePayload (line 199) | type textMessagePayload struct FILE: pkg/pipeline/source/pulse/pactl.go function Clients (line 11) | func Clients() (int, error) { function List (line 19) | func List() (*PulseInfo, error) { type PulseInfo (line 32) | type PulseInfo struct method GetEgressInfo (line 124) | func (info *PulseInfo) GetEgressInfo() map[int]*EgressInfo { type Module (line 43) | type Module struct type Device (line 50) | type Device struct type IOBase (line 72) | type IOBase struct type SinkInput (line 90) | type SinkInput struct type SourceOutput (line 95) | type SourceOutput struct type Client (line 100) | type Client struct type Volume (line 107) | type Volume struct type Latency (line 113) | type Latency struct type EgressInfo (line 118) | type EgressInfo struct FILE: pkg/pipeline/source/sdk.go constant subscriptionTimeout (line 40) | subscriptionTimeout = time.Second * 30 type SDKSource (line 43) | type SDKSource struct method StartRecording (line 139) | func (s *SDKSource) StartRecording() <-chan struct{} { method EndRecording (line 143) | func (s *SDKSource) EndRecording() <-chan struct{} { method Playing (line 147) | func (s *SDKSource) Playing(trackID string) { method GetStartedAt (line 160) | func (s *SDKSource) GetStartedAt() int64 { method GetEndedAt (line 164) | func (s *SDKSource) GetEndedAt() int64 { method CloseWriters (line 168) | func (s *SDKSource) CloseWriters() { method StreamStopped (line 190) | func (s *SDKSource) StreamStopped(elementName string) { method Close (line 205) | func (s *SDKSource) Close() { method SetTimeProvider (line 209) | func (s *SDKSource) SetTimeProvider(tp gstreamer.TimeProvider) { method joinRoom (line 231) | func (s *SDKSource) joinRoom() error { method startAwaitingTracks (line 316) | func (s *SDKSource) startAwaitingTracks(expectedCount int) <-chan subs... method stopAwaitingTracks (line 323) | func (s *SDKSource) stopAwaitingTracks() { method completeInit (line 327) | func (s *SDKSource) completeInit() { method getInitResultChan (line 334) | func (s *SDKSource) getInitResultChan() chan<- subscriptionResult { method sendInitResult (line 342) | func (s *SDKSource) sendInitResult(ch chan<- subscriptionResult, track... method awaitRoomTracks (line 353) | func (s *SDKSource) awaitRoomTracks() error { method awaitMediaTracks (line 372) | func (s *SDKSource) awaitMediaTracks() (uint32, uint32, error) { method awaitParticipantTracks (line 436) | func (s *SDKSource) awaitParticipantTracks(identity string) (uint32, u... method awaitExpected (line 467) | func (s *SDKSource) awaitExpected(expected int) error { method getParticipant (line 492) | func (s *SDKSource) getParticipant(identity string, deadline time.Time... method awaitTrackPublication (line 504) | func (s *SDKSource) awaitTrackPublication(trackID string, deadline tim... method awaitTracks (line 518) | func (s *SDKSource) awaitTracks(expecting map[string]struct{}) (uint32... method subscribeToTracks (line 566) | func (s *SDKSource) subscribeToTracks(expecting map[string]struct{}, d... method subscribe (line 604) | func (s *SDKSource) subscribe(track lksdk.TrackPublication) error { method onTrackSubscribed (line 622) | func (s *SDKSource) onTrackSubscribed(track *webrtc.TrackRemote, pub *... method onTrackPublished (line 642) | func (s *SDKSource) onTrackPublished(pub *lksdk.RemoteTrackPublication... method shouldSubscribe (line 670) | func (s *SDKSource) shouldSubscribe(pub lksdk.TrackPublication) bool { method shouldSubscribeMedia (line 691) | func (s *SDKSource) shouldSubscribeMedia(pub lksdk.TrackPublication, r... method matchesAudioRoute (line 704) | func (s *SDKSource) matchesAudioRoute(pub lksdk.TrackPublication, rp *... method matchesMediaVideo (line 728) | func (s *SDKSource) matchesMediaVideo(pub lksdk.TrackPublication, rp *... method onTrackMuted (line 747) | func (s *SDKSource) onTrackMuted(pub lksdk.TrackPublication, _ lksdk.P... method onTrackUnmuted (line 756) | func (s *SDKSource) onTrackUnmuted(pub lksdk.TrackPublication, _ lksdk... method onTrackUnsubscribed (line 765) | func (s *SDKSource) onTrackUnsubscribed(_ *webrtc.TrackRemote, pub *lk... method onParticipantDisconnected (line 781) | func (s *SDKSource) onParticipantDisconnected(rp *lksdk.RemoteParticip... method onDisconnected (line 788) | func (s *SDKSource) onDisconnected() { method finished (line 793) | func (s *SDKSource) finished() { method shouldSkipTrackSubscriptions (line 797) | func (s *SDKSource) shouldSkipTrackSubscriptions() bool { method disconnectRoom (line 805) | func (s *SDKSource) disconnectRoom() { method shouldUseOneShotSenderReportSync (line 812) | func (s *SDKSource) shouldUseOneShotSenderReportSync() bool { method shouldEnableOneShotSenderReportSync (line 816) | func (s *SDKSource) shouldEnableOneShotSenderReportSync() bool { method shouldDisableAudioPTSAdjustment (line 820) | func (s *SDKSource) shouldDisableAudioPTSAdjustment() bool { type subscriptionResult (line 74) | type subscriptionResult struct function NewSDKSource (line 79) | func NewSDKSource(ctx context.Context, p *config.PipelineConfig, callbac... FILE: pkg/pipeline/source/sdk/appwriter.go constant errBufferTooSmall (line 45) | errBufferTooSmall = "buffer too small" constant discontinuityTolerance (line 46) | discontinuityTolerance = 500 * time.Millisecond constant pipelineCheckInterval (line 47) | pipelineCheckInterval = 5 * time.Second constant cSamplesQueueDepth (line 48) | cSamplesQueueDepth = 100 constant drainingTimeout (line 49) | drainingTimeout = time.Second * 3 constant unsubscribedGracePeriod (line 50) | unsubscribedGracePeriod = time.Second * 2 constant flushingThreshold (line 54) | flushingThreshold = 100 constant maxSrcResets (line 56) | maxSrcResets = 2 type sampleItem (line 61) | type sampleItem struct type AppWriter (line 66) | type AppWriter struct method start (line 232) | func (w *AppWriter) start() { method readNext (line 291) | func (w *AppWriter) readNext() { method handleReadError (line 336) | func (w *AppWriter) handleReadError(err error) { method SetTimeProvider (line 398) | func (w *AppWriter) SetTimeProvider(tp gstreamer.TimeProvider) { method waitFor (line 407) | func (w *AppWriter) waitFor(ch <-chan struct{}) bool { method pipelineRunningTime (line 419) | func (w *AppWriter) pipelineRunningTime() (time.Duration, bool) { method pipelinePlayhead (line 426) | func (w *AppWriter) pipelinePlayhead() (time.Duration, bool) { method logTrackState (line 433) | func (w *AppWriter) logTrackState(event string) { method onKeyframeRequired (line 444) | func (w *AppWriter) onKeyframeRequired() { method notifyPushSamples (line 451) | func (w *AppWriter) notifyPushSamples() { method onPacket (line 457) | func (w *AppWriter) onPacket(sample []jitter.ExtPacket) { method pushSamples (line 487) | func (w *AppWriter) pushSamples() { method pushPacket (line 539) | func (w *AppWriter) pushPacket(pkt jitter.ExtPacket) error { method tryRecoverFromFlushing (line 614) | func (w *AppWriter) tryRecoverFromFlushing() bool { method maybeCheckPipelineLag (line 660) | func (w *AppWriter) maybeCheckPipelineLag(pts time.Duration) { method Playing (line 683) | func (w *AppWriter) Playing() { method Drain (line 688) | func (w *AppWriter) Drain(force bool) { method OnUnsubscribed (line 712) | func (w *AppWriter) OnUnsubscribed() { method Finished (line 718) | func (w *AppWriter) Finished() <-chan struct{} { method logStats (line 722) | func (w *AppWriter) logStats() { method getStats (line 743) | func (w *AppWriter) getStats() *logging.TrackStats { method updateDrift (line 759) | func (w *AppWriter) updateDrift(drift time.Duration) { method shouldHandleDiscontinuity (line 772) | func (w *AppWriter) shouldHandleDiscontinuity() bool { method TrackKind (line 776) | func (w *AppWriter) TrackKind() webrtc.RTPCodecType { method drainJitterBuffer (line 780) | func (w *AppWriter) drainJitterBuffer() { method shouldRemoveBeforeDrain (line 794) | func (w *AppWriter) shouldRemoveBeforeDrain() bool { method ensureRemovedBeforeDrain (line 799) | func (w *AppWriter) ensureRemovedBeforeDrain() { type appWriterStats (line 132) | type appWriterStats struct type DriftHandler (line 136) | type DriftHandler interface function NewAppWriter (line 141) | func NewAppWriter( function isDiscontinuity (line 790) | func isDiscontinuity(lastPTS time.Duration, pts time.Duration) bool { type G711Packet (line 805) | type G711Packet struct method Unmarshal (line 807) | func (p *G711Packet) Unmarshal(packet []byte) ([]byte, error) { method IsPartitionHead (line 815) | func (p *G711Packet) IsPartitionHead(_ []byte) bool { method IsPartitionTail (line 819) | func (p *G711Packet) IsPartitionTail(_ bool, _ []byte) bool { FILE: pkg/pipeline/source/sdk/translator.go type Translator (line 27) | type Translator interface type VP8Translator (line 33) | type VP8Translator struct method Translate (line 48) | func (t *VP8Translator) Translate(pkt *rtp.Packet) { function NewVP8Translator (line 41) | func NewVP8Translator(logger logger.Logger) *VP8Translator { type NullTranslator (line 92) | type NullTranslator struct method Translate (line 98) | func (t *NullTranslator) Translate(_ *rtp.Packet) {} function NewNullTranslator (line 94) | func NewNullTranslator() Translator { FILE: pkg/pipeline/source/source.go type Source (line 26) | type Source interface type TimeAware (line 34) | type TimeAware interface function New (line 38) | func New(ctx context.Context, p *config.PipelineConfig, callbacks *gstre... FILE: pkg/pipeline/source/track_worker.go type TrackState (line 38) | type TrackState method String (line 46) | func (s TrackState) String() string { constant TrackStateIdle (line 41) | TrackStateIdle TrackState = iota constant TrackStateActive (line 42) | TrackStateActive constant TrackStateCleaning (line 43) | TrackStateCleaning type OpType (line 60) | type OpType method String (line 71) | func (o OpType) String() string { constant OpSubscribe (line 63) | OpSubscribe OpType = iota constant OpUnsubscribe (line 64) | OpUnsubscribe constant OpFinished (line 65) | OpFinished constant OpPlaying (line 66) | OpPlaying constant OpSetTimeProvider (line 67) | OpSetTimeProvider constant OpClose (line 68) | OpClose type Operation (line 91) | type Operation struct type workerState (line 103) | type workerState struct type trackWorker (line 111) | type trackWorker struct method getOrCreateWorker (line 118) | func (s *SDKSource) getOrCreateWorker(trackID string) *trackWorker { method runWorker (line 152) | func (s *SDKSource) runWorker(w *trackWorker) { method submitOp (line 168) | func (s *SDKSource) submitOp(trackID string, op Operation) { method reportSubscribeError (line 187) | func (s *SDKSource) reportSubscribeError(isPostInit bool, resultChan cha... method validateSubscription (line 195) | func (s *SDKSource) validateSubscription(op Operation) error { method updatePreInitStateLocked (line 206) | func (s *SDKSource) updatePreInitStateLocked(op Operation, ts *config.Tr... method handleSubscribe (line 261) | func (s *SDKSource) handleSubscribe(w *trackWorker, trackID string, stat... method processOp (line 320) | func (s *SDKSource) processOp(w *trackWorker, trackID string, ws *worker... method processIdleOp (line 338) | func (s *SDKSource) processIdleOp(w *trackWorker, trackID string, state ... method processActiveOp (line 357) | func (s *SDKSource) processActiveOp(_ *trackWorker, trackID string, stat... method startCleanup (line 399) | func (s *SDKSource) startCleanup(trackID string, state *workerState) { method doCleanup (line 415) | func (s *SDKSource) doCleanup(trackID string, state *workerState) { method createWriterForOp (line 454) | func (s *SDKSource) createWriterForOp(op Operation) (*sdk.AppWriter, *co... method handleOrphanedWriter (line 512) | func (s *SDKSource) handleOrphanedWriter(trackID string, writer *sdk.App... FILE: pkg/pipeline/source/track_worker_test.go function testSDKSource (line 30) | func testSDKSource(t *testing.T) *SDKSource { function TestGetOrCreateWorker_ReturnsExistingWorker (line 56) | func TestGetOrCreateWorker_ReturnsExistingWorker(t *testing.T) { function TestGetOrCreateWorker_ReturnsNilWhenClosing (line 65) | func TestGetOrCreateWorker_ReturnsNilWhenClosing(t *testing.T) { function TestSubmitOp_DropsOpWhenClosing (line 74) | func TestSubmitOp_DropsOpWhenClosing(t *testing.T) { function TestStateTransitions_IdleState (line 88) | func TestStateTransitions_IdleState(t *testing.T) { function TestStateTransitions_ActiveState (line 123) | func TestStateTransitions_ActiveState(t *testing.T) { FILE: pkg/pipeline/source/web.go constant startRecordingLog (line 46) | startRecordingLog = "START_RECORDING" constant endRecordingLog (line 47) | endRecordingLog = "END_RECORDING" constant chromeFailedToStart (line 49) | chromeFailedToStart = "chrome failed to start:" constant chromeCertVerifierChanged (line 50) | chromeCertVerifierChanged = "net::ERR_CERT_VERIFIER_CHANGED" constant chromeTimeout (line 52) | chromeTimeout = time.Second * 30 constant chromeRetries (line 53) | chromeRetries = 3 type WebSource (line 56) | type WebSource struct method StartRecording (line 103) | func (s *WebSource) StartRecording() <-chan struct{} { method EndRecording (line 107) | func (s *WebSource) EndRecording() <-chan struct{} { method GetStartedAt (line 111) | func (s *WebSource) GetStartedAt() int64 { method GetEndedAt (line 115) | func (s *WebSource) GetEndedAt() int64 { method Close (line 119) | func (s *WebSource) Close() { method createPulseSink (line 146) | func (s *WebSource) createPulseSink(ctx context.Context, p *config.Pip... method launchXvfb (line 175) | func (s *WebSource) launchXvfb(ctx context.Context, p *config.Pipeline... method launchChrome (line 202) | func (s *WebSource) launchChrome(ctx context.Context, p *config.Pipeli... method navigate (line 304) | func (s *WebSource) navigate(chromeCtx context.Context, chromeCancel c... function NewWebSource (line 69) | func NewWebSource(ctx context.Context, p *config.PipelineConfig) (*WebSo... function newChromeLogger (line 190) | func newChromeLogger(tmpDir string) *lumberjack.Logger { FILE: pkg/pipeline/tempo/controller.go constant DefaultThreshold (line 10) | DefaultThreshold = 10 * time.Millisecond constant MaxDriftBudget (line 11) | MaxDriftBudget = 2 * time.Second type Controller (line 14) | type Controller struct method EnqueueDrift (line 28) | func (tc *Controller) EnqueueDrift(drift time.Duration) { method DriftProcessed (line 55) | func (tc *Controller) DriftProcessed() { method OnDriftDetectedCallback (line 76) | func (tc *Controller) OnDriftDetectedCallback(cb func(time.Duration)) { method Processed (line 88) | func (tc *Controller) Processed() time.Duration { function NewController (line 24) | func NewController() *Controller { return &Controller{} } FILE: pkg/pipeline/tempo/controller_test.go function TestEnqueueStartsWithinBudget (line 8) | func TestEnqueueStartsWithinBudget(t *testing.T) { function TestThresholdAccumulation (line 23) | func TestThresholdAccumulation(t *testing.T) { function TestDriftProcessedStartsNext (line 37) | func TestDriftProcessedStartsNext(t *testing.T) { function TestBudgetBlocksAndResumes (line 63) | func TestBudgetBlocksAndResumes(t *testing.T) { function TestImmediateCallbackOnRegister (line 96) | func TestImmediateCallbackOnRegister(t *testing.T) { function TestZeroDriftNoop (line 111) | func TestZeroDriftNoop(t *testing.T) { function TestSignedProcessedAccumulation (line 123) | func TestSignedProcessedAccumulation(t *testing.T) { FILE: pkg/pipeline/watch.go constant msgWrongThread (line 36) | msgWrongThread = "Called from wrong thread" constant msgKeyframe (line 39) | msgKeyframe = "Could not request a keyframe. Files ma... constant msgLatencyQuery (line 40) | msgLatencyQuery = "Latency query failed" constant msgTaps (line 41) | msgTaps = "can't find exact taps" constant msgInputDisappeared (line 42) | msgInputDisappeared = "Can't copy metadata because input buff... constant msgSkippingSegment (line 43) | msgSkippingSegment = "error reading data -1 (reason: Success... constant fnGstAudioResampleCheckDiscont (line 44) | fnGstAudioResampleCheckDiscont = "gst_audio_resample_check_discont" constant msgColorMatrix (line 47) | msgColorMatrix = "Need to specify a color matrix when using YUV f... constant msgInvalidColorimetry (line 48) | msgInvalidColorimetry = "invalid colorimetry, using default" constant msgStreamStart (line 51) | msgStreamStart = "stream-start event without group-id. Consider im... constant msgCreatingStream (line 52) | msgCreatingStream = "Creating random stream-id, consider implementing... constant msgAggregateSubclass (line 53) | msgAggregateSubclass = "Subclass should call gst_aggregator_selected_sam... constant catRtmpClient (line 56) | catRtmpClient = "rtmpclient" constant fnSendCreateStream (line 57) | fnSendCreateStream = "send_create_stream" method gstLog (line 88) | func (c *Controller) gstLog( method messageWatch (line 120) | func (c *Controller) messageWatch(msg *gst.Message) bool { constant msgClockProblem (line 158) | msgClockProblem = "GStreamer error: clock problem." method handleMessageWarning (line 161) | func (c *Controller) handleMessageWarning(gErr *gst.GError) error { constant elementGstAppSrc (line 185) | elementGstAppSrc = "GstAppSrc" constant elementGstRtmp2Sink (line 186) | elementGstRtmp2Sink = "GstRtmp2Sink" constant elementGstSplitMuxSink (line 187) | elementGstSplitMuxSink = "GstSplitMuxSink" constant elementGstSrtSink (line 188) | elementGstSrtSink = "GstSRTSink" constant msgStreamingNotNegotiated (line 190) | msgStreamingNotNegotiated = "streaming stopped, reason not-negotiated (-4)" constant msgMuxer (line 191) | msgMuxer = ":muxer" method handleMessageError (line 195) | func (c *Controller) handleMessageError(gErr *gst.GError) error { method handleMessageStateChanged (line 257) | func (c *Controller) handleMessageStateChanged(msg *gst.Message) { constant msgFirstSampleMetadata (line 295) | msgFirstSampleMetadata = "FirstSampleMetadata" constant msgFragmentOpened (line 296) | msgFragmentOpened = "splitmuxsink-fragment-opened" constant msgFragmentClosed (line 297) | msgFragmentClosed = "splitmuxsink-fragment-closed" constant msgGstMultiFileSink (line 298) | msgGstMultiFileSink = "GstMultiFileSink" method handleMessageElement (line 301) | func (c *Controller) handleMessageElement(msg *gst.Message) error { function parseLeakyQueueStats (line 377) | func parseLeakyQueueStats(s *gst.Structure) (queue string, dropped uint6... function normalizeUint64 (line 392) | func normalizeUint64(value interface{}) uint64 { method handleMessageQoS (line 416) | func (c *Controller) handleMessageQoS(msg *gst.Message) { method handleAudioMixerQoS (line 428) | func (c *Controller) handleAudioMixerQoS(qosValues *gst.QoSValues) { function parseDebugInfo (line 437) | func parseDebugInfo(gErr *gst.GError) (element, name, message string) { constant fragmentLocation (line 451) | fragmentLocation = "location" constant fragmentRunningTime (line 452) | fragmentRunningTime = "running-time" function getSegmentParamsFromGstStructure (line 455) | func getSegmentParamsFromGstStructure(s *gst.Structure) (filepath string... function getFirstSampleMetadataFromGstStructure (line 477) | func getFirstSampleMetadataFromGstStructure(s *gst.Structure) (startDate... constant gstMultiFileSinkFilename (line 488) | gstMultiFileSinkFilename = "filename" constant gstMultiFileSinkTimestamp (line 489) | gstMultiFileSinkTimestamp = "timestamp" function getImageInformationFromGstStructure (line 492) | func getImageInformationFromGstStructure(s *gst.Structure) (string, uint... function isQosForAudioMixer (line 515) | func isQosForAudioMixer(msg *gst.Message) bool { FILE: pkg/server/integration.go method ReplayReady (line 26) | func (s *Server) ReplayReady(context.Context, *rpc.EgressReadyRequest) (... FILE: pkg/server/server.go type Server (line 44) | type Server struct method StartTemplatesServer (line 128) | func (s *Server) StartTemplatesServer(fs fs.FS) error { method Run (line 148) | func (s *Server) Run() error { method Status (line 163) | func (s *Server) Status() ([]byte, error) { method IsIdle (line 171) | func (s *Server) IsIdle() bool { method IsDisabled (line 175) | func (s *Server) IsDisabled() bool { method IsTerminating (line 179) | func (s *Server) IsTerminating() bool { method Shutdown (line 183) | func (s *Server) Shutdown(terminating, kill bool) { method Drain (line 195) | func (s *Server) Drain() { function NewServer (line 64) | func NewServer(conf *config.ServiceConfig, bus psrpc.MessageBus, ioClien... FILE: pkg/server/server_ipc.go method HandlerReady (line 29) | func (s *Server) HandlerReady(_ context.Context, req *ipc.HandlerReadyRe... method HandlerUpdate (line 39) | func (s *Server) HandlerUpdate(_ context.Context, info *livekit.EgressIn... method HandlerFinished (line 54) | func (s *Server) HandlerFinished(_ context.Context, req *ipc.HandlerFini... method StorageEvent (line 68) | func (s *Server) StorageEvent(_ context.Context, _ *ipc.StorageEventRequ... FILE: pkg/server/server_rpc.go method StartEgress (line 46) | func (s *Server) StartEgress(ctx context.Context, req *rpc.StartEgressRe... method launchProcess (line 113) | func (s *Server) launchProcess(req *rpc.StartEgressRequest, info *liveki... method processEnded (line 165) | func (s *Server) processEnded(req *rpc.StartEgressRequest, info *livekit... method StartEgressAffinity (line 199) | func (s *Server) StartEgressAffinity(_ context.Context, req *rpc.StartEg... method ListActiveEgress (line 215) | func (s *Server) ListActiveEgress(ctx context.Context, _ *rpc.ListActive... FILE: pkg/service/debug.go constant gstPipelineDotFileApp (line 33) | gstPipelineDotFileApp = "gst_pipeline" constant pprofApp (line 34) | pprofApp = "pprof" type DebugService (line 37) | type DebugService struct method StartDebugHandlers (line 47) | func (s *DebugService) StartDebugHandlers(port int) { method handleGstPipelineDotFile (line 65) | func (s *DebugService) handleGstPipelineDotFile(w http.ResponseWriter,... method GetGstPipelineDotFile (line 81) | func (s *DebugService) GetGstPipelineDotFile(egressID string) (string,... method handlePProf (line 95) | func (s *DebugService) handlePProf(w http.ResponseWriter, r *http.Requ... function NewDebugService (line 41) | func NewDebugService(pm ProcessManager) *DebugService { function getErrorCode (line 148) | func getErrorCode(err error) int { FILE: pkg/service/metrics.go type MetricsService (line 35) | type MetricsService struct method PromHandler (line 55) | func (s *MetricsService) PromHandler() http.Handler { method CreateGatherer (line 61) | func (s *MetricsService) CreateGatherer() prometheus.Gatherer { method StoreProcessEndedMetrics (line 84) | func (s *MetricsService) StoreProcessEndedMetrics(egressID string, met... function NewMetricsService (line 46) | func NewMetricsService(pm ProcessManager) *MetricsService { function deserializeMetrics (line 97) | func deserializeMetrics(egressID string, s string) ([]*dto.MetricFamily,... function applyDefaultLabel (line 111) | func applyDefaultLabel(families map[string]*dto.MetricFamily, egressID s... FILE: pkg/service/process.go constant launchTimeout (line 38) | launchTimeout = 10 * time.Second type ProcessManager (line 42) | type ProcessManager interface type processManager (line 57) | type processManager struct method Launch (line 68) | func (pm *processManager) Launch( method GetContext (line 116) | func (pm *processManager) GetContext(egressID string) context.Context { method AlreadyExists (line 127) | func (pm *processManager) AlreadyExists(egressID string) bool { method HandlerStarted (line 135) | func (pm *processManager) HandlerStarted(egressID string) error { method GetActiveEgressIDs (line 147) | func (pm *processManager) GetActiveEgressIDs() []string { method GetStatus (line 159) | func (pm *processManager) GetStatus(info map[string]interface{}) { method GetGatherers (line 168) | func (pm *processManager) GetGatherers() []prometheus.Gatherer { method GetGRPCClient (line 180) | func (pm *processManager) GetGRPCClient(egressID string) (ipc.EgressHa... method KillAll (line 191) | func (pm *processManager) KillAll() { method AbortProcess (line 200) | func (pm *processManager) AbortProcess(egressID string, err error) { method KillProcess (line 214) | func (pm *processManager) KillProcess(egressID string, err error) { method ProcessFinished (line 226) | func (pm *processManager) ProcessFinished(egressID string) { function NewProcessManager (line 62) | func NewProcessManager() ProcessManager { type Process (line 242) | type Process struct method Gather (line 254) | func (p *Process) Gather() ([]*dto.MetricFamily, error) { method kill (line 268) | func (p *Process) kill(e error) { FILE: pkg/service/servicefakes/fake_process_manager.go type FakeProcessManager (line 16) | type FakeProcessManager struct method AbortProcess (line 128) | func (fake *FakeProcessManager) AbortProcess(arg1 string, arg2 error) { method AbortProcessCallCount (line 142) | func (fake *FakeProcessManager) AbortProcessCallCount() int { method AbortProcessCalls (line 148) | func (fake *FakeProcessManager) AbortProcessCalls(stub func(string, er... method AbortProcessArgsForCall (line 154) | func (fake *FakeProcessManager) AbortProcessArgsForCall(i int) (string... method AlreadyExists (line 161) | func (fake *FakeProcessManager) AlreadyExists(arg1 string) bool { method AlreadyExistsCallCount (line 180) | func (fake *FakeProcessManager) AlreadyExistsCallCount() int { method AlreadyExistsCalls (line 186) | func (fake *FakeProcessManager) AlreadyExistsCalls(stub func(string) b... method AlreadyExistsArgsForCall (line 192) | func (fake *FakeProcessManager) AlreadyExistsArgsForCall(i int) string { method AlreadyExistsReturns (line 199) | func (fake *FakeProcessManager) AlreadyExistsReturns(result1 bool) { method AlreadyExistsReturnsOnCall (line 208) | func (fake *FakeProcessManager) AlreadyExistsReturnsOnCall(i int, resu... method GetActiveEgressIDs (line 222) | func (fake *FakeProcessManager) GetActiveEgressIDs() []string { method GetActiveEgressIDsCallCount (line 240) | func (fake *FakeProcessManager) GetActiveEgressIDsCallCount() int { method GetActiveEgressIDsCalls (line 246) | func (fake *FakeProcessManager) GetActiveEgressIDsCalls(stub func() []... method GetActiveEgressIDsReturns (line 252) | func (fake *FakeProcessManager) GetActiveEgressIDsReturns(result1 []st... method GetActiveEgressIDsReturnsOnCall (line 261) | func (fake *FakeProcessManager) GetActiveEgressIDsReturnsOnCall(i int,... method GetContext (line 275) | func (fake *FakeProcessManager) GetContext(arg1 string) context.Context { method GetContextCallCount (line 294) | func (fake *FakeProcessManager) GetContextCallCount() int { method GetContextCalls (line 300) | func (fake *FakeProcessManager) GetContextCalls(stub func(string) cont... method GetContextArgsForCall (line 306) | func (fake *FakeProcessManager) GetContextArgsForCall(i int) string { method GetContextReturns (line 313) | func (fake *FakeProcessManager) GetContextReturns(result1 context.Cont... method GetContextReturnsOnCall (line 322) | func (fake *FakeProcessManager) GetContextReturnsOnCall(i int, result1... method GetGRPCClient (line 336) | func (fake *FakeProcessManager) GetGRPCClient(arg1 string) (ipc.Egress... method GetGRPCClientCallCount (line 355) | func (fake *FakeProcessManager) GetGRPCClientCallCount() int { method GetGRPCClientCalls (line 361) | func (fake *FakeProcessManager) GetGRPCClientCalls(stub func(string) (... method GetGRPCClientArgsForCall (line 367) | func (fake *FakeProcessManager) GetGRPCClientArgsForCall(i int) string { method GetGRPCClientReturns (line 374) | func (fake *FakeProcessManager) GetGRPCClientReturns(result1 ipc.Egres... method GetGRPCClientReturnsOnCall (line 384) | func (fake *FakeProcessManager) GetGRPCClientReturnsOnCall(i int, resu... method GetGatherers (line 400) | func (fake *FakeProcessManager) GetGatherers() []prometheus.Gatherer { method GetGatherersCallCount (line 418) | func (fake *FakeProcessManager) GetGatherersCallCount() int { method GetGatherersCalls (line 424) | func (fake *FakeProcessManager) GetGatherersCalls(stub func() []promet... method GetGatherersReturns (line 430) | func (fake *FakeProcessManager) GetGatherersReturns(result1 []promethe... method GetGatherersReturnsOnCall (line 439) | func (fake *FakeProcessManager) GetGatherersReturnsOnCall(i int, resul... method GetStatus (line 453) | func (fake *FakeProcessManager) GetStatus(arg1 map[string]interface{}) { method GetStatusCallCount (line 466) | func (fake *FakeProcessManager) GetStatusCallCount() int { method GetStatusCalls (line 472) | func (fake *FakeProcessManager) GetStatusCalls(stub func(map[string]in... method GetStatusArgsForCall (line 478) | func (fake *FakeProcessManager) GetStatusArgsForCall(i int) map[string... method HandlerStarted (line 485) | func (fake *FakeProcessManager) HandlerStarted(arg1 string) error { method HandlerStartedCallCount (line 504) | func (fake *FakeProcessManager) HandlerStartedCallCount() int { method HandlerStartedCalls (line 510) | func (fake *FakeProcessManager) HandlerStartedCalls(stub func(string) ... method HandlerStartedArgsForCall (line 516) | func (fake *FakeProcessManager) HandlerStartedArgsForCall(i int) string { method HandlerStartedReturns (line 523) | func (fake *FakeProcessManager) HandlerStartedReturns(result1 error) { method HandlerStartedReturnsOnCall (line 532) | func (fake *FakeProcessManager) HandlerStartedReturnsOnCall(i int, res... method KillAll (line 546) | func (fake *FakeProcessManager) KillAll() { method KillAllCallCount (line 558) | func (fake *FakeProcessManager) KillAllCallCount() int { method KillAllCalls (line 564) | func (fake *FakeProcessManager) KillAllCalls(stub func()) { method KillProcess (line 570) | func (fake *FakeProcessManager) KillProcess(arg1 string, arg2 error) { method KillProcessCallCount (line 584) | func (fake *FakeProcessManager) KillProcessCallCount() int { method KillProcessCalls (line 590) | func (fake *FakeProcessManager) KillProcessCalls(stub func(string, err... method KillProcessArgsForCall (line 596) | func (fake *FakeProcessManager) KillProcessArgsForCall(i int) (string,... method Launch (line 603) | func (fake *FakeProcessManager) Launch(arg1 context.Context, arg2 stri... method LaunchCallCount (line 626) | func (fake *FakeProcessManager) LaunchCallCount() int { method LaunchCalls (line 632) | func (fake *FakeProcessManager) LaunchCalls(stub func(context.Context,... method LaunchArgsForCall (line 638) | func (fake *FakeProcessManager) LaunchArgsForCall(i int) (context.Cont... method LaunchReturns (line 645) | func (fake *FakeProcessManager) LaunchReturns(result1 error) { method LaunchReturnsOnCall (line 654) | func (fake *FakeProcessManager) LaunchReturnsOnCall(i int, result1 err... method ProcessFinished (line 668) | func (fake *FakeProcessManager) ProcessFinished(arg1 string) { method ProcessFinishedCallCount (line 681) | func (fake *FakeProcessManager) ProcessFinishedCallCount() int { method ProcessFinishedCalls (line 687) | func (fake *FakeProcessManager) ProcessFinishedCalls(stub func(string)) { method ProcessFinishedArgsForCall (line 693) | func (fake *FakeProcessManager) ProcessFinishedArgsForCall(i int) stri... method Invocations (line 700) | func (fake *FakeProcessManager) Invocations() map[string][][]interface... method recordInvocation (line 710) | func (fake *FakeProcessManager) recordInvocation(key string, args []in... FILE: pkg/stats/handler.go type HandlerMonitor (line 21) | type HandlerMonitor struct method IncUploadCountSuccess (line 62) | func (m *HandlerMonitor) IncUploadCountSuccess(uploadType string, elap... method IncUploadCountFailure (line 68) | func (m *HandlerMonitor) IncUploadCountFailure(uploadType string, elap... method IncBackupStorageWrites (line 74) | func (m *HandlerMonitor) IncBackupStorageWrites(outputType string) { method RegisterSegmentsChannelSizeGauge (line 78) | func (m *HandlerMonitor) RegisterSegmentsChannelSizeGauge(nodeID, clus... method RegisterPlaylistChannelSizeGauge (line 90) | func (m *HandlerMonitor) RegisterPlaylistChannelSizeGauge(nodeID, clus... function NewHandlerMonitor (line 27) | func NewHandlerMonitor(nodeID, clusterID, egressID string) *HandlerMonit... FILE: pkg/stats/monitor.go constant cpuHoldDuration (line 39) | cpuHoldDuration = time.Second * 15 constant defaultKillThreshold (line 40) | defaultKillThreshold = 0.95 constant minKillDuration (line 41) | minKillDuration = 10 constant gb (line 42) | gb = 1024.0 * 1024.0 * 1024.0 constant pulseClientHold (line 43) | pulseClientHold = 4 constant memoryHeadroomGB (line 44) | memoryHeadroomGB = 1.0 constant memoryUsageDumpInterval (line 45) | memoryUsageDumpInterval = 10 * time.Minute type Service (line 48) | type Service interface type Monitor (line 55) | type Monitor struct method validateCPUConfig (line 134) | func (m *Monitor) validateCPUConfig() error { method CanAcceptRequest (line 173) | func (m *Monitor) CanAcceptRequest(req *rpc.StartEgressRequest) bool { method CanAcceptWebRequest (line 182) | func (m *Monitor) CanAcceptWebRequest() bool { method canAcceptRequestLocked (line 189) | func (m *Monitor) canAcceptRequestLocked(req *rpc.StartEgressRequest) ... method canAcceptWebLocked (line 294) | func (m *Monitor) canAcceptWebLocked() bool { method checkMemoryAdmissionLocked (line 304) | func (m *Monitor) checkMemoryAdmissionLocked() (bool, string) { method checkProcRSSMemoryAdmission (line 333) | func (m *Monitor) checkProcRSSMemoryAdmission(pendingMem, memoryCost, ... method AcceptRequest (line 341) | func (m *Monitor) AcceptRequest(req *rpc.StartEgressRequest) error { method UpdatePID (line 435) | func (m *Monitor) UpdatePID(egressID string, pid int) { method EgressStarted (line 459) | func (m *Monitor) EgressStarted(req *rpc.StartEgressRequest) { method EgressAborted (line 484) | func (m *Monitor) EgressAborted(req *rpc.StartEgressRequest) { method EgressEnded (line 499) | func (m *Monitor) EgressEnded(req *rpc.StartEgressRequest) (float64, f... method GetAvailableCPU (line 559) | func (m *Monitor) GetAvailableCPU() float64 { method getCPUUsageLocked (line 567) | func (m *Monitor) getCPUUsageLocked() (total, available, pending, used... method GetAvailableMemory (line 595) | func (m *Monitor) GetAvailableMemory() float64 { method updateEgressStats (line 606) | func (m *Monitor) updateEgressStats(stats *hwstats.ProcStats) { method maybeLogMemoryUsage (line 689) | func (m *Monitor) maybeLogMemoryUsage(memory map[int]*hwstats.GroupMem... method updateCgroupStats (line 711) | func (m *Monitor) updateCgroupStats() { method updateWouldRejectMetrics (line 738) | func (m *Monitor) updateWouldRejectMetrics() { method checkMemoryKill (line 757) | func (m *Monitor) checkMemoryKill(maxMemoryEgress string, maxMemoryGro... type processStats (line 87) | type processStats struct function NewMonitor (line 101) | func NewMonitor(conf *config.ServiceConfig, svc Service) (*Monitor, erro... FILE: pkg/stats/monitor_memory_test.go function TestCheckMemoryAdmissionLocked_Legacy (line 25) | func TestCheckMemoryAdmissionLocked_Legacy(t *testing.T) { function TestCheckMemoryAdmissionLocked_CgroupWorkingSet (line 46) | func TestCheckMemoryAdmissionLocked_CgroupWorkingSet(t *testing.T) { function TestCheckMemoryAdmissionLocked_FallbackToProcRSS (line 68) | func TestCheckMemoryAdmissionLocked_FallbackToProcRSS(t *testing.T) { function TestCheckMemoryAdmissionLocked_NoMaxMemory (line 89) | func TestCheckMemoryAdmissionLocked_NoMaxMemory(t *testing.T) { function TestCheckMemoryAdmissionLocked_WithPendingMemory (line 103) | func TestCheckMemoryAdmissionLocked_WithPendingMemory(t *testing.T) { function TestCheckProcRSSMemoryAdmission (line 124) | func TestCheckProcRSSMemoryAdmission(t *testing.T) { FILE: pkg/stats/monitor_prom.go method initPrometheus (line 24) | func (m *Monitor) initPrometheus() { method promIsIdle (line 109) | func (m *Monitor) promIsIdle() float64 { method promCanAcceptRequest (line 116) | func (m *Monitor) promCanAcceptRequest() float64 { method promIsDisabled (line 129) | func (m *Monitor) promIsDisabled() float64 { method promIsTerminating (line 136) | func (m *Monitor) promIsTerminating() float64 { FILE: pkg/types/types.go type RequestType (line 17) | type RequestType type SourceType (line 18) | type SourceType type EgressType (line 19) | type EgressType type MimeType (line 20) | type MimeType type Profile (line 21) | type Profile type OutputType (line 22) | type OutputType type FileExtension (line 23) | type FileExtension constant RequestTypeTemplate (line 27) | RequestTypeTemplate = "template" constant RequestTypeWeb (line 28) | RequestTypeWeb = "web" constant RequestTypeMedia (line 29) | RequestTypeMedia = "media" constant RequestTypeRoomComposite (line 31) | RequestTypeRoomComposite = "room_composite" constant RequestTypeParticipant (line 32) | RequestTypeParticipant = "participant" constant RequestTypeTrackComposite (line 33) | RequestTypeTrackComposite = "track_composite" constant RequestTypeTrack (line 34) | RequestTypeTrack = "track" constant SourceTypeWeb (line 37) | SourceTypeWeb SourceType = "web" constant SourceTypeSDK (line 38) | SourceTypeSDK SourceType = "sdk" constant EgressTypeStream (line 41) | EgressTypeStream EgressType = "stream" constant EgressTypeWebsocket (line 42) | EgressTypeWebsocket EgressType = "websocket" constant EgressTypeFile (line 43) | EgressTypeFile EgressType = "file" constant EgressTypeSegments (line 44) | EgressTypeSegments EgressType = "segments" constant EgressTypeImages (line 45) | EgressTypeImages EgressType = "images" constant MimeTypeAAC (line 48) | MimeTypeAAC MimeType = "audio/aac" constant MimeTypeOpus (line 49) | MimeTypeOpus MimeType = "audio/opus" constant MimeTypeRawAudio (line 50) | MimeTypeRawAudio MimeType = "audio/x-raw" constant MimeTypeH264 (line 51) | MimeTypeH264 MimeType = "video/h264" constant MimeTypeVP8 (line 52) | MimeTypeVP8 MimeType = "video/vp8" constant MimeTypeVP9 (line 53) | MimeTypeVP9 MimeType = "video/vp9" constant MimeTypeJPEG (line 54) | MimeTypeJPEG MimeType = "image/jpeg" constant MimeTypeRawVideo (line 55) | MimeTypeRawVideo MimeType = "video/x-raw" constant MimeTypeMP3 (line 56) | MimeTypeMP3 MimeType = "audio/mpeg" constant MimeTypePCMU (line 57) | MimeTypePCMU MimeType = "audio/pcmu" constant MimeTypePCMA (line 58) | MimeTypePCMA MimeType = "audio/pcma" constant ProfileBaseline (line 61) | ProfileBaseline Profile = "baseline" constant ProfileMain (line 62) | ProfileMain Profile = "main" constant ProfileHigh (line 63) | ProfileHigh Profile = "high" constant OutputTypeUnknownFile (line 66) | OutputTypeUnknownFile OutputType = "" constant OutputTypeRaw (line 67) | OutputTypeRaw OutputType = "audio/x-raw" constant OutputTypeOGG (line 68) | OutputTypeOGG OutputType = "audio/ogg" constant OutputTypeMP3 (line 69) | OutputTypeMP3 OutputType = "audio/mpeg" constant OutputTypeIVF (line 70) | OutputTypeIVF OutputType = "video/x-ivf" constant OutputTypeMP4 (line 71) | OutputTypeMP4 OutputType = "video/mp4" constant OutputTypeTS (line 72) | OutputTypeTS OutputType = "video/mp2t" constant OutputTypeWebM (line 73) | OutputTypeWebM OutputType = "video/webm" constant OutputTypeJPEG (line 74) | OutputTypeJPEG OutputType = "image/jpeg" constant OutputTypeRTMP (line 75) | OutputTypeRTMP OutputType = "rtmp" constant OutputTypeSRT (line 76) | OutputTypeSRT OutputType = "srt" constant OutputTypeHLS (line 77) | OutputTypeHLS OutputType = "application/x-mpegurl" constant OutputTypeJSON (line 78) | OutputTypeJSON OutputType = "application/json" constant OutputTypeBlob (line 79) | OutputTypeBlob OutputType = "application/octet-stream" constant FileExtensionRaw (line 82) | FileExtensionRaw = ".raw" constant FileExtensionOGG (line 83) | FileExtensionOGG = ".ogg" constant FileExtensionMP3 (line 84) | FileExtensionMP3 = ".mp3" constant FileExtensionIVF (line 85) | FileExtensionIVF = ".ivf" constant FileExtensionMP4 (line 86) | FileExtensionMP4 = ".mp4" constant FileExtensionTS (line 87) | FileExtensionTS = ".ts" constant FileExtensionWebM (line 88) | FileExtensionWebM = ".webm" constant FileExtensionM3U8 (line 89) | FileExtensionM3U8 = ".m3u8" constant FileExtensionJPEG (line 90) | FileExtensionJPEG = ".jpeg" function GetOutputTypeCompatibleWithCodecs (line 237) | func GetOutputTypeCompatibleWithCodecs(types []OutputType, audioCodecs m... function IsOutputTypeCompatibleWithCodecs (line 253) | func IsOutputTypeCompatibleWithCodecs(ot OutputType, codecs map[MimeType... function GetMapIntersection (line 262) | func GetMapIntersection[K comparable](mapA map[K]bool, mapB map[K]bool) ... FILE: pkg/types/types_test.go function TestGetMapIntersection (line 23) | func TestGetMapIntersection(t *testing.T) { function TestGetOutputTypesCompatibleWithCodecs (line 38) | func TestGetOutputTypesCompatibleWithCodecs(t *testing.T) { FILE: template-default/src/App.tsx function App (line 23) | function App() { FILE: template-default/src/Room.tsx constant FRAME_DECODE_TIMEOUT (line 31) | const FRAME_DECODE_TIMEOUT = 5000; type RoomPageProps (line 33) | interface RoomPageProps { function RoomPage (line 39) | function RoomPage({ url, token, layout }: RoomPageProps) { type CompositeTemplateProps (line 52) | interface CompositeTemplateProps { function CompositeTemplate (line 56) | function CompositeTemplate({ layout: initialLayout }: CompositeTemplateP... FILE: template-default/src/common.ts type LayoutProps (line 19) | interface LayoutProps { FILE: template-sdk/src/index.ts method getLiveKitURL (line 24) | getLiveKitURL(): string { method getAccessToken (line 36) | getAccessToken(): string { method getLayout (line 48) | getLayout(): string { method setRoom (line 60) | setRoom(room: Room) { method startRecording (line 74) | startRecording() { method endRecording (line 82) | endRecording() { method onLayoutChanged (line 91) | onLayoutChanged(f: (layout: string) => void) { type TemplateState (line 102) | interface TemplateState { function onMetadataChanged (line 106) | function onMetadataChanged() { function getURLParam (line 118) | function getURLParam(name: string): string | null { FILE: test/agents.go method launchAgents (line 31) | func (r *Runner) launchAgents(t *testing.T) { FILE: test/agents/guest.py function entrypoint (line 15) | async def entrypoint(ctx: JobContext): FILE: test/agents/host.py function entrypoint (line 15) | async def entrypoint(ctx: JobContext): FILE: test/builder.go constant webUrl (line 32) | webUrl = "https://download.blender.org/peach/bigbuckbunny_movies/B... constant setAtRuntime (line 33) | setAtRuntime = "set-at-runtime" type testCase (line 36) | type testCase struct method isV2 (line 373) | func (test *testCase) isV2() bool { type publishOptions (line 58) | type publishOptions struct type fileOptions (line 85) | type fileOptions struct type streamOptions (line 91) | type streamOptions struct type segmentOptions (line 98) | type segmentOptions struct type imageOptions (line 105) | type imageOptions struct type v2OutputOptions (line 110) | type v2OutputOptions struct method build (line 115) | func (r *Runner) build(test *testCase) *rpc.StartEgressRequest { method buildFileOutputs (line 275) | func (r *Runner) buildFileOutputs(o *fileOptions) []*livekit.EncodedFile... method buildStreamOutputs (line 300) | func (r *Runner) buildStreamOutputs(o *streamOptions) []*livekit.StreamO... method buildSegmentOutputs (line 317) | func (r *Runner) buildSegmentOutputs(o *segmentOptions) []*livekit.Segme... method buildImageOutputs (line 346) | func (r *Runner) buildImageOutputs(o *imageOptions) []*livekit.ImageOutp... method getUploadConfig (line 356) | func (r *Runner) getUploadConfig() interface{} { method buildRequest (line 384) | func (r *Runner) buildRequest(test *testCase) *rpc.StartEgressRequest { method getV2StorageConfig (line 391) | func (r *Runner) getV2StorageConfig() *livekit.StorageConfig { method buildV2Outputs (line 409) | func (r *Runner) buildV2Outputs(test *testCase) []*livekit.Output { method buildV2 (line 487) | func (r *Runner) buildV2(test *testCase) *rpc.StartEgressRequest { FILE: test/content_checks.go method fullContentCheck (line 33) | func (r *Runner) fullContentCheck(t *testing.T, file string, _ *FFProbeI... method videoOnlyContentCheck (line 70) | func (r *Runner) videoOnlyContentCheck(t *testing.T, file string, info *... method audioOnlyContentCheck (line 89) | func (r *Runner) audioOnlyContentCheck(t *testing.T, file string, _ *FFP... method fullContentCheckWithVideoUnpublishAt10AndRepublishAt20 (line 120) | func (r *Runner) fullContentCheckWithVideoUnpublishAt10AndRepublishAt20(... method streamKeyframeContentCheck (line 157) | func (r *Runner) streamKeyframeContentCheck(expectedInterval float64) fu... function requireKeyframeInterval (line 164) | func requireKeyframeInterval(t *testing.T, input string, expectedInterva... function ffprobeKeyframeTimestamps (line 190) | func ffprobeKeyframeTimestamps(input string, expectedInterval float64) (... FILE: test/download.go function loadManifest (line 44) | func loadManifest(t *testing.T, c *config.StorageConfig, localFilepath, ... function download (line 58) | func download(t *testing.T, c *config.StorageConfig, localFilepath, stor... function downloadS3 (line 73) | func downloadS3(t *testing.T, conf *lkstorage.S3Config, localFilepath, s... function downloadAzure (line 112) | func downloadAzure(t *testing.T, conf *lkstorage.AzureConfig, localFilep... function downloadGCP (line 152) | func downloadGCP(t *testing.T, conf *lkstorage.GCPConfig, localFilepath,... FILE: test/edge.go method testEdgeCases (line 35) | func (r *Runner) testEdgeCases(t *testing.T) { method testRoomCompositeLateTrackDuration (line 214) | func (r *Runner) testRoomCompositeLateTrackDuration(t *testing.T, test *... method testAgents (line 261) | func (r *Runner) testAgents(t *testing.T, test *testCase) { method testAudioMixing (line 272) | func (r *Runner) testAudioMixing(t *testing.T, test *testCase) { method testParticipantNoPublish (line 310) | func (r *Runner) testParticipantNoPublish(t *testing.T, test *testCase) { method testRoomCompositeStaysOpen (line 334) | func (r *Runner) testRoomCompositeStaysOpen(t *testing.T, test *testCase) { method testRoomCompositeDisconnectDuration (line 363) | func (r *Runner) testRoomCompositeDisconnectDuration(t *testing.T, test ... method testStorageLimit (line 447) | func (r *Runner) testStorageLimit(t *testing.T, test *testCase) { method testRtmpFailure (line 487) | func (r *Runner) testRtmpFailure(t *testing.T, test *testCase) { method testSrtFailure (line 518) | func (r *Runner) testSrtFailure(t *testing.T, test *testCase) { method testTrackDisconnection (line 537) | func (r *Runner) testTrackDisconnection(t *testing.T, test *testCase) { method testEmptyStreamBin (line 542) | func (r *Runner) testEmptyStreamBin(t *testing.T, test *testCase) { FILE: test/ffprobe.go constant maxRetries (line 42) | maxRetries = 5 constant minDelay (line 43) | minDelay = time.Millisecond * 100 constant maxDelay (line 44) | maxDelay = time.Second * 5 type FFProbeInfo (line 51) | type FFProbeInfo struct function ffprobe (line 81) | func ffprobe(input string) (*FFProbeInfo, error) { function verify (line 117) | func verify(t *testing.T, in string, p *config.PipelineConfig, res *live... function parseFFProbeDuration (line 316) | func parseFFProbeDuration(s string) (time.Duration, error) { function verifyXingHeader (line 354) | func verifyXingHeader(t *testing.T, filepath string, sampleRate int, ffp... FILE: test/file.go method testFile (line 32) | func (r *Runner) testFile(t *testing.T) { method runFileTest (line 530) | func (r *Runner) runFileTest(t *testing.T, test *testCase) { method verifyFile (line 558) | func (r *Runner) verifyFile(t *testing.T, tc *testCase, p *config.Pipeli... FILE: test/flags.go constant runRoom (line 22) | runRoom = 0b1 << 0 constant runWeb (line 23) | runWeb = 0b1 << 1 constant runParticipant (line 24) | runParticipant = 0b1 << 2 constant runTrackComposite (line 25) | runTrackComposite = 0b1 << 3 constant runTrack (line 26) | runTrack = 0b1 << 4 constant runTemplate (line 27) | runTemplate = 0b1 << 5 constant runMedia (line 28) | runMedia = 0b1 << 6 constant runAllRequests (line 30) | runAllRequests = 0b1111111 constant runFile (line 32) | runFile = 0b1 << 31 constant runStream (line 33) | runStream = 0b1 << 30 constant runSegments (line 34) | runSegments = 0b1 << 29 constant runImages (line 35) | runImages = 0b1 << 28 constant runMulti (line 36) | runMulti = 0b1 << 27 constant runEdge (line 37) | runEdge = 0b1 << 26 constant runAllOutputs (line 39) | runAllOutputs = 0b111111 << 26 method updateFlagset (line 52) | func (r *Runner) updateFlagset() { method should (line 90) | func (r *Runner) should(runFlag uint) bool { FILE: test/images.go method testImages (line 32) | func (r *Runner) testImages(t *testing.T) { method runImagesTest (line 96) | func (r *Runner) runImagesTest(t *testing.T, test *testCase) { method verifyImages (line 117) | func (r *Runner) verifyImages(t *testing.T, p *config.PipelineConfig, re... FILE: test/integration.go method RunTests (line 38) | func (r *Runner) RunTests(t *testing.T) { method run (line 48) | func (r *Runner) run(t *testing.T, test *testCase, f func(*testing.T, *t... method ensureRoomForTest (line 98) | func (r *Runner) ensureRoomForTest(t *testing.T, test *testCase) { method awaitIdle (line 121) | func (r *Runner) awaitIdle(t *testing.T) { method startEgress (line 137) | func (r *Runner) startEgress(t *testing.T, req *rpc.StartEgressRequest) ... method sendRequest (line 155) | func (r *Runner) sendRequest(t *testing.T, req *rpc.StartEgressRequest) ... method checkUpdate (line 179) | func (r *Runner) checkUpdate(t *testing.T, egressID string, status livek... method checkStreamUpdate (line 188) | func (r *Runner) checkStreamUpdate(t *testing.T, egressID string, expect... method getUpdate (line 213) | func (r *Runner) getUpdate(t *testing.T, egressID string) *livekit.Egres... method getStatus (line 229) | func (r *Runner) getStatus(t *testing.T) map[string]interface{} { method createDotFile (line 240) | func (r *Runner) createDotFile(t *testing.T, egressID string) { method stopEgress (line 254) | func (r *Runner) stopEgress(t *testing.T, egressID string) *livekit.Egre... FILE: test/integration_test.go function TestEgress (line 37) | func TestEgress(t *testing.T) { FILE: test/ioserver.go type ioTestServer (line 30) | type ioTestServer struct method CreateEgress (line 48) | func (s *ioTestServer) CreateEgress(_ context.Context, info *livekit.E... method UpdateEgress (line 53) | func (s *ioTestServer) UpdateEgress(_ context.Context, info *livekit.E... method UpdateMetrics (line 59) | func (s *ioTestServer) UpdateMetrics(_ context.Context, _ *rpc.UpdateM... function newIOTestServer (line 36) | func newIOTestServer(bus psrpc.MessageBus, updates chan *livekit.EgressI... FILE: test/multi.go method testMulti (line 31) | func (r *Runner) testMulti(t *testing.T) { method runMultiTest (line 119) | func (r *Runner) runMultiTest(t *testing.T, test *testCase) { FILE: test/publish.go method publishSample (line 48) | func (r *Runner) publishSample(t *testing.T, codec types.MimeType, publi... method publishSampleWithDisconnection (line 99) | func (r *Runner) publishSampleWithDisconnection(t *testing.T, codec type... method publish (line 110) | func (r *Runner) publish(t *testing.T, p *lksdk.LocalParticipant, codec ... FILE: test/runner.go type Runner (line 41) | type Runner struct method connectRoom (line 211) | func (r *Runner) connectRoom(t *testing.T, roomName string, codecs []l... method StartServer (line 234) | func (r *Runner) StartServer(t *testing.T, svc Server, bus psrpc.Messa... type Server (line 84) | type Server interface function NewRunner (line 95) | func NewRunner(t *testing.T) *Runner { FILE: test/segments.go method testSegments (line 35) | func (r *Runner) testSegments(t *testing.T) { method runSegmentsTest (line 178) | func (r *Runner) runSegmentsTest(t *testing.T, test *testCase) { method verifySegments (line 201) | func (r *Runner) verifySegments( type segmentPlaylist (line 234) | type segmentPlaylist struct method verifySegmentOutput (line 241) | func (r *Runner) verifySegmentOutput( function verifyPlaylistProgramDateTime (line 280) | func verifyPlaylistProgramDateTime(t *testing.T, filenameSuffix livekit.... type Playlist (line 318) | type Playlist struct type Segment (line 326) | type Segment struct function readPlaylist (line 332) | func readPlaylist(filename string) (*Playlist, error) { FILE: test/stream.go constant badRtmpUrl1 (line 41) | badRtmpUrl1 = "rtmp://localhost:1936/wrong/stream" constant badRtmpUrl1Redacted (line 42) | badRtmpUrl1Redacted = "rtmp://localhost:1936/wrong/{st...am}" constant badRtmpUrl2 (line 43) | badRtmpUrl2 = "rtmp://localhost:1936/live/stream" constant badRtmpUrl2Redacted (line 44) | badRtmpUrl2Redacted = "rtmp://localhost:1936/live/{st...am}" constant badSrtUrl1 (line 45) | badSrtUrl1 = "srt://localhost:8891?streamid=publish:wrongport&p... constant badSrtUrl2 (line 46) | badSrtUrl2 = "srt://localhost:8891?streamid=publish:badstream&p... method testStream (line 84) | func (r *Runner) testStream(t *testing.T) { method runStreamTest (line 229) | func (r *Runner) runStreamTest(t *testing.T, test *testCase) { method verifyStreams (line 324) | func (r *Runner) verifyStreams(t *testing.T, tc *testCase, p *config.Pip... method runWebsocketTest (line 333) | func (r *Runner) runWebsocketTest(t *testing.T, test *testCase) { type websocketTestServer (line 356) | type websocketTestServer struct method handleWebsocket (line 370) | func (s *websocketTestServer) handleWebsocket(w http.ResponseWriter, r... method close (line 423) | func (s *websocketTestServer) close() { function newTestWebsocketServer (line 363) | func newTestWebsocketServer(filepath string) *websocketTestServer { FILE: test/test_content.go constant testSampleSilenceLevel (line 41) | testSampleSilenceLevel = -38 constant testSampleBeepLevel (line 42) | testSampleBeepLevel = -30.0 function ffmpegVideoStats (line 51) | func ffmpegVideoStats(videoPath, statsFile string) error { function ffmpegAudioStats (line 76) | func ffmpegAudioStats(audioPath, statsFile string) error { function ffmpegSilenceStats (line 100) | func ffmpegSilenceStats(audioPath string, noiseLevel int, minDuration fl... function extractFlashTimestamps (line 125) | func extractFlashTimestamps(videoPath, outPath string) ([]time.Duration,... function extractBeepTimestamps (line 173) | func extractBeepTimestamps(audioPath string, beepThreshold float64, outP... type silenceRange (line 222) | type silenceRange struct function detectSilence (line 229) | func detectSilence(audioPath string, noiseLevel int, minDuration time.Du... function secondsToDuration (line 268) | func secondsToDuration(f float64) time.Duration { function parsePTSSecondsToDuration (line 272) | func parsePTSSecondsToDuration(s string) (time.Duration, error) { function averageSpacing (line 280) | func averageSpacing(ts []time.Duration) (time.Duration, error) { function requireDurationInDelta (line 302) | func requireDurationInDelta(t *testing.T, expected, actual, delta time.D... FILE: version/version.go constant Version (line 18) | Version = "1.12.0" constant TemplateVersion (line 19) | TemplateVersion = "sha-594b3b1"