public static IMediaConfiguration CreateMediaConfiguration(this IEnumerable <IMediaParserMediaStream> mediaParserMediaStreams, TimeSpan?duration) { MediaConfiguration mediaConfiguration = new MediaConfiguration() { Duration = duration }; List <IMediaParserMediaStream> list = (List <IMediaParserMediaStream>)null; foreach (IMediaParserMediaStream parserMediaStream in mediaParserMediaStreams) { IConfigurationSource configurationSource = parserMediaStream.ConfigurationSource; if (configurationSource is IVideoConfigurationSource && null == mediaConfiguration.Video) { mediaConfiguration.Video = parserMediaStream; } else if (configurationSource is IAudioConfigurationSource && null == mediaConfiguration.Audio) { mediaConfiguration.Audio = parserMediaStream; } else { if (null == list) { list = new List <IMediaParserMediaStream>(); } list.Add(parserMediaStream); } } mediaConfiguration.AlternateStreams = (IReadOnlyCollection <IMediaParserMediaStream>)list; return((IMediaConfiguration)mediaConfiguration); }
public static IMediaConfiguration CreateMediaConfiguration(this IEnumerable<IMediaParserMediaStream> mediaParserMediaStreams, TimeSpan? duration) { var configuration = new MediaConfiguration { Duration = duration }; List<IMediaParserMediaStream> alternateStreams = null; foreach (var mediaStream in mediaParserMediaStreams) { var configurationSource = mediaStream.ConfigurationSource; var video = configurationSource as IVideoConfigurationSource; if (null != video && null == configuration.Video) { configuration.Video = mediaStream; continue; } var audio = configurationSource as IAudioConfigurationSource; if (null != audio && null == configuration.Audio) { configuration.Audio = mediaStream; continue; } if (null == alternateStreams) alternateStreams = new List<IMediaParserMediaStream>(); alternateStreams.Add(mediaStream); } configuration.AlternateStreams = alternateStreams; return configuration; }