internal static PlayRange Merge(this IMediaSource mediaSource, PlayRange first, PlayRange second) { if (!mediaSource.CanMerge(first, second)) { throw new InvalidOperationException(); } first = mediaSource.Adjust(first); second = mediaSource.Adjust(second); if (mediaSource.HasNativeDuration()) { return(PlayRange.Merge(first, second)); } else { return(new PlayRange(first.Duration + second.Duration)); } }