Wwise SDK
_i_ak_plugin_8h_source
버전
menu
|
Wwise SDK 2025.1.4
|
IAkPlugin.h
이 파일의 문서화 페이지로 가기
119 /// Note that rays whose listener is irrelevant to the current context are ignored. For example,
136 /// - Returned distance and angles are those of the game object, and do not necessarily correspond
147 /// Get the number of positions of the game object. Use this value to determine the indices to be
180 /// Get the game object IDs of listener game objects that are listening to the emitter game object.
184 /// \return True if the call succeeded, false if all the listeners could not fit into the array,
230 /// Get priority value associated to this voice. When priority voice is modified by distance, the minimum distance among emitter-listener pairs is used.
256 /// \return The device type and unique identifier. AK_Success if successful, AK_NotCompatible otherwise.
264 /// When this function is called and returns a valid data pointer, the data can only be used by this
272 /// Return the pointer and size of the game data corresponding to the specified index, sent by the game using AK::SoundEngine::SendPluginCustomGameData().
274 /// When this function is called and returns a valid data pointer, the data can only be used by this
295 /// Query the context to know if it is possible to send data to the UI counterpart of this plug-in.
311 /// Get the cumulative gain of all mixing stages, from the host audio node down to the device end point.
312 /// Returns 1.f when the node is a Property Container (voice), because a voice may be routed to several mix chains.
316 /// Return the channel configuration of the parent node that this plug-in will mix into. GetParentChannelConfig() may be used to set the output configuration of an
317 /// out-of-place effect to avoid additional up/down mixing stages. Please note however that it is possible for out-of-place effects later in the chain to change
319 /// Returns not out_channelConfig.IsValid() when the node is a Property Container (voice), because a voice may be routed to several mix chains.
320 /// \return AK_Success if the channel config of the primary, direct parent bus could be determined, AK_Fail otherwise.
329 /// In the case of a voice, the ID is internal but corresponds to what you would get from the duration
330 /// callback (see AkDurationCallbackInfo::audioNodeID). In the case of a bus, it can be matched with the bus name converted
340 /// Get the expected input of the audio device (sink) at the end of the bus pipeline from the caller's perspective.
344 AkChannelConfig& out_sinkConfig, // The channel config of the sink; if set to "Objects", then the sink is in 3D audio mode. Any other config means 3D audio is not active.
345 Ak3DAudioSinkCapabilities& out_3dAudioCaps // When out_sinkConfig is set to Objects, inspect this struct to learn which 3D audio features are supported by the sink
350 /// When called from a plug-in placed on a bus, the bus hierarchy is traversed upward until the master bus is reached. The audio device connected to this master bus is then queried.
351 /// When called from a source plug-in, the source's output bus is the starting point of the traversal.
352 /// When called from an audio device or audio device effect plug-in, that audio device is queried.
354 /// \akwarning During Init, the plug-in may not be connected to the pipeline yet. In this case, \c AK_DeviceNotFound is returned and device information will be zero'ed out.
360 /// - AK_DeviceNotFound: The plugin attached to the specified context is not routed to an output device yet.
387 /// \return The interface to mixing context if the plugin is instantiated on a bus. NULL if it is instantiated on a voice.
394 /// Create new objects on the output side. Only out-of-place object processors (plugins implementing AK::IAkOutOfPlaceObjectPlugin) may create output objects.
395 /// If successful, the newly constructed objects will be available in out_ppBuffer/out_ppObjects.
396 /// To obtain all the output objects in a single array after having created objects using this function, use GetOutputObjects, or wait for the next call to AK::IAkOutOfPlaceObjectPlugin::Execute
398 /// Object processors inform the host that an output object may be disposed of by setting its state to AK_NoMoreData from within AK::IAkOutOfPlaceObjectPlugin::Execute.
399 /// \aknote You should never store the pointers returned in io_objects, as the objects point to may change across audio render passes, or after subsequent calls to CreateOutputObjects.\endaknote
400 /// \aknote This function can be called outside of the plug-in's Execute function, such as during Init, but audio buffer data for the object may not be available. \endaknote
402 /// The optional arguments out_ppBuffer and out_ppObjects may be used to obtain the output objects newly created.
413 /// Access the output objects. This function is helpful when CreateOutputObjects is called from within AK::IAkOutOfPlaceObjectPlugin::Execute.
414 /// You need to allocate the array of pointers. You may initially obtain the number of objects that will be returned by calling this function with io_numObjects = 0.
415 /// \aknote You should never store the pointers returned by GetOutputObjects, as the objects point to may change across audio render passes, or after calls to CreateOutputObjects.\endaknote
429 // Fetches the current channel config set for the specified sidechain, writing the contents to the address.
430 // Note that this channel config may change at runtime due to live-editing of the sidechain mix, or changes to the primary output device, so it should be regularly refreshed
432 virtual AKRESULT GetSidechainMixChannelConfig(AkUniqueID in_uSidechainId, AkChannelConfig* out_pChannelCfg) = 0;
434 // Accumulates the provided audio buffer to the target sidechain, with the provided scope of in_uSidechainScopeId.
436 // If the audioBuffer's channel config does not match the sidechain's channelconfig, or the audioBuffer's maxFrames does not match the soundengine granularity, returns AK_InvalidParameter.
438 virtual AKRESULT SendToSidechainMix(AkUniqueID in_uSidechainId, AkUInt64 in_uSidechainScopeId, AkAudioBuffer* in_pAudioBuffer) = 0;
440 // Copies the mixed result of the sidechain, with the matching in_uSidechainScopeId, from the previous soundengine tick into the provided audio buffer.
442 // - have a matching channel config as the sidechain, as defined by IAkEffectPluginContext::GetSidechainMixChannelConfig
443 // - have the correct value for MaxFrames, as defined by IAkGlobalPluginContext::GetMaxBufferLength,
445 // The ValidFrames on the audio buffer will be updated to match the MaxFrames if the copy of sidechain data completes successfully.
447 // \return AK_UnsupportedChannelConfig if io_pAudioBuffer's channel config does not match the sidechain mix
449 // \return AK_IDNotFound if the sidechain is not registered, or the combination of in_uSidechainId and in_uSidechainScopeId did not occur on the previous tick
450 virtual AKRESULT ReceiveFromSidechainMix(AkUniqueID in_uSidechainId, AkUInt64 in_uSidechainScopeId, AkAudioBuffer* io_pAudioBuffer) = 0;
496 /// AkBusHierachyFlags is a bit field, indicating whether the bus is the master (top-level) bus or not,
502 /// The speaker angles are expressed as an array of loudspeaker pairs, in degrees, relative to azimuth ]0,180].
503 /// Supported loudspeaker setups are always symmetric; the center speaker is always in the middle and thus not specified by angles.
505 /// You may call this function with io_pfSpeakerAngles set to NULL to get the expected number of angle values in io_uNumAngles,
526 /// Compute a direct speaker assignment volume matrix with proper downmixing rules between two channel configurations.
528 /// \aknote ComputePositioning is more general than this one, as it can also compute speaker gains for non-3D spatialization, and should be favored.\endaknote
540 /// \aknote ComputePositioning is more general than this one, as it can also compute speaker gains for 3D spatialization, and should be favored.\endaknote
554 /// \aknote ComputePositioning is more general than this one, as it can also compute speaker gains for non-3D spatialization, and should be favored.\endaknote
574 /// \aknote ComputePositioning is more general than this one, as it handles spread and focus, and can also compute speaker gains for non-3D spatialization, and should be favored.\endaknote
593 /// \aknote The cartesian counterpart of Compute3DPositioning, that uses emitter and listener transforms, should be used instead of this function.
595 /// \aknote ComputePositioning is more general than this one, as it can also compute speaker gains for non-3D spatialization, and should be favored.\endaknote
612 /// \aknote This function is more complete and more efficient than the Compute3DPositioning service that uses spherical coordinates, and should be favored.\endaknote
613 /// \aknote ComputePositioning is more general than this one, as it can also compute speaker gains for non-3D spatialization, and should be favored.\endaknote
628 /// Compute the speaker volume matrix of built-in positioning in Wwise from given positioning data and input and output channel configurations.
630 /// Any known (non-anonymous) combination of configurations will work. For example, ambisonics will be decoded or encoded if needed.
631 /// Additionally, anonymous configurations registered via RegisterAnonymousConfig are partially supported as output channel configurations.
632 /// \aknote The function will fail if the input or output configuration is object-based, as the speaker volume matrix would be undefined.\endaknote
634 /// 3D Spatialization is performed relative to the default listener position (0,0,0) and orientation, where the front vector is (0,0,1) and the top vector is (0,1,0), left handed.
635 /// \return AK_Success if succeeded, AK_InvalidParameter if the input or output configuration is object-based, or AK_Fail if the channel configurations are unknown or unhandled.
659 /// Register an anonymous configuration for use with ComputePositioning. This enables use of arbitrary
660 /// speaker configurations with 3d panning and ambisonics decoding. Some positioning features are not
661 /// supported with anonymous configurations: this includes center%, height spread, balance-fade, and
662 /// steering. An UnregisterAnonymousConfig call for each registered configuration should be made before
663 /// termination of the plug-in. Calling RegisterAnonymousConfig multiple times with the same number of
681 /// Retrieve the list of connected neighbors for a single speaker within a registered anonymous configuration.
683 /// It queries the triangulation mesh created by the sound engine to determine the spatial relationship between speakers.
685 /// You may call this function with out_pNeighborIndices set to NULL to get the required number of neighbors in io_uNumNeighbors,
686 /// in order to allocate your array correctly. If out_pNeighborIndices is not NULL, the array is filled with up to io_uNumNeighbors indices.
689 /// \return AK_Fail if no anonymous configuration matching in_uNumChannels has been registered for this plugin context.
691 /// \return AK_InsufficientMemory if not enough memory is available to calculate the list of connections
705 /// that will return a new parameter node instance when required (see \ref se_plugins_overview). \endaknote
716 /// \aknote The allocation of the new parameter node should be done through the AK_PLUGIN_NEW() macro. \endaknote
725 /// Initializes the internal parameter structure to default values or with the provided parameter
727 /// \aknote If the provided parameter block is valid, use SetParamsBlock() to set all parameters at once. \endaknote
738 /// \aknote The self-destruction of the parameter node must be done using the AK_PLUGIN_DELETE() macro. \endaknote
755 /// Update a single parameter at a time and perform the necessary actions on the parameter changes.
756 /// \aknote The parameter ID corresponds to the AudioEnginePropertyID in the plug-in XML description file. \endaknote
778 /// that will return a new plug-in instance when required (see \ref soundengine_plugins). \endaknote
788 /// \aknote The self-destruction of the plug-in must be done using AK_PLUGIN_DELETE() macro. \endaknote
795 /// The reset action should perform any actions required to reinitialize the state of the plug-in
804 /// \warning This function can be called before Init. Implementation of this function should not rely on internal state initialized in Init.
813 /// If the IAkPlugin object is not using media, this function will not be used and should simply return false.
814 /// If the IAkPlugin object is using media, the RelocateMedia feature can be optionally implemented.
815 /// To implement correctly the feature, the plugin must be able to "Hot swap" from a memory location to another one in a single blocking call (AK::IAkPlugin::RelocateMedia)
826 /// If the IAkPlugin object is using media, the RelocateMedia feature can be optionally implemented.
827 /// When this function is being called, the IAkPlugin object must make the required changes to remove all
828 /// referenced from the old memory pointer (previously obtained by GetPluginMedia() (and offsets to) to not access anymore the content of the old memory data and start using the newly provided pointer instead.
830 /// After this call, the memory space in in_pOldInMemoryData will be invalidated and cannot be used safely anymore.
854 /// Software effect plug-in initialization. Prepares the effect for data processing, allocates memory and sets up the initial conditions.
855 /// \aknote Memory allocation should be done through appropriate macros (see \ref fx_memory_alloc). \endaknote
866 /// Software effect plug-in interface for in-place processing (see \ref soundengine_plugins_effects).
871 /// \aknote The effect should process all the input data (uValidFrames) as long as AK_DataReady is passed in the eState field.
872 /// When the input is finished (AK_NoMoreData), the effect can output more sample than uValidFrames up to MaxFrames() if desired.
873 /// All sample frames beyond uValidFrames are not initialized and it is the responsibility of the effect to do so when outputting an effect tail.
874 /// The effect must notify the pipeline by updating uValidFrames if more frames are produced during the effect tail.
875 /// \aknote The effect will stop being called by the pipeline when AK_NoMoreData is returned in the the eState field of the AkAudioBuffer structure.
882 /// This can be used to simulate processing that would have taken place (e.g. update internal state).
883 /// Return AK_DataReady or AK_NoMoreData, depending if there would be audio output or not at that point.
890 /// Software effect plug-in interface for out-of-place processing (see \ref soundengine_plugins_effects).
895 /// \aknote An input buffer is provided and will be passed back to Execute() (with an advancing offset based on uValidFrames consumption by the plug-in).
896 /// The output buffer should be filled entirely by the effect (at which point it can report AK_DataReady) except on last execution where AK_NoMoreData should be used.
898 /// \aknote Only the output buffer eState field is looked at by the pipeline to determine the effect state.
907 /// This can be used to simulate processing that would have taken place (e.g. update internal state).
908 /// Return AK_DataReady or AK_NoMoreData, depending if there would be audio output or not at that point.
914 /// In-place Object Processor plug-in interface. Implement this interface when your plugin returns both AkPluginInfo::bCanProcessObjects
916 /// In-place object processors just modify objects' audio or metadata, but do not destroy objects create additional output objects.
917 /// An object processor may be initialized with an Object configuration, or any channel configuration, depending on the configuration of its input.
924 /// \aknote The effect should process all the input data (uValidFrames) of each input object in in_pObjectsIn as long as AK_DataReady is passed in their corresponding eState field.
925 /// When an input object is finished (eState is AK_NoMoreData), the effect can output more samples than uValidFrames, up to MaxFrames() if desired.
926 /// The effect must notify the pipeline by updating uValidFrames of a given object if more frames are produced, and by setting its eState to AK_DataReady as long as more samples will be produced.\endaknote.
933 /// Out-of-place Object Processor plug-in interface. Implement this interface when your plugin returns AkPluginInfo::bCanProcessObjects set to true
935 /// With out-of-place object processors, the set of output objects is different than that of the input objects. Out-of-place object processors typically create
936 /// their own output objects using IAkEffectPluginContext::CreateObject. Alternatively, an output object is created by the host bus if the channel configuration
938 /// Only out-of-place object processors may create output objects or change the output channel configuration.
944 /// \aknote When running out-of-place, the effect must only update uValidFrames and eState fields of output objects.
945 /// When the object processor sets an output object's eState field to AK_NoMoreData, the host will garbage collect them afterwards. \endaknote
946 /// \akwarning If an out-of-place object processor calls AK::IAkEffectPluginContext::CreateOutputObjects from within Execute, it must not access the output objects passed in out_objects, as the pointed objects may have moved elsewhere in memory.
947 /// In that case it must use AK::IAkEffectPluginContext::GetOutputObjects. Arguments in_pObjectBuffersOut and in_pObjectsOut can only be safely used if the plugin creates objects during Init, either via
948 /// AK::IAkEffectPluginContext::CreateOutputObjects, or by setting the channelConfig field of io_rFormat to a normal channel configuration (i.e. whose eConfigType is not AK_ChannelConfigType_Objects). \endakwarning
959 /// Compute the speaker volume matrix of built-in positioning in Wwise from given positioning data and input and output channel configurations.
960 /// Any known (non-anonymous) combination of configurations will work. For example, ambisonics will be decoded or encoded if needed.
961 /// \aknote The function will fail if the input or output configuration is object-based, as the speaker volume matrix would be undefined.\endaknote
963 /// 3D Spatialization is performed relative to the default listener position (0,0,0) and orientation, where the front vector is (0,0,1) and the top vector is (0,1,0), left handed.
964 /// \return AK_Success if succeeded, AK_InvalidParameter if the input or output configuration is object-based, or AK_Fail if the channel configurations are unknown or unhandled.
973 /// Audio device effect plug-in interface. Implement this interface for in-place effects that must be applied at the very end of the pipeline.
974 /// Audio device effects are applied right before sending audio buffers (main mix, passthrough and objects) to the audio device output through IAkSinkPlugin/IAk3DAudioSinkPlugin.
975 /// The format of the audio buffers passed to the effect matches the format requested by the sink plug-in. This means that audio device effects must be in-place; they cannot change io_rFormat in Init().
983 /// Audio device effect plug-in initialization. Prepares the effect for data processing, allocates memory and sets up the initial conditions.
984 /// \aknote Memory allocation should be done through appropriate macros (see \ref fx_memory_alloc). \endaknote
1001 /// Interface to retrieve information about an input of a mix connection (for processing during the SpeakerVolumeMatrix Callback)
1006 /// \return The interface to voice info. NULL when the input is not a voice but the output of another bus instead.
1014 /// \return The connection type (direct/dry, user-defined auxiliary send, game-defined auxiliary send). Bus inputs are always "direct".
1017 /// Use this method to retrieve user data to this context. It is always initialized to NULL until you decide to set it otherwise.
1022 /// Use this method to attach user data to this context. It is always initialized to NULL until you decide to set it otherwise.
1030 /// Retrieve the speaker panning type: type of panning logic when object is not 3D spatialized.
1040 /// (Get3DSpatializationMode returns AK_SpatializationMode_None), and if speaker panning is not direct assignment
1049 /// Get the value of this input's Listener Relative Routing option, that is, if the emitter-listener relative
1050 /// association is calculated at this node. Listener Relative Routing needs to be calculated in order for a node
1051 /// to be spatialized or attenuated with respect to in-game emitter and listener positions. Otherwise it can only
1059 /// Get whether the emitter position is defined by the game alone (AK_3DPositionType_Emitter), or if it is further automated
1061 /// The resulting 3D position(s) may be obtained by Get3DPosition(), and used for 3D spatialization or attenuation.
1070 /// Note that the returned value is always 0 unless the input has listener relative routing (see HasListenerRelativeRouting()).
1078 /// Retrieve the spherical coordinates of the desired emitter-listener pair (ray) corresponding to this
1079 /// input, as automated by the engine. Applicable only when the input has listener relative routing (see HasListenerRelativeRouting()).
1092 /// Applicable only when the input has listener relative routing (see HasListenerRelativeRouting()).
1104 /// Applicable only when the input has listener relative routing (see HasListenerRelativeRouting()).
1115 /// Applicable only when the input has listener relative routing (see HasListenerRelativeRouting()).
1122 /// Applicable only when the input has listener relative routing (see HasListenerRelativeRouting()).
1123 /// \return The 3D spatialization mode (see Ak3DSpatializationMode). AK_SpatializationMode_None if not set, or if the input is not a node where the game object is evaluated against its listener.
1141 /// \return True if the sink plugin is instantiated on the main output device (primary tree), false otherwise.
1147 /// Sink plugins may need to call this function to notify the audio thread that it should wake up
1148 /// in order to potentially process an audio frame. Note that the audio thread may wake up for other
1150 /// Once the audio thread is awaken, it will ask the sink plugin how many audio frames need to be
1151 /// processed and presented to the plugin. This is done through AK::IAkSinkPlugin::IsDataNeeded()
1153 /// Note that only the sink plugin that is instantiated on the main output device (primary tree) may control
1155 /// \return AK_Success if the calling plugin is instantiated on the main output device (primary tree),
1164 /// \return The engine's AkPlatformInitSettings::uNumRefillsInVoice value on platforms for which it exists, 0 otherwise.
1167 /// Compute the speaker volume matrix of built-in positioning in Wwise from given positioning data and input and output channel configurations.
1168 /// Any known (non-anonymous) combination of configurations will work. For example, ambisonics will be decoded or encoded if needed.
1169 /// \aknote The function will fail if the input or output configuration is object-based, as the speaker volume matrix would be undefined.\endaknote
1171 /// 3D Spatialization is performed relative to the default listener position (0,0,0) and orientation, where the front vector is (0,0,1) and the top vector is (0,1,0), left handed.
1172 /// \return AK_Success if succeeded, AK_InvalidParameter if the input or output configuration is object-based, or AK_Fail if the channel configurations are unknown or unhandled.
1183 /// Associates a custom data pointer to the output device information to which the sink plug-in is attached.
1185 /// This custom data pointer can then be queried by other plug-ins via AK::IAkPluginContextBase::GetOutputDeviceInfo.
1187 /// If the pointer points to an object, this object must remain valid for the entirety of the sink's lifetime.
1197 };
1209 /// This method prepares the audio device plug-in for data processing, allocates memory, and sets up initial conditions.
1210 /// The plug-in is passed in a pointer to a memory allocator interface (AK::IAkPluginMemAlloc).You should perform all dynamic memory allocation through this interface using the provided memory allocation macros(see \ref fx_memory_alloc).For the most common memory allocation needs, namely allocation at initialization and release at termination, the plug-in does not need to retain a pointer to the allocator.It will also be provided to the plug-in on termination.
1211 /// The AK::IAkSinkPluginContext interface allows to retrieve information related to the context in which the audio device plug-in is operated.
1212 /// The plug-in also receives a pointer to its associated parameter node interface (AK::IAkPluginParam).Most plug-ins will want to keep a reference to the associated parameter node to be able to retrieve parameters at runtime. See \ref iakeffectparam_communication for more details.
1213 /// All of these interfaces will remain valid throughout the plug-in's lifespan so it is safe to keep an internal reference to them when necessary.
1214 /// Plug-ins also receive the output audio format(which stays the same during the lifespan of the plug-in) to be able to allocate memory and setup processing for a given channel configuration.
1215 /// Note that the channel configuration is suggestive and may even be specified as not AkChannelConfig::IsValid().The plugin is free to determine the true channel configuration(this is an io parameter).
1218 /// \return AK_NotCompatible if the system doesn't support this sink type. Return this if you want to fall back to the default sinks. This sink will never be requested again. Do not return this code if the device is simply unplugged.
1219 /// \return AK_DeviceNotCompatible if the requested output device doesn't support this sink type. Return this if you want to fall back to the dummy audio sink, which will result in no audio for the associated bus hierarchy. This sink will never be requested again.
1220 /// All other return codes will be treated as temporary failures conditions and the sink will be requested again later.
1229 /// Obtain the number of audio frames that should be processed by the sound engine and presented
1230 /// to this plugin via AK::IAkSinkPlugin::Consume(). The size of a frame is determined by the sound engine and
1240 /// Called at the end of the audio frame. If no Consume calls were made prior to OnFrameEnd, this means no audio was sent to the device. Assume silence.
1263 /// Present an audio buffer to the sink. The audio buffer is in the native format of the sound engine
1264 /// (typically float, deinterleaved), as specified by io_rFormat passed to Init(). It is up to the
1266 /// Note that Consume() is not called if the output for this frame consists of silence. Plugins should
1276 virtual AkSinkPluginType GetSinkPluginType() const override final { return AkSinkPluginType_Sink; }
1292 /// Same as AK::IAkSinkPlugin::Consume(), but receives 3 inputs: the main mix,the stereo passthrough and 3d audio objects.
1304 virtual AkSinkPluginType GetSinkPluginType() const override final { return AkSinkPluginType_3DAudioSink; }
1315 /// Source plug-in initialization. Gets the plug-in ready for data processing, allocates memory and sets up the initial conditions.
1316 /// \aknote Memory allocation should be done through the appropriate macros (see \ref fx_memory_alloc). \endaknote
1345 /// This will typically be called when an action of type "break" will be triggered on the playing source.
1346 /// Break (or StopLooping) means: terminate gracefully... if possible. In most situations it finishes the current loop and plays the sound release if there is one.
1349 /// - \c AK_Success if the source ignores the break command and plays normally till the end or if the source support to stop looping and terminates gracefully.
1350 /// - \c AK_Fail if the source cannot simply stop looping, in this situation, the break command will end up stopping this source.
1356 /// This will typically be called when the game calls AK::SoundEngine::SeekOnEvent() where the event plays
1358 /// If the plug-in does not handle seeks, it should return AK_Success. If it returns AK_Fail, it will
1363 /// - \c AK_Fail if the source considers that seeking requests should provoke termination, for example, if
1371 /// Skips execution when the voice is virtual playing from elapsed time to simulate processing that would have taken place (e.g. update internal state) while
1373 /// Given the number of frames requested adjust the number of frames that would have been produced by a call to Execute() in the io_uFrames parameter and return and
1374 /// return AK_DataReady or AK_NoMoreData, depending if there would be audio output or not at that point.
1375 /// Returning AK_NotImplemented will trigger a normal execution of the voice (as if it was not virtual) thus not enabling the CPU savings of a proper from elapsed time behavior.
1376 /// Note that returning AK_NotImplemeted for a source plug-ins that support asynchronous processing will produce a 'resume' virtual voice behavior instead.
1382 /// \aknote The effect can output as much as wanted up to MaxFrames(). All sample frames passed uValidFrames at input time are
1383 /// not initialized and it is the responsibility of the effect to do so. When modifying the number of valid frames within execution
1384 /// (e.g. to flush delay lines) the effect should notify the pipeline by updating uValidFrames accordingly.
1385 /// \aknote The effect will stop being called by the pipeline when AK_NoMoreData is returned in the the eState field of the AkAudioBuffer structure.
1392 /// This function can be useful to convert from normalized floating point audio samples to HW-pipeline format samples.
1394 /// This function can be useful to convert from normalized floating point audio samples to HW-pipeline format samples when the input is not not to exceed (-1,1) range.
1396 /// This function can be useful to convert from HW-pipeline format samples to normalized floating point audio samples.
1403 AK_CALLBACK( AK::IAkPlugin*, AkCreatePluginCallback )( AK::IAkPluginMemAlloc * in_pAllocator );
1405 AK_CALLBACK( AK::IAkPluginParam*, AkCreateParamCallback )( AK::IAkPluginMemAlloc * in_pAllocator );
1406 /// Registered plugin device enumeration function prototype, used for providing lists of devices by plug-ins.
1440 /// Games query this interface from the sound engine, via AK::SoundEngine::GetGlobalPluginContext. Plug-ins query it via IAkPluginContextBase::GlobalContext.
1453 /// Can be used by the effect to make memory allocation at initialization based on this worst case scenario.
1461 /// Retrieve the core sample rate of the engine. This sample rate applies to all effects except source plugins, which declare their own sample rate.
1481 /// \return AK_Success if successful, AK_InvalidParameter if invalid parameters were provided or Ak_Fail otherwise. Possible reasons for an AK_Fail result are:
1486 /// Loading a bank referencing an unregistered plug-in or codec will result in a load bank success,
1487 /// but the plug-ins will not be used. More specifically, playing a sound that uses an unregistered effect plug-in
1488 /// will result in audio playback without applying the said effect. If an unregistered source plug-in is used by an event's audio objects,
1502 /// \return AK_Success if successful, AK_InvalidParameter if invalid parameters were provided, or Ak_Fail otherwise. Possible reasons for an AK_Fail result are:
1507 /// Loading a bank referencing an unregistered plug-in or codec will result in a load bank success,
1508 /// but the plug-ins will not be used. More specifically, playing a sound that uses an unregistered effect plug-in
1509 /// will result in audio playback without applying the said effect. If an unregistered source plug-in is used by an event's audio objects,
1518 /// Register a global callback function. This function will be called from the audio rendering thread, at the
1519 /// location specified by in_eLocation. This function will also be called from the thread calling
1521 /// For example, in order to be called at every audio rendering pass, and once during teardown for releasing resources, you would call
1522 /// RegisterGlobalCallback(AkPluginTypeEffect, MY_COMPANY_ID , MY_PLUGIN_ID, myCallback, AkGlobalCallbackLocation_BeginRender | AkGlobalCallbackLocation_Term, myCookie);
1524 /// A valid (not AkPluginTypeNone) Plugin Type, Company ID and valid (non-zero) Plug-in ID of the plug-in registering the callback must be provided to this function.
1525 /// The timing of the callback function will contribute to the timing of the plug-in registered (Total Plug-in CPU and Advanced Profiler Plug-in tab).
1526 /// Timers will be registered to callbacks at all locations except for \c AkGlobalCallbackLocation::AkGlobalCallbackLocation_Register and \c AkGlobalCallbackLocation::AkGlobalCallbackLocation_Term.
1527 /// It is only legal to call this function from inside the plug-in registration callback, exclusively when receiving \c AkGlobalCallbackLocation::AkGlobalCallbackLocation_Register.
1528 /// This function should not be called from inside the plug-in instance (e.g. in Init, Execute, etc.) to prevent deadlocks when processing plug-ins in parallel.
1547 /// It is only legal to call this function from inside the plug-in registration global callback, exclusively when receiving \c AkGlobalCallbackLocation::AkGlobalCallbackLocation_Term.
1548 /// This function should not be called from inside the plug-in instance (e.g. in Init, Execute, etc.) to prevent deadlocks when processing plug-ins in parallel.
1561 /// Get the default allocator for plugins. This is useful for performing global initialization tasks shared across multiple plugin instances.
1578 /// This means that you cannot send different data to various instances of the plugin on a same bus.\endaknote
1590 /// Computes gain vector for encoding a source with angles in_fAzimuth and in_fElevation to full-sphere ambisonics with order in_uOrder.
1599 /// Computes gain matrix for decoding an SN3D-normalized ACN-ordered ambisonic signal of order sqrt(in_cfgAmbisonics.uNumChannels)-1, with max-RE weighting function, on a (regularly) sampled sphere whose samples in_samples are
1602 /// The returned matrix has in_cfgAmbisonics.uNumChannels inputs (rows) and in_uNumSamples outputs (columns), and is normalized by the number of samples.
1607 /// - \c AK_InvalidParameter if in_cfgAmbisonics does not have enough channel for a valid ambisonic configuration of the specified order.
1623 /// Given an emitter-listener pair, compute the azimuth and elevation angles of the emitter relative to the listener.
1624 /// \return AK_Success if the listener referenced in the emitter-listener pair was found; azimuth and elevation.
1655 /// The callback function can be used to be noticed when markers are reached or when the event is finished.
1656 /// An array of wave file sources can be provided to resolve External Sources triggered by the event.
1657 /// \return The playing ID of the event launched, or AK_INVALID_PLAYING_ID if posting the event failed
1659 /// This function executes the actions contained in the event without going through the message queue.
1660 /// In order to do so it acquires the global Wwise sound engine lock. It should therefore only be called from one of the
1678 /// Executes a number of MIDI Events on all nodes that are referenced in the specified Event in an Action of type Play.
1679 /// Each MIDI event will be posted in AkMIDIPost::uOffset samples from the start of the current frame. The duration of
1680 /// a sample can be determined from the sound engine's audio settings, via a call to AK::IAkGlobalPluginContext::GetAudioSettings.
1683 /// In order to do so it acquires the global Wwise sound engine lock. It should therefore only be called from one of the
1704 /// Stops MIDI notes on all nodes that are referenced in the specified event in an action of type play,
1705 /// with the specified Game Object. Invalid parameters are interpreted as wildcards. For example, calling
1706 /// this function with in_eventID set to AK_INVALID_UNIQUE_ID will stop all MIDI notes for Game Object
1710 /// In order to do so it acquires the global Wwise sound engine lock. It should therefore only be called from one of the
1726 /// Retrieves a plug-in service to provide specific "helper" functionality. Note that each service should provide
1727 /// macros that handle the casting to the appropriate service, and are recommended instead of calling this directly.
1728 /// Note that all plug-in service are statically allocated, and any references to them can be cached without lifetime checks.
1733 /// Obtains the current audio output buffer tick. This corresponds to the number of buffers produced by
1739 /// Interface for the "Mixer" plug-in service, to handle mixing together of signals, or applying simple transforms
1774 /// Given non-interleaved audio in the provided in_pInputBuffer, will apply a ramping gain over the number
1775 /// of frames specified, and store the result in in_pOutputBuffer. Channel data from in_pInputBuffer will also be
1776 /// interleaved in in_pOutputBuffer's results, and optionally converted from 32-bit floats to 16-bit integers.
1784 /// Given non-interleaved audio in the provided in_pInputBuffer, will apply a ramping gain over the number
1785 /// of frames specified, and store the result in in_pOutputBuffer. Audio data in in_pOutputBuffer will have
1786 /// the same layout as in_pInputBuffer, and optionally converted from 32-bit floats to 16-bit integers.
1794 // Applies a biquadfilter to in_uNumSamples # of samples of each channel using the input provided, to the output buffer,
1795 // with one set of coefficients for all channels, and an array of memories (one instance per channel)
1796 // (no mixing in the output occurs; the output buffer will be entirely replaced, and can be the same as the input buffer)
1805 // Applies in_uNumInterpStages sets of biquadfilters to each channel of in_ppInputData (in_uNumInputs # of channels),
1806 // processing in_pNumSamplesPerInterpStage number of samples per stage. in_ppCoefs should be in_uNumInputs * in_uNumInterpStages long,
1807 // with in_uNumInputs coefficients for each stage of the process, with each coefficient being applied for each channel.
1808 // (no mixing in the output occurs; the output buffer will be entirely replaced, and can be the same as the input buffer)
1819 // Applies two biquadfilters to in_uNumSamples # of samples of each channel using the input provided, to the output buffer,
1820 // with two sets of coefficients for all channels, and with two arrays of memories (one instance per channel per biquad)
1821 // (no mixing in the output occurs; the output buffer will be entirely replaced, and can be the same as the input buffer)
1822 // If you have two biquads to run on a given signal, this is slightly faster than calling ProcessBiquadFilter twice
1833 // Applies two in_uNumInterpStages sets of biquadfilters to each channel of in_ppInputData (in_uNumInputs # of channels),
1834 // processing in_pNumSamplesPerInterpStage number of samples per stage. Each in_ppCoefs should be in_uNumInputs * in_uNumInterpStages long,
1835 // with in_uNumInputs coefficients for each stage of the process, with each coefficient being applied for each channel.
1836 // (no mixing in the output occurs; the output buffer will be entirely replaced, and can be the same as the input buffer)
1837 // If you have two biquads to run on a given signal, this is slightly (~25%) faster than calling ProcessInterpBiquadFilter twice
1864 /// Advances the internal PRNG seed, and returns a random number generator suitable for DSP processing
1868 /// Interface for the services related to extracting attenuation curves from audio objects and using them.
1875 /// Obtain the unique ID of the Attenuation curves attached to the provided audio object, as well as the
1877 /// \return The unique ID of the Attenuation curves (Shareset or Custom). AK_INVALID_UNIQUE_ID if the audio object does not have Attenuation curves.
1883 /// Extract the curve of a given type from the set of Attenuation curves attached to the given audio object.
1885 /// The curve's data remain until the client of this service calls AK::IAkPluginServiceAttenuationCurve::Delete.
1906 /// Some curves are serialized in the log domain. Use this function to convert all the points to linear at once.
1921 /// Interface for the audio object priority service, to retrieve and update playback priority on audio objects.
1922 /// Playback priority of the audio object may be used by the audio endpoint when there are more audio objects than the available hardware objects
1923 /// to determine which audio objects should be mixed as hardware objects in priority and which can be mixed to a lower resolution 3D bed.
1936 AkUInt32 in_uNumObjects, ///in_ppObjects. Must correspond to the number of priorites in out_pPriorities.
1937 AkPriority* out_pPriorities ///in_ppObjects. Must be large enough to contain in_uNumObjects priorities.
1940 /// Sets the playback priority of each of the in_uNumObjects audio objects in io_ppObjects from in_pPriorities.
1943 AkUInt32 in_uNumObjects, ///in_ppObjects. Must correspond to the number of priorites in in_pPriorities.
1957 /// Submit markers to trigger notifications for registered callback functions. Register callbacks through. Registering a callback can be achieved through the
1964 /// - \c AK_InvalidParameter if any valus in in_uOffsetsInBuffer is greater or equal to the length of the buffer.
1970 const AkUInt32* in_uOffsetsInBuffer, ///in_pMarkers. Must provide a value for each marker in in_pMarkers.
1984 #define AK_GET_PLUGIN_SERVICE_MIXER(plugin_ctx) static_cast<:iakpluginservicemixer>(plugin_ctx->GetPluginService(AK::PluginServiceType_Mixer))
1985 #define AK_GET_PLUGIN_SERVICE_RNG(plugin_ctx) static_cast<:iakpluginservicerng>(plugin_ctx->GetPluginService(AK::PluginServiceType_RNG))
1986 #define AK_GET_PLUGIN_SERVICE_AUDIO_OBJECT_ATTENUATION(plugin_ctx) static_cast<:iakpluginserviceaudioobjectattenuation>(plugin_ctx->GetPluginService(AK::PluginServiceType_AudioObjectAttenuation))
1987 #define AK_GET_PLUGIN_SERVICE_AUDIO_OBJECT_PRIORITY(plugin_ctx) static_cast<:iakpluginserviceaudioobjectpriority>(plugin_ctx->GetPluginService(AK::PluginServiceType_AudioObjectPriority))
1988 #define AK_GET_PLUGIN_SERVICE_MARKERS(plugin_ctx) static_cast<:iakpluginservicemarkers>(plugin_ctx->GetPluginService(AK::PluginServiceType_Markers))
1990 /// This class takes care of the registration of plug-ins in the Wwise engine. Plug-in developers must provide one instance of this class for each plug-in.
2001 // Placeholder used for plug-in extensions (plug-ins that modify the behavior of an existing plug-in without registering a new ID)
2116 AK_ATTR_USED AK::PluginRegistration _pluginName_##Registration(_plugintype_, _companyid_, _pluginid_, Create##_pluginName_, Create##_pluginName_##Params);
2122 #define DEFINE_PLUGIN_REGISTER_HOOK AK_DLLEXPORT AK::PluginRegistration * g_pAKPluginList = NULL;
virtual AkUInt16 GetNumRefillsInVoice()=0
Interface to retrieve contextual information for a mixer.
Definition: IAkPlugin.h:487
virtual AKRESULT RegisterAnonymousConfig(AkUInt32 in_uNumChannels, const AkSphericalCoord *in_SphericalPositions)=0
virtual AKRESULT RegisterPlugin(AkPluginType in_eType, AkUInt32 in_ulCompanyID, AkUInt32 in_ulPluginID, AkCreatePluginCallback in_pCreateFunc, AkCreateParamCallback in_pCreateParamFunc)=0
AkCreateFileSourceCallback m_pFileCreateFunc
LEGACY: Kept for compatibility with 2019.1. Unused in 2019.2 and up.
Definition: IAkPlugin.h:2102
virtual AKRESULT Init(IAkPluginMemAlloc *in_pAllocator, IAkSinkPluginContext *in_pSinkPluginContext, IAkPluginParam *in_pParams, AkAudioFormat &io_rFormat)=0
virtual void Consume(AkAudioBuffer *in_pMainMix, AkAudioBuffer *in_pPassthroughMix, const AkAudioObjects &in_objects, AkRamp in_gain)=0
Definition: IAkRTPCSubscriber.h:48
virtual AKRESULT SetRTPCValue(AkRtpcID in_rtpcID, AkRtpcValue in_value, AkGameObjectID in_gameObjectID=AK_INVALID_GAME_OBJECT, AkTimeMs in_uValueChangeDuration=0, AkCurveInterpolation in_eFadeCurve=AkCurveInterpolation_Linear, bool in_bBypassInternalValueInterpolation=false)=0
Definition: IAkPlatformContext.h:35
virtual AkUInt64 RandomSeed() const =0
virtual AkMultiPositionType GetGameObjectMultiPositionType() const =0
Software plug-in interface for sink (audio end point) which supports 3D audio features.
Definition: IAkPlugin.h:1281
virtual AkUniqueID GetAudioNodeID() const =0
virtual void ProcessPairedInterpBiquadFilter(AkReal32 **in_ppInputData, AkReal32 **io_ppOutputData, AK::AkBiquadCoefficients **in_ppCoefs1, AK::AkBiquadMemories **io_ppMemories1, AK::AkBiquadCoefficients **in_ppCoefs2, AK::AkBiquadMemories **io_ppMemories2, AkUInt32 *in_pNumSamplesPerInterpStage, AkUInt32 in_uNumInterpStages, AkUInt32 in_uNumChannels)=0
virtual ~IAkPluginParam()
Virtual destructor on interface to avoid warnings.
Definition: IAkPlugin.h:712
virtual AKRESULT TimeSkip(AkUInt32 in_uFrames)=0
Definition: AkSoundEngineTypes.h:77
virtual void * GetCookie() const =0
bool bIsDeviceEffect
Plug-in can process final mixes and objects right before sending them to the audio device for output....
Definition: IAkPlugin.h:82
virtual bool IsStarved()=0
virtual IAkGlobalPluginContext * GlobalContext() const =0
virtual const AkRTPCGraphPoint & GetPoint(const void *in_attenuationCurve, AkUInt32 i) const =0
Get the ith point of the curve.
virtual ~IAkGlobalPluginContext()
Virtual destructor on interface to avoid warnings.
Definition: IAkPlugin.h:1445
virtual AKRESULT Term(IAkPluginMemAlloc *in_pAllocator)=0
Software effect plug-in interface (see Creating Sound Engine Effect Plug-ins).
Definition: IAkPlugin.h:848
virtual AKRESULT GetDistanceProbe(AkGameObjectID in_uListener, AkWorldTransform &out_position) const =0
virtual CAkRng CreateRNG() const =0
Advances the internal PRNG seed, and returns a random number generator suitable for DSP processing
virtual AKRESULT PostMonitorData(void *in_pData, AkUInt32 in_uDataSize)=0
virtual AKRESULT Init(IAkPluginMemAlloc *in_pAllocator, IAkEffectPluginContext *in_pEffectPluginContext, IAkPluginParam *in_pParams, AkAudioFormat &io_rFormat)=0
Definition: IAkPlugin.h:1205
virtual void SetPriorities(AkAudioObject **io_ppObjects, AkUInt32 in_uNumObjects, AkPriority *in_pPriorities)=0
Sets the playback priority of each of the in_uNumObjects audio objects in io_ppObjects from in_pPrior...
virtual void ProcessPairedBiquadFilter(AkAudioBuffer *in_pInputBuffer, AkAudioBuffer *io_pOutputBuffer, AK::AkBiquadCoefficients *in_pCoefs1, AK::AkBiquadMemories *io_pMemories1, AK::AkBiquadCoefficients *in_pCoefs2, AK::AkBiquadMemories *io_pMemories2, AkUInt32 in_uNumSamples)=0
Wwise sound engine source plug-in interface (see Creating Sound Engine Source Plug-ins).
Definition: IAkPlugin.h:1309
virtual AkPanningRule GetPanningRule() const =0
Returns the panning rule for the output device to which the sink plug-in is attached.
virtual AkReal32 GetSpread(AkUInt32 in_uIndex)=0
AkMeteringFlags
Metering flags. Used for specifying bus metering, through AK::SoundEngine::RegisterBusVolumeCallback(...
Definition: AkEnums.h:265
virtual AkUInt16 GetNumLoops() const =0
virtual void EnableMetering(AkMeteringFlags in_eFlags)=0
Definition: AkVirtualAcoustics.h:33
virtual AKRESULT IsDataNeeded(AkUInt32 &out_uNumFramesNeeded)=0
virtual ~IAkSinkPluginContext()
Virtual destructor on interface to avoid warnings.
Definition: IAkPlugin.h:1136
virtual IAkMixerPluginContext * GetMixerCtx()=0
virtual bool SupportMediaRelocation() const
Definition: IAkPlugin.h:819
AkCreateParamCallback m_pCreateParamFunc
Definition: IAkPlugin.h:2101
virtual AKRESULT SetParam(AkPluginParamID in_paramID, const void *in_pValue, AkUInt32 in_uParamSize)=0
Definition: AkAndroidSoundEngine.h:83
Definition: IAkPlugin.h:709
virtual AKRESULT StopMIDIOnEventSync(AkUniqueID in_eventID=AK_INVALID_UNIQUE_ID, AkGameObjectID in_gameObjectID=AK_INVALID_GAME_OBJECT, AkPlayingID in_playingID=AK_INVALID_PLAYING_ID)=0
Definition: IAkStreamMgr.h:688
virtual void MixNinNChannels(AkAudioBuffer *in_pInputBuffer, AkAudioBuffer *in_pMixBuffer, AkReal32 in_fPrevGain, AkReal32 in_fNextGain, AK::SpeakerVolumes::ConstMatrixPtr in_mxPrevVolumes, AK::SpeakerVolumes::ConstMatrixPtr in_mxNextVolumes)=0
N to N channels mix
bool bCanRunOnObjectConfig
Plug-in can run on bus with Audio Object configuration. Effect plug-ins are instantiated once per Aud...
Definition: IAkPlugin.h:83
virtual AkUInt32 GetSampleRate() const =0
virtual void GetPannerPosition(AkVector &out_position)=0
Definition: AkSpeakerConfig.h:436
virtual AKRESULT SendPluginCustomGameData(AkUniqueID in_busID, AkGameObjectID in_busObjectID, AkPluginType in_eType, AkUInt32 in_uCompanyID, AkUInt32 in_uPluginID, const void *in_pData, AkUInt32 in_uSizeInBytes)=0
bool bUsesGainAttribute
Plug-in knows how to process objects separately from the cumulativeGain of the object (or the process...
Definition: IAkPlugin.h:84
Interface to retrieve information about an input of a mix connection (for processing during the Speak...
Definition: IAkPlugin.h:1003
AKRESULT(* AkGetDeviceListCallback)(AkUInt32 &io_maxNumDevices, AkDeviceDescription *out_deviceDescriptions)
Registered plugin device enumeration function prototype, used for providing lists of devices by plug-...
Definition: IAkPlugin.h:1407
AkSpeakerPanningType
Speaker panning type: type of panning logic when object is not 3D spatialized (i.e....
Definition: AkEnums.h:222
virtual IAkVoicePluginInfo * GetVoiceInfo()=0
virtual ~IAkPluginServiceAudioObjectAttenuation()
Definition: IAkPlugin.h:1872
bool bIsInPlace
Buffer usage (in-place or not). If true, and the plug-in is an insert effect, it should implement IAk...
Definition: IAkPlugin.h:78
virtual AkUInt32 GetIDFromString(const char *in_pszString) const =0
virtual AKRESULT ComputeWeightedAmbisonicsDecodingFromSampledSphere(const AkVector in_samples[], AkUInt32 in_uNumSamples, AkChannelConfig in_cfgAmbisonics, AK::SpeakerVolumes::MatrixPtr out_mxVolume)=0
AkCreatePluginCallback m_pCreateFunc
Definition: IAkPlugin.h:2100
Common interface for plug-in services accessed through the global plug-in context
Definition: IAkPlugin.h:1434
virtual ~IAkAudioDeviceEffectPlugin()
Virtual destructor on interface to avoid warnings.
Definition: IAkPlugin.h:980
Definition: AkRng.h:35
Interface for the "Mixer" plug-in service, to handle mixing together of signals, or applying simple t...
Definition: IAkPlugin.h:1741
virtual ~IAk3DAudioSinkPlugin()
Virtual destructor on interface to avoid warnings.
Definition: IAkPlugin.h:1284
virtual AkPriority GetPriority() const =0
static const AkGameObjectID AK_INVALID_GAME_OBJECT
Invalid game object (may also mean all game objects)
Definition: AkConstants.h:33
PluginRegistration(AkUInt32, AkUInt32)
Definition: IAkPlugin.h:1996
virtual ~IAkGameObjectPluginInfo()
Virtual destructor on interface to avoid warnings.
Definition: IAkPlugin.h:108
virtual ~IAkPluginContextBase()
Virtual destructor on interface to avoid warnings.
Definition: IAkPlugin.h:240
virtual AKRESULT GetSidechainMixChannelConfig(AkUniqueID in_uSidechainId, AkChannelConfig *out_pChannelCfg)=0
PluginRegistration(AkUInt32 in_ulCompanyID, AkUInt32 in_ulPluginID, AkCreateFileSourceCallback in_pCreateFile, AkCreateBankSourceCallback in_pCreateBank)
Definition: IAkPlugin.h:2055
virtual void MixChannel(AkReal32 *AK_RESTRICT in_pInBuffer, AkReal32 *AK_RESTRICT in_pOutBuffer, AkReal32 in_fPrevGain, AkReal32 in_fNextGain, AkUInt16 in_uNumFrames)=0
Single channel mix
virtual AKRESULT ComputePlanarVBAPGains(AkReal32 in_fAngle, AkChannelConfig in_outputConfig, AkReal32 in_fCenterPerc, AK::SpeakerVolumes::VectorPtr out_vVolumes)=0
virtual bool ExtractCurves(IAkPluginMemAlloc *in_pAllocator, const AkAudioObject &in_object, AkUInt32 in_curveTypesMask, void *out_curves[]) const =0
virtual void GetPluginMedia(AkUInt32 in_dataIndex, AkUInt8 *&out_rpData, AkUInt32 &out_rDataSize)=0
Definition: AkMidiTypes.h:217
Coefficients to be used for application of digital biquad filters
Definition: AkMixerTypes.h:20
Definition: IAkPlugin.h:920
virtual void Execute(AkAudioBuffer *io_pBuffer)=0
PluginRegistration(AkPluginType in_eType, AkUInt32 in_ulCompanyID, AkUInt32 in_ulPluginID, AkCreatePluginCallback in_pCreateFunc, AkCreateParamCallback in_pCreateParamFunc, AkGlobalCallbackFunc in_pRegisterCallback=NULL, void *in_pRegisterCallbackCookie=NULL)
Definition: IAkPlugin.h:2004
virtual IAkProcessorFeatures * GetProcessorFeatures()=0
Return an interface to query processor specific features.
virtual void GetOutputObjects(AkAudioObjects &io_objects)=0
PluginRegistration(AkPluginType in_eType, AkUInt32 in_ulCompanyID, AkUInt32 in_ulPluginID, AkCreatePluginCallback in_pCreateFunc, AkCreateParamCallback in_pCreateParamFunc, AkGetDeviceListCallback in_pGetDeviceListFunc, AkGlobalCallbackFunc in_pRegisterCallback=NULL, void *in_pRegisterCallbackCookie=NULL)
Definition: IAkPlugin.h:2029
@ PluginServiceType_AudioObjectAttenuation
Definition: IAkPlugin.h:1421
Ak3DPositionType
3D position type: defines what acts as the emitter position for computing spatialization against the ...
Definition: AkEnums.h:233
virtual AkUInt16 GetMaxBufferLength() const =0
bool bCanChangeRate
True for effects whose sample throughput is different between input and output. Effects that can chan...
Definition: IAkPlugin.h:79
virtual void Mix1inNChannels(AkReal32 *AK_RESTRICT in_pInChannel, AkAudioBuffer *in_pMixBuffer, AkReal32 in_fPrevGain, AkReal32 in_fNextGain, AK::SpeakerVolumes::ConstVectorPtr in_vPrevVolumes, AK::SpeakerVolumes::ConstVectorPtr in_vNextVolumes)=0
1 to N channels mix
Emitter-listener pair: Positioning data pertaining to a single pair of emitter and listener.
Definition: Ak3DObjects.h:459
virtual bool HasListenerRelativeRouting()=0
virtual void Delete(IAkPluginMemAlloc *in_pAllocator, void *&io_attenuationCurve)=0
Free memory of curve obtained with AK::IAkPluginServiceAttenuationCurve::ExtractCurves.
Definition: AkSoundEngineTypes.h:89
virtual IAkGameObjectPluginInfo * GetGameObjectInfo()=0
virtual bool GetMaxAttenuationDistance(AkReal32 &out_fMaxAttenuationDistance)=0
virtual AKRESULT GetGameObjectPosition(AkUInt32 in_uIndex, AkSoundPosition &out_position) const =0
virtual AKRESULT GetPluginInfo(AkPluginInfo &out_rPluginInfo)=0
Definition: AkAudioObject.h:46
virtual void SetUserData(void *in_pUserData)=0
virtual bool IsSendModeEffect() const =0
virtual IAkVoicePluginInfo * GetVoiceInfo()=0
virtual void OnFrameEnd()=0
virtual AKRESULT PostMonitorMessage(const char *in_pszError, AK::Monitor::ErrorLevel in_eErrorLevel)=0
Definition: IAkPluginMemAlloc.h:42
Software effect plug-in interface for out-of-place processing (see Creating Sound Engine Effect Plug-...
Definition: IAkPlugin.h:892
Definition: AkSoundEngineTypes.h:128
virtual AKRESULT SendToSidechainMix(AkUniqueID in_uSidechainId, AkUInt64 in_uSidechainScopeId, AkAudioBuffer *in_pAudioBuffer)=0
virtual ~IAkMixerPluginContext()
Virtual destructor on interface to avoid warnings.
Definition: IAkPlugin.h:490
virtual AkSinkPluginType GetSinkPluginType() const override final
Definition: IAkPlugin.h:1304
virtual void GetPriorities(AkAudioObject **in_ppObjects, AkUInt32 in_uNumObjects, AkPriority *out_pPriorities)=0
Populates out_pPriorities with playback priorities for objects in in_ppObjects.
virtual Ak3DSpatializationMode Get3DSpatializationMode()=0
virtual AkPlayingID GetPlayingID() const =0
Retrieve the Playing ID of the event corresponding to this voice (if applicable).
Interface for the services related to extracting attenuation curves from audio objects and using them...
Definition: IAkPlugin.h:1870
virtual AKRESULT SubmitMarkerNotifications(const AkAudioMarker *in_pMarkers, const AkUInt32 *in_uOffsetsInBuffer, AkUInt32 in_uNumMarkers)=0
virtual AkReal32 GetFocus(AkUInt32 in_uIndex)=0
virtual AKRESULT SignalAudioThread()=0
Definition: IAkPlugin.h:977
virtual void Execute(const AkAudioObjects &io_objects)=0
virtual AKRESULT Init(IAkPluginMemAlloc *in_pAllocator, const void *in_pParamsBlock, AkUInt32 in_uBlockSize)=0
AkCodecDescriptor m_CodecDescriptor
Definition: IAkPlugin.h:2109
virtual bool CanPostMonitorData()=0
virtual AkSpeakerPanningType GetSpeakerPanningType()=0
Definition: IAkPlugin.h:1994
virtual void Execute(AkAudioBuffer *in_pBuffer, AkUInt32 in_uInOffset, AkAudioBuffer *out_pBuffer)=0
virtual AkMIDIEvent GetMidiEvent() const =0
virtual AKRESULT GetSinkChannelConfig(AkChannelConfig &out_sinkConfig, Ak3DAudioSinkCapabilities &out_3dAudioCaps) const =0
virtual AkUInt32 GetNum3DPositions()=0
virtual ~IAkVoicePluginInfo()
Virtual destructor on interface to avoid warnings.
Definition: IAkPlugin.h:223
virtual void Consume(AkAudioBuffer *in_pInputBuffer, AkRamp in_gain)=0
Definition: IAkPlugin.h:460
virtual AkUInt32 GetBusType()=0
virtual AkConnectionType GetConnectionType()=0
Definition: AkSoundEngineTypes.h:272
virtual AKRESULT ComputeSphericalVBAPGains(void *in_pPannerData, AkReal32 in_fAzimuth, AkReal32 in_fElevation, AkUInt32 in_uNumChannels, AK::SpeakerVolumes::VectorPtr out_vVolumes)=0
virtual AKRESULT InitSphericalVBAP(AK::IAkPluginMemAlloc *in_pAllocator, const AkSphericalCoord *in_SphericalPositions, const AkUInt32 in_NbPoints, void *&out_pPannerData)=0
virtual IAkPluginParam * Clone(IAkPluginMemAlloc *in_pAllocator)=0
AkGetDeviceListCallback m_pGetDeviceListFunc
Definition: IAkPlugin.h:2108
Volume ramp specified by end points "previous" and "next".
Definition: AkSoundEngineTypes.h:198
Definition: IAkPlugin.h:62
virtual AkSinkPluginType GetSinkPluginType() const =0
@ AkPluginTypeCodec
Compressor/decompressor plug-in (allows support for custom audio file types).
Definition: AkEnums.h:283
virtual const AkAcousticTexture * GetAcousticTexture(AkAcousticTextureID in_AcousticTextureID)=0
virtual AKRESULT ComputeSphericalCoordinates(const AkEmitterListenerPair &in_pair, AkReal32 &out_fAzimuth, AkReal32 &out_fElevation) const =0
virtual IAkMarkerNotificationService * CreateMarkerNotificationService(IAkSourcePluginContext *in_pSourcePluginContext)=0
@ PluginServiceType_AudioObjectPriority
Definition: IAkPlugin.h:1422
virtual AKRESULT GetOutputID(AkUInt32 &out_uOutputID, AkPluginID &out_uDevicePlugin) const =0
virtual AKRESULT Term(IAkPluginMemAlloc *in_pAllocator)=0
PluginRegistration(AkUInt32 in_ulCompanyID, AkUInt32 in_ulPluginID, const AkCodecDescriptor &in_Descriptor)
Definition: IAkPlugin.h:2076
virtual void Execute(AkAudioBuffer *io_pBuffer)=0
void * m_pRegisterCallbackCookie
Definition: IAkPlugin.h:2105
virtual ~IAkSourcePluginContext()
Virtual destructor on interface to avoid warnings.
Definition: IAkPlugin.h:463
virtual void * GetUserData()=0
Definition: IAkPlugin.h:1442
virtual bool GetListeners(AkGameObjectID *out_aListenerIDs, AkUInt32 &io_uSize) const =0
virtual ~IAkPluginServiceRNG()
Definition: IAkPlugin.h:1858
@ AkGlobalCallbackLocation_BeginRender
Start of frame rendering, after having processed game messages.
Definition: AkCallbackTypes.h:116
virtual bool IsRenderingOffline() const =0
virtual AKRESULT Compute3DPositioning(AkReal32 in_fAngle, AkReal32 in_fElevation, AkReal32 in_fSpread, AkReal32 in_fFocus, AkChannelConfig in_inputConfig, AkChannelMask in_uInputChanSel, AkChannelConfig in_outputConfig, AkReal32 in_fCenterPerc, AK::SpeakerVolumes::MatrixPtr out_mxVolumes)=0
virtual AKRESULT GetParentChannelConfig(AkChannelConfig &out_channelConfig) const =0
virtual IAkPluginService * GetPluginService(AkPluginServiceType in_pluginService) const =0
virtual void UnregisterAnonymousConfig(AkUInt32 in_uNumChannels)=0
virtual AKRESULT SetParamsBlock(const void *in_pParamsBlock, AkUInt32 in_uBlockSize)=0
virtual ~IAkPluginServiceAudioObjectPriority()
Definition: IAkPlugin.h:1931
Software effect plug-in interface for in-place processing (see Creating Sound Engine Effect Plug-ins)...
Definition: IAkPlugin.h:868
virtual void Execute(const AkAudioObjects &in_objects, const AkAudioObjects &out_objects)=0
virtual AKRESULT Init(IAkPluginMemAlloc *in_pAllocator, IAkAudioDeviceEffectPluginContext *in_pEffectPluginContext, IAkPluginParam *in_pParams, const AkAudioFormat &in_rFormat, const Ak3DAudioSinkCapabilities &in_3dCapabilities)=0
virtual AKRESULT GetAnonymousConnections(AkUInt32 in_uNumChannels, AkUInt32 in_uSpeakerIndexToQuery, AkUInt32 *out_pNeighborIndices, AkUInt32 &io_uNumNeighbors)=0
virtual AkReal32 GetGameObjectScaling() const =0
virtual void ResetStarved()=0
Reset the "starvation" flag after IsStarved() returned true.
virtual AKRESULT RelocateMedia(AkUInt8 *, AkUInt8 *)
Definition: IAkPlugin.h:836
virtual void SetOutputDeviceInfoCustomData(void *in_pCustomData)=0
AkSpeakerVolumesConstVectorPtr ConstVectorPtr
Definition: AkTypedefs.h:97
virtual IAkVoicePluginInfo * GetVoiceInfo()=0
virtual AKRESULT ComputeSpeakerVolumesDirect(AkChannelConfig in_inputConfig, AkChannelConfig in_outputConfig, AkReal32 in_fCenterPerc, AK::SpeakerVolumes::MatrixPtr out_mxVolumes)=0
virtual AkReal32 GetDownstreamGain()=0
virtual AkReal32 Evaluate(void *&io_attenuationCurve, AkReal32 x)=0
Evaluate the value of a curve at given x coordinate.
bool bReserved
Legacy bIsAsynchronous plug-in flag, now unused. Preserved for plug-in backward compatibility....
Definition: IAkPlugin.h:80
A collection of audio objects. Encapsulates the audio data and metadata of each audio object in separ...
Definition: AkAudioObject.h:171
virtual AKRESULT TimeSkip(AkUInt32 &io_uFrames)=0
virtual IAkGameObjectPluginInfo * GetGameObjectInfo()=0
Definition: IAkPlugin.h:1856
virtual AKRESULT ComputePositioning(const AkPositioningData &in_posData, AkChannelConfig in_inputConfig, AkChannelConfig in_outputConfig, AK::SpeakerVolumes::MatrixPtr out_mxVolumes)=0
virtual AKRESULT UnregisterGlobalCallback(AkGlobalCallbackFunc in_pCallback, AkUInt32 in_eLocation=AkGlobalCallbackLocation_BeginRender)=0
virtual void ApplyGain(AkAudioBuffer *in_pInputBuffer, AkAudioBuffer *in_pOutputBuffer, AkRamp in_gain, bool in_convertToInt16) const =0
Definition: AkSoundEngineTypes.h:57
AkUInt32 uBuildVersion
Plug-in build version, must match the AK_WWISESDK_VERSION_COMBINED macro from AkWwiseSDKVersion....
Definition: IAkPlugin.h:77
void(* AkGlobalCallbackFunc)(AkGlobalPluginContextPtr in_pContext, enum AkGlobalCallbackLocation in_eLocation, void *in_pCookie)
Definition: AkCallbackTypes.h:402
virtual AKRESULT Reset()=0
AK::IAkPluginParam *(* AkCreateParamCallback)(AK::IAkPluginMemAlloc *in_pAllocator)
Registered plugin parameter node creation function prototype.
Definition: IAkPlugin.h:1405
virtual void Get3DAudioCapabilities(Ak3DAudioSinkCapabilities &out_rCapabilities)=0
Returns the capabilities of the sink's 3D audio system
virtual ~IAkEffectPlugin()
Virtual destructor on interface to avoid warnings.
Definition: IAkPlugin.h:851
virtual ~IAkSinkPlugin()
Virtual destructor on interface to avoid warnings.
Definition: IAkPlugin.h:1260
virtual AkUniqueID GetAttenuation(const AkAudioObject &in_object, AkReal32 &out_distanceScaling) const =0
virtual AKRESULT GetAudioSettings(AkAudioSettings &out_audioSettings) const =0
AkSpeakerVolumesConstMatrixPtr ConstMatrixPtr
Definition: AkTypedefs.h:98
virtual IAkPlatformContext * GetPlatformContext() const =0
Definition: IAkPlugin.h:940
virtual AkReal32 GetCenterPerc()=0
virtual AkPlayingID PostEventSync(AkUniqueID in_eventID, AkGameObjectID in_gameObjectID, AkUInt32 in_uFlags=0, AkCallbackFunc in_pfnCallback=NULL, void *in_pCookie=NULL, AkUInt32 in_cExternals=0, AkExternalSourceInfo *in_pExternalSources=NULL, AkPlayingID in_PlayingID=AK_INVALID_PLAYING_ID)=0
virtual AKRESULT ComputePositioning(const AkPositioningData &in_posData, AkChannelConfig in_inputConfig, AkChannelConfig in_outputConfig, AK::SpeakerVolumes::MatrixPtr out_mxVolumes)=0
virtual ~IAkPluginServiceMarkers()
Definition: IAkPlugin.h:1952
virtual void ApplyGainAndInterleave(AkAudioBuffer *in_pInputBuffer, AkAudioBuffer *in_pOutputBuffer, AkRamp in_gain, bool in_convertToInt16) const =0
virtual AKRESULT Get3DPosition(AkUInt32 in_uIndex, AkEmitterListenerPair &out_soundPosition)=0
virtual ~IAkSourcePlugin()
Virtual destructor on interface to avoid warnings.
Definition: IAkPlugin.h:1312
virtual AkSinkPluginType GetSinkPluginType() const override final
Definition: IAkPlugin.h:1276
virtual AKRESULT ReceiveFromSidechainMix(AkUniqueID in_uSidechainId, AkUInt64 in_uSidechainScopeId, AkAudioBuffer *io_pAudioBuffer)=0
Position and orientation of game objects in the world (i.e. supports 64-bit-precision position)
Definition: Ak3DObjects.h:134
Type for a point in an RTPC or Attenuation curve.
Definition: AkSoundEngineTypes.h:328
Definition: IAkPlugin.h:1133
virtual AKRESULT GetEmitterListenerPair(AkUInt32 in_uIndex, AkEmitterListenerPair &out_emitterListenerPair) const =0
Definition: AkMidiTypes.h:235
virtual void ProcessBiquadFilter(AkAudioBuffer *in_pInputBuffer, AkAudioBuffer *io_pOutputBuffer, AK::AkBiquadCoefficients *in_pCoefs, AK::AkBiquadMemories *io_pMemories, AkUInt32 in_uNumSamples)=0
virtual AK::IAkPluginMemAlloc * GetAllocator()=0
Get the default allocator for plugins. This is useful for performing global initialization tasks shar...
virtual AKRESULT Compute3DPositioning(const AkWorldTransform &in_emitter, const AkWorldTransform &in_listener, AkReal32 in_fCenterPerc, AkReal32 in_fSpread, AkReal32 in_fFocus, AkChannelConfig in_inputConfig, AkChannelMask in_uInputChanSel, AkChannelConfig in_outputConfig, AK::SpeakerVolumes::MatrixPtr out_mxVolumes)=0
Definition: AkSoundEngine.h:193
virtual AKRESULT CreateOutputObjects(AkChannelConfig in_channelConfig, AkAudioObjects &io_objects)=0
virtual AKRESULT Init(IAkPluginMemAlloc *in_pAllocator, IAkSourcePluginContext *in_pSourcePluginContext, IAkPluginParam *in_pParams, AkAudioFormat &io_rFormat)=0
3D vector for some operations in 3D space. Typically intended only for localized calculations due to ...
Definition: Ak3DObjects.h:71
Definition: AkCommonDefs.h:310
virtual ~IAkEffectPluginContext()
Virtual destructor on interface to avoid warnings.
Definition: IAkPlugin.h:373
virtual AkGameObjectID GetGameObjectID() const =0
Get the ID of the game object.
virtual const AkPlatformInitSettings * GetPlatformInitSettings() const =0
AkGlobalCallbackFunc m_pRegisterCallback
Definition: IAkPlugin.h:2104
virtual bool IsPrimary()=0
"Memories" storing the previous state of the digital biquad filter
Definition: AkMixerTypes.h:45
virtual void TerminateMarkerNotificationService(IAkMarkerNotificationService *io_pMarkerNotificationService)=0
virtual AKRESULT ComputeSpeakerVolumesPanner(AkSpeakerPanningType in_ePannerType, const AkVector &in_position, AkReal32 in_fCenterPct, AkChannelConfig in_inputConfig, AkChannelConfig in_outputConfig, AK::SpeakerVolumes::MatrixPtr out_mxVolumes)=0
virtual AkUInt32 GetBufferTick() const =0
virtual const AkInitSettings * GetInitSettings() const =0
virtual AKRESULT PostMonitorMessage(const char *in_pszError, AK::Monitor::ErrorLevel in_eErrorLevel)=0
AkUInt32 AkChannelMask
Channel mask (similar to extensibleWavFormat). Bit values are defined in AkSpeakerConfig....
Definition: AkTypedefs.h:60
bool bCanProcessObjects
Plug-in can process audio objects. They must implement IAkInPlaceObjectPlugin or IAkOutOfPlaceObjectP...
Definition: IAkPlugin.h:81
virtual AkUInt32 GetNumPoints(const void *in_attenuationCurve) const =0
Get the number of points on a curve.
virtual void ProcessInterpBiquadFilter(AkReal32 **in_ppInputData, AkReal32 **io_ppOutputData, AK::AkBiquadCoefficients **in_ppCoefs, AK::AkBiquadMemories **io_ppMemories, AkUInt32 *in_pNumSamplesPerInterpStage, AkUInt32 in_uNumInterpStages, AkUInt32 in_uNumChannels)=0
virtual void Execute(AkAudioBuffer *io_pMainMix, AkAudioBuffer *io_pPassthroughMix, const AkAudioObjects &io_objects, AkRamp &io_gain)=0
static const AkPluginParamID ALL_PLUGIN_DATA_ID
Definition: IAkPlugin.h:773
virtual AkPlayingID PostMIDIOnEventSync(AkUniqueID in_eventID, AkGameObjectID in_gameObjectID, AkMIDIPost *in_pPosts, AkUInt16 in_uNumPosts, bool in_bAbsoluteOffsets=false, AkUInt32 in_uFlags=0, AkCallbackFunc in_pfnCallback=NULL, void *in_pCookie=NULL, AkPlayingID in_playingID=AK_INVALID_PLAYING_ID)=0
virtual AKRESULT GetOutputDeviceInfo(AkOutputDeviceInfo &out_outputDeviceInfo) const =0
virtual AKRESULT TermSphericalVBAP(AK::IAkPluginMemAlloc *in_pAllocator, void *in_pPannerData)=0
virtual AkUInt32 GetNumEmitterListenerPairs() const =0
virtual ~IAkPluginServiceMixer()
Definition: IAkPlugin.h:1743
AK::IAkPlugin *(* AkCreatePluginCallback)(AK::IAkPluginMemAlloc *in_pAllocator)
Registered plugin creation function prototype.
Definition: IAkPlugin.h:1403
Definition: IAkPlugin.h:370
virtual Ak3DPositionType Get3DPositionType()=0
IAkSoftwareCodec *(* AkCreateBankSourceCallback)(void *in_pCtx)
Registered bank source node creation function prototype.
Definition: AkSoundEngineTypes.h:265
virtual AKRESULT RegisterCodec(AkUInt32 in_ulCompanyID, AkUInt32 in_ulPluginID, AkCreateFileSourceCallback in_pFileCreateFunc, AkCreateBankSourceCallback in_pBankCreateFunc)=0
virtual void ComputeAmbisonicsEncoding(AkReal32 in_fAzimuth, AkReal32 in_fElevation, AkChannelConfig in_cfgAmbisonics, AK::SpeakerVolumes::VectorPtr out_vVolumes)=0
AkUInt32 AkPlayingID
A unique identifier generated whenever a PostEvent is called (or when a Dynamic Sequence is created)....
Definition: AkTypedefs.h:34
virtual AkReal32 GetDuration() const =0
virtual AKRESULT GetSpeakerAngles(AkReal32 *io_pfSpeakerAngles, AkUInt32 &io_uNumAngles, AkReal32 &out_fHeightAngle)=0
virtual void Linearize(void *&io_attenuationCurve)=0
Some curves are serialized in the log domain. Use this function to convert all the points to linear a...
#define AK_RESTRICT
Refers to the __restrict compilation flag available on some platforms
Definition: AkTypes.h:45
virtual AKRESULT RegisterGlobalCallback(AkPluginType in_eType, AkUInt32 in_ulCompanyID, AkUInt32 in_ulPluginID, AkGlobalCallbackFunc in_pCallback, AkUInt32 in_eLocation=AkGlobalCallbackLocation_BeginRender, void *in_pCookie=NULL)=0
IAkSoftwareCodec *(* AkCreateFileSourceCallback)(void *in_pCtx)
Registered file source creation function prototype.
Definition: AkSoundEngineTypes.h:263
Definition: IAkPlugin.h:780
virtual void GetPluginCustomGameData(void *&out_rpData, AkUInt32 &out_rDataSize)=0
Interface to retrieve contextual information available to all types of plugins.
Definition: IAkPlugin.h:237
virtual AKRESULT ComputePositioning(const AkPositioningData &in_posData, AkChannelConfig in_inputConfig, AkChannelConfig in_outputConfig, AK::SpeakerVolumes::MatrixPtr out_mxVolumes)=0
AkCreateBankSourceCallback m_pBankCreateFunc
LEGACY: Kept for compatibility with 2019.1. Unused in 2019.2 and up.
Definition: IAkPlugin.h:2103
virtual AKRESULT GetListenerData(AkGameObjectID in_uListener, AkListener &out_listener) const =0
virtual AkUInt32 GetNumGameObjectPositions() const =0
virtual IAkStreamMgr * GetStreamMgr() const =0
Retrieve the streaming manager access interface.
이 페이지가 도움이 되었나요?
작업하는 프로젝트에 대해 알려주세요. 언제든지 도와드릴 준비가 되어 있습니다.
프로젝트를 등록하세요. 아무런 조건이나 의무 사항 없이 빠른 시작을 도와드리겠습니다.
Wwise를 시작해 보세요