Files
onvif-go/types.go
T
2025-10-30 00:50:27 +00:00

432 lines
10 KiB
Go

package onvif
import "time"
// DeviceInformation contains basic device information
type DeviceInformation struct {
Manufacturer string
Model string
FirmwareVersion string
SerialNumber string
HardwareID string
}
// Capabilities represents the device capabilities
type Capabilities struct {
Analytics *AnalyticsCapabilities
Device *DeviceCapabilities
Events *EventCapabilities
Imaging *ImagingCapabilities
Media *MediaCapabilities
PTZ *PTZCapabilities
Extension *CapabilitiesExtension
}
// AnalyticsCapabilities represents analytics service capabilities
type AnalyticsCapabilities struct {
XAddr string
RuleSupport bool
AnalyticsModuleSupport bool
}
// DeviceCapabilities represents device service capabilities
type DeviceCapabilities struct {
XAddr string
Network *NetworkCapabilities
System *SystemCapabilities
IO *IOCapabilities
Security *SecurityCapabilities
}
// EventCapabilities represents event service capabilities
type EventCapabilities struct {
XAddr string
WSSubscriptionPolicySupport bool
WSPullPointSupport bool
WSPausableSubscriptionSupport bool
}
// ImagingCapabilities represents imaging service capabilities
type ImagingCapabilities struct {
XAddr string
}
// MediaCapabilities represents media service capabilities
type MediaCapabilities struct {
XAddr string
StreamingCapabilities *StreamingCapabilities
}
// PTZCapabilities represents PTZ service capabilities
type PTZCapabilities struct {
XAddr string
}
// NetworkCapabilities represents network capabilities
type NetworkCapabilities struct {
IPFilter bool
ZeroConfiguration bool
IPVersion6 bool
DynDNS bool
Extension *NetworkCapabilitiesExtension
}
// SystemCapabilities represents system capabilities
type SystemCapabilities struct {
DiscoveryResolve bool
DiscoveryBye bool
RemoteDiscovery bool
SystemBackup bool
SystemLogging bool
FirmwareUpgrade bool
SupportedVersions []string
Extension *SystemCapabilitiesExtension
}
// IOCapabilities represents I/O capabilities
type IOCapabilities struct {
InputConnectors int
RelayOutputs int
Extension *IOCapabilitiesExtension
}
// SecurityCapabilities represents security capabilities
type SecurityCapabilities struct {
TLS11 bool
TLS12 bool
OnboardKeyGeneration bool
AccessPolicyConfig bool
X509Token bool
SAMLToken bool
KerberosToken bool
RELToken bool
Extension *SecurityCapabilitiesExtension
}
// StreamingCapabilities represents streaming capabilities
type StreamingCapabilities struct {
RTPMulticast bool
RTP_TCP bool
RTP_RTSP_TCP bool
Extension *StreamingCapabilitiesExtension
}
// Extension types
type CapabilitiesExtension struct{}
type NetworkCapabilitiesExtension struct{}
type SystemCapabilitiesExtension struct{}
type IOCapabilitiesExtension struct{}
type SecurityCapabilitiesExtension struct{}
type StreamingCapabilitiesExtension struct{}
// Profile represents a media profile
type Profile struct {
Token string
Name string
VideoSourceConfiguration *VideoSourceConfiguration
AudioSourceConfiguration *AudioSourceConfiguration
VideoEncoderConfiguration *VideoEncoderConfiguration
AudioEncoderConfiguration *AudioEncoderConfiguration
PTZConfiguration *PTZConfiguration
MetadataConfiguration *MetadataConfiguration
Extension *ProfileExtension
}
// VideoSourceConfiguration represents video source configuration
type VideoSourceConfiguration struct {
Token string
Name string
UseCount int
SourceToken string
Bounds *IntRectangle
}
// AudioSourceConfiguration represents audio source configuration
type AudioSourceConfiguration struct {
Token string
Name string
UseCount int
SourceToken string
}
// VideoEncoderConfiguration represents video encoder configuration
type VideoEncoderConfiguration struct {
Token string
Name string
UseCount int
Encoding string // JPEG, MPEG4, H264
Resolution *VideoResolution
Quality float64
RateControl *VideoRateControl
MPEG4 *MPEG4Configuration
H264 *H264Configuration
Multicast *MulticastConfiguration
SessionTimeout time.Duration
}
// AudioEncoderConfiguration represents audio encoder configuration
type AudioEncoderConfiguration struct {
Token string
Name string
UseCount int
Encoding string // G711, G726, AAC
Bitrate int
SampleRate int
Multicast *MulticastConfiguration
SessionTimeout time.Duration
}
// PTZConfiguration represents PTZ configuration
type PTZConfiguration struct {
Token string
Name string
UseCount int
NodeToken string
DefaultAbsolutePantTiltPositionSpace string
DefaultAbsoluteZoomPositionSpace string
DefaultRelativePanTiltTranslationSpace string
DefaultRelativeZoomTranslationSpace string
DefaultContinuousPanTiltVelocitySpace string
DefaultContinuousZoomVelocitySpace string
DefaultPTZSpeed *PTZSpeed
DefaultPTZTimeout time.Duration
PanTiltLimits *PanTiltLimits
ZoomLimits *ZoomLimits
}
// MetadataConfiguration represents metadata configuration
type MetadataConfiguration struct {
Token string
Name string
UseCount int
PTZStatus *PTZFilter
Events *EventSubscription
Analytics bool
Multicast *MulticastConfiguration
SessionTimeout time.Duration
}
// VideoResolution represents video resolution
type VideoResolution struct {
Width int
Height int
}
// VideoRateControl represents video rate control
type VideoRateControl struct {
FrameRateLimit int
EncodingInterval int
BitrateLimit int
}
// MPEG4Configuration represents MPEG4 configuration
type MPEG4Configuration struct {
GovLength int
MPEG4Profile string
}
// H264Configuration represents H264 configuration
type H264Configuration struct {
GovLength int
H264Profile string
}
// MulticastConfiguration represents multicast configuration
type MulticastConfiguration struct {
Address *IPAddress
Port int
TTL int
AutoStart bool
}
// IPAddress represents an IP address
type IPAddress struct {
Type string // IPv4 or IPv6
Address string
}
// IntRectangle represents a rectangle with integer coordinates
type IntRectangle struct {
X int
Y int
Width int
Height int
}
// PTZSpeed represents PTZ speed
type PTZSpeed struct {
PanTilt *Vector2D
Zoom *Vector1D
}
// Vector2D represents a 2D vector
type Vector2D struct {
X float64
Y float64
Space string
}
// Vector1D represents a 1D vector
type Vector1D struct {
X float64
Space string
}
// PanTiltLimits represents pan/tilt limits
type PanTiltLimits struct {
Range *Space2DDescription
}
// ZoomLimits represents zoom limits
type ZoomLimits struct {
Range *Space1DDescription
}
// Space2DDescription represents 2D space description
type Space2DDescription struct {
URI string
XRange *FloatRange
YRange *FloatRange
}
// Space1DDescription represents 1D space description
type Space1DDescription struct {
URI string
XRange *FloatRange
}
// FloatRange represents a float range
type FloatRange struct {
Min float64
Max float64
}
// PTZFilter represents PTZ filter
type PTZFilter struct {
Status bool
Position bool
}
// EventSubscription represents event subscription
type EventSubscription struct {
Filter *FilterType
}
// FilterType represents filter type
type FilterType struct {
// Simplified for now
}
// ProfileExtension represents profile extension
type ProfileExtension struct{}
// StreamSetup represents stream setup parameters
type StreamSetup struct {
Stream string // RTP-Unicast, RTP-Multicast
Transport *Transport
}
// Transport represents transport parameters
type Transport struct {
Protocol string // UDP, TCP, RTSP, HTTP
Tunnel *Tunnel
}
// Tunnel represents tunnel parameters
type Tunnel struct{}
// MediaURI represents a media URI
type MediaURI struct {
URI string
InvalidAfterConnect bool
InvalidAfterReboot bool
Timeout time.Duration
}
// PTZStatus represents PTZ status
type PTZStatus struct {
Position *PTZVector
MoveStatus *PTZMoveStatus
Error string
UTCTime time.Time
}
// PTZVector represents PTZ position
type PTZVector struct {
PanTilt *Vector2D
Zoom *Vector1D
}
// PTZMoveStatus represents PTZ movement status
type PTZMoveStatus struct {
PanTilt string // IDLE, MOVING, UNKNOWN
Zoom string // IDLE, MOVING, UNKNOWN
}
// PTZPreset represents a PTZ preset
type PTZPreset struct {
Token string
Name string
PTZPosition *PTZVector
}
// ImagingSettings represents imaging settings
type ImagingSettings struct {
BacklightCompensation *BacklightCompensation
Brightness *float64
ColorSaturation *float64
Contrast *float64
Exposure *Exposure
Focus *FocusConfiguration
IrCutFilter *string
Sharpness *float64
WideDynamicRange *WideDynamicRange
WhiteBalance *WhiteBalance
Extension *ImagingSettingsExtension
}
// BacklightCompensation represents backlight compensation
type BacklightCompensation struct {
Mode string // OFF, ON
Level float64
}
// Exposure represents exposure settings
type Exposure struct {
Mode string // AUTO, MANUAL
Priority string // LowNoise, FrameRate
MinExposureTime float64
MaxExposureTime float64
MinGain float64
MaxGain float64
MinIris float64
MaxIris float64
ExposureTime float64
Gain float64
Iris float64
}
// FocusConfiguration represents focus configuration
type FocusConfiguration struct {
AutoFocusMode string // AUTO, MANUAL
DefaultSpeed float64
NearLimit float64
FarLimit float64
}
// WideDynamicRange represents WDR settings
type WideDynamicRange struct {
Mode string // OFF, ON
Level float64
}
// WhiteBalance represents white balance settings
type WhiteBalance struct {
Mode string // AUTO, MANUAL
CrGain float64
CbGain float64
}
// ImagingSettingsExtension represents imaging settings extension
type ImagingSettingsExtension struct{}