コード例 #1
0
void obs_register_encoder_s(const struct obs_encoder_info *info, size_t size)
{
	if (find_encoder(info->id)) {
		encoder_warn("Encoder id '%s' already exists!  "
		                  "Duplicate library?", info->id);
		goto error;
	}

#define CHECK_REQUIRED_VAL_(info, val, func) \
	CHECK_REQUIRED_VAL(struct obs_encoder_info, info, val, func)
	CHECK_REQUIRED_VAL_(info, get_name, obs_register_encoder);
	CHECK_REQUIRED_VAL_(info, create,   obs_register_encoder);
	CHECK_REQUIRED_VAL_(info, destroy,  obs_register_encoder);
	CHECK_REQUIRED_VAL_(info, encode,   obs_register_encoder);

	if (info->type == OBS_ENCODER_AUDIO)
		CHECK_REQUIRED_VAL_(info, get_frame_size, obs_register_encoder);
#undef CHECK_REQUIRED_VAL_

	REGISTER_OBS_DEF(size, obs_encoder_info, obs->encoder_types, info);
	return;

error:
	HANDLE_ERROR(size, obs_encoder_info, info);
}
コード例 #2
0
void obs_register_output_s(const struct obs_output_info *info, size_t size)
{
	if (find_output(info->id)) {
		output_warn("Output id '%s' already exists!  "
		                  "Duplicate library?", info->id);
		goto error;
	}

#define CHECK_REQUIRED_VAL_(info, val, func) \
	CHECK_REQUIRED_VAL(struct obs_output_info, info, val, func)
	CHECK_REQUIRED_VAL_(info, get_name, obs_register_output);
	CHECK_REQUIRED_VAL_(info, create,   obs_register_output);
	CHECK_REQUIRED_VAL_(info, destroy,  obs_register_output);
	CHECK_REQUIRED_VAL_(info, start,    obs_register_output);
	CHECK_REQUIRED_VAL_(info, stop,     obs_register_output);

	if (info->flags & OBS_OUTPUT_ENCODED) {
		CHECK_REQUIRED_VAL_(info, encoded_packet, obs_register_output);
	} else {
		if (info->flags & OBS_OUTPUT_VIDEO)
			CHECK_REQUIRED_VAL_(info, raw_video,
					obs_register_output);

		if (info->flags & OBS_OUTPUT_AUDIO)
			CHECK_REQUIRED_VAL_(info, raw_audio,
					obs_register_output);
	}
#undef CHECK_REQUIRED_VAL_

	REGISTER_OBS_DEF(size, obs_output_info, obs->output_types, info);
	return;

error:
	HANDLE_ERROR(size, obs_output_info, info);
}
コード例 #3
0
ファイル: obs-module.c プロジェクト: keyanmca/obs-studio
void obs_register_output_s(const struct obs_output_info *info, size_t size)
{
    if (find_output(info->id)) {
        blog(LOG_WARNING, "Output id '%s' already exists!  "
             "Duplicate library?", info->id);
        return;
    }

    CHECK_REQUIRED_VAL(info, get_name, obs_register_output);
    CHECK_REQUIRED_VAL(info, create,   obs_register_output);
    CHECK_REQUIRED_VAL(info, destroy,  obs_register_output);
    CHECK_REQUIRED_VAL(info, start,    obs_register_output);
    CHECK_REQUIRED_VAL(info, stop,     obs_register_output);

    if (info->flags & OBS_OUTPUT_ENCODED) {
        CHECK_REQUIRED_VAL(info, encoded_packet, obs_register_output);
    } else {
        if (info->flags & OBS_OUTPUT_VIDEO)
            CHECK_REQUIRED_VAL(info, raw_video,
                               obs_register_output);

        if (info->flags & OBS_OUTPUT_AUDIO)
            CHECK_REQUIRED_VAL(info, raw_audio,
                               obs_register_output);
    }

    REGISTER_OBS_DEF(size, obs_output_info, obs->output_types, info);
}
コード例 #4
0
ファイル: obs-module.c プロジェクト: Jhonthe7th/obs-studio
void obs_regsiter_modal_ui_s(const struct obs_modal_ui *info, size_t size)
{
	CHECK_REQUIRED_VAL(info, task,   obs_regsiter_modal_ui);
	CHECK_REQUIRED_VAL(info, target, obs_regsiter_modal_ui);
	CHECK_REQUIRED_VAL(info, exec,   obs_regsiter_modal_ui);

	REGISTER_OBS_DEF(size, obs_modal_ui, obs->modal_ui_callbacks, info);
}
コード例 #5
0
ファイル: obs-module.c プロジェクト: rightpeter/obs-studio
void obs_regsiter_modal_ui_s(const struct obs_modal_ui *info, size_t size)
{
#define CHECK_REQUIRED_VAL_(info, val, func) \
	CHECK_REQUIRED_VAL(struct obs_modal_ui, info, val, func)
    CHECK_REQUIRED_VAL_(info, task,   obs_regsiter_modal_ui);
    CHECK_REQUIRED_VAL_(info, target, obs_regsiter_modal_ui);
    CHECK_REQUIRED_VAL_(info, exec,   obs_regsiter_modal_ui);
#undef CHECK_REQUIRED_VAL_

    REGISTER_OBS_DEF(size, obs_modal_ui, obs->modal_ui_callbacks, info);
}
コード例 #6
0
ファイル: obs-module.c プロジェクト: Jhonthe7th/obs-studio
void obs_register_encoder_s(const struct obs_encoder_info *info, size_t size)
{
	CHECK_REQUIRED_VAL(info, getname,    obs_register_encoder);
	CHECK_REQUIRED_VAL(info, create,     obs_register_encoder);
	CHECK_REQUIRED_VAL(info, destroy,    obs_register_encoder);
	CHECK_REQUIRED_VAL(info, encode,     obs_register_encoder);

	if (info->type == OBS_ENCODER_AUDIO)
		CHECK_REQUIRED_VAL(info, frame_size, obs_register_encoder);

	REGISTER_OBS_DEF(size, obs_encoder_info, obs->encoder_types, info);
}
コード例 #7
0
ファイル: obs-module.c プロジェクト: keyanmca/obs-studio
void obs_register_service_s(const struct obs_service_info *info, size_t size)
{
    if (find_service(info->id)) {
        blog(LOG_WARNING, "Service id '%s' already exists!  "
             "Duplicate library?", info->id);
        return;
    }

    CHECK_REQUIRED_VAL(info, get_name, obs_register_service);
    CHECK_REQUIRED_VAL(info, create,   obs_register_service);
    CHECK_REQUIRED_VAL(info, destroy,  obs_register_service);

    REGISTER_OBS_DEF(size, obs_service_info, obs->service_types, info);
}
コード例 #8
0
void obs_regsiter_modeless_ui_s(const struct obs_modeless_ui *info, size_t size)
{
#define CHECK_REQUIRED_VAL_(info, val, func) \
	CHECK_REQUIRED_VAL(struct obs_modeless_ui, info, val, func)
	CHECK_REQUIRED_VAL_(info, task,   obs_regsiter_modeless_ui);
	CHECK_REQUIRED_VAL_(info, target, obs_regsiter_modeless_ui);
	CHECK_REQUIRED_VAL_(info, create, obs_regsiter_modeless_ui);
#undef CHECK_REQUIRED_VAL_

	REGISTER_OBS_DEF(size, obs_modeless_ui, obs->modeless_ui_callbacks,
			info);
	return;

error:
	HANDLE_ERROR(size, obs_modeless_ui, info);
}
コード例 #9
0
ファイル: obs-module.c プロジェクト: keyanmca/obs-studio
void obs_register_encoder_s(const struct obs_encoder_info *info, size_t size)
{
    if (find_encoder(info->id)) {
        blog(LOG_WARNING, "Encoder id '%s' already exists!  "
             "Duplicate library?", info->id);
        return;
    }

    CHECK_REQUIRED_VAL(info, get_name, obs_register_encoder);
    CHECK_REQUIRED_VAL(info, create,   obs_register_encoder);
    CHECK_REQUIRED_VAL(info, destroy,  obs_register_encoder);
    CHECK_REQUIRED_VAL(info, encode,   obs_register_encoder);

    if (info->type == OBS_ENCODER_AUDIO)
        CHECK_REQUIRED_VAL(info, get_frame_size, obs_register_encoder);

    REGISTER_OBS_DEF(size, obs_encoder_info, obs->encoder_types, info);
}
コード例 #10
0
void obs_register_service_s(const struct obs_service_info *info, size_t size)
{
	if (find_service(info->id)) {
		service_warn("Service id '%s' already exists!  "
		                  "Duplicate library?", info->id);
		goto error;
	}

#define CHECK_REQUIRED_VAL_(info, val, func) \
	CHECK_REQUIRED_VAL(struct obs_service_info, info, val, func)
	CHECK_REQUIRED_VAL_(info, get_name, obs_register_service);
	CHECK_REQUIRED_VAL_(info, create,   obs_register_service);
	CHECK_REQUIRED_VAL_(info, destroy,  obs_register_service);
#undef CHECK_REQUIRED_VAL_

	REGISTER_OBS_DEF(size, obs_service_info, obs->service_types, info);
	return;

error:
	HANDLE_ERROR(size, obs_service_info, info);
}
コード例 #11
0
ファイル: obs-module.c プロジェクト: Jhonthe7th/obs-studio
void obs_register_output_s(const struct obs_output_info *info, size_t size)
{
	CHECK_REQUIRED_VAL(info, getname, obs_register_output);
	CHECK_REQUIRED_VAL(info, create,  obs_register_output);
	CHECK_REQUIRED_VAL(info, destroy, obs_register_output);
	CHECK_REQUIRED_VAL(info, start,   obs_register_output);
	CHECK_REQUIRED_VAL(info, stop,    obs_register_output);

	if (info->flags & OBS_OUTPUT_ENCODED) {
		CHECK_REQUIRED_VAL(info, encoded_packet, obs_register_output);
	} else {
		if (info->flags & OBS_OUTPUT_VIDEO)
			CHECK_REQUIRED_VAL(info, raw_video,
					obs_register_output);

		if (info->flags & OBS_OUTPUT_AUDIO)
			CHECK_REQUIRED_VAL(info, raw_audio,
					obs_register_output);
	}

	REGISTER_OBS_DEF(size, obs_output_info, obs->output_types, info);
}