pipl

Struct OutFlags

source
pub struct OutFlags(/* private fields */);
Expand description

The out_flags field of the OutData can be set to an OR-ed combination of these flags to communicate various things to the driver program.

Implementations§

source§

impl OutFlags

source

pub const None: Self = _

This is the “empty” setting – no outflags.

source

pub const KeepResourceOpen: Self = _

Obsoleted in AE 2015 (does nothing when set).

Set this flag if your effect expects its Macintosh resource fork to be open at any time other than global setup. Note that this does not mean that the resource fork will be kept open at all times, just whenever the effect is being executed.

source

pub const WideTimeInput: Self = _

Set this flag if the effect calls get_param to inquire a parameter at a time besides the current one (e.g. to get the previous video frame). This should be sent, if it is going to be sent, at PF_Cmd_GLOBAL_SETUP. Can be over-ridden dynamically during PF_Cmd_QUERY_DYNAMIC_FLAGS.

As of AE10, this flag is no longer recommended. It still works the same way and is safe to set, but there’s a more efficient option. See PF_OutFlag2_AUTOMATIC_WIDE_TIME_INPUT.

source

pub const NonParamVary: Self = _

Set this if the effect uses information other than the parameters in the param list to generate its output at the current time. For instance, if the effect uses the current time of the frame or some random value to decide the output, set this flag. This flag should be sent at PF_Cmd_GLOBAL_SETUP. If the effect produces changing frames when applied to a still image and all parameters are constant, that’s a sure sign that this bit should be set (e.g. Wave Warp). Can be over-ridden dynamically during PF_Cmd_QUERY_DYNAMIC_FLAGS.

source

pub const SequenceDataNeedsFlattening: Self = _

When you allocate a sequence data handle, the app may write the handle out to disk and reuse it later. Pass this flag if the handle is not “flat” (i.e. has pointers or handles hanging off of it). Basically, this gives you a chance to alter the handle contents before it is written out to disk, so you won’t get invalid handles or pointers. Once you have flattened a handle, you will get an opportunity to un-flatten it before the effect needs to continue. For sequence data, you will be invoked with a PF_Cmd_SEQUENCE_RESETUP call. You should store a boolean at a common offset in your unflattened and flattened data that says whether the data is flat or not. If you get a PF_Cmd_SEQUENCE_RESETUP and the boolean indicated the data is flattened, you should unflatten the data, free the flattened data handle, and set the sequence_data handle in the PF_OutData. If you ever set the data to NULL when you flatten it, you will NOT get the sequence resetup call to unflatten it. Instead, you may just get a RENDER call with NULL data. Forewarned is forearmed. This flag, indicating if the data will need to be flattened, should be set at PF_Cmd_GLOBAL_SETUP time.

source

pub const IDoDialog: Self = _

Set this is the effect responds to a PF_Cmd_DO_DIALOG, i.e. Does this effect bring up an options dialog box. PF_Cmd_DO_DIALOG is generated when the user presses the Options button on the Effect floater. This flag should be set at PF_Cmd_GLOBAL_SETUP time.

source

pub const UseOutputExtent: Self = _

The output layer is passed with an “extent rect” indicating the area of the layer that actually contains visible image data. If the effect changes its behavior based on the extent rect (for instance, by not iterating over the entire image), set this flag, so the application will know whether having the extent change should cause the frame to re-render. Specify this flag at PF_Cmd_GLOBAL_SETUP.

source

pub const SendDoDialog: Self = _

Some filters need their options dialog box to be brought up at least once to be valid. You can set this flag, and the driver app will automatically send a PF_Cmd_DO_DIALOG to the effect when it is applied. The DO_DIALOG will be sent after PF_Cmd_SEQUENCE_SETUP. This flag should be set in PF_Cmd_SEQUENCE_SETUP if it is going to be set.

source

pub const DisplayErrorMessage: Self = _

Whenever the return_msg field in the PF_OutData is set to a string, After Effects will bring up a simple dialog box containing that string. If you set this flag, the dialog box will be made to look like an error message dialog box. If you don’t set this flag, it will be an undecorated dialog box. Using this flag, an effects module can have and display its own error messages and not worry about the code for dialog boxes – the program will do it for you. This flag can be sent after any command.

source

pub const IExpandBuffer: Self = _

Starting with After Effects 2.0, effects will be able to expand their buffers beyond the current layer’s dimensions. This has always been part of the PF specification, but as an extra precaution (and hint to the AE rendering engine) set this flag at PF_Cmd_GLOBAL_SETUP if you plan to expand your buffer.

