Ejemplo n.º 1
0
        private KeyFrameResolver(IList keyFrames, TimeSpan duration, ISegmentLengthProvider segmentLengthProvider)
        {
            _frameCount            = keyFrames?.Count ?? 0;
            _keyFrames             = new ResolvedKeyFrame <TKeyFrame> [_frameCount];
            _duration              = duration;
            _segmentLengthProvider = segmentLengthProvider ?? throw new ArgumentNullException(nameof(segmentLengthProvider));

            for (int i = 0; i < _frameCount; i++)
            {
                TKeyFrame currentFrame = (TKeyFrame)keyFrames[i];
                _keyFrames[i] = new ResolvedKeyFrame <TKeyFrame>(currentFrame);
            }
        }
Ejemplo n.º 2
0
        public static IReadOnlyList <ResolvedKeyFrame <TKeyFrame> > ResolveKeyFrames(
            IList keyFrames, TimeSpan duration, ISegmentLengthProvider segmentLengthProvider)
        {
            if (keyFrames == null || keyFrames.Count == 0)
            {
                return(null);
            }

            var resolver = new KeyFrameResolver <TKeyFrame>(keyFrames, duration, segmentLengthProvider);

            resolver.ResolveTimeSpanAndPercentKeyFrames();
            resolver.ResolveLastKeyFrame();
            resolver.ResolveFirstKeyFrame();
            resolver.ResolveUniformKeyFrames();
            resolver.ResolvePacedKeyFrames();
            resolver.SortKeyFrames();
            return(new ReadOnlyCollection <ResolvedKeyFrame <TKeyFrame> >(resolver._keyFrames));
        }