Пример #1
0
/* internal initialization */
bool obs_source_init(struct obs_source *source, const char *settings,
                     const struct source_info *info)
{
    uint32_t flags = info->get_output_flags(source->data);

    source->refs = 1;
    source->volume = 1.0f;
    pthread_mutex_init_value(&source->filter_mutex);
    pthread_mutex_init_value(&source->video_mutex);
    pthread_mutex_init_value(&source->audio_mutex);
    dstr_copy(&source->settings, settings);
    memcpy(&source->callbacks, info, sizeof(struct source_info));

    if (pthread_mutex_init(&source->filter_mutex, NULL) != 0)
        return false;
    if (pthread_mutex_init(&source->audio_mutex, NULL) != 0)
        return false;
    if (pthread_mutex_init(&source->video_mutex, NULL) != 0)
        return false;

    if (flags & SOURCE_AUDIO) {
        source->audio_line = audio_output_createline(obs->audio.audio,
                             source->name);
        if (!source->audio_line) {
            blog(LOG_ERROR, "Failed to create audio line for "
                 "source '%s'", source->name);
            return false;
        }
    }

    return true;
}
Пример #2
0
/* internal initialization */
bool obs_source_init(struct obs_source *source,
		const struct obs_source_info *info)
{
	source->refs = 1;
	source->user_volume = 1.0f;
	source->present_volume = 0.0f;
	source->sync_offset = 0;
	pthread_mutex_init_value(&source->filter_mutex);
	pthread_mutex_init_value(&source->video_mutex);
	pthread_mutex_init_value(&source->audio_mutex);

	memcpy(&source->info, info, sizeof(struct obs_source_info));

	if (pthread_mutex_init(&source->filter_mutex, NULL) != 0)
		return false;
	if (pthread_mutex_init(&source->audio_mutex, NULL) != 0)
		return false;
	if (pthread_mutex_init(&source->video_mutex, NULL) != 0)
		return false;

	if (info->output_flags & OBS_SOURCE_AUDIO) {
		source->audio_line = audio_output_createline(obs->audio.audio,
				source->context.name);
		if (!source->audio_line) {
			blog(LOG_ERROR, "Failed to create audio line for "
			                "source '%s'", source->context.name);
			return false;
		}
	}

	obs_context_data_insert(&source->context,
			&obs->data.sources_mutex,
			&obs->data.first_source);
	return true;
}