示例#1
0
 MediaUri GetVideoMediaUri(TestVideoEncoderConfigurationOptions test,
                           CopyVideoEncoderConfiguration copyMethod,
                           string profileRequirementsDescription,
                           VideoEncoding encoding,
                           TransportProtocol protocol,
                           StreamType streamType)
 {
     return(GetVideoMediaUri(test, copyMethod, profileRequirementsDescription, encoding, protocol, streamType, null));
 }
示例#2
0
        MediaUri GetVideoMediaUri(TestVideoEncoderConfigurationOptions test,
                                  CopyVideoEncoderConfiguration copyMethod,
                                  string profileRequirementsDescription,
                                  VideoEncoding encoding,
                                  TransportProtocol protocol,
                                  StreamType streamType,
                                  IPType?multicastAddressType)
        {
            Profile profile = null;
            VideoEncoderConfigurationOptions options = null;

            Profile[] profiles = GetProfiles();

            RunStep(() =>
            {
                foreach (Profile p in profiles)
                {
                    LogStepEvent(string.Format("Check if {0} profile supports {1} Video encoder configuration",
                                               p.Name, profileRequirementsDescription));
                    if (p.VideoEncoderConfiguration != null)
                    {
                        options =
                            Client.GetVideoEncoderConfigurationOptions(p.VideoEncoderConfiguration.token, p.token);

                        DoRequestDelay();

                        if (test(options))
                        {
                            profile = p;
                            break;
                        }
                    }
                }
            },
                    string.Format("Select profile with {0} Video encoder configuration", profileRequirementsDescription));

            Assert(profile != null,
                   string.Format("Profile with {0} Video encoder configuration not found", profileRequirementsDescription),
                   "Check if required profile found");

            profile.VideoEncoderConfiguration.Encoding = encoding;
            copyMethod(profile, options);
            // fix for Panasonic
            if (encoding == VideoEncoding.JPEG)
            {
                profile.VideoEncoderConfiguration.MPEG4 = null;
                profile.VideoEncoderConfiguration.H264  = null;

                // support for extensions (bitrate limits)
                if (options.Extension != null)
                {
                    if (options.Extension.JPEG != null)
                    {
                        if (options.Extension.JPEG.BitrateRange != null)
                        {
                            if (profile.VideoEncoderConfiguration.RateControl.BitrateLimit < options.Extension.JPEG.BitrateRange.Min)
                            {
                                profile.VideoEncoderConfiguration.RateControl.BitrateLimit = options.Extension.JPEG.BitrateRange.Min;
                            }
                            if (profile.VideoEncoderConfiguration.RateControl.BitrateLimit > options.Extension.JPEG.BitrateRange.Max)
                            {
                                profile.VideoEncoderConfiguration.RateControl.BitrateLimit = options.Extension.JPEG.BitrateRange.Max;
                            }
                        }
                    }
                }
            }
            if (encoding == VideoEncoding.MPEG4)
            {
                profile.VideoEncoderConfiguration.H264 = null;

                // support for extensions (bitrate limits)
                if (options.Extension != null)
                {
                    if (options.Extension.MPEG4 != null)
                    {
                        if (options.Extension.MPEG4.BitrateRange != null)
                        {
                            if (profile.VideoEncoderConfiguration.RateControl.BitrateLimit < options.Extension.MPEG4.BitrateRange.Min)
                            {
                                profile.VideoEncoderConfiguration.RateControl.BitrateLimit = options.Extension.MPEG4.BitrateRange.Min;
                            }
                            if (profile.VideoEncoderConfiguration.RateControl.BitrateLimit > options.Extension.MPEG4.BitrateRange.Max)
                            {
                                profile.VideoEncoderConfiguration.RateControl.BitrateLimit = options.Extension.MPEG4.BitrateRange.Max;
                            }
                        }
                    }
                }
            }
            if (encoding == VideoEncoding.H264)
            {
                profile.VideoEncoderConfiguration.MPEG4 = null;

                // support for extensions (bitrate limits)
                if (options.Extension != null)
                {
                    if (options.Extension.H264 != null)
                    {
                        if (options.Extension.H264.BitrateRange != null)
                        {
                            if (profile.VideoEncoderConfiguration.RateControl.BitrateLimit < options.Extension.H264.BitrateRange.Min)
                            {
                                profile.VideoEncoderConfiguration.RateControl.BitrateLimit = options.Extension.H264.BitrateRange.Min;
                            }
                            if (profile.VideoEncoderConfiguration.RateControl.BitrateLimit > options.Extension.H264.BitrateRange.Max)
                            {
                                profile.VideoEncoderConfiguration.RateControl.BitrateLimit = options.Extension.H264.BitrateRange.Max;
                            }
                        }
                    }
                }
            }

            if (multicastAddressType.HasValue)
            {
                SetMulticastSettings(profile, true, false, multicastAddressType.Value);
            }

            SetVideoEncoderConfiguration(profile.VideoEncoderConfiguration, false, multicastAddressType.HasValue);

            StreamSetup streamSetup = new StreamSetup();

            streamSetup.Transport          = new Transport();
            streamSetup.Transport.Protocol = protocol;
            streamSetup.Stream             = streamType;

            UsedProfileToken = profile.token;
            MediaUri streamUri = GetStreamUri(streamSetup, profile.token);

            AdjustVideo(protocol, streamType, streamUri, profile.VideoEncoderConfiguration);

            return(streamUri);
        }
