0
0
mirror of https://github.com/obsproject/obs-studio.git synced 2024-09-20 13:08:50 +02:00
obs-studio/plugins/obs-transitions/transition-fade.c
jp9000 79b13b7df6 obs-transitions: Mark functions as static
These functions were mistakenly not marked as static.  They are not used
outside of their compiled object module files, therefore there's no
reason for them not to be static.
2016-02-21 12:11:09 -08:00

101 lines
2.3 KiB
C

#include <obs-module.h>
struct fade_info {
obs_source_t *source;
gs_effect_t *effect;
gs_eparam_t *a_param;
gs_eparam_t *b_param;
gs_eparam_t *fade_param;
};
static const char *fade_get_name(void *type_data)
{
UNUSED_PARAMETER(type_data);
return obs_module_text("FadeTransition");
}
static void *fade_create(obs_data_t *settings, obs_source_t *source)
{
struct fade_info *fade;
char *file = obs_module_file("fade_transition.effect");
gs_effect_t *effect;
obs_enter_graphics();
effect = gs_effect_create_from_file(file, NULL);
obs_leave_graphics();
bfree(file);
if (!effect) {
blog(LOG_ERROR, "Could not find fade_transition.effect");
return NULL;
}
fade = bmalloc(sizeof(*fade));
fade->source = source;
fade->effect = effect;
fade->a_param = gs_effect_get_param_by_name(effect, "tex_a");
fade->b_param = gs_effect_get_param_by_name(effect, "tex_b");
fade->fade_param = gs_effect_get_param_by_name(effect, "fade_val");
UNUSED_PARAMETER(settings);
return fade;
}
static void fade_destroy(void *data)
{
struct fade_info *fade = data;
bfree(fade);
}
static void fade_callback(void *data, gs_texture_t *a, gs_texture_t *b, float t,
uint32_t cx, uint32_t cy)
{
struct fade_info *fade = data;
gs_effect_set_texture(fade->a_param, a);
gs_effect_set_texture(fade->b_param, b);
gs_effect_set_float(fade->fade_param, t);
while (gs_effect_loop(fade->effect, "Fade"))
gs_draw_sprite(NULL, 0, cx, cy);
}
static void fade_video_render(void *data, gs_effect_t *effect)
{
struct fade_info *fade = data;
obs_transition_video_render(fade->source, fade_callback);
UNUSED_PARAMETER(effect);
}
static float mix_a(void *data, float t)
{
UNUSED_PARAMETER(data);
return 1.0f - t;
}
static float mix_b(void *data, float t)
{
UNUSED_PARAMETER(data);
return t;
}
static bool fade_audio_render(void *data, uint64_t *ts_out,
struct obs_source_audio_mix *audio, uint32_t mixers,
size_t channels, size_t sample_rate)
{
struct fade_info *fade = data;
return obs_transition_audio_render(fade->source, ts_out,
audio, mixers, channels, sample_rate, mix_a, mix_b);
}
struct obs_source_info fade_transition = {
.id = "fade_transition",
.type = OBS_SOURCE_TYPE_TRANSITION,
.get_name = fade_get_name,
.create = fade_create,
.destroy = fade_destroy,
.video_render = fade_video_render,
.audio_render = fade_audio_render
};