source

pub const PixIndependent: Self = _

Set this flag if the output at a given pixel is not dependent on the values of the pixels around it. If this is set, the pixels After Effects does not care about (because of field rendering, for example) could be filled with garbage colors. Please set this flag at PF_Cmd_GLOBAL_SETUP. Can be over-ridden dynamically during PF_Cmd_QUERY_DYNAMIC_FLAGS.

source

pub const IWriteInputBuffer: Self = _

Set this flag if your effect would like to write into the input buffer. This can be useful if you need an scratch buffer, but it also invalidates some speedups in the AE rendering pipeline, so use it with some discretion. Please set this flag at PF_Cmd_GLOBAL_SETUP.

source

pub const IShrinkBuffer: Self = _

Set this flag if you can shrink your buffer based on the extent-rects passed to you in order to be more memory efficient.

source

pub const WorksInPlace: Self = _

source

pub const CustomUI: Self = _

This flag must be set if your effect has a custom UI in the Effect Controls Window, Layer Window or Comp Window.

source

pub const RefreshUI: Self = _

Can be returned from PF_Cmd_EVENT, PF_Cmd_RENDER, and PF_Cmd_DO_DIALOG. Causes the effects control window, layer window, and comp window to be re-drawn.

source

pub const NopRender: Self = _

Set this flag in PF_Cmd_GLOBAL_SETUP if the render would never result in changes to the source image (or audio?). For example, an expression control would set this.

source

pub const IUseShutterAngle: Self = _

Must be set at PF_Cmd_GLOBAL_SETUP time if the effect uses the shutter_angle or the shutter_phase. Can be over-ridden dynamically during PF_Cmd_QUERY_DYNAMIC_FLAGS.

source

pub const IUseAudio: Self = _

Must be set at PF_Cmd_GLOBAL_SETUP time for a visual effect that calls the audio checkout calls.

source

pub const IAmObsolete: Self = _

Set at PF_Cmd_GLOBAL_SETUP time for effects that don’t want to appear in the AE Effects menu (but will still be invoked if you load a project that has an old copy of the effect applied).

source

pub const ForceRerender: Self = _

Set at PF_Cmd_EVENT if the effect modified sequence data, or did anything else that requires the effect needs to re-render. Note that setting PF_ChangeFlag_CHANGED_VALUE automatically causes a re-render, so don’t worry about setting PF_OutFlag_FORCE_RERENDER in that case. Also, I_MIX_GUID_DEPENDENCIES can be used to trigger a rerender on dependant changes if sequence_data has not been changed.

IMPORTANT: FORCE_RERENDER should be used as a last resort. Long term we should be eliminating the need for this because it causes forced cache invalidation that doesn’t work well with undo. Once we have the full set of APIs in place needed to manage render state, we will be able to deprecate this. Prefer using ARB data + CHANGED_VALUE or I_MIX_GUID_DEPENDENCIES when possible instead.

In 13.5 the split between a UI and render threads means that FORCE_RERENDER will now also have the needed side effect of copying sequence_data state to the render project. This can be expensive if the sequence_data is large. Support GET_FLATTENED_SEQUENCE_DATA to prevent deallocation of your sequence_data, which can help. GET_FLATTENED_SEQUENCE_DATA support is required for FORCE_RERENDER use in custom mouse/key events.

source

pub const PiplOverridesOutdataOutflags: Self = _

Valid only for setting in your PiPL. When set out_flags will be ignored at PF_Cmd_GLOBAL_SETUP time (& thus don’t need to match).

source

pub const IHaveExternalDependencies: Self = _

Set this flag at PF_Cmd_GLOBAL_SETUP time if the effect has dependencies that the user should know about before transporting their project to a different machine. For example, dependencies on an installed font, or on an external file. If set, the effect will receive a PF_Cmd_GET_EXTERNAL_DEPENDENCIES request, where the extra param will be a PF_ExtDependenciesExtra, and the effect should report its information based on the given sequence_data.

source

pub const DeepColorAware: Self = _

Marks the plugin as aware of 16-bpc pixels. This is a hint to the host that the plugin can handle 16-bpc pixels.

source

pub const SendUpdateParamsUI: Self = _

Set this flag at PF_Cmd_GLOBAL_SETUP time if you want to receive PF_Cmd_UPDATE_PARAMS_UI messages.

source

pub const AudioFloatOnly: Self = _

Set this flag if you only want to receive PF_SIGNED_FLOAT data when processing audio data. Requires PF_OutFlag_AUDIO_EFFECT_TOO or PF_OutFlag_AUDIO_EFFECT_ONLY.

