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 
59 #define OBS_SOURCE_VIDEO (1 << 0)
60 
68 #define OBS_SOURCE_AUDIO (1 << 1)
69 
71 #define OBS_SOURCE_ASYNC (1 << 2)
72 
84 #define OBS_SOURCE_ASYNC_VIDEO (OBS_SOURCE_ASYNC | OBS_SOURCE_VIDEO)
85 
92 #define OBS_SOURCE_CUSTOM_DRAW (1 << 3)
93 
100 #define OBS_SOURCE_INTERACTION (1 << 5)
101 
111 #define OBS_SOURCE_COMPOSITE (1 << 6)
112 
120 #define OBS_SOURCE_DO_NOT_DUPLICATE (1 << 7)
121 
125 #define OBS_SOURCE_DEPRECATED (1 << 8)
126 
135 #define OBS_SOURCE_DO_NOT_SELF_MONITOR (1 << 9)
136 
140 #define OBS_SOURCE_CAP_DISABLED (1 << 10)
141 
146 #define OBS_SOURCE_MONITOR_BY_DEFAULT (1 << 11)
147 
149 #define OBS_SOURCE_SUBMIX (1 << 12)
150 
153 typedef void (*obs_source_enum_proc_t)(obs_source_t *parent,
154  obs_source_t *child, void *param);
155 
158 };
159 
164  /* ----------------------------------------------------------------- */
165  /* Required implementation*/
166 
168  const char *id;
169 
178 
181 
188  const char *(*get_name)(void *type_data);
189 
197  void *(*create)(obs_data_t *settings, obs_source_t *source);
198 
205  void (*destroy)(void *data);
206 
209  uint32_t (*get_width)(void *data);
210 
213  uint32_t (*get_height)(void *data);
214 
215  /* ----------------------------------------------------------------- */
216  /* Optional implementation */
217 
224  void (*get_defaults)(obs_data_t *settings);
225 
232  obs_properties_t *(*get_properties)(void *data);
233 
240  void (*update)(void *data, obs_data_t *settings);
241 
243  void (*activate)(void *data);
244 
249  void (*deactivate)(void *data);
250 
252  void (*show)(void *data);
253 
255  void (*hide)(void *data);
256 
263  void (*video_tick)(void *data, float seconds);
264 
292  void (*video_render)(void *data, gs_effect_t *effect);
293 
304  struct obs_source_frame *(*filter_video)(
305  void *data, struct obs_source_frame *frame);
306 
321  struct obs_audio_data *(*filter_audio)(void *data,
322  struct obs_audio_data *audio);
323 
333  void (*enum_active_sources)(void *data,
334  obs_source_enum_proc_t enum_callback,
335  void *param);
336 
346  void (*save)(void *data, obs_data_t *settings);
347 
356  void (*load)(void *data, obs_data_t *settings);
357 
368  void (*mouse_click)(void *data, const struct obs_mouse_event *event,
369  int32_t type, bool mouse_up, uint32_t click_count);
377  void (*mouse_move)(void *data, const struct obs_mouse_event *event,
378  bool mouse_leave);
379 
388  void (*mouse_wheel)(void *data, const struct obs_mouse_event *event,
389  int x_delta, int y_delta);
397  void (*focus)(void *data, bool focus);
398 
407  void (*key_click)(void *data, const struct obs_key_event *event,
408  bool key_up);
409 
416  void (*filter_remove)(void *data, obs_source_t *source);
417 
421  void *type_data;
422 
426  void (*free_type_data)(void *type_data);
427 
428  bool (*audio_render)(void *data, uint64_t *ts_out,
429  struct obs_source_audio_mix *audio_output,
430  uint32_t mixers, size_t channels,
431  size_t sample_rate);
432 
444  void (*enum_all_sources)(void *data,
445  obs_source_enum_proc_t enum_callback,
446  void *param);
447 
448  void (*transition_start)(void *data);
449  void (*transition_stop)(void *data);
450 
460  void (*get_defaults2)(void *type_data, obs_data_t *settings);
461 
469  obs_properties_t *(*get_properties2)(void *data, void *type_data);
470 
471  bool (*audio_mix)(void *data, uint64_t *ts_out,
472  struct audio_output_data *audio_output,
473  size_t channels, size_t sample_rate);
474 };
475 
476 EXPORT void obs_register_source_s(const struct obs_source_info *info,
477  size_t size);
478 
485 #define obs_register_source(info) \
486  obs_register_source_s(info, sizeof(struct obs_source_info))
487 
488 #ifdef __cplusplus
489 }
490 #endif
Definition: obs-interaction.h:50
Definition: obs-source.h:41
obs_balance_type
Definition: obs-source.h:40
void(* filter_remove)(void *data, obs_source_t *source)
Definition: obs-source.h:416
void(* enum_active_sources)(void *data, obs_source_enum_proc_t enum_callback, void *param)
Definition: obs-source.h:333
void(* mouse_move)(void *data, const struct obs_mouse_event *event, bool mouse_leave)
Definition: obs-source.h:377
void(* update)(void *data, obs_data_t *settings)
Definition: obs-source.h:240
uint32_t(* get_height)(void *data)
Definition: obs-source.h:213
void(* get_defaults2)(void *type_data, obs_data_t *settings)
Definition: obs-source.h:460
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:428
unsigned uint32_t
Definition: vc_stdint.h:31
void(* get_defaults)(obs_data_t *settings)
Definition: obs-source.h:224
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:153
Definition: obs-internal.h:558
int int32_t
Definition: vc_stdint.h:30
uint32_t output_flags
Definition: obs-source.h:180
enum obs_source_type type
Definition: obs-source.h:177
Definition: audio-io.h:84
void(* load)(void *data, obs_data_t *settings)
Definition: obs-source.h:356
const char * id
Definition: obs-source.h:168
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:471
unsigned __int64 uint64_t
Definition: vc_stdint.h:33
Definition: obs-source.h:34
void(* deactivate)(void *data)
Definition: obs-source.h:249
void(* free_type_data)(void *type_data)
Definition: obs-source.h:426
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:368
struct obs_data obs_data_t
Definition: obs-data.h:42
Definition: obs-source.h:163
void(* destroy)(void *data)
Definition: obs-source.h:205
uint8_t * data[MAX_AV_PLANES]
Definition: obs.h:195
void * type_data
Definition: obs-source.h:421
struct audio_output_data output[MAX_AUDIO_MIXES]
Definition: obs-source.h:157
struct obs_properties obs_properties_t
Definition: obs-properties.h:110
void(* key_click)(void *data, const struct obs_key_event *event, bool key_up)
Definition: obs-source.h:407
#define EXPORT
Definition: c99defs.h:49
obs_source_type
Definition: obs-source.h:33
uint8_t * data[MAX_AV_PLANES]
Definition: obs.h:229
#define MAX_AUDIO_MIXES
Definition: audio-io.h:28
void(* video_render)(void *data, gs_effect_t *effect)
Definition: obs-source.h:292
Definition: effect.h:150
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:388
void(* focus)(void *data, bool focus)
Definition: obs-source.h:397
Definition: obs.h:228
uint32_t(* get_width)(void *data)
Definition: obs-source.h:209
void(* transition_start)(void *data)
Definition: obs-source.h:448
Definition: obs-source.h:35
Definition: obs-source.h:156
void(* save)(void *data, obs_data_t *settings)
Definition: obs-source.h:346
void(* activate)(void *data)
Definition: obs-source.h:243
void(* show)(void *data)
Definition: obs-source.h:252
void(* enum_all_sources)(void *data, obs_source_enum_proc_t enum_callback, void *param)
Definition: obs-source.h:444
void(* video_tick)(void *data, float seconds)
Definition: obs-source.h:263
void(* transition_stop)(void *data)
Definition: obs-source.h:449
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(* hide)(void *data)
Definition: obs-source.h:255
Definition: obs.h:194
Definition: obs-source.h:42