public void SetAudioSourceConfigurationInvalidConfigurationTest()
        {
            RunTest(() =>
            {
                AudioSourceConfiguration[] configurations = GetAudioSourceConfigurations();

                Assert(configurations != null,
                       "DUT did not return any configuration",
                       "Check if the DUT returned configurations");

                List <string> tokens = new List <string>();
                foreach (AudioSourceConfiguration config in configurations)
                {
                    tokens.Add(config.token);
                }

                string token = tokens.GetNonMatchingString();

                AudioSourceConfiguration configuration = new AudioSourceConfiguration();
                configuration.token       = token;
                configuration.Name        = configurations[0].Name;
                configuration.SourceToken = configurations[0].SourceToken;
                configuration.UseCount    = configurations[0].UseCount;

                RunStep(
                    () => { Client.SetAudioSourceConfiguration(configuration, false); },
                    "Set audio source configuration - negative test",
                    "Sender/InvalidArgVal/NoConfig",
                    true);
                DoRequestDelay();
            });
        }
Beispiel #2
0
            public static Model Create(
                string profName,
                string profToken,
                VideoSourceConfiguration videoSrcCfg,
                AudioSourceConfiguration audioSrcCfg,
                bool isVideoSrcCfgEnabled,
                bool isAudioSrcCfgEnabled,
                VideoSourceConfiguration[] videoSrcCfgs,
                AudioSourceConfiguration[] audioSrcCfgs
                )
            {
                var _this = new Model();

                _this.videoSrcCfgs                = videoSrcCfgs;
                _this.audioSrcCfgs                = audioSrcCfgs;
                _this.origin.profName             = profName;
                _this.origin.profToken            = profToken;
                _this.origin.videoSrcCfg          = videoSrcCfg;
                _this.origin.audioSrcCfg          = audioSrcCfg;
                _this.origin.isVideoSrcCfgEnabled = isVideoSrcCfgEnabled;
                _this.origin.isAudioSrcCfgEnabled = isAudioSrcCfgEnabled;
                _this.RevertChanges();

                return(_this);
            }
        private void ok_btn_Click(object sender, RoutedEventArgs e)
        {
            if (configs != null)
            {
                try
                {
                    AudioSourceConfiguration asc = JsonConvert.DeserializeObject <AudioSourceConfiguration>(info_config.Text);
                    media.SetAudioSourceConfiguration(asc);
                }
                catch (Exception ex)
                {
                    error_log.Visibility = Visibility.Visible;
                    error_log.Content    = "Error in the JSON format!";
                    error_log.Foreground = new SolidColorBrush(Colors.Red);
                    return;
                }

                ConfigurationRef[] config = { new ConfigurationRef() };
                config[0].Type  = "AudioSource";
                config[0].Token = configs[selectedIndex].token;

                media.AddConfiguration(profileToken, profileName, config);
            }

            this.DialogResult = true;
            this.Close();
        }
Beispiel #4
0
        public void GetMediaUri(
            Profile profile,
            VideoSourceConfiguration videoSourceConfig,
            VideoEncoderConfiguration videoEncoderConfig,
            AudioSourceConfiguration audioSourceConfig,
            AudioEncoderConfiguration audioEncoderConfig,
            TransportProtocol protocol)
        {
            RunInBackground(new Action(() =>
            {
                if (profile == null)
                {
                    profile = CreateProfile(TestMediaProfileName);
                }
                ConfigureProfile(profile, videoSourceConfig, videoEncoderConfig, audioSourceConfig, audioEncoderConfig);

                StreamSetup streamSetup        = new StreamSetup();
                streamSetup.Transport          = new Transport();
                streamSetup.Transport.Protocol = protocol;
                streamSetup.Stream             = StreamType.RTPUnicast;

                MediaUri streamUri = Client.GetStreamUri(streamSetup, profile.token);
                if (OnMediaUriReceived != null)
                {
                    OnMediaUriReceived(streamUri, videoEncoderConfig, audioEncoderConfig);
                }
            }));
        }
