Exemplo n.º 1
0
        public MetadataInfoTreeContainer EditInfo(MetadataInfoTreeContainer infoToUpdate, List <MetadataInfoTreeContainer> suppliedInfo)
        {
            infoToUpdate.HasAudio = false;

            infoToUpdate.AudioStream = null;

            return(infoToUpdate);
        }
Exemplo n.º 2
0
        public MetadataInfoTreeContainer EditInfo(MetadataInfoTreeContainer infoToUpdate, List <MetadataInfoTreeContainer> suppliedInfo)
        {
            if (infoToUpdate.VideoStream.Duration > Length)
            {
                infoToUpdate.VideoStream.Duration = Length;
            }

            return(infoToUpdate);
        }
Exemplo n.º 3
0
        public MetadataInfoTreeContainer EditInfo(MetadataInfoTreeContainer infoToUpdate, List <MetadataInfoTreeContainer> suppliedInfo)
        {
            infoToUpdate.VideoStream.VideoMetadata.Width       = Width.GetValueOrDefault();
            infoToUpdate.VideoStream.VideoMetadata.Height      = Height.GetValueOrDefault();
            infoToUpdate.VideoStream.VideoMetadata.CodedWidth  = Width.GetValueOrDefault();
            infoToUpdate.VideoStream.VideoMetadata.CodedHeight = Height.GetValueOrDefault();

            return(infoToUpdate);
        }
Exemplo n.º 4
0
        public MetadataInfoTreeContainer EditInfo(MetadataInfoTreeContainer infoToUpdate, List <MetadataInfoTreeContainer> suppliedInfo)
        {
            var emptyMetadataInfo = MetadataInfo.Create();

            emptyMetadataInfo.AudioMetadata = new AudioStreamMetadata
            {
                SampleRate = SampleRate ?? 44100,
                Duration   = TimeSpan.MaxValue,
                DurationTs = long.MaxValue,
            };

            return(MetadataInfoTreeContainer.Create(AudioStream.Create(emptyMetadataInfo)));
        }
Exemplo n.º 5
0
        public MetadataInfoTreeContainer EditInfo(MetadataInfoTreeContainer infoToUpdate, List <MetadataInfoTreeContainer> suppliedInfo)
        {
            if (Shortest)
            {
                return(suppliedInfo.OrderBy(r => r.VideoStream.VideoMetadata.Duration).FirstOrDefault());
            }

            var mainMetadataInfo    = suppliedInfo.ElementAt(0);
            var overlayMetadataInfo = suppliedInfo.ElementAt(1);

            return(EofAction == OverlayEofActionType.EndAll
                ? overlayMetadataInfo
                : mainMetadataInfo);
        }
Exemplo n.º 6
0
        public MetadataInfoTreeContainer EditInfo(MetadataInfoTreeContainer infoToUpdate, List <MetadataInfoTreeContainer> suppliedInfo)
        {
            switch (Duration)
            {
            case DurationType.First:
                return(suppliedInfo.FirstOrDefault());

            case DurationType.Shortest:
                return(suppliedInfo.OrderBy(r => r.AudioStream.AudioMetadata.Duration).FirstOrDefault());

            default:
                return(suppliedInfo.OrderByDescending(r => r.AudioStream.AudioMetadata.Duration).FirstOrDefault());
            }
        }
Exemplo n.º 7
0
        public MetadataInfoTreeContainer EditInfo(MetadataInfoTreeContainer infoToUpdate, List <MetadataInfoTreeContainer> suppliedInfo)
        {
            if (NumberOfAudioOut > 0)
            {
                infoToUpdate.AudioStream.AudioMetadata.Duration = TimeSpan.FromSeconds(suppliedInfo.Sum(i => i.AudioStream.AudioMetadata.Duration.TotalSeconds));
            }

            if (NumberOfVideoOut > 0)
            {
                infoToUpdate.VideoStream.VideoMetadata.Duration = TimeSpan.FromSeconds(suppliedInfo.Sum(i => i.VideoStream.VideoMetadata.Duration.TotalSeconds));
            }

            return(infoToUpdate);
        }
