func (s *MediaService) GetCompatibleVideoAnalyticsConfigurations(profileToken string) (res trt.GetCompatibleVideoAnalyticsConfigurationsResponse, err error) {
	err = s.Client.Call(trt.GetCompatibleVideoAnalyticsConfigurations{
		ProfileToken: tt.ReferenceToken(profileToken),
	}, &res)
	return
}
GetCompatibleVideoAnalyticsConfigurations requests all video analytic configurations of the device that
are compatible with a certain media profile. Each of the returned configurations shall be a valid input
parameter for the AddVideoAnalyticsConfiguration command on the media profile.
The result varies depending on the capabilities, configurations and settings in the device.
package onvif4go
import (
	trt "github.com/faceterteam/onvif4go/media"
	tt "github.com/faceterteam/onvif4go/onvif"
)
type MediaService struct {
	Client onvifCaller
}
func NewMediaService(endpoint string, onvifDevice *OnvifDevice) *MediaService {
	return &MediaService{
		Client: NewOnvifClient(endpoint, &onvifDevice.auth),
	}
}
func (s *MediaService) WithoutAuth() *MediaService {
	return &MediaService{
		Client: s.Client.WithoutAuth(),
	}
}
func (s *MediaService) GetProfiles() (res trt.GetProfilesResponse, err error) {
	err = s.Client.Call(trt.GetProfiles{}, &res)
	return
}
func (s *MediaService) GetProfile(profileToken string) (res trt.GetProfileResponse, err error) {
	err = s.Client.Call(trt.GetProfile{
		ProfileToken: tt.ReferenceToken(profileToken),
	}, &res)
	return
}
func (s *MediaService) GetServiceCapabilities() (res trt.GetServiceCapabilitiesResponse, err error) {
	err = s.Client.Call(trt.GetServiceCapabilities{}, &res)
	return
}
func (s *MediaService) GetVideoSources() (res trt.GetVideoSourcesResponse, err error) {
	err = s.Client.Call(trt.GetVideoSources{}, &res)
	return
}
func (s *MediaService) GetAudioSources() (res trt.GetAudioSourcesResponse, err error) {
	err = s.Client.Call(trt.GetAudioSources{}, &res)
	return
}
func (s *MediaService) GetAudioOutputs() (res trt.GetAudioOutputsResponse, err error) {
	err = s.Client.Call(trt.GetAudioOutputs{}, &res)
	return
}
func (s *MediaService) CreateProfile(token, name string) (res trt.CreateProfileResponse, err error) {
	err = s.Client.Call(trt.CreateProfile{
		Token: tt.ReferenceToken(token),
		Name:  tt.Name(name),
	}, &res)
	return
}
func (s *MediaService) AddVideoEncoderConfiguration(profileToken, configurationToken string) error {
	return s.Client.Call(trt.AddVideoEncoderConfiguration{
		ProfileToken:       tt.ReferenceToken(profileToken),
		ConfigurationToken: tt.ReferenceToken(configurationToken),
	}, &trt.AddVideoEncoderConfigurationResponse{})
}
func (s *MediaService) RemoveVideoEncoderConfiguration(profileToken string) error {
	return s.Client.Call(trt.RemoveVideoEncoderConfiguration{
		ProfileToken: tt.ReferenceToken(profileToken),
	}, &trt.RemoveVideoEncoderConfigurationResponse{})
}
func (s *MediaService) AddVideoSourceConfiguration(profileToken, configurationToken string) error {
	return s.Client.Call(trt.AddVideoSourceConfiguration{
		ProfileToken:       tt.ReferenceToken(profileToken),
		ConfigurationToken: tt.ReferenceToken(configurationToken),
	}, &trt.AddVideoSourceConfigurationResponse{})
}
func (s *MediaService) RemoveVideoSourceConfiguration(profileToken string) error {
	return s.Client.Call(trt.RemoveVideoSourceConfiguration{
		ProfileToken: tt.ReferenceToken(profileToken),
	}, &trt.RemoveVideoSourceConfigurationResponse{})
}
func (s *MediaService) AddAudioEncoderConfiguration(profileToken, configurationToken string) error {
	return s.Client.Call(trt.AddAudioEncoderConfiguration{
		ProfileToken:       tt.ReferenceToken(profileToken),
		ConfigurationToken: tt.ReferenceToken(configurationToken),
	}, &trt.AddAudioEncoderConfigurationResponse{})
}
func (s *MediaService) RemoveAudioEncoderConfiguration(profileToken string) error {
	return s.Client.Call(trt.RemoveAudioEncoderConfiguration{
		ProfileToken: tt.ReferenceToken(profileToken),
	}, &trt.RemoveAudioEncoderConfigurationResponse{})
}
func (s *MediaService) AddAudioSourceConfiguration(profileToken, configurationToken string) error {
	return s.Client.Call(trt.AddAudioSourceConfiguration{
		ProfileToken:       tt.ReferenceToken(profileToken),
		ConfigurationToken: tt.ReferenceToken(configurationToken),
	}, &trt.AddAudioSourceConfigurationResponse{})
}
func (s *MediaService) RemoveAudioSourceConfiguration(profileToken string) error {
	return s.Client.Call(trt.RemoveAudioSourceConfiguration{
		ProfileToken: tt.ReferenceToken(profileToken),
	}, &trt.RemoveAudioSourceConfigurationResponse{})
}
func (s *MediaService) AddPTZConfiguration(profileToken, configurationToken string) error {
	return s.Client.Call(trt.AddPTZConfiguration{
		ProfileToken:       tt.ReferenceToken(profileToken),
		ConfigurationToken: tt.ReferenceToken(configurationToken),
	}, &trt.AddPTZConfigurationResponse{})
}
func (s *MediaService) RemovePTZConfiguration(profileToken string) error {
	return s.Client.Call(trt.RemovePTZConfiguration{
		ProfileToken: tt.ReferenceToken(profileToken),
	}, &trt.RemovePTZConfigurationResponse{})
}
func (s *MediaService) AddVideoAnalyticsConfiguration(profileToken, configurationToken string) error {
	return s.Client.Call(trt.AddVideoAnalyticsConfiguration{
		ProfileToken:       tt.ReferenceToken(profileToken),
		ConfigurationToken: tt.ReferenceToken(configurationToken),
	}, &trt.AddVideoAnalyticsConfigurationResponse{})
}
func (s *MediaService) RemoveVideoAnalyticsConfiguration(profileToken string) error {
	return s.Client.Call(trt.RemoveVideoAnalyticsConfiguration{
		ProfileToken: tt.ReferenceToken(profileToken),
	}, &trt.RemoveVideoAnalyticsConfigurationResponse{})
}
func (s *MediaService) AddMetadataConfiguration(profileToken, configurationToken string) error {
	return s.Client.Call(trt.AddMetadataConfiguration{
		ProfileToken:       tt.ReferenceToken(profileToken),
		ConfigurationToken: tt.ReferenceToken(configurationToken),
	}, &trt.AddMetadataConfigurationResponse{})
}
func (s *MediaService) RemoveMetadataConfiguration(profileToken string) error {
	return s.Client.Call(trt.RemoveMetadataConfiguration{
		ProfileToken: tt.ReferenceToken(profileToken),
	}, &trt.RemoveMetadataConfigurationResponse{})
}
func (s *MediaService) AddAudioOutputConfiguration(profileToken, configurationToken string) error {
	return s.Client.Call(trt.AddAudioOutputConfiguration{
		ProfileToken:       tt.ReferenceToken(profileToken),
		ConfigurationToken: tt.ReferenceToken(configurationToken),
	}, &trt.AddAudioOutputConfigurationResponse{})
}
func (s *MediaService) RemoveAudioOutputConfiguration(profileToken string) error {
	return s.Client.Call(trt.RemoveAudioOutputConfiguration{
		ProfileToken: tt.ReferenceToken(profileToken),
	}, &trt.RemoveAudioOutputConfigurationResponse{})
}
func (s *MediaService) AddAudioDecoderConfiguration(profileToken, configurationToken string) error {
	return s.Client.Call(trt.AddAudioDecoderConfiguration{
		ProfileToken:       tt.ReferenceToken(profileToken),
		ConfigurationToken: tt.ReferenceToken(configurationToken),
	}, &trt.AddAudioDecoderConfigurationResponse{})
}
func (s *MediaService) RemoveAudioDecoderConfiguration(profileToken string) error {
	return s.Client.Call(trt.RemoveAudioDecoderConfiguration{
		ProfileToken: tt.ReferenceToken(profileToken),
	}, &trt.RemoveAudioDecoderConfigurationResponse{})
}
func (s *MediaService) DeleteProfile(profileToken string) error {
	return s.Client.Call(trt.DeleteProfile{
		ProfileToken: tt.ReferenceToken(profileToken),
	}, &trt.DeleteProfileResponse{})
}
func (s *MediaService) GetVideoSourceConfigurations() (res trt.GetVideoSourceConfigurationsResponse, err error) {
	err = s.Client.Call(trt.GetVideoSourceConfigurations{}, &res)
	return
}
func (s *MediaService) GetVideoEncoderConfigurations() (res trt.GetVideoEncoderConfigurationsResponse, err error) {
	err = s.Client.Call(trt.GetVideoEncoderConfigurations{}, &res)
	return
}
func (s *MediaService) GetAudioSourceConfigurations() (res trt.GetAudioSourceConfigurationsResponse, err error) {
	err = s.Client.Call(trt.GetAudioSourceConfigurations{}, &res)
	return
}
func (s *MediaService) GetAudioEncoderConfigurations() (res trt.GetAudioEncoderConfigurationsResponse, err error) {
	err = s.Client.Call(trt.GetAudioEncoderConfigurations{}, &res)
	return
}
func (s *MediaService) GetVideoAnalyticsConfigurations() (res trt.GetVideoAnalyticsConfigurationsResponse, err error) {
	err = s.Client.Call(trt.GetVideoAnalyticsConfigurations{}, &res)
	return
}
func (s *MediaService) GetMetadataConfigurations() (res trt.GetMetadataConfigurationsResponse, err error) {
	err = s.Client.Call(trt.GetMetadataConfigurations{}, &res)
	return
}
func (s *MediaService) GetAudioOutputConfigurations() (res trt.GetAudioOutputConfigurationsResponse, err error) {
	err = s.Client.Call(trt.GetAudioOutputConfigurations{}, &res)
	return
}
func (s *MediaService) GetAudioDecoderConfigurations() (res trt.GetAudioDecoderConfigurationsResponse, err error) {
	err = s.Client.Call(trt.GetAudioDecoderConfigurations{}, &res)
	return
}
func (s *MediaService) GetVideoSourceConfiguration(configurationToken string) (res trt.GetVideoSourceConfigurationResponse, err error) {
	err = s.Client.Call(trt.GetVideoSourceConfiguration{
		ConfigurationToken: tt.ReferenceToken(configurationToken),
	}, &res)
	return
}
func (s *MediaService) GetVideoEncoderConfiguration(configurationToken string) (res trt.GetVideoEncoderConfigurationResponse, err error) {
	err = s.Client.Call(trt.GetVideoEncoderConfiguration{
		ConfigurationToken: tt.ReferenceToken(configurationToken),
	}, &res)
	return
}
func (s *MediaService) GetAudioSourceConfiguration(configurationToken string) (res trt.GetAudioSourceConfigurationResponse, err error) {
	err = s.Client.Call(trt.GetAudioSourceConfiguration{
		ConfigurationToken: tt.ReferenceToken(configurationToken),
	}, &res)
	return
}
func (s *MediaService) GetAudioEncoderConfiguration(configurationToken string) (res trt.GetAudioEncoderConfigurationResponse, err error) {
	err = s.Client.Call(trt.GetAudioEncoderConfiguration{
		ConfigurationToken: tt.ReferenceToken(configurationToken),
	}, &res)
	return
}
func (s *MediaService) GetVideoAnalyticsConfiguration(configurationToken string) (res trt.GetVideoAnalyticsConfigurationResponse, err error) {
	err = s.Client.Call(trt.GetVideoAnalyticsConfiguration{
		ConfigurationToken: tt.ReferenceToken(configurationToken),
	}, &res)
	return
}
func (s *MediaService) GetMetadataConfiguration(configurationToken string) (res trt.GetMetadataConfigurationResponse, err error) {
	err = s.Client.Call(trt.GetMetadataConfiguration{
		ConfigurationToken: tt.ReferenceToken(configurationToken),
	}, &res)
	return
}
func (s *MediaService) GetAudioOutputConfiguration(configurationToken string) (res trt.GetAudioOutputConfigurationResponse, err error) {
	err = s.Client.Call(trt.GetAudioOutputConfiguration{
		ConfigurationToken: tt.ReferenceToken(configurationToken),
	}, &res)
	return
}
func (s *MediaService) GetAudioDecoderConfiguration(configurationToken string) (res trt.GetAudioDecoderConfigurationResponse, err error) {
	err = s.Client.Call(trt.GetAudioDecoderConfiguration{
		ConfigurationToken: tt.ReferenceToken(configurationToken),
	}, &res)
	return
}
func (s *MediaService) GetCompatibleVideoEncoderConfigurations(profileToken string) (res trt.GetCompatibleVideoEncoderConfigurationsResponse, err error) {
	err = s.Client.Call(trt.GetCompatibleVideoEncoderConfigurations{
		ProfileToken: tt.ReferenceToken(profileToken),
	}, &res)
	return
}
func (s *MediaService) GetCompatibleVideoSourceConfigurations(profileToken string) (res trt.GetCompatibleVideoSourceConfigurationsResponse, err error) {
	err = s.Client.Call(trt.GetCompatibleVideoSourceConfigurations{
		ProfileToken: tt.ReferenceToken(profileToken),
	}, &res)
	return
}
func (s *MediaService) GetCompatibleAudioEncoderConfigurations(profileToken string) (res trt.GetCompatibleAudioEncoderConfigurationsResponse, err error) {
	err = s.Client.Call(trt.GetCompatibleAudioEncoderConfigurations{
		ProfileToken: tt.ReferenceToken(profileToken),
	}, &res)
	return
}
func (s *MediaService) GetCompatibleAudioSourceConfigurations(profileToken string) (res trt.GetCompatibleAudioSourceConfigurationsResponse, err error) {
	err = s.Client.Call(trt.GetCompatibleAudioSourceConfigurations{
		ProfileToken: tt.ReferenceToken(profileToken),
	}, &res)
	return
}