Beispiel #5
0
        protected void ConfigureProfile(
            Profile profile,
            VideoSourceConfiguration videoSourceConfig,
            VideoEncoderConfiguration videoEncoderConfig,
            AudioSourceConfiguration audioSourceConfig,
            AudioEncoderConfiguration audioEncoderConfig)
        {
            if ((profile.VideoSourceConfiguration != null) && (profile.VideoSourceConfiguration.token != videoSourceConfig.token))
            {
                Client.RemoveVideoSourceConfiguration(profile.token);
                profile.VideoSourceConfiguration = null;
            }
            if (profile.VideoSourceConfiguration == null)
            {
                Client.AddVideoSourceConfiguration(profile.token, videoSourceConfig.token);
            }

            if ((profile.VideoEncoderConfiguration != null) && (profile.VideoEncoderConfiguration.token != videoEncoderConfig.token))
            {
                Client.RemoveVideoEncoderConfiguration(profile.token);
                profile.VideoEncoderConfiguration = null;
            }
            if (profile.VideoEncoderConfiguration == null)
            {
                Client.AddVideoEncoderConfiguration(profile.token, videoEncoderConfig.token);
            }
            //encoder configuration can be modified - update it
            Client.SetVideoEncoderConfiguration(videoEncoderConfig, false);

            if ((profile.AudioSourceConfiguration != null) &&
                ((audioSourceConfig == null) ||
                 (profile.AudioSourceConfiguration.token != audioSourceConfig.token)))
            {
                Client.RemoveAudioSourceConfiguration(profile.token);
                profile.AudioSourceConfiguration = null;
            }
            if ((profile.AudioSourceConfiguration == null) && (audioSourceConfig != null))
            {
                Client.AddAudioSourceConfiguration(profile.token, audioSourceConfig.token);
            }

            if ((profile.AudioEncoderConfiguration != null) &&
                ((audioEncoderConfig == null) ||
                 (profile.AudioEncoderConfiguration.token != audioEncoderConfig.token)))
            {
                Client.RemoveAudioEncoderConfiguration(profile.token);
                profile.AudioEncoderConfiguration = null;
            }
            if (audioEncoderConfig != null)
            {
                if ((profile.AudioEncoderConfiguration == null) && (audioEncoderConfig != null))
                {
                    Client.AddAudioEncoderConfiguration(profile.token, audioEncoderConfig.token);
                }
                //encoder configuration can be modified - update it
                Client.SetAudioEncoderConfiguration(audioEncoderConfig, false);
            }
        }
        public void AudioSourceConfiguration()
        {
            Profile profile = null;

            RunTest <Profile>(
                new Backup <Profile>(() => { return(null); }),
                () =>
            {
                profile = CreateProfile("testprofilex", null);
                string reason;
                Assert(IsEmptyProfile(profile, out reason), reason, Resources.StepValidatingNewProfile_Title);

                AudioSource[] sources = GetAudioSources();
                Assert(ValidateAudioSources(sources, out reason), reason, Resources.StepValidatingAudioSources_Title);

                AudioSourceConfiguration[] configs = GetAudioSourceConfigurations();
                Assert(ValidateAudioSourceConfigs(configs, out reason), reason, Resources.StepValidatingAudioSources_Title);

                configs = GetCompatibleAudioSourceConfigurations(profile.token);
                Assert(ValidateAudioSourceConfigs(configs, out reason), reason, Resources.StepValidatingAudioSources_Title);

                AudioSourceConfiguration config = configs[0];
                AddAudioSourceConfiguration(profile.token, config.token);

                AudioSourceConfigurationOptions options = GetAudioSourceConfigurationOptions(null, config.token);

                string sourceToken = config.SourceToken;
                config.SourceToken = "InvalidToken";
                //TODO make sure that token is invalid
                string details = string.Format("Setting invalid configuration (/AudioSourceConfiguration/SourceToken = '{0}')", config.SourceToken);
                SetInvalidAudioSourceConfiguration(config, false, details);

                config.SourceToken = sourceToken;
                SetAudioSourceConfiguration(config, false);

                AudioSourceConfiguration newConfig = GetAudioSourceConfiguration(config.token);
                Assert(EqualConfigurations(config, newConfig, out reason),
                       string.Format(Resources.ErrorAudioSourceConfigNotEqual_Format, reason),
                       Resources.StepCompareAudioSourceConfigs_Title);

                RemoveAudioSourceConfiguration(profile.token);
                DeleteProfile(profile.token);
                profile = null;
            },
                (param) =>
            {
                if (profile != null)
                {
                    DeleteProfile(profile.token);
                }
            });
        }
