mirror of
https://github.com/bluenviron/mediamtx.git
synced 2025-12-20 02:00:05 -08:00
When the absolute timestamp of incoming frames was not available, it was filled with the current timestamp, which is influenced by latency over time. This mechanism is replaced by an algorithm that detects when latency is the lowest, stores the current timestamp and uses it as reference throughout the rest of the stream.
119 lines
2.9 KiB
Go
119 lines
2.9 KiB
Go
package defs
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/bluenviron/gortsplib/v5/pkg/description"
|
|
|
|
"github.com/bluenviron/mediamtx/internal/conf"
|
|
"github.com/bluenviron/mediamtx/internal/externalcmd"
|
|
"github.com/bluenviron/mediamtx/internal/stream"
|
|
)
|
|
|
|
// PathNoStreamAvailableError is returned when no one is publishing.
|
|
type PathNoStreamAvailableError struct {
|
|
PathName string
|
|
}
|
|
|
|
// Error implements the error interface.
|
|
func (e PathNoStreamAvailableError) Error() string {
|
|
return fmt.Sprintf("no stream is available on path '%s'", e.PathName)
|
|
}
|
|
|
|
// Path is a path.
|
|
type Path interface {
|
|
Name() string
|
|
SafeConf() *conf.Path
|
|
ExternalCmdEnv() externalcmd.Environment
|
|
RemovePublisher(req PathRemovePublisherReq)
|
|
RemoveReader(req PathRemoveReaderReq)
|
|
}
|
|
|
|
// PathFindPathConfRes contains the response of FindPathConf().
|
|
type PathFindPathConfRes struct {
|
|
Conf *conf.Path
|
|
Err error
|
|
}
|
|
|
|
// PathFindPathConfReq contains arguments of FindPathConf().
|
|
type PathFindPathConfReq struct {
|
|
AccessRequest PathAccessRequest
|
|
Res chan PathFindPathConfRes
|
|
}
|
|
|
|
// PathDescribeRes contains the response of Describe().
|
|
type PathDescribeRes struct {
|
|
Path Path
|
|
Stream *stream.Stream
|
|
Redirect string
|
|
Err error
|
|
}
|
|
|
|
// PathDescribeReq contains arguments of Describe().
|
|
type PathDescribeReq struct {
|
|
AccessRequest PathAccessRequest
|
|
Res chan PathDescribeRes
|
|
}
|
|
|
|
// PathAddPublisherRes contains the response of AddPublisher().
|
|
type PathAddPublisherRes struct {
|
|
Path Path
|
|
Stream *stream.Stream
|
|
Err error
|
|
}
|
|
|
|
// PathAddPublisherReq contains arguments of AddPublisher().
|
|
type PathAddPublisherReq struct {
|
|
Author Publisher
|
|
Desc *description.Session
|
|
GenerateRTPPackets bool
|
|
FillNTP bool
|
|
ConfToCompare *conf.Path
|
|
AccessRequest PathAccessRequest
|
|
Res chan PathAddPublisherRes
|
|
}
|
|
|
|
// PathRemovePublisherReq contains arguments of RemovePublisher().
|
|
type PathRemovePublisherReq struct {
|
|
Author Publisher
|
|
Res chan struct{}
|
|
}
|
|
|
|
// PathAddReaderRes contains the response of AddReader().
|
|
type PathAddReaderRes struct {
|
|
Path Path
|
|
Stream *stream.Stream
|
|
Err error
|
|
}
|
|
|
|
// PathAddReaderReq contains arguments of AddReader().
|
|
type PathAddReaderReq struct {
|
|
Author Reader
|
|
AccessRequest PathAccessRequest
|
|
Res chan PathAddReaderRes
|
|
}
|
|
|
|
// PathRemoveReaderReq contains arguments of RemoveReader().
|
|
type PathRemoveReaderReq struct {
|
|
Author Reader
|
|
Res chan struct{}
|
|
}
|
|
|
|
// PathSourceStaticSetReadyRes contains the response of SetReadu().
|
|
type PathSourceStaticSetReadyRes struct {
|
|
Stream *stream.Stream
|
|
Err error
|
|
}
|
|
|
|
// PathSourceStaticSetReadyReq contains arguments of SetReady().
|
|
type PathSourceStaticSetReadyReq struct {
|
|
Desc *description.Session
|
|
GenerateRTPPackets bool
|
|
FillNTP bool
|
|
Res chan PathSourceStaticSetReadyRes
|
|
}
|
|
|
|
// PathSourceStaticSetNotReadyReq contains arguments of SetNotReady().
|
|
type PathSourceStaticSetNotReadyReq struct {
|
|
Res chan struct{}
|
|
}
|