Microsoft DirectX 8.0

IAMTimelineEffectable Interface

Provides methods for adding effects to a timeline object in Microsoft® DirectShow® Editing Services (DES), and for manipulating the effects on an object. All objects that can have effects applied to them implement this interface; this includes sources, tracks, and compositions.

An object that implements this interface can have any number of effects. For each object, the render engine applies its effects in order of priority, starting with priority level 0.

Requirements

Requires Qedit.h.

Methods in Vtable Order

IUnknown methodsDescription
QueryInterfaceRetrieves pointers to supported interfaces.
AddRefIncrements the reference count.
ReleaseDecrements the reference count.
IAMTimelineEffectable MethodsDescription
EffectInsBeforeInserts an effect into the object at the specified priority level.
EffectSwapPrioritiesSwitches the priority levels of two effects.
EffectGetCountRetrieves the number of effects applied to this object.
GetEffectRetrieves the effect at the specified priority level.

IAMTimelineEffectable::EffectGetCount

IAMTimelineEffectable Interface

Retrieves the number of effects applied to this object.

Syntax

HRESULT EffectGetCount(
    long *pCount
);

Parameters

pCount
Pointer to a variable that receives the number of effects.

Return Value

Returns S_OK if successful, or E_POINTER otherwise.

IAMTimelineEffectable::EffectInsBefore

IAMTimelineEffectable Interface

Inserts an effect into the object at the specified priority level.

Syntax

HRESULT EffectInsBefore(
    IAMTimelineObj *pFX,
    long Priority
);

Parameters

pFX
Pointer to the IAMTimelineObj interface of the effect.
Priority
Priority level at which to insert the effect. Use the value –1 to insert the effect at the end of the priority list.

Return Value

Returns S_OK if successful or E_NOTIMPL if the object is not an effect. Otherwise, returns another HRESULT value indicating the cause of the error.

Remarks

The start and stop times of the effect are clipped within the bounds of the object's time range, if necessary.

If there is already an effect at the specified priority level, all the effects from that point on move down the priority list to make room for the new effect.

IAMTimelineEffectable::EffectSwapPriorities

IAMTimelineEffectable Interface

Switches the priority levels of two effects.

Given two priority values, this method swaps the effects at those priorities. When the method returns, the effect that was at the first priority level is at the second priority level, and vice versa.

Syntax

HRESULT EffectSwapPriorities(
    long PriorityA,
    long PriorityB
);

Parameters

PriorityA
First priority level at which to swap effects.
PriorityB
Second priority level at which to swap effects.

Return Value

Returns S_OK if successful, or E_INVALIDARG otherwise.

IAMTimelineEffectable::GetEffect

IAMTimelineEffectable Interface

Retrieves the effect at the specified priority level.

Syntax

HRESULT GetEffect(
    IAMTimelineObj **ppFx,
    long Which
);

Parameters

ppFX
[out] Address of a pointer that receives the effect's IAMTimelineObj interface.
Which
Priority level of the effect to retrieve.

Return Value

Returns an HRESULT value. Possible values include the following:

S_FALSENo effect at the specified priority,
S_OKSuccess.
E_POINTERNULL pointer argument.

Remarks

If the method returns S_OK, the IAMTimelineObj interface that it returns has an outstanding reference count. Be sure to release the interface when you are finished using it.