2021-07-24 13:55:42 +00:00
|
|
|
package core
|
|
|
|
|
2022-08-15 11:50:03 +00:00
|
|
|
import (
|
|
|
|
"fmt"
|
|
|
|
"strings"
|
|
|
|
|
2022-12-13 19:54:17 +00:00
|
|
|
"github.com/aler9/gortsplib/v2/pkg/media"
|
2022-08-15 11:50:03 +00:00
|
|
|
)
|
|
|
|
|
2022-05-03 12:38:45 +00:00
|
|
|
// source is an entity that can provide a stream.
|
|
|
|
// it can be:
|
|
|
|
// - a publisher
|
2022-07-30 19:51:38 +00:00
|
|
|
// - sourceStatic
|
|
|
|
// - sourceRedirect
|
2021-07-24 13:55:42 +00:00
|
|
|
type source interface {
|
2022-08-04 19:07:17 +00:00
|
|
|
apiSourceDescribe() interface{}
|
2021-07-24 13:55:42 +00:00
|
|
|
}
|
2022-08-15 11:50:03 +00:00
|
|
|
|
2022-12-13 19:54:17 +00:00
|
|
|
func mediaDescription(media *media.Media) string {
|
|
|
|
ret := make([]string, len(media.Formats))
|
|
|
|
for i, forma := range media.Formats {
|
|
|
|
ret[i] = forma.String()
|
|
|
|
}
|
|
|
|
return strings.Join(ret, "/")
|
|
|
|
}
|
|
|
|
|
|
|
|
func mediasDescription(medias media.Medias) []string {
|
|
|
|
ret := make([]string, len(medias))
|
|
|
|
for i, media := range medias {
|
|
|
|
ret[i] = mediaDescription(media)
|
2022-08-15 11:50:03 +00:00
|
|
|
}
|
2022-08-15 14:56:09 +00:00
|
|
|
return ret
|
|
|
|
}
|
2022-08-15 11:50:03 +00:00
|
|
|
|
2022-12-13 19:54:17 +00:00
|
|
|
func sourceMediaInfo(medias media.Medias) string {
|
2022-08-15 11:50:03 +00:00
|
|
|
return fmt.Sprintf("%d %s (%s)",
|
2022-12-13 19:54:17 +00:00
|
|
|
len(medias),
|
2022-08-15 11:50:03 +00:00
|
|
|
func() string {
|
2022-12-13 19:54:17 +00:00
|
|
|
if len(medias) == 1 {
|
2022-08-15 11:50:03 +00:00
|
|
|
return "track"
|
|
|
|
}
|
|
|
|
return "tracks"
|
|
|
|
}(),
|
2022-12-13 19:54:17 +00:00
|
|
|
strings.Join(mediasDescription(medias), ", "))
|
2022-08-15 11:50:03 +00:00
|
|
|
}
|