Open Broadcaster Software
Free, open source software for live streaming and recording
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
obs-source.h
Go to the documentation of this file.
1 /******************************************************************************
2  Copyright (C) 2013-2014 by Hugh Bailey <obs.jim@gmail.com>
3 
4  This program is free software: you can redistribute it and/or modify
5  it under the terms of the GNU General Public License as published by
6  the Free Software Foundation, either version 2 of the License, or
7  (at your option) any later version.
8 
9  This program is distributed in the hope that it will be useful,
10  but WITHOUT ANY WARRANTY; without even the implied warranty of
11  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  GNU General Public License for more details.
13 
14  You should have received a copy of the GNU General Public License
15  along with this program. If not, see <http://www.gnu.org/licenses/>.
16 ******************************************************************************/
17 
18 #pragma once
19 
20 #include "obs.h"
21 
29 #ifdef __cplusplus
30 extern "C" {
31 #endif
32 
33 
39 };
40 
41 
55 #define OBS_SOURCE_VIDEO (1<<0)
56 
64 #define OBS_SOURCE_AUDIO (1<<1)
65 
67 #define OBS_SOURCE_ASYNC (1<<2)
68 
80 #define OBS_SOURCE_ASYNC_VIDEO (OBS_SOURCE_ASYNC | OBS_SOURCE_VIDEO)
81 
88 #define OBS_SOURCE_CUSTOM_DRAW (1<<3)
89 
96 #define OBS_SOURCE_INTERACTION (1<<5)
97 
107 #define OBS_SOURCE_COMPOSITE (1<<6)
108 
116 #define OBS_SOURCE_DO_NOT_DUPLICATE (1<<7)
117 
121 #define OBS_SOURCE_DEPRECATED (1<<8)
122 
129 #define OBS_SOURCE_DO_NOT_MONITOR (1<<9)
130 
133 typedef void (*obs_source_enum_proc_t)(obs_source_t *parent,
134  obs_source_t *child, void *param);
135 
138 };
139 
144  /* ----------------------------------------------------------------- */
145  /* Required implementation*/
146 
148  const char *id;
149 
158 
161 
168  const char *(*get_name)(void *type_data);
169 
177  void *(*create)(obs_data_t *settings, obs_source_t *source);
178 
185  void (*destroy)(void *data);
186 
189  uint32_t (*get_width)(void *data);
190 
193  uint32_t (*get_height)(void *data);
194 
195  /* ----------------------------------------------------------------- */
196  /* Optional implementation */
197 
203  void (*get_defaults)(obs_data_t *settings);
204 
210  obs_properties_t *(*get_properties)(void *data);
211 
218  void (*update)(void *data, obs_data_t *settings);
219 
221  void (*activate)(void *data);
222 
227  void (*deactivate)(void *data);
228 
230  void (*show)(void *data);
231 
233  void (*hide)(void *data);
234 
241  void (*video_tick)(void *data, float seconds);
242 
270  void (*video_render)(void *data, gs_effect_t *effect);
271 
282  struct obs_source_frame *(*filter_video)(void *data,
283  struct obs_source_frame *frame);
284 
299  struct obs_audio_data *(*filter_audio)(void *data,
300  struct obs_audio_data *audio);
301 
311  void (*enum_active_sources)(void *data,
312  obs_source_enum_proc_t enum_callback,
313  void *param);
314 
324  void (*save)(void *data, obs_data_t *settings);
325 
334  void (*load)(void *data, obs_data_t *settings);
335 
346  void (*mouse_click)(void *data,
347  const struct obs_mouse_event *event,
348  int32_t type, bool mouse_up, uint32_t click_count);
356  void (*mouse_move)(void *data,
357  const struct obs_mouse_event *event, bool mouse_leave);
358 
367  void (*mouse_wheel)(void *data,
368  const struct obs_mouse_event *event, int x_delta,
369  int y_delta);
377  void (*focus)(void *data, bool focus);
378 
387  void (*key_click)(void *data, const struct obs_key_event *event,
388  bool key_up);
389 
396  void (*filter_remove)(void *data, obs_source_t *source);
397 
401  void *type_data;
402 
406  void (*free_type_data)(void *type_data);
407 
408  bool (*audio_render)(void *data, uint64_t *ts_out,
409  struct obs_source_audio_mix *audio_output,
410  uint32_t mixers, size_t channels, size_t sample_rate);
411 
423  void (*enum_all_sources)(void *data,
424  obs_source_enum_proc_t enum_callback,
425  void *param);
426 };
427 
428 EXPORT void obs_register_source_s(const struct obs_source_info *info,
429  size_t size);
430 
437 #define obs_register_source(info) \
438  obs_register_source_s(info, sizeof(struct obs_source_info))
439 
440 #ifdef __cplusplus
441 }
442 #endif
Definition: obs-interaction.h:50
void(* update)(void *data, obs_data_t *settings)
Definition: obs-source.h:218
void(* hide)(void *data)
Definition: obs-source.h:233
void(* key_click)(void *data, const struct obs_key_event *event, bool key_up)
Definition: obs-source.h:387
void(* focus)(void *data, bool focus)
Definition: obs-source.h:377
unsigned uint32_t
Definition: vc_stdint.h:31
Definition: obs-interaction.h:44
Definition: obs-internal.h:519
int int32_t
Definition: vc_stdint.h:30
uint32_t output_flags
Definition: obs-source.h:160
enum obs_source_type type
Definition: obs-source.h:157
Definition: audio-io.h:74
void(* mouse_click)(void *data, const struct obs_mouse_event *event, int32_t type, bool mouse_up, uint32_t click_count)
Definition: obs-source.h:346
const char * id
Definition: obs-source.h:148
unsigned __int64 uint64_t
Definition: vc_stdint.h:33
Definition: obs-source.h:35
struct obs_data obs_data_t
Definition: obs-data.h:42
Definition: obs-source.h:143
uint8_t * data[MAX_AV_PLANES]
Definition: obs.h:192
void * type_data
Definition: obs-source.h:401
struct audio_output_data output[MAX_AUDIO_MIXES]
Definition: obs-source.h:137
struct obs_properties obs_properties_t
Definition: obs-properties.h:103
void(* video_tick)(void *data, float seconds)
Definition: obs-source.h:241
void(* obs_source_enum_proc_t)(obs_source_t *parent, obs_source_t *child, void *param)
Definition: obs-source.h:133
#define EXPORT
Definition: c99defs.h:49
obs_source_type
Definition: obs-source.h:34
uint8_t * data[MAX_AV_PLANES]
Definition: obs.h:222
void(* filter_remove)(void *data, obs_source_t *source)
Definition: obs-source.h:396
#define MAX_AUDIO_MIXES
Definition: audio-io.h:28
void(* activate)(void *data)
Definition: obs-source.h:221
void(* enum_active_sources)(void *data, obs_source_enum_proc_t enum_callback, void *param)
Definition: obs-source.h:311
Definition: effect.h:139
void(* get_defaults)(obs_data_t *settings)
Definition: obs-source.h:203
Definition: obs-source.h:38
void(* deactivate)(void *data)
Definition: obs-source.h:227
Definition: obs-source.h:37
uint32_t(* get_height)(void *data)
Definition: obs-source.h:193
Definition: obs.h:221
Definition: obs-source.h:36
Definition: obs-source.h:136
void(* save)(void *data, obs_data_t *settings)
Definition: obs-source.h:324
void(* video_render)(void *data, gs_effect_t *effect)
Definition: obs-source.h:270
void(* mouse_wheel)(void *data, const struct obs_mouse_event *event, int x_delta, int y_delta)
Definition: obs-source.h:367
void(* free_type_data)(void *type_data)
Definition: obs-source.h:406
uint32_t(* get_width)(void *data)
Definition: obs-source.h:189
void(* enum_all_sources)(void *data, obs_source_enum_proc_t enum_callback, void *param)
Definition: obs-source.h:423
void(* mouse_move)(void *data, const struct obs_mouse_event *event, bool mouse_leave)
Definition: obs-source.h:356
bool(* audio_render)(void *data, uint64_t *ts_out, struct obs_source_audio_mix *audio_output, uint32_t mixers, size_t channels, size_t sample_rate)
Definition: obs-source.h:408
void(* destroy)(void *data)
Definition: obs-source.h:185
Main libobs header used by applications.
EXPORT void obs_register_source_s(const struct obs_source_info *info, size_t size)
#define bool
Definition: vc_stdbool.h:5
void(* show)(void *data)
Definition: obs-source.h:230
Definition: obs.h:191
void(* load)(void *data, obs_data_t *settings)
Definition: obs-source.h:334