source

pub const AudioIir: Self = _

Set this flag at PF_Cmd_GLOBAL_SETUP time if you are an Infinite-Impulse-Response audio filter (i.e. your output at a given time depends on your output from previous times).

source

pub const ISynthesizeAudio: Self = _

Set this flag at PF_Cmd_GLOBAL_SETUP time if you generate audio even when handed silence. Requires PF_OutFlag_AUDIO_EFFECT_TOO or PF_OutFlag_AUDIO_EFFECT_ONLY.

source

pub const AudioEffectToo: Self = _

Must be set at PF_Cmd_GLOBAL_SETUP time for an effect that wants to filter the audio too (as opposed to just reading the audio).

source

pub const AudioEffectOnly: Self = _

Must be set at PF_Cmd_GLOBAL_SETUP time for an effect that only filters audio (no video).

source§

impl OutFlags

source

pub const fn empty() -> Self

Get a flags value with all bits unset.

source

pub const fn all() -> Self

Get a flags value with all known bits set.

source

pub const fn bits(&self) -> u32

Get the underlying bits value.

The returned value is exactly the bits set in this flags value.

source

pub const fn from_bits(bits: u32) -> Option<Self>

Convert from a bits value.

This method will return None if any unknown bits are set.

source

pub const fn from_bits_truncate(bits: u32) -> Self

Convert from a bits value, unsetting any unknown bits.

source

pub const fn from_bits_retain(bits: u32) -> Self

Convert from a bits value exactly.

source

pub fn from_name(name: &str) -> Option<Self>

Get a flags value with the bits of a flag with the given name set.

This method will return None if name is empty or doesn’t correspond to any named flag.

source

pub const fn is_empty(&self) -> bool

Whether all bits in this flags value are unset.

source

pub const fn is_all(&self) -> bool

Whether all known bits in this flags value are set.

source

pub const fn intersects(&self, other: Self) -> bool

Whether any set bits in a source flags value are also set in a target flags value.

source

pub const fn contains(&self, other: Self) -> bool

Whether all set bits in a source flags value are also set in a target flags value.

source

pub fn insert(&mut self, other: Self)

The bitwise or (|) of the bits in two flags values.

source

pub fn remove(&mut self, other: Self)

The intersection of a source flags value with the complement of a target flags value (&!).

This method is not equivalent to self & !other when other has unknown bits set. remove won’t truncate other, but the ! operator will.

source

pub fn toggle(&mut self, other: Self)

The bitwise exclusive-or (^) of the bits in two flags values.

source

pub fn set(&mut self, other: Self, value: bool)

Call insert when value is true or remove when value is false.

source

pub const fn intersection(self, other: Self) -> Self

The bitwise and (&) of the bits in two flags values.

source

pub const fn union(self, other: Self) -> Self

The bitwise or (|) of the bits in two flags values.

source

pub const fn difference(self, other: Self) -> Self

The intersection of a source flags value with the complement of a target flags value (&!).

This method is not equivalent to self & !other when other has unknown bits set. difference won’t truncate other, but the ! operator will.

source

pub const fn symmetric_difference(self, other: Self) -> Self

The bitwise exclusive-or (^) of the bits in two flags values.

source

pub const fn complement(self) -> Self

The bitwise negation (!) of the bits in a flags value, truncating the result.

source§

impl OutFlags

source

pub const fn iter(&self) -> Iter<OutFlags>

Yield a set of contained flags values.

Each yielded flags value will correspond to a defined named flag. Any unknown bits will be yielded together as a final flags value.

source

pub const fn iter_names(&self) -> IterNames<OutFlags>

Yield a set of contained named flags values.

This method is like iter, except only yields bits in contained named flags. Any unknown bits, or bits not corresponding to a contained flag will not be yielded.

Trait Implementations§

source§

impl Binary for OutFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl BitAnd for OutFlags

source§

fn bitand(self, other: Self) -> Self

The bitwise and (&) of the bits in two flags values.

source§

type Output = OutFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for OutFlags

source§

fn bitand_assign(&mut self, other: Self)

The bitwise and (&) of the bits in two flags values.

source§

impl BitOr for OutFlags

source§

fn bitor(self, other: OutFlags) -> Self

The bitwise or (|) of the bits in two flags values.

source§

type Output = OutFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for OutFlags

source§

fn bitor_assign(&mut self, other: Self)

The bitwise or (|) of the bits in two flags values.

