28#ifdef WITH_CONVOLUTION
29# include "AUD_Sound.h"
45#ifdef WITH_CONVOLUTION
46static bool sequencer_refresh_sound_length_recursive(
Main *bmain,
Scene *scene,
ListBase *seqbase)
52 if (sequencer_refresh_sound_length_recursive(bmain, scene, &strip->seqbase)) {
65 strip->len = std::max(
66 1,
int(
round((info.
length - strip->sound->offset_time) * scene->frames_per_second())));
68 old = strip->startofs;
69 strip->startofs *= fac;
71 strip->start += (old -
83#ifdef WITH_CONVOLUTION
85 sequencer_refresh_sound_length_recursive(bmain, scene, &scene->
ed->
seqbase);
136 if (strip->scene_sound && sound == strip->sound) {
153 if (meta_parent !=
nullptr) {
203 else if (number == 2) {
207 else if (number == 3) {
218 if (min_freq < 0.0) {
221 if (max_freq < 0.0) {
224 if (max_freq <= min_freq) {
269 eqcmd_n->
next = eqcmd_n->
prev =
nullptr;
279#ifdef WITH_CONVOLUTION
299 eq_mapping = &mapping->curve_mapping;
304 int idx = int(
ceil(minX / interval));
307 float freq =
i * interval;
314 if (
i == idx &&
i > 2) {
315 buf[
i - 1] = 0.5 * (buf[
i] + buf[
i - 1]);
320 buf[
i] = 0.5 * (buf[
i] + buf[
i - 1]);
333 AUD_Sound *sound_out = AUD_Sound_equalize(sound_in,
369 return smwi->
recreator(strip, smd, sound, needs_update);
bool BKE_sound_info_get(struct Main *main, struct bSound *sound, SoundInfo *sound_info)
struct SoundInfo SoundInfo
void BKE_sound_move_scene_sound(const struct Scene *scene, void *handle, int startframe, int endframe, int frameskip, double audio_offset)
void BKE_sound_update_scene_sound(void *handle, struct bSound *sound)
void BKE_sound_move_scene_sound_defaults(struct Scene *scene, struct Strip *sequence)
#define LISTBASE_FOREACH(type, var, list)
BLI_INLINE void BLI_listbase_clear(ListBase *lb)
BLI_INLINE bool BLI_listbase_is_empty(const ListBase *lb)
#define LISTBASE_FOREACH_MUTABLE(type, var, list)
void BLI_addtail(ListBase *listbase, void *vlink) ATTR_NONNULL(1)
bool BLI_remlink_safe(ListBase *listbase, void *vlink) ATTR_NONNULL(1)
@ CURVE_PRESET_CONSTANT_MEDIAN
@ eSeqModifierType_SoundEqualizer
@ STRIP_MODIFIER_FLAG_MUTE
Read Guarded memory(de)allocation.
#define SOUND_EQUALIZER_DEFAULT_MAX_FREQ
#define SOUND_EQUALIZER_SIZE_CONVERSION
#define SOUND_EQUALIZER_SIZE_DEFINITION
#define SOUND_EQUALIZER_DEFAULT_MIN_FREQ
#define SOUND_EQUALIZER_DEFAULT_MAX_DB
void * MEM_calloc_arrayN(size_t len, size_t size, const char *str)
void * MEM_callocN(size_t len, const char *str)
void * MEM_dupallocN(const void *vmemh)
void MEM_freeN(void *vmemh)
ccl_device_inline float2 fabs(const float2 a)
Strip * lookup_meta_by_strip(Editing *ed, const Strip *key)
int time_right_handle_frame_get(const Scene *scene, const Strip *strip)
void sound_update_bounds_all(Scene *scene)
void sound_equalizermodifier_init_data(StripModifierData *smd)
EQCurveMappingData * sound_equalizer_add(SoundEqualizerModifierData *semd, float minX, float maxX)
void sound_update_length(Main *bmain, Scene *scene)
const SoundModifierWorkerInfo workersSoundModifiers[]
int time_left_handle_frame_get(const Scene *, const Strip *strip)
void sound_equalizermodifier_remove_graph(SoundEqualizerModifierData *semd, EQCurveMappingData *eqcmd)
void sound_equalizermodifier_free(StripModifierData *smd)
EQCurveMappingData * sound_equalizermodifier_add_graph(SoundEqualizerModifierData *semd, float min_freq, float max_freq)
void sound_update_bounds(Scene *scene, Strip *strip)
void * sound_modifier_recreator(Strip *strip, StripModifierData *smd, void *sound, bool &needs_update)
void strip_update_sound_bounds_recursive(const Scene *scene, Strip *strip_meta)
float sound_pitch_get(const Scene *scene, const Strip *strip)
void sound_equalizermodifier_copy_data(StripModifierData *target, StripModifierData *smd)
void sound_equalizermodifier_set_graphs(SoundEqualizerModifierData *semd, int number)
void sound_update(Scene *scene, bSound *sound)
static void strip_update_sound_recursive(Scene *scene, ListBase *seqbasep, bSound *sound)
void * sound_equalizermodifier_recreator(Strip *strip, StripModifierData *smd, void *sound_in, bool &needs_update)
const SoundModifierWorkerInfo * sound_modifier_worker_info_get(int type)
struct EQCurveMappingData * next
struct EQCurveMappingData * prev
struct CurveMapping curve_mapping
StripModifierDataRuntime runtime
void *(* recreator)(Strip *strip, StripModifierData *smd, void *sound, bool &needs_update)