libobs: Allow filter processing function to return false
(Note: this commit also modifies the obs-filters and test-input modules) Changes the obs_source_process_filter_begin return type so that it returns true/false to indicate that filter processing should or should not continue (for example if the filter is bypassed or if there's some other sort of issue that causes the filtering to fail)
This commit is contained in:
@@ -194,8 +194,9 @@ static void chroma_key_render(void *data, gs_effect_t *effect)
|
||||
uint32_t height = obs_source_get_base_height(target);
|
||||
struct vec2 pixel_size;
|
||||
|
||||
obs_source_process_filter_begin(filter->context, GS_RGBA,
|
||||
OBS_ALLOW_DIRECT_RENDERING);
|
||||
if (!obs_source_process_filter_begin(filter->context, GS_RGBA,
|
||||
OBS_ALLOW_DIRECT_RENDERING))
|
||||
return;
|
||||
|
||||
vec2_set(&pixel_size, 1.0f / (float)width, 1.0f / (float)height);
|
||||
|
||||
|
@@ -119,8 +119,9 @@ static void color_filter_render(void *data, gs_effect_t *effect)
|
||||
{
|
||||
struct color_filter_data *filter = data;
|
||||
|
||||
obs_source_process_filter_begin(filter->context, GS_RGBA,
|
||||
OBS_ALLOW_DIRECT_RENDERING);
|
||||
if (!obs_source_process_filter_begin(filter->context, GS_RGBA,
|
||||
OBS_ALLOW_DIRECT_RENDERING))
|
||||
return;
|
||||
|
||||
gs_effect_set_vec4(filter->color_param, &filter->color);
|
||||
gs_effect_set_float(filter->contrast_param, filter->contrast);
|
||||
|
@@ -166,8 +166,9 @@ static void color_key_render(void *data, gs_effect_t *effect)
|
||||
{
|
||||
struct color_key_filter_data *filter = data;
|
||||
|
||||
obs_source_process_filter_begin(filter->context, GS_RGBA,
|
||||
OBS_ALLOW_DIRECT_RENDERING);
|
||||
if (!obs_source_process_filter_begin(filter->context, GS_RGBA,
|
||||
OBS_ALLOW_DIRECT_RENDERING))
|
||||
return;
|
||||
|
||||
gs_effect_set_vec4(filter->color_param, &filter->color);
|
||||
gs_effect_set_float(filter->contrast_param, filter->contrast);
|
||||
|
@@ -193,8 +193,9 @@ static void crop_filter_render(void *data, gs_effect_t *effect)
|
||||
{
|
||||
struct crop_filter_data *filter = data;
|
||||
|
||||
obs_source_process_filter_begin(filter->context, GS_RGBA,
|
||||
OBS_NO_DIRECT_RENDERING);
|
||||
if (!obs_source_process_filter_begin(filter->context, GS_RGBA,
|
||||
OBS_NO_DIRECT_RENDERING))
|
||||
return;
|
||||
|
||||
gs_effect_set_vec2(filter->param_mul, &filter->mul_val);
|
||||
gs_effect_set_vec2(filter->param_add, &filter->add_val);
|
||||
|
@@ -210,8 +210,9 @@ static void mask_filter_render(void *data, gs_effect_t *effect)
|
||||
vec2_div(&add_val, &add_val, &mask_size);
|
||||
}
|
||||
|
||||
obs_source_process_filter_begin(filter->context, GS_RGBA,
|
||||
OBS_ALLOW_DIRECT_RENDERING);
|
||||
if (!obs_source_process_filter_begin(filter->context, GS_RGBA,
|
||||
OBS_ALLOW_DIRECT_RENDERING))
|
||||
return;
|
||||
|
||||
param = gs_effect_get_param_by_name(filter->effect, "target");
|
||||
gs_effect_set_texture(param, filter->target);
|
||||
|
@@ -178,8 +178,9 @@ static void scroll_filter_render(void *data, gs_effect_t *effect)
|
||||
(float)cx / (float)base_cx,
|
||||
(float)cy / (float)base_cy);
|
||||
|
||||
obs_source_process_filter_begin(filter->context, GS_RGBA,
|
||||
OBS_NO_DIRECT_RENDERING);
|
||||
if (!obs_source_process_filter_begin(filter->context, GS_RGBA,
|
||||
OBS_NO_DIRECT_RENDERING))
|
||||
return;
|
||||
|
||||
gs_effect_set_vec2(filter->param_add, &filter->offset);
|
||||
gs_effect_set_vec2(filter->param_mul, &mul_val);
|
||||
|
@@ -77,11 +77,10 @@ static void *sharpness_create(obs_data_t *settings, obs_source_t *context)
|
||||
static void sharpness_render(void *data, gs_effect_t *effect)
|
||||
{
|
||||
struct sharpness_data *filter = data;
|
||||
if (!filter) return;
|
||||
if (!obs_filter_get_target(filter->context)) return;
|
||||
|
||||
obs_source_process_filter_begin(filter->context, GS_RGBA,
|
||||
OBS_ALLOW_DIRECT_RENDERING);
|
||||
if (!obs_source_process_filter_begin(filter->context, GS_RGBA,
|
||||
OBS_ALLOW_DIRECT_RENDERING))
|
||||
return;
|
||||
|
||||
filter->texwidth =(float)obs_source_get_width(
|
||||
obs_filter_get_target(filter->context));
|
||||
|
Reference in New Issue
Block a user