source§

impl BitXor for OutFlags

source§

fn bitxor(self, other: Self) -> Self

The bitwise exclusive-or (^) of the bits in two flags values.

source§

type Output = OutFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for OutFlags

source§

fn bitxor_assign(&mut self, other: Self)

The bitwise exclusive-or (^) of the bits in two flags values.

source§

impl Debug for OutFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Extend<OutFlags> for OutFlags

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

The bitwise or (|) of the bits in each flags value.

source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl Flags for OutFlags

source§

const FLAGS: &'static [Flag<OutFlags>] = _

The set of defined flags.
source§

type Bits = u32

The underlying bits type.
source§

fn bits(&self) -> u32

Get the underlying bits value. Read more
source§

fn from_bits_retain(bits: u32) -> OutFlags

Convert from a bits value exactly.
source§

fn empty() -> Self

Get a flags value with all bits unset.
source§

fn all() -> Self

Get a flags value with all known bits set.
source§

fn from_bits(bits: Self::Bits) -> Option<Self>

Convert from a bits value. Read more
source§

fn from_bits_truncate(bits: Self::Bits) -> Self

Convert from a bits value, unsetting any unknown bits.
source§

fn from_name(name: &str) -> Option<Self>

Get a flags value with the bits of a flag with the given name set. Read more
source§

fn iter(&self) -> Iter<Self>

Yield a set of contained flags values. Read more
source§

fn iter_names(&self) -> IterNames<Self>

Yield a set of contained named flags values. Read more
source§

fn is_empty(&self) -> bool

Whether all bits in this flags value are unset.
source§

fn is_all(&self) -> bool

Whether all known bits in this flags value are set.
source§

fn intersects(&self, other: Self) -> bool
where Self: Sized,

Whether any set bits in a source flags value are also set in a target flags value.
source§

fn contains(&self, other: Self) -> bool
where Self: Sized,

Whether all set bits in a source flags value are also set in a target flags value.
source§

fn insert(&mut self, other: Self)
where Self: Sized,

The bitwise or (|) of the bits in two flags values.
source§

fn remove(&mut self, other: Self)
where Self: Sized,

The intersection of a source flags value with the complement of a target flags value (&!). Read more
source§

fn toggle(&mut self, other: Self)
where Self: Sized,

The bitwise exclusive-or (^) of the bits in two flags values.
source§

fn set(&mut self, other: Self, value: bool)
where Self: Sized,

Call Flags::insert when value is true or Flags::remove when value is false.
source§

fn intersection(self, other: Self) -> Self

The bitwise and (&) of the bits in two flags values.
source§

fn union(self, other: Self) -> Self

The bitwise or (|) of the bits in two flags values.
source§

fn difference(self, other: Self) -> Self

The intersection of a source flags value with the complement of a target flags value (&!). Read more
source§

fn symmetric_difference(self, other: Self) -> Self

The bitwise exclusive-or (^) of the bits in two flags values.
source§

fn complement(self) -> Self

The bitwise negation (!) of the bits in a flags value, truncating the result.
source§

impl FromIterator<OutFlags> for OutFlags

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

The bitwise or (|) of the bits in each flags value.

source§

impl IntoIterator for OutFlags

source§

type Item = OutFlags

The type of the elements being iterated over.
source§

type IntoIter = Iter<OutFlags>

Which kind of iterator are we turning this into?
source§

fn into_iter(self) -> Self::IntoIter

Creates an iterator from a value. Read more
source§

impl LowerHex for OutFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Not for OutFlags

source§

fn not(self) -> Self

The bitwise negation (!) of the bits in a flags value, truncating the result.

source§

type Output = OutFlags

The resulting type after applying the ! operator.
source§

impl Octal for OutFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl PublicFlags for OutFlags

source§

type Primitive = u32

The type of the underlying storage.
source§

type Internal = InternalBitFlags

The type of the internal field on the generated flags type.
source§

impl Sub for OutFlags

source§

fn sub(self, other: Self) -> Self

The intersection of a source flags value with the complement of a target flags value (&!).

This method is not equivalent to self & !other when other has unknown bits set. difference won’t truncate other, but the ! operator will.

source§

type Output = OutFlags

The resulting type after applying the - operator.
source§

impl SubAssign for OutFlags

source§

fn sub_assign(&mut self, other: Self)

The intersection of a source flags value with the complement of a target flags value (&!).

This method is not equivalent to self & !other when other has unknown bits set. difference won’t truncate other, but the ! operator will.

source§

impl UpperHex for OutFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.