| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 | 
							- /******************************************************************************
 
-     Copyright (C) 2013 by Hugh Bailey <[email protected]>
 
-     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 2 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 <http://www.gnu.org/licenses/>.
 
- ******************************************************************************/
 
- #pragma once
 
- #include "util/darray.h"
 
- #include "util/threading.h"
 
- #include "graphics/graphics.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"
 
- #include "obs-encoder.h"
 
- #define LOAD_MODULE_SUBFUNC(name, required) \
 
- 	do { \
 
- 		info->name = load_module_subfunc(module, module_name, \
 
- 				id, #name, required); \
 
- 		if (required && !info->name) \
 
- 			return false; \
 
- 	} while (false)
 
- #define NUM_TEXTURES 2
 
- struct obs_display {
 
- 	swapchain_t                 swap; /* can be NULL if just sound */
 
- 	obs_source_t                channels[MAX_CHANNELS];
 
- 	/* TODO: sound output target */
 
- };
 
- /* ------------------------------------------------------------------------- */
 
- struct obs_video {
 
- 	graphics_t                  graphics;
 
- 	stagesurf_t                 copy_surfaces[NUM_TEXTURES];
 
- 	texture_t                   render_textures[NUM_TEXTURES];
 
- 	texture_t                   output_textures[NUM_TEXTURES];
 
- 	effect_t                    default_effect;
 
- 	bool                        textures_copied[NUM_TEXTURES];
 
- 	bool                        copy_mapped;
 
- 	int                         cur_texture;
 
- 	video_t                     video;
 
- 	pthread_t                   video_thread;
 
- 	bool                        thread_initialized;
 
- 	uint32_t                    base_width;
 
- 	uint32_t                    base_height;
 
- };
 
- struct obs_audio {
 
- 	/* TODO: audio subsystem */
 
- 	audio_t                     audio;
 
- };
 
- /* user sources, output channels, and displays */
 
- struct obs_program_data {
 
- 	/* arrays of pointers jim?  you should really stop being lazy and use
 
- 	 * linked lists. */
 
- 	DARRAY(struct obs_display*) displays;
 
- 	DARRAY(struct obs_source*)  sources;
 
- 	DARRAY(struct obs_output*)  outputs;
 
- 	DARRAY(struct obs_encoder*) encoders;
 
- 	obs_source_t                channels[MAX_CHANNELS];
 
- 	pthread_mutex_t             sources_mutex;
 
- 	pthread_mutex_t             displays_mutex;
 
- 	pthread_mutex_t             outputs_mutex;
 
- 	pthread_mutex_t             encoders_mutex;
 
- 	volatile bool               valid;
 
- };
 
- struct obs_subsystem {
 
- 	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 encoder_info) encoder_types;
 
- 	DARRAY(struct service_info) service_types;
 
- 	signal_handler_t            signals;
 
- 	proc_handler_t              procs;
 
- 	/* segmented into multiple sub-structures to keep things a bit more
 
- 	 * clean and organized */
 
- 	struct obs_video            video;
 
- 	struct obs_audio            audio;
 
- 	struct obs_program_data     data;
 
- };
 
- extern struct obs_subsystem *obs;
 
- extern void *obs_video_thread(void *param);
 
 
  |