Open Broadcaster Software
Free, open source software for live streaming and recording
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 
155  const char *graphics_module;
156 
165  enum video_format output_format;
169 
172 
173  enum video_colorspace colorspace;
174  enum video_range_type range;
176  enum obs_scale_type scale_type;
177 };
178 
184  enum speaker_layout speakers;
185 };
186 
195 };
196 
202  const uint8_t *data[MAX_AV_PLANES];
204 
205  enum speaker_layout speakers;
206  enum audio_format format;
208 
210 };
211 
227 
228  enum video_format format;
229  float color_matrix[16];
231  float color_range_min[3];
232  float color_range_max[3];
233  bool flip;
234 
235  /* used internally by libobs */
236  volatile long refs;
238 };
239 
240 /* ------------------------------------------------------------------------- */
241 /* OBS context */
242 
251 EXPORT bool obs_startup(const char *locale, const char *module_config_path,
252  profiler_name_store_t *store);
253 
255 EXPORT void obs_shutdown(void);
256 
258 EXPORT bool obs_initialized(void);
259 
262 
269 EXPORT void obs_set_locale(const char *locale);
270 
272 EXPORT const char *obs_get_locale(void);
273 
280 
297 EXPORT int obs_reset_video(struct obs_video_info *ovi);
298 
304 EXPORT bool obs_reset_audio(const struct obs_audio_info *oai);
305 
307 EXPORT bool obs_get_video_info(struct obs_video_info *ovi);
308 
310 EXPORT bool obs_get_audio_info(struct obs_audio_info *oai);
311 
333 EXPORT int obs_open_module(obs_module_t **module, const char *path,
334  const char *data_path);
335 
341 EXPORT bool obs_init_module(obs_module_t *module);
342 
344 EXPORT void obs_log_loaded_modules(void);
345 
347 EXPORT const char *obs_get_module_file_name(obs_module_t *module);
348 
350 EXPORT const char *obs_get_module_name(obs_module_t *module);
351 
353 EXPORT const char *obs_get_module_author(obs_module_t *module);
354 
356 EXPORT const char *obs_get_module_description(obs_module_t *module);
357 
359 EXPORT const char *obs_get_module_binary_path(obs_module_t *module);
360 
362 EXPORT const char *obs_get_module_data_path(obs_module_t *module);
363 
372 EXPORT void obs_add_module_path(const char *bin, const char *data);
373 
375 EXPORT void obs_load_all_modules(void);
376 
378  const char *bin_path;
379  const char *data_path;
380 };
381 
382 typedef void (*obs_find_module_callback_t)(void *param,
383  const struct obs_module_info *info);
384 
386 EXPORT void obs_find_modules(obs_find_module_callback_t callback, void *param);
387 
388 typedef void (*obs_enum_module_callback_t)(void *param, obs_module_t *module);
389 
391 EXPORT void obs_enum_modules(obs_enum_module_callback_t callback, void *param);
392 
395  const char *default_locale, const char *locale);
396 
408 EXPORT char *obs_find_module_file(obs_module_t *module, const char *file);
409 
421 EXPORT char *obs_module_get_config_path(obs_module_t *module, const char *file);
422 
424 EXPORT bool obs_enum_source_types(size_t idx, const char **id);
425 
432 EXPORT bool obs_enum_input_types(size_t idx, const char **id);
433 
440 EXPORT bool obs_enum_filter_types(size_t idx, const char **id);
441 
448 EXPORT bool obs_enum_transition_types(size_t idx, const char **id);
449 
451 EXPORT bool obs_enum_output_types(size_t idx, const char **id);
452 
454 EXPORT bool obs_enum_encoder_types(size_t idx, const char **id);
455 
457 EXPORT bool obs_enum_service_types(size_t idx, const char **id);
458 
460 EXPORT void obs_enter_graphics(void);
461 
463 EXPORT void obs_leave_graphics(void);
464 
467 
470 
472 EXPORT void obs_set_output_source(uint32_t channel, obs_source_t *source);
473 
479 
489 EXPORT void obs_enum_sources(bool (*enum_proc)(void*, obs_source_t*),
490  void *param);
491 
493 EXPORT void obs_enum_outputs(bool (*enum_proc)(void*, obs_output_t*),
494  void *param);
495 
497 EXPORT void obs_enum_encoders(bool (*enum_proc)(void*, obs_encoder_t*),
498  void *param);
499 
501 EXPORT void obs_enum_services(bool (*enum_proc)(void*, obs_service_t*),
502  void *param);
503 
510 EXPORT obs_source_t *obs_get_source_by_name(const char *name);
511 
513 EXPORT obs_output_t *obs_get_output_by_name(const char *name);
514 
516 EXPORT obs_encoder_t *obs_get_encoder_by_name(const char *name);
517 
519 EXPORT obs_service_t *obs_get_service_by_name(const char *name);
520 
530 };
531 
534 
535 /* DEPRECATED: gets texture_rect default effect */
538 
541 
544 
546 EXPORT void obs_render_main_view(void);
547 
549 EXPORT void obs_set_master_volume(float volume);
550 
552 EXPORT float obs_get_master_volume(void);
553 
556 
559 
560 typedef void (*obs_load_source_cb)(void *private_data, obs_source_t *source);
561 
564  void *private_data);
565 
568 
569 typedef bool (*obs_save_source_filter_cb)(void *data, obs_source_t *source);
571  void *data);
572 
579 };
580 
581 EXPORT enum obs_obj_type obs_obj_get_type(void *obj);
582 EXPORT const char *obs_obj_get_id(void *obj);
583 EXPORT bool obs_obj_invalid(void *obj);
584 
585 
586 /* ------------------------------------------------------------------------- */
587 /* View context */
588 
596 
599 
601 EXPORT void obs_view_set_source(obs_view_t *view, uint32_t channel,
602  obs_source_t *source);
603 
606  uint32_t channel);
607 
609 EXPORT void obs_view_render(obs_view_t *view);
610 
612 
613 EXPORT double obs_get_active_fps(void);
614 
615 
616 /* ------------------------------------------------------------------------- */
617 /* Display context */
618 
627  const struct gs_init_data *graphics_data);
628 
631 
634  uint32_t cy);
635 
645  void (*draw)(void *param, uint32_t cx, uint32_t cy),
646  void *param);
647 
650  void (*draw)(void *param, uint32_t cx, uint32_t cy),
651  void *param);
652 
653 EXPORT void obs_display_set_enabled(obs_display_t *display, bool enable);
655 
657  uint32_t color);
658 
659 
660 /* ------------------------------------------------------------------------- */
661 /* Sources */
662 
664 EXPORT const char *obs_source_get_display_name(const char *id);
665 
672 EXPORT obs_source_t *obs_source_create(const char *id, const char *name,
673  obs_data_t *settings, obs_data_t *hotkey_data);
674 
676  const char *name, obs_data_t *settings);
677 
678 /* if source has OBS_SOURCE_DO_NOT_DUPLICATE output flag set, only returns a
679  * reference */
681  const char *desired_name, bool create_private);
688 
691 
695 
697  obs_source_t *source);
698 
701 
703 EXPORT bool obs_source_removed(const obs_source_t *source);
704 
707 
710 
712 EXPORT obs_data_t *obs_get_source_defaults(const char *id);
713 
716 
718 EXPORT bool obs_is_source_configurable(const char *id);
719 
720 EXPORT bool obs_source_configurable(const obs_source_t *source);
721 
727 
729 EXPORT void obs_source_update(obs_source_t *source, obs_data_t *settings);
730 
733 
736 
739 
746 
753 
756 
759  obs_source_t *filter);
760 
763  obs_source_t *filter, enum obs_order_movement movement);
764 
767 
769 EXPORT const char *obs_source_get_name(const obs_source_t *source);
770 
772 EXPORT void obs_source_set_name(obs_source_t *source, const char *name);
773 
776 
778 EXPORT const char *obs_source_get_id(const obs_source_t *source);
779 
782  const obs_source_t *source);
783 
786 
788 EXPORT void obs_source_set_volume(obs_source_t *source, float volume);
789 
791 EXPORT float obs_source_get_volume(const obs_source_t *source);
792 
795 
798 
801  obs_source_enum_proc_t enum_callback,
802  void *param);
803 
806  obs_source_enum_proc_t enum_callback,
807  void *param);
808 
810 EXPORT bool obs_source_active(const obs_source_t *source);
811 
815 EXPORT bool obs_source_showing(const obs_source_t *source);
816 
818 #define OBS_SOURCE_FLAG_UNBUFFERED (1<<0)
819 
820 #define OBS_SOURCE_FLAG_FORCE_MONO (1<<1)
821 
827 EXPORT void obs_source_set_flags(obs_source_t *source, uint32_t flags);
828 
831 
837 
840 
847 
854 
857  obs_source_enum_proc_t callback, void *param);
858 
861  const char *name);
862 
863 EXPORT bool obs_source_enabled(const obs_source_t *source);
864 EXPORT void obs_source_set_enabled(obs_source_t *source, bool enabled);
865 
866 EXPORT bool obs_source_muted(const obs_source_t *source);
867 EXPORT void obs_source_set_muted(obs_source_t *source, bool muted);
868 
870 EXPORT void obs_source_enable_push_to_mute(obs_source_t *source, bool enabled);
871 
874  uint64_t delay);
875 
877 EXPORT void obs_source_enable_push_to_talk(obs_source_t *source, bool enabled);
878 
881  uint64_t delay);
882 
883 typedef void (*obs_source_audio_capture_t)(void *param, obs_source_t *source,
884  const struct audio_data *audio_data, bool muted);
885 
887  obs_source_audio_capture_t callback, void *param);
889  obs_source_audio_capture_t callback, void *param);
890 
901 };
902 
906 };
907 
909  enum obs_deinterlace_mode mode);
911  const obs_source_t *source);
913  enum obs_deinterlace_field_order field_order);
915  const obs_source_t *source);
916 
917 /* ------------------------------------------------------------------------- */
918 /* Functions used by sources */
919 
921 
935  const struct matrix4 *color_matrix,
936  const struct vec3 *color_range_min,
937  const struct vec3 *color_range_max);
938 
950 EXPORT void obs_source_draw(gs_texture_t *image, int x, int y,
951  uint32_t cx, uint32_t cy, bool flip);
952 
955  const struct obs_source_frame *frame);
956 
959  const struct obs_source_audio *audio);
960 
963 
966 
969  struct obs_source_frame *frame);
970 
983  enum gs_color_format format,
984  enum obs_allow_direct_render allow_direct);
985 
995 
1005  const char *tech_name);
1006 
1009 
1018  obs_source_t *child);
1019 
1026  obs_source_t *child);
1027 
1030  const struct obs_mouse_event *event,
1031  int32_t type, bool mouse_up,
1032  uint32_t click_count);
1033 
1036  const struct obs_mouse_event *event, bool mouse_leave);
1037 
1040  const struct obs_mouse_event *event, int x_delta, int y_delta);
1041 
1043 EXPORT void obs_source_send_focus(obs_source_t *source, bool focus);
1044 
1047  const struct obs_key_event *event, bool key_up);
1048 
1051 
1054 
1057 
1058 EXPORT bool obs_source_audio_pending(const obs_source_t *source);
1060 EXPORT void obs_source_get_audio_mix(const obs_source_t *source,
1061  struct obs_source_audio_mix *audio);
1062 
1063 /* ------------------------------------------------------------------------- */
1064 /* Transition-specific functions */
1068 };
1069 
1071  enum obs_transition_target target);
1072 EXPORT void obs_transition_clear(obs_source_t *transition);
1073 
1075 
1078 };
1079 
1080 EXPORT bool obs_transition_start(obs_source_t *transition,
1081  enum obs_transition_mode mode, uint32_t duration_ms,
1082  obs_source_t *dest);
1083 
1084 EXPORT void obs_transition_set(obs_source_t *transition, obs_source_t *source);
1085 
1090 };
1091 
1093  enum obs_transition_scale_type type);
1095  const obs_source_t *transition);
1096 
1100 
1102  uint32_t cx, uint32_t cy);
1103 EXPORT void obs_transition_get_size(const obs_source_t *transition,
1104  uint32_t *cx, uint32_t *cy);
1105 
1106 /* function used by transitions */
1107 
1112 EXPORT void obs_transition_enable_fixed(obs_source_t *transition, bool enable,
1113  uint32_t duration_ms);
1114 EXPORT bool obs_transition_fixed(obs_source_t *transition);
1115 
1117  gs_texture_t *a, gs_texture_t *b, float t,
1118  uint32_t cx, uint32_t cy);
1119 typedef float (*obs_transition_audio_mix_callback_t)(void *data, float t);
1120 
1123 
1125  uint64_t *ts_out, struct obs_source_audio_mix *audio,
1126  uint32_t mixers, size_t channels, size_t sample_rate,
1127  obs_transition_audio_mix_callback_t mix_a_callback,
1128  obs_transition_audio_mix_callback_t mix_b_callback);
1129 
1130 /* swaps transition sources and textures as an optimization and to reduce
1131  * memory usage when switching between transitions */
1133  obs_source_t *tr_source);
1135  obs_source_t *tr_source);
1136 
1137 
1138 /* ------------------------------------------------------------------------- */
1139 /* Scenes */
1140 
1147 EXPORT obs_scene_t *obs_scene_create(const char *name);
1148 
1149 EXPORT obs_scene_t *obs_scene_create_private(const char *name);
1150 
1156 };
1157 
1161 EXPORT obs_scene_t *obs_scene_duplicate(obs_scene_t *scene, const char *name,
1162  enum obs_scene_duplicate_type type);
1163 
1164 EXPORT void obs_scene_addref(obs_scene_t *scene);
1165 EXPORT void obs_scene_release(obs_scene_t *scene);
1166 
1169 
1172 
1175  const char *name);
1176 
1179  bool (*callback)(obs_scene_t*, obs_sceneitem_t*, void*),
1180  void *param);
1181 
1183  obs_sceneitem_t * const *item_order, size_t item_order_size);
1184 
1187 
1188 typedef void (*obs_scene_atomic_update_func)(void *, obs_scene_t *scene);
1190  obs_scene_atomic_update_func func, void *data);
1191 
1194 
1197 
1200 
1203 
1204 EXPORT void obs_sceneitem_select(obs_sceneitem_t *item, bool select);
1206 
1207 /* Functions for gettings/setting specific orientation of a scene item */
1208 EXPORT void obs_sceneitem_set_pos(obs_sceneitem_t *item, const struct vec2 *pos);
1209 EXPORT void obs_sceneitem_set_rot(obs_sceneitem_t *item, float rot_deg);
1211  const struct vec2 *scale);
1215  enum obs_order_movement movement);
1217  int position);
1219  enum obs_bounds_type type);
1223  const struct vec2 *bounds);
1224 
1226  struct vec2 *pos);
1227 EXPORT float obs_sceneitem_get_rot(const obs_sceneitem_t *item);
1229  struct vec2 *scale);
1231 
1233  const obs_sceneitem_t *item);
1236  struct vec2 *bounds);
1237 
1239  struct obs_transform_info *info);
1241  const struct obs_transform_info *info);
1242 
1244  struct matrix4 *transform);
1246  struct matrix4 *transform);
1247 
1248 EXPORT bool obs_sceneitem_visible(const obs_sceneitem_t *item);
1249 EXPORT bool obs_sceneitem_set_visible(obs_sceneitem_t *item, bool visible);
1250 
1252  int left;
1253  int top;
1254  int right;
1255  int bottom;
1256 };
1257 
1259  const struct obs_sceneitem_crop *crop);
1261  struct obs_sceneitem_crop *crop);
1262 
1264  enum obs_scale_type filter);
1266  obs_sceneitem_t *item);
1267 
1270 
1271 
1272 /* ------------------------------------------------------------------------- */
1273 /* Outputs */
1274 
1275 EXPORT const char *obs_output_get_display_name(const char *id);
1276 
1283 EXPORT obs_output_t *obs_output_create(const char *id, const char *name,
1284  obs_data_t *settings, obs_data_t *hotkey_data);
1285 
1290 EXPORT void obs_output_addref(obs_output_t *output);
1291 EXPORT void obs_output_release(obs_output_t *output);
1292 
1295 
1299 
1301  obs_output_t *output);
1302 
1303 EXPORT const char *obs_output_get_name(const obs_output_t *output);
1304 
1306 EXPORT bool obs_output_start(obs_output_t *output);
1307 
1309 EXPORT void obs_output_stop(obs_output_t *output);
1310 
1316 #define OBS_OUTPUT_DELAY_PRESERVE (1<<0)
1317 
1325 EXPORT void obs_output_set_delay(obs_output_t *output, uint32_t delay_sec,
1326  uint32_t flags);
1327 
1330 
1333 
1336 
1338 EXPORT bool obs_output_active(const obs_output_t *output);
1339 
1341 EXPORT obs_data_t *obs_output_defaults(const char *id);
1342 
1345 
1351 
1353 EXPORT void obs_output_update(obs_output_t *output, obs_data_t *settings);
1354 
1356 EXPORT bool obs_output_can_pause(const obs_output_t *output);
1357 
1359 EXPORT void obs_output_pause(obs_output_t *output);
1360 
1361 /* Gets the current output settings string */
1363 
1366  const obs_output_t *output);
1367 
1370 
1375 EXPORT void obs_output_set_video(obs_output_t *output, video_t *video);
1376 
1382  video_t *video, audio_t *audio);
1383 
1386 
1389 
1391 EXPORT void obs_output_set_mixer(obs_output_t *output, size_t mixer_idx);
1392 
1394 EXPORT size_t obs_output_get_mixer(const obs_output_t *output);
1395 
1401  obs_encoder_t *encoder);
1402 
1412  obs_encoder_t *encoder, size_t idx);
1413 
1416 
1425  size_t idx);
1426 
1429  obs_service_t *service);
1430 
1433 
1438  int retry_count, int retry_sec);
1439 
1443 
1453  uint32_t height);
1454 
1457 
1460 
1461 EXPORT const char *obs_output_get_id(const obs_output_t *output);
1462 
1463 /* ------------------------------------------------------------------------- */
1464 /* Functions used by outputs */
1465 
1467 
1470  const struct video_scale_info *conversion);
1471 
1474  const struct audio_convert_info *conversion);
1475 
1478  uint32_t flags);
1479 
1482  uint32_t flags);
1483 
1497 
1500 
1507 EXPORT void obs_output_signal_stop(obs_output_t *output, int code);
1508 
1509 
1510 /* ------------------------------------------------------------------------- */
1511 /* Encoders */
1512 
1513 EXPORT const char *obs_encoder_get_display_name(const char *id);
1514 
1523 EXPORT obs_encoder_t *obs_video_encoder_create(const char *id, const char *name,
1524  obs_data_t *settings, obs_data_t *hotkey_data);
1525 
1535 EXPORT obs_encoder_t *obs_audio_encoder_create(const char *id, const char *name,
1536  obs_data_t *settings, size_t mixer_idx,
1537  obs_data_t *hotkey_data);
1538 
1543 EXPORT void obs_encoder_addref(obs_encoder_t *encoder);
1545 
1548 
1552 
1554  obs_encoder_t *encoder);
1555 
1556 EXPORT void obs_encoder_set_name(obs_encoder_t *encoder, const char *name);
1557 EXPORT const char *obs_encoder_get_name(const obs_encoder_t *encoder);
1558 
1560 EXPORT const char *obs_get_encoder_codec(const char *id);
1561 
1563 EXPORT enum obs_encoder_type obs_get_encoder_type(const char *id);
1564 
1566 EXPORT const char *obs_encoder_get_codec(const obs_encoder_t *encoder);
1567 
1570 
1577  uint32_t height);
1578 
1581 
1584 
1587 
1597  enum video_format format);
1599  const obs_encoder_t *encoder);
1600 
1602 EXPORT obs_data_t *obs_encoder_defaults(const char *id);
1603 
1606 
1612 
1617 EXPORT void obs_encoder_update(obs_encoder_t *encoder, obs_data_t *settings);
1618 
1620 EXPORT bool obs_encoder_get_extra_data(const obs_encoder_t *encoder,
1621  uint8_t **extra_data, size_t *size);
1622 
1625 
1627 EXPORT void obs_encoder_set_video(obs_encoder_t *encoder, video_t *video);
1628 
1630 EXPORT void obs_encoder_set_audio(obs_encoder_t *encoder, audio_t *audio);
1631 
1637 
1643 
1645 EXPORT bool obs_encoder_active(const obs_encoder_t *encoder);
1646 
1648 
1649 EXPORT const char *obs_encoder_get_id(const obs_encoder_t *encoder);
1650 
1651 EXPORT uint32_t obs_get_encoder_caps(const char *encoder_id);
1652 
1655  const struct encoder_packet *src);
1656 
1657 EXPORT void obs_free_encoder_packet(struct encoder_packet *packet);
1658 
1659 
1660 /* ------------------------------------------------------------------------- */
1661 /* Stream Services */
1662 
1663 EXPORT const char *obs_service_get_display_name(const char *id);
1664 
1665 EXPORT obs_service_t *obs_service_create(const char *id, const char *name,
1666  obs_data_t *settings, obs_data_t *hotkey_data);
1667 
1669  const char *name, obs_data_t *settings);
1670 
1675 EXPORT void obs_service_addref(obs_service_t *service);
1677 
1680 
1684 
1686  obs_service_t *service);
1687 
1688 EXPORT const char *obs_service_get_name(const obs_service_t *service);
1689 
1691 EXPORT obs_data_t *obs_service_defaults(const char *id);
1692 
1695 
1701 
1703 EXPORT const char *obs_service_get_type(const obs_service_t *service);
1704 
1706 EXPORT void obs_service_update(obs_service_t *service, obs_data_t *settings);
1707 
1710 
1712 EXPORT const char *obs_service_get_url(const obs_service_t *service);
1713 
1715 EXPORT const char *obs_service_get_key(const obs_service_t *service);
1716 
1718 EXPORT const char *obs_service_get_username(const obs_service_t *service);
1719 
1721 EXPORT const char *obs_service_get_password(const obs_service_t *service);
1722 
1730  obs_data_t *video_encoder_settings,
1731  obs_data_t *audio_encoder_settings);
1732 
1734 
1735 EXPORT const char *obs_service_get_id(const obs_service_t *service);
1736 
1737 
1738 /* ------------------------------------------------------------------------- */
1739 /* Source frame allocation functions */
1740 EXPORT void obs_source_frame_init(struct obs_source_frame *frame,
1741  enum video_format format, uint32_t width, uint32_t height);
1742 
1743 static inline void obs_source_frame_free(struct obs_source_frame *frame)
1744 {
1745  if (frame) {
1746  bfree(frame->data[0]);
1747  memset(frame, 0, sizeof(*frame));
1748  }
1749 }
1750 
1751 static inline struct obs_source_frame *obs_source_frame_create(
1753 {
1754  struct obs_source_frame *frame;
1755 
1756  frame = (struct obs_source_frame*)bzalloc(sizeof(*frame));
1757  obs_source_frame_init(frame, format, width, height);
1758  return frame;
1759 }
1760 
1761 static inline void obs_source_frame_destroy(struct obs_source_frame *frame)
1762 {
1763  if (frame) {
1764  bfree(frame->data[0]);
1765  bfree(frame);
1766  }
1767 }
1768 
1769 
1770 #ifdef __cplusplus
1771 }
1772 #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:158
EXPORT uint32_t obs_source_get_audio_mixers(const obs_source_t *source)
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)
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)
uint32_t height
Definition: obs.h:225
EXPORT void obs_sceneitem_set_alignment(obs_sceneitem_t *item, uint32_t alignment)
Definition: obs-scene.h:76
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:54
EXPORT gs_effect_t * obs_get_base_effect(enum obs_base_effect effect)
uint32_t base_width
Definition: obs.h:160
EXPORT void obs_weak_output_release(obs_weak_output_t *weak)
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:209
EXPORT obs_scene_t * obs_sceneitem_get_scene(const obs_sceneitem_t *item)
Definition: obs.h:577
Definition: obs.h:897
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 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:1089
EXPORT void obs_output_set_reconnect_settings(obs_output_t *output, int retry_count, int retry_sec)
void(* obs_enum_module_callback_t)(void *param, obs_module_t *module)
Definition: obs.h:388
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 enum obs_transition_scale_type obs_transition_get_scale_type(const obs_source_t *transition)
uint32_t frames
Definition: obs.h:193
EXPORT void obs_sceneitem_select(obs_sceneitem_t *item, bool select)
Definition: video-io.h:135
int right
Definition: obs.h:1254
Definition: obs.h:117
EXPORT void obs_enum_services(bool(*enum_proc)(void *, obs_service_t *), void *param)
uint32_t base_height
Definition: obs.h:161
EXPORT audio_t * obs_output_audio(const obs_output_t *output)
void(* obs_scene_atomic_update_func)(void *, obs_scene_t *scene)
Definition: obs.h:1188
EXPORT void obs_source_set_enabled(obs_source_t *source, bool enabled)
Definition: obs.h:1067
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)
Definition: obs.h:524
Definition: obs-internal.h:776
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:527
EXPORT bool obs_source_audio_pending(const obs_source_t *source)
Definition: obs-interaction.h:44
Definition: obs-internal.h:771
EXPORT bool obs_output_can_begin_data_capture(const obs_output_t *output, uint32_t flags)
void(* obs_source_enum_proc_t)(obs_source_t *parent, obs_source_t *child, void *param)
Definition: obs-source.h:125
EXPORT const char * obs_service_get_name(const obs_service_t *service)
Definition: obs.h:576
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 void obs_output_signal_stop(obs_output_t *output, int code)
EXPORT uint32_t obs_get_source_output_flags(const char *id)
Definition: obs-internal.h:512
EXPORT obs_encoder_t * obs_output_get_audio_encoder(const obs_output_t *output, size_t idx)
Definition: vec3.h:33
int int32_t
Definition: vc_stdint.h:30
Definition: obs-internal.h:872
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:40
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)
uint64_t timestamp
Definition: obs.h:226
EXPORT obs_data_array_t * obs_save_sources(void)
obs_obj_type
Definition: obs.h:573
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)
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)
#define DEPRECATED_END
Definition: c99defs.h:32
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:443
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:578
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)
EXPORT float obs_sceneitem_get_rot(const obs_sceneitem_t *item)
uint64_t timestamp
Definition: obs.h:194
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:525
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:93
gs_color_format
Definition: graphics.h:56
obs_transition_mode
Definition: obs.h:1076
obs_deinterlace_mode
Definition: obs.h:891
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:1255
Definition: obs.h:574
EXPORT void obs_source_send_focus(obs_source_t *source, bool focus)
EXPORT obs_source_t * obs_weak_source_get_source(obs_weak_source_t *weak)
Definition: obs.h:1088
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:1066
const char * bin_path
Definition: obs.h:378
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)
float(* obs_transition_audio_mix_callback_t)(void *data, float t)
Definition: obs.h:1119
obs_transition_scale_type
Definition: obs.h:1086
EXPORT obs_sceneitem_t * obs_scene_add(obs_scene_t *scene, obs_source_t *source)
obs_scene_duplicate_type
Definition: obs.h:1151
Definition: obs.h:137
EXPORT void obs_display_destroy(obs_display_t *display)
uint32_t samples_per_sec
Definition: obs.h:207
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:893
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_video(obs_output_t *output, video_t *video)
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:1154
const char * data_path
Definition: obs.h:379
Definition: obs.h:523
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:53
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:502
Definition: obs.h:896
EXPORT bool obs_enum_input_types(size_t idx, const char **id)
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 void obs_render_main_view(void)
Definition: obs.h:98
EXPORT const char * obs_service_get_id(const obs_service_t *service)
Definition: obs-internal.h:183
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:222
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:224
Definition: obs.h:892
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)
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)
void(* obs_load_source_cb)(void *private_data, obs_source_t *source)
Definition: obs.h:560
EXPORT void obs_output_force_stop(obs_output_t *output)
const char * graphics_module
Definition: obs.h:155
EXPORT obs_data_t * obs_save_source(obs_source_t *source)
uint32_t alignment
Definition: obs.h:141
bool gpu_conversion
Definition: obs.h:171
Definition: obs.h:115
uint32_t samples_per_sec
Definition: obs.h:183
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
bool(* obs_save_source_filter_cb)(void *data, obs_source_t *source)
Definition: obs.h:569
EXPORT void obs_free_encoder_packet(struct encoder_packet *packet)
Definition: obs.h:130
Definition: obs-internal.h:883
Definition: obs-internal.h:75
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 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)
void(* obs_find_module_callback_t)(void *param, const struct obs_module_info *info)
Definition: obs.h:382
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:903
Definition: obs.h:1087
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:1153
header for modules implementing sources.
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:528
EXPORT const char * obs_get_locale(void)
EXPORT bool obs_init_module(obs_module_t *module)
obs_transition_target
Definition: obs.h:1065
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 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 const char * obs_encoder_get_id(const obs_encoder_t *encoder)
EXPORT void obs_encoder_set_video(obs_encoder_t *encoder, video_t *video)
bool flip
Definition: obs.h:233
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:899
EXPORT void obs_source_send_mouse_move(obs_source_t *source, const struct obs_mouse_event *event, bool mouse_leave)
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)
Definition: obs.h:118
EXPORT void obs_service_update(obs_service_t *service, obs_data_t *settings)
Definition: obs.h:221
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_output_stop(obs_output_t *output)
struct obs_fader obs_fader_t
Definition: obs.h:63
Definition: audio-io.h:68
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:228
Definition: obs.h:377
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:521
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_weak_encoder_t * obs_encoder_get_weak_encoder(obs_encoder_t *encoder)
Definition: obs-source.h:128
EXPORT obs_properties_t * obs_source_properties(const obs_source_t *source)
uint32_t output_height
Definition: obs.h:164
Definition: obs-internal.h:963
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:526
EXPORT void obs_source_addref(obs_source_t *source)
#define DEPRECATED_START
Definition: c99defs.h:31
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:1077
EXPORT void obs_scene_addref(obs_scene_t *scene)
Definition: obs.h:201
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 const char * obs_get_module_binary_path(obs_module_t *module)
uint32_t adapter
Definition: obs.h:168
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)
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:898
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:529
uint32_t fps_num
Definition: obs.h:157
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:182
Definition: obs.h:575
volatile long refs
Definition: obs.h:236
EXPORT bool obs_source_showing(const obs_source_t *source)
EXPORT uint32_t obs_output_get_width(const obs_output_t *output)
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 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
EXPORT void obs_service_addref(obs_service_t *service)
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:895
EXPORT void obs_duplicate_encoder_packet(struct encoder_packet *dst, const struct encoder_packet *src)
int left
Definition: obs.h:1252
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:1152
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 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:968
EXPORT const char * obs_output_get_name(const obs_output_t *output)
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:904
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)
EXPORT void obs_sceneitem_remove(obs_sceneitem_t *item)
EXPORT void obs_source_release_frame(obs_source_t *source, struct obs_source_frame *frame)
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:1116
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:1253
obs_order_movement
Definition: obs.h:97
bool full_range
Definition: obs.h:230
uint32_t frames
Definition: obs.h:203
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:522
EXPORT obs_data_t * obs_service_defaults(const char *id)
Definition: obs.h:894
void(* obs_source_audio_capture_t)(void *param, obs_source_t *source, const struct audio_data *audio_data, bool muted)
Definition: obs.h:883
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)
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)
EXPORT void obs_display_add_draw_callback(obs_display_t *display, void(*draw)(void *param, uint32_t cx, uint32_t cy), void *param)
Definition: obs.h:1251
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)
DEPRECATED_START EXPORT gs_effect_t * obs_get_default_rect_effect(void) DEPRECATED_END
Definition: obs.h:900
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:195
EXPORT obs_properties_t * obs_get_service_properties(const char *id)
Definition: obs.h:1155
EXPORT void obs_view_set_source(obs_view_t *view, uint32_t channel, obs_source_t *source)
Definition: obs.h:119
uint32_t output_width
Definition: obs.h:163
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 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:38
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)
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:191
header for modules implementing services.
EXPORT void obs_output_set_video_encoder(obs_output_t *output, obs_encoder_t *encoder)
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:237
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 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)