Documentation
¶
Overview ¶
Package server is the place we integrate the Livepeer node with the LPMS media server.
Index ¶
- Constants
- Variables
- func CalculateAudioToTextLatencyScore(took time.Duration, durationSeconds int64) float64
- func CalculateImageToImageLatencyScore(took time.Duration, req worker.GenImageToImageMultipartRequestBody, ...) float64
- func CalculateImageToVideoLatencyScore(took time.Duration, req worker.GenImageToVideoMultipartRequestBody, ...) float64
- func CalculateLLMLatencyScore(took time.Duration, tokensUsed int) float64
- func CalculateSegmentAnything2LatencyScore(took time.Duration, outPixels int64) float64
- func CalculateTextToImageLatencyScore(took time.Duration, req worker.GenTextToImageJSONRequestBody, outPixels int64) float64
- func CalculateUpscaleLatencyScore(took time.Duration, req worker.GenUpscaleMultipartRequestBody, outPixels int64) float64
- func CheckOrchestratorAvailability(orch Orchestrator) bool
- func EndTranscodingSession(ctx context.Context, sess *BroadcastSession) error
- func GetOrchestratorInfo(ctx context.Context, bcast common.Broadcaster, orchestratorServer *url.URL, ...) (*net.OrchestratorInfo, error)
- func PixelFormatNone() ffmpeg.PixelFormat
- func RunTranscoder(n *core.LivepeerNode, orchAddr string, capacity int, caps []core.Capability)
- func StartTranscodeServer(orch Orchestrator, bind string, mux *http.ServeMux, workDir string, ...) error
- type AISession
- type AISessionManager
- type AISessionPool
- type AISessionSelector
- type APIError
- type APIErrorResponse
- type BadRequestError
- type Balance
- type BalanceUpdate
- type BalanceUpdateStatus
- type BlockGetter
- type BreakOperation
- type BroadcastConfig
- func (cfg *BroadcastConfig) GetCapabilitiesMaxPrice(caps common.CapabilityComparator) *big.Rat
- func (cfg *BroadcastConfig) MaxPrice() *big.Rat
- func (cfg *BroadcastConfig) SetCapabilityMaxPrice(cap core.Capability, modelID string, newPrice *core.AutoConvertedPrice)
- func (cfg *BroadcastConfig) SetMaxPrice(price *core.AutoConvertedPrice)
- type BroadcastSession
- type BroadcastSessionsManager
- type BroadcastSessionsSelector
- type BroadcastSessionsSelectorFactory
- type ChainIdGetter
- type ImageToVideoResponseAsync
- type ImageToVideoResult
- type ImageToVideoResultRequest
- type ImageToVideoResultResponse
- type ImageToVideoStatus
- type LIFOSelector
- type LivepeerServer
- func (ls *LivepeerServer) AudioToText() http.Handler
- func (s *LivepeerServer) GetNodeStatus() *common.NodeStatus
- func (s *LivepeerServer) HandlePush(w http.ResponseWriter, r *http.Request)
- func (s *LivepeerServer) HandleRecordings(w http.ResponseWriter, r *http.Request)
- func (ls *LivepeerServer) ImageToImage() http.Handler
- func (ls *LivepeerServer) ImageToVideo() http.Handler
- func (ls *LivepeerServer) ImageToVideoResult() http.Handler
- func (ls *LivepeerServer) LLM() http.Handler
- func (s *LivepeerServer) LastHLSStreamID() core.StreamID
- func (s *LivepeerServer) LastManifestID() core.ManifestID
- func (s *LivepeerServer) LatestPlaylist() core.PlaylistManager
- func (ls *LivepeerServer) SegmentAnything2() http.Handler
- func (s *LivepeerServer) SetContextFromUnitTest(c context.Context)
- func (s *LivepeerServer) StartCliWebserver(srv *http.Server)
- func (s *LivepeerServer) StartMediaServer(ctx context.Context, httpAddr string) error
- func (ls *LivepeerServer) TextToImage() http.Handler
- func (ls *LivepeerServer) Upscale() http.Handler
- type MinLSSelector
- type Orchestrator
- type ProbabilitySelectionAlgorithm
- type ReceivedTranscodeResult
- type Redeemer
- func (r *Redeemer) MaxFloat(ctx context.Context, req *net.MaxFloatReq) (*net.MaxFloatUpdate, error)
- func (r *Redeemer) MonitorMaxFloat(req *net.MaxFloatReq, stream net.TicketRedeemer_MonitorMaxFloatServer) error
- func (r *Redeemer) QueueTicket(ctx context.Context, ticket *net.Ticket) (*net.QueueTicketRes, error)
- func (r *Redeemer) Start(url *url.URL, workDir string) error
- func (r *Redeemer) Stop()
- type RedeemerClient
- type Router
- func (r *Router) EndTranscodingSession(ctx context.Context, request *net.EndTranscodingSessionRequest) (*net.EndTranscodingSessionResponse, error)
- func (r *Router) GetOrchestrator(ctx context.Context, req *net.OrchestratorRequest) (*net.OrchestratorInfo, error)
- func (r *Router) Ping(ctx context.Context, req *net.PingPong) (*net.PingPong, error)
- func (r *Router) Start(uri *url.URL, serviceURI *url.URL, workDir string) error
- func (r *Router) Stop()
- type SegFlightMetadata
- type ServiceUnavailableError
- type SessionPool
- type SubmitResult
Constants ¶
const ( // Staged indicates that the update has been created but the credit // has not been spent yet Staged = iota // CreditSpent indicates that the update's credit has been spent // but the debit has not been processed yet CreditSpent // ReceivedChange indicates that the update's credit has been spent // and a debit was processed such that there was "change" (net of credit/debit) ReceivedChange )
const AISessionManagerTTL = 10 * time.Minute
const BroadcastRetry = 15 * time.Second
const GRPCConnectTimeout = 3 * time.Second
const GRPCTimeout = 8 * time.Second
const HLSBufferCap = uint(43200) //12 hrs assuming 1s segment
const HLSBufferWindow = uint(5)
const HLSWaitInterval = time.Second
const HTTPIdleTimeout = 10 * time.Minute
const LIVERPEER_TRANSCODE_CONFIG_HEADER = "Livepeer-Transcode-Configuration"
const MainnetChainId = 1
const RinkebyChainId = 4
const SELECTOR_LATENCY_SCORE_THRESHOLD = 1.0
const SegLen = 2 * time.Second
const StreamKeyBytes = 6
Variables ¶
var AuthWebhookURL *url.URL
var BroadcastCfg = newBroadcastConfig()
var BroadcastJobVideoProfiles = []ffmpeg.VideoProfile{ffmpeg.P240p30fps4x3, ffmpeg.P360p30fps16x9}
var MaxAttempts = 3
var MetadataPublishTimeout = 1 * time.Second
var MetadataQueue event.SimpleProducer
var NonRetryableErrMap = nonRetryableErrMapInit()
var Policy *verification.Policy
var StreamPrefix = regexp.MustCompile(`^[ /]*(stream/)?|(live/)?`) // test carefully!
StreamPrefix match all leading spaces, slashes and optionally `stream/`
Functions ¶
func CalculateAudioToTextLatencyScore ¶ added in v0.8.0
CalculateAudioToTextLatencyScore computes the time taken per second of audio for an audio-to-text request.
func CalculateImageToImageLatencyScore ¶ added in v0.8.0
func CalculateImageToImageLatencyScore(took time.Duration, req worker.GenImageToImageMultipartRequestBody, outPixels int64) float64
CalculateImageToImageLatencyScore computes the time taken per pixel for an image-to-image request.
func CalculateImageToVideoLatencyScore ¶ added in v0.8.0
func CalculateImageToVideoLatencyScore(took time.Duration, req worker.GenImageToVideoMultipartRequestBody, outPixels int64) float64
CalculateImageToVideoLatencyScore computes the time taken per pixel for an image-to-video request.
func CalculateLLMLatencyScore ¶ added in v0.8.0
func CalculateSegmentAnything2LatencyScore ¶ added in v0.8.0
CalculateSegmentAnything2LatencyScore computes the time taken per pixel for a segment-anything-2 request.
func CalculateTextToImageLatencyScore ¶ added in v0.8.0
func CalculateTextToImageLatencyScore(took time.Duration, req worker.GenTextToImageJSONRequestBody, outPixels int64) float64
CalculateTextToImageLatencyScore computes the time taken per pixel for an text-to-image request.
func CalculateUpscaleLatencyScore ¶ added in v0.8.0
func CalculateUpscaleLatencyScore(took time.Duration, req worker.GenUpscaleMultipartRequestBody, outPixels int64) float64
CalculateUpscaleLatencyScore computes the time taken per pixel for an upscale request.
func CheckOrchestratorAvailability ¶ added in v0.5.0
func CheckOrchestratorAvailability(orch Orchestrator) bool
CheckOrchestratorAvailability - the broadcaster calls CheckOrchestratorAvailability which invokes Ping on the orchestrator
func EndTranscodingSession ¶ added in v0.5.35
func EndTranscodingSession(ctx context.Context, sess *BroadcastSession) error
EndTranscodingSession - the broadcaster calls EndTranscodingSession to tear down sessions used for verification only once
func GetOrchestratorInfo ¶ added in v0.5.0
func GetOrchestratorInfo(ctx context.Context, bcast common.Broadcaster, orchestratorServer *url.URL, caps *net.Capabilities) (*net.OrchestratorInfo, error)
GetOrchestratorInfo - the broadcaster calls GetOrchestratorInfo which invokes GetOrchestrator on the orchestrator
func PixelFormatNone ¶ added in v0.5.30
func PixelFormatNone() ffmpeg.PixelFormat
func RunTranscoder ¶ added in v0.5.0
func RunTranscoder(n *core.LivepeerNode, orchAddr string, capacity int, caps []core.Capability)
RunTranscoder is main routing of standalone transcoder Exiting it will terminate executable
func StartTranscodeServer ¶ added in v0.3.3
func StartTranscodeServer(orch Orchestrator, bind string, mux *http.ServeMux, workDir string, acceptRemoteTranscoders bool, n *core.LivepeerNode) error
XXX do something about the implicit start of the http mux? this smells
Types ¶
type AISession ¶ added in v0.8.0
type AISession struct { *BroadcastSession // Fields used by AISessionSelector for session lifecycle management Cap core.Capability ModelID string Warm bool }
type AISessionManager ¶ added in v0.8.0
type AISessionManager struct {
// contains filtered or unexported fields
}
func NewAISessionManager ¶ added in v0.8.0
func NewAISessionManager(node *core.LivepeerNode, ttl time.Duration) *AISessionManager
func (*AISessionManager) Complete ¶ added in v0.8.0
func (c *AISessionManager) Complete(ctx context.Context, sess *AISession) error
func (*AISessionManager) Remove ¶ added in v0.8.0
func (c *AISessionManager) Remove(ctx context.Context, sess *AISession) error
func (*AISessionManager) Select ¶ added in v0.8.0
func (c *AISessionManager) Select(ctx context.Context, cap core.Capability, modelID string) (*AISession, error)
type AISessionPool ¶ added in v0.8.0
type AISessionPool struct {
// contains filtered or unexported fields
}
func NewAISessionPool ¶ added in v0.8.0
func NewAISessionPool(selector BroadcastSessionsSelector, suspender *suspender) *AISessionPool
func (*AISessionPool) Add ¶ added in v0.8.0
func (pool *AISessionPool) Add(sessions []*BroadcastSession)
func (*AISessionPool) Complete ¶ added in v0.8.0
func (pool *AISessionPool) Complete(sess *BroadcastSession)
func (*AISessionPool) Remove ¶ added in v0.8.0
func (pool *AISessionPool) Remove(sess *BroadcastSession)
func (*AISessionPool) Select ¶ added in v0.8.0
func (pool *AISessionPool) Select(ctx context.Context) *BroadcastSession
func (*AISessionPool) Size ¶ added in v0.8.0
func (pool *AISessionPool) Size() int
type AISessionSelector ¶ added in v0.8.0
type AISessionSelector struct {
// contains filtered or unexported fields
}
func NewAISessionSelector ¶ added in v0.8.0
func NewAISessionSelector(cap core.Capability, modelID string, node *core.LivepeerNode, ttl time.Duration) (*AISessionSelector, error)
func (*AISessionSelector) Complete ¶ added in v0.8.0
func (sel *AISessionSelector) Complete(sess *AISession)
func (*AISessionSelector) Refresh ¶ added in v0.8.0
func (sel *AISessionSelector) Refresh(ctx context.Context) error
func (*AISessionSelector) Remove ¶ added in v0.8.0
func (sel *AISessionSelector) Remove(sess *AISession)
type APIErrorResponse ¶ added in v0.8.0
type APIErrorResponse struct {
Error error `json:"error"`
}
type BadRequestError ¶ added in v0.8.0
type BadRequestError struct {
// contains filtered or unexported fields
}
func (*BadRequestError) Error ¶ added in v0.8.0
func (e *BadRequestError) Error() string
type Balance ¶ added in v0.5.0
type Balance interface { Credit(amount *big.Rat) StageUpdate(minCredit *big.Rat, ev *big.Rat) (int, *big.Rat, *big.Rat) }
Balance describes methods for a session's balance maintenance
type BalanceUpdate ¶ added in v0.5.0
type BalanceUpdate struct { // ExistingCredit is the existing credit reserved for the update ExistingCredit *big.Rat // NewCredit is the new credit for the update provided by a payment NewCredit *big.Rat // NumTickets is the number of tickets in the payment for the update NumTickets int // Debit is the amount to debit for the update Debit *big.Rat // Status is the current status of the update Status BalanceUpdateStatus }
BalanceUpdate describes an update to be performed on the balance of a session
type BalanceUpdateStatus ¶ added in v0.5.0
type BalanceUpdateStatus int
BalanceUpdateStatus indicates the current status of a balance update
type BlockGetter ¶ added in v0.5.0
type BreakOperation ¶ added in v0.5.30
type BreakOperation bool
type BroadcastConfig ¶ added in v0.5.0
type BroadcastConfig struct {
// contains filtered or unexported fields
}
func (*BroadcastConfig) GetCapabilitiesMaxPrice ¶ added in v0.8.0
func (cfg *BroadcastConfig) GetCapabilitiesMaxPrice(caps common.CapabilityComparator) *big.Rat
GetCapabilitiesMaxPrice returns the max price for the given capabilities.
func (*BroadcastConfig) MaxPrice ¶ added in v0.5.0
func (cfg *BroadcastConfig) MaxPrice() *big.Rat
func (*BroadcastConfig) SetCapabilityMaxPrice ¶ added in v0.8.0
func (cfg *BroadcastConfig) SetCapabilityMaxPrice(cap core.Capability, modelID string, newPrice *core.AutoConvertedPrice)
func (*BroadcastConfig) SetMaxPrice ¶ added in v0.5.0
func (cfg *BroadcastConfig) SetMaxPrice(price *core.AutoConvertedPrice)
type BroadcastSession ¶ added in v0.5.0
type BroadcastSession struct { Broadcaster common.Broadcaster Params *core.StreamParameters BroadcasterOS drivers.OSSession Sender pm.Sender Balances *core.AddressBalances OrchestratorScore float32 VerifiedByPerceptualHash bool // access these fields under the lock SegsInFlight []SegFlightMetadata LatencyScore float64 OrchestratorInfo *net.OrchestratorInfo OrchestratorOS drivers.OSSession PMSessionID string CleanupSession sessionsCleanup Balance Balance InitialPrice *net.PriceInfo // contains filtered or unexported fields }
BroadcastSession - session-specific state for broadcasters
func (*BroadcastSession) Address ¶ added in v0.5.23
func (bs *BroadcastSession) Address() string
func (*BroadcastSession) Clone ¶ added in v0.5.23
func (bs *BroadcastSession) Clone() *BroadcastSession
func (*BroadcastSession) IsTrusted ¶ added in v0.5.23
func (bs *BroadcastSession) IsTrusted() bool
func (*BroadcastSession) Transcoder ¶ added in v0.5.23
func (bs *BroadcastSession) Transcoder() string
type BroadcastSessionsManager ¶ added in v0.5.0
type BroadcastSessionsManager struct { VerificationFreq uint // contains filtered or unexported fields }
func NewSessionManager ¶ added in v0.5.0
func NewSessionManager(ctx context.Context, node *core.LivepeerNode, params *core.StreamParameters) *BroadcastSessionsManager
type BroadcastSessionsSelector ¶ added in v0.5.2
type BroadcastSessionsSelector interface { Add(sessions []*BroadcastSession) Complete(sess *BroadcastSession) Select(ctx context.Context) *BroadcastSession Size() int Clear() }
BroadcastSessionsSelector selects the next BroadcastSession to use
type BroadcastSessionsSelectorFactory ¶ added in v0.5.23
type BroadcastSessionsSelectorFactory func() BroadcastSessionsSelector
type ChainIdGetter ¶ added in v0.5.30
type ImageToVideoResponseAsync ¶ added in v0.8.0
type ImageToVideoResponseAsync struct {
RequestID string `json:"request_id"`
}
type ImageToVideoResult ¶ added in v0.8.0
type ImageToVideoResult struct { *worker.ImageResponse Error *APIError `json:"error,omitempty"` }
type ImageToVideoResultRequest ¶ added in v0.8.0
type ImageToVideoResultRequest struct {
RequestID string `json:"request_id"`
}
type ImageToVideoResultResponse ¶ added in v0.8.0
type ImageToVideoResultResponse struct { Result *ImageToVideoResult `json:"result,omitempty"` Status ImageToVideoStatus `json:"status"` }
type ImageToVideoStatus ¶ added in v0.8.0
type ImageToVideoStatus string
const ( Processing ImageToVideoStatus = "processing" Complete ImageToVideoStatus = "complete" )
type LIFOSelector ¶ added in v0.5.2
type LIFOSelector []*BroadcastSession
LIFOSelector selects the next BroadcastSession in LIFO order now used only in tests
func (*LIFOSelector) Add ¶ added in v0.5.2
func (s *LIFOSelector) Add(sessions []*BroadcastSession)
Add adds the sessions to the front of the selector's list
func (*LIFOSelector) Clear ¶ added in v0.5.2
func (s *LIFOSelector) Clear()
Clear resets the selector's state
func (*LIFOSelector) Complete ¶ added in v0.5.2
func (s *LIFOSelector) Complete(sess *BroadcastSession)
Complete adds the session to the end of the selector's list
func (*LIFOSelector) Select ¶ added in v0.5.2
func (s *LIFOSelector) Select(ctx context.Context) *BroadcastSession
Select returns the last session in the selector's list
func (*LIFOSelector) Size ¶ added in v0.5.2
func (s *LIFOSelector) Size() int
Size returns the number of sessions stored by the selector
type LivepeerServer ¶
type LivepeerServer struct { RTMPSegmenter lpmscore.RTMPSegmenter LPMS *lpmscore.LPMS LivepeerNode *core.LivepeerNode HTTPMux *http.ServeMux ExposeCurrentManifest bool AISessionManager *AISessionManager // contains filtered or unexported fields }
func NewLivepeerServer ¶
func NewLivepeerServer(rtmpAddr string, lpNode *core.LivepeerNode, httpIngest bool, transcodingOptions string) (*LivepeerServer, error)
func (*LivepeerServer) AudioToText ¶
func (ls *LivepeerServer) AudioToText() http.Handler
func (*LivepeerServer) GetNodeStatus ¶ added in v0.5.0
func (s *LivepeerServer) GetNodeStatus() *common.NodeStatus
func (*LivepeerServer) HandlePush ¶ added in v0.5.0
func (s *LivepeerServer) HandlePush(w http.ResponseWriter, r *http.Request)
HandlePush processes request for HTTP ingest
func (*LivepeerServer) HandleRecordings ¶ added in v0.5.13
func (s *LivepeerServer) HandleRecordings(w http.ResponseWriter, r *http.Request)
HandleRecordings handle requests to /recordings/ endpoint
func (*LivepeerServer) ImageToImage ¶
func (ls *LivepeerServer) ImageToImage() http.Handler
func (*LivepeerServer) ImageToVideo ¶ added in v0.8.0
func (ls *LivepeerServer) ImageToVideo() http.Handler
func (*LivepeerServer) ImageToVideoResult ¶ added in v0.8.0
func (ls *LivepeerServer) ImageToVideoResult() http.Handler
func (*LivepeerServer) LLM ¶ added in v0.8.0
func (ls *LivepeerServer) LLM() http.Handler
func (*LivepeerServer) LastHLSStreamID ¶ added in v0.5.0
func (s *LivepeerServer) LastHLSStreamID() core.StreamID
func (*LivepeerServer) LastManifestID ¶ added in v0.5.0
func (s *LivepeerServer) LastManifestID() core.ManifestID
func (*LivepeerServer) LatestPlaylist ¶ added in v0.5.0
func (s *LivepeerServer) LatestPlaylist() core.PlaylistManager
Debug helpers
func (*LivepeerServer) SegmentAnything2 ¶
func (ls *LivepeerServer) SegmentAnything2() http.Handler
func (*LivepeerServer) SetContextFromUnitTest ¶ added in v0.5.30
func (s *LivepeerServer) SetContextFromUnitTest(c context.Context)
func (*LivepeerServer) StartCliWebserver ¶ added in v0.5.0
func (s *LivepeerServer) StartCliWebserver(srv *http.Server)
StartCliWebserver starts web server for CLI blocks until exit
func (*LivepeerServer) StartMediaServer ¶
func (s *LivepeerServer) StartMediaServer(ctx context.Context, httpAddr string) error
StartMediaServer starts the LPMS server
func (*LivepeerServer) TextToImage ¶
func (ls *LivepeerServer) TextToImage() http.Handler
func (*LivepeerServer) Upscale ¶
func (ls *LivepeerServer) Upscale() http.Handler
type MinLSSelector ¶ added in v0.5.2
type MinLSSelector struct {
// contains filtered or unexported fields
}
MinLSSelector selects the next BroadcastSession with the lowest latency score if it is good enough. Otherwise, it selects a session that does not have a latency score yet MinLSSelector is not concurrency safe so the caller is responsible for ensuring safety for concurrent method calls
func NewMinLSSelector ¶ added in v0.5.2
func NewMinLSSelector(stakeRdr stakeReader, minLS float64, selectionAlgorithm common.SelectionAlgorithm, perfScore *common.PerfScore, capabilities common.CapabilityComparator) *MinLSSelector
NewMinLSSelector returns an instance of MinLSSelector configured with a good enough latency score
func (*MinLSSelector) Add ¶ added in v0.5.2
func (s *MinLSSelector) Add(sessions []*BroadcastSession)
Add adds the sessions to the selector's list of sessions without a latency score
func (*MinLSSelector) Clear ¶ added in v0.5.2
func (s *MinLSSelector) Clear()
Clear resets the selector's state
func (*MinLSSelector) Complete ¶ added in v0.5.2
func (s *MinLSSelector) Complete(sess *BroadcastSession)
Complete adds the session to the selector's list sessions with a latency score
func (*MinLSSelector) Select ¶ added in v0.5.2
func (s *MinLSSelector) Select(ctx context.Context) *BroadcastSession
Select returns the session with the lowest latency score if it is good enough. Otherwise, a session without a latency score yet is returned
func (*MinLSSelector) Size ¶ added in v0.5.2
func (s *MinLSSelector) Size() int
Size returns the number of sessions stored by the selector
type Orchestrator ¶ added in v0.3.3
type Orchestrator interface { ServiceURI() *url.URL Address() ethcommon.Address TranscoderSecret() string Sign([]byte) ([]byte, error) VerifySig(ethcommon.Address, string, []byte) bool CheckCapacity(core.ManifestID) error CheckAICapacity(pipeline, modelID string) bool TranscodeSeg(context.Context, *core.SegTranscodingMetadata, *stream.HLSSegment) (*core.TranscodeResult, error) ServeTranscoder(stream net.Transcoder_RegisterTranscoderServer, capacity int, capabilities *net.Capabilities) TranscoderResults(job int64, res *core.RemoteTranscoderResult) ProcessPayment(ctx context.Context, payment net.Payment, manifestID core.ManifestID) error TicketParams(sender ethcommon.Address, priceInfo *net.PriceInfo) (*net.TicketParams, error) PriceInfo(sender ethcommon.Address, manifestID core.ManifestID) (*net.PriceInfo, error) PriceInfoForCaps(sender ethcommon.Address, manifestID core.ManifestID, caps *net.Capabilities) (*net.PriceInfo, error) SufficientBalance(addr ethcommon.Address, manifestID core.ManifestID) bool DebitFees(addr ethcommon.Address, manifestID core.ManifestID, price *net.PriceInfo, pixels int64) Capabilities() *net.Capabilities AuthToken(sessionID string, expiration int64) *net.AuthToken TextToImage(ctx context.Context, req worker.GenTextToImageJSONRequestBody) (*worker.ImageResponse, error) ImageToImage(ctx context.Context, req worker.GenImageToImageMultipartRequestBody) (*worker.ImageResponse, error) ImageToVideo(ctx context.Context, req worker.GenImageToVideoMultipartRequestBody) (*worker.ImageResponse, error) Upscale(ctx context.Context, req worker.GenUpscaleMultipartRequestBody) (*worker.ImageResponse, error) AudioToText(ctx context.Context, req worker.GenAudioToTextMultipartRequestBody) (*worker.TextResponse, error) LLM(ctx context.Context, req worker.GenLLMFormdataRequestBody) (interface{}, error) SegmentAnything2(ctx context.Context, req worker.GenSegmentAnything2MultipartRequestBody) (*worker.MasksResponse, error) }
type ProbabilitySelectionAlgorithm ¶ added in v0.7.0
type ProbabilitySelectionAlgorithm struct { MinPerfScore float64 StakeWeight float64 PriceWeight float64 RandWeight float64 PriceExpFactor float64 IgnoreMaxPriceIfNeeded bool }
type ReceivedTranscodeResult ¶ added in v0.5.2
type ReceivedTranscodeResult struct { *net.TranscodeData Info *net.OrchestratorInfo LatencyScore float64 }
ReceivedTranscodeResult contains received transcode result data and related metadata
func SubmitSegment ¶ added in v0.3.3
func SubmitSegment(ctx context.Context, sess *BroadcastSession, seg *stream.HLSSegment, segPar *core.SegmentParameters, nonce uint64, calcPerceptualHash, verified bool) (*ReceivedTranscodeResult, error)
type Redeemer ¶ added in v0.5.9
type Redeemer struct { net.UnimplementedTicketRedeemerServer // contains filtered or unexported fields }
func NewRedeemer ¶ added in v0.5.9
func NewRedeemer(recipient ethcommon.Address, eth eth.LivepeerEthClient, sm *pm.LocalSenderMonitor) (*Redeemer, error)
NewRedeemer creates a new ticket redemption service instance
func (*Redeemer) MaxFloat ¶ added in v0.5.9
func (r *Redeemer) MaxFloat(ctx context.Context, req *net.MaxFloatReq) (*net.MaxFloatUpdate, error)
MaxFloat is a unary RPC method to request the max float value for a sender
func (*Redeemer) MonitorMaxFloat ¶ added in v0.5.9
func (r *Redeemer) MonitorMaxFloat(req *net.MaxFloatReq, stream net.TicketRedeemer_MonitorMaxFloatServer) error
MonitorMaxFloat starts a server-side stream to the client to send max float updates for sender specified in the request
func (*Redeemer) QueueTicket ¶ added in v0.5.9
func (r *Redeemer) QueueTicket(ctx context.Context, ticket *net.Ticket) (*net.QueueTicketRes, error)
QueueTicket adds a ticket to the ticket queue
type RedeemerClient ¶ added in v0.5.9
type RedeemerClient struct {
// contains filtered or unexported fields
}
func NewRedeemerClient ¶ added in v0.5.9
func NewRedeemerClient(uri string, sm pm.SenderManager, tm pm.TimeManager) (*RedeemerClient, error)
NewRedeemerClient instantiates a new client for the ticket redemption service The client implements the pm.SenderMonitor interface
func (*RedeemerClient) MaxFloat ¶ added in v0.5.9
MaxFloat returns the max float for 'sender' If no local cache is available this method will remotely request max float from the Redeemer server and start watching for subsequent updates from the Redeemer server
func (*RedeemerClient) QueueTicket ¶ added in v0.5.9
func (r *RedeemerClient) QueueTicket(ticket *pm.SignedTicket) error
QueueTicket sends a winning ticket to the Redeemer
func (*RedeemerClient) Start ¶ added in v0.5.9
func (r *RedeemerClient) Start()
func (*RedeemerClient) Stop ¶ added in v0.5.9
func (r *RedeemerClient) Stop()
Stop stops the Redeemer client
func (*RedeemerClient) ValidateSender ¶ added in v0.5.9
func (r *RedeemerClient) ValidateSender(sender ethcommon.Address) error
ValidateSender checks whether a sender has not recently unlocked its deposit and reserve
type Router ¶ added in v0.5.15
type Router struct { net.UnimplementedOrchestratorServer // contains filtered or unexported fields }
func (*Router) EndTranscodingSession ¶ added in v0.5.35
func (r *Router) EndTranscodingSession(ctx context.Context, request *net.EndTranscodingSessionRequest) (*net.EndTranscodingSessionResponse, error)
func (*Router) GetOrchestrator ¶ added in v0.5.15
func (r *Router) GetOrchestrator(ctx context.Context, req *net.OrchestratorRequest) (*net.OrchestratorInfo, error)
type SegFlightMetadata ¶ added in v0.5.14
type SegFlightMetadata struct {
// contains filtered or unexported fields
}
type ServiceUnavailableError ¶ added in v0.8.0
type ServiceUnavailableError struct {
// contains filtered or unexported fields
}
func (*ServiceUnavailableError) Error ¶ added in v0.8.0
func (e *ServiceUnavailableError) Error() string
type SessionPool ¶ added in v0.5.23
type SessionPool struct {
// contains filtered or unexported fields
}
func NewSessionPool ¶ added in v0.5.23
func NewSessionPool(mid core.ManifestID, poolSize, numOrchs int, sus *suspender, createSession sessionsCreator, cleanupSession sessionsCleanup, sel BroadcastSessionsSelector) *SessionPool
type SubmitResult ¶ added in v0.5.23
type SubmitResult struct { Session *BroadcastSession TranscodeResult *ReceivedTranscodeResult Err error }