Beispiel #7
0
    public ILoopSFX PlayLoop(AudioClip loopClip, Transform anchor, AudioSourceConfiguration config, UnityEngine.Audio.AudioMixerGroup defaultGroup = null)
    {
        if (loopClip == null)
        {
            Debug.LogError("Cannot play sound clip, because it is null");
            return(null);
        }

        var go   = CreateNewSource(loopClip, transform, config, defaultGroup);
        var loop = go.AddComponent <LoopController>();

        loop.Init(config, anchor);
        return(loop);
    }
        public void AudioSourceConfiguration()
        {
            Profile deletedProfile  = null;
            Profile createdProfile  = null;
            Profile modifiedProfile = null;
            Profile profile         = null;

            RunTest(
                () =>
            {
                profile = CreateProfileByAnnex3("testprofileX", null, out deletedProfile, out createdProfile, out modifiedProfile);
                string reason;
                Assert(IsEmptyProfile(profile, out reason), reason, Resources.StepValidatingNewProfile_Title);

                AudioSource[] sources = GetAudioSources();
                Assert(ValidateAudioSources(sources, out reason), reason, Resources.StepValidatingAudioSources_Title);

                AudioSourceConfiguration[] configs = GetAudioSourceConfigurations();
                Assert(ValidateAudioSourceConfigs(configs, out reason), reason, Resources.StepValidatingAudioSources_Title);

                configs = GetCompatibleAudioSourceConfigurations(profile.token);
                Assert(ValidateAudioSourceConfigs(configs, out reason), reason, Resources.StepValidatingAudioSources_Title);

                AudioSourceConfiguration config = configs[0];
                AddAudioSourceConfiguration(profile.token, config.token);

                AudioSourceConfigurationOptions options = GetAudioSourceConfigurationOptions(null, config.token);

                string sourceToken = config.SourceToken;
                config.SourceToken = "InvalidToken";
                //TODO make sure that token is invalid
                string details = string.Format("Setting invalid configuration (/AudioSourceConfiguration/SourceToken = '{0}')", config.SourceToken);
                SetInvalidAudioSourceConfiguration(config, false, details);

                config.SourceToken = sourceToken;
                SetAudioSourceConfiguration(config, false);

                AudioSourceConfiguration newConfig = GetAudioSourceConfiguration(config.token);
                Assert(EqualConfigurations(config, newConfig, out reason),
                       string.Format(Resources.ErrorAudioSourceConfigNotEqual_Format, reason),
                       Resources.StepCompareAudioSourceConfigs_Title);

                RemoveAudioSourceConfiguration(profile.token);
            },
                () =>
            {
                RestoreProfileByAnnex3(deletedProfile, createdProfile, modifiedProfile);
            });
        }
Beispiel #9
0
    public void Init(AudioSourceConfiguration config, Transform anchor)
    {
        _anchor = anchor;

        _source      = GetComponent <AudioSource>();
        _source.loop = true;
        _source.Play();
        _source.volume = 0;
        _volume.Start(0);
        _volume.SetDesire(1);

        _config = config;
        config.SetConfiguration(_source);
        _source.volume = _volume.Value * config.Volume;
    }
Beispiel #10
0
    GameObject CreateNewSource(AudioClip clip, Transform parent, AudioSourceConfiguration config, UnityEngine.Audio.AudioMixerGroup defaultGroup = null)
    {
        var go = new GameObject(clip.name);

        go.transform.parent = parent;
        var source = go.AddComponent <AudioSource>();

        source.clip = clip;

        config.SetConfiguration(source);
        if (source.outputAudioMixerGroup == null)
        {
            source.outputAudioMixerGroup = defaultGroup ?? _defaultGroup;
        }

        return(go);
    }
Beispiel #11
0
        /// <summary>
        /// Get stream uri with specified configurations
        /// </summary>
        /// <param name="profile"></param>
        /// <param name="videoSourceConfig">Video source configuration</param>
        /// <param name="videoEncoderConfig">Video encoder configuration</param>
        /// <param name="audioSourceConfig">Audio source configuration</param>
        /// <param name="audioEncoderConfig">Audio encoder configuration</param>
        /// <param name="protocol"></param>
        public void GetMediaUri(
            Proxies.Onvif.Profile profile,
            VideoSourceConfiguration videoSourceConfig,
            VideoEncoderConfiguration videoEncoderConfig,
            AudioSourceConfiguration audioSourceConfig,
            AudioEncoderConfiguration audioEncoderConfig,
            TransportProtocol protocol)
        {
            if ((videoEncoderConfig == null) || (videoSourceConfig == null))
            {
                throw new ArgumentNullException();
            }
            string address = View.MediaAddress;

            _mediaClientWorking = true;
            InitializeMediaClient(address);
            _mediaClient.GetMediaUri(profile, videoSourceConfig, videoEncoderConfig, audioSourceConfig, audioEncoderConfig, protocol);
        }
