/// <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, AddOnlyList <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> /// Set Sign Color on IAMTimelineComp /// </summary> public static int SetPixelate(ref IAMTimeline m_pTimeline, IAMTimelineComp pComp, long StartTime, long EndTime, int Zoom) { int hr = 0; IAMTimelineObj pTransObj; hr = m_pTimeline.CreateEmptyNode(out pTransObj, TimelineMajorType.Effect); IAMTimelineEffectable aEffectable = (IAMTimelineEffectable)pComp; pTransObj.SetStartStop(StartTime, EndTime); pTransObj.SetSubObjectGUID(new Guid("F67BBA3B-1980-48CB-92BB-CC826BF458E6")); aEffectable.EffectInsBefore(pTransObj, -1); IPropertySetter ipro = (IPropertySetter) new PropertySetter(); DESHelper.AddParameter(ipro, "A2VRatio", Zoom.ToString()); hr = pTransObj.SetPropertySetter(ipro); return(hr); }
/// <summary> /// 实现画中画颜色偏移 /// </summary> /// <param name="m_pTimeline"></param> /// <param name="pComp"></param> /// <param name="StartTime"></param> /// <param name="EndTime"></param> /// <returns></returns> public static int SetAlpha(ref IAMTimeline m_pTimeline, IAMTimelineComp pComp, long StartTime, long EndTime) { int hr = 0; IAMTimelineObj pTransObj; hr = m_pTimeline.CreateEmptyNode(out pTransObj, TimelineMajorType.Effect); IAMTimelineEffectable aEffectable = (IAMTimelineEffectable)pComp; pTransObj.SetStartStop(StartTime, EndTime); pTransObj.SetSubObjectGUID(DESConsts.GUID_EF_Alpha); aEffectable.EffectInsBefore(pTransObj, -1); IPropertySetter ipro = (IPropertySetter) new PropertySetter(); DESHelper.AddParameter(ipro, "alpha", 255); hr = pTransObj.SetPropertySetter(ipro); return(hr); }
/// <summary> /// Insert an effect into an effectable object /// </summary> /// <param name="timeline"></param> /// <param name="effectable"></param> /// <param name="offset"></param> /// <param name="duration"></param> /// <param name="effectDefinition"></param> /// <param name="priority"></param> /// <returns></returns> internal static IAMTimelineObj InsertEffect(IAMTimeline timeline, IAMTimelineEffectable effectable, string name, int priority, double offset, double duration, EffectDefinition effectDefinition) { int hr = 0; long unitsStart = ToUnits(offset); long unitsEnd = ToUnits(offset + duration); IAMTimelineObj effectsObj; hr = timeline.CreateEmptyNode(out effectsObj, TimelineMajorType.Effect); DESError.ThrowExceptionForHR(hr); hr = effectsObj.SetSubObjectGUID(effectDefinition.EffectId); DESError.ThrowExceptionForHR(hr); if (!string.IsNullOrEmpty(name)) { hr = effectsObj.SetUserName(name); DESError.ThrowExceptionForHR(hr); } hr = effectsObj.SetStartStop(unitsStart, unitsEnd); DESError.ThrowExceptionForHR(hr); IPropertySetter propertySetter = (IPropertySetter) new PropertySetter(); PopulatePropertySetter(propertySetter, effectDefinition.Parameters); hr = effectsObj.SetPropertySetter(propertySetter); DESError.ThrowExceptionForHR(hr); hr = effectable.EffectInsBefore(effectsObj, priority); DESError.ThrowExceptionForHR(hr); return(effectsObj); }
/// <summary> /// Set BackGround Effect on IAMTimelineComp /// </summary> public static int SetEffect(ref IAMTimeline m_pTimeline, IAMTimelineComp pComp, string EffectGUID, long starttime, long endtime, Property[] parArr) { IAMTimelineObj pTransObj; int hr = m_pTimeline.CreateEmptyNode(out pTransObj, TimelineMajorType.Effect); IAMTimelineEffectable aEffectable = (IAMTimelineEffectable)pComp; pTransObj.SetStartStop(starttime, endtime); pTransObj.SetSubObjectGUID(new Guid(EffectGUID.ToUpper())); aEffectable.EffectInsBefore(pTransObj, -1); IPropertySetter ipro = (IPropertySetter) new PropertySetter(); if (parArr != null) { foreach (Property pro in parArr) { DESHelper.AddParameter(ipro, pro.Name, pro.Value); } } DESHelper.AddParameter(ipro, "Duration", endtime / DESConsts.UNITS - starttime / DESConsts.UNITS); hr = pTransObj.SetPropertySetter(ipro); return(hr); }
private void Config() { m_ite = m_VideoTrack as IAMTimelineEffectable; }