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
impl OutFlags
sourcepub const KeepResourceOpen: Self = _
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.
sourcepub const WideTimeInput: Self = _
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.
sourcepub const NonParamVary: Self = _
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.
sourcepub const SequenceDataNeedsFlattening: Self = _
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.
sourcepub const IDoDialog: Self = _
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.
sourcepub const UseOutputExtent: Self = _
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.
sourcepub const SendDoDialog: Self = _
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.
sourcepub const DisplayErrorMessage: Self = _
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.
sourcepub const IExpandBuffer: Self = _
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.
sourcepub const PixIndependent: Self = _
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.
sourcepub const IWriteInputBuffer: Self = _
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.
sourcepub const IShrinkBuffer: Self = _
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.
pub const WorksInPlace: Self = _
sourcepub const CustomUI: Self = _
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.
sourcepub const RefreshUI: Self = _
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.
sourcepub const NopRender: Self = _
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.
sourcepub const IUseShutterAngle: Self = _
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.
sourcepub const IUseAudio: Self = _
pub const IUseAudio: Self = _
Must be set at PF_Cmd_GLOBAL_SETUP time for a visual effect that calls the audio checkout calls.
sourcepub const IAmObsolete: Self = _
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).
sourcepub const ForceRerender: Self = _
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.
sourcepub const PiplOverridesOutdataOutflags: Self = _
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).
sourcepub const IHaveExternalDependencies: Self = _
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.
sourcepub const DeepColorAware: Self = _
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.
sourcepub const SendUpdateParamsUI: Self = _
pub const SendUpdateParamsUI: Self = _
Set this flag at PF_Cmd_GLOBAL_SETUP time if you want to receive PF_Cmd_UPDATE_PARAMS_UI messages.
sourcepub const AudioFloatOnly: Self = _
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.
sourcepub const AudioIir: Self = _
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).
sourcepub const ISynthesizeAudio: Self = _
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.
sourcepub const AudioEffectToo: Self = _
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).
sourcepub const AudioEffectOnly: Self = _
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
impl OutFlags
sourcepub const fn bits(&self) -> u32
pub const fn bits(&self) -> u32
Get the underlying bits value.
The returned value is exactly the bits set in this flags value.
sourcepub const fn from_bits(bits: u32) -> Option<Self>
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.
sourcepub const fn from_bits_truncate(bits: u32) -> Self
pub const fn from_bits_truncate(bits: u32) -> Self
Convert from a bits value, unsetting any unknown bits.
sourcepub const fn from_bits_retain(bits: u32) -> Self
pub const fn from_bits_retain(bits: u32) -> Self
Convert from a bits value exactly.
sourcepub fn from_name(name: &str) -> Option<Self>
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.
sourcepub const fn intersects(&self, other: Self) -> bool
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.
sourcepub const fn contains(&self, other: Self) -> bool
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.
sourcepub fn remove(&mut self, other: Self)
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.
sourcepub fn toggle(&mut self, other: Self)
pub fn toggle(&mut self, other: Self)
The bitwise exclusive-or (^) of the bits in two flags values.
sourcepub fn set(&mut self, other: Self, value: bool)
pub fn set(&mut self, other: Self, value: bool)
Call insert when value is true or remove when value is false.
sourcepub const fn intersection(self, other: Self) -> Self
pub const fn intersection(self, other: Self) -> Self
The bitwise and (&) of the bits in two flags values.
sourcepub const fn union(self, other: Self) -> Self
pub const fn union(self, other: Self) -> Self
The bitwise or (|) of the bits in two flags values.
sourcepub const fn difference(self, other: Self) -> Self
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.
sourcepub const fn symmetric_difference(self, other: Self) -> Self
pub const fn symmetric_difference(self, other: Self) -> Self
The bitwise exclusive-or (^) of the bits in two flags values.
sourcepub const fn complement(self) -> Self
pub const fn complement(self) -> Self
The bitwise negation (!) of the bits in a flags value, truncating the result.
source§impl OutFlags
impl OutFlags
sourcepub const fn iter(&self) -> Iter<OutFlags>
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.
sourcepub const fn iter_names(&self) -> IterNames<OutFlags>
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 BitAndAssign for OutFlags
impl BitAndAssign for OutFlags
source§fn bitand_assign(&mut self, other: Self)
fn bitand_assign(&mut self, other: Self)
The bitwise and (&) of the bits in two flags values.
source§impl BitOrAssign for OutFlags
impl BitOrAssign for OutFlags
source§fn bitor_assign(&mut self, other: Self)
fn bitor_assign(&mut self, other: Self)
The bitwise or (|) of the bits in two flags values.
source§impl BitXorAssign for OutFlags
impl BitXorAssign for OutFlags
source§fn bitxor_assign(&mut self, other: Self)
fn bitxor_assign(&mut self, other: Self)
The bitwise exclusive-or (^) of the bits in two flags values.
source§impl Extend<OutFlags> for OutFlags
impl Extend<OutFlags> for OutFlags
source§fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)
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)
fn extend_one(&mut self, item: A)
extend_one)source§fn extend_reserve(&mut self, additional: usize)
fn extend_reserve(&mut self, additional: usize)
extend_one)source§impl Flags for OutFlags
impl Flags for OutFlags
source§fn from_bits_retain(bits: u32) -> OutFlags
fn from_bits_retain(bits: u32) -> OutFlags
source§fn from_bits_truncate(bits: Self::Bits) -> Self
fn from_bits_truncate(bits: Self::Bits) -> Self
source§fn from_name(name: &str) -> Option<Self>
fn from_name(name: &str) -> Option<Self>
source§fn iter_names(&self) -> IterNames<Self>
fn iter_names(&self) -> IterNames<Self>
source§fn intersects(&self, other: Self) -> boolwhere
Self: Sized,
fn intersects(&self, other: Self) -> boolwhere
Self: Sized,
source§fn contains(&self, other: Self) -> boolwhere
Self: Sized,
fn contains(&self, other: Self) -> boolwhere
Self: Sized,
source§fn insert(&mut self, other: Self)where
Self: Sized,
fn insert(&mut self, other: Self)where
Self: Sized,
|) of the bits in two flags values.source§fn remove(&mut self, other: Self)where
Self: Sized,
fn remove(&mut self, other: Self)where
Self: Sized,
&!). Read moresource§fn toggle(&mut self, other: Self)where
Self: Sized,
fn toggle(&mut self, other: Self)where
Self: Sized,
^) of the bits in two flags values.source§fn intersection(self, other: Self) -> Self
fn intersection(self, other: Self) -> Self
&) of the bits in two flags values.source§fn difference(self, other: Self) -> Self
fn difference(self, other: Self) -> Self
&!). Read moresource§fn symmetric_difference(self, other: Self) -> Self
fn symmetric_difference(self, other: Self) -> Self
^) of the bits in two flags values.source§fn complement(self) -> Self
fn complement(self) -> Self
!) of the bits in a flags value, truncating the result.source§impl FromIterator<OutFlags> for OutFlags
impl FromIterator<OutFlags> for OutFlags
source§fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self
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
impl IntoIterator for OutFlags
source§impl Sub for OutFlags
impl Sub for OutFlags
source§impl SubAssign for OutFlags
impl SubAssign for OutFlags
source§fn sub_assign(&mut self, other: Self)
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.