public IGroup AddAudioGroup(string name, double fps) { OnAddingGroup(); AMMediaType mediaType = null; try { mediaType = MediaTypeTools.GetAudioMediaType(); IGroup group = new Group(this, GroupType.Audio, mediaType, name, fps); _groups.Add(group); AttachHandlers(group); OnAddedGroup(group); return(group); } finally { if (mediaType != null) { DsUtils.FreeAMMediaType(mediaType); } } }
public IClip AddClip(string name, string fileName, GroupMediaType mediaType, InsertPosition position, double offset, double clipStart, double clipEnd, bool manageLifespan) { CheckMediaTypeAgainstGroup(mediaType); OnAddingClip(); if ((clipEnd < 0) && (mediaType == GroupMediaType.Image)) { clipEnd = DefaultImageDisplayDuration + clipStart; } long durationInUnits; var mediaFile = new MediaFile(fileName, manageLifespan); double absoluteOffset = position == InsertPosition.Absolute ? offset : Duration + offset; IList <IDisposable> activeAssistants = null; IAMTimelineSrc timelineSrc = null; try { activeAssistants = FetchAssistants(mediaFile); timelineSrc = CreateMedia(mediaFile, mediaType, TimelineBuilder.ToUnits(absoluteOffset), TimelineBuilder.ToUnits(clipStart), TimelineBuilder.ToUnits(clipEnd), out durationInUnits); } finally { DisposeOfAssistants(activeAssistants); } if (!string.IsNullOrEmpty(name)) { ((IAMTimelineObj)timelineSrc).SetUserName(name); } IClip clip = new Clip(this, _timeline, timelineSrc, name, absoluteOffset, TimelineBuilder.ToSeconds(durationInUnits), clipStart, mediaFile); clip.AddingEffect += clip_BeforeEffectAdded; clip.AddedEffect += clip_AfterEffectAdded; _clips.Add(clip); _virtualClips.AddVirtualClip(clip); OnAddedClip(clip); return(clip); }
/// <summary> /// Creates a des track, wraps it into an ITrack, adds it to a collection and /// returns the new ITrack wrapper. /// </summary> /// <param name="desTimeline"></param> /// <param name="desComposition"></param> /// <param name="tracks"></param> /// <param name="name"></param> /// <param name="priority"></param> /// <returns></returns> internal static ITrack AddTrackToCollection(ITrackContainer container, IAMTimeline desTimeline, IAMTimelineComp desComposition, AddOnlyCollection <ITrack> tracks, string name, int priority) { priority = ReorderPriorities(tracks, priority); ITrack track = new Track(container, desTimeline, CreateTrack(desTimeline, desComposition, name, priority), name, priority); tracks.Add(track); return(track); }
/// <summary> /// Creates a des effect, wraps it into an IEffect, adds it to a collection /// and returns the new IEffect wrapper. /// </summary> /// <param name="desTimeline"></param> /// <param name="desEffectable"></param> /// <param name="effects"></param> /// <param name="name"></param> /// <param name="priority"></param> /// <param name="offset"></param> /// <param name="duration"></param> /// <param name="effectDefinition"></param> /// <returns></returns> internal static IEffect AddEffectToCollection(IEffectContainer container, IAMTimeline desTimeline, IAMTimelineEffectable desEffectable, AddOnlyCollection <IEffect> effects, string name, int priority, double offset, double duration, EffectDefinition effectDefinition) { priority = ReorderPriorities(effects, priority); IAMTimelineObj desEffect = InsertEffect(desTimeline, desEffectable, name, priority, offset, duration, effectDefinition); IEffect effect = new Effect(container, desEffect, name, priority, offset, duration, effectDefinition); effects.Add(effect); return(effect); }
/// <summary> /// Creates a des transition, wraps it into an ITransition, adds it to a collection /// and returns a new ITransition wrapper. /// </summary> /// <param name="desTimeline"></param> /// <param name="transable"></param> /// <param name="transitions"></param> /// <param name="name"></param> /// <param name="offset"></param> /// <param name="duration"></param> /// <param name="transitionDefinition"></param> /// <param name="swapInputs"></param> /// <returns></returns> internal static ITransition AddTransitionToCollection(ITransitionContainer container, IAMTimeline desTimeline, IAMTimelineTransable transable, AddOnlyCollection <ITransition> transitions, string name, double offset, double duration, TransitionDefinition transitionDefinition, bool swapInputs) { CheckForTransitionOveralp(container, offset, duration); IAMTimelineObj desTransition = InsertTransition(desTimeline, transable, name, offset, duration, transitionDefinition, swapInputs); ITransition transition = new Transition(container, desTransition, name, offset, duration, swapInputs, transitionDefinition); transitions.Add(transition); return(transition); }
/// <summary> /// Creates a des composition, wraps it into an IComposition, adds it to a collecton /// and returns the new IComposition wrapper. /// </summary> /// <param name="timeline"></param> /// <param name="desComposition"></param> /// <param name="compositions"></param> /// <param name="name"></param> /// <param name="priority"></param> /// <returns></returns> internal static IComposition AddCompositionToCollection(ICompositionContainer container, IAMTimeline timeline, IAMTimelineComp desComposition, AddOnlyCollection <IComposition> compositions, string name, int priority) { priority = ReorderPriorities(compositions, priority); IComposition composition = new Composition(container, timeline, CreateComposition(timeline, desComposition, name, priority), name, priority); compositions.Add(composition); return(composition); }