Example #1
0
        /// <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);
        }
Example #2
0
        /// <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);
        }
Example #3
0
        /// <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);
        }
Example #4
0
        /// <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);
        }
Example #5
0
        /// <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;
 }