Exemplo n.º 8
0
        public MetadataInfoTreeContainer EditInfo(MetadataInfoTreeContainer infoToUpdate, List <MetadataInfoTreeContainer> suppliedInfo)
        {
            if (infoToUpdate.HasVideo && infoToUpdate.VideoStream.VideoMetadata.Duration > Length)
            {
                infoToUpdate.VideoStream.VideoMetadata.Duration = infoToUpdate.VideoStream.VideoMetadata.Duration - Length;
            }

            if (infoToUpdate.HasAudio && infoToUpdate.AudioStream.AudioMetadata.Duration > Length)
            {
                infoToUpdate.AudioStream.AudioMetadata.Duration = infoToUpdate.AudioStream.AudioMetadata.Duration - Length;
            }

            return(infoToUpdate);
        }
Exemplo n.º 9
0
        public MetadataInfoTreeContainer EditInfo(MetadataInfoTreeContainer infoToUpdate, List <MetadataInfoTreeContainer> suppliedInfo)
        {
            var emptyMetadataInfo = MetadataInfo.Create();

            emptyMetadataInfo.VideoMetadata = new VideoStreamMetadata
            {
                Width            = Size.HasValue ? Size.Value.Width : 320,
                Height           = Size.HasValue ? Size.Value.Height : 240,
                AverageFrameRate = Fraction.Create(FrameRate ?? 25, 1),
                RFrameRate       = Fraction.Create(FrameRate ?? 25, 1),
                Duration         = Duration ?? TimeSpan.MaxValue,
                DurationTs       = long.MaxValue,
            };

            return(MetadataInfoTreeContainer.Create(VideoStream.Create(emptyMetadataInfo)));
        }
Exemplo n.º 10
0
        public MetadataInfoTreeContainer EditInfo(MetadataInfoTreeContainer infoToUpdate, List <MetadataInfoTreeContainer> suppliedInfo)
        {
            var startTimeInSeconds = 0D;
            var endTimeInSeconds   = infoToUpdate.VideoStream.Duration.TotalSeconds;

            if (End.HasValue)
            {
                endTimeInSeconds = End.Value;
            }
            else if (EndFrame.HasValue)
            {
                endTimeInSeconds = (double)EndFrame.Value / (double)infoToUpdate.VideoStream.FrameRate.ToDouble();
            }
            else if (EndPts.HasValue)
            {
                endTimeInSeconds = (double)EndPts.Value / (double)infoToUpdate.VideoStream.Timebase.ToDouble();
            }

            if (Start.HasValue)
            {
                startTimeInSeconds = Start.Value;
            }
            else if (StartFrame.HasValue)
            {
                startTimeInSeconds = (double)StartFrame.Value / (double)infoToUpdate.VideoStream.FrameRate.ToDouble();
            }
            else if (StartPts.HasValue)
            {
                startTimeInSeconds = (double)StartPts.Value / (double)infoToUpdate.VideoStream.Timebase.ToDouble();
            }

            var timeInSecondsAfterTrim = endTimeInSeconds - startTimeInSeconds;

            if (timeInSecondsAfterTrim < 0)
            {
                timeInSecondsAfterTrim = 0;
            }

            infoToUpdate.VideoStream.Duration = TimeSpan.FromSeconds(timeInSecondsAfterTrim);

            return(infoToUpdate);
        }
Exemplo n.º 11
0
 public MetadataInfoTreeContainer EditInfo(MetadataInfoTreeContainer infoToUpdate, List <MetadataInfoTreeContainer> suppliedInfo)
 {
     return(MetadataInfoTreeContainer.Create(Resource));
 }
Exemplo n.º 12
0
        public MetadataInfoTreeContainer EditInfo(MetadataInfoTreeContainer infoToUpdate, List<MetadataInfoTreeContainer> suppliedInfo)
        {
            infoToUpdate.VideoStream.VideoMetadata.Duration = infoToUpdate.VideoStream.VideoMetadata.Duration - Length;

            return infoToUpdate; 
        }
