Ejemplo n.º 1
0
        private static                  LineBlock[] InterlacedFrame(TimingConstants timing)
        {
            byte dark = timing.SyncTimes.BlackLevel, sign = 255, sync = 0;

            var synlLine = new[] {
                new LineSegment {
                    Value = sync, Duration = (long)(ps * (0.5 * timing.LineTime - timing.SyncTimes.LineSyncTime))
                },
                new LineSegment {
                    Value = dark, Duration = (long)(ps * timing.SyncTimes.LineSyncTime)
                }
            };
            var synsLine = new[] {
                new LineSegment {
                    Value = dark, Duration = (long)(ps * (0.5 * timing.LineTime - timing.SyncTimes.EquPulseTime))
                },
                new LineSegment {
                    Value = sync, Duration = (long)(ps * timing.SyncTimes.EquPulseTime)
                }
            };
            var pictureLine = new[] {
                new LineSegment {
                    Value = sync, Duration = (long)(ps * timing.SyncTimes.LineSyncTime)
                },
                new LineSegment {
                    Value = dark, Duration = (long)(ps * (timing.SyncTimes.LineBlankingTime - timing.SyncTimes.FrontPorchTime - timing.SyncTimes.LineSyncTime))
                },
                new LineSegment {
                    Value = sign, Duration = (long)(ps * (timing.LineTime - timing.SyncTimes.LineBlankingTime))
                },
                new LineSegment {
                    Value = dark, Duration = (long)(ps * timing.SyncTimes.FrontPorchTime)
                },
            };
            var blankLine = new[] {
                new LineSegment {
                    Value = sync, Duration = (long)(ps * timing.SyncTimes.LineSyncTime)
                },
                new LineSegment {
                    Value = dark, Duration = (long)(ps * (timing.LineTime - timing.SyncTimes.LineSyncTime))
                },
            };

            return(new[] {
                new LineBlock {
                    Count = 5, LineSegments = synlLine
                }, new LineBlock {
                    Count = 5, LineSegments = synsLine
                },
                new LineBlock {
                    Count = 12, LineSegments = blankLine
                },
                new LineBlock {
                    Count = 293, LineSegments = pictureLine, dy = 2, sy = 1
                },
                new LineBlock {
                    Count = 5, LineSegments = synsLine
                }, new LineBlock {
                    Count = 5, LineSegments = synlLine
                }, new LineBlock {
                    Count = 4, LineSegments = synsLine
                },
                new LineBlock {
                    Count = 12, LineSegments = blankLine
                },
                new LineBlock {
                    Count = 293, LineSegments = pictureLine, dy = 2, sy = 0
                },
                new LineBlock {
                    Count = 6, LineSegments = synsLine
                },
            });
        }
Ejemplo n.º 2
0
 private VideoConstants(LineBlock[] lineBlocks, TimingConstants timing, bool interlaced)
 {
     LineBlocks       = lineBlocks;
     Timing           = timing;
     InterlacedScaler = interlaced ? 2 : 1;
 }