12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- #include <obs-module.h>
- struct cut_info {
- obs_source_t *source;
- };
- static const char *cut_get_name(void *type_data)
- {
- UNUSED_PARAMETER(type_data);
- return obs_module_text("CutTransition");
- }
- static void *cut_create(obs_data_t *settings, obs_source_t *source)
- {
- struct cut_info *cut;
- cut = bmalloc(sizeof(*cut));
- cut->source = source;
- obs_transition_enable_fixed(source, true, 0);
- UNUSED_PARAMETER(settings);
- return cut;
- }
- static void cut_destroy(void *data)
- {
- struct cut_info *cut = data;
- bfree(cut);
- }
- static void cut_video_render(void *data, gs_effect_t *effect)
- {
- struct cut_info *cut = data;
- obs_transition_video_render(cut->source, NULL);
- 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 cut_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 cut_info *cut = data;
- return obs_transition_audio_render(cut->source, ts_out, audio, mixers, channels, sample_rate, mix_a, mix_b);
- }
- static enum gs_color_space cut_video_get_color_space(void *data, size_t count,
- const enum gs_color_space *preferred_spaces)
- {
- UNUSED_PARAMETER(count);
- UNUSED_PARAMETER(preferred_spaces);
- struct cut_info *const cut = data;
- return obs_transition_video_get_color_space(cut->source);
- }
- struct obs_source_info cut_transition = {
- .id = "cut_transition",
- .type = OBS_SOURCE_TYPE_TRANSITION,
- .get_name = cut_get_name,
- .create = cut_create,
- .destroy = cut_destroy,
- .video_render = cut_video_render,
- .audio_render = cut_audio_render,
- .video_get_color_space = cut_video_get_color_space,
- };
|