示例#1
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);
                }
            }));
        }
示例#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);
            }
示例#3
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);
            }
        }
示例#4
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);
        }
        public void VideoSourceConfigurationConsistencyTest()
        {
            RunTest(() =>
            {
                // VideoSource configurations

                VideoSourceConfiguration[] configurations = GetVideoSourceConfigurations();

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

                foreach (VideoSourceConfiguration configuration in configurations)
                {
                    VideoSourceConfiguration config = GetVideoSourceConfiguration(configuration.token);

                    CompareConfigurations(configuration, config, true);
                }
            });
        }
        private void ok_btn_Click(object sender, RoutedEventArgs e)
        {
            if (configs != null)
            {
                // Take the video source from the info_config textbox
                try
                {
                    VideoSourceConfiguration vsc = JsonConvert.DeserializeObject <VideoSourceConfiguration>(info_config.Text);
                    media.SetVideoSourceConfiguration(vsc);
                }
                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  = "VideoSource";
                config[0].Token = configs[selectedIndex].token;

                if (!useProfileToken)
                {
                    string name = profileName;
                    profileToken = media.CreateProfile(name, config);
                }
                else
                {
                    media.AddConfiguration(profileToken, profileName, config);
                }

                this.DialogResult = true;
            }
            else
            {
                this.DialogResult = false;
            }
            this.Close();
        }
        public void VideoSourceConfiguration()
        {
            RunTest(() =>
            {
                Profile[] profiles = GetProfiles();
                string reason;
                Profile profile;

                Assert(
                    ValidateProfiles(profiles, out reason, out profile),
                    reason,
                    Resources.StepValidatingProfiles_Title,
                    profile != null ? string.Format(Resources.StepValidatingProfilesDetails_Format, profile.token) : null);

                VideoSource[] sources = GetVideoSources();
                Assert(ValidateVideoSources(sources, out reason), reason, Resources.StepValidatingVideoSources_Title);

                VideoSourceConfiguration[] configs = GetCompatibleVideoSourceConfigurations(profile.token);
                Assert(ValidateVideoSourceConfigs(configs, out reason), reason, Resources.StepValidatingVideoSourceConfigs_Title);
                VideoSourceConfiguration config = configs[0];

                configs = GetVideoSourceConfigurations();
                Assert(ValidateVideoSourceConfigs(configs, out reason), reason, Resources.StepValidatingVideoSourceConfigs_Title);

                VideoSourceConfigurationOptions options = GetVideoSourceConfigurationOptions(profile.token, config.token);

                config.Bounds.width  = options.BoundsRange.WidthRange.Max;
                config.Bounds.height = options.BoundsRange.HeightRange.Max + 1;
                string details       = string.Format("Setting invalid configuration (/VideoSourceConfiguration/Bounds/height = '{0}')", config.Bounds.height);
                SetInvalidVideoSourceConfiguration(config, false, details);

                config.Bounds.height = options.BoundsRange.HeightRange.Max;
                SetVideoSourceConfiguration(config, false);

                VideoSourceConfiguration newConfig = GetVideoSourceConfiguration(config.token);
                Assert(EqualConfigurations(config, newConfig, out reason),
                       string.Format(Resources.ErrorVideoConfigNotEqual_Format, reason),
                       Resources.StepCompareVideoSourceConfigs_Title);
            });
        }
 public override void SetVideoSourceConfiguration(VideoSourceConfiguration Configuration, bool ForcePersistence, ref System.Xml.XmlElement[] Any)
 {
     throw new NotImplementedException();
 }
示例#9
0
 public MediaEndpoint(MediaUri uri, VideoSourceConfiguration config)
 {
     Uri    = uri;
     Width  = config.Bounds.width;
     Height = config.Bounds.height;
 }
示例#10
0
		public Task SetVideoSourceConfigurationAsync(VideoSourceConfiguration Configuration, bool ForcePersistence)
		{
			throw new NotImplementedException();
		}
        public void VideoSourceConfigurationAndProfileConsistencyTest()
        {
            RunTest(() =>
            {
                Profile[] profiles = GetProfiles();

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

                // Video source configurations

                VideoSourceConfiguration[] configurations = GetVideoSourceConfigurations();

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

                // Check that each VideoSourceConfiguration from GetVideoSourceConfigurationsResponse
                // message has unique token.

                List <string> tokens     = new List <string>();
                List <string> duplicates = new List <string>();
                foreach (VideoSourceConfiguration 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 VideoSourceConfigurations from the GetProfilesResponse message
                // are included in the GetVideoSourceConfigurationsResponse message


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

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

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

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

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

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

                        CompareConfigurations(profile.VideoSourceConfiguration, configuration, true);
                    }
                }
            });
        }
示例#12
0
 public override void SetVideoSourceConfiguration(VideoSourceConfiguration Configuration)
 {
     throw new NotImplementedException();
 }