Open Broadcaster Software
Free, open source software for live streaming and recording
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
obs.h
Go to the documentation of this file.
1 /******************************************************************************
2  Copyright (C) 2013-2014 by Hugh Bailey <jim@obsproject.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 "util/c99defs.h"
21 #include "util/bmem.h"
22 #include "util/profiler.h"
23 #include "util/text-lookup.h"
24 #include "graphics/graphics.h"
25 #include "graphics/vec2.h"
26 #include "graphics/vec3.h"
27 #include "media-io/audio-io.h"
28 #include "media-io/video-io.h"
29 #include "callback/signal.h"
30 #include "callback/proc.h"
31 
32 #include "obs-config.h"
33 #include "obs-defs.h"
34 #include "obs-data.h"
35 #include "obs-ui.h"
36 #include "obs-properties.h"
37 #include "obs-interaction.h"
38 
39 struct matrix4;
40 
41 /* opaque types */
42 struct obs_display;
43 struct obs_view;
44 struct obs_source;
45 struct obs_scene;
46 struct obs_scene_item;
47 struct obs_output;
48 struct obs_encoder;
49 struct obs_service;
50 struct obs_module;
51 struct obs_fader;
52 struct obs_volmeter;
53 
54 typedef struct obs_display obs_display_t;
55 typedef struct obs_view obs_view_t;
56 typedef struct obs_source obs_source_t;
57 typedef struct obs_scene obs_scene_t;
59 typedef struct obs_output obs_output_t;
60 typedef struct obs_encoder obs_encoder_t;
61 typedef struct obs_service obs_service_t;
62 typedef struct obs_module obs_module_t;
63 typedef struct obs_fader obs_fader_t;
64 typedef struct obs_volmeter obs_volmeter_t;
65 
70 
71 #include "obs-source.h"
72 #include "obs-encoder.h"
73 #include "obs-output.h"
74 #include "obs-service.h"
75 #include "obs-audio-controls.h"
76 #include "obs-hotkey.h"
77 
91 #ifdef __cplusplus
92 extern "C" {
93 #endif
94 
102 };
103 
112 };
113 
120 };
121 
135 };
136 
138  struct vec2 pos;
139  float rot;
140  struct vec2 scale;
142 
145  struct vec2 bounds;
146 };
147 
152 #ifndef SWIG
153 
156  const char *graphics_module;
157 #endif
158 
171 
174 
179 };
180 
187 };
188 
197 };
198 
206 
210 
212 };
213 
229 
231  float color_matrix[16];
233  float color_range_min[3];
234  float color_range_max[3];
235  bool flip;
236 
237  /* used internally by libobs */
238  volatile long refs;
240 };
241 
242 /* ------------------------------------------------------------------------- */
243 /* OBS context */
244 
253 EXPORT bool obs_startup(const char *locale, const char *module_config_path,
254  profiler_name_store_t *store);
255 
257 EXPORT void obs_shutdown(void);
258 
260 EXPORT bool obs_initialized(void);
261 
264 
266 EXPORT const char *obs_get_version_string(void);
267 
274 EXPORT void obs_set_locale(const char *locale);
275 
277 EXPORT const char *obs_get_locale(void);
278 
285 
302 EXPORT int obs_reset_video(struct obs_video_info *ovi);
303 
309 EXPORT bool obs_reset_audio(const struct obs_audio_info *oai);
310 
312 EXPORT bool obs_get_video_info(struct obs_video_info *ovi);
313 
315 EXPORT bool obs_get_audio_info(struct obs_audio_info *oai);
316 
338 EXPORT int obs_open_module(obs_module_t **module, const char *path,
339  const char *data_path);
340 
346 EXPORT bool obs_init_module(obs_module_t *module);
347 
349 EXPORT void obs_log_loaded_modules(void);
350 
352 EXPORT const char *obs_get_module_file_name(obs_module_t *module);
353 
355 EXPORT const char *obs_get_module_name(obs_module_t *module);
356 
358 EXPORT const char *obs_get_module_author(obs_module_t *module);
359 
361 EXPORT const char *obs_get_module_description(obs_module_t *module);
362 
364 EXPORT const char *obs_get_module_binary_path(obs_module_t *module);
365 
367 EXPORT const char *obs_get_module_data_path(obs_module_t *module);
368 
377 EXPORT void obs_add_module_path(const char *bin, const char *data);
378 
380 EXPORT void obs_load_all_modules(void);
381 
384 EXPORT void obs_post_load_modules(void);
385 
386 #ifndef SWIG
388  const char *bin_path;
389  const char *data_path;
390 };
391 
392 typedef void (*obs_find_module_callback_t)(void *param,
393  const struct obs_module_info *info);
394 
396 EXPORT void obs_find_modules(obs_find_module_callback_t callback, void *param);
397 #endif
398 
399 typedef void (*obs_enum_module_callback_t)(void *param, obs_module_t *module);
400 
402 EXPORT void obs_enum_modules(obs_enum_module_callback_t callback, void *param);
403 
406  const char *default_locale, const char *locale);
407 
419 EXPORT char *obs_find_module_file(obs_module_t *module, const char *file);
420 
432 EXPORT char *obs_module_get_config_path(obs_module_t *module, const char *file);
433 
435 EXPORT bool obs_enum_source_types(size_t idx, const char **id);
436 
443 EXPORT bool obs_enum_input_types(size_t idx, const char **id);
444 
451 EXPORT bool obs_enum_filter_types(size_t idx, const char **id);
452 
459 EXPORT bool obs_enum_transition_types(size_t idx, const char **id);
460 
462 EXPORT bool obs_enum_output_types(size_t idx, const char **id);
463 
465 EXPORT bool obs_enum_encoder_types(size_t idx, const char **id);
466 
468 EXPORT bool obs_enum_service_types(size_t idx, const char **id);
469 
471 EXPORT void obs_enter_graphics(void);
472 
474 EXPORT void obs_leave_graphics(void);
475 
478 
481 
483 EXPORT void obs_set_output_source(uint32_t channel, obs_source_t *source);
484 
490 
500 EXPORT void obs_enum_sources(bool (*enum_proc)(void*, obs_source_t*),
501  void *param);
502 
504 EXPORT void obs_enum_outputs(bool (*enum_proc)(void*, obs_output_t*),
505  void *param);
506 
508 EXPORT void obs_enum_encoders(bool (*enum_proc)(void*, obs_encoder_t*),
509  void *param);
510 
512 EXPORT void obs_enum_services(bool (*enum_proc)(void*, obs_service_t*),
513  void *param);
514 
521 EXPORT obs_source_t *obs_get_source_by_name(const char *name);
522 
524 EXPORT obs_output_t *obs_get_output_by_name(const char *name);
525 
527 EXPORT obs_encoder_t *obs_get_encoder_by_name(const char *name);
528 
530 EXPORT obs_service_t *obs_get_service_by_name(const char *name);
531 
541 };
542 
545 
546 #ifndef SWIG
547 /* DEPRECATED: gets texture_rect default effect */
550 #endif
551 
554 
557 
558 #ifndef SWIG
559 
561 EXPORT void obs_render_main_view(void);
562 #endif
563 
566 
568 EXPORT void obs_set_master_volume(float volume);
569 
571 EXPORT float obs_get_master_volume(void);
572 
575 
578 
579 typedef void (*obs_load_source_cb)(void *private_data, obs_source_t *source);
580 
583  void *private_data);
584 
587 
588 typedef bool (*obs_save_source_filter_cb)(void *data, obs_source_t *source);
590  void *data);
591 
598 };
599 
600 EXPORT enum obs_obj_type obs_obj_get_type(void *obj);
601 EXPORT const char *obs_obj_get_id(void *obj);
602 EXPORT bool obs_obj_invalid(void *obj);
603 
604 typedef bool (*obs_enum_audio_device_cb)(void *data, const char *name,
605  const char *id);
606 
608  void *data);
609 
610 EXPORT bool obs_set_audio_monitoring_device(const char *name, const char *id);
611 EXPORT void obs_get_audio_monitoring_device(const char **name, const char **id);
612 
614  void (*tick)(void *param, float seconds),
615  void *param);
617  void (*tick)(void *param, float seconds),
618  void *param);
619 
621  void (*draw)(void *param, uint32_t cx, uint32_t cy),
622  void *param);
624  void (*draw)(void *param, uint32_t cx, uint32_t cy),
625  void *param);
626 
627 
628 /* ------------------------------------------------------------------------- */
629 /* View context */
630 
638 
641 
643 EXPORT void obs_view_set_source(obs_view_t *view, uint32_t channel,
644  obs_source_t *source);
645 
648  uint32_t channel);
649 
651 EXPORT void obs_view_render(obs_view_t *view);
652 
654 
655 EXPORT double obs_get_active_fps(void);
657 
660 
661 
662 /* ------------------------------------------------------------------------- */
663 /* Display context */
664 
673  const struct gs_init_data *graphics_data);
674 
677 
680  uint32_t cy);
681 
691  void (*draw)(void *param, uint32_t cx, uint32_t cy),
692  void *param);
693 
696  void (*draw)(void *param, uint32_t cx, uint32_t cy),
697  void *param);
698 
699 EXPORT void obs_display_set_enabled(obs_display_t *display, bool enable);
701 
703  uint32_t color);
704 
705 
706 /* ------------------------------------------------------------------------- */
707 /* Sources */
708 
710 EXPORT const char *obs_source_get_display_name(const char *id);
711 
718 EXPORT obs_source_t *obs_source_create(const char *id, const char *name,
719  obs_data_t *settings, obs_data_t *hotkey_data);
720 
722  const char *name, obs_data_t *settings);
723 
724 /* if source has OBS_SOURCE_DO_NOT_DUPLICATE output flag set, only returns a
725  * reference */
727  const char *desired_name, bool create_private);
734 
737 
741 
743  obs_source_t *source);
744 
747 
749 EXPORT bool obs_source_removed(const obs_source_t *source);
750 
753 
756 
758 EXPORT obs_data_t *obs_get_source_defaults(const char *id);
759 
762 
764 EXPORT bool obs_is_source_configurable(const char *id);
765 
766 EXPORT bool obs_source_configurable(const obs_source_t *source);
767 
773 
775 EXPORT void obs_source_update(obs_source_t *source, obs_data_t *settings);
776 
779 
782 
785 
792 
799 
802 
805 
808  obs_source_t *filter);
809 
812  obs_source_t *filter, enum obs_order_movement movement);
813 
816 
818 EXPORT const char *obs_source_get_name(const obs_source_t *source);
819 
821 EXPORT void obs_source_set_name(obs_source_t *source, const char *name);
822 
825 
827 EXPORT const char *obs_source_get_id(const obs_source_t *source);
828 
831  const obs_source_t *source);
832 
835 
837 EXPORT void obs_source_set_volume(obs_source_t *source, float volume);
838 
840 EXPORT float obs_source_get_volume(const obs_source_t *source);
841 
844 
847 
850  obs_source_enum_proc_t enum_callback,
851  void *param);
852 
855  obs_source_enum_proc_t enum_callback,
856  void *param);
857 
859 EXPORT bool obs_source_active(const obs_source_t *source);
860 
864 EXPORT bool obs_source_showing(const obs_source_t *source);
865 
867 #define OBS_SOURCE_FLAG_UNUSED_1 (1<<0)
868 
869 #define OBS_SOURCE_FLAG_FORCE_MONO (1<<1)
870 
876 EXPORT void obs_source_set_flags(obs_source_t *source, uint32_t flags);
877 
880 
886 
889 
896 
903 
906  obs_source_enum_proc_t callback, void *param);
907 
910  const char *name);
911 
913 
914 EXPORT bool obs_source_enabled(const obs_source_t *source);
915 EXPORT void obs_source_set_enabled(obs_source_t *source, bool enabled);
916 
917 EXPORT bool obs_source_muted(const obs_source_t *source);
918 EXPORT void obs_source_set_muted(obs_source_t *source, bool muted);
919 
921 EXPORT void obs_source_enable_push_to_mute(obs_source_t *source, bool enabled);
922 
925  uint64_t delay);
926 
928 EXPORT void obs_source_enable_push_to_talk(obs_source_t *source, bool enabled);
929 
932  uint64_t delay);
933 
934 typedef void (*obs_source_audio_capture_t)(void *param, obs_source_t *source,
935  const struct audio_data *audio_data, bool muted);
936 
938  obs_source_audio_capture_t callback, void *param);
940  obs_source_audio_capture_t callback, void *param);
941 
952 };
953 
957 };
958 
960  enum obs_deinterlace_mode mode);
962  const obs_source_t *source);
964  enum obs_deinterlace_field_order field_order);
966  const obs_source_t *source);
967 
972 };
973 
975  enum obs_monitoring_type type);
977  const obs_source_t *source);
978 
982 
983 /* ------------------------------------------------------------------------- */
984 /* Functions used by sources */
985 
987 
1001  const struct matrix4 *color_matrix,
1002  const struct vec3 *color_range_min,
1003  const struct vec3 *color_range_max);
1004 
1016 EXPORT void obs_source_draw(gs_texture_t *image, int x, int y,
1017  uint32_t cx, uint32_t cy, bool flip);
1018 
1021  const struct obs_source_frame *frame);
1022 
1025  const struct obs_source_frame *frame);
1026 
1029 
1032  const struct obs_source_audio *audio);
1033 
1036 
1039 
1042  struct obs_source_frame *frame);
1043 
1056  enum gs_color_format format,
1057  enum obs_allow_direct_render allow_direct);
1058 
1068 
1078  const char *tech_name);
1079 
1082 
1091  obs_source_t *child);
1092 
1099  obs_source_t *child);
1100 
1103  const struct obs_mouse_event *event,
1104  int32_t type, bool mouse_up,
1105  uint32_t click_count);
1106 
1109  const struct obs_mouse_event *event, bool mouse_leave);
1110 
1113  const struct obs_mouse_event *event, int x_delta, int y_delta);
1114 
1116 EXPORT void obs_source_send_focus(obs_source_t *source, bool focus);
1117 
1120  const struct obs_key_event *event, bool key_up);
1121 
1124 
1127 
1130 
1131 EXPORT bool obs_source_audio_pending(const obs_source_t *source);
1133 EXPORT void obs_source_get_audio_mix(const obs_source_t *source,
1134  struct obs_source_audio_mix *audio);
1135 
1137  bool unbuffered);
1138 EXPORT bool obs_source_async_unbuffered(const obs_source_t *source);
1139 
1143 EXPORT void obs_source_set_async_decoupled(obs_source_t *source, bool decouple);
1144 EXPORT bool obs_source_async_decoupled(const obs_source_t *source);
1145 
1146 /* ------------------------------------------------------------------------- */
1147 /* Transition-specific functions */
1151 };
1152 
1154  enum obs_transition_target target);
1155 EXPORT void obs_transition_clear(obs_source_t *transition);
1156 
1158 
1161 };
1162 
1163 EXPORT bool obs_transition_start(obs_source_t *transition,
1164  enum obs_transition_mode mode, uint32_t duration_ms,
1165  obs_source_t *dest);
1166 
1167 EXPORT void obs_transition_set(obs_source_t *transition, obs_source_t *source);
1168 
1173 };
1174 
1176  enum obs_transition_scale_type type);
1178  const obs_source_t *transition);
1179 
1181  uint32_t alignment);
1183 
1185  uint32_t cx, uint32_t cy);
1186 EXPORT void obs_transition_get_size(const obs_source_t *transition,
1187  uint32_t *cx, uint32_t *cy);
1188 
1189 /* function used by transitions */
1190 
1195 EXPORT void obs_transition_enable_fixed(obs_source_t *transition, bool enable,
1196  uint32_t duration_ms);
1197 EXPORT bool obs_transition_fixed(obs_source_t *transition);
1198 
1200  gs_texture_t *a, gs_texture_t *b, float t,
1201  uint32_t cx, uint32_t cy);
1202 typedef float (*obs_transition_audio_mix_callback_t)(void *data, float t);
1203 
1204 EXPORT float obs_transition_get_time(obs_source_t *transition);
1205 
1208 
1212  enum obs_transition_target target);
1213 
1215  uint64_t *ts_out, struct obs_source_audio_mix *audio,
1216  uint32_t mixers, size_t channels, size_t sample_rate,
1217  obs_transition_audio_mix_callback_t mix_a_callback,
1218  obs_transition_audio_mix_callback_t mix_b_callback);
1219 
1220 /* swaps transition sources and textures as an optimization and to reduce
1221  * memory usage when switching between transitions */
1223  obs_source_t *tr_source);
1225  obs_source_t *tr_source);
1226 
1227 
1228 /* ------------------------------------------------------------------------- */
1229 /* Scenes */
1230 
1237 EXPORT obs_scene_t *obs_scene_create(const char *name);
1238 
1239 EXPORT obs_scene_t *obs_scene_create_private(const char *name);
1240 
1246 };
1247 
1251 EXPORT obs_scene_t *obs_scene_duplicate(obs_scene_t *scene, const char *name,
1252  enum obs_scene_duplicate_type type);
1253 
1254 EXPORT void obs_scene_addref(obs_scene_t *scene);
1255 EXPORT void obs_scene_release(obs_scene_t *scene);
1256 
1259 
1262 
1265  const char *name);
1266 
1268  int64_t id);
1269 
1272  bool (*callback)(obs_scene_t*, obs_sceneitem_t*, void*),
1273  void *param);
1274 
1276  obs_sceneitem_t * const *item_order, size_t item_order_size);
1277 
1280 
1281 typedef void (*obs_scene_atomic_update_func)(void *, obs_scene_t *scene);
1283  obs_scene_atomic_update_func func, void *data);
1284 
1287 
1290 
1293 
1296 
1297 /* FIXME: The following functions should be deprecated and replaced with a way
1298  * to specify savable private user data. -Jim */
1299 EXPORT void obs_sceneitem_select(obs_sceneitem_t *item, bool select);
1301 EXPORT bool obs_sceneitem_locked(const obs_sceneitem_t *item);
1302 EXPORT bool obs_sceneitem_set_locked(obs_sceneitem_t *item, bool lock);
1303 
1304 /* Functions for getting/setting specific orientation of a scene item */
1305 EXPORT void obs_sceneitem_set_pos(obs_sceneitem_t *item, const struct vec2 *pos);
1306 EXPORT void obs_sceneitem_set_rot(obs_sceneitem_t *item, float rot_deg);
1308  const struct vec2 *scale);
1310  uint32_t alignment);
1312  enum obs_order_movement movement);
1314  int position);
1316  enum obs_bounds_type type);
1318  uint32_t alignment);
1320  const struct vec2 *bounds);
1321 
1323 
1325  struct vec2 *pos);
1326 EXPORT float obs_sceneitem_get_rot(const obs_sceneitem_t *item);
1328  struct vec2 *scale);
1330 
1332  const obs_sceneitem_t *item);
1335  struct vec2 *bounds);
1336 
1338  struct obs_transform_info *info);
1340  const struct obs_transform_info *info);
1341 
1343  struct matrix4 *transform);
1345  struct matrix4 *transform);
1346 
1347 EXPORT bool obs_sceneitem_visible(const obs_sceneitem_t *item);
1348 EXPORT bool obs_sceneitem_set_visible(obs_sceneitem_t *item, bool visible);
1349 
1351  int left;
1352  int top;
1353  int right;
1354  int bottom;
1355 };
1356 
1358  const struct obs_sceneitem_crop *crop);
1360  struct obs_sceneitem_crop *crop);
1361 
1363  enum obs_scale_type filter);
1365  obs_sceneitem_t *item);
1366 
1369 
1373 
1374 
1375 /* ------------------------------------------------------------------------- */
1376 /* Outputs */
1377 
1378 EXPORT const char *obs_output_get_display_name(const char *id);
1379 
1386 EXPORT obs_output_t *obs_output_create(const char *id, const char *name,
1387  obs_data_t *settings, obs_data_t *hotkey_data);
1388 
1393 EXPORT void obs_output_addref(obs_output_t *output);
1394 EXPORT void obs_output_release(obs_output_t *output);
1395 
1398 
1402 
1404  obs_output_t *output);
1405 
1406 EXPORT const char *obs_output_get_name(const obs_output_t *output);
1407 
1409 EXPORT bool obs_output_start(obs_output_t *output);
1410 
1412 EXPORT void obs_output_stop(obs_output_t *output);
1413 
1419 #define OBS_OUTPUT_DELAY_PRESERVE (1<<0)
1420 
1428 EXPORT void obs_output_set_delay(obs_output_t *output, uint32_t delay_sec,
1429  uint32_t flags);
1430 
1433 
1436 
1439 
1441 EXPORT bool obs_output_active(const obs_output_t *output);
1442 
1444 EXPORT obs_data_t *obs_output_defaults(const char *id);
1445 
1448 
1454 
1456 EXPORT void obs_output_update(obs_output_t *output, obs_data_t *settings);
1457 
1459 EXPORT bool obs_output_can_pause(const obs_output_t *output);
1460 
1462 EXPORT void obs_output_pause(obs_output_t *output);
1463 
1464 /* Gets the current output settings string */
1466 
1469  const obs_output_t *output);
1470 
1473 
1479  video_t *video, audio_t *audio);
1480 
1483 
1486 
1488 EXPORT void obs_output_set_mixer(obs_output_t *output, size_t mixer_idx);
1489 
1491 EXPORT size_t obs_output_get_mixer(const obs_output_t *output);
1492 
1498  obs_encoder_t *encoder);
1499 
1509  obs_encoder_t *encoder, size_t idx);
1510 
1513 
1522  size_t idx);
1523 
1526  obs_service_t *service);
1527 
1530 
1535  int retry_count, int retry_sec);
1536 
1540 
1550  uint32_t height);
1551 
1554 
1557 
1558 EXPORT const char *obs_output_get_id(const obs_output_t *output);
1559 
1560 #if BUILD_CAPTIONS
1561 EXPORT void obs_output_output_caption_text1(obs_output_t *output,
1562  const char *text);
1563 #endif
1564 
1567 
1568 EXPORT bool obs_output_reconnecting(const obs_output_t *output);
1569 
1572  const char *message);
1573 EXPORT const char *obs_output_get_last_error(obs_output_t *output);
1574 
1576  const obs_output_t *output);
1578  const obs_output_t *output);
1579 
1580 /* ------------------------------------------------------------------------- */
1581 /* Functions used by outputs */
1582 
1584 
1587  const struct video_scale_info *conversion);
1588 
1591  const struct audio_convert_info *conversion);
1592 
1595  uint32_t flags);
1596 
1599  uint32_t flags);
1600 
1614 
1617 
1624 EXPORT void obs_output_signal_stop(obs_output_t *output, int code);
1625 
1626 
1627 /* ------------------------------------------------------------------------- */
1628 /* Encoders */
1629 
1630 EXPORT const char *obs_encoder_get_display_name(const char *id);
1631 
1640 EXPORT obs_encoder_t *obs_video_encoder_create(const char *id, const char *name,
1641  obs_data_t *settings, obs_data_t *hotkey_data);
1642 
1652 EXPORT obs_encoder_t *obs_audio_encoder_create(const char *id, const char *name,
1653  obs_data_t *settings, size_t mixer_idx,
1654  obs_data_t *hotkey_data);
1655 
1660 EXPORT void obs_encoder_addref(obs_encoder_t *encoder);
1662 
1665 
1669 
1671  obs_encoder_t *encoder);
1672 
1673 EXPORT void obs_encoder_set_name(obs_encoder_t *encoder, const char *name);
1674 EXPORT const char *obs_encoder_get_name(const obs_encoder_t *encoder);
1675 
1677 EXPORT const char *obs_get_encoder_codec(const char *id);
1678 
1680 EXPORT enum obs_encoder_type obs_get_encoder_type(const char *id);
1681 
1683 EXPORT const char *obs_encoder_get_codec(const obs_encoder_t *encoder);
1684 
1687 
1694  uint32_t height);
1695 
1698 
1701 
1704 
1714  enum video_format format);
1716  const obs_encoder_t *encoder);
1717 
1719 EXPORT obs_data_t *obs_encoder_defaults(const char *id);
1720 
1723 
1729 
1734 EXPORT void obs_encoder_update(obs_encoder_t *encoder, obs_data_t *settings);
1735 
1737 EXPORT bool obs_encoder_get_extra_data(const obs_encoder_t *encoder,
1738  uint8_t **extra_data, size_t *size);
1739 
1742 
1744 EXPORT void obs_encoder_set_video(obs_encoder_t *encoder, video_t *video);
1745 
1747 EXPORT void obs_encoder_set_audio(obs_encoder_t *encoder, audio_t *audio);
1748 
1754 
1760 
1762 EXPORT bool obs_encoder_active(const obs_encoder_t *encoder);
1763 
1765 
1766 EXPORT const char *obs_encoder_get_id(const obs_encoder_t *encoder);
1767 
1768 EXPORT uint32_t obs_get_encoder_caps(const char *encoder_id);
1769 
1770 #ifndef SWIG
1771 
1772 DEPRECATED
1774  const struct encoder_packet *src);
1775 
1776 DEPRECATED
1777 EXPORT void obs_free_encoder_packet(struct encoder_packet *packet);
1778 #endif
1779 
1781  struct encoder_packet *src);
1782 EXPORT void obs_encoder_packet_release(struct encoder_packet *packet);
1783 
1784 
1785 /* ------------------------------------------------------------------------- */
1786 /* Stream Services */
1787 
1788 EXPORT const char *obs_service_get_display_name(const char *id);
1789 
1790 EXPORT obs_service_t *obs_service_create(const char *id, const char *name,
1791  obs_data_t *settings, obs_data_t *hotkey_data);
1792 
1794  const char *name, obs_data_t *settings);
1795 
1800 EXPORT void obs_service_addref(obs_service_t *service);
1802 
1805 
1809 
1811  obs_service_t *service);
1812 
1813 EXPORT const char *obs_service_get_name(const obs_service_t *service);
1814 
1816 EXPORT obs_data_t *obs_service_defaults(const char *id);
1817 
1820 
1826 
1828 EXPORT const char *obs_service_get_type(const obs_service_t *service);
1829 
1831 EXPORT void obs_service_update(obs_service_t *service, obs_data_t *settings);
1832 
1835 
1837 EXPORT const char *obs_service_get_url(const obs_service_t *service);
1838 
1840 EXPORT const char *obs_service_get_key(const obs_service_t *service);
1841 
1843 EXPORT const char *obs_service_get_username(const obs_service_t *service);
1844 
1846 EXPORT const char *obs_service_get_password(const obs_service_t *service);
1847 
1855  obs_data_t *video_encoder_settings,
1856  obs_data_t *audio_encoder_settings);
1857 
1859 
1860 EXPORT const char *obs_service_get_id(const obs_service_t *service);
1861 
1862 /* NOTE: This function is temporary and should be removed/replaced at a later
1863  * date. */
1864 EXPORT const char *obs_service_get_output_type(const obs_service_t *service);
1865 
1866 
1867 /* ------------------------------------------------------------------------- */
1868 /* Source frame allocation functions */
1869 EXPORT void obs_source_frame_init(struct obs_source_frame *frame,
1870  enum video_format format, uint32_t width, uint32_t height);
1871 
1872 static inline void obs_source_frame_free(struct obs_source_frame *frame)
1873 {
1874  if (frame) {
1875  bfree(frame->data[0]);
1876  memset(frame, 0, sizeof(*frame));
1877  }
1878 }
1879 
1880 static inline struct obs_source_frame *obs_source_frame_create(
1882 {
1883  struct obs_source_frame *frame;
1884 
1885  frame = (struct obs_source_frame*)bzalloc(sizeof(*frame));
1886  obs_source_frame_init(frame, format, width, height);
1887  return frame;
1888 }
1889 
1890 static inline void obs_source_frame_destroy(struct obs_source_frame *frame)
1891 {
1892  if (frame) {
1893  bfree(frame->data[0]);
1894  bfree(frame);
1895  }
1896 }
1897 
1898 
1899 #ifdef __cplusplus
1900 }
1901 #endif
EXPORT void obs_source_filter_set_order(obs_source_t *source, obs_source_t *filter, enum obs_order_movement movement)
EXPORT obs_view_t * obs_view_create(void)
Definition: obs-interaction.h:50
EXPORT void obs_weak_source_release(obs_weak_source_t *weak)
uint32_t fps_den
Definition: obs.h:160
EXPORT uint32_t obs_source_get_audio_mixers(const obs_source_t *source)
EXPORT void obs_encoder_packet_release(struct encoder_packet *packet)
EXPORT bool obs_weak_source_references_source(obs_weak_source_t *weak, obs_source_t *source)
EXPORT uint32_t obs_source_get_output_flags(const obs_source_t *source)
enum video_colorspace colorspace
Definition: obs.h:175
EXPORT void obs_output_set_audio_conversion(obs_output_t *output, const struct audio_convert_info *conversion)
float rot
Definition: obs.h:139
EXPORT void obs_sceneitem_get_crop(const obs_sceneitem_t *item, struct obs_sceneitem_crop *crop)
EXPORT void obs_encoder_set_name(obs_encoder_t *encoder, const char *name)
EXPORT const char * obs_output_get_last_error(obs_output_t *output)
uint32_t height
Definition: obs.h:227
EXPORT void obs_sceneitem_set_alignment(obs_sceneitem_t *item, uint32_t alignment)
void(* obs_load_source_cb)(void *private_data, obs_source_t *source)
Definition: obs.h:579
Definition: obs-scene.h:81
EXPORT bool obs_source_active(const obs_source_t *source)
EXPORT void obs_source_process_filter_end(obs_source_t *filter, gs_effect_t *effect, uint32_t width, uint32_t height)
speaker_layout
Definition: audio-io.h:67
EXPORT gs_effect_t * obs_get_base_effect(enum obs_base_effect effect)
uint32_t base_width
Definition: obs.h:162
EXPORT void obs_source_set_async_decoupled(obs_source_t *source, bool decouple)
void(* obs_scene_atomic_update_func)(void *, obs_scene_t *scene)
Definition: obs.h:1281
EXPORT void obs_weak_output_release(obs_weak_output_t *weak)
DEPRECATED EXPORT void obs_duplicate_encoder_packet(struct encoder_packet *dst, const struct encoder_packet *src)
EXPORT uint64_t obs_source_get_push_to_talk_delay(obs_source_t *source)
EXPORT bool obs_scene_reorder_items(obs_scene_t *scene, obs_sceneitem_t *const *item_order, size_t item_order_size)
uint64_t timestamp
Definition: obs.h:211
EXPORT obs_scene_t * obs_sceneitem_get_scene(const obs_sceneitem_t *item)
Definition: obs.h:596
Definition: obs.h:948
EXPORT void obs_scene_enum_items(obs_scene_t *scene, bool(*callback)(obs_scene_t *, obs_sceneitem_t *, void *), void *param)
EXPORT int obs_output_get_total_frames(const obs_output_t *output)
EXPORT void obs_display_remove_draw_callback(obs_display_t *display, void(*draw)(void *param, uint32_t cx, uint32_t cy), void *param)
EXPORT float obs_output_get_congestion(obs_output_t *output)
EXPORT bool obs_source_enabled(const obs_source_t *source)
EXPORT void obs_source_set_flags(obs_source_t *source, uint32_t flags)
EXPORT void obs_output_end_data_capture(obs_output_t *output)
Definition: obs.h:1172
EXPORT void obs_output_set_reconnect_settings(obs_output_t *output, int retry_count, int retry_sec)
EXPORT void obs_sceneitem_set_bounds_type(obs_sceneitem_t *item, enum obs_bounds_type type)
EXPORT obs_scene_t * obs_scene_duplicate(obs_scene_t *scene, const char *name, enum obs_scene_duplicate_type type)
EXPORT const char * obs_encoder_get_codec(const obs_encoder_t *encoder)
EXPORT void obs_remove_main_render_callback(void(*draw)(void *param, uint32_t cx, uint32_t cy), void *param)
void(* obs_source_audio_capture_t)(void *param, obs_source_t *source, const struct audio_data *audio_data, bool muted)
Definition: obs.h:934
EXPORT enum obs_transition_scale_type obs_transition_get_scale_type(const obs_source_t *transition)
uint32_t frames
Definition: obs.h:195
EXPORT void obs_sceneitem_select(obs_sceneitem_t *item, bool select)
Definition: video-io.h:157
int right
Definition: obs.h:1353
EXPORT void obs_encoder_packet_ref(struct encoder_packet *dst, struct encoder_packet *src)
Definition: obs.h:117
EXPORT void obs_enum_services(bool(*enum_proc)(void *, obs_service_t *), void *param)
DEPRECATED EXPORT void obs_free_encoder_packet(struct encoder_packet *packet)
uint32_t base_height
Definition: obs.h:163
EXPORT audio_t * obs_output_audio(const obs_output_t *output)
#define DEPRECATED
Definition: c99defs.h:30
float color_range_max[3]
Definition: obs.h:234
EXPORT void obs_source_set_enabled(obs_source_t *source, bool enabled)
Definition: obs.h:1150
EXPORT obs_data_t * obs_output_get_settings(const obs_output_t *output)
Definition: obs.h:116
EXPORT void obs_source_enum_active_sources(obs_source_t *source, obs_source_enum_proc_t enum_callback, void *param)
EXPORT void obs_source_copy_filters(obs_source_t *dst, obs_source_t *src)
Definition: obs.h:535
Definition: obs-internal.h:815
EXPORT const char * obs_service_get_url(const obs_service_t *service)
EXPORT bool obs_output_initialize_encoders(obs_output_t *output, uint32_t flags)
EXPORT obs_scene_t * obs_scene_create_private(const char *name)
unsigned uint32_t
Definition: vc_stdint.h:31
Definition: obs.h:538
EXPORT bool obs_source_audio_pending(const obs_source_t *source)
Definition: obs-interaction.h:44
Definition: obs-internal.h:803
EXPORT bool obs_output_can_begin_data_capture(const obs_output_t *output, uint32_t flags)
EXPORT const char * obs_service_get_name(const obs_service_t *service)
enum speaker_layout speakers
Definition: obs.h:186
Definition: obs.h:595
EXPORT const char * obs_service_get_key(const obs_service_t *service)
EXPORT void obs_source_update(obs_source_t *source, obs_data_t *settings)
EXPORT obs_encoder_t * obs_get_encoder_by_name(const char *name)
EXPORT uint32_t obs_get_version(void)
EXPORT uint32_t obs_source_get_width(obs_source_t *source)
EXPORT uint32_t obs_output_get_delay(const obs_output_t *output)
EXPORT const char * obs_output_get_supported_video_codecs(const obs_output_t *output)
EXPORT void obs_output_signal_stop(obs_output_t *output, int code)
bool(* obs_save_source_filter_cb)(void *data, obs_source_t *source)
Definition: obs.h:588
EXPORT uint32_t obs_get_source_output_flags(const char *id)
EXPORT enum obs_monitoring_type obs_source_get_monitoring_type(const obs_source_t *source)
Definition: obs-internal.h:531
EXPORT int64_t obs_sceneitem_get_id(const obs_sceneitem_t *item)
EXPORT obs_encoder_t * obs_output_get_audio_encoder(const obs_output_t *output, size_t idx)
enum obs_scale_type scale_type
Definition: obs.h:178
Definition: vec3.h:33
int int32_t
Definition: vc_stdint.h:30
Definition: obs-internal.h:919
EXPORT struct obs_source_frame * obs_source_get_frame(obs_source_t *source)
EXPORT void obs_source_set_deinterlace_field_order(obs_source_t *source, enum obs_deinterlace_field_order field_order)
EXPORT obs_properties_t * obs_get_output_properties(const char *id)
EXPORT void obs_transition_swap_end(obs_source_t *tr_dest, obs_source_t *tr_source)
audio_format
Definition: audio-io.h:44
EXPORT obs_service_t * obs_weak_service_get_service(obs_weak_service_t *weak)
EXPORT proc_handler_t * obs_output_get_proc_handler(const obs_output_t *output)
EXPORT void obs_sceneitem_defer_update_begin(obs_sceneitem_t *item)
video_format
Definition: video-io.h:33
EXPORT bool obs_get_video_info(struct obs_video_info *ovi)
EXPORT const char * obs_get_module_file_name(obs_module_t *module)
EXPORT void obs_source_video_render(obs_source_t *source)
EXPORT void obs_source_update_properties(obs_source_t *source)
EXPORT obs_sceneitem_t * obs_scene_find_source(obs_scene_t *scene, const char *name)
EXPORT obs_service_t * obs_output_get_service(const obs_output_t *output)
EXPORT obs_source_t * obs_source_get_ref(obs_source_t *source)
float color_range_min[3]
Definition: obs.h:233
uint64_t timestamp
Definition: obs.h:228
EXPORT obs_data_array_t * obs_save_sources(void)
obs_obj_type
Definition: obs.h:592
EXPORT obs_service_t * obs_service_create_private(const char *id, const char *name, obs_data_t *settings)
EXPORT void obs_encoder_update(obs_encoder_t *encoder, obs_data_t *settings)
enum speaker_layout speakers
Definition: obs.h:207
EXPORT void obs_output_pause(obs_output_t *output)
EXPORT obs_source_t * obs_source_create(const char *id, const char *name, obs_data_t *settings, obs_data_t *hotkey_data)
Definition: vec2.h:27
EXPORT bool obs_enum_service_types(size_t idx, const char **id)
Definition: obs.h:131
EXPORT char * obs_find_module_file(obs_module_t *module, const char *file)
EXPORT obs_properties_t * obs_get_encoder_properties(const char *id)
EXPORT profiler_name_store_t * obs_get_profiler_name_store(void)
EXPORT lookup_t * obs_module_load_locale(obs_module_t *module, const char *default_locale, const char *locale)
EXPORT bool obs_enum_filter_types(size_t idx, const char **id)
Definition: obs.h:100
EXPORT obs_source_t * obs_source_duplicate(obs_source_t *source, const char *desired_name, bool create_private)
EXPORT bool obs_reset_audio(const struct obs_audio_info *oai)
EXPORT uint32_t obs_source_get_base_width(obs_source_t *source)
Definition: graphics.h:455
EXPORT obs_encoder_t * obs_audio_encoder_create(const char *id, const char *name, obs_data_t *settings, size_t mixer_idx, obs_data_t *hotkey_data)
Definition: obs.h:597
EXPORT void * obs_service_get_type_data(obs_service_t *service)
EXPORT void obs_weak_service_release(obs_weak_service_t *weak)
EXPORT void obs_source_enum_filters(obs_source_t *source, obs_source_enum_proc_t callback, void *param)
uint32_t linesize[MAX_AV_PLANES]
Definition: obs.h:225
EXPORT float obs_sceneitem_get_rot(const obs_sceneitem_t *item)
uint64_t timestamp
Definition: obs.h:196
unsigned __int64 uint64_t
Definition: vc_stdint.h:33
EXPORT bool obs_get_audio_info(struct obs_audio_info *oai)
EXPORT uint32_t obs_source_get_flags(const obs_source_t *source)
EXPORT void obs_sceneitem_addref(obs_sceneitem_t *item)
EXPORT obs_service_t * obs_service_create(const char *id, const char *name, obs_data_t *settings, obs_data_t *hotkey_data)
Definition: obs.h:536
EXPORT void obs_leave_graphics(void)
EXPORT const char * obs_service_get_type(const obs_service_t *service)
EXPORT obs_weak_service_t * obs_service_get_weak_service(obs_service_t *service)
EXPORT void obs_set_output_source(uint32_t channel, obs_source_t *source)
Definition: audio-io.h:103
gs_color_format
Definition: graphics.h:56
obs_transition_mode
Definition: obs.h:1159
enum audio_format format
Definition: obs.h:208
obs_deinterlace_mode
Definition: obs.h:942
EXPORT audio_t * obs_encoder_audio(const obs_encoder_t *encoder)
obs_bounds_type
Definition: obs.h:127
Definition: obs-encoder.h:41
unsigned char uint8_t
Definition: vc_stdint.h:27
EXPORT const char * obs_obj_get_id(void *obj)
struct obs_data obs_data_t
Definition: obs-data.h:42
EXPORT void obs_encoder_set_preferred_video_format(obs_encoder_t *encoder, enum video_format format)
EXPORT obs_source_t * obs_get_output_source(uint32_t channel)
EXPORT uint64_t obs_source_get_audio_timestamp(const obs_source_t *source)
EXPORT enum video_format obs_encoder_get_preferred_video_format(const obs_encoder_t *encoder)
EXPORT uint32_t obs_transition_get_alignment(const obs_source_t *transition)
int bottom
Definition: obs.h:1354
Definition: obs.h:593
EXPORT void obs_source_send_focus(obs_source_t *source, bool focus)
uint8_t * data[MAX_AV_PLANES]
Definition: obs.h:194
EXPORT obs_source_t * obs_weak_source_get_source(obs_weak_source_t *weak)
Definition: obs.h:1171
EXPORT uint32_t obs_output_get_height(const obs_output_t *output)
EXPORT bool obs_source_push_to_mute_enabled(obs_source_t *source)
EXPORT obs_properties_t * obs_encoder_properties(const obs_encoder_t *encoder)
EXPORT void obs_sceneitem_set_rot(obs_sceneitem_t *item, float rot_deg)
EXPORT void obs_service_apply_encoder_settings(obs_service_t *service, obs_data_t *video_encoder_settings, obs_data_t *audio_encoder_settings)
EXPORT void obs_source_set_sync_offset(obs_source_t *source, int64_t offset)
header for modules implementing encoders.
EXPORT obs_data_t * obs_output_defaults(const char *id)
EXPORT void obs_sceneitem_set_scale(obs_sceneitem_t *item, const struct vec2 *scale)
EXPORT double obs_get_active_fps(void)
EXPORT signal_handler_t * obs_output_get_signal_handler(const obs_output_t *output)
EXPORT bool obs_enum_source_types(size_t idx, const char **id)
Definition: obs.h:1149
const char * bin_path
Definition: obs.h:388
struct obs_properties obs_properties_t
Definition: obs-properties.h:103
EXPORT void obs_sceneitem_set_info(obs_sceneitem_t *item, const struct obs_transform_info *info)
EXPORT bool obs_initialized(void)
EXPORT void obs_transition_set_size(obs_source_t *transition, uint32_t cx, uint32_t cy)
EXPORT int64_t obs_source_get_sync_offset(const obs_source_t *source)
obs_transition_scale_type
Definition: obs.h:1169
EXPORT obs_sceneitem_t * obs_scene_add(obs_scene_t *scene, obs_source_t *source)
EXPORT bool obs_transition_video_render_direct(obs_source_t *transition, enum obs_transition_target target)
void(* obs_source_enum_proc_t)(obs_source_t *parent, obs_source_t *child, void *param)
Definition: obs-source.h:140
obs_scene_duplicate_type
Definition: obs.h:1241
Definition: obs.h:137
EXPORT void obs_display_destroy(obs_display_t *display)
EXPORT void obs_add_main_render_callback(void(*draw)(void *param, uint32_t cx, uint32_t cy), void *param)
uint32_t samples_per_sec
Definition: obs.h:209
EXPORT void obs_view_destroy(obs_view_t *view)
EXPORT const char * obs_source_get_id(const obs_source_t *source)
EXPORT void obs_output_set_preferred_size(obs_output_t *output, uint32_t width, uint32_t height)
Definition: obs.h:944
EXPORT float obs_source_get_volume(const obs_source_t *source)
EXPORT void obs_enter_graphics(void)
EXPORT void obs_display_set_background_color(obs_display_t *display, uint32_t color)
EXPORT void obs_shutdown(void)
EXPORT void obs_output_set_delay(obs_output_t *output, uint32_t delay_sec, uint32_t flags)
EXPORT signal_handler_t * obs_source_get_signal_handler(const obs_source_t *source)
EXPORT void obs_sceneitem_release(obs_sceneitem_t *item)
Definition: obs.h:969
Definition: obs.h:1244
const char * data_path
Definition: obs.h:389
Definition: obs.h:534
EXPORT void obs_weak_service_addref(obs_weak_service_t *weak)
EXPORT void obs_source_draw_set_color_matrix(const struct matrix4 *color_matrix, const struct vec3 *color_range_min, const struct vec3 *color_range_max)
EXPORT void obs_output_set_audio_encoder(obs_output_t *output, obs_encoder_t *encoder, size_t idx)
#define EXPORT
Definition: c99defs.h:49
EXPORT void obs_source_enable_push_to_mute(obs_source_t *source, bool enabled)
EXPORT void obs_source_add_audio_capture_callback(obs_source_t *source, obs_source_audio_capture_t callback, void *param)
Definition: obs-internal.h:521
Definition: obs.h:947
EXPORT bool obs_enum_input_types(size_t idx, const char **id)
EXPORT void obs_output_set_last_error(obs_output_t *output, const char *message)
EXPORT void obs_sceneitem_get_scale(const obs_sceneitem_t *item, struct vec2 *scale)
EXPORT void obs_output_set_mixer(obs_output_t *output, size_t mixer_idx)
EXPORT bool obs_output_start(obs_output_t *output)
EXPORT bool obs_source_async_unbuffered(const obs_source_t *source)
Definition: obs.h:98
EXPORT const char * obs_service_get_id(const obs_service_t *service)
Definition: obs-internal.h:189
EXPORT void obs_enum_modules(obs_enum_module_callback_t callback, void *param)
obs_source_type
Definition: obs-source.h:34
uint8_t * data[MAX_AV_PLANES]
Definition: obs.h:224
EXPORT const char * obs_get_module_name(obs_module_t *module)
EXPORT uint32_t obs_output_get_active_delay(const obs_output_t *output)
uint32_t width
Definition: obs.h:226
Definition: obs.h:943
EXPORT bool obs_sceneitem_set_visible(obs_sceneitem_t *item, bool visible)
EXPORT void obs_sceneitem_get_info(const obs_sceneitem_t *item, struct obs_transform_info *info)
void(* obs_enum_module_callback_t)(void *param, obs_module_t *module)
Definition: obs.h:399
EXPORT void obs_source_set_async_unbuffered(obs_source_t *source, bool unbuffered)
EXPORT void obs_source_remove_active_child(obs_source_t *parent, obs_source_t *child)
EXPORT void obs_source_set_audio_mixers(obs_source_t *source, uint32_t mixers)
EXPORT void obs_output_force_stop(obs_output_t *output)
const char * graphics_module
Definition: obs.h:156
EXPORT obs_data_t * obs_save_source(obs_source_t *source)
uint32_t alignment
Definition: obs.h:141
bool gpu_conversion
Definition: obs.h:173
Definition: obs.h:115
uint32_t samples_per_sec
Definition: obs.h:185
EXPORT obs_encoder_t * obs_video_encoder_create(const char *id, const char *name, obs_data_t *settings, obs_data_t *hotkey_data)
EXPORT void obs_source_output_audio(obs_source_t *source, const struct obs_source_audio *audio)
EXPORT void obs_source_inc_showing(obs_source_t *source)
Definition: obs.h:133
Definition: obs.h:130
Definition: obs-internal.h:930
Definition: obs-internal.h:80
EXPORT const char * obs_encoder_get_display_name(const char *id)
struct text_lookup lookup_t
Definition: text-lookup.h:35
EXPORT obs_output_t * obs_weak_output_get_output(obs_weak_output_t *weak)
EXPORT const char * obs_source_get_display_name(const char *id)
EXPORT void obs_encoder_addref(obs_encoder_t *encoder)
EXPORT bool obs_output_reconnecting(const obs_output_t *output)
EXPORT void obs_set_master_volume(float volume)
Definition: effect.h:139
EXPORT void obs_source_remove_audio_capture_callback(obs_source_t *source, obs_source_audio_capture_t callback, void *param)
EXPORT enum obs_encoder_type obs_get_encoder_type(const char *id)
EXPORT obs_source_t * obs_filter_get_target(const obs_source_t *filter)
obs_scale_type
Definition: obs.h:114
EXPORT void obs_sceneitem_get_bounds(const obs_sceneitem_t *item, struct vec2 *bounds)
EXPORT void obs_service_release(obs_service_t *service)
EXPORT obs_source_t * obs_transition_get_source(obs_source_t *transition, enum obs_transition_target target)
EXPORT void obs_weak_encoder_addref(obs_weak_encoder_t *weak)
video_colorspace
Definition: video-io.h:55
obs_deinterlace_field_order
Definition: obs.h:954
Definition: obs.h:1170
EXPORT obs_source_t * obs_filter_get_parent(const obs_source_t *filter)
EXPORT void obs_transition_video_render(obs_source_t *transition, obs_transition_video_render_callback_t callback)
EXPORT void obs_encoder_set_audio(obs_encoder_t *encoder, audio_t *audio)
EXPORT void obs_view_render(obs_view_t *view)
Definition: obs.h:1243
header for modules implementing sources.
EXPORT const char * obs_service_get_output_type(const obs_service_t *service)
EXPORT bool obs_output_begin_data_capture(obs_output_t *output, uint32_t flags)
EXPORT uint32_t obs_source_get_base_height(obs_source_t *source)
EXPORT enum obs_scale_type obs_sceneitem_get_scale_filter(obs_sceneitem_t *item)
EXPORT void obs_sceneitem_get_box_transform(const obs_sceneitem_t *item, struct matrix4 *transform)
Definition: obs.h:101
Definition: obs.h:539
EXPORT const char * obs_get_locale(void)
EXPORT bool obs_init_module(obs_module_t *module)
EXPORT const char * obs_output_get_supported_audio_codecs(const obs_output_t *output)
obs_transition_target
Definition: obs.h:1148
EXPORT void obs_sceneitem_set_order(obs_sceneitem_t *item, enum obs_order_movement movement)
struct obs_volmeter obs_volmeter_t
Definition: obs.h:64
EXPORT void obs_sceneitem_set_bounds(obs_sceneitem_t *item, const struct vec2 *bounds)
Definition: matrix4.h:32
EXPORT void obs_source_preload_video(obs_source_t *source, const struct obs_source_frame *frame)
EXPORT audio_t * obs_get_audio(void)
EXPORT void obs_find_modules(obs_find_module_callback_t callback, void *param)
EXPORT void obs_source_process_filter_tech_end(obs_source_t *filter, gs_effect_t *effect, uint32_t width, uint32_t height, const char *tech_name)
EXPORT void obs_weak_output_addref(obs_weak_output_t *weak)
EXPORT void obs_transition_set_alignment(obs_source_t *transition, uint32_t alignment)
EXPORT void obs_add_tick_callback(void(*tick)(void *param, float seconds), void *param)
EXPORT const char * obs_encoder_get_id(const obs_encoder_t *encoder)
EXPORT void obs_encoder_set_video(obs_encoder_t *encoder, video_t *video)
enum video_format output_format
Definition: obs.h:167
bool flip
Definition: obs.h:235
float color_matrix[16]
Definition: obs.h:231
EXPORT void obs_source_enum_active_tree(obs_source_t *source, obs_source_enum_proc_t enum_callback, void *param)
EXPORT bool obs_transition_start(obs_source_t *transition, enum obs_transition_mode mode, uint32_t duration_ms, obs_source_t *dest)
EXPORT proc_handler_t * obs_source_get_proc_handler(const obs_source_t *source)
EXPORT void obs_scene_atomic_update(obs_scene_t *scene, obs_scene_atomic_update_func func, void *data)
EXPORT obs_properties_t * obs_service_properties(const obs_service_t *service)
struct gs_texture gs_texture_t
Definition: graphics.h:258
EXPORT void obs_source_get_audio_mix(const obs_source_t *source, struct obs_source_audio_mix *audio)
EXPORT bool obs_source_configurable(const obs_source_t *source)
EXPORT const char * obs_get_encoder_codec(const char *id)
EXPORT void obs_display_resize(obs_display_t *display, uint32_t cx, uint32_t cy)
EXPORT obs_source_t * obs_transition_get_active_source(obs_source_t *transition)
Definition: obs.h:950
EXPORT void obs_source_send_mouse_move(obs_source_t *source, const struct obs_mouse_event *event, bool mouse_leave)
const uint8_t * data[MAX_AV_PLANES]
Definition: obs.h:204
EXPORT void obs_source_draw(gs_texture_t *image, int x, int y, uint32_t cx, uint32_t cy, bool flip)
EXPORT void obs_sceneitem_set_order_position(obs_sceneitem_t *item, int position)
DEPRECATED EXPORT void obs_render_main_view(void)
Definition: obs.h:118
EXPORT void obs_get_audio_monitoring_device(const char **name, const char **id)
EXPORT void obs_service_update(obs_service_t *service, obs_data_t *settings)
Definition: obs.h:223
EXPORT uint32_t obs_encoder_get_sample_rate(const obs_encoder_t *encoder)
EXPORT bool obs_source_add_active_child(obs_source_t *parent, obs_source_t *child)
EXPORT void obs_source_enable_push_to_talk(obs_source_t *source, bool enabled)
EXPORT void obs_remove_tick_callback(void(*tick)(void *param, float seconds), void *param)
EXPORT void obs_output_stop(obs_output_t *output)
struct obs_fader obs_fader_t
Definition: obs.h:63
Definition: audio-io.h:78
EXPORT proc_handler_t * obs_get_proc_handler(void)
EXPORT void obs_transition_set_scale_type(obs_source_t *transition, enum obs_transition_scale_type type)
EXPORT obs_output_t * obs_output_create(const char *id, const char *name, obs_data_t *settings, obs_data_t *hotkey_data)
enum video_format format
Definition: obs.h:230
Definition: obs.h:387
EXPORT void obs_source_set_push_to_mute_delay(obs_source_t *source, uint64_t delay)
EXPORT uint64_t obs_source_get_push_to_mute_delay(obs_source_t *source)
Definition: obs.h:151
EXPORT void obs_sceneitem_set_pos(obs_sceneitem_t *item, const struct vec2 *pos)
EXPORT enum obs_source_type obs_source_get_type(const obs_source_t *source)
EXPORT bool obs_is_source_configurable(const char *id)
obs_base_effect
Definition: obs.h:532
EXPORT void obs_enum_outputs(bool(*enum_proc)(void *, obs_output_t *), void *param)
Definition: obs.h:99
struct signal_handler signal_handler_t
Definition: signal.h:35
EXPORT obs_encoder_t * obs_encoder_get_ref(obs_encoder_t *encoder)
EXPORT void obs_transition_clear(obs_source_t *transition)
EXPORT void obs_source_send_key_click(obs_source_t *source, const struct obs_key_event *event, bool key_up)
struct vec2 pos
Definition: obs.h:138
Definition: bounds.h:39
EXPORT void obs_scene_release(obs_scene_t *scene)
EXPORT enum obs_obj_type obs_obj_get_type(void *obj)
EXPORT bool obs_startup(const char *locale, const char *module_config_path, profiler_name_store_t *store)
EXPORT obs_data_t * obs_source_get_private_settings(obs_source_t *item)
EXPORT obs_weak_encoder_t * obs_encoder_get_weak_encoder(obs_encoder_t *encoder)
EXPORT obs_data_t * obs_sceneitem_get_private_settings(obs_sceneitem_t *item)
Definition: obs-source.h:143
EXPORT obs_properties_t * obs_source_properties(const obs_source_t *source)
uint32_t output_height
Definition: obs.h:166
Definition: obs-internal.h:1010
EXPORT void obs_weak_encoder_release(obs_weak_encoder_t *weak)
EXPORT obs_output_t * obs_output_get_ref(obs_output_t *output)
Definition: obs.h:537
EXPORT void obs_source_addref(obs_source_t *source)
EXPORT obs_data_t * obs_encoder_defaults(const char *id)
EXPORT obs_source_t * obs_source_get_filter_by_name(obs_source_t *source, const char *name)
EXPORT bool obs_obj_invalid(void *obj)
EXPORT video_t * obs_encoder_video(const obs_encoder_t *encoder)
EXPORT void * obs_output_get_type_data(obs_output_t *output)
EXPORT obs_properties_t * obs_output_properties(const obs_output_t *output)
Definition: obs.h:1160
EXPORT void obs_scene_addref(obs_scene_t *scene)
Definition: obs.h:203
EXPORT uint32_t obs_encoder_get_height(const obs_encoder_t *encoder)
EXPORT void obs_output_set_service(obs_output_t *output, obs_service_t *service)
EXPORT obs_source_t * obs_view_get_source(obs_view_t *view, uint32_t channel)
EXPORT void obs_source_default_render(obs_source_t *source)
EXPORT const char * obs_get_module_binary_path(obs_module_t *module)
uint32_t adapter
Definition: obs.h:170
EXPORT obs_source_t * obs_scene_get_source(const obs_scene_t *scene)
obs_allow_direct_render
Definition: obs.h:109
EXPORT uint32_t obs_get_encoder_caps(const char *encoder_id)
EXPORT int obs_reset_video(struct obs_video_info *ovi)
EXPORT void obs_set_locale(const char *locale)
EXPORT bool obs_weak_output_references_output(obs_weak_output_t *weak, obs_output_t *output)
EXPORT obs_data_array_t * obs_save_sources_filtered(obs_save_source_filter_cb cb, void *data)
float(* obs_transition_audio_mix_callback_t)(void *data, float t)
Definition: obs.h:1202
struct video_output video_t
Definition: video-io.h:31
EXPORT void obs_source_send_mouse_click(obs_source_t *source, const struct obs_mouse_event *event, int32_t type, bool mouse_up, uint32_t click_count)
EXPORT enum obs_deinterlace_mode obs_source_get_deinterlace_mode(const obs_source_t *source)
EXPORT obs_source_t * obs_load_source(obs_data_t *data)
Definition: obs.h:949
EXPORT void obs_sceneitem_defer_update_end(obs_sceneitem_t *item)
EXPORT video_t * obs_output_video(const obs_output_t *output)
Definition: obs.h:540
uint32_t fps_num
Definition: obs.h:159
EXPORT void obs_source_send_mouse_wheel(obs_source_t *source, const struct obs_mouse_event *event, int x_delta, int y_delta)
EXPORT size_t obs_output_get_mixer(const obs_output_t *output)
Definition: obs.h:184
Definition: obs.h:594
volatile long refs
Definition: obs.h:238
EXPORT bool obs_source_showing(const obs_source_t *source)
EXPORT uint32_t obs_output_get_width(const obs_output_t *output)
EXPORT void obs_render_main_texture(void)
EXPORT obs_data_t * obs_source_get_settings(const obs_source_t *source)
EXPORT uint64_t obs_output_get_total_bytes(const obs_output_t *output)
EXPORT char * obs_module_get_config_path(obs_module_t *module, const char *file)
EXPORT bool obs_source_async_decoupled(const obs_source_t *source)
EXPORT void obs_load_sources(obs_data_array_t *array, obs_load_source_cb cb, void *private_data)
EXPORT void obs_source_release(obs_source_t *source)
EXPORT float obs_get_master_volume(void)
EXPORT bool obs_output_can_pause(const obs_output_t *output)
EXPORT uint32_t obs_source_get_height(obs_source_t *source)
EXPORT void obs_output_set_media(obs_output_t *output, video_t *video, audio_t *audio)
#define MAX_AV_PLANES
Definition: media-io-defs.h:20
void(* obs_find_module_callback_t)(void *param, const struct obs_module_info *info)
Definition: obs.h:392
EXPORT void obs_service_addref(obs_service_t *service)
EXPORT int obs_output_get_connect_time_ms(obs_output_t *output)
bool(* obs_enum_audio_device_cb)(void *data, const char *name, const char *id)
Definition: obs.h:604
EXPORT void obs_source_set_muted(obs_source_t *source, bool muted)
EXPORT const char * obs_get_module_data_path(obs_module_t *module)
EXPORT void obs_encoder_release(obs_encoder_t *encoder)
Definition: obs.h:134
EXPORT obs_data_t * obs_service_get_settings(const obs_service_t *service)
EXPORT bool obs_encoder_get_extra_data(const obs_encoder_t *encoder, uint8_t **extra_data, size_t *size)
libobs header for the properties system used in libobs
EXPORT bool obs_weak_encoder_references_encoder(obs_weak_encoder_t *weak, obs_encoder_t *encoder)
Definition: obs.h:946
EXPORT void obs_source_set_monitoring_type(obs_source_t *source, enum obs_monitoring_type type)
int left
Definition: obs.h:1351
EXPORT void obs_source_remove(obs_source_t *source)
EXPORT bool obs_encoder_active(const obs_encoder_t *encoder)
EXPORT void obs_output_release(obs_output_t *output)
EXPORT void obs_sceneitem_get_pos(const obs_sceneitem_t *item, struct vec2 *pos)
EXPORT obs_properties_t * obs_get_source_properties(const char *id)
EXPORT void obs_source_set_deinterlace_mode(obs_source_t *source, enum obs_deinterlace_mode mode)
EXPORT void obs_source_set_name(obs_source_t *source, const char *name)
Definition: obs.h:111
EXPORT uint32_t obs_sceneitem_get_alignment(const obs_sceneitem_t *item)
EXPORT uint32_t obs_sceneitem_get_bounds_alignment(const obs_sceneitem_t *item)
struct obs_data_array obs_data_array_t
Definition: obs-data.h:44
Definition: obs.h:1242
EXPORT uint64_t obs_get_video_frame_time(void)
EXPORT void obs_source_dec_showing(obs_source_t *source)
Definition: obs-scene.h:31
EXPORT void obs_transition_set(obs_source_t *transition, obs_source_t *source)
struct vec2 scale
Definition: obs.h:140
EXPORT bool obs_source_removed(const obs_source_t *source)
EXPORT void obs_transition_get_size(const obs_source_t *transition, uint32_t *cx, uint32_t *cy)
obs_encoder_type
Definition: obs-encoder.h:35
EXPORT int obs_open_module(obs_module_t **module, const char *path, const char *data_path)
EXPORT bool obs_sceneitem_selected(const obs_sceneitem_t *item)
EXPORT void obs_encoder_set_scaled_size(obs_encoder_t *encoder, uint32_t width, uint32_t height)
EXPORT void obs_source_set_default_flags(obs_source_t *source, uint32_t flags)
EXPORT const char * obs_output_get_display_name(const char *id)
EXPORT obs_source_t * obs_get_source_by_name(const char *name)
EXPORT void obs_output_addref(obs_output_t *output)
EXPORT bool obs_transition_fixed(obs_source_t *transition)
EXPORT bool obs_sceneitem_set_locked(obs_sceneitem_t *item, bool lock)
EXPORT void obs_source_output_video(obs_source_t *source, const struct obs_source_frame *frame)
EXPORT obs_data_t * obs_encoder_get_settings(const obs_encoder_t *encoder)
Definition: obs-internal.h:1015
EXPORT const char * obs_output_get_name(const obs_output_t *output)
EXPORT void obs_enum_audio_monitoring_devices(obs_enum_audio_device_cb cb, void *data)
EXPORT void obs_transition_swap_begin(obs_source_t *tr_dest, obs_source_t *tr_source)
EXPORT enum obs_bounds_type obs_sceneitem_get_bounds_type(const obs_sceneitem_t *item)
EXPORT signal_handler_t * obs_get_signal_handler(void)
EXPORT const char * obs_get_module_description(obs_module_t *module)
EXPORT void obs_sceneitem_set_crop(obs_sceneitem_t *item, const struct obs_sceneitem_crop *crop)
EXPORT obs_scene_t * obs_scene_from_source(const obs_source_t *source)
EXPORT obs_encoder_t * obs_weak_encoder_get_encoder(obs_weak_encoder_t *weak)
EXPORT const char * obs_service_get_password(const obs_service_t *service)
EXPORT uint32_t obs_encoder_get_width(const obs_encoder_t *encoder)
Definition: obs.h:955
EXPORT obs_weak_source_t * obs_source_get_weak_source(obs_source_t *source)
EXPORT obs_source_t * obs_sceneitem_get_source(const obs_sceneitem_t *item)
EXPORT const char * obs_output_get_id(const obs_output_t *output)
obs_monitoring_type
Definition: obs.h:968
EXPORT void obs_sceneitem_remove(obs_sceneitem_t *item)
EXPORT void obs_source_release_frame(obs_source_t *source, struct obs_source_frame *frame)
EXPORT const char * obs_get_version_string(void)
EXPORT void obs_transition_enable_fixed(obs_source_t *transition, bool enable, uint32_t duration_ms)
struct proc_handler proc_handler_t
Definition: proc.h:36
EXPORT const char * obs_encoder_get_name(const obs_encoder_t *encoder)
EXPORT void obs_output_update(obs_output_t *output, obs_data_t *settings)
Definition: obs.h:129
EXPORT obs_scene_t * obs_scene_create(const char *name)
EXPORT void obs_source_frame_init(struct obs_source_frame *frame, enum video_format format, uint32_t width, uint32_t height)
uint32_t bounds_alignment
Definition: obs.h:144
enum obs_bounds_type bounds_type
Definition: obs.h:143
EXPORT obs_data_t * obs_get_source_defaults(const char *id)
int top
Definition: obs.h:1352
obs_order_movement
Definition: obs.h:97
bool full_range
Definition: obs.h:232
uint32_t frames
Definition: obs.h:205
EXPORT void obs_sceneitem_set_bounds_alignment(obs_sceneitem_t *item, uint32_t alignment)
EXPORT void obs_enum_sources(bool(*enum_proc)(void *, obs_source_t *), void *param)
Definition: obs.h:533
EXPORT obs_data_t * obs_service_defaults(const char *id)
Definition: obs.h:945
EXPORT bool obs_enum_output_types(size_t idx, const char **id)
EXPORT obs_display_t * obs_display_create(const struct gs_init_data *graphics_data)
Definition: obs.h:128
Definition: obs.h:132
video_range_type
Definition: video-io.h:61
__int64 int64_t
Definition: vc_stdint.h:32
EXPORT void bfree(void *ptr)
enum video_range_type range
Definition: obs.h:176
EXPORT bool obs_transition_audio_render(obs_source_t *transition, uint64_t *ts_out, struct obs_source_audio_mix *audio, uint32_t mixers, size_t channels, size_t sample_rate, obs_transition_audio_mix_callback_t mix_a_callback, obs_transition_audio_mix_callback_t mix_b_callback)
EXPORT void obs_display_set_enabled(obs_display_t *display, bool enable)
EXPORT obs_weak_output_t * obs_output_get_weak_output(obs_output_t *output)
EXPORT bool obs_display_enabled(obs_display_t *display)
EXPORT bool obs_sceneitem_visible(const obs_sceneitem_t *item)
Definition: obs.h:110
EXPORT obs_output_t * obs_get_output_by_name(const char *name)
DEPRECATED EXPORT gs_effect_t * obs_get_default_rect_effect(void)
EXPORT bool obs_sceneitem_locked(const obs_sceneitem_t *item)
EXPORT void obs_source_show_preloaded_video(obs_source_t *source)
EXPORT void obs_display_add_draw_callback(obs_display_t *display, void(*draw)(void *param, uint32_t cx, uint32_t cy), void *param)
#define bool
Definition: vc_stdbool.h:5
Definition: obs.h:1350
EXPORT obs_service_t * obs_service_get_ref(obs_service_t *service)
EXPORT bool obs_source_push_to_talk_enabled(obs_source_t *source)
EXPORT void * obs_encoder_get_type_data(obs_encoder_t *encoder)
EXPORT uint64_t obs_get_average_frame_time_ns(void)
Definition: obs.h:951
EXPORT bool obs_weak_service_references_service(obs_weak_service_t *weak, obs_service_t *service)
EXPORT void * obs_source_get_type_data(obs_source_t *source)
EXPORT bool obs_source_muted(const obs_source_t *source)
EXPORT void obs_source_filter_remove(obs_source_t *source, obs_source_t *filter)
EXPORT void obs_weak_source_addref(obs_weak_source_t *weak)
EXPORT void obs_source_set_push_to_talk_delay(obs_source_t *source, uint64_t delay)
Definition: obs-internal.h:201
EXPORT obs_properties_t * obs_get_service_properties(const char *id)
Definition: obs.h:1245
EXPORT void obs_view_set_source(obs_view_t *view, uint32_t channel, obs_source_t *source)
EXPORT obs_sceneitem_t * obs_scene_find_sceneitem_by_id(obs_scene_t *scene, int64_t id)
Definition: obs.h:119
uint32_t output_width
Definition: obs.h:165
EXPORT int obs_output_get_frames_dropped(const obs_output_t *output)
EXPORT void obs_output_set_video_conversion(obs_output_t *output, const struct video_scale_info *conversion)
header for audio controls
EXPORT void obs_log_loaded_modules(void)
EXPORT void obs_load_all_modules(void)
EXPORT void obs_source_skip_video_filter(obs_source_t *filter)
EXPORT uint32_t obs_get_total_frames(void)
EXPORT void obs_enum_encoders(bool(*enum_proc)(void *, obs_encoder_t *), void *param)
EXPORT const char * obs_source_get_name(const obs_source_t *source)
EXPORT void obs_add_module_path(const char *bin, const char *data)
struct audio_output audio_t
Definition: audio-io.h:42
EXPORT bool obs_enum_encoder_types(size_t idx, const char **id)
EXPORT enum obs_deinterlace_field_order obs_source_get_deinterlace_field_order(const obs_source_t *source)
void(* obs_transition_video_render_callback_t)(void *data, gs_texture_t *a, gs_texture_t *b, float t, uint32_t cx, uint32_t cy)
Definition: obs.h:1199
EXPORT video_t * obs_get_video(void)
EXPORT obs_source_t * obs_source_create_private(const char *id, const char *name, obs_data_t *settings)
EXPORT void obs_sceneitem_set_scale_filter(obs_sceneitem_t *item, enum obs_scale_type filter)
EXPORT enum obs_encoder_type obs_encoder_get_type(const obs_encoder_t *encoder)
Definition: obs.h:193
header for modules implementing services.
EXPORT float obs_transition_get_time(obs_source_t *transition)
EXPORT void obs_post_load_modules(void)
EXPORT void obs_output_set_video_encoder(obs_output_t *output, obs_encoder_t *encoder)
EXPORT bool obs_set_audio_monitoring_device(const char *name, const char *id)
EXPORT const char * obs_service_get_username(const obs_service_t *service)
EXPORT bool obs_output_active(const obs_output_t *output)
EXPORT bool obs_enum_transition_types(size_t idx, const char **id)
EXPORT void obs_source_filter_add(obs_source_t *source, obs_source_t *filter)
EXPORT const char * obs_service_get_display_name(const char *id)
EXPORT void obs_sceneitem_get_draw_transform(const obs_sceneitem_t *item, struct matrix4 *transform)
EXPORT const char * obs_get_module_author(obs_module_t *module)
bool prev_frame
Definition: obs.h:239
EXPORT void obs_source_set_volume(obs_source_t *source, float volume)
struct profiler_name_store profiler_name_store_t
Definition: profiler.h:39
EXPORT uint32_t obs_get_lagged_frames(void)
EXPORT obs_service_t * obs_get_service_by_name(const char *name)
EXPORT obs_encoder_t * obs_output_get_video_encoder(const obs_output_t *output)
EXPORT bool obs_source_process_filter_begin(obs_source_t *filter, enum gs_color_format format, enum obs_allow_direct_render allow_direct)