private void AddTransitions(Shot shot, CompositeManifestInfo compositeManifestInfo)
        {
            const double Timescale         = 10000000.0;
            SubClipItem  subclipItem       = shot.Source as SubClipItem;
            Item         itemForTransition = subclipItem != null ? subclipItem.RelatedItem : shot.Source;

            if (!(itemForTransition is VideoItem) && !(itemForTransition is AudioItem))
            {
                return;
            }

            AssetType assetType = (itemForTransition is VideoItem) ? AssetType.Video : AssetType.Audio;

            ulong position = (ulong)(shot.TrackAnchor.MarkIn * Timescale);

            compositeManifestInfo.AddTransition(SmoothStreamingManifestGenerator.Models.TransitionType.FadeIn, assetType, position, shot.InTransition.Duration);

            position = (ulong)((shot.TrackAnchor.MarkIn + (shot.SourceAnchor.MarkOut - shot.SourceAnchor.MarkIn) - shot.OutTransition.Duration) * Timescale);
            compositeManifestInfo.AddTransition(SmoothStreamingManifestGenerator.Models.TransitionType.FadeOut, assetType, position, shot.OutTransition.Duration);
        }
 private static void AddTransition(SmoothStreamingManifestGenerator.Models.TransitionType transitionType, AssetType assetType, ulong position, double duration, CompositeManifestInfo compositeManifestInfo)
 {
     compositeManifestInfo.AddTransition(transitionType, assetType, position, duration);
 }