Open Broadcaster Software
Free, open source software for live streaming and recording
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 
38 };
39 
44 };
45 
61 };
62 
72 };
73 
87 #define OBS_SOURCE_VIDEO (1 << 0)
88 
96 #define OBS_SOURCE_AUDIO (1 << 1)
97 
99 #define OBS_SOURCE_ASYNC (1 << 2)
100 
112 #define OBS_SOURCE_ASYNC_VIDEO (OBS_SOURCE_ASYNC | OBS_SOURCE_VIDEO)
113 
120 #define OBS_SOURCE_CUSTOM_DRAW (1 << 3)
121 
128 #define OBS_SOURCE_INTERACTION (1 << 5)
129 
139 #define OBS_SOURCE_COMPOSITE (1 << 6)
140 
148 #define OBS_SOURCE_DO_NOT_DUPLICATE (1 << 7)
149 
153 #define OBS_SOURCE_DEPRECATED (1 << 8)
154 
163 #define OBS_SOURCE_DO_NOT_SELF_MONITOR (1 << 9)
164 
168 #define OBS_SOURCE_CAP_DISABLED (1 << 10)
169 
173 #define OBS_SOURCE_CAP_OBSOLETE OBS_SOURCE_CAP_DISABLED
174 
179 #define OBS_SOURCE_MONITOR_BY_DEFAULT (1 << 11)
180 
182 #define OBS_SOURCE_SUBMIX (1 << 12)
183 
187 #define OBS_SOURCE_CONTROLLABLE_MEDIA (1 << 13)
188 
191 typedef void (*obs_source_enum_proc_t)(obs_source_t *parent,
192  obs_source_t *child, void *param);
193 
196 };
197 
202  /* ----------------------------------------------------------------- */
203  /* Required implementation*/
204 
206  const char *id;
207 
216 
218  uint32_t output_flags;
219 
226  const char *(*get_name)(void *type_data);
227 
235  void *(*create)(obs_data_t *settings, obs_source_t *source);
236 
243  void (*destroy)(void *data);
244 
247  uint32_t (*get_width)(void *data);
248 
251  uint32_t (*get_height)(void *data);
252 
253  /* ----------------------------------------------------------------- */
254  /* Optional implementation */
255 
262  void (*get_defaults)(obs_data_t *settings);
263 
270  obs_properties_t *(*get_properties)(void *data);
271 
278  void (*update)(void *data, obs_data_t *settings);
279 
281  void (*activate)(void *data);
282 
287  void (*deactivate)(void *data);
288 
290  void (*show)(void *data);
291 
293  void (*hide)(void *data);
294 
301  void (*video_tick)(void *data, float seconds);
302 
330  void (*video_render)(void *data, gs_effect_t *effect);
331 
342  struct obs_source_frame *(*filter_video)(
343  void *data, struct obs_source_frame *frame);
344 
359  struct obs_audio_data *(*filter_audio)(void *data,
360  struct obs_audio_data *audio);
361 
371  void (*enum_active_sources)(void *data,
372  obs_source_enum_proc_t enum_callback,
373  void *param);
374 
384  void (*save)(void *data, obs_data_t *settings);
385 
394  void (*load)(void *data, obs_data_t *settings);
395 
406  void (*mouse_click)(void *data, const struct obs_mouse_event *event,
407  int32_t type, bool mouse_up, uint32_t click_count);
415  void (*mouse_move)(void *data, const struct obs_mouse_event *event,
416  bool mouse_leave);
417 
426  void (*mouse_wheel)(void *data, const struct obs_mouse_event *event,
427  int x_delta, int y_delta);
435  void (*focus)(void *data, bool focus);
436 
445  void (*key_click)(void *data, const struct obs_key_event *event,
446  bool key_up);
447 
454  void (*filter_remove)(void *data, obs_source_t *source);
455 
459  void *type_data;
460 
464  void (*free_type_data)(void *type_data);
465 
466  bool (*audio_render)(void *data, uint64_t *ts_out,
467  struct obs_source_audio_mix *audio_output,
468  uint32_t mixers, size_t channels,
469  size_t sample_rate);
470 
482  void (*enum_all_sources)(void *data,
483  obs_source_enum_proc_t enum_callback,
484  void *param);
485 
486  void (*transition_start)(void *data);
487  void (*transition_stop)(void *data);
488 
498  void (*get_defaults2)(void *type_data, obs_data_t *settings);
499 
507  obs_properties_t *(*get_properties2)(void *data, void *type_data);
508 
509  bool (*audio_mix)(void *data, uint64_t *ts_out,
510  struct audio_output_data *audio_output,
511  size_t channels, size_t sample_rate);
512 
515 
517  void (*media_play_pause)(void *data, bool pause);
518  void (*media_restart)(void *data);
519  void (*media_stop)(void *data);
520  void (*media_next)(void *data);
521  void (*media_previous)(void *data);
522  int64_t (*media_get_duration)(void *data);
523  int64_t (*media_get_time)(void *data);
524  void (*media_set_time)(void *data, int64_t miliseconds);
526 
527  /* version-related stuff */
528  uint32_t version; /* increment if needed to specify a new version */
529  const char *unversioned_id; /* set internally, don't set manually */
530 };
531 
532 EXPORT void obs_register_source_s(const struct obs_source_info *info,
533  size_t size);
534 
541 #define obs_register_source(info) \
542  obs_register_source_s(info, sizeof(struct obs_source_info))
543 
544 #ifdef __cplusplus
545 }
546 #endif
Definition: obs-interaction.h:50
obs_media_state
Definition: obs-source.h:63
enum obs_icon_type icon_type
Definition: obs-source.h:514
Definition: obs-source.h:41
obs_balance_type
Definition: obs-source.h:40
Definition: obs-source.h:53
void(* filter_remove)(void *data, obs_source_t *source)
Definition: obs-source.h:454
void(* enum_active_sources)(void *data, obs_source_enum_proc_t enum_callback, void *param)
Definition: obs-source.h:371
void(* mouse_move)(void *data, const struct obs_mouse_event *event, bool mouse_leave)
Definition: obs-source.h:415
float * data[MAX_AUDIO_CHANNELS]
Definition: audio-io.h:85
void(* update)(void *data, obs_data_t *settings)
Definition: obs-source.h:278
uint32_t(* get_height)(void *data)
Definition: obs-source.h:251
void(* get_defaults2)(void *type_data, obs_data_t *settings)
Definition: obs-source.h:498
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:466
void(* get_defaults)(obs_data_t *settings)
Definition: obs-source.h:262
Definition: obs-interaction.h:44
void(* obs_source_enum_proc_t)(obs_source_t *parent, obs_source_t *child, void *param)
Definition: obs-source.h:191
Definition: obs-source.h:54
Definition: obs-internal.h:568
Definition: obs-source.h:58
Definition: obs-source.h:65
uint32_t output_flags
Definition: obs-source.h:218
void(* media_stop)(void *data)
Definition: obs-source.h:519
enum obs_source_type type
Definition: obs-source.h:215
Definition: audio-io.h:84
void(* load)(void *data, obs_data_t *settings)
Definition: obs-source.h:394
const char * id
Definition: obs-source.h:206
bool(* audio_mix)(void *data, uint64_t *ts_out, struct audio_output_data *audio_output, size_t channels, size_t sample_rate)
Definition: obs-source.h:509
Definition: obs-source.h:34
void(* deactivate)(void *data)
Definition: obs-source.h:287
void(* free_type_data)(void *type_data)
Definition: obs-source.h:464
Definition: obs-source.h:43
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:406
struct obs_data obs_data_t
Definition: obs-data.h:42
Definition: obs-source.h:201
void(* destroy)(void *data)
Definition: obs-source.h:243
uint8_t * data[MAX_AV_PLANES]
Definition: obs.h:195
void * type_data
Definition: obs-source.h:459
obs_icon_type
Definition: obs-source.h:46
enum obs_media_state(* media_get_state)(void *data)
Definition: obs-source.h:525
struct audio_output_data output[MAX_AUDIO_MIXES]
Definition: obs-source.h:195
struct obs_properties obs_properties_t
Definition: obs-properties.h:110
Definition: obs-source.h:59
void(* key_click)(void *data, const struct obs_key_event *event, bool key_up)
Definition: obs-source.h:445
Definition: obs-source.h:60
#define EXPORT
Definition: c99defs.h:37
obs_source_type
Definition: obs-source.h:33
uint8_t * data[MAX_AV_PLANES]
Definition: obs.h:229
void(* media_set_time)(void *data, int64_t miliseconds)
Definition: obs-source.h:524
#define MAX_AUDIO_MIXES
Definition: audio-io.h:28
int64_t(* media_get_duration)(void *data)
Definition: obs-source.h:522
void(* video_render)(void *data, gs_effect_t *effect)
Definition: obs-source.h:330
void(* media_play_pause)(void *data, bool pause)
Definition: obs-source.h:517
Definition: effect.h:150
Definition: obs-source.h:50
void(* media_restart)(void *data)
Definition: obs-source.h:518
Definition: obs-source.h:48
Definition: obs-source.h:49
Definition: obs-source.h:55
Definition: obs-source.h:37
Definition: obs-source.h:36
void(* mouse_wheel)(void *data, const struct obs_mouse_event *event, int x_delta, int y_delta)
Definition: obs-source.h:426
void(* focus)(void *data, bool focus)
Definition: obs-source.h:435
Definition: obs.h:228
uint32_t(* get_width)(void *data)
Definition: obs-source.h:247
Definition: obs-source.h:51
Definition: obs-source.h:71
Definition: obs-source.h:69
void(* transition_start)(void *data)
Definition: obs-source.h:486
Definition: obs-source.h:35
Definition: obs-source.h:194
Definition: obs-source.h:68
void(* save)(void *data, obs_data_t *settings)
Definition: obs-source.h:384
void(* activate)(void *data)
Definition: obs-source.h:281
void(* media_next)(void *data)
Definition: obs-source.h:520
Definition: obs-source.h:66
void(* show)(void *data)
Definition: obs-source.h:290
void(* enum_all_sources)(void *data, obs_source_enum_proc_t enum_callback, void *param)
Definition: obs-source.h:482
void(* video_tick)(void *data, float seconds)
Definition: obs-source.h:301
Definition: obs-source.h:64
Definition: obs-source.h:67
const char * unversioned_id
Definition: obs-source.h:529
void(* transition_stop)(void *data)
Definition: obs-source.h:487
Main libobs header used by applications.
uint32_t version
Definition: obs-source.h:528
EXPORT void obs_register_source_s(const struct obs_source_info *info, size_t size)
Definition: obs-source.h:47
Definition: obs-source.h:52
Definition: obs-source.h:70
Definition: obs-source.h:57
void(* hide)(void *data)
Definition: obs-source.h:293
Definition: obs-source.h:56
Definition: obs.h:194
Definition: obs-source.h:42
void(* media_previous)(void *data)
Definition: obs-source.h:521
int64_t(* media_get_time)(void *data)
Definition: obs-source.h:523