Beispiel #12
0
    public AudioSource PlayOnce(AudioClip clip, Vector3 position, Transform parent, AudioSourceConfiguration config, UnityEngine.Audio.AudioMixerGroup defaultGroup = null, float delay = 0)
    {
        if (clip == null)
        {
            Debug.LogError("Cannot play sound clip, because it is null");
            return(null);
        }

        var go = CreateNewSource(clip, parent, config, defaultGroup);

        go.transform.position = position;
        var source = go.GetComponent <AudioSource>();

        DontDestroyOnLoad(gameObject);
        source.PlayDelayed(delay);

        UnscaledDelayedDestroy.Apply(go, delay + clip.length / config.MinPitch + 0.01f);
        return(source);
    }
        public void AudioSourceConfigurationConsistencyTest()
        {
            RunTest(() =>
            {
                // Audio source configurations

                AudioSourceConfiguration[] configurations = GetAudioSourceConfigurations();

                Assert(configurations != null,
                       "DUT did not return any configuration",
                       "Check if the DUT returned configurations");

                foreach (AudioSourceConfiguration configuration in configurations)
                {
                    AudioSourceConfiguration config = GetAudioSourceConfiguration(configuration.token);

                    CompareConfigurations(configuration, config, true);
                }
            });
        }
        public void AudioEncoderConfiguration()
        {
            Profile profile = null;

            RunTest <Profile>(
                new Backup <Profile>(() => { return(null); }),
                () =>
            {
                profile = CreateProfile("testprofilex", null);
                string reason;
                Assert(IsEmptyProfile(profile, out reason), reason, Resources.StepValidatingNewProfile_Title);

                AudioSourceConfiguration[] sourceConfigs = GetAudioSourceConfigurations();
                Assert(ValidateAudioSourceConfigs(sourceConfigs, out reason), reason, Resources.StepValidatingAudioSources_Title);

                AudioSourceConfiguration sourceConfig = sourceConfigs[0];
                AddAudioSourceConfiguration(profile.token, sourceConfig.token);

                AudioEncoderConfiguration[] configs = GetAudioEncoderConfigurations();
                Assert(ValidateAudioEncoderConfigs(configs, out reason), reason, Resources.StepValidatingAudioEncoders_Title);

                configs = GetCompatibleAudioEncoderConfigurations(profile.token);
                Assert(ValidateAudioEncoderConfigs(configs, out reason), reason, Resources.StepValidatingAudioEncoders_Title);

                AudioEncoderConfiguration encoderConfig = configs[0];
                AddAudioEncoderConfiguration(profile.token, encoderConfig.token);

                RemoveAudioEncoderConfiguration(profile.token);
                RemoveAudioSourceConfiguration(profile.token);
                DeleteProfile(profile.token);
                profile = null;
            },
                (param) =>
            {
                if (profile != null)
                {
                    DeleteProfile(profile.token);
                }
            });
        }
 public override void SetAudioSourceConfiguration(AudioSourceConfiguration Configuration, bool ForcePersistence, ref System.Xml.XmlElement[] Any)
 {
     throw new NotImplementedException();
 }
