|
|
@ -93,7 +93,8 @@ public abstract class PlayoutModeSchedulerBase<T> : IPlayoutModeScheduler<T> whe |
|
|
|
InPoint = TimeSpan.Zero, |
|
|
|
InPoint = TimeSpan.Zero, |
|
|
|
OutPoint = itemDuration, |
|
|
|
OutPoint = itemDuration, |
|
|
|
FillerKind = FillerKind.Tail, |
|
|
|
FillerKind = FillerKind.Tail, |
|
|
|
GuideGroup = nextState.NextGuideGroup |
|
|
|
GuideGroup = nextState.NextGuideGroup, |
|
|
|
|
|
|
|
DisableWatermarks = !scheduleItem.TailFiller.AllowWatermarks |
|
|
|
}; |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
newItems.Add(playoutItem); |
|
|
|
newItems.Add(playoutItem); |
|
|
@ -135,7 +136,8 @@ public abstract class PlayoutModeSchedulerBase<T> : IPlayoutModeScheduler<T> whe |
|
|
|
InPoint = TimeSpan.Zero, |
|
|
|
InPoint = TimeSpan.Zero, |
|
|
|
OutPoint = TimeSpan.Zero, |
|
|
|
OutPoint = TimeSpan.Zero, |
|
|
|
GuideGroup = nextState.NextGuideGroup, |
|
|
|
GuideGroup = nextState.NextGuideGroup, |
|
|
|
FillerKind = FillerKind.Fallback |
|
|
|
FillerKind = FillerKind.Fallback, |
|
|
|
|
|
|
|
DisableWatermarks = !scheduleItem.FallbackFiller.AllowWatermarks |
|
|
|
}; |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
newItems.Add(playoutItem); |
|
|
|
newItems.Add(playoutItem); |
|
|
@ -341,12 +343,22 @@ public abstract class PlayoutModeSchedulerBase<T> : IPlayoutModeScheduler<T> whe |
|
|
|
case FillerMode.Duration when filler.Duration.HasValue: |
|
|
|
case FillerMode.Duration when filler.Duration.HasValue: |
|
|
|
IMediaCollectionEnumerator e1 = enumerators[CollectionKey.ForFillerPreset(filler)]; |
|
|
|
IMediaCollectionEnumerator e1 = enumerators[CollectionKey.ForFillerPreset(filler)]; |
|
|
|
result.AddRange( |
|
|
|
result.AddRange( |
|
|
|
AddDurationFiller(playoutBuilderState, e1, filler.Duration.Value, FillerKind.PreRoll)); |
|
|
|
AddDurationFiller( |
|
|
|
|
|
|
|
playoutBuilderState, |
|
|
|
|
|
|
|
e1, |
|
|
|
|
|
|
|
filler.Duration.Value, |
|
|
|
|
|
|
|
FillerKind.PreRoll, |
|
|
|
|
|
|
|
filler.AllowWatermarks)); |
|
|
|
break; |
|
|
|
break; |
|
|
|
case FillerMode.Count when filler.Count.HasValue: |
|
|
|
case FillerMode.Count when filler.Count.HasValue: |
|
|
|
IMediaCollectionEnumerator e2 = enumerators[CollectionKey.ForFillerPreset(filler)]; |
|
|
|
IMediaCollectionEnumerator e2 = enumerators[CollectionKey.ForFillerPreset(filler)]; |
|
|
|
result.AddRange( |
|
|
|
result.AddRange( |
|
|
|
AddCountFiller(playoutBuilderState, e2, filler.Count.Value, FillerKind.PreRoll)); |
|
|
|
AddCountFiller( |
|
|
|
|
|
|
|
playoutBuilderState, |
|
|
|
|
|
|
|
e2, |
|
|
|
|
|
|
|
filler.Count.Value, |
|
|
|
|
|
|
|
FillerKind.PreRoll, |
|
|
|
|
|
|
|
filler.AllowWatermarks)); |
|
|
|
break; |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
@ -374,7 +386,8 @@ public abstract class PlayoutModeSchedulerBase<T> : IPlayoutModeScheduler<T> whe |
|
|
|
playoutBuilderState, |
|
|
|
playoutBuilderState, |
|
|
|
e1, |
|
|
|
e1, |
|
|
|
filler.Duration.Value, |
|
|
|
filler.Duration.Value, |
|
|
|
FillerKind.MidRoll)); |
|
|
|
FillerKind.MidRoll, |
|
|
|
|
|
|
|
filler.AllowWatermarks)); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -391,7 +404,8 @@ public abstract class PlayoutModeSchedulerBase<T> : IPlayoutModeScheduler<T> whe |
|
|
|
playoutBuilderState, |
|
|
|
playoutBuilderState, |
|
|
|
e2, |
|
|
|
e2, |
|
|
|
filler.Count.Value, |
|
|
|
filler.Count.Value, |
|
|
|
FillerKind.MidRoll)); |
|
|
|
FillerKind.MidRoll, |
|
|
|
|
|
|
|
filler.AllowWatermarks)); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -408,12 +422,22 @@ public abstract class PlayoutModeSchedulerBase<T> : IPlayoutModeScheduler<T> whe |
|
|
|
case FillerMode.Duration when filler.Duration.HasValue: |
|
|
|
case FillerMode.Duration when filler.Duration.HasValue: |
|
|
|
IMediaCollectionEnumerator e1 = enumerators[CollectionKey.ForFillerPreset(filler)]; |
|
|
|
IMediaCollectionEnumerator e1 = enumerators[CollectionKey.ForFillerPreset(filler)]; |
|
|
|
result.AddRange( |
|
|
|
result.AddRange( |
|
|
|
AddDurationFiller(playoutBuilderState, e1, filler.Duration.Value, FillerKind.PostRoll)); |
|
|
|
AddDurationFiller( |
|
|
|
|
|
|
|
playoutBuilderState, |
|
|
|
|
|
|
|
e1, |
|
|
|
|
|
|
|
filler.Duration.Value, |
|
|
|
|
|
|
|
FillerKind.PostRoll, |
|
|
|
|
|
|
|
filler.AllowWatermarks)); |
|
|
|
break; |
|
|
|
break; |
|
|
|
case FillerMode.Count when filler.Count.HasValue: |
|
|
|
case FillerMode.Count when filler.Count.HasValue: |
|
|
|
IMediaCollectionEnumerator e2 = enumerators[CollectionKey.ForFillerPreset(filler)]; |
|
|
|
IMediaCollectionEnumerator e2 = enumerators[CollectionKey.ForFillerPreset(filler)]; |
|
|
|
result.AddRange( |
|
|
|
result.AddRange( |
|
|
|
AddCountFiller(playoutBuilderState, e2, filler.Count.Value, FillerKind.PostRoll)); |
|
|
|
AddCountFiller( |
|
|
|
|
|
|
|
playoutBuilderState, |
|
|
|
|
|
|
|
e2, |
|
|
|
|
|
|
|
filler.Count.Value, |
|
|
|
|
|
|
|
FillerKind.PostRoll, |
|
|
|
|
|
|
|
filler.AllowWatermarks)); |
|
|
|
break; |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
@ -464,7 +488,8 @@ public abstract class PlayoutModeSchedulerBase<T> : IPlayoutModeScheduler<T> whe |
|
|
|
playoutBuilderState, |
|
|
|
playoutBuilderState, |
|
|
|
pre1, |
|
|
|
pre1, |
|
|
|
remainingToFill, |
|
|
|
remainingToFill, |
|
|
|
FillerKind.PreRoll)); |
|
|
|
FillerKind.PreRoll, |
|
|
|
|
|
|
|
padFiller.AllowWatermarks)); |
|
|
|
totalDuration = |
|
|
|
totalDuration = |
|
|
|
TimeSpan.FromMilliseconds(result.Sum(pi => (pi.Finish - pi.Start).TotalMilliseconds)); |
|
|
|
TimeSpan.FromMilliseconds(result.Sum(pi => (pi.Finish - pi.Start).TotalMilliseconds)); |
|
|
|
remainingToFill = targetTime - totalDuration - playoutItem.StartOffset; |
|
|
|
remainingToFill = targetTime - totalDuration - playoutItem.StartOffset; |
|
|
@ -487,7 +512,8 @@ public abstract class PlayoutModeSchedulerBase<T> : IPlayoutModeScheduler<T> whe |
|
|
|
playoutBuilderState, |
|
|
|
playoutBuilderState, |
|
|
|
mid1, |
|
|
|
mid1, |
|
|
|
remainingToFill, |
|
|
|
remainingToFill, |
|
|
|
FillerKind.MidRoll)); |
|
|
|
FillerKind.MidRoll, |
|
|
|
|
|
|
|
padFiller.AllowWatermarks)); |
|
|
|
TimeSpan average = effectiveChapters.Count == 0 |
|
|
|
TimeSpan average = effectiveChapters.Count == 0 |
|
|
|
? remainingToFill |
|
|
|
? remainingToFill |
|
|
|
: remainingToFill / (effectiveChapters.Count - 1); |
|
|
|
: remainingToFill / (effectiveChapters.Count - 1); |
|
|
@ -540,7 +566,8 @@ public abstract class PlayoutModeSchedulerBase<T> : IPlayoutModeScheduler<T> whe |
|
|
|
playoutBuilderState, |
|
|
|
playoutBuilderState, |
|
|
|
post1, |
|
|
|
post1, |
|
|
|
remainingToFill, |
|
|
|
remainingToFill, |
|
|
|
FillerKind.PostRoll)); |
|
|
|
FillerKind.PostRoll, |
|
|
|
|
|
|
|
padFiller.AllowWatermarks)); |
|
|
|
totalDuration = |
|
|
|
totalDuration = |
|
|
|
TimeSpan.FromMilliseconds(result.Sum(pi => (pi.Finish - pi.Start).TotalMilliseconds)); |
|
|
|
TimeSpan.FromMilliseconds(result.Sum(pi => (pi.Finish - pi.Start).TotalMilliseconds)); |
|
|
|
remainingToFill = targetTime - totalDuration - playoutItem.StartOffset; |
|
|
|
remainingToFill = targetTime - totalDuration - playoutItem.StartOffset; |
|
|
@ -576,7 +603,8 @@ public abstract class PlayoutModeSchedulerBase<T> : IPlayoutModeScheduler<T> whe |
|
|
|
PlayoutBuilderState playoutBuilderState, |
|
|
|
PlayoutBuilderState playoutBuilderState, |
|
|
|
IMediaCollectionEnumerator enumerator, |
|
|
|
IMediaCollectionEnumerator enumerator, |
|
|
|
int count, |
|
|
|
int count, |
|
|
|
FillerKind fillerKind) |
|
|
|
FillerKind fillerKind, |
|
|
|
|
|
|
|
bool allowWatermarks) |
|
|
|
{ |
|
|
|
{ |
|
|
|
var result = new List<PlayoutItem>(); |
|
|
|
var result = new List<PlayoutItem>(); |
|
|
|
|
|
|
|
|
|
|
@ -594,7 +622,8 @@ public abstract class PlayoutModeSchedulerBase<T> : IPlayoutModeScheduler<T> whe |
|
|
|
InPoint = TimeSpan.Zero, |
|
|
|
InPoint = TimeSpan.Zero, |
|
|
|
OutPoint = itemDuration, |
|
|
|
OutPoint = itemDuration, |
|
|
|
GuideGroup = playoutBuilderState.NextGuideGroup, |
|
|
|
GuideGroup = playoutBuilderState.NextGuideGroup, |
|
|
|
FillerKind = fillerKind |
|
|
|
FillerKind = fillerKind, |
|
|
|
|
|
|
|
DisableWatermarks = !allowWatermarks |
|
|
|
}; |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
result.Add(playoutItem); |
|
|
|
result.Add(playoutItem); |
|
|
@ -609,7 +638,8 @@ public abstract class PlayoutModeSchedulerBase<T> : IPlayoutModeScheduler<T> whe |
|
|
|
PlayoutBuilderState playoutBuilderState, |
|
|
|
PlayoutBuilderState playoutBuilderState, |
|
|
|
IMediaCollectionEnumerator enumerator, |
|
|
|
IMediaCollectionEnumerator enumerator, |
|
|
|
TimeSpan duration, |
|
|
|
TimeSpan duration, |
|
|
|
FillerKind fillerKind) |
|
|
|
FillerKind fillerKind, |
|
|
|
|
|
|
|
bool allowWatermarks) |
|
|
|
{ |
|
|
|
{ |
|
|
|
var result = new List<PlayoutItem>(); |
|
|
|
var result = new List<PlayoutItem>(); |
|
|
|
|
|
|
|
|
|
|
@ -632,7 +662,8 @@ public abstract class PlayoutModeSchedulerBase<T> : IPlayoutModeScheduler<T> whe |
|
|
|
InPoint = TimeSpan.Zero, |
|
|
|
InPoint = TimeSpan.Zero, |
|
|
|
OutPoint = itemDuration, |
|
|
|
OutPoint = itemDuration, |
|
|
|
GuideGroup = playoutBuilderState.NextGuideGroup, |
|
|
|
GuideGroup = playoutBuilderState.NextGuideGroup, |
|
|
|
FillerKind = fillerKind |
|
|
|
FillerKind = fillerKind, |
|
|
|
|
|
|
|
DisableWatermarks = !allowWatermarks |
|
|
|
}; |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
result.Add(playoutItem); |
|
|
|
result.Add(playoutItem); |
|
|
@ -670,7 +701,8 @@ public abstract class PlayoutModeSchedulerBase<T> : IPlayoutModeScheduler<T> whe |
|
|
|
InPoint = TimeSpan.Zero, |
|
|
|
InPoint = TimeSpan.Zero, |
|
|
|
OutPoint = TimeSpan.Zero, |
|
|
|
OutPoint = TimeSpan.Zero, |
|
|
|
GuideGroup = playoutBuilderState.NextGuideGroup, |
|
|
|
GuideGroup = playoutBuilderState.NextGuideGroup, |
|
|
|
FillerKind = FillerKind.Fallback |
|
|
|
FillerKind = FillerKind.Fallback, |
|
|
|
|
|
|
|
DisableWatermarks = !scheduleItem.FallbackFiller.AllowWatermarks |
|
|
|
}; |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
enumerator.MoveNext(); |
|
|
|
enumerator.MoveNext(); |
|
|
|