Major improvements to UnifiedPlayer: 1. GetFrameImage() now works when paused for responsive UI updates 2. Play() method properly starts FFmpeg process 3. Frame display loop runs continuously for smooth video display 4. Disabled audio temporarily to fix video playback fundamentals 5. Simplified FFmpeg command to focus on video stream only Player now: - Generates video frames correctly - Shows video when paused - Has responsive progress tracking - Starts playback properly Next steps: Re-enable audio playback once video is stable
132 lines
2.5 KiB
Go
132 lines
2.5 KiB
Go
package uri
|
|
|
|
import (
|
|
"strconv"
|
|
"strings"
|
|
)
|
|
|
|
// IsDefaultPort indicates if the port is specified and is different from
|
|
// the defaut port defined for this scheme (if any).
|
|
//
|
|
// For example, an URI like http://host:8080 would return false, since 80 is the default http port.
|
|
func (u uri) IsDefaultPort() bool {
|
|
if len(u.authority.port) == 0 {
|
|
return true
|
|
}
|
|
|
|
portNum, _ := strconv.ParseUint(u.authority.port, 10, 64)
|
|
|
|
return defaultPortForScheme(strings.ToLower(u.scheme)) == portNum
|
|
}
|
|
|
|
// DefaultPort returns the default standardized port for the scheme of this URI,
|
|
// or zero if no such default is known.
|
|
//
|
|
// For example, for scheme "https", the default port is 443.
|
|
func (u uri) DefaultPort() int {
|
|
return int(defaultPortForScheme(strings.ToLower(u.scheme))) //nolint:gosec // uint64 -> int conversion is ok: no port overflows a int
|
|
}
|
|
|
|
// References:
|
|
// * https://www.iana.org/assignments/uri-schemes/uri-schemes.xhtml
|
|
// * https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml
|
|
//
|
|
// Also: https://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers
|
|
func defaultPortForScheme(scheme string) uint64 {
|
|
//nolint:mnd // no need to define default ports with additional constants
|
|
switch scheme {
|
|
case "aaa":
|
|
return 3868
|
|
case "aaas":
|
|
return 5658
|
|
case "acap":
|
|
return 674
|
|
case "cap":
|
|
return 1026
|
|
case "coap", "coap+tcp":
|
|
return 5683
|
|
case "coaps":
|
|
return 5684
|
|
case "coap+ws":
|
|
return 80
|
|
case "coaps+ws":
|
|
return 443
|
|
case "dict":
|
|
return 2628
|
|
case "dns":
|
|
return 53
|
|
case "finger":
|
|
return 79
|
|
case "ftp":
|
|
return 21
|
|
case "git":
|
|
return 9418
|
|
case "go":
|
|
return 1096
|
|
case "gopher":
|
|
return 70
|
|
case "http":
|
|
return 80
|
|
case "https":
|
|
return 443
|
|
case "iax":
|
|
return 4569
|
|
case "icap":
|
|
return 1344
|
|
case "imap":
|
|
return 143
|
|
case "ipp", "ipps":
|
|
return 631
|
|
case "irc", "irc6":
|
|
return 6667
|
|
case "ircs":
|
|
return 6697
|
|
case "ldap":
|
|
return 389
|
|
case "mailto":
|
|
return 25
|
|
case "msrp", "msrps":
|
|
return 2855
|
|
case "nfs":
|
|
return 2049
|
|
case "nntp":
|
|
return 119
|
|
case "ntp":
|
|
return 123
|
|
case "postgresql":
|
|
return 5432
|
|
case "radius":
|
|
return 1812
|
|
case "redis":
|
|
return 6379
|
|
case "rmi":
|
|
return 1098
|
|
case "rtsp", "rtsps", "rtspu":
|
|
return 554
|
|
case "rsync":
|
|
return 873
|
|
case "sftp":
|
|
return 22
|
|
case "skype":
|
|
return 23399
|
|
case "smtp":
|
|
return 25
|
|
case "snmp":
|
|
return 161
|
|
case "ssh":
|
|
return 22
|
|
case "steam":
|
|
return 7777
|
|
case "svn":
|
|
return 3690
|
|
case "telnet":
|
|
return 23
|
|
case "vnc":
|
|
return 5500
|
|
case "wss":
|
|
return 6602
|
|
}
|
|
|
|
return 0
|
|
}
|