Beispiel #16
0
		public Task SetAudioSourceConfigurationAsync(AudioSourceConfiguration Configuration, bool ForcePersistence)
		{
			throw new NotImplementedException();
		}
        public void SetAudioSourceConfigurationTest()
        {
            Profile deletedProfile  = null;
            Profile createdProfile  = null;
            Profile modifiedProfile = null;

            AudioEncoding             backupEncoding = AudioEncoding.G711;
            AudioEncoderConfiguration configBackup   = null;

            RunTest(
                () =>
            {
                Profile profile = CreateProfileByAnnex3("testprofileX", null, out deletedProfile, out createdProfile, out modifiedProfile);
                string reason;

                //5.	ONVIF Client will invoke GetCompatibleAudioSourceConfigurationsRequest message
                // (ProfileToken = ‘testprofileX’) to retrieve the list of audio source configurations
                // compatible with profile.
                //6.	ONVIF Client verifies the list of audio source configurations sent by DUT.
                // Audio source
                AudioSourceConfiguration[] configs = GetCompatibleAudioSourceConfigurations(profile.token);
                Assert(ValidateAudioSourceConfigs(configs, out reason), reason, Resources.StepValidatingAudioSources_Title);

                //7.	ONVIF Client invokes AddAudioSourceConfigurationRequest message
                // (ProfileToken = ‘testprofileX’, ConfigurationToken as one of the tokens received in the
                // GetCompatibleAudioSourceConfigurationsResponse message) to add audio source configuration
                // to profile.
                //8.	DUT adds the audio source configuration to the profile and sends the response.
                AudioSourceConfiguration config = configs[0];
                AddAudioSourceConfiguration(profile.token, config.token);


                //9.	ONVIF Client invokes GetCompatibleAudioEncoderConfigurationsRequest message
                // (ProfileToken = ‘testprofileX’) to retrieve audio encoder configurations compatible with
                // profile.
                //10.	DUT sends the list of audio encoder configurations compatible with the received
                // media profile token.
                // Audio encoder
                AudioEncoderConfiguration[] encoderConfigurations = GetCompatibleAudioEncoderConfigurations(profile.token);
                Assert(ValidateAudioEncoderConfigs(encoderConfigurations, out reason), reason, Resources.StepValidatingAudioEncoders_Title);

                //11.	ONVIF Client invokes AddAudioEncoderConfigurationRequest message (ProfileToken =
                // ‘testprofileX’, ConfigurationToken as one of the tokens received in the
                // GetCompatibleAudioencoderConfigurationsResponse message) to add audio encoder
                // configuration to profile.
                //12.	DUT adds the audio encoder configuration to the profile and sends the response.
                AudioEncoderConfiguration encoderConfig = encoderConfigurations[0];
                AddAudioEncoderConfiguration(profile.token, encoderConfig.token);

                //13.	ONVIF Client invokes GetAudioEncoderConfigurationOptionsRequest
                // (ProfileToken = ‘testprofileX’) request to retrieve audio encoder options for
                // specified profile.
                //14.	DUT sends the audio encoder configuration options which could be applied
                // to audio encoder from specified profile.
                AudioEncoderConfigurationOptions options = GetAudioEncoderConfigurationOptions(null, profile.token);
                Assert(options != null && options.Options != null,
                       "No Audio Encoder Configuration options returned",
                       "Validate response received");


                // Select valid options
                List <AudioEncoderConfigurationOption> validOptions = options.Options.Where(o => o.BitrateList != null && o.SampleRateList != null).ToList();
                Assert(validOptions.Count > 0,
                       "No valid options can be selected",
                       "Select AudioEncoderConfigurationOption to check configuration changing");
                configBackup = Utils.CopyMaker.CreateCopy(encoderConfig);

                backupEncoding = encoderConfig.Encoding;
                List <AudioEncoderConfigurationOption> opts = validOptions.Where(O => O.Encoding != backupEncoding).ToList();

                AudioEncoderConfigurationOption encodingDifferent = opts.FirstOrDefault();

                if (opts.Count == 0)
                {
                    opts = validOptions;
                }

                // select with different encoding
                AudioEncoderConfigurationOption selectedOptions = null;

                AudioEncoderConfigurationOption bitrateDifferent    = null;
                AudioEncoderConfigurationOption sampleRateDifferent = null;
                foreach (AudioEncoderConfigurationOption opt in opts)
                {
                    bool bitrateDiffers    = opt.BitrateList.Where(B => B != encoderConfig.Bitrate).Count() > 0;
                    bool sampleRateDiffers = opt.SampleRateList.Where(SR => SR != encoderConfig.SampleRate).Count() > 0;

                    if (bitrateDiffers && sampleRateDiffers)
                    {
                        selectedOptions = opt;
                        break;
                    }
                    if (bitrateDiffers)
                    {
                        bitrateDifferent = opt;
                    }
                    if (sampleRateDiffers)
                    {
                        sampleRateDifferent = opt;
                    }
                }

                if (selectedOptions == null)
                {
                    selectedOptions = (encodingDifferent != null) ? encodingDifferent : (bitrateDifferent != null ? bitrateDifferent : sampleRateDifferent);
                }

                if (selectedOptions != null)
                {
                    //15.	ONVIF Client invokes SetAudioEncoderConfigurationRequest message
                    // (ConfigurationToken, Encoding=[other than current], Bitrate = [other than current],
                    // SampleRate = [other than current], ForcePersistence = false, where all values was
                    // taken from audio encoder configuration options) to change
                    //16.	DUT sends SetAudioEncoderConfigurationResponse message.
                    // Update encoder configuration
                    encoderConfig.Encoding = selectedOptions.Encoding;

                    List <int> bitrates = selectedOptions.BitrateList.Where(B => B != encoderConfig.Bitrate).ToList();
                    if (bitrates.Count > 0)
                    {
                        encoderConfig.Bitrate = bitrates[0];
                    }

                    List <int> sampleRates = selectedOptions.SampleRateList.Where(SR => SR != encoderConfig.SampleRate).ToList();
                    if (sampleRates.Count > 0)
                    {
                        encoderConfig.SampleRate = sampleRates[0];
                    }

                    SetAudioEncoderConfiguration(encoderConfig, false);

                    //17.	ONVIF Client invokes GetAudioEncoderConfigurationRequest message
                    // (ConfigurationToken) to get new audio encoder configuration parameters.
                    //18.	DUT sends GetAudioEncoderConfigurationResponse message with parameters
                    // specified in set request.
                    AudioEncoderConfiguration actual = GetAudioEncoderConfiguration(encoderConfig.token);


                    //19.	ONVIF Client checks that Audio configuration in GetAudioEncoderConfigurationResponse
                    // message is the same as in SetAudioEncoderConfigurationRequest message.
                    string err     = null;
                    bool equal     = EqualConfigurations(encoderConfig, actual, out err);
                    string message = string.Format(Resources.ErrorAudioEncoderConfigNotEqual_Format, System.Environment.NewLine + err);
                    Assert(equal,
                           message,
                           Resources.StepCompareAudioEncoderConfigs_Title);
                }
            },
                () =>
            {
                if (configBackup != null)
                {
                    SetAudioEncoderConfiguration(configBackup, true);
                }
                RestoreProfileByAnnex3(deletedProfile, createdProfile, modifiedProfile);
            });
        }
        public void AudioSourceConfigurationAndProfileConsistencyTest()
        {
            RunTest(() =>
            {
                Profile[] profiles = GetProfiles();

                Assert(profiles != null,
                       "DUT did not return any profile",
                       "Check if the DUT returned media profiles");

                // Audio source configurations

                AudioSourceConfiguration[] configurations = GetAudioSourceConfigurations();

                Assert(configurations != null,
                       "DUT did not return any configuration",
                       "Check if the DUT returned configurations");

                List <string> tokens     = new List <string>();
                List <string> duplicates = new List <string>();
                foreach (AudioSourceConfiguration configuration in configurations)
                {
                    if (!tokens.Contains(configuration.token))
                    {
                        tokens.Add(configuration.token);
                    }
                    else
                    {
                        if (!duplicates.Contains(configuration.token))
                        {
                            duplicates.Add(configuration.token);
                        }
                    }
                }
                if (duplicates.Count > 0)
                {
                    StringBuilder sb = new StringBuilder("The following tokens are not unique: ");
                    bool first       = true;
                    foreach (string token in duplicates)
                    {
                        sb.Append(first ? token : string.Format(", {0}", token));
                        first = false;
                    }

                    Assert(false, sb.ToString(), "Validate audio source configurations");
                }

                // Check that each AudioSourceConfigurations from the GetProfilesResponse message
                // are included in the GetAudioSourceConfigurationsResponse message


                foreach (Profile profile in profiles)
                {
                    if (profile.AudioSourceConfiguration != null)
                    {
                        string token = profile.AudioSourceConfiguration.token;

                        AudioSourceConfiguration configuration =
                            configurations.Where(C => C.token == token).FirstOrDefault();

                        Assert(configuration != null,
                               string.Format("Audio source configuration with token '{0}' not found", token),
                               string.Format(
                                   "Check that audio source configuration for profile with token '{0}' exists",
                                   profile.token));
                    }
                }

                // Check that AudioSourceConfiguration parameters are same in GetProfilesResponse
                // message and in GetAudioSourceConfigurationsResponse message for each
                // AudioSourceConfiguration

                foreach (Profile profile in profiles)
                {
                    if (profile.AudioSourceConfiguration != null)
                    {
                        string token = profile.AudioSourceConfiguration.token;

                        AudioSourceConfiguration configuration =
                            configurations.Where(C => C.token == token).FirstOrDefault();

                        CompareConfigurations(profile.AudioSourceConfiguration, configuration, true);
                    }
                }
            });
        }
