/****************************************************************************** Copyright (C) 2013 by Hugh Bailey This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . ******************************************************************************/ #pragma once #include "util/darray.h" #include "util/threading.h" #include "graphics/graphics.h" #include "media-io/media-io.h" #include "media-io/video-io.h" #include "media-io/audio-io.h" #include "obs.h" #include "obs-module.h" #include "obs-source.h" #include "obs-output.h" /*#include "obs-service.h"*/ #define NUM_TEXTURES 2 struct obs_display { swapchain_t swap; /* can be NULL if just sound */ obs_source_t source; /* TODO: sound output target */ }; struct obs_data { DARRAY(struct obs_module) modules; DARRAY(struct source_info) input_types; DARRAY(struct source_info) filter_types; DARRAY(struct source_info) transition_types; DARRAY(struct output_info) output_types; /*DARRAY(struct service_info) service_types;*/ DARRAY(struct obs_display*) displays; DARRAY(struct obs_source*) sources; /* graphics */ graphics_t graphics; stagesurf_t copy_surfaces[NUM_TEXTURES]; effect_t default_effect; bool textures_copied[NUM_TEXTURES]; bool copy_mapped; int cur_texture; /* TODO: sound output stuff */ /* media */ media_t media; video_t video; audio_t audio; uint32_t output_width; uint32_t output_height; /* threading */ pthread_t video_thread; bool thread_initialized; pthread_mutex_t source_list_mutex; pthread_mutex_t display_list_mutex; obs_source_t primary_source; }; extern struct obs_data *obs; extern void *obs_video_thread(void *param);