示例#3
0
        MediaUri GetVideoMediaUri(TestVideoEncoderConfigurationOptions test,
                                  CopyVideoEncoderConfiguration copyMethod,
                                  string profileRequirementsDescription,
                                  VideoEncoding encoding,
                                  TransportProtocol protocol,
                                  StreamType streamType,
                                  IPType?multicastAddressType,
                                  MediaConfigurationChangeLog changeLog)
        {
            Profile profile = null;
            VideoEncoderConfigurationOptions options = null;

            Profile[] profiles = GetProfiles();

            RunStep(() =>
            {
                foreach (Profile p in profiles)
                {
                    LogStepEvent(string.Format("Check if {0} profile supports {1} Video encoder configuration",
                                               p.Name, profileRequirementsDescription));
                    if (p.VideoEncoderConfiguration != null)
                    {
                        options =
                            Client.GetVideoEncoderConfigurationOptions(p.VideoEncoderConfiguration.token, p.token);

                        DoRequestDelay();

                        if (test(options))
                        {
                            profile = p;
                            break;
                        }
                    }
                }
            },
                    string.Format("Select profile with {0} Video encoder configuration", profileRequirementsDescription));

            Assert(profile != null,
                   string.Format("Profile with {0} Video encoder configuration not found", profileRequirementsDescription),
                   "Check if required profile found");

            VideoEncoderConfiguration vecCopy = Utils.CopyMaker.CreateCopy(profile.VideoEncoderConfiguration);

            changeLog.TrackModifiedConfiguration(vecCopy);

            profile.VideoEncoderConfiguration.Encoding = encoding;
            copyMethod(profile, options);

            AdjustVideoEncoderConfiguration(encoding, profile.VideoEncoderConfiguration, options);

            if (multicastAddressType.HasValue)
            {
                SetMulticastSettings(profile, true, false, multicastAddressType.Value);
            }

            SetVideoEncoderConfiguration(profile.VideoEncoderConfiguration, false, multicastAddressType.HasValue);

            StreamSetup streamSetup = new StreamSetup();

            streamSetup.Transport          = new Transport();
            streamSetup.Transport.Protocol = protocol;
            streamSetup.Stream             = streamType;

            UsedProfileToken = profile.token;
            MediaUri streamUri = GetStreamUri(streamSetup, profile.token);

            AdjustVideo(protocol, streamType, streamUri, profile.VideoEncoderConfiguration);

            return(streamUri);
        }