Exemplo n.º 13
0
        public MetadataInfoTreeContainer EditInfo(MetadataInfoTreeContainer infoToUpdate, List <MetadataInfoTreeContainer> suppliedInfo)
        {
            infoToUpdate.VideoStream.Dimensions = Dimensions;

            return(infoToUpdate);
        }
Exemplo n.º 14
0
        public MetadataInfoTreeContainer EditInfo(MetadataInfoTreeContainer infoToUpdate, List <MetadataInfoTreeContainer> suppliedInfo)
        {
            infoToUpdate.VideoStream.BitRate = Rate * 1000;

            return(infoToUpdate);
        }
Exemplo n.º 15
0
        public MetadataInfoTreeContainer EditInfo(MetadataInfoTreeContainer infoToUpdate, List <MetadataInfoTreeContainer> suppliedInfo)
        {
            long?videoStartTime = null, audioStartTime = null, videoStartTimeTs = null,
                audioStartTimeTs = null, minStartTime = null, minStartTimeTs = null;

            if (infoToUpdate.HasVideo)
            {
                videoStartTime   = infoToUpdate.VideoStream.VideoMetadata.StartTime.Ticks;
                videoStartTimeTs = infoToUpdate.VideoStream.VideoMetadata.StartTimeTs;
                minStartTime     = videoStartTime;
                minStartTimeTs   = videoStartTimeTs;
            }
            if (infoToUpdate.HasAudio)
            {
                audioStartTime   = infoToUpdate.AudioStream.AudioMetadata.StartTime.Ticks;
                audioStartTimeTs = infoToUpdate.AudioStream.AudioMetadata.StartTimeTs;
                minStartTime     = audioStartTime;
                minStartTimeTs   = audioStartTimeTs;
            }
            if (infoToUpdate.HasVideo && infoToUpdate.HasAudio)
            {
                minStartTime   = Math.Min(videoStartTime.Value, audioStartTime.Value);
                minStartTimeTs = Math.Min(videoStartTimeTs.Value, audioStartTimeTs.Value);
            }

            switch (Type)
            {
            case AvoidNegativeTimestampsType.MakeNonNegative:
                if (minStartTimeTs < 0)
                {
                    if (infoToUpdate.HasVideo)
                    {
                        infoToUpdate.VideoStream.VideoMetadata.StartTime   = TimeSpan.FromTicks(videoStartTime.Value - minStartTime.Value);
                        infoToUpdate.VideoStream.VideoMetadata.StartTimeTs = videoStartTimeTs.Value - minStartTimeTs.Value;
                    }
                    if (infoToUpdate.HasAudio)
                    {
                        infoToUpdate.AudioStream.AudioMetadata.StartTime   = TimeSpan.FromTicks(audioStartTime.Value - minStartTime.Value);
                        infoToUpdate.AudioStream.AudioMetadata.StartTimeTs = audioStartTimeTs.Value - minStartTimeTs.Value;
                    }
                }
                break;

            case AvoidNegativeTimestampsType.MakeZero:
                if (minStartTimeTs != 0)
                {
                    if (infoToUpdate.HasVideo)
                    {
                        infoToUpdate.VideoStream.VideoMetadata.StartTime   = TimeSpan.FromTicks(videoStartTime.Value - minStartTime.Value);
                        infoToUpdate.VideoStream.VideoMetadata.StartTimeTs = videoStartTimeTs.Value - minStartTimeTs.Value;
                    }
                    if (infoToUpdate.HasAudio)
                    {
                        infoToUpdate.AudioStream.AudioMetadata.StartTime   = TimeSpan.FromTicks(audioStartTime.Value - minStartTime.Value);
                        infoToUpdate.AudioStream.AudioMetadata.StartTimeTs = audioStartTimeTs.Value - minStartTimeTs.Value;
                    }
                }
                break;
            }

            return(infoToUpdate);
        }
Exemplo n.º 16
0
        public virtual MetadataInfoTreeContainer EditInfo(MetadataInfoTreeContainer infoToUpdate, List <MetadataInfoTreeContainer> suppliedInfo)
        {
            infoToUpdate.VideoStream.VideoMetadata.Duration = suppliedInfo.Min(r => r.VideoStream.VideoMetadata.Duration);

            return(infoToUpdate);
        }