MediaUri GetVideoMediaUri(TestVideoEncoderConfigurationOptions test, CopyVideoEncoderConfiguration copyMethod, string profileRequirementsDescription, VideoEncoding encoding, TransportProtocol protocol, StreamType streamType) { return(GetVideoMediaUri(test, copyMethod, profileRequirementsDescription, encoding, protocol, streamType, null)); }
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); }
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); }