Beispiel #19
0
 public AudioSource PlayOnce(AudioClip clip, Vector3 position, AudioSourceConfiguration config, UnityEngine.Audio.AudioMixerGroup defaultGroup = null, float delay = 0)
 {
     return(PlayOnce(clip, position, transform, config, defaultGroup, delay));
 }
Beispiel #20
0
        public void SetAudioSourceConfigurationTest()
        {
            Profile deletedProfile  = null;
            Profile createdProfile  = null;
            Profile modifiedProfile = null;

            AudioEncoding             backupEncoding = AudioEncoding.G711;
            AudioEncoderConfiguration configBackup   = null;

            RunTest(
                () =>
            {
                string reason;
                bool executeAnnex = false;
                Profile profile   = null;

                //3.	ONVIF Client invokes CreateProfileRequest message (ProfileToken = ‘testprofileX’)
                // to create new profile.
                //4.	Verify CreateProfileResponse message or SOAP 1.2 fault message (Action/MaxNVTProfiles)
                // from the DUT. If fault was received execute Annex A.1
                /// create profile
                try
                {
                    BeginStep("Create profile");
                    profile = Client.CreateProfile("testprofileX", null);
                    StepPassed();

                    Assert(IsEmptyProfile(profile, out reason), reason, Resources.StepValidatingNewProfile_Title);
                    createdProfile = profile;
                }
                catch (FaultException exc)
                {
                    LogFault(exc);
                    string faultDump;
                    if (exc.IsValidOnvifFault("Receiver/Action/MaxNVTProfiles", out faultDump))
                    {
                        LogStepEvent("Unable to create profile - delete one or select existing for test");
                        executeAnnex = true;
                        StepPassed();
                    }
                    else
                    {
                        throw exc;
                    }
                }

                if (executeAnnex)
                {
                    Profile[] profiles = GetProfiles();
                    bool nonFixedFound = false;

                    foreach (Profile p in profiles)
                    {
                        if (!(p.fixedSpecified && p.@fixed))
                        {
                            nonFixedFound  = true;
                            deletedProfile = p;
                            DeleteProfile(p.token);
                            break;
                        }
                    }

                    if (nonFixedFound)
                    {
                        profile        = CreateProfile("testprofileX", null);
                        createdProfile = profile;
                    }
                    else
                    {
                        bool audioProfileFound = false;
                        foreach (Profile p in profiles)
                        {
                            if (p.AudioSourceConfiguration != null)
                            {
                                profile = p;
                                LogTestEvent(string.Format("Use profile with token '{0}' for test{1}", p.token, System.Environment.NewLine));
                                modifiedProfile   = p;
                                audioProfileFound = true;
                                break;
                            }
                        }
                        if (!audioProfileFound)
                        {
                            LogTestEvent("Unable to create or select profile with Audio configuration for test.");
                            return;
                        }
                    }
                }

                //5.	ONVIF Client will invoke GetCompatibleAudioSourceConfigurationsRequest message
                // (ProfileToken = ‘testprofileX’) to retrieve the list of audio source configurations
                // compatible with profile.
                //6.	ONVIF Client verifies the list of audio source configurations sent by DUT.
                // Audio source
                AudioSourceConfiguration[] configs = GetCompatibleAudioSourceConfigurations(profile.token);
                Assert(ValidateAudioSourceConfigs(configs, out reason), reason, Resources.StepValidatingAudioSources_Title);

                //7.	ONVIF Client invokes AddAudioSourceConfigurationRequest message
                // (ProfileToken = ‘testprofileX’, ConfigurationToken as one of the tokens received in the
                // GetCompatibleAudioSourceConfigurationsResponse message) to add audio source configuration
                // to profile.
                //8.	DUT adds the audio source configuration to the profile and sends the response.
                AudioSourceConfiguration config = configs[0];
                AddAudioSourceConfiguration(profile.token, config.token);


                //9.	ONVIF Client invokes GetCompatibleAudioEncoderConfigurationsRequest message
                // (ProfileToken = ‘testprofileX’) to retrieve audio encoder configurations compatible with
                // profile.
                //10.	DUT sends the list of audio encoder configurations compatible with the received
                // media profile token.
                // Audio encoder
                AudioEncoderConfiguration[] encoderConfigurations = GetCompatibleAudioEncoderConfigurations(profile.token);
                Assert(ValidateAudioEncoderConfigs(encoderConfigurations, out reason), reason, Resources.StepValidatingAudioEncoders_Title);

                //11.	ONVIF Client invokes AddAudioEncoderConfigurationRequest message (ProfileToken =
                // ‘testprofileX’, ConfigurationToken as one of the tokens received in the
                // GetCompatibleAudioencoderConfigurationsResponse message) to add audio encoder
                // configuration to profile.
                //12.	DUT adds the audio encoder configuration to the profile and sends the response.
                AudioEncoderConfiguration encoderConfig = encoderConfigurations[0];
                AddAudioEncoderConfiguration(profile.token, encoderConfig.token);

                //13.	ONVIF Client invokes GetAudioEncoderConfigurationOptionsRequest
                // (ProfileToken = ‘testprofileX’) request to retrieve audio encoder options for
                // specified profile.
                //14.	DUT sends the audio encoder configuration options which could be applied
                // to audio encoder from specified profile.
                AudioEncoderConfigurationOptions options = GetAudioEncoderConfigurationOptions(null, profile.token);
                Assert(options != null && options.Options != null,
                       "No Audio Encoder Configuration options returned",
                       "Validate response received");


                // Select valid options
                List <AudioEncoderConfigurationOption> validOptions = options.Options.Where(o => o.BitrateList != null && o.SampleRateList != null).ToList();
                Assert(validOptions.Count > 0,
                       "No valid options can be selected",
                       "Select AudioEncoderConfigurationOption to check configuration changing");
                configBackup = Utils.CopyMaker.CreateCopy(encoderConfig);

                backupEncoding = encoderConfig.Encoding;
                List <AudioEncoderConfigurationOption> opts = validOptions.Where(O => O.Encoding != backupEncoding).ToList();

                AudioEncoderConfigurationOption encodingDifferent = opts.FirstOrDefault();

                if (opts.Count == 0)
                {
                    opts = validOptions;
                }

                // select with different encoding
                AudioEncoderConfigurationOption selectedOptions = null;

                AudioEncoderConfigurationOption bitrateDifferent    = null;
                AudioEncoderConfigurationOption sampleRateDifferent = null;
                foreach (AudioEncoderConfigurationOption opt in opts)
                {
                    bool bitrateDiffers    = opt.BitrateList.Where(B => B != encoderConfig.Bitrate).Count() > 0;
                    bool sampleRateDiffers = opt.SampleRateList.Where(SR => SR != encoderConfig.SampleRate).Count() > 0;

                    if (bitrateDiffers && sampleRateDiffers)
                    {
                        selectedOptions = opt;
                        break;
                    }
                    if (bitrateDiffers)
                    {
                        bitrateDifferent = opt;
                    }
                    if (sampleRateDiffers)
                    {
                        sampleRateDifferent = opt;
                    }
                }

                if (selectedOptions == null)
                {
                    selectedOptions = (encodingDifferent != null) ? encodingDifferent : (bitrateDifferent != null ? bitrateDifferent : sampleRateDifferent);
                }

                if (selectedOptions != null)
                {
                    //15.	ONVIF Client invokes SetAudioEncoderConfigurationRequest message
                    // (ConfigurationToken, Encoding=[other than current], Bitrate = [other than current],
                    // SampleRate = [other than current], ForcePersistence = false, where all values was
                    // taken from audio encoder configuration options) to change
                    //16.	DUT sends SetAudioEncoderConfigurationResponse message.
                    // Update encoder configuration
                    encoderConfig.Encoding = selectedOptions.Encoding;

                    List <int> bitrates = selectedOptions.BitrateList.Where(B => B != encoderConfig.Bitrate).ToList();
                    if (bitrates.Count > 0)
                    {
                        encoderConfig.Bitrate = bitrates[0];
                    }

                    List <int> sampleRates = selectedOptions.SampleRateList.Where(SR => SR != encoderConfig.SampleRate).ToList();
                    if (sampleRates.Count > 0)
                    {
                        encoderConfig.SampleRate = sampleRates[0];
                    }

                    SetAudioEncoderConfiguration(encoderConfig, false);

                    //17.	ONVIF Client invokes GetAudioEncoderConfigurationRequest message
                    // (ConfigurationToken) to get new audio encoder configuration parameters.
                    //18.	DUT sends GetAudioEncoderConfigurationResponse message with parameters
                    // specified in set request.
                    AudioEncoderConfiguration actual = GetAudioEncoderConfiguration(encoderConfig.token);


                    //19.	ONVIF Client checks that Audio configuration in GetAudioEncoderConfigurationResponse
                    // message is the same as in SetAudioEncoderConfigurationRequest message.
                    string err     = null;
                    bool equal     = EqualConfigurations(encoderConfig, actual, out err);
                    string message = string.Format(Resources.ErrorAudioEncoderConfigNotEqual_Format, System.Environment.NewLine + err);
                    Assert(equal,
                           message,
                           Resources.StepCompareAudioEncoderConfigs_Title);
                }

                //20.	If used created Media Profile then ONVIF Client invokes DeleteProfileRequest
                // message (ProfileToken = ‘testprofileX’). Otherwise ONVIF client skip rest steps
                // and and restore profile settings.
                //21.	DUT deletes the media profile and sends the response.
                if (modifiedProfile == null)
                {
                    //
                    // if modifiedProfile != null, it means that all profiles have "fixed" attribute
                    // and one of them has been selected for test.
                    // In this case we cannot delete this profile.
                    //
                    DeleteProfile(profile.token);
                    createdProfile = null;
                }
            },
                () =>
            {
                if (configBackup != null)
                {
                    SetAudioEncoderConfiguration(configBackup, true);
                }

                if (createdProfile != null)
                {
                    DeleteProfile(createdProfile.token);
                }

                string remark            = null;
                bool create              = true;
                Profile profileToRestore = null;
                if (deletedProfile != null)
                {
                    profileToRestore = deletedProfile;
                    remark           = "Restore profile deleted during the test";
                }
                if (modifiedProfile != null)
                {
                    //
                    // We did not change video etc. configirations during the test.
                    // The only configurations which (possible) need to be restored are
                    // audio source and audio encoder (add)
                    //
                    profileToRestore = modifiedProfile;
                    remark           = "Restore profile modified during the test";
                    create           = false;
                }

                if (profileToRestore != null)
                {
                    // profile has been deleted for test: add all possible configurations
                    // profile has been selected for test: it has been deleted at the end.

                    RestoreProfile(profileToRestore, remark, create);
                }
            });
        }
Beispiel #21
0
 public override void SetAudioSourceConfiguration(AudioSourceConfiguration Configuration)
 {
     throw new NotImplementedException();
 }